U ��.e�"�@s�ddlmZmZmZzddlmZWn ek rDddlmZYnXddlm Z m Z ddl Z ddl m Z ddl mZdd lmZdd lmZd d �Zee�ZdS) �)�absolute_import�division�unicode_literals)�MutableMapping)�minidom�NodeN�)�base�)� constants)� namespaces)�moduleFactoryFactorycsV��Gdd�dt��G��fdd�dtj��G����fdd�dtj�}dd��t�S) Nc@sLeZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dS)zgetDomBuilder..AttrListcSs ||_dS�N��element��selfr�r�I/usr/lib/python3.8/site-packages/pip/_vendor/html5lib/treebuilders/dom.py�__init__sz(getDomBuilder..AttrList.__init__cSst|jj���Sr)�iterr� attributes�keys�rrrr�__iter__sz(getDomBuilder..AttrList.__iter__cSs4t|t�rt�n |jj�|�}||_||jj|<dSr)� isinstance�tuple�NotImplementedErrorr� ownerDocumentZcreateAttribute�valuer)r�namer�attrrrr� __setitem__s  z+getDomBuilder..AttrList.__setitem__cSs t|jj�Sr)�lenrrrrrr�__len__#sz'getDomBuilder..AttrList.__len__cSst|jj���Sr)�listrr�itemsrrrrr&&sz%getDomBuilder..AttrList.itemscSst|jj���Sr)r%rr�valuesrrrrr')sz&getDomBuilder..AttrList.valuescSs"t|t�rt�n|jj|jSdSr)rrrrrr�rr rrr� __getitem__,s z+getDomBuilder..AttrList.__getitem__cSst|t�rt�n |jj|=dSr)rrrrrr(rrr� __delitem__2s z+getDomBuilder..AttrList.__delitem__N) �__name__� __module__� __qualname__rrr"r$r&r'r)r*rrrr�AttrListsr.cs�eZdZdd�Zedd��Zdd�Zddd �Zd d �Zd d �Z dd�Z �fdd�Z dd�Z ee e �Z �fdd�Zdd�Zdd�Zee�ZdS)z"getDomBuilder..NodeBuildercSstj�||j�||_dSr)r rr�nodeNamerrrrrr9sz+getDomBuilder..NodeBuilder.__init__cSst|jd�r|jjpdS)N� namespaceURI)�hasattrrr0rrrr�=s �z+getDomBuilder..NodeBuilder.cSs||_|j�|j�dSr)�parentr� appendChild�r�noderrrr4@sz.getDomBuilder..NodeBuilder.appendChildNcSs4|jj�|�}|r$|j�||j�n |j�|�dSr)rr�createTextNode� insertBeforer4)r�datar8�textrrr� insertTextDsz-getDomBuilder..NodeBuilder.insertTextcSs|j�|j|j�||_dSr)rr8r3)rr6ZrefNoderrrr8Ksz/getDomBuilder..NodeBuilder.insertBeforecSs&|jj|jkr|j�|j�d|_dSr)rZ parentNode� removeChildr3r5rrrr<Osz.getDomBuilder..NodeBuilder.removeChildcSs6|j��r,|jj}|j�|�|j�|�qg|_dSr)r� hasChildNodesZ firstChildr<r4� childNodes)rZ newParent�childrrr�reparentChildrenTs   z3getDomBuilder..NodeBuilder.reparentChildrencs �|j�Srrr)r.rr� getAttributes[sz0getDomBuilder..NodeBuilder.getAttributescSsv|rrt|���D]`\}}t|t�rb|ddk rD|dd|d}n|d}|j�|d||�q|j�||�qdS)Nr�:rr )r%r&rrrZsetAttributeNSZ setAttribute)rrr rZ qualifiedNamerrr� setAttributes^s  ��z0getDomBuilder..NodeBuilder.setAttributescs�|j�d��S)NF)r� cloneNoder�� NodeBuilderrrrDmsz,getDomBuilder..NodeBuilder.cloneNodecSs |j��Sr)rr=rrrr� hasContentpsz-getDomBuilder..NodeBuilder.hasContentcSs(|jdkrtd|jfS|j|jfSdS)NZhtml)� namespacer r rrrr� getNameTupless z/getDomBuilder..NodeBuilder.getNameTuple)N)r+r,r-r�propertyrHr4r;r8r<r@rArCrrDrGrIZ nameTupler)r.rFrrrF8s     rFcs�eZdZ�fdd�Z��fdd�Zd�fdd� Z�fdd �Z�fd d �Zd d �Z�fdd�Z dd�Z dd�Z ddd�Z �Z dZdS)z"getDomBuilder..TreeBuildercs����ddd�|_t�|�Sr)�getDOMImplementationZcreateDocument�dom�weakref�proxyr)�Domrr� documentClass|sz0getDomBuilder..TreeBuilder.documentClasscsR|d}|d}|d}���}|�|||�}|j��|���tkrN|j|_dS)Nr �publicId�systemId)rKZcreateDocumentTypeZdocumentr4rrLr)r�tokenr rQrRZdomimplZdoctype)rOrFrr� insertDoctype�sz0getDomBuilder..TreeBuilder.insertDoctypeNcs6|dkr |jdkr |j�|�}n|j�||�}�|�Sr)ZdefaultNamespacerLZ createElementZcreateElementNS)rr rHr6rErr� elementClass�sz/getDomBuilder..TreeBuilder.elementClasscs�|j�|��Sr)rLZ createComment)rr9rErr� commentClass�sz/getDomBuilder..TreeBuilder.commentClasscs�|j���Sr)rLZcreateDocumentFragmentrrErr� fragmentClass�sz0getDomBuilder..TreeBuilder.fragmentClasscSs|j�|j�dSr)rLr4rr5rrrr4�sz.getDomBuilder..TreeBuilder.appendChildcs�|�Srrr)�testSerializerrrrX�sz1getDomBuilder..TreeBuilder.testSerializercSs|jSr)rLrrrr� getDocument�sz.getDomBuilder..TreeBuilder.getDocumentcSstj�|�jSr)r � TreeBuilder� getFragmentrrrrrr[�sz.getDomBuilder..TreeBuilder.getFragmentcSsp|}||krtj�|||�nNt|jd�rXtj|jjkrXt|jj�|j_|jj� tj�|j� |j� |��dS)N�_child_node_types) r rZr;r1rLr� TEXT_NODEr\r%�appendr4r7)rr9r3rrrr;�s z-getDomBuilder..TreeBuilder.insertText)N)N)r+r,r-rPrTrUrVrWr4rXrYr[r;�implementationr r)rO�DomImplementationrFrXrrrZ{s      rZcs0|��g�d��fdd� ��|d�d���S)Nrc s|jtjkr�|jrj|js|jrP|jp&d}|jp0d}��dd||j||f�q~��dd||jf�n��dd|f��nr|jtjkr���d��nX|jtjkr���d��n>|jtj krވ�dd||j f��n|jtj k�r��d d||j f�n�t |d ��r6|j dk �r6d tj|j |jf}n|j}��d d||f�|���r�g}tt|j��D]T}|j�|�}|j}|j}|j } | �r�d tj| |jf}n|j}|�||f��qnt|�D]&\}}��d d|d||f��q�|d7}|jD]} �| |��qdS)N�z|%s� z|%sz|%sz #documentz#document-fragmentz|%sz|%s"%s"r0z%s %sz|%s<%s>z |%s%s="%s"r )ZnodeTyperZDOCUMENT_TYPE_NODEr rQrRr^Z DOCUMENT_NODEZDOCUMENT_FRAGMENT_NODEZ COMMENT_NODEZ nodeValuer]r1r0r �prefixesr/Z hasAttributes�ranger#r�itemrZ localName�sortedr>) r�indentrQrRr r�ir!r�nsr?��rv�serializeElementrrrl�sT    �    � �    z?getDomBuilder..testSerializer..serializeElement� )r)Z normalize�joinrrrjrrX�s . z%getDomBuilder..testSerializer)rr rrZ�locals)r`rZr)r.rOr`rFrXr� getDomBuilders $C:6rp)Z __future__rrrZcollections.abcr� ImportError� collectionsZxml.domrrrMrar r r Z_utilsr rpZ getDomModulerrrr�s    _