python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_decimal.cpython-312.opt-2.pyc

͑eT\V	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZmZddl
mZmZmZmZmZddlmZddl
mZddl
mZddlZddlZddlZej8dk(reded	d
gZed	d
gZddlZ ed
d
gZ!eejDd	<ed
d
gZ#eejDd	<ee!ee#iZ$e ejDd	<ejJedZ&eer.e'ejQjRjUndee'ejQjRjUiZ+eereejXejZej\ej^ej`ejbejdejfejhg	ndeejXejZej\ej^ej`ejbejdejfejhg	iZ5dZ6ejnZ7ejpZ8ejrZ9ejtZ:ejvZ;ejxZ<ejzZ=ej|Z>e7e8e9e:e;e<e=e>gZ?eerejQj
ndeejQj
iZ@dZAdZBeCdk(rejdZEneFZEejjeExsejZJeJejzeBzejzZLejjeLaNdZOePedrdndZQejJeQdZRejeQdZTGddZUGddZVe&GddeVejZXGddeVejZYGd d!ZZe&Gd"d#eZejZ[Gd$d%eZejZ\Gd&d'Z]e&Gd(d)e]ejZ^Gd*d+e]ejZ_Gd,d-Z`e&Gd.d/e`ejZaGd0d1e`ejZbd2Zcd3ZdejGd4d5Zfe&Gd6d7efejZgGd8d9efejZhGd:d;Zie&Gd<d=eiejZjGd>d?eiejZkGd@dAZle&GdBdCelejZmGdDdEelejZnGdFdGZoe&GdHdIeoejZpGdJdKeoejZqGdLdMZre&GdNdOerejZsGdPdQerejZtGdRdSZue&GdTdUeuejZvGdVdWeuejZwGdXdYZxe&GdZd[exejZyGd\d]exejZzGd^d_Z{e&Gd`dae{ejZ|Gdbdce{ejZ}GdddeZ~e&Gdfdge~ejZGdhdie~ejZeTe&GdjdkejZGdldmZe&GdndoeejZGdpdqeejZGdrdsejZGdtduejZGdvdwejZe&GdxdyejZe
e&Gdzd{ejZd|Zd}Zd~ZdadadadaddZeCdk(rddlZej&dZej+ddddej+ddddej-\ZZej2reddyereddeej4yeddyy)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 versioncht|||jtfdDy)Nc3<K|]}|vr|n|ywN).0sdexpecteds  E/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_decimal.py	<genexpr>z!assert_signals.<locals>.<genexpr>Us&FqqH}qtad(:Fs)getattr
assertTrueall)clscontextattrrrs   `@rassert_signalsr'Ss&ANN3FAFFGc|sy|jdttjt|d}|j|y)N	r)precroundingtraps)ContextROUND_HALF_EVENdictfromkeysSignals
setcontext)mDefaultTestContexts  rinitr6ls@f
t}}WQZ/K#LL#$r(decimaltestdata__main__F
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildcVeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZy
)IBMTestCasesc
h|jj|_|jj|_dg|_tgd|_|jtk(r|jjd|jjd|jjd|jjd|jjd|jjd|jjd	|jjd
|j|j|j|j|jd|_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|_|jj2|jj4|jj6|jj4|jj4|jj8|jj4|jj4|jj:|jj<|jj>|jj@dU|_!dV|_"y)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||++-<<//15!$"%"!H<<1!!%%i0!!%%i0!!%%j1!!%%j1!!%%j1!!%%j1!!%%i0!!%%i0*.)>)>(,(C(C+/+C+C+/+C+C%)%6%6	8$1E-$1#H$1#N$1))9$1+?	$1
,,?$1#>
$1&j$1)$1'{$1($1%%5$1*.$1'{$1)$1$H$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$1D+>$3"/I$1N*7&0'2+:+:)6$,&02(,||';';151N1N040K0K37<<3P3P26,,2O2O'+||';';/3||/L/L151N1N(,(=(='+||';';)-)?)?)-)?)?A
!1r(cl	|jtk(r|jjdk(rl|jj	d|jjd|jj
d|jj|S|jj||S)N@Ti?i9)	rrMAX_EMAXr_unsafe_setprec_unsafe_setemax_unsafe_setemincreate_decimalDecimal)rvr%s   rread_unlimitedzIBMTestCases.read_unlimiteds	
<<1!6!6)!C,,Z8,,Z8,,[9##22155<<''733r(ctrtjt|d5}|D]6}|j	ddj	dd}	|j|}8	dddy#|jj$r8}|jd|jjzdz|zYd}~d}~wwxYw#1swYyxYw)Nutf-8)encodingz

zException "z" raised on line )
skip_expectedunittestSkipTestopenreplace	eval_linerDecimalExceptionfail	__class____name__)rfileflinet	exceptions      r	eval_filezIBMTestCases.eval_file's###
$
)	eQ
e||FB/77bAet,A	
e	e	e||44eIImI,?,?,H,HHK^^_ccdde
	e	es5(B>
A*B>*B;.B61B>6B;;B>>Cc|jddk\rf|dddk7r^|jdsM|jdddz|jddjddzj}n"|jddj}|jD]}|j|dk\sy|syd|vr|j|S|j
|S)	Nz -> r--z  --->:)find
startswithsplitstripreval_directive
eval_equation)rrignores   rrzIBMTestCases.eval_line6s66&>Q1Ra5D=f9Mq!D(q!''-a0127%'

a &&(A&&	Fvvf~"	
AX&&q))%%a((r(cd|jdD\}}|dk(r|j|}n	t|}|jj|d}||y#t$rY1wxYw)Nc3XK|]"}|jj$ywr)r
lower)rxs  rr z.IBMTestCases.eval_directive.<locals>.<genexpr>Is@a	)@s(*rr,cyrr)argss r<lambda>z-IBMTestCases.eval_directive.<locals>.<lambda>Rsr()r	rint
ValueErrorrget)rrfunctvalues    rrzIBMTestCases.eval_directiveHsr@1773<@uJ%%e,E
E
##E,>@
e	

sA##	A/.A/cvtstjdkry|jj	|j	d}|djj	}|d}trtd|d|dj}|dd}|djj	}|d}|dd}d	}	||jvry|jj!||}
|
d
k(ryt#|j|
}g}d}d}
|Dcgc]}|j$|j!}}t&|jD]}d|jj(|<|D]}d|jj(|<t+|D]\}}|j-ddzdk(rd|
z
}
|
r	|dz|z}.||z}d}|	|}|
d
vrt.rr|D]m}d|jj(|<	||jj1||j3d|d|d|jj(|<o|jj1|}n|j5||j}|j7||	|}t.r|
d
vr|D]Q}d|jj(|<	|||j3d|d|d|jj(|<St8|jDcgc]	}||vs|}}|D]8}d|jj(|<	|||j3d|d|:|D]}d|jj(|<trtd|j	t=||}|
|j>vrt=tAtC|}|jE}|jGtH|jGtH|jK|d|zdz|z|jK||d|zdzt=|zy#tttf$r|jjwxYwcc}w#|$rY`t&|j$r&}|j3d|d|d|dYd}~d}~wwxYw#|$rYt&|j$r&}|j3d|d|d|dYd}~(d}~wwxYwcc}w#|$rYt&|j$r.}|j3dt;|d|d|Yd}~9d}~wwxYw#t&|j$r"}|j3d|d|Yd}~d}~wtd|xYw)Ng?rrzTest  )endrrc|jddjdd}|jddjdd}|jddjdd}|S)Nz''SingleQuotez""DoubleQuote'r")r)vals r	FixQuotesz-IBMTestCases.eval_equation.<locals>.FixQuotesis^++dM2::4OC++c2&..sB7C++mS199-MCJr(rescalerr )rrzDid not raise z in zRaised z when z	 disabledz; expected rzERROR:keyzIncorrect answer for z -- got zIncorrect flags set in )&TEST_ALLrandomr%clear_flagsr	r
DEBUGprintr	TypeErrorAttributeError
IndexErrorrrrrrr!rr2r-	enumeratecountEXTENDEDERRORTESTrrrappendOrderedSignalstypestrrreval
getexceptionssortreprassertEqual)rrSidesLidrvalstempans
exceptionsr#fnamevalsconglomeratequotertheirexceptionsrir"rerroreordered_errorsresultmyexceptionss                         rrzIBMTestCases.eval_equationUsFMMOd2  "	0GGDMEa &&(A1Bgrs+aDJJLEuHa &&(AA$C12J	&&&  $$UE2Ie,?IJ!4??17795JJ .	.I,-DLLy)	.(	.I,-DLLy)	.)	FAsyy~!Q&E	+c1C7"S(!#A::$!0645**51M!$,,"="=a"@A!II%&KL45**516LL//2''4<<8KKN7	:n.P!P(
.,-""5)E4LII%CD,-""5)
.*8)E^AoI]a^N^'

E,-""5)E4LII%CD

E(
.,-""5)
.$%	&F---Sf./))+d#&014zAFJ	L	
'!+j83|;LL	NW>:6	0,,///	0$K, %! &t||45 II'(!U'4555$t||,-II !U,---_
t||,3II#Aw52333 t||$	6II5!455	(AsBQ!$R!RS 	T *T T%*9U3!+RSS1SST"T7TT%U0-U0#U++U03V8	V&&V8ct|jDcgc]}|jj|s| c}Scc}wr)r2rr%flags)rrHs  rr7zIBMTestCases.getexceptionss0"4<<0JaDLL4F4Fq4IJJJs<<c|jtk(r5|jjdk(r|jj	|y||j_yNr)rrMAX_PRECr%rr+)rr+s  rrzIBMTestCases.change_precisions=<<1!6!6)!CLL((. $DLLr(c&||j_yr)r%r,)rr,s  rrz#IBMTestCases.change_rounding_methods (r(c|jtk(r5|jjdk(r|jj	|y||j_yrO)rrrPr%rEminrexps  rrz IBMTestCases.change_min_exponent=<<1!6!6)!CLL((- #DLLr(c|jtk(r5|jjdk(r|jj	|y||j_yrO)rrrPr%rEmaxrTs  rrz IBMTestCases.change_max_exponentrVr(c&||j_yr)r%ra)rras  rrzIBMTestCases.change_clamps"r(N)r
__module____qualname__rrrrrrr7rrrrrrr(rr;r;sHIK1Z4e)$~N@K%
)$
$
#r(r;ceZdZ	dZdZdZdZeee	jedZdZ
dZd	Zd
ZedZdZd
ZdZy)ExplicitConstructionTestcj|jj}|j||dy)N0rrr:rrs  rtest_explicit_emptyz,ExplicitConstructionTest.test_explicit_emptys',,&&GCL1r(c^|jj}|jt|dyr)rrassertRaisesr,ras  rtest_explicit_from_Nonez0ExplicitConstructionTest.test_explicit_from_Nones#,,&&)Wd3r(c	|jj}|d}|jt|d|d}|jt|d|d}|jt|d|d}|jt|dt	dd	D]Q}d
D]J}t	ddD]9}|d
|z|zz}||}|jt|t|;LSy)N-45{e	500000123-45rr_ rr)rrr:r5range)rrrnsignrrFs       rtest_explicit_from_intz/ExplicitConstructionTest.test_explicit_from_ints,,&&
BKQ&
IQ-
CLQ'
AJQ%q"	5A
5r15A1q)A
A$$SVSV45
5	5r(c
|jj}|jj}|jj}|j	t|dd|j	t|dd|j	t|dd|j	t|dd|j	t|dd|j	t|dd	|j	t|d
d|j	t|dd
|j	t|dd|j	t|dddD]0}dD])}|j	t||dz|zd+2|5}d|j|<|j||d|jt|ddd|j||d|j||d|j||d|j||d|j||d|j||ddddy#1swYyxYw)NrNaNrh45.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 r}u  z123z1_2_3)	rrrlocalcontextr:r5r-rdr,)rrrrleadtrailcs       rtest_explicit_from_stringz2ExplicitConstructionTest.test_explicit_from_strings[,,&&<<88||00	
WR[)51	
WT]+T2	
WW-.8	
WV_-x8	
WV_-u5	
WZ018<WY/0':W]34i@	
W[12J?WY/0&92	.D6
.  WTK-?%-G%H!I!,.
.	.
^	Hq(,AGG$%.?i&#sC
.9JK.9OP
.B.H
.E
.G'	H	H	Hs
	B.JJ	categoryc$ddl}|jj}|jj}|j	d}|jt
||d|jt
|j|dy)Nr9.999999)	_testcapirrr.unicode_legacy_stringr:r5r)rrrr%rs     rtest_from_legacy_stringsz1ExplicitConstructionTest.test_from_legacy_stringsMsp	,,&&,,&&(++J7WQZ*5W33A67Dr(c|jj}|d}|jt|d|d}|jt|d|d}|jt|d|d}|jt|d|d	}|jt|d
|j	t
|d|j	t
|d|j	t
|d
|j	t
||dddf|j	t
|d|j	t
|d|j	t
|d|j	t
|d|j	t
|d|j	t
|d|j	t
|d|j	t
|dy)Nrrrr_r)rqrrlrrrqrrxr	rrrr*rrrqrr-4.34913534E-17)rrFInfinity)rrrrr*r)rr)rrrrr)rrzwrong!)rrr)rr1)rr~r)r)rrrNrr)r)rrr*rr)r)r
rr*rr)r)rrrarr)rrr:r5rdrrrrs   rtest_explicit_from_tuplesz2ExplicitConstructionTest.test_explicit_from_tuplesYs,,&&
\#Q%
^%Q'
*,Q)
:<Q!23
\#Q,	
*g/CE	
*g/FH*g/GI*g
OQ/OP	
*g/MO*g/GI*g/HJ	
*g}>*g/IK*g/GI*g/GI*g/HJr(ch|jj}|ddgdg}|jt|d|dgddg}|jt|d|gd}|jt|d|dgddf}|jt|dy)Nrr_rrrrrrrr:r5rs   rtest_explicit_from_listz0ExplicitConstructionTest.test_explicit_from_lists,,&&QQK Q%Q3S9:Q!239:Q!23Q3S9:Q!23r(c,|jj}|jt|dd|jt|dd|j	|d|d|j	|d|dy)NrFrT)rrassertIsboolr:ras  rtest_explicit_from_boolz0ExplicitConstructionTest.test_explicit_from_boolso,,&&

d71:&.

d71:&-4
3r(c|jj}|d}||}|jt|d|d}||}|jt|d|d}||}|jt|d|d}||}|jt|dy)	Nrgrhrirjrkrlrr_rrrrrHs    rtest_explicit_from_Decimalz3ExplicitConstructionTest.test_explicit_from_Decimals,,&&
BKAJQ&
IAJQ-
CLAJQ'
AJAJQ%r(c	J|jj}|d}|jt|||jt	|d|j|t
dj|j|t
dj|j|t
dj|jt	|t
dt	|d|jt	|t
dt	|d|jt	|t
dt	|d|jt	|t
d	t	|d
tdD]S}tjdtjd
zdz
z}|j|t
||Uy)N皙?90.1000000000000000055511151231257827021181583404541015625naninf-infrwr	-Infinity-0.0-0{Gz?@?)rrr:r4r5r"floatrrrrr(expovariate)rrrrFrs     rtest_explicit_from_floatz1ExplicitConstructionTest.test_explicit_from_floats,,&&CLa'*QK	Me-5578e-99;<f
.::<=WU5\23WU^,	.WU5\23WZ01	3WU6]34W[12	4WU6]34WT]+	-s	3A""4(FMMOc,AC,GHAQgaj 12	3r(c	f
|jj}|jj}|jj}t	j|jj}d|_|}|jt|d|j}|jt|d|jt|jd|jd}|j|||j|jd|jd|d}|jt|d|jd}|jt|d|jt|jdd	|d
}|jt|d|jd
}|jt|d|d
}||}|jt|d|j|}|jt|dd|_d|j|<dD]I}|j|}|jt|||jt!||Kd|_d|j|<|j||jdd|_|jt|jdd|jt|jdd|jt|jdd|jt|jdd|j||jd|jt"|jd|jt|jdd|j||jd|j||jdd|_|j||jd |j||j|d d!|j|<|jt|jd d	|j|j$|d!|j$|<|jt|j|d d	|j|j$|y)"Nrr_inz457E+2456789z4.57E+5z3.14
rwrrz	-4.35E-17rirjz5.00E+8T)	lllirlz0E-017z0E-17rh-InfrNaN123r~)rr~rr5678z 123412_34NaN12345F)rrrrrn
getcontextr+r:r5rrdr,assertIsInstancer-r"
isinstancerrrM)rrrrncrprevdecrs        r$test_explicit_context_create_decimalz=ExplicitConstructionTest.test_explicit_context_create_decimals\,,&&<<88,,&&
YYt||..0
1
IQ%Q%	
)R%6%6=
c"a)**51**84	6
HQ*h'Q+	
R..x895A
:<Q!23DFQ-)$GQ-g&Q+%)!"3	(A!!!$AOOJq'23SVQ'		( '2#4#4d;R..x897CR..t45t<R..v67ER..x898D	
*B,=,=uE*b&7&7I)R%6%6G*B,=,=wG*B,=,=wG*B,=,=zJ*B,=,=!*-	/&+!"R..z:;UC!123%*!"R..wz/BCDeL!123r(c	v|jj}|jj}|jd}|j	t|||j	t
|d|j|jtdj|j|jtdj|j|jtdj|j	t
|jtdt
|jd|j	t
|jtdt
|jd|j	t
|jtdt
|jd|j	t
|jtd	t
|jd
d|_tdD]\}tjd
tjdzdz
z}|j	|t|j|^y)Nrz0.1000000000000000055511151231rrrrwrrrrdrrrr)rrr.rr:r4r5r"rrrr+rrr(r)rrrrrFrs      r'test_explicit_context_create_from_floatz@ExplicitConstructionTest.test_explicit_context_create_from_float#s,,&&
\\
!
!
#c"a'*Q!AB))%,7??AB))%,7CCEF))%-8DDFGR..uU|<=R..u56	8R..uU|<=R..z:;	=R..uV}=>R..{;<	>R..uV}=>R..t45	7s	=A""4(FMMOc,AC,GHAQb&7&7&: ;<	=r(c|jj}dddd}|jD]&\}}|jt	|||(y)Nrz	0.0000372z-NaN2400)u1u٠.٠٣٧٢e-٣u-nan౨౪౦౦)rritemsr:r5)rrtest_valuesinputrs     rtest_unicode_digitsz,ExplicitConstructionTest.test_unicode_digits;sZ,,&&8C-7
 +002	<OE8S0(;	<r(N)rrZr[rbrerurr
rrignore_warningsDeprecationWarningrrrrrrrrrrrr(rr]r]s@24566Hp!#$_$$.@AEB$E)KV
44&.33.W4r=0	<r(r]ceZdZeZy)CExplicitConstructionTestNrrZr[rrrr(rrrFGr(rceZdZeZy)PyExplicitConstructionTestNrrZr[Prrr(rrrIGr(rc2eZdZ	dZdZdZdZdZdZy)ImplicitConstructionTestcx|jj}|jttdty)NzDecimal(5) + Nonerrrdr,r6localsras  rtest_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NoneOs(,,&&)T+>Ir(c|jj}|jt|ddzd|j|ddz|dy)Nrqrg50l2}rrras  rtest_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intSsN,,&&	
WQZ"_-t4l2GL4IJr(cx|jj}|jttdty)NzDecimal(5) + "3"rras  rtest_implicit_from_stringz2ImplicitConstructionTest.test_implicit_from_string[(,,&&)T+=vxHr(cx|jj}|jttdty)NzDecimal(5) + 2.2rras  rtest_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_float_rr(c~|jj}|j|d|dz|dy)Nrqrg2r`ras  rtest_implicit_from_Decimalz3ImplicitConstructionTest.test_implicit_from_Decimalcs2,,&&gbk172;?r(c"|jj}Gdd}|jt||dd|jt|d|d|jt	dd|jt	dd	|jt	d
d|jt	dd
|jt	dd|jt	ddgd}|D]t\}t|fdt|fd|jt	d|zdzdzdz|jt	d|zdzdzdzvy)Nc<eZdZdZdZdZdZdZdZdZ	dZ
y	)
,ImplicitConstructionTest.test_rop.<locals>.Ecdt|zS)Nzdivmod r5rothers  r
__divmod__z7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__ls 3u:--r(ct|dzS)Nz rdivmodrrs  r__rdivmod__z8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__ns5zJ..r(cdt|zS)Nzlt rrs  r__lt__z3ImplicitConstructionTest.test_rop.<locals>.E.__lt__ps5z))r(cdt|zS)Nzgt rrs  r__gt__z3ImplicitConstructionTest.test_rop.<locals>.E.__gt__rrr(cdt|zS)Nzle rrs  r__le__z3ImplicitConstructionTest.test_rop.<locals>.E.__le__trr(cdt|zS)Nzge rrs  r__ge__z3ImplicitConstructionTest.test_rop.<locals>.E.__ge__vrr(cdt|zS)Nzeq rrs  r__eq__z3ImplicitConstructionTest.test_rop.<locals>.E.__eq__xrr(cdt|zS)Nzne rrs  r__ne__z3ImplicitConstructionTest.test_rop.<locals>.E.__ne__zrr(N)rrZr[rrrrrr	rr
rr(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|zSNr5r)rrlops  rrz3ImplicitConstructionTest.test_rop.<locals>.<lambda>sc%j0Hr(c&t|zdzSr#r)rrrops  rrz3ImplicitConstructionTest.test_rop.<locals>.<lambda>sE
S0@50Hr(zE()zDecimal(10)r510)rrr:divmodr6setattr)rrroplistsymr$r&s     @@rtest_ropz!ImplicitConstructionTest.test_ropgsi,,&&	*	*$	
WR[1;?QS1<@12G<12G<23W=23W=23W=23W=
$	1MCcAsHIAsHIT%#+
"=>"S[4/
1T-#"5"=>!CZ%/
1	1r(N)	rrZr[rrrrrr,rr(rrrLs(@JKII@01r(rceZdZeZy)CImplicitConstructionTestNrrr(rr.r.rr(r.ceZdZeZy)PyImplicitConstructionTestNrrr(rr0r0rr(r0cJeZdZ	dZdZdZdZedddZdZ	y	)

FormatTestc|jj}gd}|D](\}}}|jt||||*|j	t
|djdy)N))rH0E-15z0e-15)rHz2.3E-15z2.3e-15)rHz2.30E+2z2.30e+2)rHz2.30000E-15z2.30000e-15)rHz1.23456789123456789e40z1.23456789123456789e+40)rH1.5z1.5e+0)rHz0.15z1.5e-1)rHz0.015z1.5e-2)rHz0.0000000000015z1.5e-12)rHz15.0z1.50e+1)rH-15z-1.5e+1)rHr_z0e+0)rH0E10e+1)rH0.0z0e-1)rH0.000e-2).6er4z0.000000e-9)r<r_z0.000000e+6)r<rz9.999999e+0)r<z	9.9999999z1.000000e+1)r<z-1.23e5z-1.230000e+5)r<z
1.23456789e-3z1.234568e-3)rr_r_)rr9r9)r0E-2r:)rz0.00E-8z0.0000000000)rr7r_)rz3.2E132)rz3.2E2320)rz3.20E2r?)rz3.200E2z320.0)rz3.2E-6z	0.0000032).6fr40.000000)r@r7rA)r@r_rA).0fr_r_)rBr;r_)rB
3.141592653).1frC3.1)z.4frC3.1416)r@rC3.141593)z.7frC	3.1415926)z.8frCrC)z.9frCz3.141592650)gr_r_)rJr9r9)rJr7r8)Gr7z0E+1)rJz0E-5z0.00000)rJz0E-6rA)rJz0E-7z0e-7)rJz-0E2z-0e+2).0grCrD)z.0nrCrD)z.1grCrD)z.2grCrF)z.5grCrG)z.7grCrH)z.8grCrI)z.9grCrC)z.10grCrC)rr70%)r0E0rM)rz0E-1rM)rr=rM)rz0E-3z0.0%)rz0E-4z0.00%).3%r_0.000%)rO0E10rP)rOz0E-10rP)rOz2.34z234.000%)rOz1.234567z123.457%).0%1.23z123%)rHrwrw)r-NaN123rT)z+gNaN456z+NaN456)z.3eInfr)z.16frr)rL-sNaNrW)r1.00rX)6123   123)z<6rZz123   )z>6rZr[)z^6rZz 123  )z=+6rZz+  123)#<10rwz
NaN#######)r\z-4.3z
-4.3######)z#<+100.0130z
+0.0130###)z#< 10r]z
 0.0130###)z@>10rz
@-Infinity)z#>5rr)z?^5rZz?123?)z%^6rZz%123%%)z ^6-45.6z-45.6 )z/=10r^z
-/////45.6)z/=+1045.6z
+/////45.6)z/= 10r_z
 /////45.6)z=10rz
-Infinity)z^16rz-Infinity)z>101.2345z
1.2345)z<10r`z
1.2345),1234567z	1,234,567)ra123456123,456)ra1234512,345)rarz1,234)rarZrZ)ra12rg)rarr)rar_r_)raz-1234567z
-1,234,567)ra-123456-123,456)z7,rcrd)z8,rc 123,456)08,rcz	0,123,456)z+08,rcz+123,456)z 08,rcrj)rkrhri)z+09,rcz
+0,123,456)z07,1234.561,234.56)rkrlrm)z09,rlz	01,234.56)z010,rlz
001,234.56)z011,rl0,001,234.56)z012,rlrn)z08,.1fz1234.5z01,234.5)ra
1.23456789ro)z,%z
123.456789z12,345.6789%)z,ercz
1.23456e+5)z,Ercz
1.23456E+5)rErr)rEz-.0r)rE-.01r)z.1f0.r9)z6.1frrz   0.0)rs-1.z  -1.0)rq-0.r9)rq.01r9)rqrpr9)z.2frrr:)rwrur:)rwz.001r:)rwz-.001r:)z.1err0.0e+1)rxrury)z.1Err0.0E+1)rzrur{)zz.2e-0.001z-1.00e-3)zz.2gr|r|)zz.2%r|z-0.10%)zfz-0.0000z0.0000)rq
-00000.000001r9)rq-00000.r9)rq-.0000000000r9)rwr~r:)rwrr:)rwrr:)rqz.090.1)rqz-.09z-0.1) z.0fruz 0)+z.0fruz+0)-z.0frur_)rrt-1)rrtr)rrtr)zz>6.1fruzzz-0.0)zz>z6.1fruzzzz0.0)zx>z6.1fruzxxx0.0)u
🖤>z6.1fruu🖤🖤🖤0.0)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%rz<<+Infinity%<<<)z>,%sNaN1234567zsNaN1234567%)z=10.10%rz
   NaN123%rs-020)rrr:formatrdr,
__format__)rrrfmtrrJs      rtest_formattingzFormatTest.test_formattingsj,,&&GP*	>NCFVGAJ4f=	>	
)WQZ%:%:GDr(c|jj5}t|_|j	t|jj
ddddddy#1swYyxYw)Nr|rwr:)rrrr,r:rrrctxs  r+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_roundingssY
\\
&
&
(	$C(CLVDLL$8$8$BFK"
$	$	$	$sAA%%A.cn|jtt|jj	ddy)NrSfz)rdrrrrrs rtest_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_formatys%*fdll.B.B6.JDQr(c	jj		ddlm}fd}d>	fd	}d|gddd	}d|gd
d	}d|gddd	}d|d
dd|gdd	}dj
d|gddj
dd	}j|	d|dj|	d|dj|	d|dj|	d|dj|d|dj|d|dj|d|dj|d|dj|d|ddj|d|ddj|d|ddj|d|dd j|d!|d"d#j|d!|d$d#j|d!|d%d&j|d!|d'd(j|d)|d%d*j|d)|d'd*j|d)|d+d,j|d)|d-d.j|d)|d/d.j|d)|d0d1j|d2|d'd3j|d2|d+d3j|d2|d-d3j|d2|d/d4j|d2|d0d5j|d2|d6d5j|d2|d7d8j|d2|d9d:j|	d;|d<d=y#t$rjdYwxYw)?NrCHAR_MAXlocale.CHAR_MAX not availablecjtk(r(dj|Dcgc]
}t|c}S|Scc}wNr)rrjoinchr)lstrrs  r
make_groupingz/FormatTest.test_n_format.<locals>.make_groupings459\\Q5F277C0qCF01OCO0s?cjtk(r|j||S|j||S)N)_localeconv)rrr)roverriderrrs   rget_fmtz)FormatTest.test_n_format.<locals>.get_fmts@||q qz,,S(;;qz,,Sh,GGr(.rrrra
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+8r03nr04n05n0123406n00123490rf07nz012,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¿5Nrs)rrlocalerImportErrorskipTestdecoder:)
rrrren_USfr_FRru_RUcrazydotsep_widers
`        @r
test_n_formatzFormatTest.test_n_format|s,,&&	;'	P	H"&y1!"&z2 "%i0!"%q!Q&9:!*009%i0)009	
%8&A%8&A%8&A%8'BE2MBE2K@E2MB68JKE59<HE59<HE59<HE59<H	
ue4f=ue4f=ue4g>ue4h?u5x@u5x@u5yAu5{Cu5{Cv6E6
C6
C6
C6D7G7G7H7I	
+vFH	Jc	;MM9:	;sOO,+O,LC_ALLps_AFch|jj}tjd}tjd}|dk7r!|j	dj|d|dk7r!|j	dj|d|j
t|ddd	y)
Nrru٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z
100000000.123rsu100٬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
MH$MM,,2F=(,K
M	
 8#>9	;r(cFGdd|jj}|jd}|j|jj|j|jd}|j|jj|jy)NceZdZdZy);FormatTest.test_decimal_from_float_argument_type.<locals>.Ac$t||_yr)r4a_type)rrs  r__init__zDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__s
"1gr(NrrZr[rrr(rArs
&r(rg@E@*)rr
from_floatr:r)rrrs   r%test_decimal_from_float_argument_typez0FormatTest.test_decimal_from_float_argument_typesr	&$$	&
LL--qxx8
LL--qxx8r(N)
rrZr[rrrrr	rrrr(rr2r2s@-PEd$RWJrXw';(; 9r(r2ceZdZeZy)CFormatTestNrrr(rrrrr(rceZdZeZy)PyFormatTestNrrr(rrrrr(rcPeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
y)
ArithmeticOperatorsTestc4|jj}|d}|d}|j||z|d|j||z|d|dz}|j||d|jt|t|d|z}|j||d|jt|t|||z
}|j||d|dz
}|j||dy)N-11.122.2z11.1rqz-6.116.1rrr:r4rrd1d2rs     r
test_additionz%ArithmeticOperatorsTest.test_additions,,&&
W

V_	
B0B0
FGFO,a$r(+
FGFO,a$r(+	bWV_-	aWV_-r(c4|jj}|d}|d}|j||z
|d|j||z
|d|dz
}|j||d|jt|t|d|z
}|j||d|jt|t|||z}|j||d|dz}|j||dy)	Nrrz-33.3z33.3rqz-16.1rz-38.3rrs     rtest_subtractionz(ArithmeticOperatorsTest.test_subtractions,,&&
W

V_	
B 01B0
FGG,-a$r(+
FGFO,a$r(+	bWW-.	aWW-.r(c4|jj}|d}|d}|j||z|d|j||z|d|dz}|j||d|jt|t|d|z}|j||d|jt|t|||z}|j||d|dz}|j||dy)N-5rDr6rqz-25z-75rrs     rtest_multiplicationz+ArithmeticOperatorsTest.test_multiplication1s,,&&
T]
S\	
B/B/
FGEN+a$r(+
FGEN+a$r(+	bWU^,	aWU^,r(c4|jj}|d}|d}|j||z|d|j||z|d|dz}|j||d|jt|t|d|z}|j||d|jt|t|||z}|j||d|dz}|j||dy)	Nr2-2.5z-0.4rz-1.25z-0.8z-0.625rrs     r
test_divisionz%ArithmeticOperatorsTest.test_divisionMs,,&&
T]
S\	
B0B0
FGG,-a$r(+
FGFO,a$r(+	bWV_-	aWX./r(c4|jj}|d}|d}|j||z|d|j||z|d|dz}|j||d|jt|t|d|z}|j||d|jt|t|||z}|j||d|dz}|j||dy)N5rr_rrrrrs     rtest_floor_divisionz+ArithmeticOperatorsTest.test_floor_divisionis,,&&
S\
S\	
R.R.
!GGCL)a$r(+
GGCL)a$r(+	r	WS\*	qWS\*r(c4|jj}|d}|d}|j||z|d|j||z|d|dz}|j||d|jt|t|d|z}|j||d|jt|t|||z}|j||d|dz}|j||d	y)
Nrr25r>r625r16807390625rrs     r
test_poweringz%ArithmeticOperatorsTest.test_powerings,,&&
S\
S\	
R/R/
!GGEN+a$r(+
GGG,-a$r(+	r	WT]+	qWX./r(c4|jj}|d}|d}|j||z|d|j||z|d|dz}|j||d|jt|t|d|z}|j||d|jt|t|||z}|j||d|dz}|j||dyNrrrrrrrs     rtest_modulez#ArithmeticOperatorsTest.test_modules,,&&
S\
S\	
B-B-
FGCL)a$r(+
FGCL)a$r(+	bWS\*	aWS\*r(cz|jj}|d}|d}t||\}}|j||d|j||d|jt	|t	||jt	|t	|t|d\}}|j||d|j||d|jt	|t	||jt	|t	|td|\}}|j||d|j||d|jt	|t	||jt	|t	|yr)rrr(r:r4)rrrrpqs      rtest_floor_div_modulez-ArithmeticOperatorsTest.test_floor_div_modules^,,&&
S\
S\BAGCL)GCL)a$r(+a$r(+AAGCL)GCL)a$r(+a$r(+2AGCL)GCL)a$r(+a$r(+r(c|jj}|j|d|d|j|d|d|jt|dt|dy)Nrgrk)rrr:absras  rtest_unary_operatorsz,ArithmeticOperatorsTest.test_unary_operatorssg,,&&'"+ws|4'"+ws|4WR[)3ws|+<=r(c|jj}|jj}|jj}|d}|d}|d}|d}||f||f||f||f||ff}||f||f||f||f||f||f||ff}	tj
tjtjtjf}
tjtjf}|5}d|j|<||	zD]^\}
}|
|zD]Q}||
|}|tjurdnd}|j||dj||j|
||S`	ddd|5}d	|j|<|D][\}
}|D]Q}||
|}|tjurdnd}|j||dj||j|
||S]|	D]P\}
}|D]F}|j|tj|
||j|tj|
|HR||	zD] \}
}|
D]}|j|||
|"	dddy#1swYxYw#1swYyxYw)
NrwsNaNrVrrTFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r)rrrroperatorltlegtgeeqner-rrrrd)rrrrrsrrFr
qnan_pairs
snan_pairs	order_opsequality_opsrrropgotrs                  rtest_nan_comparisonsz,ArithmeticOperatorsTest.test_nan_comparisonss,,&&<<88||00ENFOENCLVaVaVaVaV;
VaVaVaVaVaVaVK
KKhkk8;;F	{{HKK/^
	?s*+CII&'"Z/
?1#l2?BQ(C')X[['8teHMM(C!,,2F$bkk1a->??
?
	?^	Bs*+CII&'"
?1&?BQ(C')X[['8teHMM(C#..4f$bkk1a/>??
?#
K1&KB%%&6QJ%%&6QJK
K
#Z/
B1#BB%%&6AqAB
B%	B	B
	?
	?	B	Bs0A6I-6C-I:-I7:Jc|jj}|dj|d}|j|djd||j	t
|djdy)Nrr-2)rrrur:rdr,rs   rtest_copy_signz&ArithmeticOperatorsTest.test_copy_signsd,,&&AJ  ---b115)WQZ%9%94@r(N)rrZr[rrrrrrrrrrrrr(rrrs?D.8/8-808+808+8,6>8BtAr(rceZdZeZy)CArithmeticOperatorsTestNrrr(rrr rr(rceZdZeZy)PyArithmeticOperatorsTestNrrr(rrr#rr(rc
\|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|d}	|d}
|	|
z}|jj|jj|	|
z}|5}
|j|
j||j||
j |	d|j|
j||5}|j|j||j|j||j||j"|	|d|j|j|~ddd|j%|
j|~
ddd|j'||d|j'||d|}|j|j|||||fD] }|j%|j|"y#1swYxYw#1swYxYw)Nrrrr0.333333333333333333333333)rrrrrrrrrfinish1rsynchrowaitr"rMrddividecompareassertFalser:)r$rrrrrrrrrd3test1test2c2c3c1sigs                 rthfunc1r%(s%kk!!G{{33[[//N{{##H%%Ikk!!G''J;;++L	B	BrEEKKOOKKrEE	2rxx()B:rxx/0
^	rNN288G,-NN288N34-rzz2wvONN288$456		!123OOE7#?@AOOE7#?@A	BNN288G$%N4DD'
&'			s&A"J"(BJ('J"J	J""J+c	|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|d}	|d}
|	|
z}|}d|_	|	|
z}
|5}|j|j||j||j|dd|j|j|||5}|j|j||j|j|d|j|<|j||j |dd|j|j|~ddd|j|j||j|j|~ddd|j"j%|j&j%|j)||d|j)|
|d	|j|j||j|j|||||fD] }|j|j|"y#1swYxYw#1swYxYw)
Nrr1e425000000Tz1e-425000000rz0.333333333333333333)rrrrrrrrrr+r"rMrdmultiplyrr-rrrfinish2r:)r$rrrrrrrrrrrthiscontextr r!r"r$s                 rthfunc2r-Ospkk!!G{{33[[//N{{##H%%Ikk!!G''J;;++L	B	BrEE,KKrEE	
2rxx()2;;
0FLrxx)*
+
&	"NN288G,-OOBHHX./"&BHHYY		7>3JCPNN288I./
		+,+,
KKOOKKOOOOE7#?@AOOE7#9:;OOK%%i01NN;$$W-.N4DD0))#./0'			

s' A)K<	BK/AK</K9	4K<<LceZdZ	dZy)
ThreadingTestc|jj}|jtk(r'|jjs|j	d|j
}|j}|j}d|_d|_d|_tj|_
tj|_tj|_tjt|f}tjt|f}|j!|j!|jj#|jj#t$|jD] }|j'|j(|"|j+|j+||_||_||_y)Nzcompiled without threadingr)targetr)rDefaultContextrHAVE_THREADSrr+rXrS	threadingEventrrr+Threadr%r-startrr2rrMr)rr4	save_prec	save_emax	save_eminth1th2r$s        rtest_threadingzThreadingTest.test_threadingsR44<<1T\\%>%>MM67#''	"''	"''	 '( ( ( (gTG<gTG<				4<<(	8C^11#67	8	

'''r(N)rrZr[r?rr(rr/r/|s
:
$(r(r/ceZdZeZy)CThreadingTestNrrr(rrArArr(rAceZdZeZy)PyThreadingTestNrrr(rrCrCrr(rCceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZy)
UsabilityTestcH|jj}|d}|d}|d}|j|||j|||j	|||j|||j
|||j|||j|||j|||j|d|j	d||j
|d|j|d|j|d|j|t|j|ttt|td}|dd}tj||j|j
||y)Nz23.42rhrgrzgY@@r)rr
assertGreaterassertGreaterEqual
assertLessassertLessEqualr:assertNotEqualobjectlistmaprrr(shuffler8)rrdadbdcrbs       rtest_comparison_operatorsz'UsabilityTest.test_comparison_operatorssg,,&&
W

W

T]	
2r"B'BR$R B#R$B'	
2r"BR 	
B'B%B)B'
WeCj)*
qTq	Ar(c0|jj}|d}|d}|j|d|j|d|j	|d|j|d|j
|d|j|d|j	d||jd||jd||jd||j
d||jd||j
d|dy)N0.253.0@?g?rr)rrrJrKrHrIrLr:rrrQrRs    rtest_decimal_float_comparisonz+UsabilityTest.test_decimal_float_comparisons,,&&
V_
U^C R%2t$D)B$T"3#R(b!T2&D"%b!C0r(c|jj}|d}|d}|j|d|jd||j|d|jd||jd||j|d|j|d|jd||j	|jdt|j	|jdt|j	|jdt|j	|jdty)NrWrXy?y?y@y@?)	rrrLr:rrNotImplementedrrr[s    rtest_decimal_complex_comparisonz-UsabilityTest.test_decimal_complex_comparisons,,&&
V_
U^B)Vb)g''B'&2&f&B)Vb)

bii'8

bii'8

bii'8

bii'8r(c
|jj}t|jj}|jj}|jj
}|jj}trtjnd}trtjnd}trtjnd}|||}	||	5||	_|j|d|dd|j|dd|d|j|dd|d	t|z|j|d
t|z|dd|j|dd|d	t|z|j|d
t|z|dd|j|d|dd
|j|dd
|dd|	_|j|ddz|dd|j|dd|ddz|j!|dd|dt|z|j#|dt|z|dd|j%|d|dd|j%|d|dd|j|d|dd|j|d|dd|j'||dj(|dd|j+t,|ddj/|d|j|d|dd|j|dd|ddddy#1swYyxYw)Nɚ;6eilʈrXrSrrl	ZmH;5Bro1ez-1el!0QYrri,ri6lc(	9erlg]{lg]rri)rrrFractionr.rrrrMIN_EMIN	MIN_ETINYr+rJr5r:rLrKrIrHrdrrr^r)
rDrr.rremaxeminetinyrs
          r test_decimal_fraction_comparisonz.UsabilityTest.test_decimal_fraction_comparisonsLL  dll#,,,,&&||00<<88qzzIqzzJ kD)
!_	5AFOOAaD!A&K"LMOOAb!FG1NOOAaFAdSZ&7$89OOAec%j011Qq6:OOAa 9:AdSZ>O<PQOOAec%j011Q7P3QRQuXq2w/QqWah/AF!Q!A/!A!Q/  9j!91TCI=M;NO##AdSY&6$79j9QRqx;s);<qx<)<=OOAfIqS'9:OOAfIqc':;.%2cKMM.!Bs)*:*:1U8*DE%!Bs)4"S	1U847	5	5	5s
K'OO	c$|jj}|d}tj|}|jt	|t	|tj
|}|jt	|t	|y)Nz43.24)rrrnr:r=deepcopy)rrrrrSs     rtest_copy_and_deepcopy_methodsz,UsabilityTest.test_copy_and_deepcopy_methods)sf,,&&GIIaLA1&
]]1
BA'r(cjj}jj}fd}||d||d||d||d||ddDcgc]+}tdd	D]}d
D]}||d|z|zz-}}}}|j	|d|d
|d|d|d|d|d|d|d|d|d|d|d|d|d|dg|D],}j||t
t|.gd}	|	D]6}
t|
}||
}j||t
|8|5}
|d}d|
_	||}d	|
_	||}d|
_	||}j||j||d |
_	d!d"z}j|||||dddycc}}}w#1swYyxYw)#Ncbt|}|j}j|||Sr)hash__hash__r:)rrrTrs   rhashitz.UsabilityTest.test_hash_method.<locals>.hashit7s,QA

AQ"Hr(rGrrnan123-NaN)rrm!=>?@ABrrnrrrr:z-0.000rQz-0E1210.0z	-23.000001230E100z
-4.5678E50lz	1.634E100z
90.697E100z
188.83E100z
1652.9E100	56531E100)rrr9z-.0e1z34.02.5z
112390.625z	-0.515625z123456789.1r{'iLi)
rrrrrextendr:rtrrr+)rrrrvr4rsrtrrtest_stringsrrrrrh1h2h3s`                 rtest_hash_methodzUsabilityTest.test_hash_method2s,,&&||00		wr{wz"#w{#$wx !wv!A,, %c2,#*	, 	tQTAX/,/,/,,
	

! $
#%)*$%%%$)	0!	>EVE]DU,<=	>
B	1AaA
AVAYQ0	1
^	<q
&AAFBAFBAFBR$R$AFAVGAJ/;#	<	<S,R	<	<s?0H>+B
IIcv|jj}|jtt|d|d}|jt	|tj|Gdd}Gdd||}|d}|jt	|tj|y)NrrwceZdZdZy)-UsabilityTest.test_hash_method_nan.<locals>.Hcy)Nrrrs rruz6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__sr(N)rrZr[rurr(rHrs
r(rceZdZy)-UsabilityTest.test_hash_method_nan.<locals>.DN)rrZr[rr(rrjrsr(rj)rrrdr,rtr:rMru)rrrrrjs     rtest_hash_method_nanz"UsabilityTest.test_hash_method_nans,,&&)T76?;efooe&<=				%efooe&<=r(c|jj}|d}|d}d}d}|jt||||jt||||jt	||||jt	||||jt||||jt||||jt	||||jt	|||y)N15.32z28.5rzr)rrrminmax)rrrrl1l2s      rtest_min_and_max_methodsz&UsabilityTest.test_min_and_max_methodss,,&&
W

V_

	


c"Rj"%

c"Rj"%

c"Rj"%

c"Rj"%	


c"Rj"%

c"Rj"%

c"Rj"%

c"Rj"%r(c|jj}|j|d|j|dy)Nrz0.372)rrrr"ras  rtest_as_nonzerozUsabilityTest.test_as_nonzeros6,,&&	
$()r(c|jj}|d}|jt|d|jt	|dy)NrzDecimal('15.32'))rrr:r5r9rs   rtest_tostring_methodsz#UsabilityTest.test_tostring_methodssD,,&&GQ)a"45r(c
|jj}|d}|d}|jt|d|jt|d|jt	|d|jt	|dgd}|D]0\}}|jtj|||2|jtt
j|d|jtt
j|d|jtt
j|d	|jtt
j|d
|jtt
j|dgd}|D]0\}}|jtj|||2|jtt
j|d|jtt
j|d|jtt
j|d	|jtt
j|d
|jtt
j|dgd
}|D]&\}}|jt|||(|jtt|d|jtt|d|jtt|d	|jtt|d
|jtt|dgd}|D]1\}}}	|jtt||||	3y)N66rrrzgp=
ף.@)	z123.00rf3.2r)3.54r)3.899r)-2.3rz-11.0ir9rz-0E3r)89891211712379812736.1l{#'s{MrxrrrVr)	r)rrrrrrrrrrr)rl{#'s{M)rrrrrrrr)z-3.5)rr)rr)-0.5r)0.5r)r5r)rr)z3.5r))123.456rz0E+4)rrz0E+3)rrz1E+2)rroz1.2E+2)rrrZ)rrz123.5)rr123.46)rrr)rrz123.4560)z123.455rr)z123.445rz123.44)rVrrw)rirw)sNaN314rNaN314)
rrr:rrmathrrdr
OverflowErrorceilroundr5)
rrrr
test_pairsrrFtest_triplesrsrs
          rtest_tonum_methodsz UsabilityTest.test_tonum_methodss,,&&
T]
W
	
R"%R"%	
rB'rE*

	8DAqTZZ
3Q7	8*djj'&/B*djj'&/B*djj'(2CD-WU^D-WV_E

	7DAqTYYwqz2A6	7*diiA*diiA*dii1BC-GENC-GFOD
$	3DAqU71:.2	3*eWV_=*eWV_=*eWX->?-?-@ $	;GAq!Swqz1!56:	;r(c|jj}dD]r}t||}|jt	j
|t	jd|}|j||jdrdndty)N)rnan1234-nanz-nan2468rrg)	rrrr"rrrtr:r)rrrrrts     rtest_nan_to_floatzUsabilityTest.test_nan_to_floatss,,&&7	GAgaj!AOODJJqM*==a(DT1<<+<4#F		Gr(c|jj}dD]%}||}|jtt|'y)N)snanz-snansnan1357z	-snan1234)rrrdrr)rrrrs    rtest_snan_to_floatz UsabilityTest.test_snan_to_float"s;,,&&;	4A
Aj%3	4r(c|jj}|d}|j|tt	||d}|j|tt	||d}|j|tt	||d}|j|tt	|y)Nrrrr)rrr:r6r9rs   rtest_eval_round_tripz"UsabilityTest.test_eval_round_trip(s,,&&
\#DaM*
^%DaM*
*,DaM*
:<DaM*r(c@|jj}|d}|j|jd|d}|j|jd|d}|j|jd|d}|j|jd|d	}|j|jd
|d}|j|jd|d
}|j|jd|d}|j|jd|d}|j|jd|d}|j|jd|d}|j|jd|d}|j|jd|d}|j|jdy)Nrrrkrrrr)rrr)rrrrrrqrrr)rrrrqrrr)rrrr%)rrr)rrr)rrrs)rrrs)rrNrrr)rrrs)rrr)r)rrrrr)rrr)rrr:as_tuplers   r
test_as_tuplezUsabilityTest.test_as_tuple;s,,&&
AJ|5
CL~7
%&'LN
J~7
35'?A')}5["}5
46'@B(*|5\#|5
^%~6+-~6+-~6r(c	4|jj}|jt|j|d|jt|j|d|jt
|j|d|jt
|j|dt
ddD]}t
dD]}dD]}|d	|||fz}|j	}|\}}|j|t|j|t|j|t|j|d
|jtj||d|j||||z|y)Nrrrsnan123rr)rrz%s%dE%drr)rrrdras_integer_ratiorrrrtuplerrHr:rgcd)	rrrUcoeffrtrpqrrs	         rtest_as_integer_ratioz#UsabilityTest.test_as_integer_ratiohs},,&&	
-!22GEN	D-!22GFO	E*!22GFO	E*!22GI4F	HQ<	ACt
A$AD	T5#,> >?A++-BDAq))"e4))!S1))!S1&&q!,$$TXXa^Q7$$WQZ'!*%<a@!A
A	Ar(c<|jj}Gdd|}|d}|d}||z}|jt|||j	|}|jt||tj
|}|jt|||j
||tj|}|jt|||j
|||d}||}|jt|||j
||||}|jt|||j
|||j|jd||}|jt|||j
||d|_||}|jt|||j
|||j|jdy)NceZdZdZy)1UsabilityTest.test_subclassing.<locals>.MyDecimalN)rrZr[rrr(r	MyDecimalrsAr(rrr1.0r*)	rrrr4rrnr:rpr)rrrrrrrr4s        rtest_subclassingzUsabilityTest.test_subclassings,,&&		q\
q\G

d1gw'FF2J

d1gw'IIbM

d1gy)BMM"

d1gy)B
ENAJ

d1gw'A
aL

d1gy)A

acc4 
AJ

d1gw'AaL

d1gy)A

acc4 r(c
|jj}|jj}|}|jt	|djt	|j|dyNr)rrrr:r5rrrrrs    rtest_implicit_contextz#UsabilityTest.test_implicit_contexts^,,&&\\,,

LWQZ__./QVVGAJ/0	2r(c$'|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|jj}	|jj}
|jj}||5}d|_d|_
d|_|d}
|d}|d}|j|j!t#|
j%dd|j'|j(|	|j'|j(|
|j|j+||j$d|j'|j(||j-|j/dd	|j-|j1dd
|j|j!t#|
j3dd|j'|j(|	|j'|j(|
|j|j+||dj2d|j'|j(||j|j!t#|
j5dd
|j'|j(|	|j'|j(|
|j|j+||dj4d|j'|j(||j|j!t#|
j7dd|j+||dj6d|j'|j(||j|j!t#|
j9dd|j+||j8d|j'|j(||j|j!t#|j;dd|j+||dj:d|j'|j(||j|j!t#|j=dd|j+||dj<d|j'|j(||j|j!t#|j?dd|j+||j>d|j'|j(||j!t#|jAdd|j|j!t#|jCdd|j'|j(||j'|j(|	|j'|j(|
|j'|j(||j'|j(||j|j+||jBd|j'|j(|d|_"|j!t#|jGddd|_"|jt#|
jI|dd}|j!|d|j+||
jH|dd|j'|j(||jt#|
jKdd}|j!|d|j+||
jJ|dd|j'|j(||jt#|
jMdd}|j!|d|j+||
jLdd|j'|j(||jt#|
jOdd}|j!|d|j+||
jNdd|j'|j(||jt#|
jQdd}|j!|d |j+||
jPdd|j'|j(||jt#|
jSdd}|j!|d|j+||
jR|dd|j'|j(||jt#|
jUdd}|j!|d|j+||
jT|dd|j'|j(||jt#|
jWdd}|j!|d|j+||
jV|dd|j'|j(||jt#|
jYdd}|j!|d|j+||
jX|dd|j'|j(||jt#|
j[dd}|j!|d |j+||jZdd|j'|j(||jt#|
j]d!d}|j!|d"|j+||
j\dd|j'|j(||jt#|
j_dd}|j!|d#|j+||
j^d$d|j'|j(||jt#|
jad!d}|j!|d"|j+||
j`d$d|j'|j(||jt#|
jcd!d%d}|j!|d&|j+||
jb|dd%d|j'|j(|td|_3t#|d'jidd(}|j!|dtj|_3t#|d'jidd(}|j!|d)t#|d'jitld(}|j!|d|j|j+||djhd|j'|j(|td|_3t#|d'jodd(}|j!|dtj|_3t#|d'jodd(}|j!|d)t#|d'jotld(}|j!|d|j|j+||djnd|j'|j(|td|_3t#|d'jqdd(}|j!|dtj|_3t#|d'jqdd(}|j!|d)t#|d'jqtld(}|j!|d|j|j+||djpd|j'|j(|tl|_3t#|d*js|d+dd,}|j!|d-tj|_3t#|d*js|d+dd,}|j!|d.t#|d*js|d+tld,}|j!|d-|j|j+||jr|d/tld(|j'|j(|ddd||5}d|_d|_
d|_|d05}|j!|jd|j!|jd|j!|jdddddddy#1swYxYw#1swYxYw#1swYyxYw)1Nrr)i1111e9999z1e-9999r%z1.609487E+48FTz4.709530roz2.045323rr1111000z
9.999999E+999rrr_
+Subnormalz0E-1005rNan891287828
NaN1287828i  rrwe101rfr'r11100z1.11E+9rr225r5r,r%rz1.50001z1e-3)rUr,r%z1.501z1.500z1e-10)r):rrr.rrrrrrrrrr+rXrSr)r:r5rUr"rMrdrrrlnlog10logbryrrrrgrcapitalsrrrircrrrrrrrrotatescalebshiftfmar/r,to_integralrrrrquantize)rrr.rrrrrrrrrrrrzr?r%s                  rtest_none_argszUsabilityTest.test_none_argssy,,&&,,&&||00<<8844<<((LL**	LL**	,,&&,,&&,,&&
')
$W	7AFAFAFA!A	"A
MMOSt!45~FOOAGGG,-OOAGGG,-
MMOht<OOAGGH-.MM!++d+3U;MM!...6=
MMOSd!34jAOOAGGG,-OOAGGG,-
MMO.MOOAGG$456
MMOS!67DOOAGGG,-OOAGGG,-
MMO.0A0A4POOAGG$456
MMOS!56<ngajootLOOAGGN34
MMOS!1!1$!1!?@)L.0@0@$OOOAGG$456
MMOSd!;<oN.0J0JTXYOOAGG$456
MMOST!:;ZH.0I0ISWXOOAGG$456
MMOST!:;SAhTBOOAGGH-.S!=>M
MMOS!56	BOOAGGG,-OOAGGG,-OOAGGG,-OOAGGI./OOAGGI./
MMOh=OOAGGH-.AJS!>?KAJ
MMOaii 7iFGCS,/.		76?TXYOOAGG$456
MMOa&&tT&:;CS$'.0@0@'%.Z^_OOAGG$456
MMOammCm67CS%(.

sDQOOAGG$456
MMOall3l56CS%(.c4POOAGG$456
MMOammCm67CS$'.

sDQOOAGG$456
MMOaeeCe./CS%(.wvPTUOOAGG$456
MMOaiiTi23CS%(.		76?TXYOOAGG$456
MMOaeeCe./CS%(.wvPTUOOAGG$456
MMOaiiTi23CS%(.		76?TXYOOAGG$456
MMOa&&sD&9:CS$'.0@0@#tTOOAGG$456
MMOahhq$h/0CS'*.#tLOOAGG$456
MMOahhq$h/0CS),.%NOOAGG$456
MMOaggag./CS'*.MOOAGG$456
MMOaeeAq$e/0CS%(hwx/@!TROOAGGH-.)AJgen00$0MNCS#&#AJgen00$0MNCS#&gen00(D0QRCS#&
MMO.0K0KUYZOOAGG$456(AJgen66d6STCS#&#AJgen66d6STCS#&gen66RV6WXCS#&
MMO.0Q0Q[_`OOAGG$456(AJgen66d6STCS#&#AJgen66d6STCS#&gen66RV6WXCS#&
MMO.0Q0Q[_`OOAGG$456!AJgi(11gfoPT^b1cdCS'*#AJgi(11gfoPT^b1cdCS'*gi(11gfoPXbf1ghCS'*
MMO.

GG<LW_imnOOAGG$456oW	7r')
$	/GLGLGL$'
/1  +  -  .
/		/	/sW	7W	7z
/
/		/	/sBAGAM.K)ANLAAM:MANM.AM7M:AN	M?ANNANc	L|jj}|j|djd|dj|d|j|dj	d|dj	|d|j|djd|dj|d|j|dj
d|dj
|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|djd|dj|d|j|d	j!d|d	j!|d|j|dj#d
|dj#|d
|j|dj%d|dj%|d|j|dj'd
|dj'|d
|j|dj)d|dj)|d|j|dj+|dd|dj+|d|d|j|dj+dd|dj+|d|d|j|dj+d|d|dj+|d|dy)Nrriu'i7rfrrirrz9.123rroirgC)rrr:rrirkrmrcrrrrrrrrrrrrrrras  rtest_conversions_from_intz'UsabilityTest.test_conversions_from_int	s,,&&++A. ++GAJ7	92215 2271:>	@11!4 11'!*=	?55a8 55gajA	C33D9 33GDMB	D2248 2274=A	C33D9 33GDMB	D))#. ))'#,7	9--c2 --gcl;	=))#. ))'#,7	9--c2 --gcl;	=11#6 11'#,?	A//4 //=	?44T: 44WT]C	E,,Q/ ,,WQZ8	:33D9 33GDMB	D)006 )00?	A++B/ ++GBK8	:	
))'"+r: ))'"+wr{C	E))"b1 ))'"+wr{C	E))"gbk: ))'"+wr{C	Er(N)rrZr[rUr\r_rnrqrrrrrrrrrrrrrrrrr(rrErEsw4"H1&9((5T(L<\>&(*6e;NG4+&+7ZAB-!^2m/^/Er(rEceZdZeZy)CUsabilityTestNrrr(rrr	rr(rc,eZdZeZfdZfdZxZS)PyUsabilityTestc~t|tj|_tj
dyNiXsuperrsysget_int_max_str_digits_previous_int_limitset_int_max_str_digitsrrs rrzPyUsabilityTest.setUp	+

#&#=#=#? ""4(r(c`tj|jt|yrrrrrtearDownrs rrzPyUsabilityTest.tearDown	"""4#;#;<
r(rrZr[rrrr
__classcell__rs@rr
r
	G)
r(r
cXeZdZdZdZdZedZdZdZ	dZ
dZd	Zd
Z
dZy)
PythonAPItestscl|jj}|jt|tj
|j
t|tj|j|dtj
|j|dtjyr)
rrr"
issubclassnumbersNumberrRealrassertNotIsInstanceras  rtest_abczPythonAPItests.test_abc	sq,,&&
7GNN;<GW\\:;gaj'..9  W\\:r(cttjdzD]D}|jj}t
jd}|jt
jd<|d}tj||}tj|}|j||trtj	d}tj	d}tt
jd<tj||}	tt
jd<tj|	}
|j|
tj|j|
|tt
jd<tj||}tt
jd<tj|}
|j|
tj|j|
|tj	dj}tj	dj}tt
jd<tj||}	tt
jd<tj|	}
|j|
tj|j|
|tt
jd<tj||}tt
jd<tj|}
|j|
tj|j|
||t
jd<Gy)Nrrz-3.141590000z-3.123e81723)rrpickleHIGHEST_PROTOCOLrrrmodulesdumpsloadsr:rrrrDecimalTuple)rprotorsavedecimalrrrHrrsxrsys            rtest_picklezPythonAPItests.test_pickle	s]622Q670	1Ell**G++i0K&*\\CKK	"'AQ&AQAQ"IIn-IIn-)*I&\\!U+)*I&LL$%%a3  A&)*I&\\!U+)*I&LL$%%a3  A&IIn-668IIn-668)*I&\\!U+)*I&LL$%%a8  A&)*I&\\!U+)*I&LL$%%a8  A&%0CKK	"a0	1r(c	L|jj}tddD]{}d|dzz}|jt	||t	t|||}|j
t}|j|t	||}|jtt|d|jtt|d|jtt|d|jtt|dy)	N%0.2fY@rrrr)rrrrr:rrrrrdrrrrrrrrs      rtest_intzPythonAPItests.test_int-
s,,&&tS!	1A1u9%AS_c%(m<
A

j)AWSV_a0	1	
*c76?;*c76?;-gen=-gfo>r(c|jj}tddD]#}|jt	|||%y)Nrpi)rrrrrrrrrs   rtest_small_intszPythonAPItests.test_small_ints>
s<,,&&r3	.AMM#gaj/1-	.r(c	X|jj}tddD]}d|dzz}|jt	||t	t|||}|j
t}|j|tj||y)Nr3r4r5r6)
rrrrr:rrrrrtruncr7s      r
test_trunczPythonAPItests.test_truncE
s,,&&tS!	8A1u9%AS_c%(m<
A

j)AWTZZ]3Q7	8r(c	|jj}Gdd|}|jt|||j	d}|jt
|||jt|d|j|jdd}|j|j	||||j|j	tdj|j|j	tdj|j|j	td	j|jt|j	tdt|d
|jt|j	tdt|d|jt|j	td	t|d|jt|jd
tdD]\}tj dtjdzdz
z}|j|t|j	|^y)NceZdZdZy)1PythonAPItests.test_from_float.<locals>.MyDecimalcd|_y)Nr)r)r_s  rrz:PythonAPItests.test_from_float.<locals>.MyDecimal.__init__V
s	r(Nrrr(rrrAU
s
r(rrrrls\&5$3|	rrrrwrrabcrrrr)rrr"r rr:r4r5rrrrrdr,rrr(r)rrrrbigintrFrs       rtest_from_floatzPythonAPItests.test_from_floatQ
s,,&&			

9g67  %a),QK	Mc".--f5y7HI	,,U5\:BBDE	,,U5\:FFHI	,,U6];GGIJY11%,?@WU^,	.Y11%,?@WZ01	3Y11%-@AW[12	4)Y%9%95As	@A""4(FMMOc,AC,GHAQi&:&:1&= >?	@r(c|jj}|jj}|jj}|dt}|j|j
tj|d|dt}|j|j
tj|d|d|g}|j||jtj|jt|j
dd|jt|j
dd	|jt|j
d
dy)Nrq)r+r,z3.1415rG)r+r-z
Decimal('-0')rzDecimal('1')rz
Decimal('10'))rrr.rrr:create_decimal_from_floatrpirrdr9)rrr.rr%s     rtest_create_decimal_from_floatz-PythonAPItests.test_create_decimal_from_floatq
s5,,&&,,&&,,&&q:6--dgg6H	
q84--dgg6H	
q	2--GG	

	
g??EF(	*g??DE'	)g??CD(	*r(cT|jj}|jj}|jj}|dd}|j	|dj|d|d|j	|dj|dt|d|j||d	j
|d
||}|d}|j||d
t}|j	||dy)Niiayrcz7.335rvz7.34r,z7.3310e999991e100000rz0.871831e8001e797)r%rUr,z	8.71E+799)rrr.rr:rrrd)rrr.rrrrs       r
test_quantizezPythonAPItests.test_quantize
s,,&&,,&&<<88V,G%%gen5FO	
	
G%%genz%JFO	
	
J(('**=q		


IN#
JJqgg&6JLGK01r(cB|jj}|d}|j|j||j|jd|j|j||d}|jt
|t
td|jtt|dd|jtt|dd|jtt|dd|jtt|d	dy)
Nz9.8182731e181273rrrrealrimag	conjugate__complex__)rrr:rSrTrUcomplexrrdr-r)r:s   rtest_complexzPythonAPItests.test_complex
s,,&&&'##*CLWU1X%67.'1fcB.'1fcB.'1k3G.'1mSIr(c|jj}|jj}|jj}|jj}|jj
}|}d|_d|_d|_|5}|j|j|d|d|j|d|d|j||dd|j||d|j|j||d||j|j||j|j||j|j|dj|d	|j||d
j||j|j||j|j||j|j|dj!||d|j||dj ||j|j||j|j||j|dj#||d|j|dj%|d
|j|dj'||d|j|dj)||d|j|dj+|d|j|dj-|d|j|dj/|d|j|dj1||d|j|dj3|dd|j|j||dj4|d||j|j||j|j||j|dj7|d||d|j|dj7|d||d|j|dj9|d ||d |j|d!j;|d"||d#|j|d!j=|d"||d|j|dj?|d$||d%|j|j||dj@|d&||j|j||j|j||j|d'jC|d(||d)|j|d*jE|d+|d	,|d-|jtF|djH||jtF|djJ||jtF|djL||jtF|djN||jtF|djP||jtF|djR||jtF|djT||jtF|djV||j|djY||j|dj[||jtF|dj\||jtF|dj^||jtF|dj`||j|d.jc|d|j|dje|d|j|djg|d/|j|d0ji|d0|j|d1jk|d2|d|j|d1jm|d2|d|j|d3jo|d2|d|j|d4jqd|d|j|d4jqd|d|j|j||d4jrd||j|j||j|j||j|d4jud|d|jtF|jvd5||jtF|djx||j|dj{d|jtF|d$j|||jtF|d$j~||jtF|djzd6|jtF|djzd67dddy#1swYyxYw)8Nrror*r)r%rrr~rrrz0.7rrz-0.9z9.73z1E+19999'z-2000i0rZrfz0.06250.2r)r%rr_r0.01z0.0101r9z-0.3z0.02z-0.03rrr1e109.99r5r9.9z0.9)thirdr%rz7E+1irz0.2111r'0123g?r)r~)@rrr.rrrr+rXrSr)r:rdr"rMrrUrrrrrrrrrrrirrrrrrrrr,r{r}rrrrrrrradjustedrUradixrryrgrrcrrrrrrr	canonicalrqrs)rrjr.rrrxcrs        rtest_named_parametersz$PythonAPItests.test_named_parameters
s	LL  ,,&&||00<<88<<((
Y
^b	Bq
MMOQq"Xq)Qq"-q1Qr3Q7Qr]A.NN.5"EOOBHH%567QWW%567NNQqTXXbX115h!"=OOBHHX./QWWX./NNQqTWWRW0!E(;.""EOOBHH%567QWW%567QqTZZZ3QvY?QrU--b-92>QrU__R_8!F)DQvY000<aiHQvY2222>EQwZ99"9EuMQuX777CSIQx[--b-91U8DQx[0010ErJNN.f33QuXr

KOOBHH%567QWW%567QvY]]1X;]CQuXNQvY]]1X;]CQuXNQuX--ai-DvY
(QvY]]1W:r]BAfINQvY..qz2.FuX
'QuX11!D'21F%QNN.h//6B

HOOBHH%567QWW%567QvY55ah5KvY
(
QuX\\%"A\NvY
(
i1):):BGi1Di1)9)92Fi1bAi1rBi1rBi1Di1rBQvY000<=OOAfI2222>?i1Ci1Di1R@QtW\\"\5q9QqT000<a@QvY33B3?NQvY44R4@&IQtW004"0EqIQtW//$/DaHQtW004"0EqIQtW^^Ar^:A>QtW^^Ar^:A>NNhgnna

=OOBHHX./QWWX./QtW]]2r]:A>isBGi1CQqT^^-q1i4)9)92Fi4)<)<bIi1Ei1SAEb	Bb	Bb	Bs
mo11o:c4|j}|j}|j}|j}|j}|j
}|j}|j}|j}	|j}
|j}|jt|t|jt|||jt|||jt|t|jt|||jt|t|jt||
|jt||	|jt|||jt||	|jt||
|jt|||jt|||jt|||jt|	||jt|
||jt|||jt|j ||jt|j"||jt|j$||jt|j$t|jt|j&|yr)rrrFloatOperationrrrrrrrr"r ArithmeticErrorr,ZeroDivisionErrorConversionSyntaxDivisionImpossibleDivisionUndefinedInvalidContext)rrrrrkrrrrrrrs            rtest_exception_hierarchyz'PythonAPItests.test_exception_hierarchy%sF,,"33"33 // //##%%	%%	//////
#3_EF
#35EFG
>3CDE
>9=>
>3CDE
>3DEF
8W56
8W56
8-=>?
9g67
9g67
9i89
9.>?@
9.>?@
7,<=>
7,<=>
7,<=>
7#;#;=MNO
7#=#=?OPQ
7#<#<>NOP
7#<#<>OPQ
7#9#9;KLMr(N)rrZr[r%r1r8r
r;r>rFrKrQrXrirrrr(rrr	sP;11f?"..
8@@*820J nB`&Nr(rceZdZeZy)CPythonAPItestsNrrr(rrtrtMrr(rtceZdZeZy)PyPythonAPItestsNrrr(rrvrvPrr(rvceZdZdZeeejedZ	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@ZFyA)BContextAPItestsc
|jj}|jj}|jj}|jj}|}|dddddddd}||fD]}|j|jd|j|jt|j|jd|j|jd|j|jd|j|jdt||dgt||d|||gy)	N)r+r,rXrSrrarMr-r?BrrrMr-)rr.rrrr:r+r,r/rXrSrrar')rr.rrrr#r!rs        rrzContextAPItests.test_none_argsUs,,&&<<8844<<((
Y
$Dt"$d$Hb		9AQVVR(QZZ9QVVV,QVVW-QZZ+QWWa(4GR04G.>.6.8
9		9r(rcrddl}|jj}tD]4}|j	||_|j
|j
|6|j	d}|jtt|d||j	d}|jtt|d|y)Nrrr,z	ROUND_UP)
rrr.
RoundingModesrr,r:rdr,r))rrrrndrs     rrz(ContextAPItests.test_from_legacy_stringsis	LL  " 	.C"88=AJQZZ-	.
++B/)WaQ?++N;)WaQ?r(cttjdzD]0}|jj}t
jd}|jt
jd<|}tjtj||}|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j |j |j|j"|j"t$rt$t&ft&t$fgnt&t&fg}|D]C\}}t)t*D]*\}	}
t)t,|D]\}}
t)t,|D]\}}
t/j0dd}
t/j0dd}t/j0dd}t/j0d}t/j0d}|t
jd<|j	|
||t*|	||t,|d|t,|d|}tj||}|t
jd<tj|}|j3||j|j|j|
|j|j||j|j||j|jt*|	|j|j||j|j|t5||dt,|d|t5||d	t,|d|-F|t
jd<3y)
Nrrrrrr)r+rSrXr,rrarMr-rMr-)rrr'r(rr.rr)r+r*r:r+rSrXr,rrarMr-rrr/r}r3r(	randrangerr')rr-r.r.rrHcombinationsdumperloaderrirCfitir+rlrkcapsrarrs                    rr1zContextAPItests.test_picklezsr622Q679	1Ell**G++i0K&*\\CKK	"	AV\\!U34AQVVQVV,QVVQVV,QVVQVV,QZZ4QZZ4QWWagg.QWWagg.QWWagg.01QFQF+1vhL"."
Z&}5!ZEB!*>&+A!B ZA%.~f/E%FZEB#)#3#3As#;D#)#3#3D!#<D#)#3#3As#;D#)#3#3A#6D$*$4$4Q$7E6<CKK	2 &'+$T+8+<+/u(6v(>s(C(6v(>s(C!/!A!'Q 6A6<CKK	2 &QA 11!V^^D ,,QVVT: ,,QVVT: ,,QVVT: ,,QZZr9JK ,,QZZ> ,,QWWe<*4G^F=STWUW=XY*4G^F=STWUW=XY?Z Z!Z"
ZH&1CKK	"s9	1r(c|jj}|j|ddd|ddig|j|ddddigy)Nrrr)rr)rrassertInassertNotInras  rtest_equality_with_other_typesz.ContextAPItests.test_equality_with_other_typessO,,&&

gbkCgbk5"#EFsC&;<r(c|jj}|jj}|}|j}|j	t|t||j	t|jt|j|j	t|jt|jt|jj}t|jj}|j|||j|j|jyr)rrr.rnrLr=rMr-rkeysr:)rrr.rrk1k2s       r	test_copyzContextAPItests.test_copys,,&&,,&&I
FFHBqE2a5)BqwwKAGG5BqwwKAGG5

 

 R !''*r(cv|jj}|}|jtt|dy)N_clamp)rr.rdr-r!rr.rs   rtest__clampzContextAPItests.test__clamps.,,&&I.'1h?r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyNror)rrr.rr:rdr,rrr.rrs     rtest_abszContextAPItests.test_absg,,&&,,&&I
EE'"+rA&)QUUD1r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyNrr)rrr.rr:rdr,rs     rtest_addzContextAPItests.test_add,,&&,,&&I
EE'!*gaj)q!a(wqz1-q1q'!*-q1)QUUC3)QUUAs3r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_comparezContextAPItests.test_compare,,&&,,&&I
IIgaj'!*-1a!,71:q1151gaj115)QYYQ7)QYY37r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rir:rdr,rs     rtest_compare_signalz#ContextAPItests.test_compare_signal,,&&,,&&I
WQZ4))!Q/3))'!*a8!<))!WQZ8!<)Q%5%5sA>)Q%5%5q#>r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rkr:rdr,rs     rtest_compare_totalz"ContextAPItests.test_compare_totals,,&&,,&&I
OOGAJ
3A.2Q7;GAJ7;)Q__c1=)Q__a=r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rmr:rdr,rs     rtest_compare_total_magz&ContextAPItests.test_compare_total_mags,,&&,,&&I

GAJ7,,Q2A6,,WQZ;Q?,,Q
;Q?)Q%8%8#qA)Q%8%8!SAr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rqr:rdr,rs     r
test_copy_abszContextAPItests.test_copy_abssg,,&&,,&&I
JJwr{#B+)QZZ6r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.ror:rdr,rs     rtest_copy_decimalz!ContextAPItests.test_copy_decimal%h,,&&,,&&I
NN72;'+Q/)Q^^T:r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rsr:rdr,rs     rtest_copy_negatez ContextAPItests.test_copy_negate.h,,&&,,&&I
MM'"+&r*A.)Q]]D9r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddy)Nrrrr)rrr.rur:rdr,rs     rrzContextAPItests.test_copy_sign7s,,&&,,&&I
KK
GBK0Q+Q/WQZ4a8Q4a8)Q[[#r:)Q[[!T:r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyNrrrr)rrr.rr:rdr,rs     rtest_dividezContextAPItests.test_divideC,,&&,,&&I
HHWQZ,!Q+'!*a0!4!WQZ0!4)QXXsA6)QXXq#6r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rwr:rdr,rs     rtest_divide_intzContextAPItests.test_divide_intO,,&&,,&&I
LLWQZ0a+Q/gaj!4a8a4a8)Q\\3:)Q\\1c:r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.r(r:rdr,rs     rtest_divmodzContextAPItests.test_divmod[rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyNrr')rrr.rUr:rdr,rs     rtest_expzContextAPItests.test_expgrr(c	|jj}|jj}|}|j|d|d|d}|j	|jddd||j	|j|ddd||j	|jd|dd||j	|jdd|d||j	|j|d|dd||jt|jddd|jt|jddd|jt|jddd|jt|j|d|dd	|jt|j|d
|dd|jt|dj|dd	|jt|d
j|ddy)
NrrrrrD4rrz
not a decimalrrgZd;O?)rrr.rr:rdr,rs     rtest_fmazContextAPItests.test_fmaps,,&&,,&&I
EE'!*gaj'!*5q!Q+wqz1a0!4q'!*a0!4q!WQZ0!4wqz71:q91=)QUUCA6)QUUAsA6)QUUAq#6	
)QUU!*-wqz?	L)QUU!!*gfou	>	
)WZ%8%<%<!!*o	7)WQZ^^!&/5	2r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.r}r:rdr,rs     rtest_is_finitezContextAPItests.test_is_finiteg,,&&,,&&I
KK$R!,)Q[[$7r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_infinitez ContextAPItests.test_is_infiniterr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_nanzContextAPItests.test_is_nansg,,&&,,&&I
HHWR[!"q))QXXt4r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_normalzContextAPItests.test_is_normalrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_qnanzContextAPItests.test_is_qnang,,&&,,&&I
IIgbk"2*)QYY5r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_signedzContextAPItests.test_is_signedrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_snanzContextAPItests.test_is_snanrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_subnormalz!ContextAPItests.test_is_subnormalrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_is_zerozContextAPItests.test_is_zerorr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_lnzContextAPItests.test_lnsg,,&&,,&&I
DDb1%)QTT40r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     r
test_log10zContextAPItests.test_log10g,,&&,,&&I
GGGBK a()QWWd3r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     r	test_logbzContextAPItests.test_logbg,,&&,,&&I
FF72;Q')QVVT2r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rcr:rdr,rs     rtest_logical_andz ContextAPItests.test_logical_and,,&&,,&&I
MM'!*gaj1q!,a0wqz15q9q'!*5q9)Q]]C;)Q]]As;r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdy)Nrr|)rrr.ryr:rdr,rs     rtest_logical_invertz#ContextAPItests.test_logical_invert
sn,,&&,,&&I
WT]+))$/3)Q%5%5v>r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_logical_orzContextAPItests.test_logical_or
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_logical_xorz ContextAPItests.test_logical_xor
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_maxzContextAPItests.test_max#
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_max_magzContextAPItests.test_max_mag/
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_minzContextAPItests.test_min;
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_min_magzContextAPItests.test_min_magG
rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.minusr:rdr,rs     r
test_minuszContextAPItests.test_minusS
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.r*r:rdr,rs     r
test_multiplyzContextAPItests.test_multiply\
,,&&,,&&I
JJwqz71:.Aq)1-GAJ2A6Awqz2A6)QZZa8)QZZC8r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_next_minuszContextAPItests.test_next_minush
sh,,&&,,&&I
LL%b)1-)Q\\48r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_next_pluszContextAPItests.test_next_plusq
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_next_towardz ContextAPItests.test_next_towardz
rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_normalizezContextAPItests.test_normalize
rr(c|jj}|jj}|}|j|j	d|j	|d|j|j	d|j	|d|j|j	d|j	|dy)Nrfrrk)rrr.r:rg)rrr.rs    rtest_number_classz!ContextAPItests.test_number_class
s,,&&,,&&I,annWS\.JK*ANN71:,FG,annWS\.JKr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.plusr:rdr,rs     r	test_pluszContextAPItests.test_plus
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||j	|j|d|d||jt|jdd|jt|jdd|j	|jddddy)	Nrrrrrqrr)modulorTr)rrr.powerr:rdr,rs     r
test_powerzContextAPItests.test_power
s	,,&&,,&&I
GGGAJ
+A*Q/3GAJ/3WQZ8!<)QWWc15)QWWa5Q!4a8r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rrQzContextAPItests.test_quantize
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.	remainderr:rdr,rs     rtest_remainderzContextAPItests.test_remainder
s,,&&,,&&I
KK
GAJ/Q*A.WQZ3Q7Q
3Q7)Q[[#q9)Q[[!S9r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_remainder_nearz#ContextAPItests.test_remainder_near
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_rotatezContextAPItests.test_rotate
rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     r	test_sqrtzContextAPItests.test_sqrt
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_same_quantumz!ContextAPItests.test_same_quantum
s,,&&,,&&I
NN71:wqz21-q1
A6:71:6:)Q^^S!<)Q^^Q<r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     rtest_scalebzContextAPItests.test_scaleb
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.rr:rdr,rs     r
test_shiftzContextAPItests.test_shifts,,&&,,&&I
GGGAJ
+A*Q/3GAJ/3)QWWc15)QWWa5r(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.subtractr:rdr,rs     r
test_subtractzContextAPItests.test_subtractrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_to_eng_stringz"ContextAPItests.test_to_eng_stringh,,&&,,&&I
OOGBK(,a0)Q__d;r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_to_sci_stringz"ContextAPItests.test_to_sci_string!rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rdr,rs     rtest_to_integral_exactz&ContextAPItests.test_to_integral_exact*sn,,&&,,&&I
,,,R0!4)Q%8%8$?r(c`|jj}|jj}|}|j|d}|j	|jd||jt|jd|jt|jddy)Nrr'r)rrr.rr:rdr,rs     rtest_to_integral_valuez&ContextAPItests.test_to_integral_value3s,,&&,,&&I
,,,R0!4)Q%8%8$?)Q%8%8"cBr(N)GrrZr[rr
rrrrrr1rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrQrr	rr
rrrrrrrrrr(rrxrxSsv9(!#$_$$.@A@B$@;1z=
+	@2
4
8
?
>
B7;:
;
7
;
72248:58686;6143
<?
;
<
4
8
4
84
998
<8L39
9
:
?
73
=
7
6
9<<@Cr(rxceZdZeZy)CContextAPItestsNrrr(rr!r!=rr(r!ceZdZeZy)PyContextAPItestsNrrr(rr#r#@rr(r#c<eZdZdZdZdZdZdZdZdZ	dZ
y	)
ContextWithStatementc0|jj}|jj}|}|5}|}ddd|}|j||d|j	|d|j|dy#1swYJxYw)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\\,,
||00<
^	#y lG	#L	

h	+NO7,FG

gy*LM	#	#sBBc|jj}|jj}|jj}|jj}|}|d}||5}|}ddd|}|j	||d|jj|jd|j||d|j	|dy#1swYqxYw)Nrr+r'zdid not set correct contextr(r))rr.rrrr:r+r*)	rr.rrr+new_ctxr,r-r.s	         rtest_localcontextargz)ContextWithStatement.test_localcontextargTs,,&&\\,,
||00||00<r"
'
"	#i lG	#L	

h	+NOw||5RS'+EF

gy*LM
	#	#s1C))C2c|jjdtdddd5}|j|jd|j|j
|jj|j|jd|j|jd|j|jd|j|jdddd|jt|jjd|jt|jjd|jt|jjd	
|jt|jjd|jt|jjd
|jt|jjd|jt|jjd|jt|jjd|jt|jjd|jt|jjd|jt|jjd
y#1swYxYw)Nrirr)r+r,rSrXrra)r^rSrorXrrrarrMrMr-)
rrrr:r+r,rSrXrrardr,rrs  rtest_localcontext_kwargsz-ContextWithStatement.test_localcontext_kwargses
\\
&
&o2'

	+SXXr*S\\4<<+G+GHSXXs+SXXr*S\\1-SYY*
	+	
)T\\%>%>"M*dll&?&?aH*dll&?&?bI*dll&?&?!L*dll&?&?qI)T\\%>%>L)T\\%>%>K)T\\%>%>bI)T\\%>%>bI)T\\%>%>RH)T\\%>%>RH3
	+
	+sB=KKc|jj}|j}|jjd5}|j	|jd|j	|j|ddd|jjd5}|j	|jd|j	|j|dddy#1swYgxYw#1swYyxYw)Nrr1r5)rrr+rr:)rr	orig_precctx2s    r>test_local_context_kwargs_does_not_overwrite_existing_argumentzSContextWithStatement.test_local_context_kwargs_does_not_overwrite_existing_argumentsll%%'HH	
\\
&
&B
&
/	24TYY+SXXy1	2\\
&
&B
&
/	24TYY+SXXy1	2	2	2	2	2	2s9C" 9C."C+.C7c	|jj}|jj}|jj}|jj}|jj
}|jj}|}|j|d}|5}	|j|	j|j|j|	j|jd|	j|<d|	_|j|jd|j||	jd|j|	j|||5}
|j|
j|j|j|
j|j|j||
j |dd|j#|
j||j|
j|~
ddd|j#|	j|~	ddd|j|jd|j#|j||j#|j||j#|j||j#|j|y#1swYxYw#1swYxYw)Nr7Tz0e-999z3.4e200r)rrr.rrrrr)r:rMr-rSrLrdrr"rr)rrr.rrrrr+r2r#r!s           rtest_nested_with_statementsz0ContextWithStatement.test_nested_with_statementssD,,&&,,&&\\,,
||00,,&&<<((<s#
^	rRXXx~~6RXXx~~6 $BHHWBG

t4gr'8'8(COOBHHW-.g&
"  7==9  7==9!!(BHHgi6H!L  '!23 23


RXXh/0!	"	
HMM400112w/0x01

		s&,CK,.B.K 'K, K)	%K,,K5c	|jj}|5}~|5}~|5}~|5}~ddddddddddddy#1swY"xYw#1swY&xYw#1swY*xYw#1swYyxYwrrrrrr#r!r"c4s      rtest_with_statements_gc1z-ContextWithStatement.test_with_statements_gc1s||00
^	r
2!^r%2
		

		sO	B	A4	A(A	A(A4BA%
!A((A1-A44A=	9BB	c	|jj}|5}||5}~||5}~||5}~~ddddddddddddy#1swY"xYw#1swY&xYw#1swY*xYw#1swYyxYwrrFrGs      rtest_with_statements_gc2z-ContextWithStatement.test_with_statements_gc2s||00
^	rb!
R!"%%b)R
		


		sO	B
A7
A+A	A+A7BA(
$A++A40A77B	<BBc	|jj}|jj}|jj}|jj}|5}~|d}||||5}~|j|jd~|d}||~|j|jd|d}	||	|j|jd||	5}
~	|j|
jd~
|d}||~|j|jd|5}|j|jd~ddddddddddddy#1swY"xYw#1swY&xYw#1swY*xYw#1swYyxYw)Nrr1rrr)rr.rrr3r:r+)
rr.rrr3r#n1r!n2n3r"n4rHs
             rtest_with_statements_gc3z-ContextWithStatement.test_with_statements_gc3s,,&&||00\\,,
\\,,

^	raBrNb!
R  !,!_2  !2!2A6!_2  !2!2A6!"%
$$RWWa0 aBrN$$Z\%6%6:%2((!4

			.



			sV G;BF7AF+ F	>F+F7GF(
$F++F40F77G	<GGN)rrZr[r/r3r<r@rDrIrKrQrr(rr%r%Cs.NN"I82!2F

r(r%ceZdZeZy)CContextWithStatementNrrr(rrSrSrr(rSceZdZeZy)PyContextWithStatementNrrr(rrUrUrr(rUc4eZdZdZdZedZdZdZy)ContextFlagsc
jj}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]2\}}
|	j||
}|	jj!Dcgc]
\}}|s	|}}}|D]}|	j|D]}||	|
||
}t#|}|D]}||vs|j%||j't(
|	jj!Dcgc]
\}}|s	|}}}|j't(
j+||dd|d
|dzj+||dd|d
|z5ycc}}wcc}}w)Ncjtk(r!d|j|<|j|r|y|j	|yNT)rrrMr-_raise_error)r%flagrs  rraise_errorz7ContextFlags.test_flags_irrelevant.<locals>.raise_errorsC||q &*

d#==&J'$$T*r(r*r2r)r+rSrXr,r-rMz100E-425000010rroz
9.87654321r%z=operation produces different answers depending on flags set: z	expected z, got rz9operation raises different flags depending on flags set: )rrr.rrrrrr/rerrr*rr)rMrrNr2r8r=r:)rrr.rrrrrr]r%
operationsflagsetsfnrr?krrMextra_flagsr\new_ansexpected_flags	new_flagss`                      rtest_flags_irrelevantz"ContextFlags.test_flags_irrelevants,,&&,,&&,,&&,,&&LL**	,,&&LL**		+qI#2"BH
^^g&6789
\\GAJ<(
[[7<0',2GHI


 5w|7LMN


 5w|7LMN
Iy9+y9+gy'9EG#	WHB!d)C#*==#6#6#8>41aAQ>E>'
W##%'/D./d)"&e'4D>1&--d34###++2--*=*=*?E31Q1QE	E2&  g!`;>!H"IJ  N"];I9"U#VW+
W
	W?"Fs;
I9I9
I?
I?
c|jj}|jj}|jj}|}|j	|j
|j|j	|j|j
|j|_|j|j
|j|j|j|j
d|j
|<|j
|_|j|j
|j|j|j|j
i}|j|j
|j||j
|j|j
|d||<|j	||j
|j	|j
||di}|j	||j
|j	|j
|dg}|j	||j
|j	|j
|y)NTFr~)	rr.rrrLrMr-r:update)rr.rrrrs      rtest_flag_comparisonsz"ContextFlags.test_flag_comparisons1s,,&&,,&&,,&&I	
AGGQWW-AGGQWW-''!''*!''*''!''*!''*	AGG$!$'
Aqww'AGGQ'UOAqww'AGGQ'
GAqww'AGGQ'r(c|jj}|jj}|jj}|5}|j	|j
||j
|j|dd|j|j||j
|j|jdd|j|j||j
|jd}|j	|j||j|d|j|j||j
|jd}|j	|j||j|d|j|j|d|j
|<|j
|j||d|j|j||j
|j||jd|j|j||j
|jd}|j	|j||j
|jd}|j	|j|dddy#1swYyxYw)Ng@T)rrrkrrr-r)r:r"rMrrrIrd)rrrkrrrs      rtest_float_operationz!ContextFlags.test_float_operationWsV,,&&44||00
^.	6qQWW^45
MMOWS\3/OOAGGN34
MMOQ--c2C8OOAGGN34
MMO""3'AQWW^45Q$OOAGGN34
MMO++C0AQWW^45Q$OOAGGN34'+AGGN#
MMOngs;OOAGGN34
MMOna.>.>DOOAGGN34
MMO""3'AQWW^45
MMO++C0AQWW^45].	6.	6.	6s

J+K>>Lc	

jjjj}jjjj}dfd		dd
dddddd	d
dtd
td
d	

fd	}dfd	}|}||5}j
|j||d||dd|j<||||dddy#1swYyxYw)Nc|jt||}|k(rj|||nj||dj	|j
yrZ)r)r!rdrr"rM)rrTr&r%signalrrkrs      rassert_attrz7ContextFlags.test_float_comparison.<locals>.assert_attrs\!4 A'!!&!Q/

adD)OOGMM.9:r(rWrXrZrYr9rrrHrrrrcdD]}
|||dD]}|||
d|dd|dd|dd|dd|d	
d|dd|d
d|dddd|d	d|d
d|ddtdd|dy)	N)rr)rr	rr
rrrwr)r)rrnr&rrobig_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<
=
(At<
J!TB
FHa>
Ha>!T:	9h4@uh48
!T:Xq$?	5(At<y(At<eh4Hr(cp|jtddg}jt|dj	|j
|j|r j
|tddgntddg}j	|j
|jdddfv}j	|j
|jdddddiv}j	|j
y)	Nr6z100.0rrrg$@rrT)r)rr:lenr"rMrdsorted)rrnrrTrrkrs    rtest_containersz;ContextFlags.test_float_comparison.<locals>.test_containerss
MMOUGG,-.ASVQ'OOAGGN34
MMO!!&&32HID'&/23OOAGGN34
MMO#..AOOAGGN34
MMOc#66AOOAGGN34r()rnTr)rrr.rkrrrr-)rr.rr}rrrrrkrorqrrrsrtrurvrwrxryrzr{r|s`      @@@@@@@@@@@@@@@rtest_float_comparisonz"ContextFlags.test_float_comparisons1,,&&,,&&44||00	;&/V_


#K(	e&M		I	I	I<	5*Y
"
	6QWW^454 Ad+&*AGGN#>*An5	6	6	6s
(AEEc|jj}|jj}|jj}|jj}|}|j|j||j|j||jd|j|<d|j|<|j|j||j|j|yrZ)
rrr.rrkrrMr-clear_trapsr")rrr.rrkr%s      rtest_float_operation_defaultz)ContextFlags.test_float_operation_defaults,,&&,,&&,,&&33)~67~67!%

g(,

n%

n56

g./r(N)	rrZr[rfrirrkrrrr(rrWrWs1@WD$(L3636jY6v0r(rWceZdZeZy)
CContextFlagsNrrr(rrrrr(rceZdZeZy)PyContextFlagsNrrr(rrrrr(rceZdZ	dZdZy)SpecialContextsc
v|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|jj}	t||d|||||	g|j}
|j}|j}d}
	dx|_|_||fD]?}|||}|j|||j|jdA	||_||_||
|
r|
y#t$r}|j }
Yd}~5d}~wwxYw#||_||_||
|
r|
wxYw)Nr-i)rBasicContextExtendedContextrr3rrrrrr'rnr+r*r:	Exceptionr)rrrrr3rrrrrsavecontextbasic_context_precextended_context_precextemplaterrHs                 rtest_context_templatesz&SpecialContexts.test_context_templatess||00,,66\\,,
\\,,
<<8844<<((LL**	,,&&t\7
~xGL	
!l'')).. / 4 4
	7::L 4(/9
.8$L  H-  -	
.!3L#8O {#
	B	!3L#8O {#s1
AE:F:	FFFFFF8c|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|j|jd|j|jdt||d|||g|j}	|j}
d}	|}|j}
d|_
|}|j|j|
|||}|j|||j|jd|
|_
||	|r|y#t$r}|j}Yd}~.d}~wwxYw#|
|_
||	|r|wxYw)Nr*r-i)rr4rrrr3rrrr:r+r'rnr*rr)rr4rrrr3rrrrdefault_context_precrrsaveprecrHs               rtest_default_contextz$SpecialContexts.test_default_context%s44||00,,66\\,,
\\,,
<<8844<<((**A.--q1t^W
~x8	
!l'')-22
	AvvH"%NAQVVX.~&AQ/QVVS)#7N{#	B	#7N{#s+A:F,,	G5GGGGG#N)rrZr[rrrr(rrrs%"H'r(rceZdZeZy)CSpecialContextsNrrr(rrrNrr(rceZdZeZy)PySpecialContextsNrrr(rrrQrr(rceZdZdZy)ContextInputValidationc	|jj}|jj}|j}dD]e}t	||d|jt
||d|jtt||d|jtt||dgt	|dd|jt
|dd|jtt|dd|jtt|dd|jtt|d	d|jtt|d	d
|jtt|d	d|jtt|d	ddD][}|jtt||d|jtt||d
|jtt||gd]|jtt|dd|jtt|dg|jtt|di|jtt|dddidD]#}|jt|j|%|jtt|d
|jtt|d
|jt|d|jt|d|jt|d
|jt|d|jt|dg|jt|dg|jt|d|jt|dy)Nr+rXrzror~rSr{rrrrr,r*rrrarrkrrMr-rr)r+rXrSr,rrarMr-rMr9r8rr:Qr;rr)rr)
rr.r4rnr)r:r!rdrr,r-KeyError__delattr__)rr.r4rr&s     rtest_invalid_contextz+ContextInputValidation.test_invalid_contextVs,,&&44!%	BDAtV$WQ-v6j'1dB?i!T5A		B	67#F+W5*gq&!<)WaA)WaR@)WaQ?)WaSA)WaUC*	DDj'1dB?j'1dA>i!T7C	D	
.'1fcB	
)Wa"=(GQ<(GQ-a0	2'	CDnammTB	C
	
)Wa3)Wa3	
)Wv>)Wu=*gQ7*g;(GC59(GC59	
)WE:)WE:r(N)rrZr[rrr(rrrTs:;r(rceZdZeZy)CContextInputValidationNrrr(rrrrr(rceZdZeZy)PyContextInputValidationNrrr(rrrrr(rceZdZdZy)ContextSubclassingc	|jj}jj}j}j
}j}j}j}j}j}	Gfdd}
}|
}dD](}
|jt||
t||
*|jt|
fiddi|
d}|j|jd|j|	|j |dd	|jt"|
fid
di|
t$d}|j|j&t$|j|j)|d
d|jt|
fiddi|
dd}|j|j*d|j-|d|d}|j||d|||||fD] }|j/|j0|"|jt|
fiddi|
dd}|j|j2d|j||j,|d|d|jt4k(r(|||fD] }|j/|j0|"|jt|
fiddi|
d	}|j|j6d	|j9d}|j|j;|d|jt|
fiddi|
dd }|j|j<d|j)|d}|jt?|d!|jt"|
fid"di|
||g#}||fD] }|j/|j0|"|jAtBD] }|jE|j0|"|jt"|
fid$di|
||g%}||fD] }|j/|jF|"|jItBD] }|jE|jF|"y)&Nc"eZdZ			dfd	Zy)>ContextSubclassing.test_context_subclassing.<locals>.MyContextNc	~
j||||_|||_|||_|||_|||_|||_|3t|trt|zD	cic]}	|	|	|v	}}	||_
|4t|trt|zD	cic]}	|	|	|v	}}	||_yycc}	wcc}	wr)rr+r,rSrXrrarrNr3rMr-)rr+r,rSrXrrarMr-rr.rs          rrzGContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__s  &# $DI'$,DM# $DI# $DI'$,DM$!&DJ$!%.9G9PSX9X YAAJ Y Y!&DJ$!%.9G9PSX9X YAAJ Y Y!&DJ%!Z!Zs)B5B:)NNNNNNNNr)r.rsr	MyContextrsIM@D%)
'r(rr+r,rSrXrrarMr-r+rorr19e2rr,XYZ)r,r+r`r*rSrq)rSr+z1e-99z2.234e-2000r9rX)rXr+1e99z
2.234e2000rr81E222z1e+222rarc)rarXz!1.000000000000000000000000000E+99rMr:r-r;)%rrr.rrrrrrrrr:r!rdrr+rr,rr,rrSrr"rMrXrrrrrar5r)r3rr-r)rrrrrrrrrrrrrr&rrnr.rs                @@rtest_context_subclassingz+ContextSubclassing.test_context_subclassingst,,////// ////##//%%	%%	"33	'	'4
IK'	ADWQ-wq$/?@	A
	*i?F2;?1#*AJJJ	)YE:e2DEz2Z0/3	*i>F1:>2A&$
EE''"GM$:;GEN+	9gwG	-FOOAGGFO,	-	*i?F2;?11%#(AEE76?GL<QR<<1"Hg6
10
1	*iCJr?Cq!Q'
W%+X6	*i?GA;?AB'!$
FF76?#Q!DE	)YB75/BWn56/	-FOOAGGFO,	-	

$W-	.FQWWV_-	.	)YB75/BWn56/	-FOOAGGFO,	-	

$W-	.FQWWV_-	.r(N)rrZr[rrr(rrrsi.r(rceZdZeZy)CContextSubclassingNrrr(rrrrr(rceZdZeZy)PyContextSubclassingNrrr(rrrrr(rceZdZdZdZdZy)CheckAttributesc|jtjtj|jtjtj|jtj
tj
|jtjtj|jtjduxstjdu|jtjduxstjdu|jtjtj|jtttty)NTF)r:rrPrrrhrir"r5__version__dirrs rtest_module_attributesz&CheckAttributes.test_module_attributess	
QZZ0QZZ0QZZ0akk2$.I!..E2IJ$.I!..E2IJ

6QQ(r(cvttjDcgc]}d|vs|jdr|}}ttjDcgc]}d|vs|jdr|}}|jt
|t
|z
t
ycc}wcc}w)N__rC)rrr.rrr:rrrrrs    rtest_context_attributesz'CheckAttributes.test_context_attributessAIIK(O1DAIQ\\#=NQOOAIIK(O1DAIQ\\#=NQOOQ#a&#%0
POsB1B1 B6;B6czttjdDcgc]}d|vs|jdr|}}ttjdDcgc]}d|vs|jdr|}}|j	t|t|z
tycc}wcc}w)Nr*rrC)rrrrr:rrs    rtest_decimal_attributesz'CheckAttributes.test_decimal_attributes$sAIIaL)P1TQYall3>OQPPAIIaL)P1TQYall3>OQPPQ#a&#%0
QPsB3B3"B8=B8N)rrZr[rrrrr(rrrs
)11r(rcZeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
Zy)Coveragec|jj}|j|djd|j|djd|j|djdy)N	1234e9999i'rrr)rrr:reras  r
test_adjustedzCoverage.test_adjusted,si,,&&-668%@002A6002A6r(c|jj}|jj}|dj}|j	|d|}|j|d}|j	|dy)Nr*)rrrrgr:)rrrrrs     rtest_canonicalzCoverage.test_canonical4sk,,&&\\,,
AJ  "AL
KK
#Ar(c\|jjj}d|_d|_d|_t|_d|_d|_	t|jD] }d|j|<d|j|<"|j}d}|j||y)Nrr2rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr4rnr+rXrSrr,rrar3rMr-__repr__r:)rrr$rrs     rtest_context_reprzCoverage.test_context_repr?sLL'',,.$

!$,,/	!C AGGCL AGGCL	!
JJL
"	
Ar(c
|jj}|jj}|5}d|_d|_d|_|j
t|dd|j
|ddzd|j
|ddzd	|j
|dd
zd|j
|dj|ddd|j|d
jd
djd|j
t|dd	d
d	|j
|djd|j|djd|j|djd|j
|djd|j
|dj!d|j
|dj#d	|j
|dj%d|j
|dd|j
|ddzd|j
|dj'd|j
|dj)|d|j
|dj+|d|j
|dj-d|j
|dd|j
|dd
zd|j
|dd
z
d|j
|dj/d|j1|dj3|j1|dj5|j1|dj5|j1|dj7|j1|dj9|j1|dj;|j1|dj;ddd|5}d|_d d!z}||}|j=}|j
|||j?}|j
|||jA|d}|j
||dddy#1swYxYw#1swYyxYw)"Nrroz-10r7rr'rqrrz1.2r]rwTz1.01rF20580rrr*z2E+1z-1E+1z+Normalrz1.12345rrr_rii)!rrrr+rXrSr:rrrrpowrUrrrrrryrrrrgrr"r{r}rrrrqrsru)rrrrrrrs       rrzCoverage.test_implicit_contextRsE,,&&||00
^<	4qAFAFAF
S0"5WS\A-q1WT]Q.2WT]a/3WU^//CQGMM'%.,,Q299;TBSa3Q7WV_002A6MM'&/335u=MM'&/668$?WT]--/3WT]002A6WU^002A6WT]99;Q?gen_b1WS\A-q1WT]557;WT]446HWU^5579IJWT]7799Egdm^R0WT]Q.2WT]Q.2WY/AACQG
OOGCL5578OOGCL2245OOGCL2245OOGFO3356OOGDM3356OOGCL0023OOGCL0023y<	4~^	#qAFAA

AQ"

AQ"GAJ'AQ"	#	#<	4<	4~	#	#sQ)T8,BU8UU
c|jj}|jj}|jj}|jj}|5}t|dd\}}|j
||d|j
||dt|dd\}}|j|jxr|jd|j|<t|dd\}}|j|jxr|jd|j|<|jt|d|d\}}|j|jxr|j|j|j||jt|dd	\}}|j|jxr|j|j|j||jt|d
d
\}}|j|jxr|j|j|j|d|j|<|jt|dd
\}}|j|jxr|j|j|j|xr|j|dddy#1swYyxYw)N10912837129r10901935194rwrFrrr)
rrrrrr(r:r"rr-r)rMr)rrrrrrrrs        rrzCoverage.test_divmods,,&&||00<<8844
^!	5q'-0$7DAqQ
 34Q/'%.!,DAqOOAHHJ5188:6(-AGG$%'%.!,DAqOOAHHJ5188:6(-AGG$%
MMO'%.'%.9DAqOOAHHJ5188:6OOAGG$456
MMO'%.#.DAqOOAMMO:
;OOAGG$456
MMO'!*a(DAqOOAHHJ5188:6OOAGG$456&+AGGN#
MMO'"+q)DAqOOAMMO:
;OOAGG$454GGN3
5A!	5!	5!	5s
 K&MMc|jj}|jj}|jj}|jj}|5}d|_|j
|j|ddz|d|j|j|d|_d|_
d|_|j
d|j|<|j|d|d	z|d
|j|j|dddy#1swYyxYw)NrrrrXrroFrrr)
rrrrrr+r)r:r"rMrXrSr-)rrrrrrs      rrzCoverage.test_powers,,&&||00<<((,,&&
^	/qAF
MMOWU^s2GFODOOAGGG,-AFAFAF
MMO %AGGHWU^wu~=wu~NOOAGGH-.	/	/	/s
 CD99Ec|jj}|jj}|jj}|5}d|_d|_d|_d|j|<|dj|d}|j|jdddy#1swYyxYw)NrroFr1e1)rrrrr+rXrSr-rr"rrrrrrrs      rrQzCoverage.test_quantizes,,&&||00<<88
^	(qAFAFAF(-AGG$%$$WU^4AOOAHHJ'
	(	(	(s

A!B44B=c|jj}|jj}|}|j|dj	d|j|j	dy)Nrr)rrrr:rfrs    r
test_radixzCoverage.test_radixsZ,,&&\\,,
L++-r2B'r(c	|jj}dD].}|jt|d|dt0y)N)rrrrrrrr!rr~)rrrr!r^)rrr&s   rr,zCoverage.test_ropsF,,&&M	NDMM5''#,5e<nM	Nr(c|jj}|jj}|5}d|_|j	t|dj
d|j	t|dj
d|j	t|dj
dd|j	t|d	j
d
d|j	t|d	j
dd
|jt|djd|jt|djdddddy#1swYyxYw)Nrr_r'z9.99e-5r_rorqz1.23457r`rz1.2345000000rz0E+10rSrr)	rrrr+r:r5	__round__rdr,)rrrrs    r
test_roundzCoverage.test_rounds5,,&&||00
^
	JqAFS!:!:!<=tDS!3!=!=!?@#FS!6!@!@!CDiPS!2!<!<R!@A>RS!2!<!<S!ABGLi)B)BCHi)B)BAqI
	J
	J
	JsEFFc||jj}|jt|jdgy)Nr)rr.rdrr)rrs  rtest_create_decimalzCoverage.test_create_decimal
s.LL  "*a&6&6>r(c:|jj}|jj}|5}d|_|ddzddzz}|j	t|d|j	|j
ddddy#1swYyxYw)Nr[iiriSrr)rrrr+r:rrrrrrrs     rr8zCoverage.test_ints,,&&||00
^	1qAFd
#b$h.ASVQ'Q]]_a0		1	1	1sABBc2|jj}|}d|_ddz}|j|}|j	|||j|}|j	|||j
|d}|j	||y)Nriir)rr.r+rqr:rsru)rr.rrrs     rrzCoverage.test_copys,,&&IdlO
JJqMQB
MM!QB
KK1QBr(N)rrZr[rrrrrrrQrr,rrr8rrr(rrr*sH7	&O#b'5R/(((NJ"?1 r(rceZdZeZy)	CCoverageNrrr(rrr+rr(rc,eZdZeZfdZfdZxZS)
PyCoveragec~t|tj|_tj
dyrr
rs rrzPyCoverage.setUp1rr(c`tj|jt|yrrrs rrzPyCoverage.tearDown6rr(rrs@rrr.rr(rceZdZ	dZy)PyFunctionalityctj}tj}gd}|D](\}}}|jt	||||*y)N)
)z.0erz1e+0)z#.0erz1.e+0)rBrr)z#.0fr1.)rJ1.1r)z#grr)rLrr)z#.0grr)rRrz100%)z#.0%rz100.%)rrrr:r)rrrrrrrJs       rtest_py_alternate_formattingz,PyFunctionality.test_py_alternate_formatting=sM))~~*	>NCFVGAJ4f=	>r(N)rrZr[rrr(rrr:s
+>r(rc,eZdZ	dZdZdZdZdZy)
PyWhiteboxcRtj}tj}|5}d|_|d|dz}|j	||d|d|dz}|j	||d|d|dz}|d|d	z}|j	||d
|d|d	z}|dd
z|d	z}d|_|d|dz}d|_|ddz|dz}dddy#1swYyxYw)Nrirz
0.00390625z-0.6z0.0012885819256e7lo
z-0.0625r\152587890625e7rqic
r152587890625riB)rrrr+r:rs     rtest_py_exact_powerzPyWhitebox.test_py_exact_powerUs$))~~
^	3qAF'&/1AQ 56'&/1AQ 78 GFO3A%);;AQ/()WY-??A4 GI$66AAF'76?:AAF376?2A)	3	3	3sC,DD&c	tj}tj}tj}|j	}tdttD|_|||d|d|d	|dd1	fd	}|jjjjjjjjj|d|dd|dd|d	d|d
d|dd|dd|d
d|dd|d|dd|d|d|d|dd|dd|d|d|d|dd|dd|dd|d|dd|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/|d0y)2Nc3$K|]}|df
yw)rNr)rrs  rr z=PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>ws9!1v9sz-25e55z33e+33c|rtd|zdzjjjjjjjjjjjjjjjjjjytd|zdzjjjjjjjjjy)Nzd1.z(d2)z())r6r:_sign_int_exp)	operationuseOtherb1b2rrrs  rcheckSameDecz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDecsUY&/0  2884  "''2  "''2  2884  "''2  "''2UY&-.  2884  "''2  "''2r(__abs__rTrrr
rrr	r	__float__rru__int__	__trunc__rr__neg____bool____pos__r rrrrrrr!r__str__rrrerrrrrrrrrrr)F)rrr4r3rnr0r3r-r:rrr)
rrr4r3rrr
rrrs
`     @@@@rtest_py_immutability_operationsz*PyWhitebox.test_py_immutability_operationsps^))))\\
!9~a'8991

X

X

X

X

	3
	3	288,"''*"''*YY%\4(Xt$Xt$Xt$Xt$Xt$Xt$[!^T*Z Y[!Y%Y%YZ YY%Z&]D)Z _d+Z&Z&Z&Z&YY%]D)Z Z Y%UD!UD![!Z&%t,^T*V_%]#r(ctj}|d}||}|jt|d|j	t|t|y)Nrgrh)rrr:r5rLr=rs    rtest_py_decimal_idzPyWhitebox.test_py_decimal_idsI))BKAJQ&BqE2a5)r(ctj}tj}|5}|djdt}|j|j
dddy#1swYyxYw)Nrwr)rrr_rescalerr"rrs     rtest_py_rescalezPyWhitebox.test_py_rescalesX))~~
^	(q''84AOOAHHJ'	(	(	(s<A--A6c|tj}|jt|djdt
y)Nz3.1234r)rrrdr_roundrras  rtest_py__roundzPyWhitebox.test_py__rounds*))*gh&7&>&>8Lr(N)rrZr[rrrrrrr(rrrRs!*36M$^*(Mr(rc>eZdZ	edZedZedZy)CFunctionalitycrtj}tj}tj}tj}d}||}|j|jd|j|jd|j|jd|||||}|j|jd|j|jd|j|jd|||||}|j|jd|j|jd	|j|jd
||||jt|d|jt|d|jt|d
y)Nct|j|jdt||dgt||dgy)Nrr-rM)r:rar')rr%s  rassert_restz7CFunctionality.test_c_ieee_context.<locals>.assert_rests2W]]A.4'264'26r(r`ir{rBrC"iirroi)rIEEEContext	DECIMAL32	DECIMAL64
DECIMAL128r:r+rXrSrdrr)rr%r&r'r(r"rs       rtest_c_ieee_contextz"CFunctionality.test_c_ieee_contextsWmmKK	KK	\\
	7

	"#$%D!	"$%&D!
#$&'D!	
-e<*k26*k48r(ctj}|tjtj}|j	|j
tj|j	|jtjy)N)rMr-)rr.r9
DecRoundedr:_flags_trapsrs   rtest_c_contextzCFunctionality.test_c_contextsO))!,,all;1<<01<<0r(c`tjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjf}|j!tj"d|j!tj$d|j!tj&d|j!tj(dt+|D]\}}|j!|d|z|j!tj,tjtjztj
ztjztjztjztjz|j!tj.tj,tjz|j!tj0tj.tjztjzy)Nrmrir)rr9DecConversionSyntaxDecDivisionByZeroDecDivisionImpossibleDecDivisionUndefinedDecFpuError
DecInexactDecInvalidContextDecInvalidOperationDecMallocErrorDecFloatOperationDecOverflowr+DecSubnormalDecUnderflowr:r&r'r(IEEE_CONTEXT_MAX_BITSr/DecIEEEInvalidOperation	DecErrorsDecTraps)rcondrFrs    rtest_constantszCFunctionality.test_constantss
LL!//1D1D
##Q%;%;
MM1<<)<)<
!!1#3#3

NNANN

	
b)b)s+00#6dO	&DAqQ1%	&	
22..001//0',,	-
../))
*	+	
22,,-	.	
Q]]21>>A	Cr(N)rrZr[requires_extra_functionalityr)r.rCrr(rrrsB)!!9"!9F"1"1"#C"#Cr(rceZdZ	dZdZdZdZdZdZe	dZ
dZe	d	Zd
Z
dZdZd
ZdZe	dZe	dZdZdZdZdZdZej4ej8j;ddej4edej4eddddZ dZ!y)	CWhiteboxchtj}tj}ddz}ddz}|5}d|_t	dD]V}tj||}tjdd}||z}	||||z}
|j|	|
X	dddy#1swYyxYw)Nr#$i@Brqri)rrrr+rrr(rr:)rrrr
rrrFrrTrrs           rtest_bignumzCWhitebox.test_bignum/s))~~
V
V
^	'qAF1X
'$$R,$$T40FAJ'!*,  A&
'	'	'	'sA,B((B1cP|jttjddy)Nr*r~)rdr,rrrs rtest_invalid_constructionz#CWhitebox.test_invalid_construction@s)QYY59r(ctj}tj}tj}tj}||5|j||ddddy#1swYyxYw)N1e9999999999999999999)rrrr.rrd)rrrr.rs     rtest_c_input_restrictionz"CWhitebox.test_c_input_restrictionCs^))--))~~
')
$	7.5
7	7	7	7sA++A4ctj}tj}|j}d|_d|_d|_t|_d|_	d|_
ttD] }d|j|<d|j|<"d|j|<d|j|<|j}d}|j||y)Nrr2rrTaQContext(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]))rr4rkrnr+rXrSrr,rrar3rMr-rr:)rr4rkrr$rrs       rtest_c_context_reprzCWhitebox.test_c_context_reprNs))))!$

!!$	 CAGGCLAGGCL	 #'"&
JJL
O	
Ar(c	Ztj}tj}tj}tj}tj
}tj}tj}tjdkD}|}	|jt|	jjdd|jt|	jjdd|jt|	jj||jt|	jj||jt t"|	ddg|jt t"|	ddg|jtt"|	dddi|jtt"|	dddi|	jj%}
|
|=d	|
d
<|jtt"|	d|
|jtt"|	d|
|rdnd}|rd
nd}dD]}
|jtt"|	|
|!|jtt"|	d||jt|||jt|||jt|||jt&||dz|jt&||dz|jt&||dz
|jt&||dz|jt&||dzdD]}
|jt&t"|	|
|dz|jt&t"|	|
|dz
t(j*dk7sX|jtt"|	|
||jtt"|	|
|dz
tjdk(rm|jt&t-|	d|dz|jt&t-|	d|dz|jt&t-|	d|dz
tjdk(r|jtt-|	dd|jtt-|	dd|jtt-|	dd|jtt-|	dd|jtt-|	dd|jtt-|	dddD]}
|jtt"|	|
d|jtt"|	|
d|jt t"|	|
gd |s_|jtt"|	|
d!|jtt"|	|
d"|jt t.d#t1|jt t.d$t1|}|jt |d%||y)&Nri!rrMrr-rriprrrlNZoiʚ;rrSr1r7r6rr9r8)r+rSrXrrawin32rrri?roi9rrzwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr~)rr.rrrkrrr3rPrdrrM__setitem__r-r__delitem__r,r)rnrrplatformr!execr)rr.rrrkrrr3HAVE_CONFIG_64rrint_maxgt_max_emaxr&
saved_contexts               rtest_c_context_errorszCWhitebox.test_c_context_errorsks())--::))~~\\
\\
**y0I	
(AGG$7$7a@(AGG$7$7a@*agg&9&98D*agg&9&9;KL)Wa3%@)Wa#?(GQ!A?(GQ!A?
GGLLN
n%(GQ;(GQ;,' .fE%	IDj'1dKH	I*gq&;,G	
*gK@*gK@*g[LA	
-wqyA-wqyA-xzB-	B-719EB	LDmWawqyImWaxzJ||w&!!*gq$H!!*gq$
K	L
::"mWQ8I-J%ai
)mWQ8I-J%ai
)mWQ8I-J&hqj
*
::"j'!5F*GKj'!5F*G(
*j'!5F*GLj'!5F*G(
*j'!5F*G)
+j'!5F*GK*	IDj'1dB?j'1dA>i!T7C!!*gq$F!!*gq$H
	I	
)T+K (	$)TI (	$
#
)Z7=!r(c|jtjtj|jtjtj|jtj
tj
|jtjtj|jtjtj|jtjtj|jtjtj|jtjtjyr)rrrrrrrrrr/rrs rtest_rounding_strings_internedz(CWhitebox.test_rounding_strings_interneds

ajj!**-

allALL1

aooq7

ammQ]]3

aooq7

a''):):;

a''):):;

allALL1r(c	tj}tj}tj}tj}tj
}tj}tjdkD}|}|rdnd}	|jtt|d|	dz|jtt|d|	dz
tjdk7r>|jtt|d|	|jtt|d|	dz
dD]}
|jtt||
|	dz|jtt||
|	dz
tjdk7sX|jtt||
|	|jtt||
|	dz
|jtt|dd	|jtt|dd|jtt|dgd
|r:|jtt|dd|jtt|dddD]<}
|jtt||
d
|jtt||
d>y)Nrrr_allcrrrrS)r,r-rorrTrUrzr)rr.rrrrr3rPrdrr)rrXrr,)rr.rrrrr3rZrr[r&s           rtest_c_context_errors_extraz%CWhitebox.test_c_context_errors_extras
))--::~~\\
\\
**y0I,'	
-!XwqyI-!XxzJ<<7"j'1hHj'1h
K)	KDmWawqyImWaxzJ||w&!!)WawG!!)WaxzJ	K	
*gq(B?*gq(A>)Wa7Cj'1hFj'1hH)	@Di!T6Bi!T3?	@r(cNtj}tj}tj}tj}tj
}tj}|j}d|_t|_
d|_d|_d|_
d|_|j|jd|j|jt|j|jd|j|jd|j|jd|j|jd|j|j!d|j|j#dtj$dk(r|j'd	|j)d	|j+d
|j|jd	|j|jd	|j|jd
yy)Nr$iiHrri'irrarb)rr4rrrrrrnr+rr,rXrSrrar:EtinyEtoprPrrr)rr4rrrrrrs        rtest_c_valid_contextzCWhitebox.test_c_valid_contexts))))KK	))))KK	!"

$]3'&Q'!$E*4(
::"
i(
i(
j)QVVY/QVVY/QVVZ0
#r(ctj}|j}|j|jdd|_|j|jdy)Nrr)rr4rnr:rb)rr4rs   rtest_c_valid_context_extraz$CWhitebox.test_c_valid_context_extra,sJ))!1%1%r(c	@tj}tj}tj}tj}tj
}tjdkDrdnd}|5}d|j|<|j||dj|dz
|j||dj||j||djt|dz|jtj|djt|dz
|jt|dj|dz
|jt|dj|dzdddy#1swYyxYw)	NrrrTrSrrr)rrrrrrirPr-rdrrr)rrrrrrir[rs        rtest_c_roundzCWhitebox.test_c_round5sV))--~~::KK	ZZ)3'
^
	)q(,AGG$%.0I0I&hqj
*.0I0I%
'.0F0F!(1*o
/a00'#,2H2H"9Q;//
1mWV_-F-F&hqj
*mWV_-F-F%ai
)
	)
	)
	)s
/DFFctj}tjdkD}|jt|dj
dgd|jt|dj
dd|jt|dj
g|jt|dj
d|rdnd}|jt|dj
d	|zy)
Nrrz=10.10r*z<>=10.10rrroz=%d.1)rrrPrdr,rr)rrrZmaxsizes    r
test_c_formatzCWhitebox.test_c_formatMs))**y0)WQZ%:%:Hb!L)WQZ%:%:HaH)WQZ%:%:B?*gaj&;&;ZH+'*gl&;&F&F!G+	-r(ctj}tj}tj}|d}|j	|jd|j
t|j
d|j
t|j
dd|j
t|j
d|j	|jd|j
t|jd|j
t|jdd|j
t|jd|j	|jd|j
t|jd|j
t|jdd|j
t|jd|5}|djt}|j	||d|djt}|j	||dd|j|<|j
||djtdddy#1swYyxYw)Nrr'rz99999999999999999999999999.9100000000000000000000000000Tz999.9)rrrrr:rrdr,rrrr-)rrrrrrs      rtest_c_integralzCWhitebox.test_c_integral[s))))~~BK"-)Q]]D9)Q]]B<)Q]]B7,,.3)Q%8%8$?)Q%8%8"cB)Q%8%8"=,,.3)Q%8%8$?)Q%8%8"cB)Q%8%8"=
^	Uq67II(SAQ(E FG67II(SAQ(E FG#AGGGgww'7'I'I8T	U	U	Us
BI22I;c
tj}tj}tj}tj}tj
}|j
|djd|jtt|ddd|jt|djdd|jt|djd	dd|jt|d
j|dg|jt|d
j|d||jt|d
j|dd|jt|d
j|dtd
|5}|j|jt|j |ddd|jt|j"d|jt|j$d|jt|j&dddd|jt|jdd	dd|j
t)|j#|dd|j
|j+dd|j,|<|j||dj.d|j||j&dd|j1|j2||j5d|j,|<|j||dj.d|j||j&dd|j1|j2|d|j,|<d|_|j|t|d
dddddy#1swYyxYw)Nz9.99e10z99.9E+9rrrDr*rrrroz	1e-100000rrrr200Tri)rrrrrrr:rrdr,rrgrrrrrurgr{r(r5rfr-rr"rMr)r+)rrrrrrrs       rtest_c_funcszCWhitebox.test_c_funcszs'))--))\\
~~+99;YG)S'!*a=)WQZ%<%<c3G)WQZ%<%<acJL!**GK,@"	
	
L!**GK,@*,	
	
L!**GK,@"	
	
L!**GK,@(D	

^	Lq
MMO
igaj#sKic:i=i1acBiAsCHSWS\!:;UCQWWY+&*AGGN#ngaj.C.CQGnahh1=OOAGG$456
MMO(,AGG$%.
0E0EqI.!Q?OOAGGN34(,AGG$%AF.WT]AsK5	L	L	Ls
4H5O22O;c"tj}tj}|d}dD]?}t||}|j	t
|d|j	t
|ddAdD]?}t||}|j	t
|d|j	t
|ddA|j	t
|jdg|j	t
|jig|j	t
|jgg|j	t
|jdg|j	t
|jig|j	t
|jgg|j	t
|jdg|j	t
|jig|j	t
|jgg|j	t
|jddd|j	t
|jdddd|j	t
|jdgd|j	t
|jdgd	|j	t
|jdgg|}|j	t
|jddd
|j	t
|jddd
|j	t
|jddd
y)N10001111111)
rUrrrrrryrrrrgrrrr)rrircrrrrrrrrrrrrrM)mod)rrr.r!rdr,rrrrrr)rrr.rr&funcrs       rtest_va_args_exceptionsz!CWhitebox.test_va_args_exceptionss))))M"K	BD1d#Dis;isDA	BD	BD1d#Dis;isDA	B	
)Q]]T2N)Q]]RL)Q]]B;)Q%8%84QST)Q%8%82rR)Q%8%8"bA)Q%8%84QST)Q%8%82rR)Q%8%8"bA)QUUAq#>)QUUAq#tD)QZZBE)QZZBF)QZZB;I)QWWa<)QWWa$?)QWWc1$?r(c|jtjjtjtj
ztjztjztjz|jtjjtjtj
ztjzyr)
r:rrr-r?r2r;r=r9r4rs rtest_c_context_templatesz"CWhitebox.test_c_context_templatess
NN!!
%%a&9&99!--G
NN
<<
(	

	

##
%%a&9&99!--G	
r(cXtj}tj}tj}tj}tj
}tj}tj}tj}tj}	tj}
tj}tj}tj}
tj}fd}|j}j!||j"v|j%|j"j'D]}d|j"|<|j"j)D]}j!||j%|j"j+D]\}}j-|j-|j.j1|j3|j.j1ddj5|j.j1dddj7t8|j.j0dddj5t;|j.t;|j"t=j>|j.}t=j>|j"}|j.jA}|jC||_"j!|j.||j%|
|_#j!|j"||jC|j.j}d||<||_|||j.|j%|j"j}d||<||_|||j"|tj|	tjH|
tjJ|tjL|tjN|tjP|tjR|tjT|tji	}tjVtjXtjZtj\tjtj^tj`g}t;tbt}te|D]}te|D]}tfD]}tijjtbt|}tijjtbt|}tijldd}tijldd	}tijld	d}tijld	d
} tijld	d
}!tijld	d
}"||||||!| to|to|}j5|jp|j5|jr|j5|jt|j5|jv|j5|jx|!j5|jz| d	}#|D]
}$|#||$z}#j5|jD|#d	}#|D]
}$|#||$z}#j5|jF|#|D]:}%|%|_"j!|jD|z|||j.<|D]:}%|%|_#j!|jF|z|||j"<y)Ncp|D]0}||k(rj||j||2yr)r"r)rnsignal_dictr$rs   rassertIsExclusivelySetz<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySets="
7&=OOK$45$$[%56	
7r(Trrrrrirrr)>rr.r4rrkrrrrrrrr9r8r?rnr"r-rrvaluesrrrMrrr:rdr,rr	getsizeofrr)r,r-r+r6r<r=r;r2r:r3r4r5r7r9r1r3rrr}r(samplerrNr+r,rSrXrra)&rr.r4rrkrrrrrrrr9r8r?rrrarrr
IntSignalsIntCondlimrrrrMr-r+rlrkrarcrrrrBs&`                                     rtest_c_signal_dictzCWhitebox.test_c_signal_dicts))))--))))::KK	KK	))))))\\
33"#";";	7
!	
AGG+,	

	AAGGAJ	!	AOOA		

GGMMO	 DAqQ	 	
X./

aggkk#&-S#.4)QWW[[#sC@QWWs177|4MM!''"MM!''"
GG	


()	

& 012	



GGLLN .~qww7	


GGLLN)y!''21<<
1<<
1<<
Q^^
Q^^
AMM
!--
!--
A55



!
!1#9#91==


q44a6F6F



.#$s	2A3Z
2*2E"MM.*;Q?E"MM.*;Q?E!++Au5D!++FA6D!++Au5D",,Q2E!++Aq1D))!Q/BTE4)-U$u+&*5k3A$$QVVT2$$QZZ7$$QVVT2$$QVVT2$$QZZ6$$QWWe4A"+Z]*+$$QXXq1A"+Z]*+$$QXXq192
2	2@	>DAHOOAHH%<<="#3QWW=	>
	>DAHOOAHH%<<="#3QWW=	>r(cztj	ddlm}d}dfd	}d|gddd}d	|gd
dd}d|gd
dd}d
k(r|j
t|d|d|j
t|d|d|j
t|d|dy#t$r|jdYwxYw)Nrrrc\dj|Dcgc]
}t|c}Scc}wr)rr)rrs  rrz6CWhitebox.test_invalid_override.<locals>.make_grouping{s#77C0qCF0110s)c4|j||Sr)r)rrrrs   rrz0CWhitebox.test_invalid_override.<locals>.get_fmt~s1:((h77r(ra)rrrxxxxxrryyyyyrrJr)rrrrrrrdr)rrrrinvalid_groupinginvalid_dotinvalid_seprs       @rtest_invalid_overridezCWhitebox.test_invalid_overridess))	;'	2	8"&}5!
&&y1!
"&y1%
s?j'5.
5	
*guk3G*guk3G=	;MM9:	;sBB:9B:ctj}tj}tj}|5}d|j|<dt
jz}|j|||dt
jdz
z}|j|||dt
jz}|j|||dt
jdz
z}|j|||dddy#1swYyxYw)NTz0e%drz1e%d)rrrrr-rrmrdrs      rtest_exact_conversionzCWhitebox.test_exact_conversions))~~--
^	<q(,AGG$%$A.;3;;,q.)A.;$A.;3;;,q.)A.;#	<	<	<sB0C11C:ctj}tj}tj}tj}tj
}|5}d|_d|j|<d|j|<d|j|<ddtjf}|jt|j|d|j|||ddtjf}|j||j||j|||ddtjdz
f}|jt|j|d|j|||ddtjdz
f}|j||j||j|||ddtjdzf}|jt|j||jt||ddtjdz
f}|jt|j||jt||d	}|jt||d
d}|jt||d
d}|jt||d
dddy#1swYyxYw)Nr*Trrz
-0E+999999)rrrz-0E-1000007rrrW)rrr)rrrz-sNaN1)rrrrrrr+r-rrmr:r5rrdr)rrrrrrrrs        rtest_from_tuplezCWhitebox.test_from_tuplesf))~~--::KK	
^(	8qAF(,AGG$% $AGGH!%AGGIB$AS!1!1!!45|D.;Is{{+Ah(8(8!<.;BQ'AS!1!1!!45}E.;I|A~.Ai)9)91=.;BA
&AmQ-=-=qAmWa8BQ'AmQ-=-=qAmWa8AS_g6AS_g6 AS_h7Q(	8(	8(	8s
I)K

Kctj}tjdkD}|j|dj	d|rH|ddzj	}|ddzj	}|j||dzy|ddzj	}|ddzj	}|j||d	zy)
Nrrrrirr)rrrPrH
__sizeof__r:)rrrZrrs     rtest_sizeofzCWhitebox.test_sizeofs))**y071:002A6U$//1AU$//1AQ!$T
#..0AT
#..0AQ!$r(c"tj}Gddt}Gddt}GddtGfddt}|||fD]8}|j	|j|d	|jd	:y)
NceZdZdZdZy)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.XcyNrrrs rrzMCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratiosr(c|Srrrs rr
zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__r(NrrZr[rr
rr(rXrs

r(rceZdZdZy)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.YcdgdzSNrrrrs rr
zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__
s3wr(N)rrZr[r
rr(rYr
r(rceZdZdZy)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.IcdgdzSrrrs r
bit_lengthzGCWhitebox.test_internal_use_of_overridden_methods.<locals>.I.bit_lengthrr(N)rrZr[rrr(rIrrr(rceZdZfdZdZy)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Zc$ddfSrr)rrs rrzMCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratios!ad|#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	8CW//E
;$//6
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.ctgd}tj}tj}tj}|tjtj
tj}||5|j|djd|j|djd|j|djd|j|djd|j|ddzjd|j|d	jd
|j|djd|j|dj|d
|jt|ddd|j|ddzd|j|ddzd|j|ddz|ddddy#1swYyxYw)N)	ryrrrcrrrrr)r+rSrXrrrrrl9Vr40E9z2.0E+5r)rriroz0.0025)rrr.rrPrhrr:rUrrrrr()rMaxContextSkiprr.r
maxcontexts      rtest_maxcontext_exact_arithz%CWhitebox.test_maxcontext_exact_ariths<))))~~!**1::AJJO

*
%	DWQZ^^-q1WQZ]]_a0WQZ--/3WU^113Q7WRW-335s;WV_113R8WQZ__.2WV_113WX5FGVGBK3V<WR[A-q1WQZ!^Q/WS\R/1BC	D	D	Ds
2F3H..H7cNttjj}|}d}|j	t
|5t
|ddd|j	t
|5t|ddd|j	t
|5t|ddd|j	t
|5d|tj<ddd|j	t
|5|tjddd|j	t
|5|tjjk(ddd|j	t
|5tjj|k(ddd|j	t
|5|jdddy#1swYrxYw#1swYUxYw#1swY8xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nzinvalid signal dictT)r4rr.rMassertRaisesRegexrriterr9rrn)r
SignalDictsderr_msgs    rtest_c_signaldict_segfaultz$CWhitebox.test_c_signaldict_segfault5s!))+++,

\'

#
#J
8	G	
#
#J
8	H	
#
#J
8	H	
#
#J
8	*%)Bq!!"	*
#
#J
8	#q!!"	#
#
#J
8	$!))+###	$
#
#J
8	$
IIK#	$
#
#J
8	GGI		+							*	*	#	#	$	$	$	$		s`G1GGG*7G7)"H)"H)HG
GG'*G47HHHH$N)"rrZr[rJrLrOrQr^r`rDrcrgrirkrnrqrtryr{rrrrrrrskipIfrrXrrrrrrr(rrFrF+s3''":	7:c"J	2"(@"(@T$1L"&"&)0-U>9Lv*@X"	
"	
"C>"C>J#HJ<0/8b%8:X__S\\,,U3\^X__]$DEX___T$?EF DFF^ DFr(rFceZdZ	dZdZy)
SignatureTestcXttD]}|jdrtt|}tt|}|dk(s|dk(stj|sVtj|}tj|}t|jj}|jjDcgc]}|jds|}}|j||d|z|jjDcgc]}|j}	}|jjDcgc]%}|djds|dj'}
}|dk7sr|j|	|
d	|zycc}wcc}wcc}w)
NrCrr.parameter name mismatch in %smsgrrr3parameter kind mismatch in %s)rrrr!rinspect
isfunction	signaturerN
parametersrr:rkindr)rr&p_funcc_funcp_sigc_sigc_namesrp_namesc_kindp_kinds           rtest_inspect_modulez!SignatureTest.test_inspect_moduleXsF	SDs#Q%FQ%F	!TY%6""6*))&1))&1u//4467&+&6&6&;&;&=.<<,..  '%Dv%M!O+0*:*:*A*A*CDQ!&&DD-2-=-=-C-C-E0A$//#.A$))00<'$$VV)H6)Q%S1	S.E0sFF"*F'ctjjtjjttjdtjdtjdtjdtjdtjdtjdtjdtjdtjdddtjtjdttjdtjdtjdtjdtjdtjdtjdddtjtjdifddfd}|d	|d
y)Nrrr)rrarrrrrTrrUrnumrr,r%)rrarrTrrUrrrr,r%cg}i}|jjD]W\}}|dk(r|jk(r|j||3|jk(r||||<Nt	d||fS)Nrzunexpected parameter kind)rrrr2r)	moduler$rkwargsnameparamPOSPOS_KWDpdicts	      rmkargsz0SignatureTest.test_inspect_types.<locals>.mkargssDF"~~335
Be6>8::$KKf
d 34ZZ7*#(=#6F4L$%@AA
B<r(c,	|dk(ry|dk(ry|dk(ry|S)NrrrrTrrr)rs rtrz,SignatureTest.test_inspect_types.<locals>.trs'
<CxCxCxHr(c
tt|}tt|}t|D]}|j	drt||}t||}tj|sDtj|}tj|}t|jj}|jjD	cgc]
}	|	}
}	j|
|d|z|jjD	cgc]}	|	j}}	|jjD	cgc]}	|	j}}	j|dj|d|dk(rj|dd|ddd|zn)jt|t|d|zt|\}
}	t|d||
i|t|\}
}	t|d||
i|ycc}	wcc}	wcc}	w#t $rt#d	|d
|
d|wxYw#t $rt#d	|d
|
d|wxYw)NrCrrrrrrr*zinvalid signature for z: r)r!rrrrrrrrNrrr:rrrrrr)typ_typec_typer&rrrrrrrrrrkwdsrrrrrs               rr}z.SignatureTest.test_inspect_types.<locals>.doitsxQ^FQ^FF*
c??3' . .%%f-#--f5E#--f5E#5#3#3#8#8#:;G.3.>.>.C.C.EFr!uFGF$$Wg)H6)Q%S/4.>.>.E.E.GHaffHFH.3.>.>.E.E.GHaffHFHMM&)W5MM&)S1Y((VABZ-Lv-U)W((Vc&k-Lv-U)W"(5!1JD$c0q	40$?$?"(5!1JD$c0q	40$?$?Q*
cG
IH$%c(fVZ\`)abbc%c(fVZ\`)abbcs*H0H5H:+H?I ?I I>rr.)	r_ParameterKindPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrrrrr)rr}rrrrrs` @@@@@rtest_inspect_typesz SignatureTest.test_inspect_typestsL$$44((>>aiiliil))A,))A,))A,))A,))A,))A,IIaL yy|!" !
0aiiliil))A,))A,))A,IIaL yy|!" !
014	 	-	c-	c^	
YYr(N)rrZr[rrrr(rrrSsS8er(rc	t|j}tjtD]X}d|vs|jdr|j
d\}}t	|tvr<|fd}ttd|z|~~~~ZdtfdtffD]N\}}|s	t|dzttjfd|i}	|j|j|	Ptud	d
lm}
m}ttfD]^}|s|fd}d}
|tur|nd	}|t&j(d<|j|
|||
|
t*t&j(d<`|S)Nz.decTestrc2|jt|zSr)r	directory)rrs  rrzload_tests.<locals>.<lambda>s$..Q*Gr(test_rPyr;rr)DocTestSuiteIGNORE_EXCEPTION_DETAILc*|tjd<yNr)rr))slfrws  rrzload_tests.<locals>.setUps),I&r(c2ttjd<yr)orig_sys_decimalrr))rs rrzload_tests.<locals>.tearDowns)9I&r()rroptionflags)
TODO_TESTS
suiteClassoslistdirrrr	r)r;rrr4rTestCaseaddTestloadTestsFromTestCasedoctestrrrr)r)rtestspatternfilenameheadtailtesterprefixrw
test_classrrrrrs               r
load_testsrss!!#JJy))X%)<)<S)A^^C(
d!d*&< (Ggnf5dD&)Qx$*@&>1'):):;$c*,
	

f22:>?
@Aa4	6C"
-
:58AX11K%(CKK	"MM,s%(/:<
=%5CKK	"	6Lr(cpttttttayt	dayr)r6rrARITHrr'rr(rsetUpModulers$GG)uH/B9/MHr(ctr tjtttjtttst	j
dtttjdurtdy)Nz*C tests skipped: no module named _decimal.rzGInternal error: unbalanced number of changes to sys.modules['decimal'].)rr3ORIGINAL_CONTEXTrwarningswarnUserWarningrrr)rrr(rtearDownModuler
se!,,'*
+LL!!$%

B!	#s{{95534	46r(c^	|a|a|atjt
|rdnddt
gy)NrrF)	verbosityexitargv)rrr*rmainrarithverbose
todo_testsdebugs    rtestr%s0
EJEMM(7aXJWr(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)r!r"r )NNNN)rrrrrr'rnrr!rtest.supportrrrrrrr	r
rrtest.support.import_helperr
rrr(rr6rXrrrr
cfractionsr)
pfractionsr
skipUnlessrequires_cdecimalrrrMrr2rrrrrrrrrkr3r'rrrrrrr/rr}rr6TESTDATADIRrrr__file__pathdirnamecurdirtestdirseprisdirrr1hasattrEXTRA_FUNCTIONALITYrDrskip_if_extra_functionalityr;r]rrrrr.r0r2rrrrrr%r-requires_working_threadingr/rArCrErr
rrtrvrxr!r#r%rSrUrWrrrrrrrrrrrrrrrrrrrFrrrrrr'rr*r%optparseOptionParserr
add_option
parse_argsoptrskipr$rr(r<module>rAs"
IIDD;)(
<<8n-	*6	J<8"!
B
I
 
B
I
z1Z(	)I'H''+DE1U1<<>$$&'$U1<<>$$&'iiAIIq{{AKKjj!""A$6$6"&aiiAIIq{{AKKjj!""A$6$6	H
::
\\

mm
####
\\
J
{/
aQ\\^TQ\\^% z88A;DD
''//$

,299bff{*RVV3	GGMM),,
&a6dE2x22G I-hoo46a#a#LU<U<n
 8(:K:K!98;L;LK1K1Z 8(:K:K!98;L;LO9O9b
*h//:x00hAhAT	68I8I 79J9J
%'N*0Z-,,.*(*(/*(Z]H$5$5mX%6%6nEnE`]H$5$5
mX%6%6
[N[Nz
nh&7&7~x'8'8hChCT(9(9):):bbH0(2C2C183D3DI0I0VL("3"3\8#4#4NN`(9(9):):<;<;|4h6G6G5x7H7Hk.k.Z,h.?.?-x/@/@1h''11:  B(++
8,,
>h''>0BM""BMHSCX&&SCje!!eeNDH%%DDN&PN4	



XzZ[ALLD<pLqLLD<cLd,,.KS$
xx5$'	
4$ciiH4&r(