python (3.11.7)

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

eP\dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZddlmZmZmZmZmZddlmZddlmZddlmZddlZddlZddlZejdkred	ed
dgZed
dg
Zddl Z!eddgZ"eej#d
<eddgZ$eej#d
<ee"ee$iZ%e!ej#d
<ej&edZ'eer4e(e)j*+ndee(e)j*+iZ,eer8ej-ej.ej/ej0ej1ej2ej3ej4ej5g	ndeej-ej.ej/ej0ej1ej2ej3ej4ej5g	iZ6dZ7ej8Z8ej9Z9ej:Z:ej;Z;ej<Z<ej=Z=ej>Z>ej?Z?e8e9e:e;e<e=e>e?gZ@eer&e)ndee)iZAdZBdZCeDdkrejEdZFneGZFejHIeFpejJZKeKejLzeCzejLzZMejHNeMaOdZPeQedrdndZRej&eRdZSejTeRdZUGddZVGddZWe'GddeWejXZYGdd eWejXZZGd!d"Z[e'Gd#d$e[ejXZ\Gd%d&e[ejXZ]Gd'd(Z^e'Gd)d*e^ejXZ_Gd+d,e^ejXZ`Gd-d.Zae'Gd/d0eaejXZbGd1d2eaejXZcd3Zdd4ZeejfGd5d6Zge'Gd7d8egejXZhGd9d:egejXZiGd;d<Zje'Gd=d>ejejXZkGd?d@ejejXZlGdAdBZme'GdCdDemejXZnGdEdFemejXZoGdGdHZpe'GdIdJepejXZqGdKdLepejXZrGdMdNZse'GdOdPesejXZtGdQdResejXZuGdSdTZve'GdUdVevejXZwGdWdXevejXZxGdYdZZye'Gd[d\eyejXZzGd]d^eyejXZ{Gd_d`Z|e'Gdadbe|ejXZ}Gdcdde|ejXZ~GdedfZe'GdgdheejXZGdidjeejXZeUe'GdkdlejXZGdmdnZe'GdodpeejXZGdqdreejXZGdsdtejXZGdudvejXZGdwdxejXZe'GdydzejXZee'Gd{d|ejXZd}Zd~ZdZdadadadaddZeDdkrddlZejdZeddddedddde\ZZejredddSereddeejdSedddSdS)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 versionct|||tfdDdS)Nc3BK|]}|vr|n|VdSN).0sdexpecteds  E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_decimal.py	<genexpr>z!assert_signals.<locals>.<genexpr>Us9FFqqH}}qttad(FFFFFF)getattr
assertTrueall)clscontextattrrrs   `@rassert_signalsr(SsKANN3FFFFFAFFFFFGGGGGr!c|sdS|dttt|d}||dS)N	r)precroundingtraps)ContextROUND_HALF_EVENdictfromkeysSignals
setcontext)mDefaultTestContexts  rinitr6lsYff
t}}WQZ/K/K#LL#$$$$$r!decimaltestdata__main__F
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildcZeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdS)IBMTestCasesz?Class which tests the Decimal class against the IBM test cases.c
F|j|_|j|_dg|_tgd|_|jtkr|jd|jd|jd|jd|jd|jd|jd	|jd
|j	|j
|j|j|j
d|_idd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-id.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdS|_t t"t$t&t(t*t,t.dT|_|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj dU|_!dV|_"dS)WN#)scbx164scbx165expx901expx902expx903expx905lnx901lnx902lnx903lnx905logx901logx902logx903logx905powx1183powx1184powx4001powx4002powx4003powx4005powx4008powx4010powx4012powx4014pwsx803pwsx805powx4302powx4303powx4342powx4343pwmx325pwmx326)	precisionr,maxexponentminexponentclampandlogical_andapply_applyclassnumber_class
comparesigcompare_signalcomparetotal
compare_total
comparetotmagcompare_total_magcopycopy_decimalcopyabscopy_abs
copynegatecopy_negatecopysign	copy_sign	divideint
divide_intinvertlogical_invertiscanonicalis_canonicalisfinite	is_finite
isinfiniteis_infiniteisnanis_nanisnormal	is_normalisqnanis_qnanissigned	is_signedissnanis_snanissubnormalis_subnormaliszerois_zeromaxmagmax_magminmagmin_mag	nextminus
next_minusnextplus	next_plus
nexttowardnext_towardor
logical_orreduce	normalize
remaindernearremainder_nearsamequantumsame_quantum
squarerootsqrttoeng
to_eng_string
tointegralto_integral_valueto_integral_exact
to_sci_stringlogical_xor)tointegralxtoscixor)ceilingdownfloor	half_down	half_evenhalf_upup05up)clampedconversion_syntaxdivision_by_zerodivision_impossibledivision_undefinedinexactinvalid_contextinvalid_operationoverflowrounded	subnormal	underflow)r{r}rrrrrrrrr)#rr.r&readcontextignore_listsetskipped_test_idsCaddchange_precisionchange_rounding_methodchange_max_exponentchange_min_exponentchange_clamp
ChangeDictNameAdapter
ROUND_CEILING
ROUND_DOWNROUND_FLOORROUND_HALF_DOWNr/
ROUND_HALF_UPROUND_UP
ROUND_05UPRoundingDictClampedInvalidOperationDivisionByZeroInexactOverflowRounded	Subnormal	Underflow
ErrorNamesLogicalFunctionsselfs rsetUpzIBMTestCases.setUps|++--<//115!$"%"%"%"!"!H<1!%%i000!%%i000!%%j111!%%j111!%%j111!%%j111!%%i000!%%i000*.)>(,(C+/+C+/+C%)%6	88$1E-$1#H$1#N$1))9$1+?	$1
,,?$1#>
$1&j$1)$1'{$1($1%%5$1*.$1'{$1)$1$H$1 '{!$1$1"%Y#$1$'{%$1&%Y'$1(*.)$1*%Y+$1,%Y-$1.%Y/$10(1$12'{3$14)5$16!7$18%[9$1:,,<;$1<*.=$1>)?$1@$OA$1B))<C$1$1D+>$3"/I$1$1$1N*7&0'2+:+:)6$,&022(,|';151N040K37<3P26,2O'+|';/3|/L151N(,(='+|';)-)?)-)?AA
!1r!cH|jtkrx|jjdkrh|jd|jd|jd|j|S|j||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)!C!C,,Z888,,Z888,,[999#221555<''7333r!ctrtjt|d5}|D]}|dddd}	||}C#|jj$r2}|d|j	j
zdz|zYd}~d}~wwxYw	ddddS#1swxYwYdS)Nutf-8)encodingz

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

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





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

E

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

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

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

d771::&&...

d771::&&---444

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

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

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


$	1	1MCcAsHHHHIIIAsHHHHIIIT%#+
"=>>"S[4/
1
1
1T-#"5"=>>!CZ%/
1
1
1
1	1	1r!N)
rr_r`rarrrrrr2rr!rrrLs@@JJJKKKIIIIII@@@0101010101r!rceZdZeZdS)CImplicitConstructionTestNrrr!rr4r4rr!r4ceZdZeZdS)PyImplicitConstructionTestNrrr!rr6r6rr!r6cZeZdZdZdZdZdZdZedddZ	d	Z
d
S)
FormatTestz#Unit tests for the format function.c|jj}gd}|D]3\}}}|t||||4|t
|djddS)N))r)0E-15z0e-15)r)z2.3E-15z2.3e-15)r)z2.30E+2z2.30e+2)r)z2.30000E-15z2.30000e-15)r)z1.23456789123456789e40z1.23456789123456789e+40)r)1.5z1.5e+0)r)z0.15z1.5e-1)r)z0.015z1.5e-2)r)z0.0000000000015z1.5e-12)r)z15.0z1.50e+1)r)-15z-1.5e+1)r)rez0e+0)r)0E10e+1)r)0.0z0e-1)r)0.000e-2).6er:z0.000000e-9)rBrez0.000000e+6)rBrz9.999999e+0)rBz	9.9999999z1.000000e+1)rBz-1.23e5z-1.230000e+5)rBz
1.23456789e-3z1.234568e-3)rrere)rr?r?)r0E-2r@)rz0.00E-8z0.0000000000)rr=re)rz3.2E132)rz3.2E2320)rz3.20E2rE)rz3.200E2z320.0)rz3.2E-6z	0.0000032).6fr:0.000000)rFr=rG)rFrerG).0frere)rHrAre)rH
3.141592653).1frI3.1)z.4frI3.1416)rFrI3.141593)z.7frI	3.1415926)z.8frIrI)z.9frIz3.141592650)grere)rPr?r?)rPr=r>)Gr=z0E+1)rPz0E-5z0.00000)rPz0E-6rG)rPz0E-7z0e-7)rPz-0E2z-0e+2).0grIrJ)z.0nrIrJ)z.1grIrJ)z.2grIrL)z.5grIrM)z.7grIrN)z.8grIrO)z.9grIrI)z.10grIrI)r!r=0%)r!0E0rS)r!z0E-1rS)r!rCrS)r!z0E-3z0.0%)r!z0E-4z0.00%).3%re0.000%)rU0E10rV)rUz0E-10rV)rUz2.34z234.000%)rUz1.234567z123.457%).0%1.23z123%)r)r}r})r-NaN123rZ)z+gNaN456z+NaN456)z.3eInfr)z.16frr)rR-sNaNr])r1.00r^)6123   123)z<6r`z123   )z>6r`ra)z^6r`z 123  )z=+6r`z+  123)#<10r}z
NaN#######)rbz-4.3z
-4.3######)z#<+100.0130z
+0.0130###)z#< 10rcz
 0.0130###)z@>10rz
@-Infinity)z#>5rr)z?^5r`z?123?)z%^6r`z%123%%)z ^6-45.6z-45.6 )z/=10rdz
-/////45.6)z/=+1045.6z
+/////45.6)z/= 10rez
 /////45.6)z=10rz
-Infinity)z^16rz-Infinity)z>101.2345z
1.2345)z<10rfz
1.2345),1234567z	1,234,567)rg123456123,456)rg1234512,345)rgrz1,234)rgr`r`)rg12rm)rgrr)rgrere)rgz-1234567z
-1,234,567)rg-123456-123,456)z7,rirj)z8,ri 123,456)08,riz	0,123,456)z+08,riz+123,456)z 08,rirp)rqrnro)z+09,riz
+0,123,456)z07,1234.561,234.56)rqrrrs)z09,rrz	01,234.56)z010,rrz
001,234.56)z011,rr0,001,234.56)z012,rrrt)z08,.1fz1234.5z01,234.5)rg
1.23456789ru)z,%z
123.456789z12,345.6789%)z,eriz
1.23456e+5)z,Eriz
1.23456E+5)rKrr)rKz-.0r)rK-.01r)z.1f0.r?)z6.1frxz   0.0)ry-1.z  -1.0)rw-0.r?)rw.01r?)rwrvr?)z.2frxr@)r}r{r@)r}z.001r@)r}z-.001r@)z.1erx0.0e+1)r~r{r)z.1Erx0.0E+1)rr{r)zz.2e-0.001z-1.00e-3)zz.2grr)zz.2%rz-0.10%)zfz-0.0000z0.0000)rw
-00000.000001r?)rw-00000.r?)rw-.0000000000r?)r}rr@)r}rr@)r}rr@)rwz.090.1)rwz-.09z-0.1) z.0fr{z 0)+z.0fr{z+0)-z.0fr{re)rrz-1)rrzr)rrzr)zz>6.1fr{zzz-0.0)zz>z6.1fr{zzzz0.0)zx>z6.1fr{zxxx0.0)u
🖤>z6.1fr{u🖤🖤🖤0.0)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%rz<<+Infinity%<<<)z>,%sNaN1234567zsNaN1234567%)z=10.10%rz
   NaN123%rs-020)rrr@formatrjr2
__format__)rrrfmtrrNs      rtest_formattingzFormatTest.test_formattings,&GGGP*	>	>NCFVGGAJJ44f====	
)WWQZZ%:GDDDDDr!c|j5}t|_|t|jdddddddS#1swxYwYdS)Nrr}r@)rrrr,r@rrrctxs  r+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_roundingss
\
&
&
(
(	$C(CLVDL$8$8$B$BFKK"
$
$
$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$sA	A00A47A4cz|tt|jdddS)NrYfz)rjrrrrrs rtest_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_formatys2*fdl.B.B6.J.JDQQQQQr!c		jj		ddlm}n%#t$rdYnwxYwfd}d?	fd	}d|gdd	d
}d	||gdd
}d	|gddd
}d
|ddd|gdd
}dd|gdddd
}|	d|d|	d|d|	d|d|	d|d|d|d|d|d|d|d|d|d|d|dd|d|dd |d|dd |d|dd!|d"|d#d$|d"|d%d$|d"|d&d'|d"|d(d)|d*|d&d+|d*|d(d+|d*|d,d-|d*|d.d/|d*|d0d/|d*|d1d2|d3|d(d4|d3|d,d4|d3|d.d4|d3|d0d5|d3|d1d6|d3|d7d6|d3|d8d9|d3|d:d;|	d<|d=d>dS)@NrCHAR_MAXlocale.CHAR_MAX not availablecfjtkrdd|Dn|S)Nrc,g|]}t|Srchrrs  rr'zCFormatTest.test_n_format.<locals>.make_grouping.<locals>.<listcomp>000qCFF000r!)rrjoin)lstrs r
make_groupingz/FormatTest.test_n_format.<locals>.make_groupings559\Q5F5F27700C000111COr!rycjtkr|||S|||S)N)_localeconv)rrr)roverriderrrs   rget_fmtz)FormatTest.test_n_format.<locals>.get_fmtsO|q  wqzz,,S(;;;wqzz,,Sh,GGGr!.rrrrg
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+8r03nr04n05n0123406n00123490rl07nz012,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¿5Nry)rrlocalerImportErrorskipTestdecoder@)
rrrren_USfr_FRru_RUcrazydotsep_widers
`        @r
test_n_formatzFormatTest.test_n_format|s
,&	;'''''''	;	;	;MM9:::::	;	P	P	P	P	P	H	H	H	H	H	H	H"&yyy11!"&z22 "%
iii00!"%
q!Q&9::!*0099%
iii00)0099	
%88&AAA%88&AAA%88&AAA%88'BBBE22MBBBE22K@@@E22MBBB668JKKKE599<HHHE599<HHHE599<HHHE599<HHH	
ue44f===ue44f===ue44g>>>ue44h???u55x@@@u55x@@@u55yAAAu55{CCCu55{CCCv66EEE66
CCC66
CCC66
CCC66DDD77GGG77GGG77HHH77III	
+vFFH	J	J	J	J	Js99LC_ALLps_AFc|jj}tjd}tjd}|dkr)|d|d|dkr)|d|d|t|ddd	dS)
Nrru٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z
100000000.123ryu100٬000٬000٫123)rrr
localeconvrrr@)rrrrs    r&test_wide_char_separator_decimal_pointz1FormatTest.test_wide_char_separator_decimal_points,&)++O<
)++O<
H$$MM,,2F=(,K,K
M
M
MH$$MM,,2F=(,K,K
M
M
M	
 8 8#>>9	;	;	;	;	;r!cGdd|jj}|d}||jj|j|d}||jj|jdS)NceZdZdZdS);FormatTest.test_decimal_from_float_argument_type.<locals>.Ac.t||_dSr)r:a_type)rrs  r__init__zDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__s"1ggr!Nrr_r`rrr!rArs#
&
&
&
&
&r!rg@E@*)rr
from_floatr@r)rrrs   r%test_decimal_from_float_argument_typez0FormatTest.test_decimal_from_float_argument_types	&	&	&	&	&$	&	&	&
LL-qx888
LL-qx88888r!N)rr_r`rarrrrr	rrrr!rr8r8s--PEPEPEd$$$RRRWJWJWJr_Xw'';;('; 99999r!r8ceZdZeZdS)CFormatTestNrrr!rrrrr!rceZdZeZdS)PyFormatTestNrrr!rrrrr!rcTeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
S)ArithmeticOperatorsTestz:Unit tests for all arithmetic operators, binary and unary.c|jj}|d}|d}|||z|d|||z|d|dz}|||d|t|t|d|z}|||d|t|t|||z
}|||d|dz
}|||ddS)N-11.122.2z11.1rwz-6.116.1rrr@r:rrd1d2rs     r
test_additionz%ArithmeticOperatorsTest.test_additions\,&
WW


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


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

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














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





'''r!N)rr_r`rarGrr!rr7r7|s)::
$($($($($(r!r7ceZdZeZdS)CThreadingTestNrrr!rrIrIrr!rIceZdZeZdS)PyThreadingTestNrrr!rrKrKrr!rKceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdS)
UsabilityTestz*Unit tests for Usability cases of Decimal.c|jj}|d}|d}|d}||||||||||||||||||||||||||d|d|||d||d||d||t||ttt|td}|dd}tj
|||||dS)Nz23.42rnrmrgY@@r)rr
assertGreaterassertGreaterEqual
assertLessassertLessEqualr@assertNotEqualobjectlistmaprxr.shuffler>)rrdadbdcrbs       rtest_comparison_operatorsz'UsabilityTest.test_comparison_operatorss,&
WW


WW


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

bii''888

bii''888

bii''888

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

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

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



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

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




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


WV__

	


c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%	


c"Rjj"%%%

c"Rjj"%%%

c"Rjj"%%%

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

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



	8	8DAqTZ

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



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

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

d1ggw'''FF2JJ

d1ggw'''IbMM

d1ggy)))BM"

d1ggy)))B
GENNGAJJ

d1ggw'''A
IaLL

d1ggy)))A

ac4   
GAJJ

d1ggw'''AIaLL

d1ggy)))A

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

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


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

A

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

A

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




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

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

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


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

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

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

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

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

 
 

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

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

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

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

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

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

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

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

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

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

h	+NOOO7,FGGG

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

h	+NOOOw|5RSSS'+EFFF

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


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
















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














																		syBA7A A		A 	A


A A

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














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

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





























																			s$GBF7=A#F  F		=F 	F


F F

F F7 F$$F7'F$(F7+G7F;	;G>F;	?GGGN)rr_r`r8r<rErIrMrRrTrZrr!rr.r.CsNNNNNN"III8222!2!2!2F





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

 5 5ww|7L7LMN

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

aaddD)))OOGM.9:::::r!r_r`rbrar?rrrQrrrrcdD]}
|||dD]}|||
d|dd|dd|dd|dd|d	
d|dd|d
d|dddd|d	d|d
d|ddtdd|ddS)	N)rr
)rrrrrrr}r)r)rrzr'rr{big_dbig_finf_dinf_f	neg_inf_d	neg_inf_f
neg_zero_d
neg_zero_fsmall_dsmall_fzero_dzero_fs   rdoitz0ContextFlags.test_float_comparison.<locals>.doits*
=
=GUD!V<<<<*
=
=E7D!V<<<<
K(At<<<K
J!TBBBK
FHa>>>K
Ha>>>K!T:::K	9h4@@@Kuh4888
K!T:::KXq$???K	5(At<<<Ky(At<<<Keh4HHHHHr!c|tddg}t|d|j||r(|tddgntddg}|j|dddfv}|j|dddddiv}|jdS)	Nr?z100.0rrrg$@rr\)r/rr@lenr#rRrjsorted)rrzrr\rrtrs    rtest_containersz;ContextFlags.test_float_comparison.<locals>.test_containerssU
MMOOOUGGG,,-..ASVVQ'''OOAGN3444
MMOOO
4!!&&32HIIIID''&//233OOAGN3444
MMOOO#..AOOAGN3444
MMOOOc#66AOOAGN344444r!)rzTr)rrr.rtrrr%r-)rr.rrrrrrrtr{r}r~rrrrrrrrrrs`      @@@@@@@@@@@@@@@rtest_float_comparisonz"ContextFlags.test_float_comparisonsn,&,&4|0	;	;	;	;	;	;	;'&//WV__


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

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


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

D(D#E
#D((E

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


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

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

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

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

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

AQ"""

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

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

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

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



WX


WX


WX


WX


	3
	3
	3
	3
	3
	3
	3
	3
	3
	3	28,,,"'***"'***YY%%%\4(((Xt$$$Xt$$$Xt$$$Xt$$$Xt$$$Xt$$$[!!!^T***Z   Y[!!!Y%%%Y%%%YZ   YY%%%Z&&&]D)))Z   _d+++Z&&&Z&&&Z&&&Z&&&YY%%%]D)))Z   Z   Y%%%UD!!!UD!!![!!!Z&&&%t,,,^T***V_%%%]#####r!ctj}|d}||}|t|d|t|t|dS)Nrmrn)rrr@r;rTrCrs    rtest_py_decimal_idzPyWhitebox.test_py_decimal_idsg)GBKKGAJJQ&&&BqEE2a55)))))r!ctj}tj}|5}|ddt}||ddddS#1swxYwYdS)Nr}r)rrr_rescalerr#rrs     rtest_py_rescalezPyWhitebox.test_py_rescales)~
\^^	(q''844AOOAHHJJ'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sAA<<BBc~tj}|t|djdt
dS)Nz3.1234r)rrrjr_roundrrgs  rtest_py__roundzPyWhitebox.test_py__rounds6)*ggh&7&7&>8LLLLLr!N)	rr_r`rarr.r0r3r6rr!rrrRsn**3336M$M$M$^***(((MMMMMr!rcTeZdZdZedZedZedZdS)CFunctionalityzExtra functionality in _decimalctj}tj}tj}tj}d}||}||jd||jd||jd|||||}||jd||jd||jd|||||}||jd||jd	||jd
||||	t|d|	t|d|	t|d
dS)Nc||jdt||dgt||dgdS)Nrr-rR)r@rar()rr&s  rassert_restz7CFunctionality.test_c_ieee_context.<locals>.assert_restsHW]A...4'26664'266666r!r`irrKrL"iirrui)rIEEEContext	DECIMAL32	DECIMAL64
DECIMAL128r@r+r]rXrjrr)rr>r?r@rAr;rs       rtest_c_ieee_contextz"CFunctionality.test_c_ieee_contextsmK	K	\
	7	7	7

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

	
b)))b)))s+++0#666dOO	&	&DAqQ1%%%%2.01/0',	-
./)
*	+	+	+	
2,-	.	.	.	
Q]21>A	C	C	C	C	Cr!N)rr_r`rarequires_extra_functionalityrBrGr\rr!rr8r8sr))!!9!9"!!9F"11"!1"#C#C"!#C#C#Cr!r8ceZdZdZdZdZdZdZdZdZ	e
dZd	Ze
d
Z
dZdZd
ZdZdZe
dZe
dZdZdZdZdZdZejejddejedeje ddddZ!dZ"dS) 	CWhiteboxzWhitebox testing for _decimalc|tj}tj}ddz}ddz}|5}d|_t	dD]^}tj||}tjdd}||z}	||||z}
||	|
_	ddddS#1swxYwYdS)Nr#$i@Brwri)rrrr+rxr.rr@)rrrr#r$rrKrr\rrs           rtest_bignumzCWhitebox.test_bignum/s)~
V
V
\^^	'qAF1XX
'
'$R,,$T400FGAJJ''!**,  A&&&&
'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'sA6B11B58B5cT|ttjdddS)Nr*r)rjr2rrrs rtest_invalid_constructionz#CWhitebox.test_invalid_construction@s$)QY599999r!ctj}tj}tj}tj}||5|||dddddS#1swxYwYdS)N1e9999999999999999999)rrrr.rrj)rrrr.rs     rtest_c_input_restrictionz"CWhitebox.test_c_input_restrictionCs)-)~
\''))
$
$	7	7.5
7
7
7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7sA))A-0A-ctj}tj}|}d|_d|_d|_t|_d|_	d|_
ttD]}d|j|<d|j
|<d|j|<d|j
|<|}d}|||dS)Nrr:rrTaQContext(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow], traps=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow]))rr<rtrnr+r]rXrr,rrar9rRr-rr@)rr<rtrr,rrs       rtest_c_context_reprzCWhitebox.test_c_context_reprNs))!!$

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

aj!*---

alAL111

aoq777

amQ]333

aoq777

a'):;;;

a'):;;;

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

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

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

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

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

		AAGAJJ!!		AOOA	

GMMOO	 	 DAqQX..///

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


()))	

& 01222	



GLLNN .~qw777	

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



!1#91=

q4a6F


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

&&yyy11!

"&yyy11%

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







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




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




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

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

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

Z\\'

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

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

f22:>>????AAAAAAAAa4	6	6C
"
-
-
-
-
:
:
:58AXX111K%(CK	"MM,,s%(/:<<<
=
=
=%5CK	""Lr!cttttttnt	dadSr)r6rrARITHrr-rr!rsetUpModuler6s3GGGGGG)uu/B9/M/MHHHr!cNtr*tttttttst	jdtttj	durtddS)Nz*C tests skipped: no module named _decimal.rzGInternal error: unbalanced number of changes to sys.modules['decimal'].)rr3ORIGINAL_CONTEXTrwarningswarnUserWarningr!rr2rrr!rtearDownModuler<
s+!,,'*
+
+
+LL!!$%%%#
B!	#	#	#s{9555344	465r!c`|a|a|atjt
|rdnddt
gdS)z Execute the tests.

    Runs all arithmetic tests if arith is True or if the "decimal" resource
    is enabled in regrtest.py
    rrF)	verbosityexitargvN)r5r#r0rmainrarithverbose
todo_testsdebugs    rtestrGs=
EJEM(7&9aaXJWWWWWWr!z:test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]z--debugz-d
store_truez2shows the test number and context before each test)actionhelpz--skipz-sz%skip over 90% of the arithmetic tests)rCrDrB)NNNN)rarr%rr	r9r0rnrr*rtest.supportrrrrrrr	r
rrtest.support.import_helperr
rrr.rr>rqrrrr!
cfractionsr2
pfractionsr
skipUnlessrequires_cdecimalrrrRrr2rrrrrrrrrtr9r(rrrrrrr/rrr8r6TESTDATADIRrr@r__file__pathdirnamecurdirtestdirseprisdirrr7hasattrEXTRA_FUNCTIONALITYr]rskip_if_extra_functionalityr;rcr'rrrr4r6r8rrrrrr-r5requires_working_threadingr7rIrKrMrrr'r}rrr*r,r.r\r^r`rrrrrrrrrrrrrrr
rrr8r_rr3r6r<r5r-r#r0rGoptparseOptionParserr
add_option
parse_argsoptrskiprFrr!r<module>rcsp"



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



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

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


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




mX%6


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




8,


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



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