Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 U*WG@spdZddlmZddlZddlZddlZyddlmZWn e k rXddl mZYnXddddd d d gZ ye Z Wnek reefZ YnXejdd kZejdZejdZejdZejZd dZddZejdddZddZejdZejdZGdddeZ Gdd d e Z!d#dd Z"d$dd Z#Gddde$Z%ddZ&d d!iZ'e(d"krlddlZej)dS)%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_XMLNOPARSE_MARKUPLXMLOutputCheckerLHTMLOutputCheckerinstall temp_installcCs|dkr dS|jSdS)N)strip)vr&/usr/lib64/python3.6/doctestcompare.pyr ?sr cCs tjd|S)N )_norm_whitespace_resub)r rrrnorm_whitespaceEsrFT)ZrecoverZremove_blank_textcCs tj|tS)N)rZ fromstring _html_parser)htmlrrrhtml_fromstringJsrz^<[^>]+ (at|object) z[ \t\n][ \t\n]+c @seZdZd0Zd d Zd dZddZddZddZddZ ddZ ddZ d1ddZ d2dd Z d3d!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd4d-d.Zd/S)5rparamimgareabrbasefontinputbasemetalinkcolcCstjS)N)rXML)selfrrrget_default_parserWsz$LXMLOutputChecker.get_default_parserc Cst|dd}|dk r |j}|}ntj}|j|||}|sF|||||Sy ||}Wntjk rhdSXy ||}Wntjk rdSX|j||S)N_temp_override_selfF)getattr_temp_call_super_check_output OutputChecker check_output get_parserrXMLSyntaxError compare_docs) r"wantgot optionflagsZalt_selfZ super_methodparserwant_docgot_docrrrr(Zs$    zLXMLOutputChecker.check_outputcCstd}t|@rdSt|@rt}nRt|@r.tj}nB|jjjdrT|jjdrTt}n|j |rp|j |rp|j }|S)NzrWrX)r"docrindentprefixpartsr^rrrrXs@              zLXMLOutputChecker.format_doccCs"|dkr dS|r|j}t|dS)NrHrL)r html_escape)r"r=r rrrra s zLXMLOutputChecker.format_textcCslg}t|tjrdSx4t|jjD]"\}}|jd||j|dfq$W|sXd|jSd|jdj |fS)Nzz)rNrrhr;)r"r^rrrrbs z LXMLOutputChecker.format_end_tagcCsg}t| rt| r|jd||j|j|||j||sl|j|j|j|j|j|j|||j|j|j|j|jddj|S|jd||j|j|||jdt |jst |jr|jd||j|j|j|j|jdt |}t |}x|s"|r|sL|j|j |j d||ddq|sv|j|j |j d||ddq|j|j |j d|j d||dqW|jd||j|j|||jdt |jst |jr|jd||j|j|j|j|jddj|S)NrrQrHrrR+-)rBrUcollect_diff_tagr_collect_diff_textr=collect_diff_end_tagr>rWr rCrXrDrY)r"r,r-rrdrfrFrGrrrrY"sH       $  zLXMLOutputChecker.collect_diffc Cs4|j|j|js"d|j|jf}n|j}g}|jdkp>d|jk}xt|jjD]r\}}||jkr| r|jd||j|dfqP||jkr|j|j||d}n |j|d}|jd||fqPW|sx@t|jjD].\}}||jkrq|jd||j|dfqW|r(d|dj|f}nd |}|S) Nz %s (got: %s)r9z+%s="%s"Fz%s="%s"z-%s="%s"z<%s %s>rz<%s>) r:r;r?r@rirUrarorW) r"r,r-r;rjr9rkr\r=rrrrnHs*   z"LXMLOutputChecker.collect_diff_tagcCs,|j|jkrd|j|jf}n|j}d|S)Nz %s (got: %s)z)r;)r"r,r-r;rrrrpcs z&LXMLOutputChecker.collect_diff_end_tagcCs:|j|||r"|sdS|j||Sd||f}|j||S)NrHz %s (got: %s))r<ra)r"r,r-r r=rrrrojs   z#LXMLOutputChecker.collect_diff_textN) rrrrrrrrrr )T)rH)T)T)__name__ __module__ __qualname__r]r#r(r)r4r+r<r:rVr_rXrar`rbrYrnrprorrrrrQs& ! #  &c@seZdZddZdS)rcCstS)N)r)r"rrrr#ssz%LHTMLOutputChecker.get_default_parserN)rqrrrsr#rrrrrrscCs|r tt_ntt_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)rdoctestr'r)rrrrr vsc Csz|r t}nt}t}|jd}|}|j}||_trJ|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"ZcheckN) rr_find_doctest_framef_localsZ_checker _IS_PYTHON_3__func__r(Zim_funcrrt_RestoreChecker) r del_moduleZCheckerframedt_selfchecker old_checker check_funcZchecker_check_funcrrrr s"     c@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)rycCsD||_||_|j|j_||j_||_||_||_|j|j dS)N) r|r} call_superr&r$r clone_funcrz install_cloneinstall_dt_self)r"r|r~Z new_checkerrrrzrrr__init__s z_RestoreChecker.__init__cCsJtr&|jj|_|jj|_|jj|j_n |jj|_|jj|_|jj|j_dS)N)rwr__code__ func_code __globals__Z func_globalsr)r"rrrrs    z_RestoreChecker.install_clonecCstr|j|j_n |j|j_dS)N)rwrrr)r"rrruninstall_clones z_RestoreChecker.uninstall_clonecCs|jj|_||j_dS)N)r|_DocTestRunner__record_outcome prev_func)r"rrrrs z_RestoreChecker.install_dt_selfcCs|j|j_dS)N)rr|r)r"rrruninstall_dt_selfsz!_RestoreChecker.uninstall_dt_selfcCsL|jrHddl}|j|j=d|jkrH|jjdd\}}|j|}t||dS)Nr.rL)rzrSmodulesrsplitdelattr)r"rSpackagemoduleZ package_modrrruninstall_modules   z _RestoreChecker.uninstall_modulecOs4|j|j|j`|j`|j||}|j|S)N)rrr}r$r&rr)r"argskwresultrrr__call__s z_RestoreChecker.__call__c Os$|jz |j||S|jXdS)N)rrr)r"rrrrrrs z_RestoreChecker.call_superN) rqrrrsrrrrrrrrrrrrrys  rycCs@ddl}|jd}x |r2|j}d|kr*|S|j}qWtddS)NrrLZBOOMzBCould not find doctest (only use this function *inside* a doctest))rS _getframervf_back LookupError)rSr{lrrrrus  ruZbasicai >>> temp_install() >>> print """stuff""" ... >>> print """""" >>> print """blahblahblah""" # doctest: +NOPARSE_MARKUP, +ELLIPSIS ...foo /> __main__)F)FN)*__doc__ZlxmlrrSrIrtrrrg ImportErrorZcgi__all__Z basestringrO NameErrorstrbytes version_inforwZregister_optionflagrrrr'r rZ HTMLParserrrcompiler6rrrr r objectryruZ__test__rqZtestmodrrrr$sL       # '6