python (3.11.7)

(root)/
lib/
python3.11/
__pycache__/
doctest.cpython-311.opt-2.pyc

e	dZgdZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddlmZeddZiZdZed	Zed
ZedZedZed
ZedZeezezezezezZedZedZedZedZedZeezezezezZ dZ!dZ"dZ#dYdZ$dZ%dZ&dZdZ'dZ(Gdde
Z)d Z*d!Z+d"Z,Gd#d$ej-Z.d%Z/Gd&d'Z0Gd(d)Z1Gd*d+Z2Gd,d-Z3Gd.d/Z4Gd0d1Z5Gd2d3e6Z7Gd4d5e6Z8Gd6d7e4Z9da:			d[d:Z;d8ddddd8ddd9e2dfd;Z<		d\d=Z=da>d>Z?Gd?d@ej@ZAGdAdBeAZBGdCdDejCZDd]dEZEGdFdGeAZFd8dde2dfdHZGdIZHdJZIdKZJd^dLZKd^dMZLd_dNZMGdOdPZNeNdQdRdSdTdUdVZOdWZPeQdXkre	jRePdSdS)`zreStructuredText en)!register_optionflagDONT_ACCEPT_TRUE_FOR_1DONT_ACCEPT_BLANKLINENORMALIZE_WHITESPACEELLIPSISSKIPIGNORE_EXCEPTION_DETAILCOMPARISON_FLAGSREPORT_UDIFFREPORT_CDIFFREPORT_NDIFFREPORT_ONLY_FIRST_FAILUREREPORTING_FLAGS	FAIL_FASTExampleDocTest
DocTestParser
DocTestFinder
DocTestRunner
OutputCheckerDocTestFailureUnexpectedExceptionDebugRunnertestmodtestfilerun_docstring_examplesDocTestSuiteDocFileSuiteset_unittest_reportflagsscript_from_examples
testsource	debug_srcdebugN)StringIOIncrementalNewlineDecoder)
namedtupleTestResultszfailed attemptedcbt|dttzS)N)OPTIONFLAGS_BY_NAME
setdefaultlennames ;/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/doctest.pyrrs&))$S9L5M5M0MNNNrrrrrrr
rrr
rz<BLANKLINE>z...c	d}tjD]9}||d}|tt|ur
||jz}:|S)Nr#)
__future__all_feature_namesgetgetattr
compiler_flag)globsflagsfnamefeatures    r/_extract_future_flagsr;s[
E-++))E4((gj%0000W**ELr0c0	tj|r|St|tr+t	|tt
dgS|/tjtj	|j
dStd)N*__name__z"Expected a module, string, or None)inspectismodule
isinstancestr
__import__globalslocalssysmodules	_getframe	f_globals	TypeError)moduledepths  r/_normalize_modulerNs>
	FC	 	 >&'))VXXu===	{3=//9*EFF<===r0cJtdd|dSNT)r%decode)datas r/_newline_convertrSs"$T40077dCCCr0c|rt|d}t||}t|ddx}	|jj}n#t
$rYnwxYwt
|dr;||}||}t||fSt||5}||fcdddS#1swxYwYdS)N
__loader__get_data)encoding)rN_module_relative_pathr5__spec__loaderAttributeErrorhasattrrWrQrSopenread)filenamepackagemodule_relativerXr[
file_contentsfs       r/_load_testfileres@
=#GQ//((;;g|T:::FC
 )0!



6:&&	="OOH55M)00::M$M22H<<	
h	*	*	*"avvxx!""""""""""""""""""s#A
AA0CCCc6	tjd|dz|S)Nz
(?m)^(?!$) )resub)sindents  r/_indentrms!
6,s
A...r0c	t}|\}}}tj|||||S)N)file)r$	tracebackprint_exceptiongetvalue)exc_infoexcoutexc_typeexc_valexc_tbs     r/_exception_tracebackrxsH
ZZF (Hgv
hfEEEE??r0ceZdZdZddZdS)	_SpoofOutcftj|}|r|ds|dz
}|SN
)r$rrendswith)selfresults  r/rrz_SpoofOut.getvalues="4((	&//$//	dNF
r0NcX||tj|dSN)seekr$truncate)rsizes  r/rz_SpoofOut.truncate
s(		$$r0r)r?
__module____qualname__rrrr0r/rzrzs7      r0rzc	t|vr||kS|t}dt|}}|d}|r*||rt|}|d=ndS|d}|r-||r|t|z}|d=ndS||krdS|D]4}||||}|dkrdS|t|z
}5dS)Nr#FT)ELLIPSIS_MARKERsplitr,
startswithr~find)wantgotwsstartposendposws      r/_ellipsis_matchrs"
d""s{
O	$	$B#c((fH
1A>>!	1vvH15
2A<<??	c!ffF25&u
88Ax00a<<55CFF4r0c>	|}|rd|zSdS)Nz# #)rstrip)lines r/
_comment_liner@s)/;;==DDysr0cdt|}}|d}|dkr|}|dd|}|dkr|}|dd|}|dkr|dz}|||S)Nr#r}:.r))r,rrfind)msgstartendis    r/_strip_exception_detailsrHsCHH3EAAvvaAAvv		#q#AAvv!ucz?r0c*eZdZ	dZddZdZdZdS)_OutputRedirectingPdbct||_d|_tj||dd|_dS)NFT)stdoutnosigintr))_OutputRedirectingPdb__out$_OutputRedirectingPdb__debugger_usedpdbPdb__init__use_rawinput)routs  r/rz_OutputRedirectingPdb.__init__hs<
$cD999r0Ncd|_|tjj}tj||dSrP)rrGrIf_backrr	set_trace)rframes  r/rz_OutputRedirectingPdb.set_traceps;#=MOO*E$&&&&&r0cV|jr!tj|dSdSr)rrrset_continuers r/rz"_OutputRedirectingPdb.set_continuevs5	'G  &&&&&	'	'r0ctj}|jt_	tjj|g|R|t_S#|t_wxYwr)rGrrrrtrace_dispatch)rargssave_stdouts   r/rz$_OutputRedirectingPdb.trace_dispatch|sKjZ
	%7)$6666$CJJCJ$$$$sAAr)r?rrrrrrrr0r/rrbsZ
'''''''%%%%%r0rctj|std|z|drt	dtjj|d}t|dr+t
j|j
d}n|jdkrvttjdkrLtjddkr6t
jtjdd}nt
j}ntt|drM|jD]E}t
j||}t
j|r|cSFt	d	|jzt
j||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__))r@rArKr
ValueErrorospathjoinrr]rr?r,rGargvcurdirrexists)rL	test_pathbasedir	directoryfullpaths     r/rYrYsF##:/&8999C  NLMMMys335Ivz"",'--003	J	&	&sx==??sx{b00gmmCHQK003GGiGG6:&&	$#_
$
$	7<<	9==7>>(++$#OOO$3!?+,,	,
7<<+++r0c(eZdZ			ddZdZdZdS)rNr#c|ds|dz
}|r|ds|dz
}||ds|dz
}||_||_||_||_|i}||_||_dSr|)r~sourcerlinenorloptionsexc_msg)rrrrrrlrs       r/rzExample.__init__st$$	dNF	

d++	DLDw'7'7'='=tOG	?bGr0ct|t|urtS|j|jkoO|j|jko?|j|jko/|j|jko|j|jko|j|jkSr)typeNotImplementedrrrrlrrrothers  r/__eq__zExample.__eq__s::T%[[((!!{el*-yEJ&-{el*-{el*-|u},	-
|u},	-r0c\t|j|j|j|j|jfSr)hashrrrrlrrs r/__hash__zExample.__hash__s.T[$)T[$+\#$$	$r0)Nr#r#N)r?rrrrrrr0r/rrsV!DEF$	-	-	-$$$$$r0rc.eZdZ	dZdZdZdZdZdS)rc	||_||_||_||_||_||_dSr)examples	docstringcopyr7r.r`r)rrr7r.r`rrs       r/rzDocTest.__init__s?	!
"ZZ\\
	 
r0ct|jdkrd}n2t|jdkrd}ndt|jz}d|jjd|jd|jd	|jd
|dS)Nr#zno examplesr)z	1 examplez%d examples<rhz from r (z)>)r,r	__class__r?r.r`r)rrs  r/__repr__zDocTest.__repr__st}""$HH


1
$
$"HH$s4='9'99H(((DMMM4;;;B	Cr0ct|t|urtS|j|jkoO|j|jko?|j|jko/|j|jko|j|jko|j|jkSr)rrrrr7r.r`rrs  r/rzDocTest.__eq__*s::T%[[((!!}.+~0+zU[(+yEJ&+}.	+
{el*	+r0cPt|j|j|j|jfSr)rrr.r`rrs r/rzDocTest.__hash__5s!T^TY
t{KLLLr0ct|tstS|j|jnd}|j|jnd}|j|j|t
|f|j|j|t
|fkS)Nr)rBrrrr.r`id)rrself_lno	other_lnos    r/__lt__zDocTest.__lt__9sv%))	"!!"&+"94;;r$)L$<ELL"	DM8RXX>U^Y5		BC	Dr0N)r?rrrrrrrrr0r/rrso.	C	C	C	+	+	+MMMDDDDDr0rcNeZdZ	ejdejejzZejdejejzejzZ	ejdj
ZddZdZ
ddZdZejd	ejZd
ZejdejZdZd
ZdZdS)ra
        # Source consists of a PS1 line followed by zero or more PS2 lines.
        (?P<source>
            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line
            (?:\n           [ ]*  \.\.\. .*)*)  # PS2 lines
        \n?
        # Want consists of any non-blank lines that do not start with PS1.
        (?P<want> (?:(?![ ]*$)    # 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<hdr> Traceback\ \(
            (?: most\ recent\ call\ last
            |   innermost\ last
            ) \) :
        )
        \s* $                # toss trailing whitespace on the header.
        (?P<stack> .*?)      # don't blink: absorb stuff until...
        ^ (?P<msg> \w+ .*)   #     a line *starts* with alphanum.
        z^[ ]*(#.*)?$<string>c	|}||dkr4dfd|dD}g}d\}}|j|D],}||||||d||z
}|	|||\}}}	}
|
|sK|t||	|
|t|
dz|||d||z
}|}.|||d|S)Nr#r}c$g|]}|d
Srr).0l
min_indents  r/
<listcomp>z'DocTestParser.parse.<locals>.<listcomp>s!KKK1*++KKKr0r#r#rl)rrlr)
expandtabs_min_indentrr_EXAMPLE_REfinditerappendrcount_parse_example_IS_BLANK_OR_COMMENTrr,groupr)rstringr.outputcharnormrrrrrs           @r/parsezDocTestParser.parsevs	""$$%%f--
>>YYKKKKT8J8JKKKLLF!**622		AMM&		!12333fll4;;;F((D&99
-VWdG,,V44
7

wvtW+1+5c!''(:K:K6L6L+L,3 5 5 5777

fll4AEEGG<<<FUUWWFF

fVWWo&&&
r0cT	t||||||||Sr)rget_examples)rrr7r.r`rs      r/get_doctestzDocTestParser.get_doctests8	t((66Xvv77	7r0cD	d|||DS)Nc<g|]}t|t|Sr)rBr)rxs  r/rz.DocTestParser.get_examples.<locals>.<listcomp>s6+++aa))++++r0)r)rrr.s   r/rzDocTestParser.get_exampless5		++4::fd33+++	+r0c	H
	t|d
|dd}||
||||ddd
zdz||d
fd|D}|d}|d}t|dkrt
jd	|d
r|d
=||d
z||t|zd
fd|D}|j|}|r|d}nd}|	|||}	||	||fS)
Nrlrr}r)rhrc*g|]}|dzdS)rfNr)rslrls  r/rz0DocTestParser._parse_example.<locals>.<listcomp>s%AAAbBvaxyyMAAAr0rz *$rc$g|]}|d
Srr)rwlrls  r/rz0DocTestParser._parse_example.<locals>.<listcomp>s!;;;""VWW+;;;r0r)
r,rr_check_prompt_blank
_check_prefixrrimatch
_EXCEPTION_RE
_find_options)rrr.rsource_linesrr
want_linesrrrls          @r/rzDocTestParser._parse_examples		QWWX&&''wwx((..t44  vtVDDD<+SZ#-=tVLLLAAAALAAABB
wwvZZ%%
z??Q28FJrN#C#C2:s6z4!C$5$55	7	7	7yy;;;;
;;;<<
$$T**	ggennGGG$$VT6::wg--r0z#\s*doctest:\s*([^\n\'"]*)$c
	i}|j|D]}|ddd}|D]\}|ddvs|ddt
vrt
d|dzd|d|t
|dd}|dd	k||<]|r-||rt
d|d|d
||S)Nr),rhr#z+-line z of the doctest for z has an invalid option: +z4 has an option directive on a line with no example: )_OPTION_DIRECTIVE_RErrreplacerr*rr)	rrr.rrroption_stringsoptionflags	         r/rzDocTestParser._find_optionss6	*33F;;		3		3AWWQZZ//S99??AAN(
3
31IT))122J&999$*&,Qhhhff&>???+6!"":6!'c!1


3	5t0088	5*$ffdddFF455
5r0z
^([ ]*)(?=\S)c	d|j|D}t|dkrt|SdS)Nc,g|]}t|Sr)r,)rrls  r/rz-DocTestParser._min_indent.<locals>.<listcomp>
sHHH63v;;HHHr0r#)
_INDENT_REfindallr,min)rrkindentss   r/rzDocTestParser._min_indentsJEHHT_-D-DQ-G-GHHHw<<!w<<1r0c	t|D]V\}}t||dzkr;||dzdkr,td||zdzd|d|||dzd|WdS)	NrfrUrhrr) of the docstring for z lacks blank after z: )	enumerater,r)rlinesrlr.rrrs       r/rz!DocTestParser._check_prompt_blanks	!''	@	@GAt4yyF1H$$fQh3)>)> j"((1***ddd"&vfQh"7"7"7"?@@@	@	@r0c		t|D]:\}}|r3||std||zdzd|d|;dS)Nrr)r%z& has inconsistent leading whitespace: )r&rr)rr'prefixr.rrrs       r/rzDocTestParser._check_prefix!s|	!''	;	;GAt
;DOOF33
; j"((1***dddDD":;;;	;	;r0N)r)r?rrricompile	MULTILINEVERBOSErDOTALLrrrrrrrrrr rrrrr0r/rrFsD"*\BJ
&((K,BJ Z",
&
244M&2:o66<%%%%N
7
7
7++++*.*.*.f&2:&D&(l448,bl;;J@@@	;	;	;	;	;r0rcVeZdZ	deddfdZddZdZdZdZd	Z	d
Z
dS)rFTc@	||_||_||_||_dSr)_parser_verbose_recurse_exclude_empty)rverboseparserrecurse
exclude_emptys     r/rzDocTestFinder.__init__:s,	

+r0Nc		|2t|dd}|tdt||durd}n|tj|}	tj|}|s-tj|}|d|ddzdksd}|d}nH|tj||j	}ntj|}|sd}n#t$rd}YnwxYw||i}n.|j	}n|}|||d|vrd|d<g}|
||||||i||S)Nr?zHDocTestFinder.find: name must be given when obj.__name__ doesn't exist: Fr#z<]>r)r5rrr@	getmodule
getsourcefilegetfile	linecachegetlines__dict__rKrupdate_findsort)	robjr.rLr7
extraglobsrortestss	         r/rzDocTestFinder.findPs!	F<3
D11D| j"&s)))".///U??FF
^&s++F
	((--D
?s++AwtBCCy(E11$4|#%$-#5dFO#L#LLL$-#5d#;#;L#(#'L+	 	 	 LLL	 0=~,,..JJLLE!LL$$$U"" *E*

5#tV\5"EEE
	

sCC! C!cL	|dStj||tj|uStj|r|j|juStj|stj|rBt|dr
|jj	}nt|dr|j	}ndS|j
|kStj|r|j
|j	kSt|dr|j
|j	kSt|trdStd)NT__objclass__rz"object must be a class or function)r@r:
isfunctionr?__globals__ismethoddescriptorismethodwrapperr]rGrr?isclassrBpropertyr)rrLobjectobj_mods    r/_from_modulezDocTestFinder._from_modules@	>4

v
&
&
2W.v6666


'
'	C?f&888(00	C%f--	Cv~..
 -8..
 +t?g--
_V
$
$	C?f&777
V\
*
*	C?f&777

)
)	C4ABBBr0c|	|}	tj|}n#t$rYnwxYwtj|Sr)r@unwrapr	isroutine)rrC
maybe_routines   r/_is_routinezDocTestFinder._is_routinesU	
	#N=99MM			D	 ///s
''c
	|jrtd|zt||vrdSd|t|<||||||}|||tj|r|jr|j	D]f\}	}
|d|	}	|
|
stj|
r1|||
r|
||
|	||||gtj|r|jrt|di	D]\}	}
t|	t st#dt%|	tj|
s\tj|
sHtj|
s4t|
t st#dt%|
|d|	}	|
||
|	||||tj|r|jr|j	D]\}	}
t|
t(t*fr|
j}
tj|
s)tj|
st|
t.r8|||
r"|d|	}	|
||
|	||||dSdSdS)NzFinding tests in %sr)r__test__z3DocTestFinder.find: __test__ keys must be strings: z^DocTestFinder.find: __test__ values must be strings, functions, methods, classes, or modules: z
.__test__.)r1printr	_get_testrr@rAr2r?itemsrUrLrPrAr5rBrCrrrSstaticmethodclassmethod__func__rM)rrErCr.rLrr7seentestvalnamevals           r/rAzDocTestFinder._findsc	=	0'$.///c77d??FRWW
~~c4EELLC  	,T]	, # 2 2 4 4
,
,%)TT773%%c**,goc.B.B,%%fc22,JJuc7FL$d,,,C  	(T]	( 'Z < < B B D D

(

(!'3//7$*&*7mmm&6777 )#..3'/#2F2F3(--31;C1E1E3$*'+3iii&2333/3ddGG<

5#w $((((?3	,DM	, # 2 2 4 4
,
,cL+#>??',C&s++,ws/C/C, h//,''44,*.ww7GJJuc7FL$d,,,	,	,	,	,
,
,r0c	t|tr|}nP	|jd}n+|j}t|tst|}n#ttf$rd}YnwxYw|||}|jr|sdS|d}n0t|ddp|j}|dddkr
|dd}|j	
|||||S)Nrr.pycr)rBrC__doc__rKr\_find_linenor3r5r?r0r)	rrCr.rLr7rrrr`s	         r/rYzDocTestFinder._get_tests!	c3	II
;& "II #I%i553$'	NN	~.


			
""355	y	4>HHvz488KFOH}&&#CRC=|''	5$(0&::	:s5AA'&A'c
L	d}t|dd}tj|r|d}tj|rl|j|dSt	jdt	jt|ddz}t|D]\}}||r|}ntj	|r|j
}tj|rt|ddr|j}tj
|r|j}tj|r|j}tj|r
|jdz
}|Z||dzSt	jd}t'|t)|D]!}|||r|cS"dS)Nrer#z^\s*class\s*%s\br?-r)z(^|.*:)\s*\w*("|\'))r5r@rArLrir*escaper&rismethodr]rH__code__istracebacktb_frameisframef_codeiscodeco_firstlinenoranger,)rrCrrrpatrrs        r/rfzDocTestFinder._find_linenoAs	
CD11	C  	Y%:F
?3	I$9#t*0YwsJ'D'DEEFGGC$\22

499T??FE
C  4#c""	wsIt'D'D	,Cs##73<S?31sz>#	,'!+F#ax*344CL(9(9::
"
"99\&122"!MMM"tr0NNNN)r?rrrrrrPrUrArYrfrr0r/rr1s %]]__T,,,,,ddddLCCC:	0	0	0;,;,;,z$:$:$:L22222r0rceZdZ	dZddZdZdZdZdZd	Z	d
Z
dZej
dZdd
ZddZddZdZdS)rzF**********************************************************************Nr#c	|p
t|_|dtjv}||_||_||_d|_d|_i|_	t|_dS)N-vr#)r_checkerrGrr1optionflagsoriginal_optionflagstriesfailures_name2ftrz_fakeout)rcheckerr4rys    r/rzDocTestRunner.__init__si	  2=??
?ch&G
&$/!


"


r0c	|jrf|jr:|dt|jzdzt|jzdS|dt|jzdzdSdS)NzTrying:
zExpecting:
zExpecting nothing
)r1rrmr)rrr_examples    r/report_startzDocTestRunner.report_starts	=	+|
+K''."9"99"#%,W\%:%:;<<<<<K''."9"99)*+++++	+	+r0c0	|jr
|ddSdS)Nzok
)r1rrr_rrs     r/report_successzDocTestRunner.report_successs.	=	CKKKKK		r0c	|||||j|||jzdSr)_failure_headerrxoutput_differenceryrs     r/report_failurezDocTestRunner.report_failures^		D  w//M++GS$:JKK
L	M	M	M	M	Mr0c	||||dztt|zdS)NzException raised:
)rrmrxrrr_rrss     r/report_unexpected_exceptionz)DocTestRunner.report_unexpected_exceptions`		D  w//!
"$+,@,J,J$K$K
L	M	M	M	M	Mr0c|jg}|jrL|j|j|j|jzdz}nd}|d|jd|d|jn(|d|jdzd|j|d|j}|t
|d|S)	Nr)?zFile "", line , in zLine zFailed example:r})DIVIDERr`rrr.rrmr)rr_rrrrs      r/rzDocTestRunner._failure_headers|n=	I{&7>+Ew~59JJJ


vvvtyy:
;
;
;
;
JJJ7>!+;+;+;TYYGHHH

$%%%

76??###yy~~r0c
	dx}}|j}td\}}}	|jj}
t	|jD]\}}|jtzo|dk}
||_|jrC|jD])\}}|r|xj|zc_|xj|zc_*|jtzr||dz
}|
s|
|||d|j|fz}	tt|j|d|d|j|jd}n=#t$$rt'j}|jYnxYw|j}|jd|}||
|j||jr|}n t3j|dd}t7|dt8r`|djd|djd	|djdft?fd
t	|D}||d}d |}|
s|tC|z
}|j"|	}n\|
|j"||jr|}nB|jtFzr3|
tI|j"tI||jr|}||ur|
s|%||||nG||ur |
s|&|||||dz
}n#||	ur|
s|'|||||dz
}|r|jtPzrn||_|)|||tU||S)Nr#rUr)z<doctest %s[%d]>singleTr<rrc3LK|]\}}||VdSr)r)rindexrexception_line_prefixess   r/	<genexpr>z&DocTestRunner.__run.<locals>.<genexpr>isN))'E4??+BCC)))))))r0r)+ryrrrxcheck_outputr&rr
rrZrrr.execr*rr7debuggerrKeyboardInterruptrGrsr~rrrrrpformat_exception_only
issubclassSyntaxErrorrrnextrrxrrrrrrr_DocTestRunner__record_outcomer')rr_compileflagsrr|r{rzSUCCESSFAILUREBOOMcheck
examplenumrquiet
optionflagrar`	exceptionroutcomeformatted_ex
exc_msg_indexrrs                       @r/__runzDocTestRunner.__runs	5 $/!&q$
*$-T]#;#;o	o	J%(AA"\
 4D
8)0)>)>)@)@88%Z8((J6(((((ZK7((($&

QJE
6!!#tW555
*TY
,CCH


-WW^Xx)41126*>>>
**,,, 		$



-LNN	
**,,,,,-((**CM""1%%%G 5sD,<==&%G )>	"1"
NilK88@%Q<4777$Q<2QQYq\5NQQQ/+%)))))+4\+B+B)))%%M
$0
#?L'',//;/	:::C?*"GGU7?GT5EFF*%GG%(??*u5goFF5g>>!-//*#*'!!A''T7C@@@G##A''T7C@@@A
D@44S$5>@@@A

D,y8
0	
dHe4448U+++s
(AD//8E)c	|j|jd\}}||z||zf|j|j<|xj|z
c_|xj|z
c_dS)Nr)r}r4r.r|r{)rr_rdtf2t2s      r/__record_outcomezDocTestRunner.__record_outcomesc	""49e44B$%bD!B$<
di 





a



r0z.<doctest (?P<name>.+)\[(?P<examplenum>\d+)\]>$cF|j|}|rp|d|jjkrM|jjt
|d}|jdS|	||S)Nr.rTkeepends)
%_DocTestRunner__LINECACHE_FILENAME_RErrr_r.rintr
splitlinessave_linecache_getlines)rr`module_globalsrrs     r/__patched_linecache_getlinesz*DocTestRunner.__patched_linecache_getliness(..x88	JDIN22i(QWW\-B-B)C)CDG>,,d,;;;//.IIIr0Tc"	
	||_|t|j}tj
|/
j			dkr
j}n	
fd}|jt_tj	}tj}t
|_
|j
|j
jt_tj|_|jt_tj}tjt_	||||
t_|t_tj||jt_|t_|r%|jddl}d|_SS#
t_|t_tj||jt_|t_|r$|jddl}d|_wxYw)Nutf-8czt|d}|dS)Nbackslashreplace)rCencodewrite)rkrXrs r/rzDocTestRunner.run.<locals>.outs;AHHX/ABBHMMA%%a(((((r0r#)r_r;r7rGrrXlowerrr~gettracerrrrresetr=r>r*_DocTestRunner__patched_linecache_getlinesdisplayhook__displayhook___DocTestRunner__runsettraceclearbuiltins_)rr_rrclear_globs
save_tracesave_set_tracesave_displayhookrrXrs         @@r/runzDocTestRunner.runs	&	0<<Lj;"+H8>>#3#3w#>#>!'))))))]
\^^
-k::


/
(1'9$!>	?-	"::dL#66$CJ*CML$$$!%!=I.CO
"
  """!


"%CJ*CML$$$!%!=I.CO
"
  """!
!!!!s
FA1Hc	||j}g}g}g}dx}}|jD]c}|\}\}	}
||
z
}||	z
}|
dkr||0|	dkr|||
fN||d|r|rFt	t|d||D]}t	d||rMt	t|d||D]\}}t	d||fz|ret	|jt	t|d||D]\}\}	}
t	d|	|
|fz|r9t	|dt|jd	t	||z
d
|d|rt	d|d
n|rt	dt||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.)	r1r}rZrrXr,rBrr')
rr4notestspassedfailedtotalttotalfrr.rdrthingrs
             r/	summarizezDocTestRunner.summarizesb		?mG$$&&
	!
	!ALD&1aaKFaKFAvvt$$$$a

ay****

a    
	?
(c'll$9:::$((E%''''
?c&kk#<===


$*??LE5,u~=>>>>	;$,#f++4555KKMMM!'
;
;
v1)Q5M9::::	D&*c$-&8&8(CCC&6/<CCC	"%v{;;;;
	".!!!66***r0c|j}|jD](\}\}}||vr||\}}||z}||z}||f||<)dSr)r}rZ)rrdr.rdrrrs        r/mergezDocTestRunner.merge5sqM!N0022				LD&1aqyy
4BFFdAdGG				r0)NNr#rNNT)r?rrrrrrrrrrrrir*rrrrrrr0r/rrys6rG$$$$H+++MMMMMM(L,L,L,\)bj*FGGJJJJD"D"D"D"R4+4+4+4+rr0rc(eZdZ	dZdZdZdZdS)rcL	t|dddS)NASCIIr)rCr)rrks  r/_toAsciizOutputChecker._toAsciiJs(	188G%788'BBBr0cP	||}||}||krdS|tzs||fdkrdS||fdkrdS|tzsNtjdtjtzd|}tjdd|}||krdS|tzrVd|	}d|	}||krdS|tzrt||rdSdS)	NT)zTrue
z1
)zFalse
z0
z(?m)^%s\s*?$rz(?m)^[^\S\n]+$rhF)rrrrirjriBLANKLINE_MARKERrrrrrrrrrys    r/rzOutputChecker.check_outputPsN	mmC  }}T""$;;444	Dz...tDz///t33	6/BI6F,G,GGd$$D&*B44Cd{{t
--	((399;;''C88DJJLL))Dd{{t!	tS))
tur0c|ttztzzsdS|tzrdS|ddko|ddkS)NFTr}r<)r
rrrrs    r/_do_a_fancy_diffzOutputChecker._do_a_fancy_diffsil*+*+,	5%	4zz$!#;		$!(;;r0c\	|j}|tzstjdt|}||||r|d}|d}|tzr1tj	||d}t|dd}d}n|tzr1tj||d}t|dd}d}nN|tzrDtjtj}	t|	||}d	}d
|zt#d|zS|r$|r"dt#|d
t#|S|rdt#|zS|rdt#|zSdS)Nz(?m)^[ ]*(?=
)Trr<)nz#unified diff with -expected +actualz-context diff with expected followed by actual)charjunkzndiff with -expected +actualzDifferences (%s):
rz
Expected:
zGot:
zExpected:
%sGot nothing
zExpected nothing
Got:
%szExpected nothing
Got nothing
)rrrirjrrrr
difflibunified_difflistrcontext_diffrDifferIS_CHARACTER_JUNKcomparermr)
rrrryrr	got_linesdiffkindengines
          r/rzOutputChecker.output_differences	|33	C&*,<cBBC  sK88	I$77J55I\)

,+J	QGGGDzz!""~<|+	
,+J	QGGGDzz!""~F|+
, 1JKKKFNN:yAABB5)4/'"''$--2H2HHH	5C	5	5.5dmmmmWS\\\JJ
	5/'$--??
	5/'#,,>>44r0N)r?rrrrrrrr0r/rrBsYCCC<<<~<<<.,5,5,5,5,5r0rceZdZ	dZdZdS)rc0||_||_||_dSr)r_rr)rr_rrs    r/rzDocTestFailure.__init__s	r0c*t|jSrrCr_rs r/__str__zDocTestFailure.__str__49~~r0Nr?rrrrrr0r/rrs7	
r0rceZdZ	dZdZdS)rc0||_||_||_dSr)r_rrs)rr_rrss    r/rzUnexpectedException.__init__s	 


r0c*t|jSrrrs r/rzUnexpectedException.__str__rr0Nrrr0r/rrs7	!!!
r0rc$eZdZ	ddZdZdZdS)rNTcxt||||d}|r|j|S)NF)rrr7r)rr_rrrrs      r/rzDebugRunner.runUs>dD,UCC	Jr0c$t|||r)rrs     r/rz'DebugRunner.report_unexpected_exception[s!$:::r0c$t|||r)rrs     r/rzDebugRunner.report_failure^sT7C000r0r)r?rrrrrrr0r/rrsMXt;;;11111r0rTFc		|tjd}tj|std|||j}t|}	|rt||}
nt||}
|	
||||D]}|
||r|
t|
a
nt|
t|
j|
jS)Nrztestmod: module required; )r7r4ryr7rD)rGrHr4r@rArKr?rrrrrrmasterrr'r|r{)rr.r7r4reportryrDraise_on_errorr7finderrunnerr_s            r/rrjs!>D	y
KOOJ''A?i!!=>>>|z
7
7
7FIW+FFFwKHHHAt5ZHH

4

~Vv555r0cZ	|r|stdt||||pd\}}|tj|}|i}n|}|||d|vrd|d<|	rt||}
nt||}
|
	||||d}|
||r|
t|
ant
|
t|
j|
jS)N8Package may only be specified for module-relative paths.rr?rrr#)rrerrbasenamerr@rrrrrrrr'r|r{)r`rbr.rar7r4rryrDr	r5rXtextrr_s               r/rrsbK\,,+,,	,$Hg$,$799ND(|w))
}


Z   &jIW+FFFwKHHHdE41==D
JJt

~Vv555r0NoNamec	t|d}t||}||||D]}|||dS)NF)r4r6r)r7)r)rrrr)	rdr7r4r.rryr
rr_s	         r/rrMsq 7E
:
:
:F
7
D
D
DFAt51144

4l
333344r0cV	|tz|krtd|t}|a|S)NzOnly reporting flags allowed)rr_unittest_reportflags)r8olds  r/rrjs:8	E))7???
C!Jr0cdeZdZ		ddZdZdZdZdZdZd	Z	d
Z
dZdZe
jZd
ZdS)DocTestCaser#Nctj|||_||_|j|_||_||_	||_
dSr)unittestTestCaser_dt_optionflags_dt_checkerr7r	_dt_globs_dt_test	_dt_setUp_dt_tearDown)rr_rysetUptearDownrs      r/rzDocTestCase.__init__sZ	""4(((*"**
$r0cP|j}|j||dSdSr)rrrr_s  r/r zDocTestCase.setUps1}>%NN4     &%r0c|j}|j|||j|j|jdSr)rrr7rr@rr#s  r/r!zDocTestCase.tearDownsZ}(d###	

$.)))))r0c|j}tj}t}|j}|t
zs
|tz}t||jd}	d|_	|
||jd\}}|t_n#|t_wxYw|r:||
|dS)NFryrr4zF----------------------------------------------------------------------)rr)rrGrr$rrrrrrrrfailureExceptionformat_failurerr)rr_rnewryrr|r{s        r/runTestzDocTestCase.runTests}jjj*o-	1
00K;'+'7HHH	#FN$jj#))88OHeCJJCJ	M''(;(;CLLNN(K(KLLL	M	Ms'B		Bc
|j}|jd}n
d|jz}d|jddd}d|jd|jd|d|d	|
S)
Nzunknown line numberz%srrFailed doctest test for 	
  File "rrz

)rrrr.rr`)rerrr_rlnames     r/r(zDocTestCase.format_failures|};*FFDK'F--bcc233999dmmmVVVUUUCCA	r0c	|t|j|jd}||jd|dS)NFr&)r)r rrrrrr!)rrs  r/r"zDocTestCase.debugsd?	B	

)=%)%5uFFF

4=e
444

r0c|jjSrrr.rs r/rzDocTestCase.id	s
}!!r0ct|t|urtS|j|jko?|j|jko/|j|jko|j|jko|j|jkSr)rrrrrrrrs  r/rzDocTestCase.__eq__	s~::T%[[((!!}.5#u'<<5~05 E$6655#44		5r0cPt|j|j|j|jfSr)rrrrrrs r/rzDocTestCase.__hash__$	s-T)4>4;L%'((	(r0c|jjd}|ddd|dddS)Nrrr))rr.rr)rr.s  r/rzDocTestCase.__repr__(	sG}!'',, HHHchhtCRCy&9&9&9&9::r0c d|jjzS)Nz	Doctest: r2rs r/shortDescriptionzDocTestCase.shortDescription.	sT]///r0)r#NNN)r?rrrr r!r*r(r"rrrrrNrr8rr0r/rrsAE	%	%	%	%!!!***MMM0


FFFP"""555(((;;;nG00000r0rc*eZdZdZdZdZdZeZdS)SkipDocTestCasecJ||_t|ddSr)rLrr)rrLs  r/rzSkipDocTestCase.__init__2	s%T4(((((r0c0|ddS)Nz-DocTestSuite will not work with -O2 and above)skipTestrs r/r zSkipDocTestCase.setUp6	s

EFFFFFr0cdSrrrs r/	test_skipzSkipDocTestCase.test_skip9	r0c d|jjzS)NzSkipping tests from %s)rLr?rs r/r8z SkipDocTestCase.shortDescription<	s'$+*>>>r0N)r?rrrr r?r8rrr0r/r:r:1	sT)))GGG


???GGGr0r:ceZdZdZdS)
_DocTestSuitecdSrr)rrs  r/_removeTestAtIndexz _DocTestSuite._removeTestAtIndexD	r@r0N)r?rrrErr0r/rCrCB	s#




r0rCc"	|t}t|}||||}|sGtjjdkr2t
}|t||S|	t
}|D]h}t|jdkr|js&|j
}|dddkr
|dd}||_|t|fi|i|S)Nrr<r#rcrdr)rrNrrGr8optimizerCaddTestr:rBr,rr`rr)	rLr7rDtest_finderrrEsuiter_r`s	         r/rrH	s!F#oo
v
&
&FV5ZHHESY'!++


of--...	JJLLLOOE44t}""}	%H}&&#CRC=$DM


k$22'223333Lr0c eZdZdZdZdZdS)DocFileCasecfd|jjdS)Nrr)rrr.rrs r/rzDocFileCase.id	s'xx
*0055666r0c|jjSr)rr`rs r/rzDocFileCase.__repr__	s
}%%r0c@d|jjd|jjd|S)Nr,r-z", line 0

)rr.r`)rr.s  r/r(zDocFileCase.format_failure	s.=%%%t}'='='=ssD	r0N)r?rrrrr(rr0r/rLrL	sA777&&&r0rLc$|i}n|}|r|stdt||||pd\}}d|vr||d<tj|}|||||d}	t|	fi|S)Nr
rrr#)rrrerrrrrL)
rrbrar7r5rXrdocr.r_s
          r/DocFileTestrR	s
}

,,+,,	,tWo'2744IC j7D!!Dc5$a88Dt''w'''r0c	t}|ddr%t|d|d<|D]"}|t	|fi|#|S)NrbTra)rCr4rNrHrR)pathskwrJrs    r/rr	s6n
OOE

vv&&=)"&&*;*;<<9
//


k$--"--....Lr0c	g}t|D]}t|trk||jdd|j}|r?|d|d|dddDz
}|d|dddDz
}|r.|ddkr"||r|ddk"|r/|ddkr#|d|r|ddk#d	|dzS)Nrz# Expected:cg|]}d|zS)z## rrrs  r/rz(script_from_examples.<locals>.<listcomp>;
sBBBq57BBBr0r}c,g|]}t|Sr)rrXs  r/rz(script_from_examples.<locals>.<listcomp>>
s0888%Q''888r0rr#)
rrrBrrrrrpopr)rkrpiecers    r/rr	s8rF&&q))88eW%%	8MM%,ss+,,,:D
C

m,,,BBDJJt,<,<SbS,ABBBB
88 %D 1 1#2# 6888
8FFVBZ3&&

VBZ3&&
VAY#%%

1


VAY#%%99Vt##r0c	t|}t|}fd|D}|std|d}t	|j}|S)Nc*g|]}|jk
|Srr-)rrr.s  r/rztestsource.<locals>.<listcomp>S
s ///!$Ar0znot found in testsr#)rNrrrrr)rLr.rEr_testsrcs `   r/r r J
s}v
&
&FOO  ((E////u///D534447D"4>22GNr0cH	t|}t|||dSr)rdebug_script)srcpmr7r^s    r/r!r!Z
s*>"3''G"e$$$$$r0c	ddl}|r|}ni}|r	t|||dS#tt	jd|jd}||dt	jdYdSxYw|jd	d|z||dS)Nr#r)T)rr<zexec(%r))
rrrrXrGrsrrinteractionr)rarbr7rps     r/r`r`_
s=JJJ

		C	3eU#####	3#,..#$$$&&&A
GGIII
MM$q 1222222"":#3UEBBBBBs
5A:B2cr	t|}t||}t|||jdSr)rNr r`r?)rLr.rbr^s    r/r"r"s
s?v
&
&F&&G"fo.....r0c"eZdZ	dZdZdZdS)
_TestClassc	||_dSrra)rras  r/rz_TestClass.__init__
s	r0c&	|jdz|_|S)Nr<rjrs r/squarez_TestClass.square
s	8q=r0c	|jSrrjrs r/r4z_TestClass.get
s	xr0N)r?rrrrlr4rr0r/rhrh
sFr0rhz
                      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 <BLANKLINE>:
                    >>> print('foo\n\nbar\n')
                    foo
                    <BLANKLINE>
                    bar
                    <BLANKLINE>
            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]
            )rhrzbool-int equivalencezblank linesellipsiszwhitespace normalizationc4ddl}|d}|ddddd	|d
ddtgd
|dddd|ddd|}|j}|j}d}|jD]}|t|z}|j	r
|tz}|D]}|dr|tj
|\}}tj
d|t#|dd}	tj
d=t%|	||\}
}nt'|d||\}
}|
rdSdS)Nr#zdoctest runner)descriptionrwz	--verbose
store_trueFz'print very verbose output for all tests)actiondefaulthelpz-oz--optionrzqspecify a doctest option flag to apply to the test run; may be specified more than once to apply multiple options)rrchoicesrsrtz-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))rrrtrorz file containing the tests to run)nargsrtz.pyr)rbr4ryr))argparseArgumentParseradd_argumentr*keys
parse_argsror4r	fail_fastrr~rrrrGinsertrDrr)rxr5r	testfilesr4rrr`dirnamerr|rs            r/_testr
s	OOO

$
$1A
$
B
BF
k,FHHH
j 3 8 8 : :BEGGG
mLFHHHc?AAAD	IlGG+//&v..~9U##	K!#

h 7 7GXHOOAw'''8CRC=))A!!W'JJJKHaa"8U-4'KKKKHa	11	1r0r)r<)rf)	NNNNTr#NFF)FrNr#rt)FN)F)S
__docformat____all__r2rr@r=rrrirGrprior$r%collectionsr&r'r*rrrrrrrr	r
rrr
rrrrr;rNrSrermrxrzrrrrrrYrrrrrr	Exceptionrrrrrrrrrrrr:	TestSuiterCrrLrRrrr r!r`r"rhrWrr?exitrr0r/<module>rsS%N&
+++Z				



				



22222222""""""j(:;;.OOO-,-EFF++,CDD**+ABBz**6""--.GHH*)*()	
,,#">22"">22"">22//0KLL,,	  --	!&


>>>>&DDD"""$////			        ///b4"%"%"%"%"%CG"%"%"%J , , ,\B$B$B$B$B$B$B$B$HGDGDGDGDGDGDGDGDZd;d;d;d;d;d;d;d;VBBBBBBBBP
GGGGGGGGRP5P5P5P5P5P5P5P5dY&)&e1e1e1e1e1-e1e1e1\
373705f6f6f6f6P(,$dU==??y6y6y6y6v:B:;44446!!!Ha0a0a0a0a0(#a0a0a0Fk"




H&


>>>>@+'+D==??((((4CCCRP$P$P$d %%%%
CCCC(	/	/	/	/********X%%( )Q0
0
f*
*
*
ZzCHUUWWr0