zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
U
H=®d®9ã@sdZddlmZmZmZddlZddlZddlZzddlm    Z    Wn e
k
r`ddl m    Z    YnXddl m Z ddlmZdd    l mZdd
l mZdd l mZddlmZdd lmZmZd Ze d¡Ze d¡jZGdd„deƒZGdd„deƒZdd„Z dd„Z!Gdd„de j"ƒZ"dS)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_importÚdivisionÚunicode_literalsN)ÚMutableMappingé)Úbaseé)ÚDataLossWarning)Ú    constants)Úetree)Ú    _ihatexml)ÚPY3Ú binary_typeTz {([^}]*)}(.*)Zasdc@seZdZdd„ZdS)Ú DocumentTypecCs||_||_||_dS©N)ÚnameÚpublicIdÚsystemId)Úselfrrr©rúcD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\pip/_vendor/html5lib/treebuilders/etree_lxml.pyÚ__init__)szDocumentType.__init__N)Ú__name__Ú
__module__Ú __qualname__rrrrrr(src@s,eZdZdd„Zdd„Zdd„ZeeƒZdS)ÚDocumentcCsd|_g|_dSr)Ú _elementTreeÚ _childNodes©rrrrr0szDocument.__init__cCs.|j ¡}|j ¡ ¡D]}q| |j¡dSr)rÚgetrootZ itersiblingsZaddnextÚ_element)rÚelementÚlastrrrÚ appendChild4s
zDocument.appendChildcCs|jSr)rrrrrÚ_getChildNodes;szDocument._getChildNodesN)rrrrr#r$ÚpropertyÚ
childNodesrrrrr/srcs6g‰tjdd‰d‡‡‡fdd„    ‰ˆ|dƒd ˆ¡S)NT©ZpreventDoubleDashCommentsrc s,t|dƒs,t|dƒrºˆ d¡|jjrz|jjsF|jjsFd|jj}nd|jj|jj|jjf}ˆ dd|d|f¡| ¡}| ¡dk    r˜| ¡}q‚|dk    r¸ˆ||dƒ|     ¡}q˜nnt
|t ƒsÐt
|t ƒrt
|t ƒsìt jd    dksìt‚ˆ d
d||f¡n$ˆ d ¡|D]}ˆ||dƒqnü|jtkr€ˆ d d||jf¡t|d ƒr(|jr(ˆ d
d||jf¡n¨t
|tjƒs’t‚tj |j¡}|dk    rè| d¡}| d¡}tj|}ˆ dd||ˆ |¡f¡nˆ dd|ˆ |j¡f¡t|dƒr¶g}|j ¡D]d\}    }
t |    ¡}|dk    rj| ¡\}}    ˆ |    ¡}    tj|}d||    f} n
ˆ |    ¡} | | |
f¡q t |ƒD]&\}    }
ˆ dd|d|    |
f¡qŽ|jrڈ d
d|d|jf¡|d7}|D]} ˆ| |ƒqæt|d ƒr(|jr(ˆ d
d|d|jf¡dS)NÚtagrz    #documentú <!DOCTYPE %s>z<!DOCTYPE %s "%s" "%s">z|%s%sú rrz|%s"%s"z#document-fragmentz|%s<!-- %s -->Útailrz
|%s<%s %s>z|%s<%s>Úattribz%s %sz
|%s%s="%s")!ÚhasattrÚappendÚdocinfoÚ internalDTDÚ    public_idZ
system_urlÚ    root_namerZ getpreviousZgetnextÚ
isinstanceÚstrÚbytesÚsysÚ version_infoÚAssertionErrorr(Ú comment_typeÚtextr+r Z_ElementÚetree_buildersÚ
tag_regexpÚmatchÚgroupr
ÚprefixesÚ fromXmlNamer,ÚitemsÚgroupsÚsorted) r!ÚindentÚdtd_strZ next_elementZnsmatchÚnsr(ÚprefixÚ
attributesrÚvalueZ attr_stringÚchild©Ú infosetFilterÚrvÚserializeElementrrrNEs| 
 
ÿý 
 
 
 
 
 
ÿ
 
ÿ 
 
 
 
 
 z(testSerializer.<locals>.serializeElementÚ
)r)r Ú InfosetFilterÚjoin©r!rrKrÚtestSerializerAs
 F
rScs$g‰‡‡fdd„‰ˆ|ƒd ˆ¡S)z4Serialize an element and its child nodes to a stringcst|dƒsH|jjr:|jjr$|jj}n d|jj}ˆ |¡ˆ| ¡ƒnœ|jtkrfˆ d|j    f¡n~|j
s€ˆ d|jf¡n.d  dd„|j
  ¡Dƒ¡}ˆ d|j|f¡|j    rÀˆ |j    ¡|D] }ˆ|ƒqĈ d    |jf¡t|d
ƒr|j rˆ |j ¡dS) Nr(r)z    <!--%s-->z<%s>r*cSsg|]\}}d||f‘qS)z%s="%s"r)Ú.0rrIrrrÚ
<listcomp>¦sÿz6tostring.<locals>.serializeElement.<locals>.<listcomp>z<%s %s>z</%s>r+)r-r/r0Údoctyper2r.rr(r9r:r,rQrAr+)r!rEÚattrrJ©rMrNrrrN”s,
 
 
 
 
ÿ 
z"tostring.<locals>.serializeElementÚ)rQrRrrXrÚtostrings rZcszeZdZeZeZdZdZeZ    e
Z ddd„Z dd„Z dd„Zd    d
„Zd d „Zd d„Zddd„Zd‡fdd„    Zdd„Z‡ZS)Ú TreeBuilderNFcsŠtjt|d‰tjdd‰|_||_G‡fdd„dtƒ‰G‡‡‡fdd„dˆjƒ}G‡‡fdd    „d    ˆj    ƒ}||_
||_ t j  ||¡dS)
N)ÚfullTreeTr'csPeZdZdd„Z‡fdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dS)z(TreeBuilder.__init__.<locals>.AttributescSs
||_dSr)r ©rr!rrrrÇsz1TreeBuilder.__init__.<locals>.Attributes.__init__cs4t|tƒr&d|dˆ |d¡f}n
ˆ |¡}|S)Nú{%s}%srr)r3ÚtupleZcoerceAttribute)rÚkeyr©rLrrÚ
_coerceKeyÊs
 
z3TreeBuilder.__init__.<locals>.Attributes._coerceKeycSs0|jjj| |¡}ts,t|tƒr,| d¡}|S)NÚascii)r r,rbr r3rÚdecode©rr`rIrrrÚ __getitem__Ñs
z4TreeBuilder.__init__.<locals>.Attributes.__getitem__cSs||jjj| |¡<dSr©r r,rbrerrrÚ __setitem__×sz4TreeBuilder.__init__.<locals>.Attributes.__setitem__cSs|jjj| |¡=dSrrg)rr`rrrÚ __delitem__Úsz4TreeBuilder.__init__.<locals>.Attributes.__delitem__cSst|jjjƒSr)Úiterr r,rrrrÚ__iter__Ýsz1TreeBuilder.__init__.<locals>.Attributes.__iter__cSst|jjjƒSr)Úlenr r,rrrrÚ__len__àsz0TreeBuilder.__init__.<locals>.Attributes.__len__cSs|jjj ¡Sr)r r,Úclearrrrrrnãsz.TreeBuilder.__init__.<locals>.Attributes.clearN) rrrrrbrfrhrirkrmrnrrarrÚ
AttributesÆs rocspeZdZ‡‡‡fdd„Z‡fdd„Z‡fdd„ZeeeƒZdd„Zd    d
„Z    eee    ƒZ
d‡‡fd d „    Z dd„Z d S)z%TreeBuilder.__init__.<locals>.Elementcs*ˆ |¡}ˆjj|||dˆ|ƒ|_dS)N)Ú    namespace)Ú coerceElementÚElementrÚ _attributes)rrrp©roÚbuilderrLrrrçs
z.TreeBuilder.__init__.<locals>.Element.__init__cs$ˆ |¡|_| |j|j¡|j_dSr)rqÚ_nameZ _getETreeTagZ
_namespacer r()rrrarrÚ_setNameìs
 ÿz.TreeBuilder.__init__.<locals>.Element._setNamecs ˆ |j¡Sr)r@rvrrarrÚ_getNameñsz.TreeBuilder.__init__.<locals>.Element._getNamecSs|jSr)rsrrrrÚ_getAttributesösz4TreeBuilder.__init__.<locals>.Element._getAttributescSs|j}| ¡| |¡dSr)rHrnÚupdate)rrIrHrrrÚ_setAttributesùsz4TreeBuilder.__init__.<locals>.Element._setAttributesNcsˆ |¡}ˆj |||¡dSr)ZcoerceCharactersrrÚ
insertText)rÚdataÚ insertBefore©rurLrrr|s
z0TreeBuilder.__init__.<locals>.Element.insertTextcSs0t|ƒ|j|jƒ}|jjr,|jj |jj¡|Sr)Útyperrpr r,rzr]rrrÚ    cloneNodesz/TreeBuilder.__init__.<locals>.Element.cloneNode)N) rrrrrwrxr%rryr{rHr|rrrtrrrræs  
 
rrcs8eZdZ‡‡fdd„Z‡fdd„Zdd„ZeeeƒZdS)z%TreeBuilder.__init__.<locals>.Commentcsˆ |¡}ˆj ||¡dSr)Ú coerceCommentÚCommentr©rr}rrrr s
z.TreeBuilder.__init__.<locals>.Comment.__init__csˆ |¡}||j_dSr)r‚r r:r„rarrÚ_setDatas
z.TreeBuilder.__init__.<locals>.Comment._setDatacSs|jjSr)r r:rrrrÚ_getDatasz.TreeBuilder.__init__.<locals>.Comment._getDataN)rrrrr…r†r%r}rrrrrƒ
s rƒ)r;ÚgetETreeModuler r rPrLÚnamespaceHTMLElementsrrrrƒÚ elementClassÚ commentClassrr[r)rrˆr\rrrƒrrtrrÁs $zTreeBuilder.__init__cCs$tj |¡|j|_g|_d|_dSr)rr[ÚresetÚinsertCommentInitialÚ insertCommentÚinitial_commentsrVrrrrr‹s zTreeBuilder.resetcCst|ƒSr)rSr]rrrrS#szTreeBuilder.testSerializercCstr |jjS|jj ¡SdSr)r\ÚdocumentrrrrrrÚ getDocument&szTreeBuilder.getDocumentcCsFg}|jdj}|jr"| |j¡| t|ƒ¡|jrB| |j¡|S)Nr)Ú openElementsr r:r.ÚextendÚlistr+)rÚfragmentr!rrrÚ getFragment,s   zTreeBuilder.getFragmentcCsh|d}|d}|d}|s0t dt¡d|_n4|j |¡}||krPt dt¡| |||¡}||_dS)Nrrrz#lxml cannot represent empty doctypez%lxml cannot represent non-xml doctype)ÚwarningsÚwarnr    rVrLrqÚ doctypeClass)rÚtokenrrrZ coercedNamerVrrrÚ insertDoctype6s   zTreeBuilder.insertDoctypecCs6|dks||jkst‚|jjdks&t‚|j |¡dSr)rr8rrŽr.©rr}ÚparentrrrrŒFsz TreeBuilder.insertCommentInitialcsB||jkr,|jj ¡djtkr,t dt¡tt    |ƒ 
||¡dS)Néÿÿÿÿz@lxml cannot represent adjacent comments beyond the root elements) rrrr(r9r–r—r    Úsuperr[rr›©Ú    __class__rrÚinsertCommentMainKs
 
ÿ zTreeBuilder.insertCommentMainc Cs´d}|jrô|jjst‚|d|jj7}|jjdk    s>|jjdk    rÐ|d|j |jjpRd¡7}|jjrÈ|jj}| d¡dkrž| d¡dkržt     dt
¡|  dd¡}| d¡dkrº|d    |7}qÐ|d
|7}n|d 7}|d 7}|jj|d krôt     dt
¡|d7}t   |¡}|jD] }| |d¡}| |j¡q | ¡|_| ¡|j_|d }| d|j¡}|dkrj|}    n d||f}    |    |_| ||¡}
||
_|jj |
¡|j |
¡|j|_dS)NrYz <!DOCTYPE %sz  PUBLIC "%s" ú'rú"z6DOCTYPE system cannot contain single and double quotesZU00027z"%s"z'%s'z''ú>rzGlxml cannot represent doctype with a different name to the root elementz$<THIS_SHOULD_NEVER_APPEAR_PUBLICLY/>r}rpr^)rVrr8rrrLZ coercePubidÚfindr–r—r    Úreplacer Ú
fromstringrŽrŠZ addpreviousr Ú documentClassrZ getroottreerÚgetÚdefaultNamespacer(r‰rr.r‘r¡r) rr™ZdocStrÚsysidÚrootÚ comment_tokenÚcommentrrpZ    etree_tagZ root_elementrrrÚ
insertRootQsP  
ÿÿ   
 
 
 
   zTreeBuilder.insertRoot)F)N)N)rrrrr¨rr˜r‰rŠÚ fragmentClassr Úimplementationrr‹rSrr•ršrŒr¡r¯Ú __classcell__rrrŸrr[¹s
\
 
r[)#Ú__doc__Ú
__future__rrrr–Úrer6Úcollections.abcrÚ ImportErrorÚ collectionsrYrr
r    r r;r Z
lxml.etreeZpip._vendor.sixr rr\Úcompiler<rƒr(r9ÚobjectrrrSrZr[rrrrÚ<module>s.       
 O)