/usr/lib/python3/dist-packages/lxml/__pycache__
NameSizeModeActions
builder.cpython-310.pyc59080644editdlrm
cssselect.cpython-310.pyc36080644editdlrm
doctestcompare.cpython-310.pyc139370644editdlrm
ElementInclude.cpython-310.pyc37760644editdlrm
pyclasslookup.cpython-310.pyc2040644editdlrm
sax.cpython-310.pyc81700644editdlrm
usedoctest.cpython-310.pyc3940644editdlrm
_elementpath.cpython-310.pyc63300644editdlrm
__init__.cpython-310.pyc6650644editdlrm
Edit: /usr/lib/python3/dist-packages/lxml/__pycache__/doctestcompare.cpython-310.pyc (13937B)
o ;/b£Gã@sddZddlmZddlZddlZddlZzddlmZWne y+ddl mZYnwgd¢Z ze Z Wn eyAeefZ YnwejddkZe d¡Ze d¡Ze d ¡ZejZd d „Zd d „ZejdddZdd„Ze d¡Ze d¡ZGdd„deƒZ Gdd„de ƒZ!d$dd„Z"d%dd„Z#Gdd„de$ƒZ%dd „Z&d!d"iZ'e(d#kr°ddlZe )¡dSdS)&aÑ lxml-based doctest output comparison. Note: normally, you should just import the `lxml.usedoctest` and `lxml.html.usedoctest` modules from within a doctest, instead of this one:: >>> import lxml.usedoctest # for XML output >>> import lxml.html.usedoctest # for HTML output To use this module directly, you must call ``lxmldoctest.install()``, which will cause doctest to use this in all subsequent calls. This changes the way output is checked and comparisons are made for XML or HTML-like content. XML or HTML content is noticed because the example starts with ``<`` (it's HTML if it starts with ```` or include an ``any`` attribute in the tag. An ``any`` tag matches any tag, while the attribute matches any and all attributes. When a match fails, the reformatted example and gotten text is displayed (indented), and a rough diff-like output is given. Anything marked with ``+`` is in the output but wasn't supposed to be, and similarly ``-`` means its in the example but wasn't in the output. You can disable parsing on one line with ``# doctest:+NOPARSE_MARKUP`` é)ÚetreeN)Úescape)Ú PARSE_HTMLÚ PARSE_XMLÚNOPARSE_MARKUPÚLXMLOutputCheckerÚLHTMLOutputCheckerÚinstallÚ temp_installérrrcCs|durdS| ¡S©N)Ústrip©Úv©rú5/usr/lib/python3/dist-packages/lxml/doctestcompare.pyr ?sr cCs t d|¡S)Nú )Ú_norm_whitespace_reÚsubrrrrÚnorm_whitespaceEó rFT)ÚrecoverÚremove_blank_textcCs t |t¡Sr )rÚ fromstringÚ _html_parser©ÚhtmlrrrÚhtml_fromstringJrrz^<[^>]+ (at|object) z[ \t\n][ \t\n]+c@s eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z d'dd„Z d(dd„Z d'dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd'd$d%„Zd&S))r) ÚparamÚimgÚareaÚbrÚbasefontÚinputÚbaseÚmetaÚlinkÚcolcCstjSr )rÚXML©ÚselfrrrÚget_default_parserWsz$LXMLOutputChecker.get_default_parserc Csšt|ddƒ}|dur|j}|}ntj}| |||¡}|s#|||||ƒSz||ƒ}Wn tjy4YdSwz||ƒ}Wn tjyFYdSw| ||¡S)NÚ_temp_override_selfF)ÚgetattrÚ_temp_call_super_check_outputÚ OutputCheckerÚ check_outputÚ get_parserrÚXMLSyntaxErrorÚ compare_docs) r*ÚwantÚgotÚ optionflagsÚalt_selfÚ super_methodÚparserÚwant_docÚgot_docrrrr0Zs* ÿ ÿ ÿ zLXMLOutputChecker.check_outputcCszd}t|@rdSt|@rt}|St|@rtj}|S| ¡ ¡ d¡r-| ¡ d¡r-t}|S|  |¡r;|  |¡r;|  ¡}|S)Nzs  ÿz$LXMLOutputChecker._looks_like_markupc Cs| |j|j¡s dS| |j|jd¡sdS| |j|jd¡s dSd|jvrNt|j ¡ƒ}t|j ¡ƒ}||kr9dS|D]}| |j||j|d¡sMdSq;|jdksWt|ƒr‰t |ƒ}t |ƒ}|sc|r‰|rg|sidS|  d¡}|  d¡} |  || ¡s{dS|s…|jdkr… dS|sc|scdS)NFTÚanyz...r) Ú tag_compareÚtagÚ text_compareÚtextÚtailÚattribÚsortedÚkeysÚlenÚlistÚpopr3) r*r4r5Ú want_keysÚgot_keysÚkeyÚ want_childrenÚ got_childrenÚ want_firstÚ got_firstrrrr3„s< ÿ   ÷ zLXMLOutputChecker.compare_docscCsZ|pd}|pd}|rt|ƒ ¡}t|ƒ ¡}dt |¡}| dd¡}t ||¡r+dSdS)NÚz^%s$z\.\.\.z.*TF)rr ÚrerÚreplacerA)r*r4r5r rrrrF¡s    zLXMLOutputChecker.text_comparecCsf|dkrdSt|tƒrt|tƒs||kS|pd}|pd}| d¡r/| d¡d| d¡dkS||kS)NrCTrVz{...}ú}éÿÿÿÿ)Ú isinstanceÚ _basestringr=Úsplit)r*r4r5rrrrD®s ÿ zLXMLOutputChecker.tag_comparec Cs|j}| |||¡}g}|durLz||ƒ}Wntjy-t ¡d}| d|¡Ynwz||ƒ} WntjyKt ¡d}| d|¡Ynw|dusR|rht ||||¡} |rf| | ¡d  |¡S| S|t u} d|  || d¡d|  | | d¡d|  || | d¡g} d  | ¡S) NézIn example: %szIn actual output: %sÚ z Expected:ézGot:zDiff:) r4r1rr2ÚsysÚexc_infoÚappendr/Úoutput_differenceÚjoinrÚ format_docÚ collect_diff) r*Úexampler5r6r4r9Úerrorsr:Úer;ÚvaluerÚ diff_partsrrrrd¼sB  þ  þ ÿ    û z#LXMLOutputChecker.output_differenceTcCs.|sdS|j|jvr dS|jst|ƒrdSdS)NFT)rEÚ empty_tagsrGrL)r*ÚelrrrrÚhtml_empty_tagÜs z LXMLOutputChecker.html_empty_tagrVc Cs–g}t|ƒsN| d|¡| |¡| | |¡¡| ||¡s6t|jƒr.| | |j¡¡| | |¡¡t|jƒrD| | |j¡¡| d¡d  |¡S| d|¡| |¡| | |¡¡| ||¡s¬| d¡t|jƒr‡| d|¡| | |j¡¡| d¡|D]}| |  |||d¡¡q‰| d|¡| | |¡¡| d¡t|jƒrÆ| d|¡| | |j¡¡| d¡d  |¡S)Nrr_rVr`) rLrcÚ format_tagror rGÚ format_textÚformat_end_tagrHrerf)r*ÚdocrÚindentÚprefixÚpartsrnrrrrfæs@               zLXMLOutputChecker.format_doccCs"|durdS|r | ¡}t|dƒS)NrVr^)r Ú html_escape)r*rGr rrrrq s  zLXMLOutputChecker.format_textc Cshg}t|tjƒr dSt|j ¡ƒD]\}}| d|| |d¡f¡q|s*d|jSd|jd  |¡fS)Nzú)r[rr{rE)r*rnrrrrrs  z LXMLOutputChecker.format_end_tagc Csg}t|ƒsIt|ƒsI| d|¡| | ||¡¡| ||¡s4| | |j|j¡¡| | ||¡¡| | |j|j¡¡| d¡d |¡S| d|¡| | ||¡¡| d¡t |jƒsht |jƒr| d|¡| | |j|j¡¡| d¡t |ƒ}t |ƒ}|s‹|rÈ|sž| |  |  d¡||dd¡¡q‡|s±| |  |  d¡||dd¡¡q‡| |  |  d¡|  d¡||d¡¡|s‹|s‹| d|¡| | ||¡¡| d¡t |jƒsçt |jƒrþ| d|¡| | |j|j¡¡| d¡d |¡S)Nrr_rVrr`ú+ú-)rLrcÚcollect_diff_tagroÚcollect_diff_textrGÚcollect_diff_end_tagrHrer rMrfrNrg)r*r4r5rrtrvrRrSrrrrg!sL       ÿù    zLXMLOutputChecker.collect_diffc Cs(| |j|j¡sd|j|jf}n|j}g}|jdkpd|jv}t|j ¡ƒD]8\}}||jvr@|s@| d|| |d¡f¡q'||jvrP| |j||d¡}n| |d¡}| d||f¡q'|st|j ¡ƒD]\}}||jvrsqi| d|| |d¡f¡qi|rŽd|d |¡f}|Sd |}|S) Nú %s (got: %s)rCz+%s="%s"Frxz-%s="%s"rzrry) rDrErIrJr|rcrqrƒre) r*r4r5rEr}rCr~rkrGrrrr‚Gs,   ÿz"LXMLOutputChecker.collect_diff_tagcCs2|j|jkrd|j|jf}d|S|j}d|S)Nr…r)rE)r*r4r5rErrrr„bs ÿz&LXMLOutputChecker.collect_diff_end_tagcCs:| |||¡r|s dS| ||¡Sd||f}| ||¡S)NrVr…)rFrq)r*r4r5r rGrrrrƒis    z#LXMLOutputChecker.collect_diff_textN)T)rV)Ú__name__Ú __module__Ú __qualname__rmr+r0r1r>r3rFrDrdrorfrqrprrrgr‚r„rƒrrrrrQs&  # &rc@seZdZdd„ZdS)rcCstSr )rr)rrrr+rsz%LHTMLOutputChecker.get_default_parserN)r†r‡rˆr+rrrrrqs rcCs|rtt_dStt_dS)z£ Install doctestcompare for all future doctests. If html is true, then by default the HTML parser will be used; otherwise the XML parser is used. N)rÚdoctestr/rrrrrr us  r c Csz|rt}nt}tƒ}|jd}|ƒ}|j}||_tr%|jdj}|jj}n |jdj}|jj}t t _ t ||||||ƒdS)zÁ Use this *inside* a doctest to enable this checker for this doctest only. If html is true, then by default the HTML parser will be used; otherwise the XML parser is used. r*ÚcheckN) rrÚ_find_doctest_frameÚf_localsÚ_checkerÚ _IS_PYTHON_3Ú__func__r0Úim_funcrr‰Ú_RestoreChecker) rÚ del_moduleÚCheckerÚframeÚdt_selfÚcheckerÚ old_checkerÚ check_funcÚchecker_check_funcrrrr s$    þr c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)r‘cCsD||_||_|j|j_||j_||_||_||_| ¡|  ¡dSr ) r•r–Ú call_superr.r,r˜Ú clone_funcr’Ú install_cloneÚinstall_dt_self)r*r•r—Ú new_checkerr˜r›r’rrrÚ__init__©s  z_RestoreChecker.__init__cCsLtr|jj|_|jj|_|jj|j_dS|jj|_|jj|_|jj|j_dSr )rŽr˜Ú__code__Ú func_codeÚ __globals__Ú func_globalsr›r)rrrrœ´s    z_RestoreChecker.install_clonecCs tr |j|j_dS|j|j_dSr )rŽr¡r˜r r)rrrÚuninstall_clone½sz_RestoreChecker.uninstall_clonecCs|jj|_||j_dSr )r•Ú_DocTestRunner__record_outcomeÚ prev_funcr)rrrrÂs  z_RestoreChecker.install_dt_selfcCs|j|j_dSr )r¦r•r¥r)rrrÚuninstall_dt_selfÅsz!_RestoreChecker.uninstall_dt_selfcCsT|jr&ddl}|j|j=d|jvr(|j dd¡\}}|j|}t||ƒdSdSdS)NrÚ.r^)r’raÚmodulesÚrsplitÚdelattr)r*raÚpackageÚmoduleÚ package_modrrrÚuninstall_moduleÇs   úz _RestoreChecker.uninstall_modulecOs8| ¡| ¡|j`|j`|j|i|¤Ž}| ¡|Sr )r¤r§r–r,r.r¦r¯)r*ÚargsÚkwÚresultrrrÚ__call__Ïsz_RestoreChecker.__call__cOs.| ¡z |j|i|¤ŽW| ¡S| ¡wr )r¤r˜rœ)r*r°r±rrrrš×sz_RestoreChecker.call_superN) r†r‡rˆrŸrœr¤rr§r¯r³ršrrrrr‘¨s   r‘cCs:ddl}| d¡}|r|j}d|vr|S|j}|s tdƒ‚)Nrr^ÚBOOMzBCould not find doctest (only use this function *inside* a doctest))raÚ _getframerŒÚf_backÚ LookupError)rar”Úlrrrr‹Þs ûÿr‹Úbasicai >>> temp_install() >>> print """stuff""" ... >>> print """""" >>> print """blahblahblah""" # doctest: +NOPARSE_MARKUP, +ELLIPSIS ...foo /> Ú__main__)F)FN)*Ú__doc__ÚlxmlrrarWr‰rrrwÚ ImportErrorÚcgiÚ__all__Ú basestringr\Ú NameErrorÚstrÚbytesÚ version_inforŽÚregister_optionflagrrrr/r rÚ HTMLParserrrÚcompiler@rrrr r Úobjectr‘r‹Ú__test__r†ÚtestmodrrrrÚsR % ÿ  ÿ     "  '6 ÿ  þ