o
    ºjÝ"  ã                   @   s    d dl mZmZmZ zd dlmZ W n ey!   d dlmZ Y nw d dlm	Z	m
Z
 d dlZddlmZ ddlmZ dd	lmZ dd
lmZ dd„ ZeeƒZdS )é    )Úabsolute_importÚdivisionÚunicode_literals)ÚMutableMapping)ÚminidomÚNodeNé   )Úbaseé   )Ú	constants)Ú
namespaces)ÚmoduleFactoryFactoryc                    sV   ˆ‰G dd„ dt ƒ‰ G ‡ ‡fdd„dtjƒ‰G ‡‡‡‡fdd„dtjƒ}dd„ ‰tƒ S )	Nc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )zgetDomBuilder.<locals>.AttrListc                 S   s
   || _ d S ©N©Úelement©Úselfr   © r   ú_C:\Users\bbmin\dev\vps-for-web\.venv\Lib\site-packages\pip/_vendor/html5lib/treebuilders/dom.pyÚ__init__   ó   
z(getDomBuilder.<locals>.AttrList.__init__c                 S   ó   t | jj ¡ ƒS r   )Úiterr   Ú
attributesÚkeys©r   r   r   r   Ú__iter__   ó   z(getDomBuilder.<locals>.AttrList.__iter__c                 S   s2   t |tƒrt‚| jj |¡}||_|| jj|< d S r   )Ú
isinstanceÚtupleÚNotImplementedErrorr   ÚownerDocumentZcreateAttributeÚvaluer   )r   Únamer"   Úattrr   r   r   Ú__setitem__   s
   
z+getDomBuilder.<locals>.AttrList.__setitem__c                 S   s   t | jjƒS r   )Úlenr   r   r   r   r   r   Ú__len__#   s   z'getDomBuilder.<locals>.AttrList.__len__c                 S   r   r   )Úlistr   r   Úitemsr   r   r   r   r)   &   r   z%getDomBuilder.<locals>.AttrList.itemsc                 S   r   r   )r(   r   r   Úvaluesr   r   r   r   r*   )   r   z&getDomBuilder.<locals>.AttrList.valuesc                 S   s   t |tƒrt‚| jj| jS r   )r   r   r    r   r   r"   ©r   r#   r   r   r   Ú__getitem__,   ó   
z+getDomBuilder.<locals>.AttrList.__getitem__c                 S   s   t |tƒrt‚| jj|= d S r   )r   r   r    r   r   r+   r   r   r   Ú__delitem__2   r-   z+getDomBuilder.<locals>.AttrList.__delitem__N)Ú__name__Ú
__module__Ú__qualname__r   r   r%   r'   r)   r*   r,   r.   r   r   r   r   ÚAttrList   s    r2   c                       sŒ   e Zd Zdd„ Zedd„ ƒZdd„ Zddd	„Zd
d„ Zdd„ Z	dd„ Z
‡ fdd„Zdd„ ZeeeƒZ‡fdd„Zdd„ Zdd„ ZeeƒZdS )z"getDomBuilder.<locals>.NodeBuilderc                 S   s   t j | |j¡ || _d S r   )r	   r   r   ÚnodeNamer   r   r   r   r   r   9   s   
z+getDomBuilder.<locals>.NodeBuilder.__init__c                 S   s   t | jdƒr
| jjpd S )NÚnamespaceURI)Úhasattrr   r4   r   r   r   r   Ú<lambda>=   s    ÿz+getDomBuilder.<locals>.NodeBuilder.<lambda>c                 S   s   | |_ | j |j¡ d S r   )Úparentr   ÚappendChild©r   Únoder   r   r   r8   @   s   z.getDomBuilder.<locals>.NodeBuilder.appendChildNc                 S   s6   | j j |¡}|r| j  ||j ¡ d S | j  |¡ d S r   )r   r!   ÚcreateTextNodeÚinsertBeforer8   )r   Údatar<   Útextr   r   r   Ú
insertTextD   s   z-getDomBuilder.<locals>.NodeBuilder.insertTextc                 S   s   | j  |j |j ¡ | |_d S r   )r   r<   r7   )r   r:   ÚrefNoder   r   r   r<   K   s   
z/getDomBuilder.<locals>.NodeBuilder.insertBeforec                 S   s&   |j j| j kr| j  |j ¡ d |_d S r   )r   Z
parentNodeÚremoveChildr7   r9   r   r   r   rA   O   s   
z.getDomBuilder.<locals>.NodeBuilder.removeChildc                 S   s>   | j  ¡ r| j j}| j  |¡ |j  |¡ | j  ¡ sg | _d S r   )r   ÚhasChildNodesZ
firstChildrA   r8   Ú
childNodes)r   Ú	newParentÚchildr   r   r   ÚreparentChildrenT   s   

ý
z3getDomBuilder.<locals>.NodeBuilder.reparentChildrenc                    s
   ˆ | j ƒS r   r   r   )r2   r   r   ÚgetAttributes[   r   z0getDomBuilder.<locals>.NodeBuilder.getAttributesc                 S   sz   |r9t | ¡ ƒD ]2\}}t|tƒr1|d d ur"|d d |d  }n|d }| j |d ||¡ q| j ||¡ qd S d S )Nr   ú:r   r
   )r(   r)   r   r   r   ZsetAttributeNSZsetAttribute)r   r   r#   r"   ZqualifiedNamer   r   r   ÚsetAttributes^   s   
ÿÿöz0getDomBuilder.<locals>.NodeBuilder.setAttributesc                    s   ˆ | j  d¡ƒS )NF)r   Ú	cloneNoder   ©ÚNodeBuilderr   r   rJ   m   r   z,getDomBuilder.<locals>.NodeBuilder.cloneNodec                 S   s
   | j  ¡ S r   )r   rB   r   r   r   r   Ú
hasContentp   r   z-getDomBuilder.<locals>.NodeBuilder.hasContentc                 S   s$   | j d u rtd | jfS | j | jfS )NÚhtml)Ú	namespacer   r#   r   r   r   r   ÚgetNameTuples   s   
z/getDomBuilder.<locals>.NodeBuilder.getNameTupler   )r/   r0   r1   r   ÚpropertyrO   r8   r?   r<   rA   rF   rG   rI   r   rJ   rM   rP   Ú	nameTupler   )r2   rL   r   r   rL   8   s    

rL   c                       s‚   e Zd Z‡ fdd„Z‡ ‡fdd„Zd‡fdd„	Z‡fdd	„Z‡fd
d„Zdd„ Z‡fdd„Z	dd„ Z
dd„ Zddd„Z”ZdZdS )z"getDomBuilder.<locals>.TreeBuilderc                    s   ˆ   ¡  d d d ¡| _t | ¡S r   )ÚgetDOMImplementationZcreateDocumentÚdomÚweakrefÚproxyr   )ÚDomr   r   ÚdocumentClass|   s   
z0getDomBuilder.<locals>.TreeBuilder.documentClassc                    sV   |d }|d }|d }ˆ   ¡ }| |||¡}| j ˆ|ƒ¡ ˆ tkr)| j|_d S d S )Nr#   ÚpublicIdÚsystemId)rS   ZcreateDocumentTypeÚdocumentr8   r   rT   r!   )r   Útokenr#   rY   rZ   ZdomimplÚdoctype)rW   rL   r   r   ÚinsertDoctype€   s   ÿz0getDomBuilder.<locals>.TreeBuilder.insertDoctypeNc                    s<   |d u r| j d u r| j |¡}ˆ |ƒS | j ||¡}ˆ |ƒS r   )ÚdefaultNamespacerT   ÚcreateElementZcreateElementNS)r   r#   rO   r:   rK   r   r   ÚelementClass‹   s
   þz/getDomBuilder.<locals>.TreeBuilder.elementClassc                    s   ˆ | j  |¡ƒS r   )rT   ZcreateComment)r   r=   rK   r   r   ÚcommentClass“   r   z/getDomBuilder.<locals>.TreeBuilder.commentClassc                    s   ˆ | j  ¡ ƒS r   )rT   ZcreateDocumentFragmentr   rK   r   r   ÚfragmentClass–   ó   z0getDomBuilder.<locals>.TreeBuilder.fragmentClassc                 S   s   | j  |j¡ d S r   )rT   r8   r   r9   r   r   r   r8   ™   s   z.getDomBuilder.<locals>.TreeBuilder.appendChildc                    s   ˆ |ƒS r   r   r   )ÚtestSerializerr   r   re   œ   s   z1getDomBuilder.<locals>.TreeBuilder.testSerializerc                 S   s   | j S r   )rT   r   r   r   r   ÚgetDocumentŸ   s   z.getDomBuilder.<locals>.TreeBuilder.getDocumentc                 S   s   t j | ¡jS r   )r	   ÚTreeBuilderÚgetFragmentr   r   r   r   r   rh   ¢   rd   z.getDomBuilder.<locals>.TreeBuilder.getFragmentc                 S   sr   |}|| krt j | ||¡ d S t| jdƒr-tj| jjvr-t| jjƒ| j_| jj 	tj¡ | j 
| j |¡¡ d S )NÚ_child_node_types)r	   rg   r?   r5   rT   r   Ú	TEXT_NODEri   r(   Úappendr8   r;   )r   r=   r7   r   r   r   r?   ¥   s   z-getDomBuilder.<locals>.TreeBuilder.insertTextr   )r/   r0   r1   rX   r^   ra   rb   rc   r8   re   rf   rh   r?   Úimplementationr#   r   )rW   ÚDomImplementationrL   re   r   r   rg   {   s    
rg   c                    s0   |   ¡  g ‰ d‡ ‡fdd„	‰ˆ| dƒ d ˆ ¡S )Nr   c                    s   | j tjkr@| jr5| js| jr(| jpd}| jpd}ˆ  dd| | j||f ¡ nÇˆ  dd| | jf ¡ nºˆ  dd| f ¡ n¯| j tjkrLˆ  d¡ n£| j tjkrXˆ  d¡ n—| j tj	krkˆ  dd| | j
f ¡ n„| j tjkr~ˆ  d	d| | j
f ¡ nqt| d
ƒr”| jd ur”dtj| j | jf }n| j}ˆ  dd| |f ¡ |  ¡ rïg }tt| jƒƒD ](}| j |¡}|j}|j}|j}	|	rÍdtj|	 |jf }n|j}| ||f¡ q¯t|ƒD ]\}}ˆ  dd|d  ||f ¡ qÜ|d7 }| jD ]}
ˆ|
|ƒ qöd S )NÚ z|%s<!DOCTYPE %s "%s" "%s">ú z|%s<!DOCTYPE %s>z|%s<!DOCTYPE >z	#documentz#document-fragmentz|%s<!-- %s -->z|%s"%s"r4   z%s %sz|%s<%s>z
|%s%s="%s"r
   )ZnodeTyper   ZDOCUMENT_TYPE_NODEr#   rY   rZ   rk   ZDOCUMENT_NODEZDOCUMENT_FRAGMENT_NODEZCOMMENT_NODEZ	nodeValuerj   r5   r4   r   Úprefixesr3   ZhasAttributesÚranger&   r   Úitemr"   Z	localNameÚsortedrC   )r   ÚindentrY   rZ   r#   r   Úir$   r"   ÚnsrE   ©ÚrvÚserializeElementr   r   ry   ¹   sV   

ÿ
ÿÿ
ÿz?getDomBuilder.<locals>.testSerializer.<locals>.serializeElementÚ
)r   )Ú	normalizeÚjoinr   r   rw   r   re   µ   s
   
.
z%getDomBuilder.<locals>.testSerializer)r   r	   r   rg   Úlocals)rm   rg   r   )r2   rW   rm   rL   re   r   ÚgetDomBuilder   s   $C:6r~   )Ú
__future__r   r   r   Úcollections.abcr   ÚImportErrorÚcollectionsÚxml.domr   r   rU   rn   r	   r   r   Ú_utilsr   r~   ÚgetDomModuler   r   r   r   Ú<module>   s    ÿ _