U
.e*7 @ s d Z ddlmZmZmZ ddlZddlZddlZddlm Z ddl
mZ ddlm
Z
dd lmZ
dd
lmZ ddlmZ dZedZed
jZG dd deZG dd deZdd Zdd ZG dd de jZdS )a Module for supporting the lxml.etree library. The idea here is to use as much
of the native library as possible, without using fragile hacks like custom element
names that break between releases. The downside of this is that we cannot represent
all possible trees; specifically the following are known to cause problems:
Text or comments as siblings of the root element
Docypes with no name
When any of these things occur, we emit a DataLossWarning
)absolute_importdivisionunicode_literalsN )base )DataLossWarning) constants)etree) _ihatexmlTz
{([^}]*)}(.*)Zasdc @ s e Zd Zdd ZdS )DocumentTypec C s || _ || _|| _d S N)namepublicIdsystemId)selfr r r r P/usr/lib/python3.8/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py__init__# s zDocumentType.__init__N)__name__
__module____qualname__r r r r r r " s r c @ s, e Zd Zdd Zdd Zdd ZeeZdS )Documentc C s d | _ g | _d S r
)_elementTree_childNodesr r r r r * s zDocument.__init__c C s | j |j d S r
)r getrootZaddnext_elementr elementr r r appendChild. s zDocument.appendChildc C s | j S r
)r r r r r _getChildNodes1 s zDocument._getChildNodesN)r r r r r r! propertyZ
childNodesr r r r r ) s r c s6 g t jdd d fdd | d dS )NTZpreventDoubleDashCommentsr c
s, t | ds,t | drd | jjrz| jjsF| jjsFd| jj }nd| jj| jj| jjf }dd|d |f | }| d k r| }q|d k r||d | }qnnt
| tst
| trt
| tst
jd dkstd
d| | f n$d | D ]}||d qn| jtkrdd| | jf t | d
r(| jr(d
d| | jf nt
| tjsttj| j}|d k r|d}|d}tj| }dd| | |f ndd| | jf t | drg }| j D ]d\} }
t| }|d k rj| \}} | } tj| }d|| f }n
| }|||
f q t |D ]&\} }
dd|d | |
f q| jrڈd
d|d | jf |d7 }| D ]}|| qt | d
r(| jr(d
d|d | jf d S )Ntagr z #document
zz|%s%s r r z|%s"%s"z#document-fragmentz|%stailr z
|%s<%s %s>z|%s<%s>attribz%s %sz
|%s%s="%s")!hasattrappenddocinfointernalDTDZ public_idZ
system_url root_namer ZgetpreviousZgetnext
isinstancestrbytessysversion_infoAssertionErrorr$ comment_typetextr' r
Z_Elementetree_builders
tag_regexpmatchgroupr prefixesfromXmlNamer( itemsgroupssorted)
r indentdtd_strZnext_elementZnsmatchnsr$ prefix
attributesr valueZattr_stringchild
infosetFilterrvserializeElementr r rI ; s|
z(testSerializer.