ó †2{Yc@`s'dZddlmZmZmZddlZddlZddlZddlm Z ddl m Z ddlm Z dd lm Z dd lmZddlj Z eZejd ƒZe jd ƒjZd efd„ƒYZdefd„ƒYZd„Zd„Zde jfd„ƒYZdS(uÃ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 i(tabsolute_importtdivisiontunicode_literalsNi(t_basei(tDataLossWarning(t constants(tetree(tihatexmlu {([^}]*)}(.*)uasdt DocumentTypecB`seZd„ZRS(cC`s||_||_||_dS(N(tnametpublicIdtsystemId(tselfR R R ((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyt__init__"s  (t__name__t __module__R (((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyR!stDocumentcB`s/eZd„Zd„Zd„ZeeƒZRS(cC`sd|_g|_dS(N(tNonet _elementTreet _childNodes(R ((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyR )s cC`s|jjƒj|jƒdS(N(Rtgetroottaddnextt_element(R telement((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyt appendChild-scC`s|jS(N(R(R ((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyt_getChildNodes0s(RRR RRtpropertyt childNodes(((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyR(s   c`spg‰d}tjƒ‰d‡‡‡fd†‰ˆ|dƒ|dk rcˆjdd|fƒndjˆƒS(Nic `sLt|dƒs¢t|dƒr ˆjdƒ|jjr©|jjpL|jjsbd|jj}n%d|jj|jj|jjf}ˆjdd|d|fƒn|jƒ}x"|jƒdk rÙ|jƒ}q¸WxÂ|dk r ˆ||dƒ|j ƒ}qÝWqHt |t ƒs+t |t ƒrpt |t ƒsRtjjdksRt‚ˆjd d||fƒqHˆjd ƒxÈ|D]}ˆ||dƒq„Wn¦|jtkr ˆjd d||jfƒt|d ƒrH|jrHˆjd d||jfƒqHn=t |tjƒs#t‚tjj|jƒ}|dk r™|jd ƒ}|jdƒ}tj|}ˆjdd||ˆj|ƒfƒn'ˆjdd|ˆj|jƒfƒt|dƒrµg}x›|jj ƒD]Š\} } tj| ƒ}|dk rM|j!ƒ\}} ˆj| ƒ} tj|}d|| f} nˆj| ƒ} |j| | fƒqåWx?t"|ƒD].\} } ˆjdd|d| | fƒq€Wn|jrãˆjd d|d|jfƒn|d7}x|D]} ˆ| |ƒqôWt|d ƒrH|jrHˆjd d|d|jfƒndS(Nutagugetrootu #documentu uu|%s%su iu|%s"%s"u#document-fragmentu|%sutailiu |%s<%s %s>u|%s<%s>uattribu%s %su |%s%s="%s"(#thasattrtappendtdocinfot internalDTDt public_idt system_urlt root_nameRt getpreviousRtgetnextt isinstancetstrtbytestsyst version_infotmajortAssertionErrorttagt comment_typettextttailRt_Elementtetree_builderst tag_regexptmatchtgroupRtprefixest fromXmlNametattribtitemstgroupstsorted( Rtindenttdtd_strt next_elementtnsmatchtnsR,tprefixt attributesR tvaluet attr_stringtchild(t infosetFiltertrvtserializeElement(s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyRG;st      " '  $    ) %  u|%s"%s"u iu u (RRt InfosetFilterRtjoin(Rt finalText((RERFRGs]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyttestSerializer6s F  c`s[g‰d}‡‡fd†‰ˆ|ƒ|dk rNˆjdd|fƒndjˆƒS(u4Serialize an element and its child nodes to a stringc`s‡t|dƒsi|jjrV|jjr6|jj}nd|jj}ˆj|ƒnˆ|jƒƒnï|jtkr’ˆjd|j fƒnÆ|j sµˆjd|jfƒnUdj g|j j ƒD]\}}d||f^q˃}ˆjd|j|fƒ|j r&ˆj|j ƒnx|D]}ˆ|ƒq-Wˆjd|jfƒt|d ƒrƒ|j rƒˆj|j ƒndS( Nutagu u u<%s>u u%s="%s"u<%s %s>uutail(RRRtdoctypeR"RRR,R-R.R7RIR8R/(RR<R RBtattrRD(RFRG(s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyRGŽs*    2  u%s"u iuNu (RRRI(RRJ((RFRGs]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyttostring‰s  t TreeBuildercB`s†eZeZeZd Zd ZeZ e Z e d„Z d„Zd„Zd„Zd„Zd„Zd d„Zd d„Zd„ZRS( c`sÀtjtd|ƒ‰tjƒ‰|_||_dtf‡fd†ƒY‰dˆjf‡‡‡fd†ƒY}dˆj f‡‡fd†ƒY}||_ ˆj |_ t j j||ƒdS(NtfullTreet Attributesc`s)eZi‡fd†Z‡fd†ZRS(c`s||_tj||ƒxo|jƒD]a\}}t|tƒred|dˆj|dƒf}nˆj|ƒ}||jjj|unameuGlxml cannot represent doctype with a different name to the root elementu$udatau namespaceu{%s}%sN( RLR R+R RR REt coercePubidtfindRzR{RtreplaceRt fromstringRrt addpreviousRgt documentClassRst getroottreeRtgettdefaultNamespaceR,RmRRRRuR‚Rq( R R}tdocStrtsysidtroott comment_tokenR RXt etree_tagt root_element((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyt insertRoot:sJ    *        N(RRRRˆRR|RRmRnt fragmentClassRtimplementationtFalseR RoRKRtRyRRpR‚R’(((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyRO¶s J      (t__doc__t __future__RRRRztreR(tRRRRR1Rt lxml.etreetTrueRPtcompileR2RgR,R-tobjectRRRKRNRO(((s]/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyt s$    S -