Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 \Ç—ã!@spdZddddddddd d d d d ddddddddddddddddddd d!g!Zd"d#lZd"d#lZd"d#lZd"d#lZd"d#lZd"d#lZd"d#lZd"d#l Z d"d#l Z d"d#l Z d"d#l Z d"d$l mZd"d%lmZed&d'ƒZiZd(d„ZedƒZedƒZedƒZedƒZedƒZedƒZeeBeBeBeBeBZed ƒZed ƒZed ƒZed ƒZedƒZeeBeBeBeBZ d)Z!d*Z"d+d,„Z#dpd.d/„Z$d0d1„Z%dqd3d4„Z&d5d6„Z'Gd7d8„d8eƒZ(d9d:„Z)d;d<„Z*d=d>„Z+Gd?d@„d@ej,ƒZ-dAdB„Z.GdCd„dƒZ/GdDd„dƒZ0GdEd„dƒZ1GdFd„dƒZ2GdGd„dƒZ3GdHd„dƒZ4GdId„de5ƒZ6GdJd„de5ƒZ7GdKd„de3ƒZ8d#a9drdNd„Z:dLd#d#d#d#dLd"d#dMe1ƒd#f dOd„Z;dsdQd„ZGdSdT„dTe j?ƒZ@GdUdV„dVe@ƒZAGdWdX„dXe jBƒZCdtdYd„ZDGdZd[„d[e@ƒZEdLd#d#e1ƒd#fd\d]„ZFd^d„ZGd_d„ZHd`d„ZIdudad „ZJdvdbdc„ZKdwddd!„ZLGdedf„dfƒZMeMdgdhdidjdkdlœZNdmdn„ZOePdok�rle jQeOƒƒd#S)xzreStructuredText enÚregister_optionflagÚDONT_ACCEPT_TRUE_FOR_1ÚDONT_ACCEPT_BLANKLINEÚNORMALIZE_WHITESPACEÚELLIPSISÚSKIPÚIGNORE_EXCEPTION_DETAILÚCOMPARISON_FLAGSÚ REPORT_UDIFFÚ REPORT_CDIFFÚ REPORT_NDIFFÚREPORT_ONLY_FIRST_FAILUREÚREPORTING_FLAGSÚ FAIL_FASTÚExampleÚDocTestÚ DocTestParserÚ DocTestFinderÚ DocTestRunnerÚ OutputCheckerÚDocTestFailureÚUnexpectedExceptionÚ DebugRunnerÚtestmodÚtestfileÚrun_docstring_examplesÚ DocTestSuiteÚ DocFileSuiteÚset_unittest_reportflagsÚscript_from_examplesÚ testsourceÚ debug_srcÚdebugéN)ÚStringIO)Ú namedtupleÚ TestResultszfailed attemptedcCstj|dttƒ>ƒS)Né)ÚOPTIONFLAGS_BY_NAMEÚ setdefaultÚlen)Úname©r+ú/usr/lib64/python3.6/doctest.pyr…sz z...cCs<d}x2tjD](}|j|dƒ}|tt|ƒkr ||jO}q W|S)Nr")Ú __future__Zall_feature_namesÚgetÚgetattrZ compiler_flag)ÚglobsÚflagsZfnameZfeaturer+r+r,Ú_extract_future_flags¸s   r2écCsVtj|ƒr|St|tƒr,t|tƒtƒdgƒS|dkrJtjtj |ƒj dSt dƒ‚dS)NÚ*Ú__name__z"Expected a module, string, or None) ÚinspectÚismoduleÚ isinstanceÚstrÚ __import__ÚglobalsÚlocalsÚsysÚmodulesÚ _getframeÚ f_globalsÚ TypeError)ÚmoduleZdepthr+r+r,Ú_normalize_moduleÄs  rCc Cs€|r\t|dƒ}t||ƒ}t|ddƒdk r\t|jdƒr\|jj|ƒ}|j|ƒ}|jtj dƒ|fSt ||d��}|j ƒ|fSQRXdS)NéÚ __loader__Úget_dataÚ )Úencoding) rCÚ_module_relative_pathr/ÚhasattrrErFÚdecodeÚreplaceÚosÚlinesepÚopenÚread)ÚfilenameÚpackageÚmodule_relativerHZ file_contentsÚfr+r+r,Ú_load_testfile×s     rUécCstjd|d|ƒS)Nz (?m)^(?!$)ú )ÚreÚsub)ÚsÚindentr+r+r,Ú_indentåsr\cCs*tƒ}|\}}}tj||||d�|jƒS)N)Úfile)r#Ú tracebackÚprint_exceptionÚgetvalue)Úexc_infoZexcoutÚexc_typeZexc_valZexc_tbr+r+r,Ú_exception_tracebackís rcc@seZdZdd„Zddd„ZdS)Ú _SpoofOutcCs&tj|ƒ}|r"|jdƒ r"|d7}|S)NrG)r#r`Úendswith)ÚselfÚresultr+r+r,r`ús z_SpoofOut.getvalueNcCs|j|ƒtj|ƒdS)N)Úseekr#Útruncate)rfÚsizer+r+r,ris z_SpoofOut.truncate)N)r5Ú __module__Ú __qualname__r`rir+r+r+r,rdùs rdcCsÄt|kr||kS|jtƒ}dt|ƒ}}|d}|rR|j|ƒrNt|ƒ}|d=ndS|d}|r€|j|ƒr||t|ƒ8}|d=ndS||krŒdSx2|D]*}|j|||ƒ}|dkr°dS|t|ƒ7}q’WdS)Nr"Fr&Téÿÿÿÿrm)ÚELLIPSIS_MARKERÚsplitr)Ú startswithreÚfind)ÚwantÚgotZwsÚstartposÚendposÚwr+r+r,Ú_ellipsis_matchs0     rwcCs|jƒ}|rd|SdSdS)Nz# ú#)Úrstrip)Úliner+r+r,Ú _comment_line9sr{cCshdt|ƒ}}|jdƒ}|dkr$|}|jdd|ƒ}|dkr>|}|jdd|ƒ}|dkr\|d}|||…S)Nr"rGú:Ú.r&)r)rqÚrfind)ÚmsgÚstartÚendÚir+r+r,Ú_strip_exception_detailsAs  rƒc@s.eZdZdd„Zd dd„Zdd„Zdd „ZdS) Ú_OutputRedirectingPdbcCs(||_d|_tjj||dd�d|_dS)NFT)ÚstdoutÚnosigintr&)Ú_OutputRedirectingPdb__outÚ$_OutputRedirectingPdb__debugger_usedÚpdbÚPdbÚ__init__Z use_rawinput)rfÚoutr+r+r,r‹asz_OutputRedirectingPdb.__init__NcCs*d|_|dkrtjƒj}tjj||ƒdS)NT)rˆr=r?Úf_backr‰rŠÚ set_trace)rfÚframer+r+r,rŽis z_OutputRedirectingPdb.set_tracecCs|jrtjj|ƒdS)N)rˆr‰rŠÚ set_continue)rfr+r+r,r�osz"_OutputRedirectingPdb.set_continuec Gs.tj}|jt_ztjj|f|žŽS|t_XdS)N)r=r…r‡r‰rŠÚtrace_dispatch)rfÚargsÚ save_stdoutr+r+r,r‘us z$_OutputRedirectingPdb.trace_dispatch)N)r5rkrlr‹rŽr�r‘r+r+r+r,r„[s r„cCsòtj|ƒstd|ƒ‚|jdƒr(tdƒ‚tjj|jdƒŽ}t |dƒrXtjj|j ƒd}nŒ|j dkržt t jƒdkr–t jddkr–tjjt jdƒd}qätj}nFt |dƒrÖx,|jD]"}tjj||ƒ}tjj|ƒr°|Sq°Wtd |j ƒ‚tjj||ƒS) NzExpected a module: %rú/z1Module-relative files may not have absolute pathsÚ__file__r"Ú__main__ÚÚ__path__zBCan't resolve paths relative to the module %r (it has no __file__))r6r7rArpÚ ValueErrorrMÚpathÚjoinrorJr•r5r)r=ÚargvÚcurdirr˜Úexists)rBZ test_pathZbasedirZ directoryZfullpathr+r+r,rI€s&         rIc@s&eZdZd dd„Zdd„Zdd„ZdS) rNr"cCsz|jdƒs|d7}|r*|jdƒ r*|d7}|dk rF|jdƒ rF|d7}||_||_||_||_|dkrji}||_||_dS)NrG)reÚsourcerrÚlinenor[ÚoptionsÚexc_msg)rfrŸrrr¢r r[r¡r+r+r,r‹Ñs zExample.__init__cCs\t|ƒt|ƒk rtS|j|jkoZ|j|jkoZ|j|jkoZ|j|jkoZ|j|jkoZ|j|jkS)N)ÚtypeÚNotImplementedrŸrrr r[r¡r¢)rfÚotherr+r+r,Ú__eq__ãs     zExample.__eq__cCst|j|j|j|j|jfƒS)N)ÚhashrŸrrr r[r¢)rfr+r+r,Ú__hash__îszExample.__hash__)Nr"r"N)r5rkrlr‹r¦r¨r+r+r+r,r®s#  c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) rcCs,||_||_|jƒ|_||_||_||_dS)N)ÚexamplesÚ docstringÚcopyr0r*rQr )rfr©r0r*rQr rªr+r+r,r‹ s  zDocTest.__init__cCsRt|jƒdkrd}n"t|jƒdkr(d}ndt|jƒ}d|jj|j|j|j|fS)Nr"z no examplesr&z 1 examplez %d examplesz<%s %s from %s:%s (%s)>)r)r©Ú __class__r5r*rQr )rfr©r+r+r,Ú__repr__szDocTest.__repr__cCs\t|ƒt|ƒk rtS|j|jkoZ|j|jkoZ|j|jkoZ|j|jkoZ|j|jkoZ|j|jkS)N)r£r¤r©rªr0r*rQr )rfr¥r+r+r,r¦#s     zDocTest.__eq__cCst|j|j|j|jfƒS)N)r§rªr*rQr )rfr+r+r,r¨.szDocTest.__hash__cCs:t|tƒstS|j|j|jt|ƒf|j|j|jt|ƒfkS)N)r8rr¤r*rQr Úid)rfr¥r+r+r,Ú__lt__2s zDocTest.__lt__N)r5rkrlr‹r­r¦r¨r¯r+r+r+r,ròs   c@s¦eZdZejdejejBƒZejdejejBejBƒZ ejdƒj Z ddd„Z dd„Z dd d „Zd d „Zejd ejƒZdd„ZejdejƒZdd„Zdd„Zdd„ZdS)raú # Source consists of a PS1 line followed by zero or more PS2 lines. (?P (?:^(?P [ ]*) >>> .*) # PS1 line (?:\n [ ]* \.\.\. .*)*) # PS2 lines \n? # Want consists of any non-blank lines that do not start with PS1. (?P (?:(?![ ]*$) # Not a blank line (?![ ]*>>>) # Not a line starting with PS1 .+$\n? # But any other line )*) aß # Grab the traceback header. Different versions of Python have # said different things on the first traceback line. ^(?P Traceback\ \( (?: most\ recent\ call\ last | innermost\ last ) \) : ) \s* $ # toss trailing whitespace on the header. (?P .*?) # don't blink: absorb stuff until... ^ (?P \w+ .*) # a line *starts* with alphanum. z ^[ ]*(#.*)?$úc s|jƒ}|j|ƒ‰ˆdkr8dj‡fdd„|jdƒDƒƒ}g}d\}}xª|jj|ƒD]š}|j|||jƒ…ƒ||jd||jƒƒ7}|j |||ƒ\}}} } |j |ƒsÊ|jt || | |ˆt |j dƒƒ|d�ƒ||jd|jƒ|jƒƒ7}|jƒ}qRW|j||d…ƒ|S)Nr"rGcsg|]}|ˆd…‘qS)Nr+)Ú.0Úl)Ú min_indentr+r,ú ysz'DocTestParser.parse..r[)r r[r¡)r"r")Ú expandtabsÚ _min_indentr›roÚ _EXAMPLE_REÚfinditerÚappendr€ÚcountÚ_parse_exampleÚ_IS_BLANK_OR_COMMENTrr)Úgroupr�) rfÚstringr*ÚoutputZcharnor ÚmrŸr¡rrr¢r+)r³r,Úparsems&     zDocTestParser.parsecCst|j||ƒ|||||ƒS)N)rÚ get_examples)rfr¾r0r*rQr r+r+r,Ú get_doctest”s zDocTestParser.get_doctestcCsdd„|j||ƒDƒS)NcSsg|]}t|tƒr|‘qSr+)r8r)r±Úxr+r+r,r´«sz.DocTestParser.get_examples..)rÁ)rfr¾r*r+r+r,r s zDocTestParser.get_examplesc s t|jdƒƒ‰|jdƒjdƒ}|j|ˆ||ƒ|j|dd…dˆd||ƒdj‡fdd„|Dƒƒ}|jd ƒ}|jdƒ}t|ƒdkrœtjd |d ƒrœ|d=|j|dˆ||t|ƒƒdj‡fd d„|Dƒƒ}|jj|ƒ}|rì|jd ƒ}nd}|j |||ƒ} || ||fS)Nr[rŸrGr&rWr}csg|]}|ˆdd…‘qS)rVNr+)r±Zsl)r[r+r,r´Ász0DocTestParser._parse_example..rrz *$csg|]}|ˆd…‘qS)Nr+)r±Zwl)r[r+r,r´Ìsrrmrm) r)r½roÚ_check_prompt_blankÚ _check_prefixr›rXÚmatchÚ _EXCEPTION_REÚ _find_options) rfrÀr*r Ú source_linesrŸrrÚ want_linesr¢r¡r+)r[r,r»®s$      zDocTestParser._parse_examplez#\s*doctest:\s*([^\n\'"]*)$c Cs´i}xŠ|jj|ƒD]z}|jdƒjddƒjƒ}x^|D]V}|ddksR|dd…tkrhtd|d||fƒ‚t|dd…}|ddk||<q2WqW|r°|j|ƒr°td|||fƒ‚|S) Nr&ú,rWr"z+-z7line %r of the doctest for %s has an invalid option: %rú+zSline %r of the doctest for %s has an option directive on a line with no example: %r)Ú_OPTION_DIRECTIVE_REr¸r½rLror'r™r¼) rfrŸr*r r¡rÀZoption_stringsÚoptionÚflagr+r+r,rÉäs  zDocTestParser._find_optionsz ^([ ]*)(?=\S)cCs2dd„|jj|ƒDƒ}t|ƒdkr*t|ƒSdSdS)NcSsg|] }t|ƒ‘qSr+)r))r±r[r+r+r,r´sz-DocTestParser._min_indent..r")Ú _INDENT_REÚfindallr)Úmin)rfrZÚindentsr+r+r,r¶s zDocTestParser._min_indentc Csbx\t|ƒD]P\}}t|ƒ|dkr ||ddkr td||d||||d…|fƒ‚q WdS)NrVrDrWz8line %r of the docstring for %s lacks blank after %s: %rr&)Ú enumerater)r™)rfÚlinesr[r*r r‚rzr+r+r,rÅ s   z!DocTestParser._check_prompt_blankcCsDx>t|ƒD]2\}}|r |j|ƒ r td||d||fƒ‚q WdS)NzGline %r of the docstring for %s has inconsistent leading whitespace: %rr&)rÕrpr™)rfrÖÚprefixr*r r‚rzr+r+r,rÆszDocTestParser._check_prefixN)r°)r°)r5rkrlrXÚcompileÚ MULTILINEÚVERBOSEr·ÚDOTALLrÈrÇr¼rÁrÃrÂr»rÎrÉrÑr¶rÅrÆr+r+r+r,r=s       ' 3c@sJeZdZdeƒddfdd„Zddd„Zdd „Zd d „Zd d „Zdd„Z dS)rFTcCs||_||_||_||_dS)N)Ú_parserÚ_verboseÚ_recurseÚ_exclude_empty)rfÚverboseÚparserÚrecurseÚ exclude_emptyr+r+r,r‹1szDocTestFinder.__init__Nc CsP|dkr.t|ddƒ}|dkr.tdt|ƒfƒ‚|dkrr–éþÿÿÿ)r/r™r£r6Ú getmoduleZ getsourcefilerAZgetfileÚ linecacheÚgetlinesÚ__dict__r«ÚupdateÚ_findÚsort) rfÚobjr*rBr0Ú extraglobsr]rÊÚtestsr+r+r,rqGsJ$          zDocTestFinder.findcCsÂ|dkr dStj|ƒdk r(|tj|ƒkStj|ƒr>|j|jkStj|ƒr|t|dƒr\|jj}nt|dƒrn|j}ndS|j |kStj |ƒr’|j |jkSt|dƒr¨|j |jkSt |t ƒr¶dSt dƒ‚dS)NTÚ __objclass__rkz"object must be a class or function)r6råÚ isfunctionrèÚ __globals__ZismethoddescriptorrJrïrkr5Úisclassr8Úpropertyr™)rfrBÚobjectZobj_modr+r+r,Ú _from_module­s(            zDocTestFinder._from_modulec Cs(|jrtd|ƒt|ƒ|kr"dSd|t|ƒ<|j|||||ƒ}|dk rR|j|ƒtj|ƒrÂ|jrÂx^|jj ƒD]P\} } d|| f} tj tj | ƒƒsœtj | ƒrn|j || ƒrn|j|| | ||||ƒqnWtj|ƒoÐ|j�rtxžt|diƒj ƒD]Š\} } t| tƒ�s tdt| ƒfƒ‚tj | ƒ�p8tj | ƒ�p8tj| ƒ�p8t| tƒ�sNtdt| ƒfƒ‚d|| f} |j|| | ||||ƒqæWtj |ƒ�r$|j�r$xš|jj ƒD]Œ\} } t| tƒ�r²t|| ƒ} t| tƒ�rÊt|| ƒj} tj | ƒ�sîtj | ƒ�sît| tƒ�r”|j || ƒ�r”d|| f} |j|| | ||||ƒ�q”WdS)NzFinding tests in %sr&z%s.%sÚ__test__z5DocTestFinder.find: __test__ keys must be strings: %rz`DocTestFinder.find: __test__ values must be strings, functions, methods, classes, or modules: %rz%s.__test__.%s)rÝÚprintr®Ú _get_testr¹r6r7rÞrèÚitemsZ isroutineZunwrapròrõrêr/r8r9r™r£Ú staticmethodÚ classmethodÚ__func__ró) rfrîrìr*rBrÊr0ÚseenÚtestZvalnameÚvalr+r+r,rêÉsP                 zDocTestFinder._findc CsÂt|tƒr|}nJy,|jdkr"d}n|j}t|tƒs:t|ƒ}Wnttfk rXd}YnX|j||ƒ}|jrv| rvdS|dkr„d}n*t|d|jƒ}|dd…dkr®|dd…}|j j |||||ƒS)Nr—r•rVz.pycr&éüÿÿÿrm) r8r9Ú__doc__rAÚAttributeErrorÚ _find_linenorßr/r5rÜrÃ) rfrìr*rBr0rÊrªr rQr+r+r,røs(         zDocTestFinder._get_testcCsd}tj|ƒrd}tj|ƒrd|dkr(dStjdt|ddƒƒ}x$t|ƒD]\}}|j|ƒrH|}PqHWtj|ƒrt|j }tj |ƒr„|j }tj |ƒr”|j }tj|ƒr¤|j}tj|ƒr¾t|ddƒd}|dk �r |dkrØ|dStjdƒ}x(t|t|ƒƒD]}|j||ƒrò|SqòWdS)Nr"z^\s*class\s*%s\br5ú-Úco_firstlinenor&z(^|.*:)\s*\w*("|\'))r6r7ròrXrØr/rÕrÇZismethodrürðÚ__code__Z istracebackÚtb_frameZisframeÚf_codeZiscodeÚranger))rfrìrÊr Zpatr‚rzr+r+r,r-s<          zDocTestFinder._find_lineno)NNNN) r5rkrlrr‹rqrõrêrørr+r+r+r,r(s  f?%c@s†eZdZddZddd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z e j dƒZd dd„Zd!dd„Zd"dd„Zdd„ZdS)#rr4éFNr"cCsN|ptƒ|_|dkrdtjk}||_||_||_d|_d|_i|_ t ƒ|_ dS)Nz-vr") rÚ_checkerr=rœrÝÚ optionflagsÚoriginal_optionflagsÚtriesÚfailuresÚ_name2ftrdÚ_fakeout)rfÚcheckerràr r+r+r,r‹�s  zDocTestRunner.__init__cCsH|jrD|jr.|dt|jƒdt|jƒƒn|dt|jƒdƒdS)NzTrying: z Expecting: zExpecting nothing )rÝrrr\rŸ)rfrŒrþÚexampler+r+r,Ú report_startÁs  zDocTestRunner.report_startcCs|jr|dƒdS)Nzok )rÝ)rfrŒrþrrsr+r+r,Úreport_successÎszDocTestRunner.report_successcCs&||j||ƒ|jj|||jƒƒdS)N)Ú_failure_headerr Úoutput_differencer )rfrŒrþrrsr+r+r,Úreport_failureÖs zDocTestRunner.report_failurecCs$||j||ƒdtt|ƒƒƒdS)NzException raised: )rr\rc)rfrŒrþrrar+r+r,Úreport_unexpected_exceptionÝsz)DocTestRunner.report_unexpected_exceptioncCs”|jg}|jrR|jdk r4|jdk r4|j|jd}nd}|jd|j||jfƒn|jd|jd|jfƒ|jdƒ|j}|jt|ƒƒdj|ƒS)Nr&ú?zFile "%s", line %s, in %szLine %s, in %szFailed example:rG)ÚDIVIDERrQr r¹r*rŸr\r›)rfrþrrŒr rŸr+r+r,räs zDocTestRunner._failure_headercCsŒd}}|j}tdƒ\}}} |jj} �xFt|jƒD�]6\} } |jt@oL|dk} ||_| jr–x:| jjƒD],\}}|r‚|j|O_qf|j|M_qfW|jt @r¢q2|d7}| s¼|j ||| ƒd|j | f}y,t t | j|d|dƒ|jƒ|jjƒd}Wn4tk �r‚Yntjƒ}|jjƒYnX|jjƒ}|jjdƒ|}|dk�rh| | j||jƒ�rä|}n|tj|dd…Žd}| �s�|t|ƒ7}| jdk�r¢| }nB| | j||jƒ�rº|}n*|jt@�rä| t| jƒt|ƒ|jƒ�rä|}||k�r| �sZ|j||| |ƒnT||k�r0| �s&|j ||| |ƒ|d7}n*|| k�rZ| �sP|j!||| |ƒ|d7}n|r2|jt"@r2Pq2W||_|j#|||ƒt$||ƒS)Nr"rDr&zZsingler3rm)%r r r Ú check_outputrÕr©r r¡rùrrr*ÚexecrØrŸr0Údebuggerr�ÚKeyboardInterruptr=rarr`rirrr^Úformat_exception_onlyrcr¢rrƒrrrrÚ_DocTestRunner__record_outcomer%)rfrþÚ compileflagsrŒrrr ÚSUCCESSÚFAILUREZBOOMZcheckÚ examplenumrÚquietZ optionflagrÿrQZ exceptionrsZoutcomer¢r+r+r,Z__runøs€                   zDocTestRunner.__runcCsL|jj|jdƒ\}}||||f|j|j<|j|7_|j|7_dS)Nr")r"r")rr.r*rr)rfrþrTÚtÚf2Út2r+r+r,Z__record_outcomeuszDocTestRunner.__record_outcomez..+)\[(?P\d+)\]>$cCsV|jj|ƒ}|rF|jdƒ|jjkrF|jjt|jdƒƒ}|jjdd�S|j ||ƒSdS)Nr*r%T)Úkeepends) Ú%_DocTestRunner__LINECACHE_FILENAME_RErÇr½rþr*r©ÚintrŸÚ splitlinesÚsave_linecache_getlines)rfrQÚmodule_globalsrÀrr+r+r,Z__patched_linecache_getlines‚s  z*DocTestRunner.__patched_linecache_getlinesTc sþ||_|dkrt|jƒ}tj‰|dkrVˆj‰ˆdks@ˆjƒdkrHˆj}n‡‡fdd„}|jt_tj ƒ}t j }t ˆƒ|_ |j jƒ|j j t _ tj|_|jt_tj}tjt_z|j|||ƒSˆt_|t _ tj|ƒ|jt_|t_|rø|jjƒddl}d|_XdS)Nzutf-8cs t|jˆdƒˆƒ}ˆj|ƒdS)NÚbackslashreplace)r9ÚencodeÚwrite)rZ)rHr“r+r,rŒªszDocTestRunner.run..outr")rþr2r0r=r…rHÚlowerr2rÚgettracer‰rŽr„rÚresetrærçr.Ú*_DocTestRunner__patched_linecache_getlinesÚ displayhookÚ__displayhook__Ú_DocTestRunner__runÚsettraceÚclearÚbuiltinsÚ_) rfrþr"rŒÚ clear_globsZ save_traceZsave_set_traceZsave_displayhookr<r+)rHr“r,ÚrunŠs<      zDocTestRunner.runc Cs¢|dkr|j}g}g}g}d}}xd|jjƒD]V}|\}\} } || 7}|| 7}| dkrb|j|ƒq.| dkrz|j|| fƒq.|j|ƒq.W|rú|r¾tt|ƒdƒ|jƒx|D]} td| ƒq¬W|rútt|ƒdƒ|jƒx |D]\} } td| | fƒqÞW|�rJt|jƒtt|ƒdƒ|jƒx(|D] \} \} } td| | | fƒ�q&W|�rvt|dt|jƒd ƒt||d |d ƒ|�rŠtd |d ƒn|�r˜tdƒt||ƒS)Nr"zitems had no tests:z zitems passed all tests:z %3d tests in %szitems had failures:z %3d of %3d in %sztests inzitems.z passed andzfailed.z***Test Failed***z failures.z Test passed.) rÝrrùr¹r÷r)rërr%) rfràZnotestsZpassedZfailedZtotaltZtotalfrÄr*rTr'Úthingrºr+r+r,Ú summarizeÓsP     zDocTestRunner.summarizecCsV|j}xJ|jjƒD]<\}\}}||krB||\}}||}||}||f||<qWdS)N)rrù)rfr¥Údr*rTr'r(r)r+r+r,Úmerge s zDocTestRunner.merge)NNr")N)NNT)N)r5rkrlrr‹rrrrrr9r!rXrØr+r6r?rArCr+r+r+r,ras: $ }   I 9c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) rcCst|jddƒdƒS)NÚASCIIr0)r9r1)rfrZr+r+r,Ú_toAscii!szOutputChecker._toAsciicCsÌ|j|ƒ}|j|ƒ}||kr dS|t@sH||fd kr8dS||fd krHdS|t@s‚tjdtjtƒd|ƒ}tjdd|ƒ}||kr‚dS|t@r²d j|j ƒƒ}d j|j ƒƒ}||kr²dS|t @rÈt ||ƒrÈdSd S) NTúTrue ú1 úFalse ú0 z (?m)^%s\s*?$r—z (?m)^\s*?$rWF)rFrG)rHrI) rErrrXrYÚescapeÚBLANKLINE_MARKERrr›rorrw)rfrrrsr r+r+r,r's0     zOutputChecker.check_outputcCs<|ttBtB@sdS|t@r dS|jdƒdko:|jdƒdkS)NFTrGr3)r r r rº)rfrrrsr r+r+r,Ú_do_a_fancy_difffs zOutputChecker._do_a_fancy_diffc Cs8|j}|t@stjdt|ƒ}|j|||ƒrî|jdd�}|jdd�}|t@rptj ||dd�}t |ƒdd…}d}nZ|t @ržtj ||dd�}t |ƒdd…}d}n,|t @rÊtjtjd�} t | j||ƒƒ}d }nd d „|Dƒ}d |td j|ƒƒS|oô|�r dt|ƒt|ƒfS|�rdt|ƒS|�r0dt|ƒSdSdS)Nz(?m)^[ ]*(?= )T)r*r3)Únz#unified diff with -expected +actualz-context diff with expected followed by actual)Zcharjunkzndiff with -expected +actualcSsg|]}|jƒd‘qS)rG)ry)r±rzr+r+r,r´Ÿsz3OutputChecker.output_difference..zDifferences (%s): r—zExpected: %sGot: %szExpected: %sGot nothing zExpected nothing Got: %szExpected nothing Got nothing )rrrrXrYrKrLr-r ÚdifflibZ unified_diffÚlistr Z context_diffr ZDifferZIS_CHARACTER_JUNKZcomparer\r›) rfrrsr rrrËZ got_linesZdiffZkindZenginer+r+r,r}s6     zOutputChecker.output_differenceN)r5rkrlrErrLrr+r+r+r,rs?c@seZdZdd„Zdd„ZdS)rcCs||_||_||_dS)N)rþrrs)rfrþrrsr+r+r,r‹¸szDocTestFailure.__init__cCs t|jƒS)N)r9rþ)rfr+r+r,Ú__str__½szDocTestFailure.__str__N)r5rkrlr‹rPr+r+r+r,r­s c@seZdZdd„Zdd„ZdS)rcCs||_||_||_dS)N)rþrra)rfrþrrar+r+r,r‹ËszUnexpectedException.__init__cCs t|jƒS)N)r9rþ)rfr+r+r,rPÐszUnexpectedException.__str__N)r5rkrlr‹rPr+r+r+r,rÀs c@s&eZdZd dd„Zdd„Zdd„ZdS) rNTcCs$tj||||dƒ}|r |jjƒ|S)NF)rr?r0r;)rfrþr"rŒr>Úrr+r+r,r?.s zDebugRunner.runcCst|||ƒ‚dS)N)r)rfrŒrþrrar+r+r,r4sz'DebugRunner.report_unexpected_exceptioncCst|||ƒ‚dS)N)r)rfrŒrþrrsr+r+r,r7szDebugRunner.report_failure)NNT)r5rkrlr?rrr+r+r+r,rÓs[ TFc Csº|dkrtjjdƒ}tj|ƒs,td|fƒ‚|dkr:|j}t|d�} |rVt||d�} n t ||d�} x$| j ||||d�D]} | j | ƒqvW|r”| j ƒt dkr¢| a n t j| ƒt| j| jƒS)Nr–ztestmod: module required; %r)rã)ràr )r0rí)r=r>r.r6r7rAr5rrrrqr?rAÚmasterrCr%rr) rÀr*r0ràÚreportr ríÚraise_on_errorrãÚfinderÚrunnerrþr+r+r,rCs$E     c Csà|r| rtdƒ‚t|||| p dƒ\} }|dkr)rar=r…r#r_r rZrr`rr?r2ZfailureExceptionÚformat_failurer`)rfrþr[Únewr rVrrr+r+r,ÚrunTest�s  zDocTestCase.runTestcCsP|j}|jdkrd}n d|j}dj|jjdƒdd…ƒ}d|j|j|||fS)Nzunknown line numberz%sr}r&z:Failed doctest test for %s File "%s", line %s, in %s %srm)rar r›r*rorQ)rfÚerrrþr Zlnamer+r+r,rf™s  zDocTestCase.format_failurecCs6|jƒt|j|jdd�}|j|jdd�|jƒdS)NF)r rrà)r>)rdrr_r`r?rare)rfrVr+r+r,r!¥s B zDocTestCase.debugcCs|jjS)N)rar*)rfr+r+r,r®íszDocTestCase.idcCsPt|ƒt|ƒk rtS|j|jkoN|j|jkoN|j|jkoN|j|jkoN|j|jkS)N)r£r¤rar_rbrcr`)rfr¥r+r+r,r¦ðs    zDocTestCase.__eq__cCst|j|j|j|jfƒS)N)r§r_rbrcr`)rfr+r+r,r¨úszDocTestCase.__hash__cCs,|jjjdƒ}d|ddj|dd…ƒfS)Nr}z%s (%s)r&rmrm)rar*ror›)rfr*r+r+r,r­þszDocTestCase.__repr__cCs d|jjS)Nz Doctest: )rar*)rfr+r+r,ÚshortDescription szDocTestCase.shortDescription)r"NNN)r5rkrlr‹rdrerhrfr!r®r¦r¨r­rPrjr+r+r+r,r\gs  H r\c@s0eZdZdd„Zdd„Zdd„Zdd„ZeZd S) ÚSkipDocTestCasecCs||_tj|dƒdS)N)rBr\r‹)rfrBr+r+r,r‹ szSkipDocTestCase.__init__cCs|jdƒdS)Nz-DocTestSuite will not work with -O2 and above)ZskipTest)rfr+r+r,rd szSkipDocTestCase.setUpcCsdS)Nr+)rfr+r+r,Ú test_skip szSkipDocTestCase.test_skipcCs d|jjS)NzSkipping tests from %s)rBr5)rfr+r+r,rj sz SkipDocTestCase.shortDescriptionN)r5rkrlr‹rdrlrjrPr+r+r+r,rk s rkc@seZdZdd„ZdS)Ú _DocTestSuitecCsdS)Nr+)rfÚindexr+r+r,Ú_removeTestAtIndex sz _DocTestSuite._removeTestAtIndexN)r5rkrlror+r+r+r,rm srmc KsÀ|dkrtƒ}t|ƒ}|j|||d�}| rPtjjdkrPtƒ}|jt|ƒƒ|S|j ƒtƒ}x\|D]T}t |j ƒdkrxqd|j s¦|j }|dd…dkr |dd…}||_ |jt|f|ŽƒqdW|S) N)r0rír3r"rVz.pycr&rrm)rrCrqr=r1ÚoptimizermÚaddTestrkrër)r©rQr•r\) rBr0ríZ test_finderr¡rîÚsuiterþrQr+r+r,r s(%  c@s(eZdZdd„Zdd„ZeZdd„ZdS)Ú DocFileCasecCsdj|jjjdƒƒS)Nr=r})r›rar*ro)rfr+r+r,r®` szDocFileCase.idcCs|jjS)N)rarQ)rfr+r+r,r­c szDocFileCase.__repr__cCsd|jj|jj|fS)Nz2Failed doctest test for %s File "%s", line 0 %s)rar*rQ)rfrir+r+r,rfg szDocFileCase.format_failureN)r5rkrlr®r­rPrfr+r+r+r,rs^ srsc Ksx|dkri}n|jƒ}|r(| r(tdƒ‚t||||p6dƒ\}}d|krN||d<tjj|ƒ}|j||||dƒ} t| f|ŽS)Nz8Package may only be specified for module-relative paths.zutf-8r•r")r«r™rUrMršrWrÃrs) ršrSrRr0rárHr¡Údocr*rþr+r+r,Ú DocFileTestl s  rucOsHtƒ}|jddƒr$t|jdƒƒ|d<x|D]}|jt|f|Žƒq*W|S)NrSTrR)rmr.rCrqru)ÚpathsÚkwrrršr+r+r,r† s 8  cCsÚg}xˆtƒj|ƒD]x}t|tƒrj|j|jdd …ƒ|j}|rŠ|jdƒ|dd„|jdƒdd …Dƒ7}q|dd„|jdƒdd …Dƒ7}qWx|rª|d dkrª|jƒq�Wx|rÊ|ddkrÊ|jdƒq®Wdj |ƒdS) Nr&z # Expected:cSsg|] }d|‘qS)z## r+)r±r²r+r+r,r´ sz(script_from_examples..rGcSsg|] }t|ƒ‘qSr+)r{)r±r²r+r+r,r´ srxr"rmrmrmrm) rrÁr8rr¹rŸrrroÚpopr›)rZr¿Zpiecerrr+r+r,rÏ s:  " csJt|ƒ}tƒj|ƒ}‡fdd„|Dƒ}|s4tˆdƒ‚|d}t|jƒ}|S)Ncsg|]}|jˆkr|‘qSr+)r*)r±r')r*r+r,r´* sztestsource..znot found in testsr")rCrrqr™rrª)rBr*rîrþÚtestsrcr+)r*r,r! s   cCst|ƒ}t|||ƒdS)N)rÚ debug_script)ÚsrcÚpmr0ryr+r+r,r 1 sc Cs”ddl}|r|jƒ}ni}|rvyt|||ƒWq�ttjƒdƒ|jdd�}|jƒ|jdtjƒdƒYq�Xn|jdd�j d|||ƒdS)Nr"r&T)r†r3zexec(%r)) r‰r«rr÷r=rarŠr5Z interactionr?)r{r|r0r‰Úpr+r+r,rz6 s  rzcCs$t|ƒ}t||ƒ}t|||jƒdS)N)rCrrzrè)rBr*r|ryr+r+r,r!J s c@s$eZdZdd„Zdd„Zdd„ZdS)Ú _TestClasscCs ||_dS)N)rÿ)rfrÿr+r+r,r‹f sz_TestClass.__init__cCs|jd|_|S)Nr3)rÿ)rfr+r+r,Úsquarep s z_TestClass.squarecCs|jS)N)rÿ)rfr+r+r,r.z sz_TestClass.getN)r5rkrlr‹rr.r+r+r+r,r~X s  r~zÄ Example of a string object, searched as-is. >>> x = 1; y = 2 >>> x + y, x * y (3, 2) aÜ In 2.2, boolean expressions displayed 0 or 1. By default, we still accept them. This can be disabled by passing DONT_ACCEPT_TRUE_FOR_1 to the new optionflags argument. >>> 4 == 4 1 >>> 4 == 4 True >>> 4 > 4 0 >>> 4 > 4 False zç Blank lines can be marked with : >>> print('foo\n\nbar\n') foo bar zú If the ellipsis flag is used, then '...' can be used to elide substrings in the desired output: >>> print(list(range(1000))) #doctest: +ELLIPSIS [0, 1, 2, ..., 999] aƒ If the whitespace normalization flag is used, then differences in whitespace are ignored. >>> print(list(range(30))) #doctest: +NORMALIZE_WHITESPACE [0, 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] )r~r¾zbool-int equivalencez blank linesZellipsiszwhitespace normalizationc Cs tjdd�}|jdddddd�|jd d d tjƒgd d �|jddddd�|jdddd�|jƒ}|j}|j}d}x|jD]}|t|O}q|W|j rž|t O}x||D]t}|j dƒrüt j j|ƒ\}}tj jd|ƒt|dd…ƒ}tj d=t|||d�\} } nt|d||d�\} } | r¤dSq¤WdS)Nzdoctest runner)Z descriptionz-vz --verboseÚ store_trueFz'print very verbose output for all tests)ÚactionÚdefaultÚhelpz-oz--optionr¹zqspecify a doctest option flag to apply to the test run; may be specified more than once to apply multiple options)r�Úchoicesr‚rƒz-fz --fail-fastzystop running tests after first failure (this is a shorthand for -o FAIL_FAST, and is in addition to any other -o options))r�rƒr]rÍz file containing the tests to run)Únargsrƒr"z.pyrD)ràr )rSràr r&éýÿÿÿ)ÚargparseÚArgumentParserÚ add_argumentr'ÚkeysÚ parse_argsr]ràrÏZ fail_fastrrerMršror=Úinsertr:rr) rár’Z testfilesràr¡rÏrQÚdirnamerÀrr=r+r+r,Ú_test· s<       rŽr–)r3)rV) NNNNTr"NFF)FrYNr")NNNN)FN)FN)F)RZ __docformat__Ú__all__r-r‡rNr6rærMr‰rXr=r^r]Úior#Ú collectionsr$r%r'rrrrrrrrr r r r rr rKrnr2rCrUr\rcrdrwr{rƒrŠr„rIrrrrrrÚ ExceptionrrrrRrrrrZrr^r\rkZ TestSuitermrrsrurrrr rzr!r~rörŽr5Úexitr+r+r+r,Ú0s      1%.DKl;;n f x $! @ IR   ,  +