python (3.12.0)

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

͑eT\XdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZddlmZmZmZmZmZddlmZddlmZddlmZddlZddlZddlZej:dk(red	ed
dgZed
dg
Zddl Z!eddgZ"eejFd
<eddgZ$eejFd
<ee"ee$iZ%e!ejFd
<ejLedZ'eer.e(ejSjTjWndee(ejSjTjWiZ,eereejZej\ej^ej`ejbejdejfejhejjg	ndeejZej\ej^ej`ejbejdejfejhejjg	iZ6dZ7ejpZ8ejrZ9ejtZ:ejvZ;ejxZ<ejzZ=ej|Z>ej~Z?e8e9e:e;e<e=e>e?gZ@eerejSjndeejSjiZAdZBdZCeDdk(rejdZFneGZFejjeFxsejZKeKejzeCzejzZMejjeMaOdZPeQedrdndZRejLeRdZSejeRdZUGddZVGddZWe'GddeWejZYGdd eWejZZGd!d"Z[e'Gd#d$e[ejZ\Gd%d&e[ejZ]Gd'd(Z^e'Gd)d*e^ejZ_Gd+d,e^ejZ`Gd-d.Zae'Gd/d0eaejZbGd1d2eaejZcd3Zdd4ZeejGd5d6Zge'Gd7d8egejZhGd9d:egejZiGd;d<Zje'Gd=d>ejejZkGd?d@ejejZlGdAdBZme'GdCdDemejZnGdEdFemejZoGdGdHZpe'GdIdJepejZqGdKdLepejZrGdMdNZse'GdOdPesejZtGdQdResejZuGdSdTZve'GdUdVevejZwGdWdXevejZxGdYdZZye'Gd[d\eyejZzGd]d^eyejZ{Gd_d`Z|e'Gdadbe|ejZ}Gdcdde|ejZ~GdedfZe'GdgdheejZGdidjeejZeUe'GdkdlejZGdmdnZe'GdodpeejZGdqdreejZGdsdtejZGdudvejZGdwdxejZe'GdydzejZee'Gd{d|ejZd}Zd~ZdZdadadadaddZeDdk(rddlZej(dZej-ddddej-ddddej/\ZZej4reddyereddeej6yeddyy)ab
These are the test cases for the Decimal module.

There are two groups of tests, Arithmetic and Behaviour. The former test
the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter
test the pythonic behaviour according to PEP 327.

Cowlishaw's tests can be downloaded from:

   http://speleotrove.com/decimal/dectest.zip

This test module can be called from command line with one parameter (Arithmetic
or Behaviour) to test each part, or without parameter to test both parts. If
you're working through IDLE, you can import this test module and call test()
with the corresponding argument.
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 buildcXeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
Zy)IBMTestCasesz?Class which tests the Decimal class against the IBM test cases.c
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(cj|jtk(r|jjdk(rl|jj	d|jjd|jj
d|jj|S|jj||S)a2Work around the limitations of the 32-bit _decimal version. The
           guaranteed maximum values for prec, Emax etc. are 425000000,
           but higher values usually work, except for rare corner cases.
           In particular, all of the IBM tests pass with maximum values
           of 1070000000.@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____doc__rrrrrrr7rrrrrrr(rr;r;sHIK1Z4e)$~N@K%
)$
$
#r(r;ceZdZdZdZdZdZdZee	e
jedZ
dZd	Zd
ZdZedZd
ZdZdZy)ExplicitConstructionTestz6Unit tests for Explicit Construction cases of Decimal.cj|jj}|j||dy)N0rrr:rrs  rtest_explicit_emptyz,ExplicitConstructionTest.test_explicit_emptys',,&&GCL1r(c^|jj}|jt|dyr)rrassertRaisesr,rbs  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)NrNaNri45.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-rer,)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)rrrrmrrrrrryr	rrrr*rrrrrr-4.34913534E-17)rrFInfinity)rrrrr*r)rr)rrrrr)rrzwrong!)rrr)rr1)rrr)r)rrrNrr)r)rrr*rr)r)r
rr*rr)r)rrrarr)rrr:r5rerrrrs   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:rbs  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)	Nrhrirjrkrlrmrr`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-infrxr	-Infinity-0.0-0{Gz?@?)rrr:r4r5r"floatrrrsr(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
rxrrz	-4.35E-17rjrkz5.00E+8T)	lllirlz0E-017z0E-17ri-InfrNaN123r)rrrr5678z 123412_34NaN12345F)rrrrrn
getcontextr+r:r5rrer,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.1000000000000000055511151231rrrrxrrrrdrrrr)rrr.rr:r4r5r"rrrr+rsr(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[r\rcrfrvrr
rrignore_warningsDeprecationWarningrrrrrrrrrrrr(rr^r^s@24566Hp!#$_$$.@AEB$E)KV
44&.33.W4r=0	<r(r^ceZdZeZy)CExplicitConstructionTestNrrZr[rrrr(rrrFGr(rceZdZeZy)PyExplicitConstructionTestNrrZr[Prrr(rrrIGr(rc4eZdZdZdZdZdZdZdZdZ	y)	ImplicitConstructionTestz6Unit tests for Implicit Construction cases of Decimal.cx|jj}|jttdty)NzDecimal(5) + Nonerrrer,r6localsrbs  rtest_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NoneOs(,,&&)T+>Ir(c|jj}|jt|ddzd|j|ddz|dy)Nrrrh50l2}rrrbs  rtest_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intSsN,,&&	
WQZ"_-t4l2GL4IJr(cx|jj}|jttdty)NzDecimal(5) + "3"rrbs  rtest_implicit_from_stringz2ImplicitConstructionTest.test_implicit_from_string[(,,&&)T+=vxHr(cx|jj}|jttdty)NzDecimal(5) + 2.2rrbs  rtest_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_float_rr(c~|jj}|j|d|dz|dy)Nrrrh2rarbs  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
rrrr(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[r\rrrrrr-rr(rrrLs(@JKII@01r(rceZdZeZy)CImplicitConstructionTestNrrr(rr/r/rr(r/ceZdZeZy)PyImplicitConstructionTestNrrr(rr1r1rr(r1cLeZdZdZdZdZdZdZedddZ	d	Z
y
)
FormatTestz#Unit tests for the format function.c|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).6er5z0.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`)rr:r:)r0E-2r;)rz0.00E-8z0.0000000000)rr8r`)rz3.2E132)rz3.2E2320)rz3.20E2r@)rz3.200E2z320.0)rz3.2E-6z	0.0000032).6fr50.000000)rAr8rB)rAr`rB).0fr`r`)rCr<r`)rC
3.141592653).1frD3.1)z.4frD3.1416)rArD3.141593)z.7frD	3.1415926)z.8frDrD)z.9frDz3.141592650)gr`r`)rKr:r:)rKr8r9)Gr8z0E+1)rKz0E-5z0.00000)rKz0E-6rB)rKz0E-7z0e-7)rKz-0E2z-0e+2).0grDrE)z.0nrDrE)z.1grDrE)z.2grDrG)z.5grDrH)z.7grDrI)z.8grDrJ)z.9grDrD)z.10grDrD)rr80%)r0E0rN)rz0E-1rN)rr>rN)rz0E-3z0.0%)rz0E-4z0.00%).3%r`0.000%)rP0E10rQ)rPz0E-10rQ)rPz2.34z234.000%)rPz1.234567z123.457%).0%1.23z123%)rHrxrx)r-NaN123rU)z+gNaN456z+NaN456)z.3eInfr)z.16frr)rM-sNaNrX)r1.00rY)6123   123)z<6r[z123   )z>6r[r\)z^6r[z 123  )z=+6r[z+  123)#<10rxz
NaN#######)r]z-4.3z
-4.3######)z#<+100.0130z
+0.0130###)z#< 10r^z
 0.0130###)z@>10rz
@-Infinity)z#>5rr)z?^5r[z?123?)z%^6r[z%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<10raz
1.2345),1234567z	1,234,567)rb123456123,456)rb1234512,345)rbrz1,234)rbr[r[)rb12rh)rbrr)rbr`r`)rbz-1234567z
-1,234,567)rb-123456-123,456)z7,rdre)z8,rd 123,456)08,rdz	0,123,456)z+08,rdz+123,456)z 08,rdrk)rlrirj)z+09,rdz
+0,123,456)z07,1234.561,234.56)rlrmrn)z09,rmz	01,234.56)z010,rmz
001,234.56)z011,rm0,001,234.56)z012,rmro)z08,.1fz1234.5z01,234.5)rb
1.23456789rp)z,%z
123.456789z12,345.6789%)z,erdz
1.23456e+5)z,Erdz
1.23456E+5)rFrr)rFz-.0r)rF-.01r)z.1f0.r:)z6.1frsz   0.0)rt-1.z  -1.0)rr-0.r:)rr.01r:)rrrqr:)z.2frsr;)rxrvr;)rxz.001r;)rxz-.001r;)z.1ers0.0e+1)ryrvrz)z.1Ers0.0E+1)r{rvr|)zz.2e-0.001z-1.00e-3)zz.2gr}r})zz.2%r}z-0.10%)zfz-0.0000z0.0000)rr
-00000.000001r:)rr-00000.r:)rr-.0000000000r:)rxrr;)rxrr;)rxrr;)rrz.090.1)rrz-.09z-0.1) z.0frvz 0)+z.0frvz+0)-z.0frvr`)rru-1)rrur)rrur)zz>6.1frvzzz-0.0)zz>z6.1frvzzzz0.0)zx>z6.1frvzxxx0.0)u
🖤>z6.1frvu🖤🖤🖤0.0)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%rz<<+Infinity%<<<)z>,%sNaN1234567zsNaN1234567%)z=10.10%rz
   NaN123%rs-020)rrr:formatrer,
__format__)rrrfmtrrJs      rtest_formattingzFormatTest.test_formattingsj,,&&GP*	>NCFVGAJ4f=	>	
)WQZ%:%:GDr(c|jj5}t|_|j	t|jj
ddddddy#1swYyxYw)Nr}rxr;)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)NrTfz)rerrrrrs 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(.rrrrb
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+8r03nr04n05n0123406n00123490rg07nz012,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¿5Nrt)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.123rtu100٬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[r\rrrrr	rrrr(rr3r3s@-PEd$RWJrXw';(; 9r(r3ceZdZeZy)CFormatTestNrrr(rrrrr(rceZdZeZy)PyFormatTestNrrr(rrrrr(rcReZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZy
)ArithmeticOperatorsTestz:Unit tests for all arithmetic operators, binary and unary.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-11.122.2z11.1rrz-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.3rrz-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-5rEr7rrz-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)Nrhrl)rrr:absrbs  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)
NrxsNaNrWrrTFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r)rrrroperatorltlegtgeeqner-rrrre)rrrrrtrrFr
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:rer,rs   rtest_copy_signz&ArithmeticOperatorsTest.test_copy_signsd,,&&AJ  ---b115)WQZ%9%94@r(N)rrZr[r\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"rMredividecompareassertFalser:)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"rMremultiplyrr-rrrfinish2r:)r$rrrrrrrrrrr thiscontextr!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<<LceZdZdZdZy)
ThreadingTestz0Unit tests for thread local contexts in Decimal.c|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)rr5	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\r@rr(rr0r0|s
:
$(r(r0ceZdZeZy)CThreadingTestNrrr(rrBrBrr(rBceZdZeZy)PyThreadingTestNrrr(rrDrDrr(rDceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZy)
UsabilityTestz*Unit tests for Usability cases of Decimal.cH|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.42rirhr{gY@@r)rr
assertGreaterassertGreaterEqual
assertLessassertLessEqualr:assertNotEqualobjectlistmaprsr(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)rrrKrLrIrJrMr:rrrRrSs    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)NrXrYy?y?y@y@?)	rrrMr: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;5Brp1ez-1el!0QYrri,ri6lc(	9erlg]{lg]rri)rrrFractionr.rrrrMIN_EMIN	MIN_ETINYr+rKr5r:rMrLrJrIrerrr_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)rrrrrTs     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:)rrrUrs   rhashitz.UsabilityTest.test_hash_method.<locals>.hashit7s,QA

AQ"Hr(rHrrnan123-NaN)rrn!=>?@ABrrorrrr;z-0.000rRz-0E1210.0z	-23.000001230E100z
-4.5678E50lz	1.634E100z
90.697E100z
188.83E100z
1652.9E100	56531E100)rrr:z-.0e1z34.02.5z
112390.625z	-0.515625z123456789.1r|'iLi)
rrrrsextendr:rurrr+)rrrrwr4rtrurr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)NrrxceZdZdZy)-UsabilityTest.test_hash_method_nan.<locals>.Hcy)Nrrrs rrvz6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__sr(N)rrZr[rvrr(rHrs
r(rceZdZy)-UsabilityTest.test_hash_method_nan.<locals>.DN)rrZr[rr(rrkrsr(rk)rrrer,rur:rNrv)rrrrrks     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.5r{r)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"rbs  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)N66rrr{gp=
ף.@)	z123.00rg3.2r)3.54r)3.899r)-2.3rz-11.0ir:rz-0E3r)89891211712379812736.1l{#'s{MryrrrWr)	r)rrrrrrrrrrr)rl{#'s{M)rrrrrrrr)z-3.5)rr)rr)-0.5r)0.5r)r6r)rr)z3.5r))123.456rz0E+4)rrz0E+3)rrz1E+2)rrpz1.2E+2)rrr[)rrz123.5)rr123.46)rrr)rrz123.4560)z123.455rr)z123.445rz123.44)rWrrx)rirx)sNaN314rNaN314)
rrr:rrmathrrer
OverflowErrorceilroundr5)
rrrr
test_pairsrrFtest_triplesrtrs
          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)rrrrrus     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)rrrerr)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)Nrrrlrrrr)rrr)rrrrrrrrrr)rrrrrrrr)rrrr%)rrr)rrr)rrrt)rrrt)rrNrrr)rrrt)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)rrreras_integer_ratiorrsrtuplerrIr:rgcd)	rrrUcoeffrurpqrrs	         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:rqr)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.709530rpz2.045323rr1111000z
9.999999E+999rrr`
+Subnormalz0E-1005rNan891287828
NaN1287828i  rrxe101rgr(r11100z1.11E+9rr225r6r,r%rz1.50001z1e-3)rUr,r%z1.501z1.500z1e-10)r):rrr.rrrrrrrrrr+rXrSr)r:r5rUr"rMrerrrlnlog10logbryrrrrgrcapitalsrrrircrrrrrrrrotatescalebshiftfmar/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'i7rgrrirrz9.123rrpirhC)rrr:rrirkrmrcrrrrrrrrrrrrrrrbs  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[r\rVr]r`rorrrrrrrrrrrrrrrrrrr(rrFrFsw4"H1&9((5T(L<\>&(*6e;NG4+&+7ZAB-!^2m/^/Er(rFceZdZeZy)CUsabilityTestNrrr(rr	r		rr(r	c,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@rrr	G)
r(rcXeZdZdZdZdZedZdZdZ	dZ
dZd	Zd
Z
dZy)
PythonAPItestscl|jj}|jt|tj
|j
t|tj|j|dtj
|j|dtjyr)
rrr"
issubclassnumbersNumberrRealrassertNotIsInstancerbs  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)rspickleHIGHEST_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)rrrsr:rrrrrerrrrrrrrs      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)Nrqi)rrrsrrrrrs   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)Nr4r5r6r7)
rrrsr:rrrrrtruncr8s      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(rrrBU
s
r(rrrrls\&5$3|	rrrrxrrabcrrrr)rrr"r!rr:r4r5rrrrrer,rsr(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)Nrr)r+r,z3.1415rH)r+r-z
Decimal('-0')rzDecimal('1')rz
Decimal('10'))rrr.rrr:create_decimal_from_floatrpirrer9)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)Niiayrdz7.335rwz7.34r,z7.3310e999991e100000rz0.871831e8001e797)r%rUr,z	8.71E+799)rrr.rr:rrre)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:rTrUrVcomplexrrer-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)8Nrrpr*r)r%rrrrrrz0.7rrz-0.9z9.73z1E+19999'z-2000i0r[rgz0.06250.2r)r%rr`r0.01z0.0101r:z-0.3z0.02z-0.03rrr1e109.99r6r9.9z0.9)thirdr%rz7E+1irz0.2111r(0123g?r)r)@rrr.rrrr+rXrSr)r:rer"rMrrUrrrrrrrrrrrirrrrrrrrr,r{r}rrrrrrrradjustedrVradixrryrgrrcrrrrrrr	canonicalrqrs)rrkr.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)rrrrrlrrrrrrrs            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&r2r9r
r<r?rGrLrRrYrjrsrr(rrr	sP;11f?"..
8@@*820J nB`&Nr(rceZdZeZy)CPythonAPItestsNrrr(rruruMrr(ruceZdZeZy)PyPythonAPItestsNrrr(rrwrwPrr(rwceZdZdZeeejedZ	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:rer,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-)rsr(r)rr.rr*r,r+r:r+rSrXr,rrarMr-rrr/r~r3r(	randrangerr')rr.r.r/rrHcombinationsdumperloaderrirDfitir+rmrlcapsrarrs                    rr2zContextAPItests.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)rrassertInassertNotInrbs  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.rnrMr=rMr-rkeysr:)rrr.rrk1k2s       r	test_copyzContextAPItests.test_copys,,&&,,&&I
FFHBqE2a5)BqwwKAGG5BqwwKAGG5

 

 R !''*r(cv|jj}|}|jtt|dy)N_clamp)rr.rer-r!rr.rs   rtest__clampzContextAPItests.test__clamps.,,&&I.'1h?r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyNrpr)rrr.rr:rer,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:rer,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:rer,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:rer,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:rer,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:rer,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:rer,rs     r
test_copy_abszContextAPItests.test_copy_abssg,,&&,,&&I
JJwr{#B+)QZZ6r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.ror:rer,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:rer,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:rer,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:rer,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:rer,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:rer,rs     rtest_divmodzContextAPItests.test_divmod[rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyNrr()rrr.rUr:rer,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)
NrrrrrE4rrz
not a decimalrrgZd;O?)rrr.rr:rer,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:rer,rs     rtest_is_finitezContextAPItests.test_is_finiteg,,&&,,&&I
KK$R!,)Q[[$7r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_infinitez ContextAPItests.test_is_infiniterr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_nanzContextAPItests.test_is_nansg,,&&,,&&I
HHWR[!"q))QXXt4r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_normalzContextAPItests.test_is_normalrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_qnanzContextAPItests.test_is_qnang,,&&,,&&I
IIgbk"2*)QYY5r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_signedzContextAPItests.test_is_signedrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_snanzContextAPItests.test_is_snanrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_subnormalz!ContextAPItests.test_is_subnormalrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_is_zerozContextAPItests.test_is_zerorr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_lnzContextAPItests.test_lnsg,,&&,,&&I
DDb1%)QTT40r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     r
test_log10zContextAPItests.test_log10g,,&&,,&&I
GGGBK a()QWWd3r(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,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:rer,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:rer,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:rer,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:rer,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:rer,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:rer,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:rer,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:rer,rs     rtest_min_magzContextAPItests.test_min_magG
rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.minusr:rer,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:rer,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:rer,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:rer,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:rer,rs     rtest_next_towardz ContextAPItests.test_next_towardz
rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,rs     rtest_normalizezContextAPItests.test_normalize
rr(c|jj}|jj}|}|j|j	d|j	|d|j|j	d|j	|d|j|j	d|j	|dy)Nrgrrl)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:rer,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)	Nrrrrrrrr)modulorUr)rrr.powerr:rer,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:rer,rs     rrRzContextAPItests.test_quantize
rr(c|jj}|jj}|}|j|d|d}|j	|jdd||j	|j|dd||j	|jd|d||jt|jdd|jt|jddyr)rrr.	remainderr:rer,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:rer,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:rer,rs     rtest_rotatezContextAPItests.test_rotate
rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,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:rer,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:rer,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:rer,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:rer,rs     r
test_subtractzContextAPItests.test_subtractrr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,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:rer,rs     rtest_to_sci_stringz"ContextAPItests.test_to_sci_string!rr(c|jj}|jj}|}|j|d}|j	|jd||jt|jdyr)rrr.rr:rer,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:rer,rs     rtest_to_integral_valuez&ContextAPItests.test_to_integral_value3s,,&&,,&&I
,,,R0!4)Q%8%8$?)Q%8%8"cBr(N)GrrZr[rr
rrrrrr2rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrRrr
rrrrrrrrrr rr(rryrySsv9(!#$_$$.@A@B$@;1z=
+	@2
4
8
?
>
B7;:
;
7
;
72248:58686;6143
<?
;
<
4
8
4
84
998
<8L39
9
:
?
73
=
7
6
9<<@Cr(ryceZdZeZy)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^rSrprXrrrarrNrMr-)
rrrr:r+r,rSrXrrarer,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)Nrr2r6)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)Nr8Tz0e-999z3.4e200r)rrr.rrrrr)r:rMr-rSrMrerr"rr)rrr.rrrrr,r3r$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#1swYyxYwrrGrHs      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)Nrr2rrr)rr.rrr3r:r+)
rr.rrr3r$n1r"n2n3r#n4rIs
             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[r0r4r=rArErJrLrRrr(rr&r&Cs.NN"I82!2F

r(r&ceZdZeZy)CContextWithStatementNrrr(rrTrTrr(rTceZdZeZy)PyContextWithStatementNrrr(rrVrVrr(rVc4eZdZdZdZedZdZdZy)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*r3r)r+rSrXr,r-rMz100E-425000010rrpz
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)rMrrOr2r8r=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.rrrMrMr-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)rrrlrrr-r)r:r"rMrrrJre)rrrlrrrs      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
yr[)r)r!rerr"rM)rrUr&r%signalrrlrs      rassert_attrz7ContextFlags.test_float_comparison.<locals>.assert_attrs\!4 A'!!&!Q/

adD)OOGMM.9:r(rXrYr[rZr:rrrIrrrrcdD]}
|||dD]}|||
d|dd|dd|dd|dd|d	
d|dd|d
d|dddd|d	d|d
d|ddtdd|dy)	N)rr)rr
rrrrrxr)r)rror&rrpbig_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)	Nr7z100.0rrrg$@rrU)r)rr:lenr"rMresorted)rrorrUrrlrs    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()roTr)rrr.rlrrrr-)rr.rr~rrrrrlrprrrsrtrurvrwrxryrzr{r|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|yr[)
rrr.rrlrrMr-clear_trapsr")rrr.rrlr%s      rtest_float_operation_defaultz)ContextFlags.test_float_operation_defaults,,&&,,&&,,&&33)~67~67!%

g(,

n%

n56

g./r(N)	rrZr[rgrjrrlrrrr(rrXrXs1@WD$(L3636jY6v0r(rXceZdZeZy)
CContextFlagsNrrr(rrrrr(rceZdZeZy)PyContextFlagsNrrr(rrrrr(rceZdZdZdZdZy)SpecialContextszTest the context templates.c
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)rr5rrrr3rrrr:r+r'rnr+rr)rr5rrrr3rrrrdefault_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[r\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+rXr{rprrSr|rrrrr,r*rrrarrlrrMr-rr)r+rXrSr,rrarMr-rNr:r9rr;Qr<rr)rr)
rr.r5rnr*r:r!rerr,r-KeyError__delattr__)rr.r5rr&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,rSrXrrarrOr3rMr-)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+rprr29e2rr,XYZ)r,r+rar*rSrr)rSr+z1e-99z2.234e-2000r:rX)rXr+1e99z
2.234e2000rr91E222z1e+222rarc)rarXz!1.000000000000000000000000000E+99rMr;r-r<)%rrr.rrrrrrrrr:r!rerr+rr,rr,rrSrr"rMrXrrrrrar5r)r3rr-r)rrrrrrrrrrrrrr&rror.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:rrPrrrirjr"r6__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__rD)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*rrD)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:rfrbs  r
test_adjustedzCoverage.test_adjusted,si,,&&-668%@002A6002A6r(c|jj}|jj}|dj}|j	|d|}|j|d}|j	|dy)Nr*)rrrrhr:)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)Nrr3rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr5rnr+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)"Nrrpz-10r7rr(rrrrz1.2r^rxTz1.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)N10912837129r10901935194rxrFrrr)
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)NrrrrYrrpFrrr)
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)NrrpFr1e1)rrrrr+rXrSr-rr"rrrrrrrs      rrRzCoverage.test_quantizes,,&&||00<<88
^	(qAFAFAF(-AGG$%$$WU^4AOOAHHJ'
	(	(	(s

A!B44B=c|jj}|jj}|}|j|dj	d|j|j	dy)Nrr)rrrr:rgrs    r
test_radixzCoverage.test_radixsZ,,&&\\,,
L++-r2B'r(c	|jj}dD].}|jt|d|dt0y)N)rrrrrrr r"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`rprrz1.23457rarz1.2345000000rz0E+10rTrr)	rrrr+r:r5	__round__rer,)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.rerr)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     rr9zCoverage.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[rrrrrrrRrr-rrr9rrr(rrr*sH7	&O#b'5R/(((NJ"?1 r(rceZdZeZy)	CCoverageNrrr(rrr+rr(rc,eZdZeZfdZfdZxZS)
PyCoveragec~t|tj|_tj
dyr
rrs rrzPyCoverage.setUp1rr(c`tj|jt|yrrrs rrzPyCoverage.tearDown6rr(rrs@rrr.rr(rceZdZdZdZy)PyFunctionalityz!Extra functionality in decimal.pyctj}tj}gd}|D](\}}}|jt	||||*y)N)
)z.0erz1e+0)z#.0erz1.e+0)rCrr)z#.0fr1.)rK1.1r)z#grr)rMrr)z#.0grr)rSrz100%)z#.0%rz100.%)rrrr:r)rrrrrrrJs       rtest_py_alternate_formattingz,PyFunctionality.test_py_alternate_formatting=sM))~~*	>NCFVGAJ4f=	>r(N)rrZr[r\rrr(rrr:s
+>r(rc.eZdZdZdZdZdZdZdZy)
PyWhiteboxz White box testing for decimal.pycRtj}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]152587890625e7rric
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__rTrrrrrr
r	__float__rrv__int__	__trunc__rr__neg____bool____pos__r!rrrr rrr"r__str__rrrfrrrrrrrrrrr)F)rrr5r3rnr0r3r-r:rrr)
rrr5r3rr
rrrrs
`     @@@@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)Nrhri)rrr:r5rMr=rs    rtest_py_decimal_idzPyWhitebox.test_py_decimal_idsI))BKAJQ&BqE2a5)r(ctj}tj}|5}|djdt}|j|j
dddy#1swYyxYw)Nrxr)rrr_rescalerr"rrs     rtest_py_rescalezPyWhitebox.test_py_rescalesX))~~
^	(q''84AOOAHHJ'	(	(	(s<A--A6c|tj}|jt|djdt
y)Nz3.1234r)rrrer_roundrrbs  rtest_py__roundzPyWhitebox.test_py__rounds*))*gh&7&>&>8Lr(N)	rrZr[r\rrrrrrr(rrrRs!*36M$^*(Mr(rc@eZdZdZedZedZedZy)CFunctionalityzExtra functionality in _decimalcrtj}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|rCrD"iirrpi)rIEEEContext	DECIMAL32	DECIMAL64
DECIMAL128r:r+rXrSrerr)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)Nrnrir)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[r\requires_extra_functionalityr*r/rDrr(rr r sB)!!9"!9F"1"1"#C"#Cr(r ceZdZdZdZdZdZdZdZdZ	e
dZd	Ze
d
Z
dZdZd
ZdZdZe
dZe
dZdZdZdZdZdZej6ej:j=ddej6edej6e ddddZ!dZ"y) 	CWhiteboxzWhitebox testing for _decimalchtj}tj}ddz}ddz}|5}d|_t	dD]V}tj||}tjdd}||z}	||||z}
|j|	|
X	dddy#1swYyxYw)Nr#$i@Brrri)rrrr+rsr(rr:)rrrrrrrFrrUrrs           rtest_bignumzCWhitebox.test_bignum/s))~~
V
V
^	'qAF1X
'$$R,$$T40FAJ'!*,  A&
'	'	'	'sA,B((B1cP|jttjddy)Nr*r)rer,rrrs rtest_invalid_constructionz#CWhitebox.test_invalid_construction@s)QYY59r(ctj}tj}tj}tj}||5|j||ddddy#1swYyxYw)N1e9999999999999999999)rrrr.rre)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)Nrr3rrTaQContext(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]))rr5rlrnr+rXrSrr,rrar3rMr-rr:)rr5rlrr%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ʚ;rrSr2r8r7rr:r9)r+rSrXrrawin32rrri?rpi9rrzwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr)rr.rrrlrrr3rPrerrM__setitem__r-r__delitem__r,r*rnrrplatformr!execr)rr.rrrlrrr3HAVE_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_allcrrrrT)r-r.rprrUrVr{r)rr.rrrrr3rPrerr*rrYrr,)rr.rrrrr3r[rr\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'irrbrc)rr5rrrrrrnr+rr,rXrSrrar:EtinyEtoprPrrr)rr5rrrrrrs        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)rr5rnr:rc)rr5rs   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)	NrrrTrTrrr)rrrrrrjrPr-rerrr)rrrrrrjr\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.10rrrpz=%d.1)rrrPrer,rr)rrr[maxsizes    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:rrer,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+9rrrEr*rrrrpz	1e-100000rrrr200Tri)rrrrrrr:rrer,rrgrrrrrurhr{r)r5rgr-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)rrircrrrrrrrrrrrrrN)mod)rrr.r!rer,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@r3r<r>r9r5rs 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)rosignal_dictr%rs   rassertIsExclusivelySetz<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySets="
7&=OOK$45$$[%56	
7r(Trrrrrirrr)>rr.r5rrlrrrrrrrr9r9r@rnr"r-rrvaluesrrrMrrr:rer,rr	getsizeofrr)r-r.r,r7r=r>r<r3r;r4r5r6r8r:r2r3rsr~r(samplerrOr+r,rSrXrra)&rr.r5rrlrrrrrrrr9r9r@rrrbrrr
IntSignalsIntCondlimrrrrMr-r+rmrlrarcrrrrCs&`                                     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(rb)rrrxxxxxrryyyyyrrKr)rrrrrrrer)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-rrnrers      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-1000007rrrX)rrr)rrrz-sNaN1)rrrrrrr+r-rrnr:r5rrer)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)rrrPrI
__sizeof__r:)rrr[rrs     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 rrzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__r(NrrZr[rrrr(rXrs

r(rceZdZdZy)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.YcdgdzSNrrrrs rrzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__
s3wr(N)rrZr[rrr(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 rrzDCWhitebox.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)rrirpz0.0025)rrr.rrPrirr: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[r\rKrMrPrRr_rarErdrhrjrlrorrrurzr|rrrrrrrskipIfrrYrrrrrrr(rrGrG+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(rGceZdZdZdZdZy)
SignatureTestzFunction signaturescXttD]}|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)
NrDrr.parameter name mismatch in %smsgrrr3parameter kind mismatch in %s)rrrr!rinspect
isfunction	signaturerO
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)rrbrrrrrUrrUrnumrr,r%)rrbrrUrrUrrrr,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)zwThe C Context docstrings use 'x' in order to prevent confusion
               with the article 'a' in the descriptions.rrrrUrrr)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)NrDrrrrrrr*zinvalid signature for z: r)r!rrrrrrrrOrrr: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[r\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*)slfrxs  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)rtestspatternfilenameheadtailtesterprefixrx
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)z Execute the tests.

    Runs all arithmetic tests if arith is True or if the "decimal" resource
    is enabled in regrtest.py
    rrF)	verbosityexitargvN)rrr*rmainrarithverbose
todo_testsdebugs    rtestr&s+
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)r\rrrrrr(rnrr"rtest.supportrrrrrrr	r
rrtest.support.import_helperr
rrr(rr7rYrrrr
cfractionsr*
pfractionsr
skipUnlessrequires_cdecimalrrrMrr2rrrrrrrrrlr3r'rrrrrrr/rr~rr6TESTDATADIRrrr__file__pathdirnamecurdirtestdirseprisdirrr1hasattrEXTRA_FUNCTIONALITYrErskip_if_extra_functionalityr;r^rrrrr/r1r3rrrrrr&r.requires_working_threadingr0rBrDrFr	rrrurwryr"r$r&rTrVrXrrrrrrrrrrrrrrrrrr rGrrrrrr'rr*r&optparseOptionParserr
add_option
parse_argsoptrskipr%rr(r<module>rBs"
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(