a
     Df                     @  s   d Z ddlmZ ddlmZ ddlmZmZmZmZm	Z	 ddl
Z
ddlmZmZmZ ddgZe
d	e
jZd
ddddZd
dddZd
d
dddZd
d
dddZdddddddZd$ddd
ddd Zdd
d!d"dZdd
d!d#dZdS )%a  
Python-Markdown provides two serializers which render [`ElementTree.Element`][xml.etree.ElementTree.Element]
objects to a string of HTML. Both functions wrap the same underlying code with only a few minor
differences as outlined below:

1. Empty (self-closing) tags are rendered as `<tag>` for HTML and as `<tag />` for XHTML.
2. Boolean attributes are rendered as `attrname` for HTML and as `attrname="attrname"` for XHTML.
    )annotations)ProcessingInstruction)CommentElementTreeElementQName
HTML_EMPTYN)CallableLiteralNoReturnto_html_stringto_xhtml_stringz)&(?!(?:\#[0-9]+|\#x[0-9a-f]+|[0-9a-z]+);)strr   )textreturnc                 C  s   t d| t| jd S )Nzcannot serialize {!r} (type {}))	TypeErrorformattype__name__r    r   a/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/markdown/serializers.py_raise_serialization_error:   s    r   )r   c              	   C  sf   zBd| v rt d| } d| v r*| dd} d| v r>| dd} | W S  ttfy`   t|  Y n0 d S )N&&amp;<&lt;>&gt;RE_AMPsubreplacer   AttributeErrorr   r   r   r   r   _escape_cdata@   s    r$   c              	   C  s   zjd| v rt d| } d| v r*| dd} d| v r>| dd} d| v rR| dd} d	| v rf| d	d
} | W S  ttfy   t|  Y n0 d S )Nr   r   r   r   r   r   "&quot;
z&#10;r   r   r   r   r   _escape_attribR   s    r(   c              	   C  sz   zVd| v rt d| } d| v r*| dd} d| v r>| dd} d| v rR| dd} | W S  ttfyt   t|  Y n0 d S )	Nr   r   r   r   r   r   r%   r&   r   r   r   r   r   _escape_attrib_htmle   s    r)   zCallable[[str], None]r   zLiteral['html', 'xhtml']None)writeelemr   r   c           
      C  s  |j }|j}|tu r(| dt|  n|tu rD| dt|  n|d u rv|r\| t| |D ]}t| || q`nrd }t|tr|jd d dkr|jdd  dd\}}nt	d| d|  |
 }|rHt|}|D ]f\}}	t|tr|j}t|	tr|	j}	nt|	}	||	kr6|dkr6| d	|	  q| d
||	 q|r^| dt|  |dkr| tv r| d nh| d |r| dv r| | n| t| |D ]}t| || q| tvr| d| d  |jr| t|j d S )Nz	<!--%s-->z<?%s?>   {}z QName objects must define a tag.r   htmlz %sz {}="{}"z xmlns="%s"xhtmlz />r   )scriptstylez</)tagr   r   r$   r   _serialize_html
isinstancer   split
ValueErroritemssortedr)   r   r(   lowerr   tail)
r+   r,   r   r4   r   eZnamespace_urir9   kvr   r   r   r5   v   sX    



r5   r0   )rootr   r   c                 C  s,   | d usJ g }|j }t|| | d|S )N )appendr5   join)r@   r   datar+   r   r   r   _write_html   s
    rE   )elementr   c                 C  s   t t|  ddS )z: Serialize element and its children to a string of HTML5. r0   r   rE   r   getrootrF   r   r   r   r      s    c                 C  s   t t|  ddS )z: Serialize element and its children to a string of XHTML. r1   rG   rH   rJ   r   r   r   r      s    )r0   )__doc__
__future__r   xml.etree.ElementTreer   r   r   r   r   r   retypingr	   r
   r   __all__compileIr    r   r$   r(   r)   r5   rE   r   r   r   r   r   r   <module>%   s   	9