python (3.11.7)

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

eP\	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZmZddl
mZmZmZmZmZddlmZddl
mZddl
mZddlZddlZddlZejdkreded	d
gZed	d
gZddlZ ed
d
gZ!eej"d	<ed
d
gZ#eej"d	<ee!ee#iZ$e ej"d	<ej%edZ&eer4e'e(j)*ndee'e(j)*iZ+eer8ej,ej-ej.ej/ej0ej1ej2ej3ej4g	ndeej,ej-ej.ej/ej0ej1ej2ej3ej4g	iZ5dZ6ej7Z7ej8Z8ej9Z9ej:Z:ej;Z;ej<Z<ej=Z=ej>Z>e7e8e9e:e;e<e=e>gZ?eer&e(ndee(iZ@dZAdZBeCdkrejDdZEneFZEejGHeEpejIZJeJejKzeBzejKzZLejGMeLaNdZOePedrdndZQej%eQdZRejSeQdZTGddZUGddZVe&GddeVejWZXGddeVejWZYGd d!ZZe&Gd"d#eZejWZ[Gd$d%eZejWZ\Gd&d'Z]e&Gd(d)e]ejWZ^Gd*d+e]ejWZ_Gd,d-Z`e&Gd.d/e`ejWZaGd0d1e`ejWZbd2Zcd3ZdejeGd4d5Zfe&Gd6d7efejWZgGd8d9efejWZhGd:d;Zie&Gd<d=eiejWZjGd>d?eiejWZkGd@dAZle&GdBdCelejWZmGdDdEelejWZnGdFdGZoe&GdHdIeoejWZpGdJdKeoejWZqGdLdMZre&GdNdOerejWZsGdPdQerejWZtGdRdSZue&GdTdUeuejWZvGdVdWeuejWZwGdXdYZxe&GdZd[exejWZyGd\d]exejWZzGd^d_Z{e&Gd`dae{ejWZ|Gdbdce{ejWZ}GdddeZ~e&Gdfdge~ejWZGdhdie~ejWZeTe&GdjdkejWZGdldmZe&GdndoeejWZGdpdqeejWZGdrdsejWZGdtduejWZGdvdwejWZe&GdxdyejWZe
e&Gdzd{ejWZd|Zd}Zd~ZdadadadaddZeCdkrddlZejdZeddddedddde\ZZejredddSereddeejdSedddSdS)N)is_resource_enabledrequires_IEEE_754requires_docstringsrequires_legacy_unicode_capicheck_sanitizer)
TestFailedrun_with_localecpython_onlydarwin_malloc_err_warning
is_emscripten)import_fresh_module)threading_helper)warnings_helperdarwintest_decimaldecimal_decimal)fresh)blocked	fractionsztest requires C versionct|||tfdDdS)Nc3BK|]}|vr|n|VdSN).0sdexpecteds  E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_decimal.py	<genexpr>z!assert_signals.<locals>.<genexpr>Us9FFqqH}}qttad(FFFFFF)getattr
assertTrueall)clscontextattrrrs   `@rassert_signalsr(SsKANN3FFFFFAFFFFFGGGGGr!c|sdS|dttt|d}||dS)N	r)precroundingtraps)ContextROUND_HALF_EVENdictfromkeysSignals
setcontext)mDefaultTestContexts  rinitr6lsYff
t}}WQZ/K/K#LL#$$$$$r!decimaltestdata__main__F
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildcXeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
S)IBMTestCasesc
F|j|_|j|_dg|_tgd|_|jtkr|jd|jd|jd|jd|jd|jd|jd	|jd
|j	|j
|j|j|j
d|_idd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-id.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdS|_t t"t$t&t(t*t,t.dT|_|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj dU|_!dV|_"dS)WN#)scbx164scbx165expx901expx902expx903expx905lnx901lnx902lnx903lnx905logx901logx902logx903logx905powx1183powx1184powx4001powx4002powx4003powx4005powx4008powx4010powx4012powx4014pwsx803pwsx805powx4302powx4303powx4342powx4343pwmx325pwmx326)	precisionr,maxexponentminexponentclampandlogical_andapply_applyclassnumber_class
comparesigcompare_signalcomparetotal
compare_total
comparetotmagcompare_total_magcopycopy_decimalcopyabscopy_abs
copynegatecopy_negatecopysign	copy_sign	divideint
divide_intinvertlogical_invertiscanonicalis_canonicalisfinite	is_finite
isinfiniteis_infiniteisnanis_nanisnormal	is_normalisqnanis_qnanissigned	is_signedissnanis_snanissubnormalis_subnormaliszerois_zeromaxmagmax_magminmagmin_mag	nextminus
next_minusnextplus	next_plus
nexttowardnext_towardor
logical_orreduce	normalize
remaindernearremainder_nearsamequantumsame_quantum
squarerootsqrttoeng
to_eng_string
tointegralto_integral_valueto_integral_exact
to_sci_stringlogical_xor)tointegralxtoscixor)ceilingdownfloor	half_down	half_evenhalf_upup05up)clampedconversion_syntaxdivision_by_zerodivision_impossibledivision_undefinedinexactinvalid_contextinvalid_operationoverflowrounded	subnormal	underflow)r{r}rrrrrrrrr)#rr.r&readcontextignore_listsetskipped_test_idsCaddchange_precisionchange_rounding_methodchange_max_exponentchange_min_exponentchange_clamp
ChangeDictNameAdapter
ROUND_CEILING
ROUND_DOWNROUND_FLOORROUND_HALF_DOWNr/
ROUND_HALF_UPROUND_UP
ROUND_05UPRoundingDictClampedInvalidOperationDivisionByZeroInexactOverflowRounded	Subnormal	Underflow
ErrorNamesLogicalFunctionsselfs rsetUpzIBMTestCases.setUps|++--<//115!$"%"%"%"!"!H<1!%%i000!%%i000!%%j111!%%j111!%%j111!%%j111!%%i000!%%i000*.)>(,(C+/+C+/+C%)%6	88$1E-$1#H$1#N$1))9$1+?	$1
,,?$1#>
$1&j$1)$1'{$1($1%%5$1*.$1'{$1)$1$H$1 '{!$1$1"%Y#$1$'{%$1&%Y'$1(*.)$1*%Y+$1,%Y-$1.%Y/$10(1$12'{3$14)5$16!7$18%[9$1:,,<;$1<*.=$1>)?$1@$OA$1B))<C$1$1D+>$3"/I$1$1$1N*7&0'2+:+:)6$,&022(,|';151N040K37<3P26,2O'+|';/3|/L151N(,(='+|';)-)?)-)?AA
!1r!cJ	|jtkrx|jjdkrh|jd|jd|jd|j|S|j||S)N@Ti?i9)	rrMAX_EMAXr_unsafe_setprec_unsafe_setemax_unsafe_setemincreate_decimalDecimal)rvr&s   rread_unlimitedzIBMTestCases.read_unlimiteds	
<1!6)!C!C,,Z888,,Z888,,[999#221555<''7333r!ctrtjt|d5}|D]}|dddd}	||}C#|jj$r2}|d|j	j
zdz|zYd}~d}~wwxYw	ddddS#1swxYwYdS)Nutf-8)encodingz

zException "z" raised on line )
skip_expectedunittestSkipTestopenreplace	eval_linerDecimalExceptionfail	__class____name__)rfileflinet	exceptions      r	eval_filezIBMTestCases.eval_file'sM	$##
$
)
)
)	eQ
e
e||FB//77bAAet,,AA|4eeeIImI,?,HHK^^_ccdddddddde
e	e	e	e	e	e	e	e	e	e	e	e	e	e	e	e	e	e	es;/B=A+*B=+B,:(B'"B='B,,B==CCcP|ddkr|dddkr{|dsf|dddz|ddddz}n-|dd}|jD]}||dkrdS|sdSd|vr||S||S)	Nz -> r--z  --->:)find
startswithsplitstripreval_directive
eval_equation)rrignores   rrzIBMTestCases.eval_line6s66&>>Q1RaR5D==f9M9M=q!D(q!''--a0127%''
A

a &&((A&		Fvvf~~""#	)F
AXX&&q)))%%a(((r!cd|dD\}}|dkr|j|}n!	t|}n#t$rYnwxYw|j|d}||dS)Nc3bK|]*}|V+dSr)r
lowerrxs  rr z.IBMTestCases.eval_directive.<locals>.<genexpr>Is4@@a		))@@@@@@r!rr,cdSrr)argss r<lambda>z-IBMTestCases.eval_directive.<locals>.<lambda>Rs$r!)r	rint
ValueErrorrget)rrfunctvalues    rrzIBMTestCases.eval_directiveHs@@1773<<@@@uJ%e,EE
E





##E,>,>@@
esA
AAcntstjdkrdSj	|d}|d}|d}trtd|d|d}|dd}|d}|d}|dd}n'#tttf$r
jj
wxYwd	}	|jvrdSj||}
|
d
krdSt#j|
}g}d}d}
fd|Dt$jD]}djj|<D]}djj|<t)|D]D\}}|d
dzdkrd|
z
}
|
r	|dz|z}2||z}d}|	|}|
dvrt,rD]}djj|<	|j|d|d|nG#|$rYn@t$j$r)}d|d|d|dYd}~nd}~wwxYwdjj|<j|}n|j}||F|	|}t,rK|
dvrFD]}djj|<	||d|d|nG#|$rYn@t$j$r)}d|d|d|dYd}~nd}~wwxYwdjj|<fdt6jD}|D]}djj|<	||d|d|3#|$rY:t$j$r5}dt9|d|d|Yd}~~d}~wwxYw|D]}djj|<trtdj	t;||}|
jvr)t;t?tA|}nN#t$j$r%}d|d|Yd}~nd}~wtd|xYw!}|"tF"tF$||d|zdz|z$|d|zdzt;|zdS)Ng?rrzTest  )endrrc|dddd}|dddd}|dddd}|S)Nz''SingleQuotez""DoubleQuote'r")r)vals r	FixQuotesz-IBMTestCases.eval_equation.<locals>.FixQuotesisp++dM22::4OOC++c2&&..sB77C++mS1199-MMCJr!rescalercNg|]!}j|"Sr)rr)rrrs  r
<listcomp>z.IBMTestCases.eval_equation.<locals>.<listcomp>ys(JJJ!4?177995JJJr!r!)rrzDid not raise z in zRaised z when z	 disabledcg|]}|v|	Srr)retheirexceptionss  rr'z.IBMTestCases.eval_equation.<locals>.<listcomp>s#^^^AoI]I]aI]I]I]r!z; expected rzERROR:keyzIncorrect answer for z -- got zIncorrect flags set in )%TEST_ALLrandomr&clear_flagsr	r
DEBUGprintr	TypeErrorAttributeError
IndexErrorrrrrrr"r2r-	enumeratecountEXTENDEDERRORTESTrrrappendOrderedSignalstypestrrreval
getexceptionssortreprassertEqual)rrSidesLidrvalstempans
exceptionsr$fnamevalsconglomeratequoterir#rerrorr)ordered_errorsresultmyexceptionsr*s`                      @rrzIBMTestCases.eval_equationUs[	FMOOd22F  """	0GGDMMEa  &&((A1B
,grs++++aDJJLLEuHa  &&((AA$C122JJ>:6	0	0	0,//	0			&&&F $$UE22IFe,,JJJJzJJJ .	.	.I,-DLy))(	.	.I,-DLy))))		FAsyy~~!Q&&E	
"+c1C7"S(!	#A:::$6!06645*51M!E$,"="=a"@"@AAA!III%%%&KLLLL
 %!!! D&t|4555 III'(qq!!!UUU'4555555555
56*511L//22''4<88KKNNNNinn	..P!P!P(
.
.,-"5)EE4LLIII%%%CDDDD
Dt|,---III qq!!!UUU,---------
-."5))_^^^)E^^^N'

E

E,-"5)EE4LLIII%%%CDDDD
Dt|,333III#Awwww552333333333(
.
.,-"5))	&$%%%	&&F---Sf..//t|$	6	6	6III555!!455555555	(A))++d###&&&014zAFJ	L	L	L	
'!+j83|;L;LL	N	N	N	N	NsCD$D&-#I,,J03J0J++J0<MN!$N!8NN!&PQQ"+QQAST%TTc@fdtjDS)Nc8g|]}jj||Sr)r&flags)rr)rs  rr'z.IBMTestCases.getexceptions.<locals>.<listcomp>s(JJJaDL4Fq4IJJJJr!)r2rrs`rr=zIBMTestCases.getexceptionss$JJJJ74<0JJJJr!c|jtkr,|jjdkr|j|dS||j_dSNr)rrMAX_PRECr&rr+)rr+s  rrzIBMTestCases.change_precisionsJ<1!6)!C!CL((..... $DLr!c||j_dSr)r&r,)rr,s  rrz#IBMTestCases.change_rounding_methods (r!c|jtkr,|jjdkr|j|dS||j_dSrT)rrrUr&rEminrexps  rrz IBMTestCases.change_min_exponentJ<1!6)!C!CL((----- #DLr!c|jtkr,|jjdkr|j|dS||j_dSrT)rrrUr&rEmaxrYs  rrz IBMTestCases.change_max_exponentr[r!c||j_dSr)r&ra)rras  rrzIBMTestCases.change_clamps"r!N)r
__module____qualname__rrrrrrr=rrrrrrr!rr;r;sIK1K1K1Z444eee)))$~N~N~N@KKK%%%
)))$$$
$$$
#####r!r;ceZdZ	dZdZdZdZeee	j
edZdZ
dZd	Zd
ZedZdZd
ZdZdS)ExplicitConstructionTestcl|jj}|||ddS)N0rrr@rrs  rtest_explicit_emptyz,ExplicitConstructionTest.test_explicit_emptys6,&GGCLL11111r!cV|jj}|t|ddSr)rrassertRaisesr2rfs  rtest_explicit_from_Nonez0ExplicitConstructionTest.test_explicit_from_Nones*,&)Wd33333r!c	p|jj}|d}|t|d|d}|t|d|d}|t|d|d}|t|dt	dd	D]`}d
D][}t	ddD]H}|d
|z|zz}||}|t|t|I\adS)N-45{e	500000123-45rrd rr)rrr@r;range)rrrnsignrrKs       rtest_explicit_from_intz/ExplicitConstructionTest.test_explicit_from_intsQ,&
GBKKQ&&&
GIQ---
GCLLQ'''
GAJJQ%%%q"	5	5A
5
5r155A1q)A

A$$SVVSVV44445
5	5	5r!c
|jj}|jj}|jj}|t|dd|t|dd|t|dd|t|dd|t|dd|t|dd	|t|d
d|t|dd
|t|dd|t|dddD]9}dD]4}|t||dz|zd5:|5}d|j|<|||d|t|ddd|||d|||d|||d|||d|||d|||dddddS#1swxYwYdS)NrNaNrm45.3445e2z4.5E+3uglyz1.3E4 
z1.3E+4z  -7.89z-7.89z  3.45679  z3.45679z	1_3.3e4_0z1.33E+411_0_0_01000)rr u z	9.311E+28Txyz1234ryu1 2 3u 1 2 ru  z123z1_2_3)	rrrlocalcontextr@r;r-rir2)rrrrleadtrailcs       rtest_explicit_from_stringz2ExplicitConstructionTest.test_explicit_from_strings~,&<8|0	
WWR[[))5111	
WWT]]++T222	
WWW--..888	
WWV__--x888	
WWV__--u555	
WWZ00118<<<WWY//00':::WW]3344i@@@	
WW[1122J???WWY//00&9992	.	.D6
.
.  WWTK-?%-G%H%H!I!I!,....
.\^^	Hq(,AG$%.???i&#sCCC
.9JKKK.9OPPP
.BBB.HHH
.EEE
.GGG'	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	Hs#C
K::K>K>categorycFddl}|jj}|j}|d}|t
||d|t
||ddS)Nr9.999999)	_testcapirrr.unicode_legacy_stringr@r;r)rrrr&rs     rtest_from_legacy_stringsz1ExplicitConstructionTest.test_from_legacy_stringsMs	,&,&&((++J77WWQZZ*555W33A6677DDDDDr!c|jj}|d}|t|d|d}|t|d|d}|t|d|d}|t|d|d	}|t|d
|t
|d|t
|d|t
|d
|t
||dddf|t
|d|t
|d|t
|d|t
|d|t
|d|t
|d|t
|d|t
|ddS)Nrrrrdr)rvrrqrrrvrr}r	rrrr*rrrvrr-4.34913534E-17)rrFInfinity)rrrrr*r)rr)rrrrr)rrzwrong!)rrr)rr1)rrr)r)rrrNrr)r)rrr*rr)r)r
rr*rr)r)rrrarr)rrr@r;rirrrrs   rtest_explicit_from_tuplesz2ExplicitConstructionTest.test_explicit_from_tuplesYs7,&
G\##Q%%%
G^%%Q'''
G*,,Q)))
G:<<Q!2333
G\##Q,,,	
*g/CEEE	
*g/FHHH*g/GIII*g

OQ/OPPP	
*g/MOOO*g/GIII*g/HJJJ	
*g}>>>*g/IKKK*g/GIII*g/GIII*g/HJJJJJr!c|jj}|ddgdg}|t|d|dgddg}|t|d|gd}|t|d|dgddf}|t|ddS)Nrrdrrrrrrrr@r;rs   rtest_explicit_from_listz0ExplicitConstructionTest.test_explicit_from_lists,&GQQK  Q%%%GQ333S9::Q!2333G999::Q!2333GQ333S9::Q!233333r!cn|jj}|t|dd|t|dd||d|d||d|ddS)NrFrT)rrassertIsboolr@rfs  rtest_explicit_from_boolz0ExplicitConstructionTest.test_explicit_from_bools,&

d771::&&...

d771::&&---444

33333r!c|jj}|d}||}|t|d|d}||}|t|d|d}||}|t|d|d}||}|t|ddS)	Nrlrmrnrorprqrrdrrrrr)s    rtest_explicit_from_Decimalz3ExplicitConstructionTest.test_explicit_from_Decimals,&
GBKKGAJJQ&&&
GIGAJJQ---
GCLLGAJJQ'''
GAJJGAJJQ%%%%%r!c	~|jj}|d}|t|||t	|d||t
d||t
d||t
d|t	|t
dt	|d|t	|t
dt	|d|t	|t
dt	|d|t	|t
d	t	|d
tdD]\}tjdtj
d
zdz
z}||t
||]dS)N皙?90.1000000000000000055511151231257827021181583404541015625naninf-infr|r	-Infinity-0.0-0{Gz?@?)rrr@r:r;r#floatrrrwr.expovariate)rrrrKrs     rtest_explicit_from_floatz1ExplicitConstructionTest.test_explicit_from_floatsl,&GCLLa'***QK	M	M	Me--5577888e--99;;<<<f

..::<<===WWU5\\2233WWU^^,,	.	.	.WWU5\\2233WWZ0011	3	3	3WWU6]]3344WW[1122	4	4	4WWU6]]3344WWT]]++	-	-	-s	3	3A"4((FMOOc,AC,GHAQggajj 1 12222	3	3r!c	|jj}|jj}|jj}t	j|j}d|_|}|t|d|	}|t|d|
t|j	d|	d}|||||	d|	d|d}|t|d|	d}|t|d|t|	dd	|d
}|t|d|	d
}|t|d|d
}||}|t|d|	|}|t|dd|_d|j
|<dD]]}|	|}|t|||t!||^d|_d|j
|<|
||j	dd|_|t|	dd|t|	dd|t|	dd|t|	dd|
||j	d|
t"|j	d|
t|j	dd|
||j	d|
||j	dd|_|
||j	d |
||j	|d d!|j
|<|t|	d d	||j|d!|j|<|t|	|d d	||j|dS)"Nrrdinz457E+2456789z4.57E+5z3.14
r|rrz	-4.35E-17rnroz5.00E+8T)	lllirlz0E-017z0E-17rm-InfrNaN123r)rrrr5678z 123412_34NaN12345F)rrrrrn
getcontextr+r@r;rrir2assertIsInstancer-r#
isinstancerrrR)rrrrncrprevdecrs        r$test_explicit_context_create_decimalz=ExplicitConstructionTest.test_explicit_context_create_decimalsd,&<8,&
Yt|..00
1
1
GIIQ%%%Q%%%	
)R%6===
c""a)))**511**844	6	6	6
GHQ***h''Q+++	
R..x88995AAA
G:<<Q!2333DFFQ---')$$GGQ---g&&Q+++%)!"3	(	(A!!!$$AOOJq'22333SVVQ'''' '2#4d;;;R..x88997CCCR..t4455t<<<R..v6677EEER..x88998DDD	
*B,=uEEE*b&7III)R%6GGG*B,=wGGG*B,=wGGG*B,=zJJJ*B,=!'*--	/	/	/&+!"R..z::;;UCCC!12333%*!"R..wwz/B/BCCDDeLLL!1233333r!c	|jj}|j}|d}|t|||t
|d||td	||td
||td
|t
|tdt
|d|t
|tdt
|d|t
|tdt
|d|t
|td	t
|d
d|_tdD]f}tjd
tj
dzdz
z}||t||gdS)Nrz0.1000000000000000055511151231rrrr|rrrrdrrrr)rrr.rr@r:r;r#rrrr+rwr.r)rrrrrKrs      r'test_explicit_context_create_from_floatz@ExplicitConstructionTest.test_explicit_context_create_from_float#s,&
\
!
!
#
#c""a'***Q!ABBB))%,,77??AABBB))%,,77CCEEFFF))%--88DDFFGGGR..uU||<<==R..u5566	8	8	8R..uU||<<==R..z::;;	=	=	=R..uV}}==>>R..{;;<<	>	>	>R..uV}}==>>R..t4455	7	7	7s	=	=A"4((FMOOc,AC,GHAQb&7&7&:&: ; ;<<<<	=	=r!c|jj}dddd}|D]1\}}|t	|||2dS)Nrz	0.0000372z-NaN2400)u1u٠.٠٣٧٢e-٣u-nan౨౪౦౦)rritemsr@r;)rrtest_valuesinputrs     rtest_unicode_digitsz,ExplicitConstructionTest.test_unicode_digits;sw,&8C-7
 +0022	<	<OE8S00(;;;;	<	<r!N)rr_r`rgrjrzrr
rrignore_warningsDeprecationWarningrrrrrrrrrrrr!rrbrbs*@22244455566H6H6Hp!$_$.@AAAEEBA"!\E)K)K)KV
4
4
4444&&&.333.W4W4W4r===0	<	<	<	<	<r!rbceZdZeZdS)CExplicitConstructionTestNrr_r`rrrr!rrrFGGGr!rceZdZeZdS)PyExplicitConstructionTestNrr_r`Prrr!rrrIGGGr!rc4eZdZ	dZdZdZdZdZdZdS)ImplicitConstructionTestcz|jj}|ttdtdS)NzDecimal(5) + Nonerrrir2r<localsrfs  rtest_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NoneOs1,&)T+>IIIIIr!c|jj}|t|ddzd||ddz|ddS)Nrvrl50l2}rrrfs  rtest_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intSsk,&	
WWQZZ"_--t444l2GGL4I4IJJJJJr!cz|jj}|ttdtdS)NzDecimal(5) + "3"rrfs  rtest_implicit_from_stringz2ImplicitConstructionTest.test_implicit_from_string[1,&)T+=vxxHHHHHr!cz|jj}|ttdtdS)NzDecimal(5) + 2.2rrfs  rtest_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_float_rr!c|jj}||d|dz|ddS)Nrvrl2rerfs  rtest_implicit_from_Decimalz3ImplicitConstructionTest.test_implicit_from_DecimalcsE,&ggbkk1772;;?????r!c|jj}Gdd}|t||dd|t|d|d|t	dd|t	dd	|t	d
d|t	dd
|t	dd|t	ddgd}|D]\}t|fdt|fd|t	d|zdzdzdz|t	d|zdzdzdzdS)Nc>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
,ImplicitConstructionTest.test_rop.<locals>.Ec&dt|zS)Nzdivmod r;rothers  r
__divmod__z7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__ls 3u::--r!c&t|dzS)Nz rdivmodrrs  r__rdivmod__z8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__ns5zzJ..r!c&dt|zS)Nzlt rrs  r__lt__z3ImplicitConstructionTest.test_rop.<locals>.E.__lt__ps5zz))r!c&dt|zS)Nzgt rrs  r__gt__z3ImplicitConstructionTest.test_rop.<locals>.E.__gt__rrr!c&dt|zS)Nzle rrs  r__le__z3ImplicitConstructionTest.test_rop.<locals>.E.__le__trr!c&dt|zS)Nzge rrs  r__ge__z3ImplicitConstructionTest.test_rop.<locals>.E.__ge__vrr!c&dt|zS)Nzeq rrs  r__eq__z3ImplicitConstructionTest.test_rop.<locals>.E.__eq__xrr!c&dt|zS)Nzne rrs  r__ne__z3ImplicitConstructionTest.test_rop.<locals>.E.__ne__zrr!N)rr_r`rrrr
rrrrrr!rErks
.
.
.
/
/
/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*r!rrz	divmod 10z
10 rdivmodzDecimal(10) < E()zgt 10zDecimal(10) > E()zlt 10zDecimal(10) <= E()zge 10zDecimal(10) >= E()zle 10zDecimal(10) == E()zeq 10zDecimal(10) != E()zne 10))+__add____radd__)-__sub____rsub__)*__mul____rmul__)/__truediv____rtruediv__)%__mod____rmod__)z//__floordiv__
__rfloordiv__)z**__pow____rpow__c.dzt|zSNr;r)rrlops  rrz3ImplicitConstructionTest.test_rop.<locals>.<lambda>sc%jj0Hr!c.t|zdzSr(r)rrrops  rrz3ImplicitConstructionTest.test_rop.<locals>.<lambda>sE

S0@50Hr!zE()zDecimal(10)r;10)rrr@divmodr<setattr)rrroplistsymr)r+s     @@rtest_ropz!ImplicitConstructionTest.test_ropgs,,&	*	*	*	*	*	*	*	*$	
WWR[[11;???QQSS11<@@@122G<<<122G<<<233W===233W===233W===233W===


$	1	1MCcAsHHHHIIIAsHHHHIIIT%#+
"=>>"S[4/
1
1
1T-#"5"=>>!CZ%/
1
1
1
1	1	1r!N)	rr_r`rrrrrr1rr!rrrLs@JJJKKKIIIIII@@@0101010101r!rceZdZeZdS)CImplicitConstructionTestNrrr!rr3r3rr!r3ceZdZeZdS)PyImplicitConstructionTestNrrr!rr5r5rr!r5cXeZdZ	dZdZdZdZedddZdZ	d	S)

FormatTestc|jj}gd}|D]3\}}}|t||||4|t
|djddS)N))r)0E-15z0e-15)r)z2.3E-15z2.3e-15)r)z2.30E+2z2.30e+2)r)z2.30000E-15z2.30000e-15)r)z1.23456789123456789e40z1.23456789123456789e+40)r)1.5z1.5e+0)r)z0.15z1.5e-1)r)z0.015z1.5e-2)r)z0.0000000000015z1.5e-12)r)z15.0z1.50e+1)r)-15z-1.5e+1)r)rdz0e+0)r)0E10e+1)r)0.0z0e-1)r)0.000e-2).6er9z0.000000e-9)rArdz0.000000e+6)rArz9.999999e+0)rAz	9.9999999z1.000000e+1)rAz-1.23e5z-1.230000e+5)rAz
1.23456789e-3z1.234568e-3)rrdrd)rr>r>)r0E-2r?)rz0.00E-8z0.0000000000)rr<rd)rz3.2E132)rz3.2E2320)rz3.20E2rD)rz3.200E2z320.0)rz3.2E-6z	0.0000032).6fr90.000000)rEr<rF)rErdrF).0frdrd)rGr@rd)rG
3.141592653).1frH3.1)z.4frH3.1416)rErH3.141593)z.7frH	3.1415926)z.8frHrH)z.9frHz3.141592650)grdrd)rOr>r>)rOr<r=)Gr<z0E+1)rOz0E-5z0.00000)rOz0E-6rF)rOz0E-7z0e-7)rOz-0E2z-0e+2).0grHrI)z.0nrHrI)z.1grHrI)z.2grHrK)z.5grHrL)z.7grHrM)z.8grHrN)z.9grHrH)z.10grHrH)r r<0%)r 0E0rR)r z0E-1rR)r rBrR)r z0E-3z0.0%)r z0E-4z0.00%).3%rd0.000%)rT0E10rU)rTz0E-10rU)rTz2.34z234.000%)rTz1.234567z123.457%).0%1.23z123%)r)r|r|)r-NaN123rY)z+gNaN456z+NaN456)z.3eInfr)z.16frr)rQ-sNaNr\)r1.00r])6123   123)z<6r_z123   )z>6r_r`)z^6r_z 123  )z=+6r_z+  123)#<10r|z
NaN#######)raz-4.3z
-4.3######)z#<+100.0130z
+0.0130###)z#< 10rbz
 0.0130###)z@>10rz
@-Infinity)z#>5rr)z?^5r_z?123?)z%^6r_z%123%%)z ^6-45.6z-45.6 )z/=10rcz
-/////45.6)z/=+1045.6z
+/////45.6)z/= 10rdz
 /////45.6)z=10rz
-Infinity)z^16rz-Infinity)z>101.2345z
1.2345)z<10rez
1.2345),1234567z	1,234,567)rf123456123,456)rf1234512,345)rfrz1,234)rfr_r_)rf12rl)rfrr)rfrdrd)rfz-1234567z
-1,234,567)rf-123456-123,456)z7,rhri)z8,rh 123,456)08,rhz	0,123,456)z+08,rhz+123,456)z 08,rhro)rprmrn)z+09,rhz
+0,123,456)z07,1234.561,234.56)rprqrr)z09,rqz	01,234.56)z010,rqz
001,234.56)z011,rq0,001,234.56)z012,rqrs)z08,.1fz1234.5z01,234.5)rf
1.23456789rt)z,%z
123.456789z12,345.6789%)z,erhz
1.23456e+5)z,Erhz
1.23456E+5)rJrr)rJz-.0r)rJ-.01r)z.1f0.r>)z6.1frwz   0.0)rx-1.z  -1.0)rv-0.r>)rv.01r>)rvrur>)z.2frwr?)r|rzr?)r|z.001r?)r|z-.001r?)z.1erw0.0e+1)r}rzr~)z.1Erw0.0E+1)rrzr)zz.2e-0.001z-1.00e-3)zz.2grr)zz.2%rz-0.10%)zfz-0.0000z0.0000)rv
-00000.000001r>)rv-00000.r>)rv-.0000000000r>)r|rr?)r|rr?)r|rr?)rvz.090.1)rvz-.09z-0.1) z.0frzz 0)+z.0frzz+0)-z.0frzrd)rry-1)rryr)rryr)zz>6.1frzzzz-0.0)zz>z6.1frzzzzz0.0)zx>z6.1frzzxxx0.0)u
🖤>z6.1frzu🖤🖤🖤0.0)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%rz<<+Infinity%<<<)z>,%sNaN1234567zsNaN1234567%)z=10.10%rz
   NaN123%rs-020)rrr@formatrir2
__format__)rrrfmtrrNs      rtest_formattingzFormatTest.test_formattings,&GGGP*	>	>NCFVGGAJJ44f====	
)WWQZZ%:GDDDDDr!c|j5}t|_|t|jdddddddS#1swxYwYdS)Nrr|r?)rrrr,r@rrrctxs  r+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_roundingss
\
&
&
(
(	$C(CLVDL$8$8$B$BFKK"
$
$
$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$sA	A00A47A4cz|tt|jdddS)NrXfz)rirrrrrs rtest_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_formatys2*fdl.B.B6.J.JDQQQQQr!c		jj		ddlm}n%#t$rdYnwxYwfd}d?	fd	}d|gdd	d
}d	||gdd
}d	|gddd
}d
|ddd|gdd
}dd|gdddd
}|	d|d|	d|d|	d|d|	d|d|d|d|d|d|d|d|d|d|d|dd|d|dd |d|dd |d|dd!|d"|d#d$|d"|d%d$|d"|d&d'|d"|d(d)|d*|d&d+|d*|d(d+|d*|d,d-|d*|d.d/|d*|d0d/|d*|d1d2|d3|d(d4|d3|d,d4|d3|d.d4|d3|d0d5|d3|d1d6|d3|d7d6|d3|d8d9|d3|d:d;|	d<|d=d>dS)@NrCHAR_MAXlocale.CHAR_MAX not availablecfjtkrdd|Dn|S)Nrc,g|]}t|Srchrrs  rr'zCFormatTest.test_n_format.<locals>.make_grouping.<locals>.<listcomp>000qCFF000r!)rrjoin)lstrs r
make_groupingz/FormatTest.test_n_format.<locals>.make_groupings559\Q5F5F27700C000111COr!rxcjtkr|||S|||S)N)_localeconv)rrr)roverriderrrs   rget_fmtz)FormatTest.test_n_format.<locals>.get_fmtsO|q  wqzz,,S(;;;wqzz,,Sh,GGGr!.rrrrf
decimal_pointgrouping
thousands_seprr&rrrrs¿rs´z12.7z12,7z1-2&7i[z123,456,789	123456789z123 456 789lc}z123456-78-9012-3z.6nz
1.23457e+8z
1,23457e+8z
1&23457e+8r03nr04n05n0123406n00123490rk07nz012,34508nz	0,012,34509n010nz
00,012,345i@z1-2345-6z	01-2345-6z0-01-2345-6011n012nz00-01-2345-6013nz
000-01-2345-6-1.5020nu-0´000´000´000´001¿5Nrx)rrlocalerImportErrorskipTestdecoder@)
rrrren_USfr_FRru_RUcrazydotsep_widers
`        @r
test_n_formatzFormatTest.test_n_format|s
,&	;'''''''	;	;	;MM9:::::	;	P	P	P	P	P	H	H	H	H	H	H	H"&yyy11!"&z22 "%
iii00!"%
q!Q&9::!*0099%
iii00)0099	
%88&AAA%88&AAA%88&AAA%88'BBBE22MBBBE22K@@@E22MBBB668JKKKE599<HHHE599<HHHE599<HHHE599<HHH	
ue44f===ue44f===ue44g>>>ue44h???u55x@@@u55x@@@u55yAAAu55{CCCu55{CCCv66EEE66
CCC66
CCC66
CCC66DDD77GGG77GGG77HHH77III	
+vFFH	J	J	J	J	Js99LC_ALLps_AFc|jj}tjd}tjd}|dkr)|d|d|dkr)|d|d|t|ddd	dS)
Nrru٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z
100000000.123rxu100٬000٬000٫123)rrr
localeconvrrr@)rrrrs    r&test_wide_char_separator_decimal_pointz1FormatTest.test_wide_char_separator_decimal_points,&)++O<
)++O<
H$$MM,,2F=(,K,K
M
M
MH$$MM,,2F=(,K,K
M
M
M	
 8 8#>>9	;	;	;	;	;r!cGdd|jj}|d}||jj|j|d}||jj|jdS)NceZdZdZdS);FormatTest.test_decimal_from_float_argument_type.<locals>.Ac.t||_dSr)r:a_type)rrs  r__init__zDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__s"1ggr!Nrr_r`rrr!rArs#
&
&
&
&
&r!rg@E@*)rr
from_floatr@r)rrrs   r%test_decimal_from_float_argument_typez0FormatTest.test_decimal_from_float_argument_types	&	&	&	&	&$	&	&	&
LL-qx888
LL-qx88888r!N)
rr_r`rrrrr	rrrr!rr7r7s-PEPEPEd$$$RRRWJWJWJr_Xw'';;('; 99999r!r7ceZdZeZdS)CFormatTestNrrr!rrrrr!rceZdZeZdS)PyFormatTestNrrr!rrrrr!rcReZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
ArithmeticOperatorsTestc|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z
}|||d|dz
}|||ddS)N-11.122.2z11.1rvz-6.116.1rrr@r:rrd1d2rs     r
test_additionz%ArithmeticOperatorsTest.test_additions\,&
WW


WV__	
B000B000
FGGFOO,,,a$r((+++
FGGFOO,,,a$r((+++	bWWV__---	aWWV__-----r!c|jj}|d}|d}|||z
|d|||z
|d|dz
}|||d|t|t|d|z
}|||d|t|t|||z}|||d|dz}|||ddS)	Nrrz-33.3z33.3rvz-16.1rz-38.3rrs     rtest_subtractionz(ArithmeticOperatorsTest.test_subtractionsd,&
WW


WV__	
B 0 0111B000
FGGG,,---a$r((+++
FGGFOO,,,a$r((+++	bWWW--...	aWWW--.....r!c|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z}|||d|dz}|||ddS)N-5rIr;rvz-25z-75rrs     rtest_multiplicationz+ArithmeticOperatorsTest.test_multiplication1sZ,&
WT]]
WS\\	
B///B///
FGGENN+++a$r((+++
FGGENN+++a$r((+++	bWWU^^,,,	aWWU^^,,,,,r!c|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z}|||d|dz}|||ddS)	Nr2-2.5z-0.4rz-1.25z-0.8z-0.625rrs     r
test_divisionz%ArithmeticOperatorsTest.test_divisionMs^,&
WT]]
WS\\	
B000B000
FGGG,,---a$r((+++
FGGFOO,,,a$r((+++	bWWV__---	aWWX../////r!c|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z}|||d|dz}|||ddS)N5rrdrrrrrs     rtest_floor_divisionz+ArithmeticOperatorsTest.test_floor_divisionisZ,&
WS\\
WS\\	
R...R...
!GGGCLL)))a$r((+++
GGGCLL)))a$r((+++	r	WWS\\***	qWWS\\*****r!c|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z}|||d|dz}|||d	dS)
Nrr25rCr625r16807390625rrs     r
test_poweringz%ArithmeticOperatorsTest.test_powerings^,&
WS\\
WS\\	
R///R///
!GGGENN+++a$r((+++
GGGG,,---a$r((+++	r	WWT]]+++	qWWX../////r!c|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z}|||d|dz}|||ddSNrrrrrrrs     rtest_modulez#ArithmeticOperatorsTest.test_modulesZ,&
WS\\
WS\\	
B---B---
FGGCLL)))a$r((+++
FGGCLL)))a$r((+++	bWWS\\***	aWWS\\*****r!cp|jj}|d}|d}t||\}}|||d|||d|t	|t	||t	|t	|t|d\}}|||d|||d|t	|t	||t	|t	|td|\}}|||d|||d|t	|t	||t	|t	|dSr)rrr-r@r:)rrrrpqs      rtest_floor_div_modulez-ArithmeticOperatorsTest.test_floor_div_modules,&
WS\\
WS\\BAGGCLL)))GGCLL)))a$r((+++a$r((+++AAGGCLL)))GGCLL)))a$r((+++a$r((+++2AGGCLL)))GGCLL)))a$r((+++a$r((+++++r!cF|jj}||d
|d||d|d|t|dt|ddS)Nrlrp)rrr@absrfs  rtest_unary_operatorsz,ArithmeticOperatorsTest.test_unary_operatorss,&''"++wws||444''"++wws||444WWR[[))3wws||+<+<=====r!c|jj}|jj}|jj}|d}|d}|d}|d}||f||f||f||f||ff}||f||f||f||f||f||f||ff}	tjtjtjtjf}
tj	tj
f}|5}d|j|<||	zD]^\}
}|
|zD]S}||
|}|tj
urdnd}|||d
||j|
||T_	dddn#1swxYwY|5}d	|j|<|D][\}
}|D]S}||
|}|tj
urdnd}|||d
||j|
||T\|	D]N\}
}|D]F}||tj	|
|||tj
|
|GO||	zD]"\}
}|
D]}||||
|#	ddddS#1swxYwYdS)
Nr|sNaNr[rrTFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r)rrrroperatorltlegtgeeqner-rrrri)rrrrrxrrKr
qnan_pairs
snan_pairs	order_opsequality_opsrrropgotrs                  rtest_nan_comparisonsz,ArithmeticOperatorsTest.test_nan_comparisonss,&<8|0GENNGFOOGENNGCLLVaVaVaVaV;
VaVaVaVaVaVaVK
Khk8;F	{HK/\^^
	?s*+CI&'"Z/
?
?1#l2??B"Q((C')X['8'8tteHMM(C!,,2F$bk1a->->?????
?
	?
	?
	?
	?
	?
	?
	?
	?
	?
	?
	?
	?
	?
	?
	?\^^	Bs*+CI&'"
?
?1&??B"Q((C')X['8'8tteHMM(C#..4f$bk1a/>/>?????#
K
K1&KKB%%&6QJJJ%%&6QJJJJK#Z/
B
B1#BBB%%&6AqAAAAB
B%	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Bs&	A/EE	E	C"I

IIc$|jj}|d|d}||dd||t
|djddS)Nrr-2)rrrur@rir2rs   rtest_copy_signz&ArithmeticOperatorsTest.test_copy_signs,&GAJJ  ----b111555)WWQZZ%94@@@@@r!N)rr_r`rrrrrrrrrrrrr!rrrsD...8///8---80008+++80008+++8,,,6>>>8B8B8BtAAAAAr!rceZdZeZdS)CArithmeticOperatorsTestNrrr!rrr rr!rceZdZeZdS)PyArithmeticOperatorsTestNrrr!rrr#rr!rc
|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d}	|d}
|	|
z}|j	
|j|	|
z}|5}
|
|
j||||
j|	d|
|
j||5}|
|j||
|j||||j|	|d|
|j|~dddn#1swxYwY||
j|~
dddn#1swxYwY|||d|||d|}|
|j|||||fD]"}||j|#dS)Nrrrr0.333333333333333333333333)rrrrrrrrrfinish1rsynchrowaitr#rRridividecompareassertFalser@)r%rrrrrrrrrd3test1test2c2c3c1sigs                 rthfunc1r,(sk!G{3[/N{#H%Ik!G'J;+L	B	BrEEKOOKrEE	2rx()))B:::rx/000
\^^	rNN28G,---NN28N3444-rz2wwvOOONN28$45666																!12333OOE77#?@@AAAOOE77#?@@AAA	BNN28G$%%%N4DD''
&&&&''s8=A(G1%BF9-G19F=	=G1F=	$G11G58G5c	|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d}	|d}
|	|
z}|}d|_	|	|
z}
|5}|
|j||||j
|dd|
|j|||5}|
|j|||j|d|j|<|||j|dd|
|j|~dddn#1swxYwY||j|||j|~dddn#1swxYwY|j|j|||d||
|d	||j||
|j|||||fD]"}||j|#dS)
Nrr1e425000000Tz1e-425000000rz0.333333333333333333)rrrrrrrrrr+r#rRrimultiplyr$r-r"r rfinish2r@)r%rrrrrrrrrr%r&thiscontextr'r(r)r+s                 rthfunc2r4Os9k!G{3[/N{#H%Ik!G'J;+L	B	BrEE*,,KKrEE	
2rx()))2;
0F0FLLLrx)***
\+
&
&	"NN28G,---OOBHX.///"&BHYY	77>3J3JCPPPNN28I.///
																+,,,+,,,














KOOKOOOOE77#?@@AAAOOE77#9::;;;OOK%i0111NN;$W-...N4DD00)#.////00s9A2HBF, H,F0	0H3F0	4AHHHceZdZ	dZdS)
ThreadingTestcl|jj}|jtkr!|jjs|d|j}|j}|j}d|_d|_d|_tj	|_
tj	|_tj	|_tj
t|f}tj
t|f}|||j|jt$|jD]"}||j|#||||_||_||_dS)Nzcompiled without threadingr)targetr)rDefaultContextrHAVE_THREADSrr+r]rX	threadingEventr rr2Threadr,r4startr!r2r$rRr)rr;	save_prec	save_emax	save_eminth1th2r+s        rtest_threadingzThreadingTest.test_threadingsr4<1T\%>MM6777#'	"'	"'	 '( (( (( ((gTG<<<gTG<<<				4<(	8	8C^1#67777





'''r!N)rr_r`rFrr!rr6r6|s&:
$($($($($(r!r6ceZdZeZdS)CThreadingTestNrrr!rrHrHrr!rHceZdZeZdS)PyThreadingTestNrrr!rrJrJrr!rJceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdS)
UsabilityTestc|jj}|d}|d}|d}||||||||||||||||||||||||||d|d|||d||d||d||t||ttt|td}|dd}tj
|||||dS)Nz23.42rmrlrgY@@r)rr
assertGreaterassertGreaterEqual
assertLessassertLessEqualr@assertNotEqualobjectlistmaprwr.shuffler>)rrdadbdcrbs       rtest_comparison_operatorsz'UsabilityTest.test_comparison_operatorss,&
WW


WW


WT]]	
2r"""B'''BR$$$R   B###R$$$B'''	
2r"""BR   	
B'''B%%%B)))B'''
WeCjj))**
qqqTq	Ar!c|jj}|d}|d}||d||d||d||d||d||d|d||d||d||d||d||d||d|ddS)N0.253.0@?g?rr)rrrQrRrOrPrSr@rrrXrYs    rtest_decimal_float_comparisonz+UsabilityTest.test_decimal_float_comparisonsN,&
WV__
WU^^C   R%%%2t$$$D)))B$$$T"""3###R(((b!!!T2&&&D"%%%b!!!C00000r!c|jj}|d}|d}||d|d|||d|d||d|||d||d|d|||dt||dt||dt||dtdS)Nr^r_y?y?y@y@?)	rrrSr@rrNotImplementedrr
rbs    rtest_decimal_complex_comparisonz-UsabilityTest.test_decimal_complex_comparisons\,&
WV__
WU^^B)))Vb)))g''''B'''&2&&&f&&&B)))Vb)))

bii''888

bii''888

bii''888

bii''88888r!c
	|jj}t|jj}|jj}|jj}|jj}trtjnd}trtj	nd}trtj
nd}|||}	||	5||	_||d|dd||dd|d||dd|d	t|z||d
t|z|dd||dd|d	t|z||d
t|z|dd||d|dd
||dd
|dd|	_||ddz|dd||dd|ddz||dd|dt|z||dt|z|dd||d|dd||d|dd||d|dd||d|dd|||dj|dd|t,|dd|d||d|dd||dd|dddddS#1swxYwYdS)Nɚ;6eilʈr]rXrrl	ZmH;5Brt1ez-1el!0QYrri,ri6lc(	9erlg]{lg]rri)rrrFractionr.rrrrMIN_EMIN	MIN_ETINYr+rQr;r@rSrRrPrOrir
rrer)
rDrr.rremaxeminetinyrs
          r test_decimal_fraction_comparisonz.UsabilityTest.test_decimal_fraction_comparisonsL dl#,,&|0<8-qzzI.qzzJ 1kGD)))
\!__	5	5AFOOAAaDD!!A&K"L"LMMMOOAAb!FGG1NNNOOAAaFFAAdSZZ&7$8$8999OOAAec%jj01111Qq66:::OOAAa 9::AAdSZZ>O<P<PQQQOOAAec%jj01111Q7P3Q3QRRRQQuXXqq2ww///QQqWWaahh///AF!Q!A///!A!Q///  9j!9!911TCII=M;N;NOOO##AAdSYY&6$7$79j9Q9QRRRqqxx;s););<<<qqxx<)<)<===OOAAfIIqqS'9'9:::OOAAfIIqqc':':;;;.%2cKKKMM.!!Bs))*:*:11U88*D*DEEE%!!Bs))444"S		11U884447	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5sOQ33Q7:Q7cD|jj}|d}tj|}|t	|t	|tj|}|t	|t	|dS)Nz43.24)rrrnr@rCdeepcopy)rrrrrZs     rtest_copy_and_deepcopy_methodsz,UsabilityTest.test_copy_and_deepcopy_methods)s,&GGIaLLA1&&&
]1

BA'''''r!cFjjjj}fd}|d|d|d|d|dfddD}|d	d
ddd
dddddddddddg|D];}||tt
|<gd}|D]H}t|}|}||t|I|5}	d}
d|	_||
}d|	_||
}d|	_||
}
||||
d|	_dd z}
||
||
ddddS#1swxYwYdS)!Nczt|}|}|||Sr)hash__hash__r@)rrr[rs   rhashitz.UsabilityTest.test_hash_method.<locals>.hashit7s6QA

AQ"""Hr!rNrrnan123-NaNc	hg|].}tddD]}dD]}|d|z|zz/S)rrsr)rw)rr4rxryrs    rr'z2UsabilityTest.test_hash_method.<locals>.<listcomp>Dsu,,, %c2,,#*	,, 	wtQTAX//,,,,,r!)rrr!=>?@ABrrr?z-0.000rVz-0E1210.0z	-23.000001230E100z
-4.5678E50lz	1.634E100z
90.697E100z
188.83E100z
1652.9E100	56531E100)rrr>z-.0e1z34.02.5z
112390.625z	-0.515625z123456789.1rr'iLi)	rrrextendr@r{rrr+)rrr}rrtest_stringsrrrrrh1h2h3rs`             @rtest_hash_methodzUsabilityTest.test_hash_method2s,&|0						wwr{{wwz""###ww{##$$$wwx  !!!wwv,,,,!A,,,
	



!!  $$
##%%)**$$%%%%%%$$)			0!	>	>EVVE]]DU,<,<====BBB	1	1AaA

AVVAYYQ0000
\^^	<q
&&AAFBAFBAFBR$$$R$$$AFAVVGGAJJ//;;;#	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sB+JJJc|jj}|tt|d|d}|t	|t|Gdd}Gdd||}|d}|t	|t|dS)Nrr|ceZdZdZdS)-UsabilityTest.test_hash_method_nan.<locals>.HcdS)Nrrrs rr|z6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__srr!N)rr_r`r|rr!rHrs#




r!rceZdZdS)-UsabilityTest.test_hash_method_nan.<locals>.DN)rr_r`rr!rrqrsDr!rq)rrrir2r{r@rTr|)rrrrrqs     rtest_hash_method_nanz"UsabilityTest.test_hash_method_nans,&)T776??;;;efooe&<&<===																%efooe&<&<=====r!c|jj}|d}|d}d}d}|t||||t||||t	||||t	||||t||||t||||t	||||t	|||dS)N15.32z28.5rr)rrrminmax)rrrrl1l2s      rtest_min_and_max_methodsz&UsabilityTest.test_min_and_max_methodss,&
WW


WV__

	


c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%	


c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%%%r!c|jj}||d||ddS)Nrz0.372)rrr$r#rfs  rtest_as_nonzerozUsabilityTest.test_as_nonzerosL,&	
$$$(()))))r!c|jj}|d}|t|d|t	|ddS)NrzDecimal('15.32'))rrr@r;r?rs   rtest_tostring_methodsz#UsabilityTest.test_tostring_methodssZ,&GGQ)))a"455555r!c
|jj}|d}|d}|t|d|t|d|t	|d|t	|dgd}|D]6\}}|tj|||7|tt
j|d|tt
j|d|tt
j|d	|tt
j|d
|tt
j|dgd}|D]6\}}|tj
|||7|tt
j
|d|tt
j
|d|tt
j
|d	|tt
j
|d
|tt
j
|dgd
}|D]1\}}|t|||2|tt|d|tt|d|tt|d	|tt|d
|tt|dgd}|D]@\}}}	|tt||||	AdS)N66rrrgp=
ף.@)	z123.00rm3.2r)3.54r)3.899r)-2.3rz-11.0ir>rz-0E3r)89891211712379812736.1l{#'s{Mrrrr[r)	r)rrrrrrrrrrr)rl{#'s{M)rrrrrrrr)z-3.5)rr)rr)-0.5r)0.5r)r:r)rr)z3.5r))123.456rz0E+4)rrz0E+3)rrz1E+2)rrtz1.2E+2)rrr_)rrz123.5)rr123.46)rrr)rrz123.4560)z123.455rr)z123.445rz123.44)r[rr|)rir|)sNaN314rNaN314)
rrr@rrmathrrir
OverflowErrorceilroundr;)
rrrr
test_pairsrrKtest_triplesrxrs
          rtest_tonum_methodsz UsabilityTest.test_tonum_methodss,&
WT]]
WW

	
R"%%%R"%%%	
rB'''rE***



	8	8DAqTZ

33Q7777*dj''&//BBB*dj''&//BBB*dj''(2C2CDDD-WWU^^DDD-WWV__EEE



	7	7DAqTYwwqzz22A6666*diAAA*diAAA*di1B1BCCC-GGENNCCC-GGFOODDD
$	3	3DAqU771::..2222*eWWV__===*eWWV__===*eWWX->->???-???-@@@ $	;	;GAq!Swwqzz1!5!566::::	;	;r!c*|jj}dD]}t||}|t	j|t	jd|}|||drdnddS)N)rnan1234-nanz-nan2468rrg)	rrrr#rrrtr@r)rrrrrys     rtest_nan_to_floatzUsabilityTest.test_nan_to_floats,&7	G	GAggajj!!AOODJqMM***=a((DT1<<+<+<#E44#FFFF		G	Gr!c|jj}dD].}||}|tt|/dS)N)snanz-snansnan1357z	-snan1234)rrrirr)rrrrs    rtest_snan_to_floatz UsabilityTest.test_snan_to_float"sM,&;	4	4A

Aj%3333	4	4r!c|jj}|d}||tt	||d}||tt	||d}||tt	||d}||tt	|dS)Nrrrr)rrr@r<r?rs   rtest_eval_round_tripz"UsabilityTest.test_eval_round_trip(s,&
G\##DaMM***
G^%%DaMM***
G*,,DaMM***
G:<<DaMM*****r!cL|jj}|d}||d|d}||d|d}||d|d}||d|d	}||d
|d}||d|d
}||d|d}||d|d}||d|d}||d|d}||d|d}||d|d}||ddS)Nrrrprrrr)rrr)rrrrrrvrrr)rrrrvrrr)rrrr%)rrr)rrr)rrrx)rrrx)rrNrrr)rrrx)rrr)r)rrrrr)rrr)rrr@as_tuplers   r
test_as_tuplezUsabilityTest.test_as_tuple;so,&
GAJJ|555
GCLL~777
G%&&'LNNN
GJ~777
G355'?AAAG'))}555G[""}555
G466'@BBBG(**|555G\##|555
G^%%~666G+--~666G+--~66666r!c	|jj}|t|j|d|t|j|d|t
|j|d|t
|j|dt
ddD]}t
dD]}dD]}|d	|||fz}|}|\}}||t||t||t|
|d
|tj
||d|||||z|dS)Nrrrsnan123rr)rrz%s%dE%drr)rrriras_integer_ratiorrwrtuplerrOr@rgcd)	rrrZcoeffryrpqrrs	         rtest_as_integer_ratioz#UsabilityTest.test_as_integer_ratiohs,&	
-!2GGENN	D	D	D-!2GGFOO	E	E	E*!2GGFOO	E	E	E*!2GGI4F4F	H	H	HQ<<	A	ACt
A
A$AAD	T5#,> >??A++--BDAq))"e444))!S111))!S111&&q!,,,$$TXa^^Q777$$WWQZZ''!**%<a@@@@!A
A	A	Ar!c
|jj}Gdd|}|d}|d}||z}|t||||}|t||tj|}|t|||||tj|}|t||||||d}||}|t|||||||}|t|||||||jd||}|t|||||d|_||}|t|||||||jddS)NceZdZdZdS)1UsabilityTest.test_subclassing.<locals>.MyDecimalN)rr_r`rrr!r	MyDecimalrsAAAr!rrr1.0r*)	rrrr:rrnr@rwr)rrrrrrrr4s        rtest_subclassingzUsabilityTest.test_subclassings\,&								Yq\\
Yq\\G

d1ggw'''FF2JJ

d1ggw'''IbMM

d1ggy)))BM"

d1ggy)))B
GENNGAJJ

d1ggw'''A
IaLL

d1ggy)))A

ac4   
GAJJ

d1ggw'''AIaLL

d1ggy)))A

ac4     r!c
|jj}|jj}|}|t	|dt	||ddSNr)rrrr@r;rrrrrs    rtest_implicit_contextz#UsabilityTest.test_implicit_contexts,&\,

JLLWWQZZ__..//QVVGGAJJ//00	2	2	2	2	2r!cT,|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj	}	|jj
}
|jj}||5}d|_d|_
d|_|d}
|d}|d}||t#|
dd||j|	||j|
||||jd||j|||dd	||dd
||t#|
dd||j|	||j|
||||djd||j|||t#|
dd
||j|	||j|
||||djd||j|||t#|
dd|||djd||j|||t#|
dd|||jd||j|||t#|dd|||djd||j|||t#|dd|||djd||j|||t#|dd|||jd||j||t#| dd||t#|!dd||j|||j|	||j|
||j|||j|||||j!d||j|d|_"|t#|#ddd|_"|t#|
$|dd}||d|||
j$|dd||j||t#|
%dd}||d|||
j%|dd||j||t#|
&dd}||d|||
j&dd||j||t#|
'dd}||d|||
j'dd||j||t#|
(dd}||d |||
j(dd||j||t#|
)dd}||d|||
j)|dd||j||t#|
*dd}||d|||
j*|dd||j||t#|
+dd}||d|||
j+|dd||j||t#|
,dd}||d|||
j,|dd||j||t#|
-dd}||d |||j-dd||j||t#|
.d!d}||d"|||
j.dd||j||t#|
/dd}||d#|||
j/d$d||j||t#|
0d!d}||d"|||
j0d$d||j||t#|
1d!d%d}||d&|||
j1|dd%d||j|td|_3t#|d'4dd(}||dtj|_3t#|d'4dd(}||d)t#|d'4tld(}||d||||dj4d||j|td|_3t#|d'7dd(}||dtj|_3t#|d'7dd(}||d)t#|d'7tld(}||d||||dj7d||j|td|_3t#|d'8dd(}||dtj|_3t#|d'8dd(}||d)t#|d'8tld(}||d||||dj8d||j|tl|_3t#|d*9|d+dd,}||d-tj|_3t#|d*9|d+dd,}||d.t#|d*9|d+tld,}||d-||||j9|d/tld(||j|dddn#1swxYwY||5}d|_d|_
d|_|d05}||jd||j
d||jddddn#1swxYwYddddS#1swxYwYdS)1Nrr0i1111e9999z1e-9999r&z1.609487E+48FTz4.709530rtz2.045323rr1111000z
9.999999E+999rrrd
+Subnormalz0E-1005rNan891287828
NaN1287828i  rr|e101rmr,r11100z1.11E+9rr225r:r,r&rz1.50001z1e-3)rZr,r&z1.501z1.500z1e-10)r):rrr.rrrrrrrrrr+r]rXr/r@r;rZr#rRrirrrlnlog10logbryrrrrgrcapitalsrr#rircrrrrrrrrotatescalebshiftfmar/r,to_integralrrrrquantize)rrr.rrrrrrrrrrrrzrEr&s                  rtest_none_argszUsabilityTest.test_none_argss,&,&|0<84<(L*	L*	,&,&,&
\''))
$
$W	7AFAFAFA!!A	""A
MMOOOSt!4!455~FFFOOAGG,---OOAGG,---
MMOOOht<<<OOAGH-...MM!++d+33U;;;MM!...66===
MMOOOSd!3!344jAAAOOAGG,---OOAGG,---
MMOOO.MMMOOAG$45666
MMOOOS!6!677DDDOOAGG,---OOAGG,---
MMOOO.0A4PPPOOAG$45666
MMOOOS!5!566<<<nggajjotLLLOOAGN3444
MMOOOS!1!1$!1!?!?@@)LLL.0@$OOOOOAG$45666
MMOOOSd!;!;<<oNNN.0JTXYYYOOAG$45666
MMOOOST!:!:;;ZHHH.0ISWXXXOOAG$45666
MMOOOST!:!:;;SAAAhTBBBOOAGH-...S!=!=>>MMM
MMOOOS!5!566	BBBOOAGG,---OOAGG,---OOAGG,---OOAGI.///OOAGI.///
MMOOOh===OOAGH-...AJS!>!>??KKKAJ
MMOOOaii 7 7iFFGGCS,///.	776??TXYYYOOAG$45666
MMOOOa&&tT&::;;CS$'''.0@''%..Z^___OOAG$45666
MMOOOammCm6677CS%(((.
sDQQQOOAG$45666
MMOOOall3l5566CS%(((.c4PPPOOAG$45666
MMOOOammCm6677CS$'''.
sDQQQOOAG$45666
MMOOOaeeCe..//CS%(((.wwvPTUUUOOAG$45666
MMOOOaiiTi2233CS%(((.	776??TXYYYOOAG$45666
MMOOOaeeCe..//CS%(((.wwvPTUUUOOAG$45666
MMOOOaiiTi2233CS%(((.	776??TXYYYOOAG$45666
MMOOOa&&sD&99::CS$'''.0@#tTTTOOAG$45666
MMOOOahhq$h//00CS'***.#tLLLOOAG$45666
MMOOOahhq$h//00CS),,,.%NNNOOAG$45666
MMOOOaggag..//CS'***.MMMOOAG$45666
MMOOOaeeAq$e//00CS%(((hwwx/@/@!TRRROOAGH-...)AJggenn00$0MMNNCS#&&&#AJggenn00$0MMNNCS#&&&ggenn00(D0QQRRCS#&&&
MMOOO.0KUYZZZOOAG$45666(AJggenn66d6SSTTCS#&&&#AJggenn66d6SSTTCS#&&&ggenn66RV6WWXXCS#&&&
MMOOO.0Q[_```OOAG$45666(AJggenn66d6SSTTCS#&&&#AJggenn66d6SSTTCS#&&&ggenn66RV6WWXXCS#&&&
MMOOO.0Q[_```OOAG$45666!AJggi((11ggfooPT^b1ccddCS'***#AJggi((11ggfooPT^b1ccddCS'***ggi((11ggfooPXbf1gghhCS'***
MMOOO.
GGG<L<LW_imnnnOOAG$45666oW	7W	7W	7W	7W	7W	7W	7W	7W	7W	7W	7W	7W	7W	7W	7r\''))
$
$	/GLGLGL$'''
/1  +++  ---  ...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/		/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/sbASAU'U'AU+U.AU+V"AXV'AAXW9AXXAX		X	AXXAX		X
AXXAX!X$AX!c	|jj}||dd|d|d||dd|d|d||dd|d|d||dd|d|d||dd|d|d||dd|d|d||d	d|d	|d||d
d|d
|d||dd|d|d||dd|d|d||d
d|d
|d||dd|d|d||dd|d|d||d	d|d	|d||dd
|d|d
||dd|d|d||dd
|d|d
||dd|d|d||d|dd|d|d|d||ddd|d|d|d||dd|d|d|d|ddS)Nrriu'i7rmrrirrz9.123rrtirlC)rrr@r#rirkrmrcrrrrrrrrrrrrrrrfs  rtest_conversions_from_intz'UsabilityTest.test_conversions_from_int	s,&++A.. ++GGAJJ77	9	9	922155 22771::>>	@	@	@11!44 11''!**==	?	?	?55a88 55ggajjAA	C	C	C33D99 33GGDMMBB	D	D	D22488 22774==AA	C	C	C33D99 33GGDMMBB	D	D	D))#.. ))''#,,77	9	9	9--c22 --ggcll;;	=	=	=))#.. ))''#,,77	9	9	9--c22 --ggcll;;	=	=	=11#66 11''#,,??	A	A	A//44 //==	?	?	?44T:: 44WWT]]CC	E	E	E,,Q// ,,WWQZZ88	:	:	:33D99 33GGDMMBB	D	D	D))0066 ))00??	A	A	A++B// ++GGBKK88	:	:	:	
))''"++r:: ))''"++wwr{{CC	E	E	E))"b11 ))''"++wwr{{CC	E	E	E))"ggbkk:: ))''"++wwr{{CC	E	E	E	E	Er!N)rr_r`r\rcrfrurxrrrrrrrrrrrrrr	rrr!rrLrLs_4"""H111&999((5(5(5T(((L<L<L<\>>>&&&(***666e;e;e;NGGG444+++&+7+7+7ZAAAB-!-!-!^222m/m/m/^/E/E/E/E/Er!rLceZdZeZdS)CUsabilityTestNrrr!rrr	rr!rc,eZdZeZfdZfdZxZS)PyUsabilityTestcttj|_tjddSNiXsuperrsysget_int_max_str_digits_previous_int_limitset_int_max_str_digitsrrs rrzPyUsabilityTest.setUp	<


#&#=#?#? "4(((((r!cztj|jtdSrrrrrtearDownrs rrzPyUsabilityTest.tearDown	3"4#;<<<
r!rr_r`rrrr
__classcell__rs@rrr	VG)))))
r!rc`eZdZdZdZdZedZdZdZ	dZ
dZd	Zd
Z
dZdS)
PythonAPItestscv|jj}|t|tj|t|tj||dtj|	|dtjdSr)
rrr#
issubclassnumbersNumberr$RealrassertNotIsInstancerfs  rtest_abczPythonAPItests.test_abc	s,&
7GN;;<<<GW\::;;;ggajj'.999  W\:::::r!cttjdzD]>}|jj}t
jd}|jt
jd<|d}tj||}tj|}|	||trtd}td}tt
jd<tj||}	tt
jd<tj|	}
||
tj|	|
|tt
jd<tj||}tt
jd<tj|}
||
tj|	|
|td
}td
}tt
jd<tj||}	tt
jd<tj|	}
||
tj|	|
|tt
jd<tj||}tt
jd<tj|}
||
tj|	|
||t
jd<@dS)Nrrz-3.141590000z-3.123e81723)rwpickleHIGHEST_PROTOCOLrrrmodulesdumpsloadsr@rrrrDecimalTuple)rprotorsavedecimalrrr)rrsxrsys            rtest_picklezPythonAPItests.test_pickle	s62Q6770	10	1El*G+i0K&*\CK	"''AQ&&AQAQ""""
'IIn--IIn--)*I&\!U++)*I&L$$%%a333  A&&&)*I&\!U++)*I&L$$%%a333  A&&&IIn--6688IIn--6688)*I&\!U++)*I&L$$%%a888  A&&&)*I&\!U++)*I&L$$%%a888  A&&&%0CK	""a0	10	1r!c	|jj}tddD]}d|dzz}|t	||t	t|||}|t}||t	|||tt|d|tt|d|tt|d|tt|ddS)	N%0.2fY@rrrr)rrrwr@rrrrrirrrrrrrrs      rtest_intzPythonAPItests.test_int-
s.,&tS!!	1	1A1u9%AS__c%((mm<<<

A

j))AWWSVV__a0000*c776??;;;*c776??;;;-ggenn===-ggfoo>>>>>r!c|jj}tddD].}|t	|||/dS)Nrui)rrrwrrrrrs   rtest_small_intszPythonAPItests.test_small_ints>
sR,&r3	.	.AMM#ggajj//1----	.	.r!c	|jj}tddD]}d|dzz}|t	||t	t|||}|t}||tj	||dS)Nr;r<r=r>)
rrrwr@rrrrrtruncr?s      r
test_trunczPythonAPItests.test_truncE
s,&tS!!	8	8A1u9%AS__c%((mm<<<

A

j))AWWTZ]]33Q7777	8	8r!c	|jj}Gdd|}|t|||d}|t
|||t|d||jdd}|||||||td
||td||td	|t|tdt|d
|t|tdt|d|t|td	t|d|t|jd
tdD]f}tjdtjdzdz
z}||t||gdS)NceZdZdZdS)1PythonAPItests.test_from_float.<locals>.MyDecimalcd|_dS)Nr)r)r_s  rrz:PythonAPItests.test_from_float.<locals>.MyDecimal.__init__V
s
r!Nrrr!rrrIU
s#




r!rrrrls\&5$3|	rrrr|rrabcrrrr)rrr#r(rr@r:r;rrrrrir2rwr.r)rrrrbigintrKrs       rtest_from_floatzPythonAPItests.test_from_floatQ
s,&									

9g66777  %%a),,,QK	M	M	Mc""".--f55yy7H7HIII	,,U5\\::BBDDEEE	,,U5\\::FFHHIII	,,U6]];;GGIIJJJY11%,,??@@WWU^^,,	.	.	.Y11%,,??@@WWZ0011	3	3	3Y11%--@@AAWW[1122	4	4	4)Y%95AAAs	@	@A"4((FMOOc,AC,GHAQi&:&:1&=&= > >????	@	@r!c2|jj}|jj}|jj}|dt}||tj|d|dt}||tj|d|d|g}|
||jtj|t|dd|t|dd	|t|d
ddS)Nrv)r+r,z3.1415rL)r+r-z
Decimal('-0')rzDecimal('1')rz
Decimal('10'))rrr.rrr@create_decimal_from_floatrpirrir?)rrr.rr&s     rtest_create_decimal_from_floatz-PythonAPItests.test_create_decimal_from_floatq
s,&,&,&'q:666--dg66GH	
	
	
'q8444--dg66GH	
	
	
'q	222-G	
	
	

	
g??EEFF(	*	*	*g??DDEE'	)	)	)g??CCDD(	*	*	*	*	*r!c|jj}|jj}|jj}|dd}||d|d|d||d|dt|d|||d	j|d
||}|d}|||d
t}|||ddS)Niiayrjz7.335r{z7.34r,z7.3310e999991e100000rz0.871831e8001e797)r&rZr,z	8.71E+799)rrr.rr@rrri)rrr.rrrrs       r
test_quantizezPythonAPItests.test_quantize
sk,&,&<8GV,,,GG%%ggenn55GFOO	
	
	
	
GG%%ggennz%JJGFOO	
	
	
	
GJ(''**=*=q		
	
	


GIIGN##
JJqggg&6&6JLLGGK0011111r!c|jj}|d}||j|||jd||||d}|t
|t
td|tt|dd|tt|dd|tt|dd|tt|d	ddS)
Nz9.8182731e181273rrrrealrimag	conjugate__complex__)rrr@r[r\r]complexrrir3r.rBs   rtest_complexzPythonAPItests.test_complex
s,&G&''######***GCLLWU1XX%6%6777.'1fcBBB.'1fcBBB.'1k3GGG.'1mSIIIIIr!c$|jj}|jj}|jj}|jj}|jj}|}d|_d|_d|_|5}|	|
|d|d|
|d|d|
||dd|
||d|	|||d|||j
|||j
||	|
|d|d	|||d
j|||j
|||j
||	|
|d||d|||dj|||j
|||j
||
|d||d|
|d|d
|
|d||d|
|d||d|
|d|d|
|d|d|
|d|d|
|d||d|
|d|dd|	|||dj|d|||j
|||j
||
|d|d||d|
|d|d||d|
|d|d ||d |
|d!|d"||d#|
|d!|d"||d|
|d|d$||d%|	|||dj |d&|||j
|||j
||
|d'!|d(||d)|
|d*"|d+|d	,|d-|tF|dj$||tF|dj%||tF|dj&||tF|dj'||tF|dj(||tF|dj)||tF|dj*||tF|dj+|||d,|||d-||tF|dj.||tF|dj/||tF|dj0||
|d.1|d|
|d2|d|
|d3|d/|
|d04|d0|
|d15|d2|d|
|d16|d2|d|
|d37|d2|d|
|d48d|d|
|d48d|d|	|||d4j9d|||j
|||j
||
|d4:d|d|tF|j;d5||tF|dj<||
|d=d|tF|d$j>||tF|d$j?||tF|dj=d6|tF|dj=d67ddddS#1swxYwYdS)8Nrrtr*r)r&rrrrrrz0.7rrz-0.9z9.73z1E+19999'z-2000i0r_rmz0.06250.2r)r&rrdr0.01z0.0101r>z-0.3z0.02z-0.03rrr1e109.99r:r9.9z0.9)thirdr&rz7E+1irz0.2111r,0123g?r)r)@rrr.rrrr+r]rXr/r@rir#rRr$rZrrrrrrrrrr#rirrrrrrrrr2r{r}rrrrrrrradjustedr]radixrryrgrrcrrrrrrr	canonicalrqrs)rrqr.rrrxcrs        rtest_named_parametersz$PythonAPItests.test_named_parameters
sU
L ,&|0<8<(
WYY
\^^b	Bq
MMOOOQQq"XXq)))QQq"---q111QQr333Q777QQr]]]A...NN.5"EEEOOBH%56777QW%56777NNQQqTTXXbX111555h!"===OOBHX.///QWX.///NNQQqTTWWRW00!!E((;;;.""EEEOOBH%56777QW%56777QQqTTZZZ33QQvYY???QQrUU--b-992>>>QQrUU__R_88!!F))DDDQQvYY000<<aaiiHHHQQvYY2222>>EEEQQwZZ99"9EEuMMMQQuXX777CCSIIIQQx[[--b-9911U88DDDQQx[[0010EErJJJNN.aff3QQuXXr

K
K
KOOBH%56777QW%56777QQvYY]]11X;;]CCQQuXXNNNQQvYY]]11X;;]CCQQuXXNNNQQuXX--aaii-DDQvYY
(
(
(QQvYY]]11W::r]BBAAfIINNNQQvYY..qqzz2.FFQuXX
'
'
'QQuXX11!!D''21FF%QQQNN.ahh/6B

H
H
HOOBH%56777QW%56777QQvYY55aahh5KKQvYY
(
(
(
QQuXX\\%"A\NNQvYY
(
(
(
i1):BGGGi1DDDi1)92FFFi1bAAAi1rBBBi1rBBBi1DDDi1rBBBQQvYY000<<===OOAAfII2222>>???i1CCCi1DDDi1R@@@QQtWW\\"\55q999QQqTT000<<a@@@QQvYY33B3??NNNQQvYY44R4@@&IIIQQtWW004"0EEqIIIQQtWW//$/DDaHHHQQtWW004"0EEqIIIQQtWW^^Ar^::A>>>QQtWW^^Ar^::A>>>NNhaggna

=
=
=OOBHX.///QWX.///QQtWW]]2r]::A>>>isBGGGi1CCCQQqTT^^--q111i4)92FFFi4)<bIIIi1EEEi1SAAAEb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bb	Bs&vxx	x	c|j}|j}|j}|j}|j}|j}|j}|j}|j}	|j	}
|j
}|t|t|t|||t|||t|t|t|||t|t|t||
|t||	|t|||t||	|t||
|t|||t|||t|||t|	||t|
||t|||t|j||t|j||t|j||t|jt|t|j|dSr)rrrFloatOperationrrrrrrrr#r(ArithmeticErrorr2ZeroDivisionErrorConversionSyntaxDivisionImpossibleDivisionUndefinedInvalidContext)rrrrrsrrrrrrrs            rtest_exception_hierarchyz'PythonAPItests.test_exception_hierarchy%s,"3"3 / /#%	%	///
#3_EEFFF
#35EFFGGG
>3CDDEEE
>9==>>>
>3CDDEEE
>3DEEFFF
8W55666
8W55666
8-=>>???
9g66777
9g66777
9i88999
9.>??@@@
9.>??@@@
7,<==>>>
7,<==>>>
7,<==>>>
7#;=MNNOOO
7#=?OPPQQQ
7#<>NOOPPP
7#<>OPPQQQ
7#9;KLLMMMMMr!N)rr_r`r-r9r@r
rCrFrNrSrYr`rqrzrr!rr&r&	s;;;111111f???"..\.
8
8
8@@@@***82220JJJ nBnBnB`&N&N&N&N&Nr!r&ceZdZeZdS)CPythonAPItestsNrrr!rr|r|Mrr!r|ceZdZeZdS)PyPythonAPItestsNrrr!rr~r~Prr!r~ceZdZdZeeejedZ	dZ
dZdZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d Z&d!Z'd"Z(d#Z)d$Z*d%Z+d&Z,d'Z-d(Z.d)Z/d*Z0d+Z1d,Z2d-Z3d.Z4d/Z5d0Z6d1Z7d2Z8d3Z9d4Z:d5Z;d6Z<d7Z=d8Z>d9Z?d:Z@d;ZAd<ZBd=ZCd>ZDd?ZEd@ZFdAS)BContextAPItestsc
J|jj}|jj}|jj}|jj}|}|dddddddd}||fD]}||jd||jt||j	d||j
d||jd||jdt||dgt||d|||gdS)	N)r+r,r]rXrrarRr-r?BrrrRr-)rr.rrrr@r+r,r/r]rXrrar()rr.rrrr*r(rs        rr	zContextAPItests.test_none_argsUsK,&<84<(
WYY
W$Dt"$d$HHHb		9		9AQVR(((QZ999QVV,,,QVW---QZ+++QWa(((4GR0004G.>.6.8
9
9
9
9		9		9r!rcddl}|j}tD]7}|||_||j|8|d}|tt|d||d}|tt|d|dS)Nrrr,z	ROUND_UP)
rrr.
RoundingModesrr,r@rir2r.)rrrrndrs     rrz(ContextAPItests.test_from_legacy_stringsis	L  "" 	.	.C"88==AJQZ----++B//)WaQ???++N;;)WaQ?????r!cttjdzD]}|jj}t
jd}|jt
jd<|}tjtj||}|	|j
|j
|	|j|j|	|j|j|	|j
|j
|	|j|j|	|j|j|	|j|j|	|j|jt$rt$t&ft&t$fgnt&t&fg}|D]t\}}t)t*D]X\}	}
t)t,|D]6\}}
t)t,|D]\}}
t/jdd}
t/jdd}t/jdd}t/jd}t/jd}|t
jd<||
||t*|	||t,|d|t,|d|}tj||}|t
jd<tj|}|||j|	|j
|
|	|j||	|j||	|j
t*|	|	|j||	|j|t5||dt,|d|t5||d	t,|d|8Zv|t
jd<!dS)
Nrrrrrr)r+rXr]r,rrarRr-rRr-)rwr/r0rr.rr1r3r2r@r+rXr]r,rrarRr-rrr5rr9r.	randrangerr()rr5r.r6rr)combinationsdumperloaderrirKfitir+rsrrcapsrarrs                    rr9zContextAPItests.test_picklezs62Q6779	19	1El*G+i0K&*\CK	"		AV\!U3344AQVQV,,,QVQV,,,QVQV,,,QZ444QZ444QWag...QWag...QWag...01>QFQF++1vhL"."
Z"
Z&}55!Z!ZEB!*>&+A!B!B Z ZA%.~f/E%F%FZZEB#)#3As#;#;D#)#3D!#<#<D#)#3As#;#;D#)#3A#6#6D$*$4Q$7$7E6<CK	2 &'+$T+8+<+/u(6v(>ss(C(6v(>ss(C!/!!A!'Q 6 6A6<CK	2 &QA 11!V^DDD ,,QVT::: ,,QVT::: ,,QVT::: ,,QZr9JKKK ,,QZ>>> ,,QWe<<<*4G^F=STWUWTW=XYYY*4G^F=STWUWTW=XYYYY?Z Z!ZF&1CK	""s9	19	1r!c|jj}||ddd|ddig||ddddigdS)Nrrr)rr)rrassertInassertNotInrfs  rtest_equality_with_other_typesz.ContextAPItests.test_equality_with_other_typessh,&

ggbkkCggbkk5"#EFFFsC&;<<<<<r!c|jj}|jj}|}|}|t|t||t|jt|j|t|jt|jt|j	}t|j	}|
|||
|j|jdSr)rrr.rnrSrCrRr-rkeysr@)rrr.rrk1k2s       r	test_copyzContextAPItests.test_copys,&,&GII
FFHHBqEE2a55)))BqwKKAG555BqwKKAG555

 
 

 
 R   !'*****r!cv|jj}|}|tt|ddS)N_clamp)rr.rir3r"rr.rs   rtest__clampzContextAPItests.test__clamps9,&GII.'1h?????r!c|jj}|jj}|}||d}||d||t|jddSNrtr)rrr.rr@rir2rrr.rrs     rtest_abszContextAPItests.test_absz,&,&GII
EE''"++rA&&&)QUD11111r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSNrr)rrr.rr@rir2rs     rtest_addzContextAPItests.test_add,&,&GII
EE''!**ggajj))q!a(((wwqzz1--q111q''!**--q111)QUC333)QUAs33333r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.r#r@rir2rs     rtest_comparezContextAPItests.test_compare,&,&GII
IIggajj''!**--1a!,,,771::q1115551ggajj111555)QYQ777)QY377777r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rir@rir2rs     rtest_compare_signalz#ContextAPItests.test_compare_signal,&,&GII
WWQZZ44))!Q//333))''!**a88!<<<))!WWQZZ88!<<<)Q%5sA>>>)Q%5q#>>>>>r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rkr@rir2rs     rtest_compare_totalz"ContextAPItests.test_compare_totals,&,&GII
OOGGAJJ

33A..222Q77;;;GGAJJ77;;;)Q_c1===)Q_a=====r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rmr@rir2rs     rtest_compare_total_magz&ContextAPItests.test_compare_total_mags,&,&GII


GGAJJ77,,Q22A666,,WWQZZ;;Q???,,Q

;;Q???)Q%8#qAAA)Q%8!SAAAAAr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rqr@rir2rs     r
test_copy_abszContextAPItests.test_copy_abssz,&,&GII
JJwwr{{##B+++)QZ66666r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.ror@rir2rs     rtest_copy_decimalz!ContextAPItests.test_copy_decimal%|,&,&GII
NN772;;''++Q///)Q^T:::::r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rsr@rir2rs     rtest_copy_negatez ContextAPItests.test_copy_negate.|,&,&GII
MM''"++&&r**A...)Q]D99999r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddS)Nrrrr)rrr.rur@rir2rs     rrzContextAPItests.test_copy_sign7s,&,&GII
KK

GGBKK00Q++Q///WWQZZ44a888Q44a888)Q[#r:::)Q[!T:::::r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSNrrrr)rrr.r"r@rir2rs     rtest_dividezContextAPItests.test_divideC,&,&GII
HHWWQZZ,,!Q+++''!**a00!444!WWQZZ00!444)QXsA666)QXq#66666r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rwr@rir2rs     rtest_divide_intzContextAPItests.test_divide_intO,&,&GII
LLWWQZZ00a++Q///ggajj!44a888a44a888)Q\3:::)Q\1c:::::r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.r-r@rir2rs     rtest_divmodzContextAPItests.test_divmod[rr!c|jj}|jj}|}||d}||d||t|jddSNrr,)rrr.rZr@rir2rs     rtest_expzContextAPItests.test_expgrr!c	,|jj}|jj}|}||d|d|d}||ddd||||ddd|||d|dd|||dd|d||||d|dd||t|jddd|t|jddd|t|jddd|t|j|d|dd	|t|j|d
|dd|t|dj|dd	|t|d
j|dddS)
NrrrrrI4rrz
not a decimalrrgZd;O?)rrr.rr@rir2rs     rtest_fmazContextAPItests.test_fmapsr,&,&GII
EE''!**ggajj''!**55q!Q+++wwqzz1a00!444q''!**a00!444q!WWQZZ00!444wwqzz771::q991===)QUCA666)QUAsA666)QUAq#666	
)QU!'*--wwqzz?	L	L	L)QU!'!**ggfoou	>	>	>	
)WWZ%8%8%<!'!**o	7	7	7)WWQZZ^!'&//5	2	2	2	2	2r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.r}r@rir2rs     rtest_is_finitezContextAPItests.test_is_finitez,&,&GII
KK$$R!,,,)Q[$77777r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_infinitez ContextAPItests.test_is_infiniterr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_nanzContextAPItests.test_is_nansz,&,&GII
HHWWR[[!!"q))))QXt44444r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_normalzContextAPItests.test_is_normalrr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_qnanzContextAPItests.test_is_qnanz,&,&GII
IIggbkk""2***)QY55555r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_signedzContextAPItests.test_is_signedrr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_snanzContextAPItests.test_is_snanrr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_subnormalz!ContextAPItests.test_is_subnormalrr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_is_zerozContextAPItests.test_is_zerorr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_lnzContextAPItests.test_lnsz,&,&GII
DDb1%%%)QT400000r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     r
test_log10zContextAPItests.test_log10z,&,&GII
GGGGBKK  a((()QWd33333r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     r	test_logbzContextAPItests.test_logbz,&,&GII
FF772;;Q''')QVT22222r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rcr@rir2rs     rtest_logical_andz ContextAPItests.test_logical_and,&,&GII
MM''!**ggajj11q!,,a000wwqzz155q999q''!**55q999)Q]C;;;)Q]As;;;;;r!c|jj}|jj}|}||d}||d||t|jddS)Nrr)rrr.ryr@rir2rs     rtest_logical_invertz#ContextAPItests.test_logical_invert
s,&,&GII
WWT]]++))$//333)Q%5v>>>>>r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_logical_orzContextAPItests.test_logical_or
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_logical_xorz ContextAPItests.test_logical_xor
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_maxzContextAPItests.test_max#
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_max_magzContextAPItests.test_max_mag/
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_minzContextAPItests.test_min;
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_min_magzContextAPItests.test_min_magG
rr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.minusr@rir2rs     r
test_minuszContextAPItests.test_minusS
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.r1r@rir2rs     r
test_multiplyzContextAPItests.test_multiply\
,&,&GII
JJwwqzz771::..Aq))1---GGAJJ22A666Awwqzz22A666)QZa888)QZC88888r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_next_minuszContextAPItests.test_next_minush
s|,&,&GII
LL%%b))1---)Q\488888r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_next_pluszContextAPItests.test_next_plusq
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_next_towardz ContextAPItests.test_next_towardz
rr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_normalizezContextAPItests.test_normalize
rr!c|jj}|jj}|}||d||d||d||d||d||ddS)Nrmrrp)rrr.r@rg)rrr.rs    rtest_number_classz!ContextAPItests.test_number_class
s,&,&GII,,annWWS\\.J.JKKK**ANN771::,F,FGGG,,annWWS\\.J.JKKKKKr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.plusr@rir2rs     r	test_pluszContextAPItests.test_plus
rr!c|jj}|jj}|}||d|d}||dd||||dd|||d|d||||d|d||t|jdd|t|jdd||dddddS)	Nrrrrrvrr)modulor[r)rrr.powerr@rir2rs     r
test_powerzContextAPItests.test_power
sX,&,&GII
GGGGAJJ

++A***Q//333GGAJJ//333WWQZZ88!<<<)QWc1555)QWa555Q!44a88888r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rrYzContextAPItests.test_quantize
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.	remainderr@rir2rs     rtest_remainderzContextAPItests.test_remainder
s,&,&GII
KK

GGAJJ//Q**A...WWQZZ33Q777Q

33Q777)Q[#q999)Q[!S99999r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_remainder_nearz#ContextAPItests.test_remainder_near
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_rotatezContextAPItests.test_rotate
rr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     r	test_sqrtzContextAPItests.test_sqrt
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_same_quantumz!ContextAPItests.test_same_quantum
s,&,&GII
NN771::wwqzz221--q111

A66:::771::66:::)Q^S!<<<)Q^Q<<<<<r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     rtest_scalebzContextAPItests.test_scaleb
rr!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.rr@rir2rs     r
test_shiftzContextAPItests.test_shifts,&,&GII
GGGGAJJ

++A***Q//333GGAJJ//333)QWc1555)QWa55555r!cB|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)rrr.subtractr@rir2rs     r
test_subtractzContextAPItests.test_subtractrr!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_to_eng_stringz"ContextAPItests.test_to_eng_string|,&,&GII
OOGGBKK((,,a000)Q_d;;;;;r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_to_sci_stringz"ContextAPItests.test_to_sci_string!r!r!c|jj}|jj}|}||d}||d||t|jddSr)rrr.rr@rir2rs     rtest_to_integral_exactz&ContextAPItests.test_to_integral_exact*s,&,&GII
,,,,R00!444)Q%8$?????r!c^|jj}|jj}|}||d}||d||t|jd|t|jdddS)Nrr,r)rrr.rr@rir2rs     rtest_to_integral_valuez&ContextAPItests.test_to_integral_value3s,&,&GII
,,,,R00!444)Q%8$???)Q%8"cBBBBBr!N)Grr_r`r	r
rrrrrr9rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrYrrrrrrrrr r#r%r'rr!rrrSs999(!$_$.@AAA@@BA"!\@;1;1;1z===
+
+
+	@	@	@222
4
4
4
8
8
8
?
?
?
>
>
>
B
B
B777;;;:::
;
;
;
7
7
7
;
;
;
7
7
72222224888:::555888666888666;;;666111444333
<
<
<???
;
;
;
<
<
<
4
4
4
8
8
8
4
4
4
8
8
8444
9
9
9999888
<
<
<888LLL333999
9
9
9
:
:
:
?
?
?
7
7
7333
=
=
=
7
7
7
6
6
6
9
9
9<<<<<<@@@CCCCCr!rceZdZeZdS)CContextAPItestsNrrr!rr)r)=rr!r)ceZdZeZdS)PyContextAPItestsNrrr!rr+r+@rr!r+c>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
ContextWithStatementc@|jj}|jj}|}|5}|}dddn#1swxYwY|}|||d|||d|||ddS)N!did not restore context correctlydid not copy the context __enter__ returned wrong context)rrrrassertIsNot)rrrorig_ctx	enter_ctxset_ctx	final_ctxs       rtest_localcontextz&ContextWithStatement.test_localcontextGs\,
|0:<<
\^^	#y jllG	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#JLL	

h	+NOOO7,FGGG

gy*LMMMMMsAAAc|jj}|jj}|jj}|jj}|}|d}||5}|}dddn#1swxYwY|}|||d||j|jd|||d|||ddS)Nrr+r/zdid not set correct contextr0r1)rr.rrrr@r+r2)	rr.rrr3new_ctxr4r5r6s	         rtest_localcontextargz)ContextWithStatement.test_localcontextargTs),&\,
|0|0:<<'r"""
\'
"
"	#i jllG	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#JLL	

h	+NOOOw|5RSSS'+EFFF

gy*LMMMMMsA))A-0A-c2|jdtdddd5}||jd||j|jj||jd||jd||jd||j	ddddn#1swxYwY|
t|jjd|
t|jjd|
t|jjd	
|
t|jjd|
t|jjd
|
t|jjd|
t|jjd|
t|jjd|
t|jjd|
t|jjd|
t|jjd
dS)Nrirr)r+r,rXr]rra)r^rXrtr]rrrarrUrRr-)
rrrr@r+r,rXr]rrarir2rrs  rtest_localcontext_kwargsz-ContextWithStatement.test_localcontext_kwargses
\
&
&o2'


	+SXr***S\4<+GHHHSXs+++SXr***S\1---SY***
	+
	+
	+
	+
	+
	+
	+
	+
	+
	+
	+
	+
	+
	+
	+	
)T\%>"MMM*dl&?aHHH*dl&?bIII*dl&?!LLL*dl&?qIII)T\%>LLL)T\%>KKK)T\%>bIII)T\%>bIII)T\%>RHHH)T\%>RHHHHHsB-CC#&C#c|j}|j}|jd5}||jd||j|dddn#1swxYwY|jd5}||jd||j|ddddS#1swxYwYdS)Nrr9r=)rrr+rr@)rr	orig_precctx2s    r>test_local_context_kwargs_does_not_overwrite_existing_argumentzSContextWithStatement.test_local_context_kwargs_does_not_overwrite_existing_argumentscl%%''H	
\
&
&B
&
/
/	24TY+++SXy111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2\
&
&B
&
/
/	24TY+++SXy111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s#7A??BB%7C))C-0C-c	|jj}|jj}|jj}|jj}|jj}|jj}|}||d}|5}	||	j	|j	||	j
|j
d|	j
|<d|	_||jd|
||	jd||	j	|||5}
||
j	|j	||
j
|j
|
||
j|dd||
j	|||
j	|~
dddn#1swxYwY||	j	|~	dddn#1swxYwY||jd||j	|||j	|||j	|||j	|dS)Nr?Tz0e-999z3.4e200r)rrr.rrrrr/r@rRr-rXrSrirr#r
r$)rrr.rrrrr3r:r*r(s           rtest_nested_with_statementsz0ContextWithStatement.test_nested_with_statementss,&,&\,
|0,&<(:<<'s###
\^^	rRXx~666RXx~666 $BHWBG
t444gr'8(CCCOOBHW-...g&&
"  7=999  7=999!!(BHggi6H6H!LLL  '!2333 2333
















RXh/000!															"	
HM400001111222w/000x011111s8=B4H1B(G%H%G)	)H,G)	-$HH!$H!c	8|jj}|5}~|5}~|5}~|5}~dddn#1swxYwYdddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdSrrrrrr*r(r)c4s      rtest_with_statements_gc1z-ContextWithStatement.test_with_statements_gc1s|0
\^^	r
2!\^^r%2














																		syBA7A A		A 	A


A A

A A7 A$$A7'A$(A7+B7A;	;B>A;	?BBBc	>|jj}|5}||5}~||5}~||5}~~dddn#1swxYwYdddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdSrrNrOs      rtest_with_statements_gc2z-ContextWithStatement.test_with_statements_gc2s|0
\^^	rb!!
R!\"%%%b))R














																		szB
A:
A#A	A#A
A#A
A#A:#A''A:*A'+A:.B:A>	>BA>	BBBc	|jj}|jj}|jj}|jj}|5}~|d}||||5}~||jd~|d}||~||jd|d}	||	||jd||	5}
~	||
jd~
|d}||~||jd|5}||jd~dddn#1swxYwYdddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)Nrr9rrr)rr.rrr3r@r+)
rr.rrr3r*n1r(n2n3r)n4rPs
             rtest_with_statements_gc3z-ContextWithStatement.test_with_statements_gc3s,&|0\,
\,

\^^	raBJrNNNb!!
R  !,,,W!___
2  !2A666W!___
2  !2A666!\"%%
$$RWa000 aBJrNNN$$ZZ\\%6:::%2((!444





























																			s$GBF7=A#F  F		=F 	F


F F

F F7 F$$F7'F$(F7+G7F;	;G>F;	?GGGN)rr_r`r7r;rDrHrLrQrSrYrr!rr-r-CsNNNNNN"III8222!2!2!2F





r!r-ceZdZeZdS)CContextWithStatementNrrr!rr[r[rr!r[ceZdZeZdS)PyContextWithStatementNrrr!rr]r]rr!r]c<eZdZdZdZedZdZdZdS)ContextFlagscvjj}jj}jj}jj}jj}jj}jj}fd}|dddtgg}	|	j	|dgf|	j
|dgf|	j|d|d	gf|	j|d|d	gf|	j
|d|d	gfg}
|g|g|g|g|g|||||gg}|
D]8\}}
|	||
}d
|	jD}|D]}|	|D]}||	|||
}t#|}|D]}||vr|||t(d|	jD}|t(||d
d|d|dz||dd|d|z:dS)Ncjtkrd|j|<|j|r|dS||dSNT)rrrRr-_raise_error)r&flagrs  rraise_errorz7ContextFlags.test_flags_irrelevant.<locals>.raise_errorsV|q  &*
d#=&J$$T*****r!r*r9r)r+rXr]r,r-rRz100E-425000010rrtz
9.87654321cg|]	\}}||
Srrrkrs   rr'z6ContextFlags.test_flags_irrelevant.<locals>.<listcomp>s!>>>41aA>Q>>>r!r+cg|]	\}}||
Srrrgs   rr'z6ContextFlags.test_flags_irrelevant.<locals>.<listcomp>'s!EEE31Q1EQEEEr!z=operation produces different answers depending on flags set: z	expected z, got rz9operation raises different flags depending on flags set: )rrr.rrrrrr/rerrr1rr/rRrrUr8r>rCr@)rrr.rrrrrrer&
operationsflagsetsfnrrErRextra_flagsrdnew_ansexpected_flags	new_flagss`                    rtest_flags_irrelevantz"ContextFlags.test_flags_irrelevants,&,&,&,&L*	,&L*		+	+	+	+	+'qI#2"BHHH
^gg&67789
\GGAJJ<(
[77<00'',2G2GHI

 5 5ww|7L7LMN

 5 5ww|7L7LMN
Iy9+y9+gy'9EG#	W	WHB!!!"d)C>>7=#6#6#8#8>>>E'
W
W##%%%'//DK...."d)"&e'44D>11&--d333###+++FE'-*=*=*?*?EEE	2&&&  g!`!`;>33!H"IJJJ  N"]"];I>>99"U#VWWWW+
W
	W	Wr!c&|jj}|jj}|jj}|}||j|j||j|j|j|_||j|j||j|jd|j|<|j|_||j|j||j|ji}||j|||j||j|d||<|||j||j||di}|||j||j|dg}|||j||j|dS)NTFr)	rr.rrrSrRr-r@update)rr.rrrrs      rtest_flag_comparisonsz"ContextFlags.test_flag_comparisons1s,&,&,&GII	
AGQW---AGQW---'!'***!'***'!'***!'***	AG$$$!$$$'
Aqw'''AGQ'''UOAqw'''AGQ'''
GAqw'''AGQ'''''r!c|jj}|jj}|jj}|5}||j||||dd||j	||||
dd||j	|||d}||j	|||d||j	|||d}||j	|||d||j	|d|j|<||
||d||j	|||
||j
d||j	|||d}||j	|||d}||j	|ddddS#1swxYwYdS)Ng@T)rrrsrr$r-r/r@r#rRrrrQri)rrrsrrrs      rtest_float_operationz!ContextFlags.test_float_operationWs,&4|0
\^^.	6qQW^4555
MMOOOWWS\\3///OOAGN3444
MMOOOQ--c22C888OOAGN3444
MMOOO""3''AQW^4555Q$$$OOAGN3444
MMOOO++C00AQW^4555Q$$$OOAGN3444'+AGN#
MMOOOngs;;;OOAGN3444
MMOOOna.>DDDOOAGN3444
MMOOO""3''AQW^4555
MMOOO++C00AQW^4555].	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6.	6sLMM	Mc	

jjjj}jjjj}dfd		dd
dddddd	d
dtd
td
d	

fd	}dfd	}|}||5}|j||d||dd|j<||||ddddS#1swxYwYdS)Nc
|t||}|kr|||n||d|jdSrb)r/r"rirr#rR)rr[r'r&signalrrsrs      rassert_attrz7ContextFlags.test_float_comparison.<locals>.assert_attrs!!!4  A''!!&!Q////

aaddD)))OOGM.9:::::r!r^r_rar`r>rrrPrrrrcdD]}
|||dD]}|||
d|dd|dd|dd|dd|d	
d|dd|d
d|dddd|d	d|d
d|ddtdd|ddS)	N)rr)r
rrrrrr|r)r)rryr'rrzbig_dbig_finf_dinf_f	neg_inf_d	neg_inf_f
neg_zero_d
neg_zero_fsmall_dsmall_fzero_dzero_fs   rdoitz0ContextFlags.test_float_comparison.<locals>.doits*
=
=GUD!V<<<<*
=
=E7D!V<<<<
K(At<<<K
J!TBBBK
FHa>>>K
Ha>>>K!T:::K	9h4@@@Kuh4888
K!T:::KXq$???K	5(At<<<Ky(At<<<Keh4HHHHHr!c|tddg}t|d|j||r(|tddgntddg}|j|dddfv}|j|dddddiv}|jdS)	Nr>z100.0rrrg$@rr[)r/rr@lenr#rRrisorted)rryrr[rrsrs    rtest_containersz;ContextFlags.test_float_comparison.<locals>.test_containerssU
MMOOOUGGG,,-..ASVVQ'''OOAGN3444
MMOOO
4!!&&32HIIIID''&//233OOAGN3444
MMOOO#..AOOAGN3444
MMOOOc#66AOOAGN344444r!)ryTr)rrr.rsrrr$r-)rr.rrrrrrrsrzr|r}r~rrrrrrrrrs`      @@@@@@@@@@@@@@@rtest_float_comparisonz"ContextFlags.test_float_comparisonsn,&,&4|0	;	;	;	;	;	;	;'&//WV__


##GK((	e&MM		I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I<	5	5	5	5	5	5	5	5*WYY
\"

	6QW^4555D4    OAd++++&*AGN#D>****OAn5555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6s AEEEc|jj}|jj}|jj}|jj}|}||j|||j||d|j|<d|j|<|	|j||	|j|dSrb)
rrr.rrsr$rRr-clear_trapsr#)rrr.rrsr&s      rtest_float_operation_defaultz)ContextFlags.test_float_operation_defaults,&,&,&3'))~6777~6777!%
g(,
n%
n5666
g./////r!N)	rr_r`rqrtrrvrrrr!rr_r_sy@W@W@WD$($($(L363636jY6Y6Y6v00000r!r_ceZdZeZdS)
CContextFlagsNrrr!rrrrr!rceZdZeZdS)PyContextFlagsNrrr!rrrrr!rceZdZ	dZdZdS)SpecialContextsc
|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj	}	t||d|||||	g|}
|j}|j}d}
	dx|_|_||fD]H}|||}|
||||jdIn#t$r}|j}
Yd}~nd}~wwxYw||_||_||
|
r|
dS#||_||_||
|
r|
wxYw)Nr-i)rBasicContextExtendedContextrr3rrrrrr(rnr+r2r@	Exceptionr)rrrrr3rrrrrsavecontextbasic_context_precextended_context_precextemplaterr)s                 rtest_context_templatesz&SpecialContexts.test_context_templatess|0,6\,
\,
<84<(L*	,&t\7
~xGL	
	
	
!jll''))). / 4
	7::L 4(/9
.
.
8$$$JLL  H---  ----	
.
			BBBBBB	!3L#8O J{###


!3L#8O J{###
s11AD
E

D(D#E
#D((E

E)cN|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|	|j
d|	|j
dt||d|||g|}	|j
}
d}	|}|j
}
d|_
|}|	|j
|
|||}|
|||	|j
dn#t$r}|j}Yd}~nd}~wwxYw|
|_
||	|r|dS#|
|_
||	|r|wxYw)Nr*r-i)rr;rrrr3rrrr@r+r(rnr2rr)rr;rrrr3rrrrdefault_context_precrrsaveprecr)s               rtest_default_contextz$SpecialContexts.test_default_context%s4|0,6\,
\,
<84<(*A...-q111t^W
~x8	
	
	
!jll''))-2
	
AvH"%N
AQVX...J~&&&
AQ///QVS))))			BBBBBB	#7NJ{###


#7NJ{###
s1BEF
E1 E,'F,E11FF$N)rr_r`rrrr!rrrs6%"""H'''''r!rceZdZeZdS)CSpecialContextsNrrr!rrrNrr!rceZdZeZdS)PySpecialContextsNrrr!rrrQrr!rceZdZdZdS)ContextInputValidationc	|jj}|jj}|}dD]}}t	||d|t
||d|tt||d|tt||d~t	|dd|t
|dd|tt|dd|tt|dd|tt|d	d|tt|d	d
|tt|d	d|tt|d	ddD]m}|tt||d|tt||d
|tt||gdn|tt|dd|tt|dg|tt|di|tt|dddidD]#}|t|j|$|tt|d
|tt|d
|t|d|t|d|t|d
|t|d|t|dg|t|dg|t|d|t|ddS)Nr+r]rrtrrXrrrrrr,r*rrrarrrrrRr-rr)r+r]rXr,rrarRr-rUrAr@rrBQrCrr)rr)
rr.r;rnr.r@r"rirr2r3KeyError__delattr__)rr.r;rr's     rtest_invalid_contextz+ContextInputValidation.test_invalid_contextVs,&4!!%	B	BDAtV$$$WQ--v666j'1dB???i!T5AAAA	67###F++W555*gq&!<<<)WaAAA)WaR@@@)WaQ???)WaSAAA)WaUCCC*	D	DDj'1dB???j'1dA>>>i!T777CCCC	
.'1fcBBB	
)Wa"===(GQ<<<(GQ-a0	2	2	2'	C	CDnamTBBBB	
)Wa333)Wa333	
)Wv>>>)Wu===*gQ777*g;;;(GC5999(GC5999	
)WE:::)WE:::::r!N)rr_r`rrr!rrrTs#:;:;:;:;:;r!rceZdZeZdS)CContextInputValidationNrrr!rrrrr!rceZdZeZdS)PyContextInputValidationNrrr!rrrrr!rceZdZdZdS)ContextSubclassingc	|jj}jj}j}j}j}j}j}j	}j
}	Gfdd}
}|
}dD]4}
|t||
t||
5|j
t|
fiddi|
d}||jd|
|	|j|dd	|j
t"|
fid
di|
t$d}||jt$|||d
d|j
t|
fiddi|
dd}||jd||d|d}|||d|||||fD]"}||j|#|j
t|
fiddi|
dd}||jd|
||j|d|d|jt4kr(|||fD]"}||j|#|j
t|
fiddi|
d	}||jd	|d}|||d|j
t|
fiddi|
dd }||jd||d}|t?|d!|j
t"|
fid"di|
||g#}||fD]"}||j|#| tBD]"}|"|j|#|j
t"|
fid$di|
||g%}||fD]"}||j#|#|$tBD]"}|"|j#|#dS)&Nc$eZdZ			dfd	ZdS)>ContextSubclassing.test_context_subclassing.<locals>.MyContextNc		||||_|||_|||_|||_|||_|||_8ttrfdt
zD|_
:ttrfdt
zD|_dSdS)Nci|]}||vSrr)rrrRs  r
<dictcomp>z[ContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__.<locals>.<dictcomp> Y Y YAAJ Y Y Yr!ci|]}||vSrr)rrr-s  rrz[ContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__.<locals>.<dictcomp>rr!)rr+r,rXr]rrarrUr9rRr-)rr+r,rXr]rrarRr-r.rs       ``rrzGContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__s  &&&# $DI'$,DM# $DI# $DI'$,DM$!&DJ$!%..Z Y Y Y Y9PSX9X Y Y Y!&DJ$!%..Z Y Y Y Y9PSX9X Y Y Y!&DJJJ%$r!)NNNNNNNNr)r.rsr	MyContextrsAIM@D%)
'
'
'
'
'
'
'
'
'r!rr+r,rXr]rrarRr-r+rtrr99e2rr,XYZ)r,r+rhr*rXrv)rXr+z1e-99z2.234e-2000r>r])r]r+1e99z
2.234e2000rr@1E222z1e+222rarc)rar]z!1.000000000000000000000000000E+99rRrBr-rC)%rrr.rrrrrrrrr@r"rirr+rr2rr,rrXrr#rRr]rrrrrar;r/r9r$r-r)rrrrrrrrrrrrrr'rryr.rs                @@rtest_context_subclassingz+ContextSubclassing.test_context_subclassings,/// //#/%	%	"3	'	'	'	'	'	'	'	'	'	'	'4
GIIIKK'	A	ADWQ--wq$/?/?@@@@	*i??F2;???I1###*AJJJJ	)YEE:e2DEEEIz222Z000//333	*i>>F1:>>>I2A&&&$$$
EE'''""GGM$:$:;;GGENN+++	9gwG	-	-FOOAGFO,,,,	*i??F2;???I11%%%###(AE776??GGL<Q<QRRR<1"Hg6
1
10000	*iCCJr?CCCIq!!!Q'''
W%%++X666	*i??GA;???IAB'''!$$$
FF776??##Q!DEEE	)YBB75/BBBIWn5666/	-	-FOOAGFO,,,,	

$W-	.	.FQWV_----	)YBB75/BBBIWn5666/	-	-FOOAGFO,,,,	

$W-	.	.FQWV_----	.	.r!N)rr_r`rrr!rrrs(i.i.i.i.i.r!rceZdZeZdS)CContextSubclassingNrrr!rrrrr!rceZdZeZdS)PyContextSubclassingNrrr!rrrrr!rc eZdZdZdZdZdS)CheckAttributesc|tjtj|tjtj|tjtj|tjtj|tjdup
tjdu|tjdup
tjdu|tj	tj	|ttttdS)NTF)r@rrUrrrorpr#r<__version__dirrs rtest_module_attributesz&CheckAttributes.test_module_attributess	
QZ000QZ000QZ000ak222$.I!.E2IJJJ$.I!.E2IJJJ
666QQ(((((r!cDdttD}dttD}|t|t|z
tdS)NcDg|]}d|vs|d|S__rKrrrs  rr'z;CheckAttributes.test_context_attributes.<locals>.<listcomp> -OOO1DAIIQ\\#=N=NIQIIIr!cDg|]}d|vs|d|Srrrs  rr'z;CheckAttributes.test_context_attributes.<locals>.<listcomp>!rr!)rrr.rr@rrrrs   rtest_context_attributesz'CheckAttributes.test_context_attributessxOOAIIKK((OOOOOAIIKK((OOOQ#a&&#%%00000r!cHdttdD}dttdD}|t	|t	|z
t	dS)NcDg|]}d|vs|d|Srrrs  rr'z;CheckAttributes.test_decimal_attributes.<locals>.<listcomp>&-PPP1TQYYall3>O>OYQYYYr!r*cDg|]}d|vs|d|Srrrs  rr'z;CheckAttributes.test_decimal_attributes.<locals>.<listcomp>'rr!)rrrr@rrs   rtest_decimal_attributesz'CheckAttributes.test_decimal_attributes$s|PPAIIaLL))PPPPPAIIaLL))PPPQ#a&&#%%00000r!N)rr_r`rrrrr!rrrsA
)
)
)11111111r!rc\eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdS)CoveragecD|jj}||dd||dd||dddS)N	1234e9999i'rrr)rrr@rmrfs  r
test_adjustedzCoverage.test_adjusted,s,&--6688%@@@0022A6660022A66666r!c|jj}|jj}|d}||d|}||d}||ddS)Nr*)rrrror@)rrrrrs     rtest_canonicalzCoverage.test_canonical4s,&\,
GAJJ  ""AJLL
KK

##Ar!cJ|jj}d|_d|_d|_t|_d|_d|_	t|jD]}d|j|<d|j|<|
}d}|||dS)Nrr9rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr;rnr+r]rXrr,rrar9rRr-__repr__r@)rrr+rrs     rtest_context_reprzCoverage.test_context_repr?sL',,..$

!$,/	!	!C AGCL AGCLL
JJLL
"	
Ar!cT
|jj}|jj}|5}d|_d|_d|_|t|dd||ddzd||ddzd	||dd
zd||d|ddd|	|d
d
d
d|t|dd	d
d	||dd|	|d
d|	|dd||dd||dd||dd	||dd||dd||ddzd||dd||d|d||d|d||dd||d
d||dd
zd||dd
z
d||dd||d||d||d||d||d||d||ddddn#1swxYwY|5}d|_d d!z}||}|}||||}|||| |d}|||ddddS#1swxYwYdS)"Nrrtz-10r7rr,rvrrz1.2rer|Tz1.01rF20580rrr*z2E+1z-1E+1z+Normalrz1.12345rrrdrii)!rrrr+r]rXr@rrrrpowrZrrrrrryrrrrgrr#r{r}rrrrqrsru)rrrrrrrs       rrzCoverage.test_implicit_contextRst,&|0
\^^<	4qAFAFAF
S00"555WWS\\A-q111WWT]]Q.222WWT]]a/333WWU^^//CCQGGGMM''%..,,Q2299;;TBBBSa33Q777WWV__0022A666MM''&//3355u===MM''&//6688$???WWT]]--//333WWT]]0022A666WWU^^0022A666WWT]]99;;Q???ggenn_b111WWS\\A-q111WWT]]5577;;;WWT]]4466HHHWWU^^55779I9IJJJWWT]]77999EEEggdmm^R000WWT]]Q.222WWT]]Q.222WWY//AACCQGGG
OOGGCLL5577888OOGGCLL2244555OOGGCLL2244555OOGGFOO3355666OOGGDMM3355666OOGGCLL0022333OOGGCLL0022333y<	4<	4<	4<	4<	4<	4<	4<	4<	4<	4<	4<	4<	4<	4<	4~\^^	#qAFAA

AQ"""

AQ"""GGAJJ''AQ"""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#s%V+WW!W/B!ZZ!$Z!c||jj}|jj}|jj}|jj}|5}t|dd\}}|||d|||dt|dd\}}||o|d|j	|<t|dd\}}||o|d|j	|<|
t|d|d\}}||o|||j||
t|dd	\}}||o|||j||
t|d
d
\}}||o|||j|d|j	|<|
t|dd
\}}||o|||j|o|j|ddddS#1swxYwYdS)N10912837129r10901935194r|rFrrr)
rrrrrr-r@r#rr-r/rRr)rrrrrrrrs        rrzCoverage.test_divmods_,&|0<84
\^^!	5q''-00$77DAqQ
 3 3444Q///''%..!,,DAqOOAHHJJ5188::666(-AG$%''%..!,,DAqOOAHHJJ5188::666(-AG$%
MMOOO''%..''%..99DAqOOAHHJJ5188::666OOAG$45666
MMOOO''%..#..DAqOOAMMOO:

;;;OOAG$45666
MMOOO''!**a((DAqOOAHHJJ5188::666OOAG$45666&+AGN#
MMOOO''"++q))DAqOOAMMOO:

;;;OOAG$454GN3
5
5
5A!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5!	5sM)N11N58N5c|jj}|jj}|jj}|jj}|5}d|_|||ddz|d||j	|d|_d|_
d|_|d|j|<||d|d	z|d
||j	|ddddS#1swxYwYdS)Nrrrr]rrtFrrr)
rrrrrr+r/r@r#rRr]rXr-)rrrrrrs      rrzCoverage.test_powersi,&|0<(,&
\^^	/qAF
MMOOOWWU^^s2GGFOODDDOOAGG,---AFAFAF
MMOOO %AGHWWU^^wwu~~=wwu~~NNNOOAGH-...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/sC.D66D:=D:cn|jj}|jj}|jj}|5}d|_d|_d|_d|j|<|d|d}|	|
ddddS#1swxYwYdS)NrrtFr1e1)rrrrr+r]rXr-rr#rrrrrrrs      rrYzCoverage.test_quantizes,&|0<8
\^^	(qAFAFAF(-AG$%$$WWU^^44AOOAHHJJ'''
	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sA.B**B.1B.c|jj}|jj}|}||dd||ddS)Nrr)rrrr@rnrs    r
test_radixzCoverage.test_radixso,&\,
JLL++--r222B'''''r!c	|jj}dD]=}|t|d|dt>dS)N)rrrrrr"r$r&rr)rrrr"re)rrr's   rr1zCoverage.test_rops`,&M	N	NDMM5'''#,,55e<<nMMMM	N	Nr!c|jj}|jj}|5}d|_|t|dd|t|dd|t|ddd|t|d	d
d|t|d	dd
|t|djd|t|djddddddS#1swxYwYdS)Nrrgr,z9.99e-5rdrtrvz1.23457rerz1.2345000000rz0E+10rXrr)	rrrr+r@r;	__round__rir2)rrrrs    r
test_roundzCoverage.test_rounds,&|0
\^^
	JqAFS!:!:!<!<==tDDDS!3!3!=!=!?!?@@#FFFS!6!6!@!@!C!CDDiPPPS!2!2!<!<R!@!@AA>RRRS!2!2!<!<S!A!ABBGLLLi)BCHHHi)BAqIII
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	J
	JsFGG

G
c||j}|t|jdgdS)Nr )rr.rirr)rrs  rtest_create_decimalzCoverage.test_create_decimal
s8L  ""*a&6>>>>>r!cH|jj}|jj}|5}d|_|ddzddzz}|t|d||dddddS#1swxYwYdS)NrciiriSrr)rrrr+r@rrrrrrrs     rr@zCoverage.test_ints,&|0
\^^	1qAFd
##b$h.ASVVQ'''Q]]__a000		1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sA'BBBcV|jj}|}d|_ddz}||}|||||}|||||d}|||dS)Nriir)rr.r+rqr@rsru)rr.rrrs     rrzCoverage.test_copys,&GIIdlO
JJqMMQB
MM!QB
KK1QBr!N)rr_r`rrrrrrrYrr1rrr@rrr!rrr*s777			&O#O#O#b'5'5'5R///(((((((NNNJJJ"???111     r!rceZdZeZdS)	CCoverageNrrr!rrr+rr!rc,eZdZeZfdZfdZxZS)
PyCoveragecttj|_tjddSrrrs rrzPyCoverage.setUp1rr!cztj|jtdSrrrs rrzPyCoverage.tearDown6r r!r!r#s@rr	r	.r$r!r	ceZdZ	dZdS)PyFunctionalityctj}tj}gd}|D]3\}}}|t	||||4dS)N)
)z.0erz1e+0)z#.0erz1.e+0)rGrr)z#.0fr1.)rO1.1r)z#grr)rQrr)z#.0grr)rWrz100%)z#.0%rz100.%)rrrr@r)rrrrrrrNs       rtest_py_alternate_formattingz,PyFunctionality.test_py_alternate_formatting=sm)~*	>	>NCFVGGAJJ44f====	>	>r!N)rr_r`rrr!rr
r
:s&+>>>>>r!r
c.eZdZ	dZdZdZdZdZdS)
PyWhiteboxctj}tj}|5}d|_|d|dz}|||d|d|dz}|||d|d|dz}|d|d	z}|||d
|d|d	z}|dd
z|d	z}d|_|d|dz}d|_|ddz|dz}ddddS#1swxYwYdS)Nrirz
0.00390625z-0.6z0.0012885819256e7lo
z-0.0625rd152587890625e7rvic
r152587890625riB)rrrr+r@rs     rtest_py_exact_powerzPyWhitebox.test_py_exact_powerUs)~
\^^	3qAF''&//1AQ 5 5666''&//1AQ 7 7888  GGFOO3A%%););;AQ///())WWY-?-??A4  GGI$6$66AAF''776??:AAF3776??2A)	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3sD1E!!E%(E%c	tj}tj}tj}|}tdttD|_|||d|d|d	|dd2	fd	}|j	j	j
j
jj|d|dd|d	d|d
d|dd|dd|d
d|dd|dd|d|dd|d|d|d|dd|dd|d|d|d|dd|dd|dd|d|dd|dd|d d|d!d|d"d|d#|d$d|d%d|d&|d'|d(d|d)d|d*d|d+|d,d|d-d|d.d|d/|d0|d1dS)3Nc3K|]}|dfV	dS)rNrrs  rr z=PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>ws&99!1v999999r!z-25e55z33e+33Fc|rtd|zdzjjjjjjjjjjjjdStd|zdzjjjjjjdS)Nzd1.z(d2)z())r<r@_sign_int_exp)	operationuseOtherb1b2rrrs  rcheckSameDecz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDecs1
3UY&/000  28444  "'222  "'222  28444  "'222  "'22222UY&-...  28444  "'222  "'22222r!__abs__rTrrrrrrr
	__float__r#r|__int__	__trunc__r!r__neg____bool____pos__r%rrrr$r"rr&r__str__rrrmrr#rrrrrrrrr)F)rrr;r3rnr0r9r-r@rrr)
rrr;r3rr$r"r#rrs
`     @@@@rtest_py_immutability_operationsz*PyWhitebox.test_py_immutability_operationsps))\
!!99~a'899999
1



WX


WX


WX


WX


	3
	3
	3
	3
	3
	3
	3
	3
	3
	3	28,,,"'***"'***YY%%%\4(((Xt$$$Xt$$$Xt$$$Xt$$$Xt$$$Xt$$$[!!!^T***Z   Y[!!!Y%%%Y%%%YZ   YY%%%Z&&&]D)))Z   _d+++Z&&&Z&&&Z&&&Z&&&YY%%%]D)))Z   Z   Y%%%UD!!!UD!!![!!!Z&&&%t,,,^T***V_%%%]#####r!ctj}|d}||}|t|d|t|t|dS)Nrlrm)rrr@r;rSrCrs    rtest_py_decimal_idzPyWhitebox.test_py_decimal_idsg)GBKKGAJJQ&&&BqEE2a55)))))r!ctj}tj}|5}|ddt}||ddddS#1swxYwYdS)Nr|r)rrr_rescalerr#rrs     rtest_py_rescalezPyWhitebox.test_py_rescales)~
\^^	(q''844AOOAHHJJ'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sAA<<BBc~tj}|t|djdt
dS)Nz3.1234r)rrrir_roundrrfs  rtest_py__roundzPyWhitebox.test_py__rounds6)*ggh&7&7&>8LLLLLr!N)rr_r`rr-r/r2r5rr!rrrRsk*3336M$M$M$^***(((MMMMMr!rcReZdZ	edZedZedZdS)CFunctionalityctj}tj}tj}tj}d}||}||jd||jd||jd|||||}||jd||jd||jd|||||}||jd||jd	||jd
||||	t|d|	t|d|	t|d
dS)Nc||jdt||dgt||dgdS)Nrr-rR)r@rar()rr&s  rassert_restz7CFunctionality.test_c_ieee_context.<locals>.assert_restsHW]A...4'26664'266666r!r`irrJrK"iirrti)rIEEEContext	DECIMAL32	DECIMAL64
DECIMAL128r@r+r]rXrirr)rr=r>r?r@r:rs       rtest_c_ieee_contextz"CFunctionality.test_c_ieee_contextsmK	K	\
	7	7	7

K	""###$$$%%%D!K	""$$$%%%&&&D!K
##$$$&&&'''D!	
-e<<<*k2666*k488888r!ctj}|tjtj}||jtj||jtjdS)N)rRr-)rr.r9
DecRoundedr@_flags_trapsrs   rtest_c_contextzCFunctionality.test_c_contexts[)G!,al;;;1<0001<00000r!ctjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjf}|tjd|tjd|tjd|tjdt+|D]\}}||d|z|tjtjtjztjztjztjztj	ztj
z|tjtjtjz|tjtjtjztjzdS)Nrrrir)rr9DecConversionSyntaxDecDivisionByZeroDecDivisionImpossibleDecDivisionUndefinedDecFpuError
DecInexactDecInvalidContextDecInvalidOperationDecMallocErrorDecFloatOperationDecOverflowrCDecSubnormalDecUnderflowr@r>r?r@IEEE_CONTEXT_MAX_BITSr5DecIEEEInvalidOperation	DecErrorsDecTraps)rcondrKrs    rtest_constantszCFunctionality.test_constantss
L!/1D
#Q%;
M1<)<
!1#3

NAN

	
b)))b)))s+++0#666dOO	&	&DAqQ1%%%%2.01/0',	-
./)
*	+	+	+	
2,-	.	.	.	
Q]21>A	C	C	C	C	Cr!N)rr_r`requires_extra_functionalityrArFr[rr!rr7r7so)!!9!9"!!9F"11"!1"#C#C"!#C#C#Cr!r7ceZdZ	dZdZdZdZdZdZe	dZ
dZe	d	Zd
Z
dZdZd
ZdZe	dZe	dZdZdZdZdZdZejejddejedejeddddZ dZ!dS)	CWhiteboxc|tj}tj}ddz}ddz}|5}d|_t	dD]^}tj||}tjdd}||z}	||||z}
||	|
_	ddddS#1swxYwYdS)Nr#$i@Brvri)rrrr+rwr.rr@)rrrr"r#rrKrr[rrs           rtest_bignumzCWhitebox.test_bignum/s)~
V
V
\^^	'qAF1XX
'
'$R,,$T400FGAJJ''!**,  A&&&&
'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'sA6B11B58B5cT|ttjdddS)Nr*r)rir2rrrs rtest_invalid_constructionz#CWhitebox.test_invalid_construction@s$)QY599999r!ctj}tj}tj}tj}||5|||dddddS#1swxYwYdS)N1e9999999999999999999)rrrr.rri)rrrr.rs     rtest_c_input_restrictionz"CWhitebox.test_c_input_restrictionCs)-)~
\''))
$
$	7	7.5
7
7
7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7sA))A-0A-ctj}tj}|}d|_d|_d|_t|_d|_	d|_
ttD]}d|j|<d|j
|<d|j|<d|j
|<|}d}|||dS)Nrr9rrTaQContext(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow], traps=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow]))rr;rsrnr+r]rXrr,rrar9rRr-rr@)rr;rsrr+rrs       rtest_c_context_reprzCWhitebox.test_c_context_reprNs))!!$

!!$	 	 CAGCLAGCLL"&"&
JJLL
O	
Ar!c	
tj}tj}tj}tj}tj}tj}tj}tjdk}|}	|	t|	jjdd|	t|	j
jdd|	t|	jj||	t|	j
j||	t t"|	ddg|	t t"|	ddg|	tt"|	dddi|	tt"|	dddi|	j}
|
|=d	|
d
<|	tt"|	d|
|	tt"|	d|
|rdnd}|rd
nd}dD]%}
|	tt"|	|
|&|	tt"|	d||	t|||	t|||	t|||	t&||dz|	t&||dz|	t&||dz
|	t&||dz|	t&||dzdD]}
|	t&t"|	|
|dz|	t&t"|	|
|dz
t(jdkrJ|	tt"|	|
||	tt"|	|
|dz
tjdkr|	t&t-|	d|dz|	t&t-|	d|dz|	t&t-|	d|dz
tjdkr|	tt-|	dd|	tt-|	dd|	tt-|	dd|	tt-|	dd|	tt-|	dd|	tt-|	dddD]}
|	tt"|	|
d|	tt"|	|
d|	t t"|	|
gd |rF|	tt"|	|
d!|	tt"|	|
d"|	t t.d#t1|	t t.d$t1|}|	t |d%||dS)&Nri!rrRrr-rriprrrlNZoiʚ;rrXr9r?r>rrAr@)r+rXr]rrawin32rrri?rti9rrzwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr)rr.rrrsrrr3rUrirrR__setitem__r-r__delitem__r2r.rnrrplatformr"execr)rr.rrrsrrr3HAVE_CONFIG_64rrint_maxgt_max_emaxr'
saved_contexts               rtest_c_context_errorszCWhitebox.test_c_context_errorsksi)-:)~\
\
*y0GII	
(AG$7a@@@(AG$7a@@@*ag&98DDD*ag&9;KLLL)Wa3%@@@)Wa#???(GQ!A???(GQ!A???
GLLNN
n%(GQ;;;(GQ;;;,8'' .9ffE%	I	IDj'1dKHHHH*gq&;,GGG	
*gK@@@*gK@@@*g[LAAA	
-wqyAAA-wqyAAA-xzBBB-	BBB-719EEEB	L	LDmWawqyIIImWaxzJJJ|w&&!!*gq$HHH!!*gq$
KKK
:""mWQ8I-J-J%ai
)
)
)mWQ8I-J-J%ai
)
)
)mWQ8I-J-J&hqj
*
*
*
:""j'!5F*G*GKKKj'!5F*G*G(
*
*
*j'!5F*G*GLLLj'!5F*G*G(
*
*
*j'!5F*G*G)
+
+
+j'!5F*G*GKKK*	I	IDj'1dB???j'1dA>>>i!T777CCC
I!!*gq$FFF!!*gq$HHH	
)T+K ((	$	$	$)TI ((	$	$	$
#

)Z777
=!!!!!r!c|tjtj|tjtj|tjtj|tjtj|tjtj|tjtj|tj	tj	|tj
tj
dSr)rrrrrrrrrr/rrs rtest_rounding_strings_internedz(CWhitebox.test_rounding_strings_interneds

aj!*---

alAL111

aoq777

amQ]333

aoq777

a'):;;;

a'):;;;

alAL11111r!c	xtj}tj}tj}tj}tj}tj}tjdk}|}|rdnd}	|tt|d|	dz|tt|d|	dz
tjdkrJ|tt|d|	|tt|d|	dz
dD]}
|tt||
|	dz|tt||
|	dz
tjdkrJ|tt||
|	|tt||
|	dz
|tt|dd	|tt|dd|tt|dgd
|rF|tt|dd|tt|dddD]H}
|tt||
d
|tt||
dIdS)Nrrr_allcrrrrk)rDrErtrrlrmrr)rr.rrrrr3rUrirr.rrprr2)rr.rrrrr3rrrrsr's           rtest_c_context_errors_extraz%CWhitebox.test_c_context_errors_extrasz)-:~\
\
*y0GII,8''	
-!XwqyIII-!XxzJJJ<7""j'1hHHHj'1h
KKK)	K	KDmWawqyIIImWaxzJJJ|w&&!!)WawGGG!!)WaxzJJJ	
*gq(B???*gq(A>>>)Wa777CCC	Ij'1hFFFj'1hHHH)	@	@Di!T6BBBi!T3????	@	@r!cNtj}tj}tj}tj}tj}tj}|}d|_t|_
d|_d|_d|_
d|_||jd||j
t||jd||jd||j
d||jd||d||dtjdkr|d	|d	|d
||jd	||jd	||jd
dSdS)Nr<iiHrri'irrhri)rr;rrrrrrnr+rr,r]rXrrar@EtinyEtoprUrrr)rr;rrrrrrs        rtest_c_valid_contextzCWhitebox.test_c_valid_contexts))K	))K	!!"

$$$]333'''&&&Q'''!$$$E***4(((
:""
i(((
i(((
j)))QVY///QVY///QVZ00000
#"r!ctj}|}||jdd|_||jddS)Nrr)rr;rnr@rz)rr;rs   rtest_c_valid_context_extraz$CWhitebox.test_c_valid_context_extra,sX)!!1%%%1%%%%%r!c	<tj}tj}tj}tj}tj}tjdkrdnd}|5}d|j|<|||dj	|dz
|||dj	||||dj	t|dz|tj|dj	t|dz
|t|dj	|dz
|t|dj	|dzddddS#1swxYwYdS)	NrrrTrXrrr)rrrrrrprUr-rirrr)rrrrrrprsrs        rtest_c_roundzCWhitebox.test_c_round5s)-~:K	Z)33''
\^^
	)q(,AG$%.0I&hqj
*
*
*.0I%
'
'
'.0F!(1*oo
/
/
/a0''#,,2H"9Q;///
1
1
1mWWV__-F&hqj
*
*
*mWWV__-F%ai
)
)
)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)
	)sD)FFFctj}tjdk}|t|djdgd|t|djdd|t|djg|t|djd|rdnd}|t|djd	|zdS)
Nrrz=10.10r*z<>=10.10rrrtz=%d.1)rrrUrir2rr)rrrrmaxsizes    r
test_c_formatzCWhitebox.test_c_formatMs)*y0)WWQZZ%:Hb!LLL)WWQZZ%:HaHHH)WWQZZ%:B???*ggajj&;ZHHH+8''*ggl&;&;&F!G+	-	-	-	-	-r!cbtj}tj}tj}|d}||d|t|jd|t|jdd|t|jd||d|t|jd|t|jdd|t|jd||	d|t|j	d|t|j	dd|t|j	d|5}|dt}|||d|d	t}|||dd|j|<|||dj	tddddS#1swxYwYdS)Nrr,rz99999999999999999999999999.9100000000000000000000000000Tz999.9)rrrrr@rrir2rrrr-)rrrrrrs      rtest_c_integralzCWhitebox.test_c_integral[s))~GBKK"---)Q]D999)Q]B<<<)Q]B777,,..333)Q%8$???)Q%8"cBBB)Q%8"===,,..333)Q%8$???)Q%8"cBBB)Q%8"===
\^^	Uq677II(SSAQ(E F FGGG677II(SSAQ(E F FGGG#AGGgwww'7'7'I8TTT	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	UsB9J$$J(+J(c
tj}tj}tj}tj}tj}||dd|tt|ddd|t|djdd|t|djd	dd|t|d
j
|dg|t|d
j
|d||t|d
j
|dd|t|d
j
|dtd
|5}||t|j|ddd|t|jd|t|jd|t|jdddd|t|jdd	dd|t)||dd||dd|j|<|||djd|||jdd||j||d|j|<|||djd|||jdd||j|d|j|<d|_||t|d
ddddddS#1swxYwYdS)Nz9.99e10z99.9E+9rrrIr*rrrrtz	1e-100000rrrr200Tri)rrrrrrr@rrir2rrgrrrrruror{r-r;rnr-rr#rRr/r+)rrrrrrrs       rtest_c_funcszCWhitebox.test_c_funcszsC)-)\
~++99;;YGGG)S''!**a===)WWQZZ%<c3GGG)WWQZZ%<acJJJGL!!*GGK,@,@"	
	
	
	
GL!!*GGK,@,@**,,	
	
	
	
GL!!*GGK,@,@"	
	
	
	
GL!!*GGK,@,@(D	
	
	

\^^	Lq
MMOOO
iggajj#sKKKic:::i===i1acBBBiAsCHHHSWWS\\!:!:;;UCCCQWWYY+++&*AGN#nggajj.CQGGGnah1===OOAG$45666
MMOOO(,AG$%.

0EqIII.!Q???OOAGN3444(,AG$%AF.WWT]]AsKKK5	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	LsIP<<QQcPtj}tj}|d}dD]M}t||}|t
|d|t
|ddNdD]M}t||}|t
|d|t
|ddN|t
|jdg|t
|jig|t
|jgg|t
|jdg|t
|jig|t
|jgg|t
|jdg|t
|jig|t
|jgg|t
|j	ddd|t
|j	dddd|t
|j
dgd|t
|j
dgd	|t
|j
dgg|}|t
|jddd
|t
|jddd
|t
|jddd
dS)N10001111111)
rZrrrrrryrrrrgrrrr)r#rircrrrrrrrrrrrrrU)mod)rrr.r"rir2rrrrrr
)rrr.rr'funcrs       rtest_va_args_exceptionsz!CWhitebox.test_va_args_exceptionss
))GM""K	B	BD1d##Dis;;;isDAAAAD	B	BD1d##Dis;;;isDAAAA)Q]T2NNN)Q]RLLL)Q]B;;;)Q%84QSTTT)Q%82rRRR)Q%8"bAAA)Q%84QSTTT)Q%82rRRR)Q%8"bAAA)QUAq#>>>)QUAq#tDDD)QZBEEE)QZBFFF)QZB;;;GII)QWa<<<)QWa$???)QWc1$?????r!c^|tjjtjtjztjztjztjz|tj	jtjtjztjzdSr)
r@rrrErWrJrSrUr9r;rs rtest_c_context_templatesz"CWhitebox.test_c_context_templatess
N!
%a&99!-G
N
<
(	
	
	

	

#
%a&99!-G	
	
	
	
	
r!ctj}tj}tj}tj}tj}tj}tj}tj}tj	}	tj
}
tj}tj}tj
}
tj}fd}|}||jv||jD]}d|j|<
|jD]}|||jD]\}}||j||jdd|jdddt8|jjdddt;|jt;|jt=j|j}t=j|j}|j }|!||_"|j|||
|_#|j||!|j}d||<||_|||j||j}d||<||_|||j|tj|	tj$|
tj%|tj&|tj'|tj(|tj)|tj*|tji	}tj+tj,tj-tj.tj
tj/tj0g}t;tbt}te|D]}te|D]}tfD]}tij5tbt|}tij5tbt|}tij6dd}tij6dd	}tij6d	d}tij6d	d
} tij6d	d
}!tij6d	d
}"||||||!| to|to|}|j8||j9||j:||j;||j<|!|j=| d	}#|D]
}$|#||$z}#|j"|#d	}#|D]
}$|#||$z}#|j#|#|D]7}%|%|_"|j"|z|||j8|D]7}%|%|_#|j#|z|||j8dS)Nc|D]?}||kr||$||@dSr)r#r$)rysignal_dictr+rs   rassertIsExclusivelySetz<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySets["
7
7&==OOK$45555$$[%56666	
7
7r!Trrrrrirrr)>rr.r;rrsrrrrrrrr9rPrWrnr#r-rrvaluesrr$rRrrr@rir2rr	getsizeofrr/rDrErCrNrTrUrSrJrRrKrLrMrOrQrIr9rwrr.samplerrUr+r,rXr]rra)&rr.r;rrsrrrrrrrr9rPrWrrrhrrr
IntSignalsIntCondlimrrrrRr-r+rsrrrarcrrrrZs&`                                     rtest_c_signal_dictzCWhitebox.test_c_signal_dictsi))-)):K	K	)))\
3"#";	7	7	7	7	7
!!	
AG+,,,	

		AAGAJJ!!		AOOA	

GMMOO	 	 DAqQX..///

agkk#&&---S#..444)QW[#sC@@@QWs17||444M!'""M!'""
G	


()))	

& 01222	



GLLNN .~qw777	


GLLNN)y!'2221<
1<
1<
Q^
Q^
AM
!-
!-
A5



!1#91=

q4a6F


.#$$s	2	2A3ZZ
2
2*22E"M.*;Q??E"M.*;Q??E!+Au55D!+FA66D!+Au55D",Q22E!+Aq11D)!Q//BTE4)-U$u++&*5kk333A$$QVT222$$QZ777$$QVT222$$QVT222$$QZ666$$QWe444A"++Z]*$$QXq111A"++Z]*$$QXq111192
2>	>	>DAHOOAH%<<===""#3QW====	>	>DAHOOAH%<<===""#3QW====	>	>r!ctj	ddlm}n%#t$r|dYnwxYwd}dfd	}d|gddd	}d
|gddd	}d|gdd
d	}|dkr|t|d|d|t|d|d|t|d|ddS)Nrrrc@dd|DS)Nrc,g|]}t|Srrrs  rr'zJCWhitebox.test_invalid_override.<locals>.make_grouping.<locals>.<listcomp>|rr!)r)rs rrz6CWhitebox.test_invalid_override.<locals>.make_grouping{s#7700C000111r!rxcB|||Sr)r)rrrrs   rrz0CWhitebox.test_invalid_override.<locals>.get_fmt~s!71::((h777r!rf)rrrxxxxxrryyyyyrrOr)rrrrrrrir)rrrrinvalid_groupinginvalid_dotinvalid_seprs       @rtest_invalid_overridezCWhitebox.test_invalid_overridessc)	;'''''''	;	;	;MM9:::::	;	2	2	2	8	8	8	8	8	8"&}}}55!

&&yyy11!

"&yyy11%

s??j'5.
5
5
5	
*guk3GGG*guk3GGGGGs88ctj}tj}tj}|5}d|j|<dt
jz}||||dt
jdz
z}||||dt
jz}||||dt
jdz
z}||||ddddS#1swxYwYdS)NTz0e%drz1e%d)rrrrr-rrrirs      rtest_exact_conversionzCWhitebox.test_exact_conversions9)~-
\^^	<q(,AG$%$A.;;;3;,q.)A.;;;$A.;;;3;,q.)A.;;;#	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sB+C''C+.C+ctj}tj}tj}tj}tj}|5}d|_d|j|<d|j|<d|j|<ddtj	f}|
t||d|
|||ddtj	f}|
||j||
|||ddtj	dz
f}|
t||d|
|||ddtj	dz
f}|
||j||
|||ddtj	dzf}|
t|j||
t||ddtj	dz
f}|
t|j||
t||d	}|
t||d
d}|
t||d
d}|
t||d
ddddS#1swxYwYdS)Nr*Trrz
-0E+999999)rrrz-0E-1000007rrr\)rrr)rrrz-sNaN1)rrrrrrr+r-rrr@r;rrir)rrrrrrrrs        rtest_from_tuplezCWhitebox.test_from_tuples)~-:K	
\^^(	8qAF(,AG$% $AGH!%AGIB$AS!1!1!!4!455|DDD.;;;Is{+Ah(8!<<<.;;;BQ'AS!1!1!!4!455}EEE.;;;I|A~.Ai)91===.;;;BA
&AmQ-=qAAAmWa888BQ'AmQ-=qAAAmWa888AS__g666AS__g666 AS__h777Q(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8(	8sJK''K+.K+ctj}tjdk}||dd|r[|ddz}|ddz}|||dzdS|ddz}|ddz}|||d	zdS)
Nrrrrirr)rrrUrO
__sizeof__r@)rrrrrrs     rtest_sizeofzCWhitebox.test_sizeofs)*y0771::0022A666	%U$$//11AU$$//11AQ!$$$$$T
##..00AT
##..00AQ!$$$$$r!cVtj}Gddt}Gddt}GddtGfddt}|||fD]G}|||d	|d	HdS)
NceZdZdZdZdS)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.XcdSNrrrs rrzMCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratiosqr!c|Srrrs rr%zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__r!Nrr_r`rr%rr!rXrs2







r!rceZdZdZdS)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.YcdgdzSNrrrrs rr%zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__
s3wr!N)rr_r`r%rr!rYr#




r!rceZdZdZdS)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.IcdgdzSrrrs r
bit_lengthzGCWhitebox.test_internal_use_of_overridden_methods.<locals>.I.bit_lengthrr!N)rr_r`rrr!rIrrr!rc eZdZfdZdZdS)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Zc0ddfSrr)rrs rrzMCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratios!aadd|#r!c|Srrrs rr%zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.__abs__rr!Nr)rsrZrs=
$
$
$
$
$




r!rgfffffFY@)rrrrr@r)rrrrrr%rs      @r'test_internal_use_of_overridden_methodsz1CWhitebox.test_internal_use_of_overridden_methodss#)																																		a7	8	8CW//E

;;$//66
8
8
8
8	8	8r!aixzEAIX: default ulimit: test is flaky because of extreme over-allocationzTest is unstable on EmscriptenT)addressmemoryzVASAN/MSAN sanitizer defaults to crashing instead of returning NULL for malloc failure.cVgd}tj}tj}tj}|tjtjtj}||5||dd||d	d||d
d||d
d||ddz
d||d	d
||dd||d|d
|t|ddd||ddzd||ddzd||ddz|dddddS#1swxYwYdS)N)	ryrrrcrrrrr)r+rXr]rrrrrl9Vr40E9z2.0E+5r)rrirtz0.0025)rrr.rrUrorr@rZrrrrr-)rMaxContextSkiprr.r
maxcontexts      rtest_maxcontext_exact_arithz%CWhitebox.test_maxcontext_exact_ariths<<<))~W!*1:AJOOO

\*
%
%	D	DWWQZZ^^--q111WWQZZ]]__a000WWQZZ--//333WWU^^1133Q777WWRW--3355s;;;WWV__1133R888WWQZZ__..222WWV__1133WWX5F5FGGGVGGBKK33V<<<WWR[[A-q111WWQZZ!^Q///WWS\\R/1B1BCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Ds H1JJ"%J"cttj}|}d}|t
|5t
|dddn#1swxYwY|t
|5t|dddn#1swxYwY|t
|5t|dddn#1swxYwY|t
|5d|tj	<dddn#1swxYwY|t
|5|tj	dddn#1swxYwY|t
|5|tjkdddn#1swxYwY|t
|5tj|kdddn#1swxYwY|t
|5|
ddddS#1swxYwYdS)Nzinvalid signal dictT)r:rr.rRassertRaisesRegexrriterr?rrn)r
SignalDictsderr_msgs    rtest_c_signaldict_segfaultz$CWhitebox.test_c_signaldict_segfault5s!))+++,,

Z\\'

#
#J
8
8		GGG															
#
#J
8
8		HHH															
#
#J
8
8		HHH															
#
#J
8
8	*	*%)Bq!"	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*
#
#J
8
8	#	#q!""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#
#
#J
8
8	$	$!))++###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$
#
#J
8
8	$	$
IIKK##	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$
#
#J
8
8		GGIII																		sA//A36A3B11B58B5C33C7:C7D55D9<D9E::E>E> #GGG5#H$$H(+H(
I,,I03I0N)"rr_r`rbrdrgrirvrxr\r{rrrrrrrrrrrrrrrskipIfrrprrrrrrr!rr^r^+sL''''":::	7	7	7:c"c"c"J	2	2	2"(@(@"!(@T$1$1$1L"&&"!&)))0---UUU>9L9L9Lv*@*@*@X"	
	
"!	
"C>C>"!C>J#H#H#HJ<<<0/8/8/8b%%%888:X_S\,,U33\^^X_]$DEEX___T$???EFF D DFFFE^^ DFr!r^ceZdZ	dZdZdS)
SignatureTestcttD]V}|drtt|}tt|}|dks|dkstj|rtj|}tj|}t|j	
}d|j	
D}|||d|zd|j	D}d|j	
D}	|d	kr|||	d
|zXdS)NrKrr.c<g|]}|d|S)rKrrs  rr'z5SignatureTest.test_inspect_module.<locals>.<listcomp>es8...<<,,.1...r!parameter name mismatch in %smsgcg|]	}|j
Srkindrs  rr'z5SignatureTest.test_inspect_module.<locals>.<listcomp>ksDDDQ!&DDDr!c^g|]*}|dd|dj+S)rrKr)rrrs  rr'z5SignatureTest.test_inspect_module.<locals>.<listcomp>lsB000A$//#..0!A$)000r!r3parameter kind mismatch in %s)rrrr"rinspect
isfunction	signaturerU
parametersrr@rr)
rr'p_funcc_funcp_sigc_sigc_namesp_namesc_kindp_kinds
          rtest_inspect_modulez!SignatureTest.test_inspect_moduleXsFF	S	SDs##
Q%%FQ%%F	!!TY%6%6"6**&7)&11)&11u/446677..e&6&;&;&=&=...  '%Dv%M!OOOED%*:*A*A*C*CDDD00U-=-C-C-E-E000<''$$VV)H6)Q%SSS1	S	Sr!ctjjtjjttdtdtdtdtdtdtdtdtdtdddtjtdttdtdtdtdtdtdtdddtjtdifddfd}|d	|d
dS)Nrrr)rrirrrrr[rrZr	numrr,r&)rrirr[rrZr	rrr,r&cg}i}|jD]d\}}|dkr|jkr"|||9|jkr||||<Vt	d||fS)Nrzunexpected parameter kind)rrrr8r)	moduler+rkwargsnameparamPOSPOS_KWDpdicts	      rmkargsz0SignatureTest.test_inspect_types.<locals>.mkargssDF"~3355
B
Be6>>8:$$KKf
d 34444Z7**#(=#6F4LL$%@AAA<r!c8	|dkrdS|dkrdS|dkrdS|S)Nrrrr[rrr)rs rtrz,SignatureTest.test_inspect_types.<locals>.trs3
<CxxCxxCxxHr!c
ntt|}tt|}t|D]x}|drt||}t||}tj|r*tj|}tj|}t|j	
}fd|j	
D}	|	|d|zd|j	D}
d|j	D}
|
d
|d|dkr,|d	d|
d	dd
|zn5t|t|
d
|zt|\}}
	t|d||i|
n&#t$rt!d|d
|d|
wxYwt|\}}
	t|d||i|
R#t$rt!d|d
|d|
wxYwzdS)NrKc&g|]
}|Srr)rrrs  rr'zBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>s!FFFrr!uuFFFr!rrcg|]	}|j
Srrrs  rr'zBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>HHHafHHHr!cg|]	}|j
Srrrs  rr'zBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>rr!rrrrr*zinvalid signature for z: r)r"rrrrrrrrUrrr@rrrrr)typ_typec_typer'rrrrrrrrrkwdsrrrrrs              rrz.SignatureTest.test_inspect_types.<locals>.doits:Q^^FQ^^FF*
c*
c??3'' .. ..%f--%c#-f55E#-f55E#5#3#8#8#:#:;;GFFFFe.>.C.C.E.EFFFG$$Wg)H6)Q%SSSIHe.>.E.E.G.GHHHFHHe.>.E.E.G.GHHHFMM&)W555MM&)S111Y((VABBZ-Lv-U)WWWW((Vc&kk-Lv-U)WWW"(5!1!1JD$c0q		400$?$????$ccc(jfffVZVZVZ\`\`)abbbc"(5!1!1JD$c0q		400$?$????$ccc(jfffVZVZVZ\`\`)abbbcI%c*
c*
csH11#I,J

#J0rr.)	r_ParameterKindPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrrrrr)rrrrrrrs` @@@@@rtest_inspect_typesz SignatureTest.test_inspect_typests$4(>aiilliill))A,,))A,,))A,,))A,,))A,,))A,,IIaLL yy||!" !
0
0aiilliill))A,,))A,,))A,,IIaLL yy||!" !
0
014	 	 	 	 	 	 	 			-	c-	c-	c-	c-	c-	c-	c-	c-	c^	
YYr!N)rr_r`rrrr!rrrSs?SSS8eeeeer!rc	t|}tjtD]g}d|vs|dr|d\}}t
|tvrE|fd}ttd|z|~~~~hdtfdtffD]W\}}|st|dzttj
fd|i}	|||	Xtvd	d
lm}
m}ttfD]_}|s|fd}d}
|tur|nd	}|t&jd<||
|||
|
t*t&jd<`|S)Nz.decTestrc<|t|zSr)r	directory)rrs  rrzload_tests.<locals>.<lambda>s$..Q*G*Gr!test_rPyr;rr)DocTestSuiteIGNORE_EXCEPTION_DETAILc$|tjd<dSNr)rr1)slfrs  rrzload_tests.<locals>.setUps),I&&&r!c.ttjd<dSr)orig_sys_decimalrr1)rs rrzload_tests.<locals>.tearDowns)9I&&&r!)rroptionflags)
TODO_TESTS
suiteClassoslistdirrrr	r.r;rrr:rTestCaseaddTestloadTestsFromTestCasedoctestrrrr1r )rtestspatternfilenameheadtailtesterprefixr
test_classrrrrr!s               r
load_testsr2s!!##Jy))))X%%)<)<S)A)A%^^C((
d!d*&<&< (GGGgnf555dD&&Qx$*@@	&>1'):;$c*,,
	

f22:>>????AAAAAAAAa4	6	6C
"
-
-
-
-
:
:
:58AXX111K%(CK	"MM,,s%(/:<<<
=
=
=%5CK	""Lr!cttttttnt	dadSr)r6rrARITHrr-rr!rsetUpModuler5s3GGGGGG)uu/B9/M/MHHHr!cNtr*tttttttst	jdtttj	durtddS)Nz*C tests skipped: no module named _decimal.rzGInternal error: unbalanced number of changes to sys.modules['decimal'].)rr3ORIGINAL_CONTEXTrwarningswarnUserWarningr rr1rrr!rtearDownModuler;
s+!,,'*
+
+
+LL!!$%%%#
B!	#	#	#s{9555344	465r!cb	|a|a|atjt
|rdnddt
gdS)NrrF)	verbosityexitargv)r4r"r0rmainrarithverbose
todo_testsdebugs    rtestrFsB
EJEM(7&9aaXJWWWWWWr!z:test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]z--debugz-d
store_truez2shows the test number and context before each test)actionhelpz--skipz-sz%skip over 90% of the arithmetic tests)rBrCrA)NNNN)rr$rrr8r/rnrr)rtest.supportrrrrrrr	r
rrtest.support.import_helperr
rrr.rr=rprrrr 
cfractionsr1
pfractionsr
skipUnlessrequires_cdecimalrrrRrr2rrrrrrrrrsr9r(rrrrrrr/rrr7r6TESTDATADIRrr?r__file__pathdirnamecurdirtestdirseprisdirrr7hasattrEXTRA_FUNCTIONALITYr\rskip_if_extra_functionalityr;rbr&rrrr3r5r7rrrrrr,r4requires_working_threadingr6rHrJrLrrr&r|r~rr)r+r-r[r]r_rrrrrrrrrrrrrrr	r
rr7r^rr2r5r;r4r-r"r0rFoptparseOptionParserr
add_option
parse_argsoptrskiprErr!r<module>rbsk"



IIIIIIIIIIIIIIDDDDDDDDDDDDDD;:::::))))))((((((



<8n---	*666	J<888""""!
 
B
B
B
I
 
 
B
B
B
I
z1Z(	)I'H'+DEE16UU1<<>>$$&&'''$UU1<<>>$$&&'''aiAIq{AKj!"A$6"&aiAIq{AKj!"A$6	HHH
:
\

m
##
\
J
{/
a)Q\\^^TQ\\^^%%% z8A;DDD
'//$


,29bf{*RV3	GMM),,,
&ga66AddE2x2G I I-ho466a#a#a#a#a#a#a#a#LU<U<U<U<U<U<U<U<n
 8(:K!98;LK1K1K1K1K1K1K1K1Z 8(:K!98;LO9O9O9O9O9O9O9O9b
*h/:x0hAhAhAhAhAhAhAhAT	68I 79J
%'%'%'N*0*0*0Z-,..*(*(*(*(*(*(*(/.*(Z]H$5mX%6nEnEnEnEnEnEnEnE`]H$5




mX%6


[N[N[N[N[N[N[N[Nz
nh&7~x'8hChChChChChChChCT(9):bbbbbbbbH0(2C183DI0I0I0I0I0I0I0I0VL("3\8#4NNNNNNNN`(9):<;<;<;<;<;<;<;<;|4h6G5x7Hk.k.k.k.k.k.k.k.Z,h.?-x/@11111h'111:        B(+




8,


>>>>>h'>>>0BMBMBMBMBM"BMBMBMHSCSCSCSCSCX&SCSCSCjeeeee!eeeNDDDDDH%DDDN&&&PNNN444	



XXXXzOOOZ[[ALLD<pLqqqLLD<cLddd,,..KS$
x'5$''''''	
'4$ciHHHHHH4&&&&&&r!