a 4dgA"@s ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z mZmZddl mZmZmZmZddlZddlZddlZeddgdZeddgdZejdZeddgdZeejd<eddgdZeejd<eeeeiZeejd<eer"eej !ndeeej !iZ"eerjej#ej$ej%ej&ej'ej(ej)ej*ej+g ndeej#ej$ej%ej&ej'ej(ej)ej*ej+g iZ,d d Z-ej.Z.ej/Z/ej0Z0ej1Z1ej2Z2ej3Z3ej4Z4ej5Z5e.e/e0e1e2e3e4e5gZ6eerendeeiZ7d d Z8d Z9e:dkr,ej;dZ?e<pBej@ZAeAejBe9ejBZCej>DeC aEdZFeGedrzdndZHeIeHdZJeKeHdZLGdddejMZNGdddeNZOGdddeNZPGdddejMZQGdddeQZRGdddeQZSGd d!d!ejMZTGd"d#d#eTZUGd$d%d%eTZVGd&d'd'ejMZWGd(d)d)eWZXGd*d+d+eWZYGd,d-d-ejMZZGd.d/d/eZZ[Gd0d1d1eZZ\d2d3Z]d4d5Z^Gd6d7d7ejMZ_Gd8d9d9e_Z`Gd:d;d;e_ZaGdd?d?ebZcGd@dAdAebZdGdBdCdCejMZeGdDdEdEeeZfGdFdGdGeeZgGdHdIdIejMZhGdJdKdKehZiGdLdMdMehZjGdNdOdOejMZkGdPdQdQekZlGdRdSdSekZmGdTdUdUejMZnGdVdWdWenZoGdXdYdYenZpGdZd[d[ejMZqGd\d]d]eqZrGd^d_d_eqZsGd`dadaejMZtGdbdcdcetZuGdddedeetZvGdfdgdgejMZwGdhdidiewZxGdjdkdkewZyeLGdldmdmejMZzGdndodoejMZ{Gdpdqdqe{Z|Gdrdsdse{Z}GdtduduejMZ~GdvdwdwejMZGdxdydyejMZGdzd{d{ejMZeeIed|Gd}d~d~ejMZeReSeUeVeXeYe[e\e`eaecedefegeiejelemeoepereseuevexeye|e}ee~eeeOePg"ZesredddZnedezededddZe:dkrddlZedZejdddddejddddde\ZZejredddn&ereddeejdn eddddS)N) run_unittest run_doctestis_resource_enabledrequires_IEEE_754requires_docstrings)import_fresh_module TestFailedrun_with_locale cpython_onlydecimalZ_decimal)Zfresh)Zblocked fractionscs,t|||tfddDdS)Nc3s(|] }|vr|n| VqdSN.0sdexpectedr-/usr/local/lib/python3.9/test/test_decimal.py Kz!assert_signals..)getattr assertTrueall)clscontextattrrrrrassert_signalsIs rcCs2|sdS|jdttt|dd}||dS)N r)precroundingtraps)ContextROUND_HALF_EVENdictfromkeysSignals setcontext)mZDefaultTestContextrrrinitbs r*Zdecimaltestdata__main__F DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) IBMTestCasesc&Csx|j|_|j|_dg|_tgd|_|jtkr|jd|jd|jd|jd|jd|jd|jd |jd |j |j |j |j |j d |_d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1%|_ttttttttd2|_|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj d3 |_!d4|_"dS)5N#)Zscbx164Zscbx165Zexpx901Zexpx902Zexpx903Zexpx905Zlnx901Zlnx902Zlnx903Zlnx905Zlogx901Zlogx902Zlogx903Zlogx905Zpowx1183Zpowx1184Zpowx4001Zpowx4002Zpowx4003Zpowx4005Zpowx4008Zpowx4010Zpowx4012Zpowx4014Zpwsx803Zpwsx805Zpowx4302Zpowx4303Zpowx4342Zpowx4343Zpwmx325Zpwmx326)Z precisionr!Z maxexponentZ minexponentclamp logical_and_apply number_classcompare_signal compare_totalcompare_total_mag copy_decimalcopy_abs copy_negate copy_sign divide_intlogical_invert is_canonical is_finite is_infiniteis_nan is_normalis_qnan is_signedis_snan is_subnormalis_zeromax_magmin_mag next_minus next_plus next_toward logical_or normalizeremainder_near same_quantumsqrt to_eng_stringto_integral_valueto_integral_exact to_sci_string logical_xor)%andZapplyclassZ comparesigZ comparetotalZ comparetotmagcopyZcopyabsZ copynegatecopysignZ divideintinvertZ iscanonicalisfiniteZ isinfiniteisnanZisnormalZisqnanZissignedZissnanZ issubnormalZiszeroZmaxmagZminmagZ nextminusZnextplusZ nexttowardorreduceZ remaindernearZ samequantumZ squarerootZtoengZ tointegralZ tointegralxZtoscixor)ZceilingZdownfloorZ half_downZ half_evenZhalf_upZupZ05up) ZclampedZconversion_syntaxZdivision_by_zeroZdivision_impossibleZdivision_undefinedZinexactZinvalid_contextZinvalid_operationZoverflowZroundedZ subnormalZ underflow) r<r=r>r?r@rArBrCrDrErN)#r r#r readcontext ignore_listsetskipped_test_idsCaddchange_precisionchange_rounding_methodchange_max_exponentchange_min_exponent change_clamp ChangeDict NameAdapter ROUND_CEILING ROUND_DOWN ROUND_FLOORROUND_HALF_DOWNr$ ROUND_HALF_UPROUND_UP ROUND_05UP RoundingDictClampedInvalidOperationDivisionByZeroInexactOverflowRounded Subnormal Underflow ErrorNamesLogicalFunctionsselfrrrsetUps  $         ' zIBMTestCases.setUpcCsX|jtkrF|jjdkrF|jd|jd|jd|j|S|j||SdS)N@Ti?i9) r rdMAX_EMAXr`_unsafe_setprec_unsafe_setemax_unsafe_setemincreate_decimalDecimal)rvrrrrread_unlimiteds     zIBMTestCases.read_unlimitedc Cstr tjt|}|D]j}|dddd}z||}Wq|jjy}z&|d|j j d|WYd}~qd}~00qWdn1s0YdS)Nz  z Exception "z" raised on line ) skip_expectedunittestZSkipTestopenreplace eval_liner DecimalExceptionfail __class____name__)rfileflinet exceptionrrr eval_files zIBMTestCases.eval_filecCs|ddkrX|dddkrX|dsX|ddd|dddd}n|dd}|jD]}||dkrpdSqp|sdSd|vr||S||SdS) Nz -> r--z --->:)find startswithsplitstripraeval_directive eval_equation)rrignorerrrr,s(   zIBMTestCases.eval_linecCsjdd|dD\}}|dkr,|j|}n z t|}WntyJYn0|j|dd}||dS)Ncss|]}|VqdSr )rlowerrxrrrr?rz.IBMTestCases.eval_directive..rr!cWsdSr r)argsrrrHrz-IBMTestCases.eval_directive..)rrtint ValueErrorrkget)rrfunctvaluerrrr>s   zIBMTestCases.eval_directivec ststdkrdSjzt|d}|d}|d}trTtd|dd|d}|dd}|d}|d}|dd}Wn t t t fyj j Yn0d d } |jvrdSj||} | d krdStj| }g} d } d} fd d|Dtj D]}djj|<qD]}djj|<q0t|D]&\}}|dddkrrd| } | r| d|} qLn | |}d } | |}| dvrZtrLD]}djj|<z|j|WnR|yYnRtj y(}z d|||fWYd}~nd}~00d||fdjj|<qj|}n|j}| |qL| |}tr| dvrD]}djj|<z || WnR|yYnRtj y}z d|||fWYd}~nd}~00d||fdjj|<qfddtj D}|D]}djj|<z || WnV|ypYnVtj y}z$dt|||fWYd}~nd}~00d||fq@|D]}djj|<qtrtdjz,t|| }| jvrttt |}WnTtj y^}zd||fWYd}~n d}~0td|Yn0!}|j"t#dj"t#d$||d|d|$|d|dt|dS)Ng?rrzTest  )endrrcSs@|dddd}|dddd}|dddd}|S)Nz''Z SingleQuotez""Z DoubleQuote'r")r)valrrr FixQuotes_sz-IBMTestCases.eval_equation..FixQuotesZrescalercsg|]}j|qSr)r}rrrrr orz.IBMTestCases.eval_equation..r)rSrPz Raised %s in %s when %s disabledzDid not raise %s in %scsg|]}|vr|qSrrre)theirexceptionsrrrrzRaised %s in %s; expected %srzRaised %s in %szERROR:keyzIncorrect answer for z -- got zIncorrect flags set in )%TEST_ALLrandomr clear_flagsrrDEBUGprintr TypeErrorAttributeError IndexErrorr rvrcrlrrr'r" enumeratecountEXTENDEDERRORTESTrrrappendOrderedSignalstypestrr~reval getexceptionssortrepr assertEqual)rrZSidesLidrZvalstempans exceptionsrZfnameZvalsZ conglomeratequoterirrerrorrZordered_errorsresultZ myexceptionsr)rrrrKs                 &   zIBMTestCases.eval_equationcsfddtjDS)Ncsg|]}jj|r|qSr)rflagsrrrrrrz.IBMTestCases.getexceptions..)r'r rrrrrszIBMTestCases.getexceptionscCs0|jtkr$|jjdkr$|j|n||j_dSNr)r rdMAX_PRECrrr )rr rrrrfszIBMTestCases.change_precisioncCs ||j_dSr )rr!)rr!rrrrgsz#IBMTestCases.change_rounding_methodcCs0|jtkr$|jjdkr$|j|n||j_dSr)r rdrrrEminrexprrrrisz IBMTestCases.change_min_exponentcCs0|jtkr$|jjdkr$|j|n||j_dSr)r rdrrrEmaxrrrrrhsz IBMTestCases.change_max_exponentcCs ||j_dSr )rr/)rr/rrrrjszIBMTestCases.change_clampN)r __module__ __qualname__rrrrrrrrfrgrirhrjrrrrr-s r-c@seZdZeZdS) CIBMTestCasesNrrrrdr rrrrrsrc@seZdZeZdS)PyIBMTestCasesNrrrPr rrrrrsrc@s|eZdZddZddZddZddZed d Zd d Z d dZ ddZ ddZ e ddZddZddZddZdS)ExplicitConstructionTestcCs|jj}|||ddS)N0r rrrrrrrtest_explicit_emptysz,ExplicitConstructionTest.test_explicit_emptycCs|jj}|t|ddSr )r r assertRaisesrrrrrtest_explicit_from_Nonesz0ExplicitConstructionTest.test_explicit_from_NonecCs|jj}|d}|t|d|d}|t|d|d}|t|d|d}|t|dtdd D]J}d D]@}td d D]0}|d ||}||}|t|t|qqzqrdS)N-45{e 500000123-45rr rr)r rrrrange)rrrnsignrrrrrtest_explicit_from_intsz/ExplicitConstructionTest.test_explicit_from_intcCs|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]*}dD] }|t||d|dqq|}d|j|<|||d|t|ddd|||d|||d|||d|||d|||d|||dWdn1s0YdS)NrNaNr45.34Z45e2z4.5E+3uglyz1.3E4 z1.3E+4z -7.89z-7.89z 3.45679 z3.45679z 1_3.3e4_0z1.33E+41Z1_0_0_01000)rr u z 9.311E+28Txyz1234ryu1 2 3u 1 2 ru  z123z1_2_3) r rrv localcontextrrr"rr)rrrvrZleadtrailcrrrtest_explicit_from_strings8 z2ExplicitConstructionTest.test_explicit_from_stringcCsRddl}|jj}|j}|d}|t||d|t||ddS)Nr9.999999) _testcapir rr#unicode_legacy_stringrrr)rr rrrrrrtest_from_legacy_stringsGs   z1ExplicitConstructionTest.test_from_legacy_stringscCs6|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)Nrrrrr)rrrrrrrrr rrrrrrrrr-4.34913534E-17)rrFInfinity)rrrrrr)rr)rrrrr)rrzwrong!)rrr)rr1)rrr)r)rrrNrr)r)rrrrr)r)r rrrr)r)rrrarr)r rrrrrrrrrrrtest_explicit_from_tuplesQs.z2ExplicitConstructionTest.test_explicit_from_tuplescCs|jj}|ddgdg}|t|d|dgddg}|t|d|gd}|t|d|dgddf}|t|ddS)Nrrrrrrrr rrrr#rrrtest_explicit_from_list|s z0ExplicitConstructionTest.test_explicit_from_listcCs\|jj}|t|dd|t|dd||d|d||d|ddS)NrFrT)r rassertIsboolrrrrrtest_explicit_from_bools z0ExplicitConstructionTest.test_explicit_from_boolcCs|jj}|d}||}|t|d|d}||}|t|d|d}||}|t|d|d}||}|t|ddS) Nrrrrrrrrr%rrrrrrrtest_explicit_from_Decimalsz3ExplicitConstructionTest.test_explicit_from_DecimalcCs2|jj}|d}|t|||t|d||td||td||td|t|tdt|d|t|tdt|d|t|tdt|d|t|td t|d t d D]2}t d t d d}||t||qdS)N皙?90.1000000000000000055511151231257827021181583404541015625naninf-infrr -Infinity-0.0-0{Gz?@?) r rrrrrfloatrAr>rr expovariate)rrrrrrrrtest_explicit_from_floats0      z1ExplicitConstructionTest.test_explicit_from_floatcCs|jj}|jj}|jj}t|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]0}| |}|t|||t||qbd|_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)"Nrrinz457E+2Z456789z4.57E+5z3.14 rrrz -4.35E-17rrz5.00E+8T) lllirlz0E-017z0E-17r-Infr1NaN123r)rrrrZ5678z 1234Z12_34ZNaN12345F)r rrvrzrW getcontextr rrrrrassertIsInstancer"r isinstancerrr)rrrvrzncrZprevdecrrrr$test_explicit_context_create_decimalsv            z=ExplicitConstructionTest.test_explicit_context_create_decimalcCs^|jj}|j}|d}|t|||t|d||td ||td ||td |t|tdt|d|t|tdt|d|t|tdt|d|t|td t|d d |_ t d D]6}t d t dd}||t||q"dS)Nr,z0.1000000000000000055511151231r.r/r0rrr1r2r3dr4r5r6r7)r rr#rrrrrr8rAr>r rrr9)rrrGr:rrrrr'test_explicit_context_create_from_floats0       z@ExplicitConstructionTest.test_explicit_context_create_from_floatcCs>|jj}dddd}|D]\}}|t|||qdS)Nrz 0.0000372z-NaN2400)u1u٠.٠٣٧٢e-٣u-nan౨౪౦౦)r ritemsrr)rr test_valuesinputrrrrtest_unicode_digits3sz,ExplicitConstructionTest.test_unicode_digitsN)rrrrrrr r r r$r&r)r+rr;rHrJrNrrrrrs8 + Yrc@seZdZeZdS)CExplicitConstructionTestNrrrrrrO>srOc@seZdZeZdS)PyExplicitConstructionTestNrrrrrrP@srPc@s<eZdZddZddZddZddZd d Zd d Zd S)ImplicitConstructionTestcCs|jj}|ttdtdS)NzDecimal(5) + Noner rrrrlocalsrrrrtest_implicit_from_NoneFsz0ImplicitConstructionTest.test_implicit_from_NonecCs<|jj}|t|ddd||dd|ddS)NrrZ50l2}rr%rrrrtest_implicit_from_intJsz/ImplicitConstructionTest.test_implicit_from_intcCs|jj}|ttdtdS)NzDecimal(5) + "3"rRrrrrtest_implicit_from_stringRsz2ImplicitConstructionTest.test_implicit_from_stringcCs|jj}|ttdtdS)NzDecimal(5) + 2.2rRrrrrtest_implicit_from_floatVsz1ImplicitConstructionTest.test_implicit_from_floatcCs(|jj}||d|d|ddS)Nrr2rrrrrtest_implicit_from_DecimalZsz3ImplicitConstructionTest.test_implicit_from_Decimalcs*|jj}Gddd}|t||dd|t|d|d|tdd|tdd |td d |td d |tdd|tddgd}|D]r\}t|fddt|fdd|td|ddd|td|dddqdS)Nc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)z,ImplicitConstructionTest.test_rop..EcSs dt|S)Nzdivmod rrotherrrr __divmod__csz7ImplicitConstructionTest.test_rop..E.__divmod__cSs t|dS)Nz rdivmodrZr[rrr __rdivmod__esz8ImplicitConstructionTest.test_rop..E.__rdivmod__cSs dt|S)Nzlt rZr[rrr__lt__gsz3ImplicitConstructionTest.test_rop..E.__lt__cSs dt|S)Nzgt rZr[rrr__gt__isz3ImplicitConstructionTest.test_rop..E.__gt__cSs dt|S)Nzle rZr[rrr__le__ksz3ImplicitConstructionTest.test_rop..E.__le__cSs dt|S)Nzge rZr[rrr__ge__msz3ImplicitConstructionTest.test_rop..E.__ge__cSs dt|S)Nzeq rZr[rrr__eq__osz3ImplicitConstructionTest.test_rop..E.__eq__cSs dt|S)Nzne rZr[rrr__ne__qsz3ImplicitConstructionTest.test_rop..E.__ne__N) rrrr]r^r_r`rarbrcrdrrrrEbsrer!z 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__csdt|SNrrZr[)loprrrrz3ImplicitConstructionTest.test_rop..cst|dSryrZr[)roprrrrzE()z Decimal(10)r10)r rrdivmodrsetattr)rrreZoplistZsymr)rzr{rtest_rop^s(   z!ImplicitConstructionTest.test_ropN) rrrrTrUrVrWrYrrrrrrQCs rQc@seZdZeZdS)CImplicitConstructionTestNrrrrrrsrc@seZdZeZdS)PyImplicitConstructionTestNrrrrrrsrc@s6eZdZddZddZeddddZd d Zd S) FormatTestcCsN|jj}gd}|D] \}}}|t||||q|t|djddS)N))r0E-15z0e-15)rz2.3E-15z2.3e-15)rz2.30E+2z2.30e+2)rz 2.30000E-15z 2.30000e-15)rz1.23456789123456789e40z1.23456789123456789e+40)r1.5z1.5e+0)rz0.15z1.5e-1)rz0.015z1.5e-2)rz0.0000000000015z1.5e-12)rz15.0z1.50e+1)r-15z-1.5e+1)rrz0e+0)r0E10e+1)r0.0z0e-1)r0.000e-2).6erz 0.000000e-9)rrz 0.000000e+6)rr z 9.999999e+0)rz 9.9999999z 1.000000e+1)rz-1.23e5z -1.230000e+5)rz 1.23456789e-3z 1.234568e-3)rrr)rrr)r0E-2r)rz0.00E-8z 0.0000000000)rrr)rz3.2E132)rz3.2E2320)rz3.20E2r)rz3.200E2z320.0)rz3.2E-6z 0.0000032).6fr0.000000)rrr)rrr).0frr)rrr)r 3.141592653)z.1fr3.1)z.4fr3.1416)rr3.141593)z.7fr 3.1415926)z.8frr)z.9frz 3.141592650)grr)rrr)rrr)Grz0E+1)rz0E-5z0.00000)rz0E-6r)rz0E-7z0e-7)rz-0E2z-0e+2).0grr)z.0nrr)z.1grr)z.2grr)z.5grr)z.7grr)z.8grr)z.9grr)z.10grr)rrr0%)rrZ0E0r)rrz0E-1r)rrrr)rrz0E-3z0.0%)rrz0E-4z0.00%).3%r0.000%)r0E10r)rz0E-10r)rz2.34z234.000%)rz1.234567z123.457%).0%1.23z123%)rrr)r-NaN123r)z+gZNaN456z+NaN456)z.3eInfr)z.16frBr1)r-sNaNr)r1.00r)6123 123)z<6rz123 )z>6rr)z^6rz 123 )z=+6rz+ 123)#<10rz NaN#######)rz-4.3z -4.3######)z#<+100.0130z +0.0130###)z#< 10rz 0.0130###)z@>10rBz @-Infinity)z#>5rBr1)z?^5rz?123?)z%^6rz%123%%)z ^6-45.6z-45.6 )z/=10rz -/////45.6)z/=+1045.6z +/////45.6)z/= 10rz /////45.6)z=10r0z -Infinity)z^16r0z-Infinity)z>101.2345z 1.2345)z<10rz 1.2345),Z1234567z 1,234,567)r123456123,456)rZ1234512,345)rrz1,234)rrr)r12r)rrr)rrr)rz-1234567z -1,234,567)r-123456-123,456)z7,rr)z8,r 123,456)08,rz 0,123,456)z+08,rz+123,456)z 08,rr)rrr)z+09,rz +0,123,456)z07,1234.561,234.56)rrr)z09,rz 01,234.56)z010,rz 001,234.56)z011,r 0,001,234.56)z012,rr)z08,.1fz1234.5z01,234.5)r 1.23456789r)z,%z 123.456789z 12,345.6789%)z,erz 1.23456e+5)z,Erz 1.23456E+5)za=-7.0z0.12345zaaaa0.1)z <^+15.20%r/z<<+Infinity%<<<)z>,%Z sNaN1234567z sNaN1234567%)z=10.10%rCz NaN123%rs-020)r rrformatrr __format__)rrrLfmtrrrrrtest_formattings zFormatTest.test_formattingc s8jjzddlm}Wnty4dYn0fdd}dAfdd }d |gd d d }d ||gd d }d |gd dd }d|ddd|gdd }dd|gd ddd }|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 d#|d$|d%d&|d$|d'd&|d$|d(d)|d$|d*d+|d,|d(d-|d,|d*d-|d,|d.d/|d,|d0d1|d,|d2d1|d,|d3d4|d5|d*d6|d5|d.d6|d5|d0d6|d5|d2d7|d5|d3d8|d5|d9d8|d5|d:d;|d5|d<d=|d>|d?d@dS)BNrCHAR_MAXlocale.CHAR_MAX not availablecs"jtkrddd|DS|S)NrcSsg|] }t|qSrchrrrrrr?rzCFormatTest.test_n_format..make_grouping..)r rdjoinZlstrrr make_grouping>sz/FormatTest.test_n_format..make_groupingrcs0jtkr|||S|j||dSdS)N) _localeconv)r rdrroverriderrrrrget_fmtAs z)FormatTest.test_n_format..get_fmt.rrrr decimal_pointgrouping thousands_seprr&rrrris¿zutf-8s´z12.7z12,7z1-2&7i[z 123,456,789Z 123456789z 123 456 789lc}z123456-78-9012-3z.6nz 1.23457e+8z 1,23457e+8z 1&23457e+8rAZ03nrZ04nZ05nZ01234Z06nZ00123490rZ07nz012,345Z08nz 0,012,345Z09nZ010nz 00,012,345i@z1-2345-6z 01-2345-6z 0-01-2345-6Z011nZ012nz 00-01-2345-6Z013nz 000-01-2345-6-1.5Z020nu-0´000´000´000´001¿5)Nr)r rlocaler ImportErrorskipTestdecoder) rrrren_USfr_FRru_RUZcrazyZ dotsep_widerrr test_n_format6sx     zFormatTest.test_n_formatLC_ALLps_AFcCsn|jj}td}td}|dkr:|d|d|dkrT|d|d|t|ddd dS) Nrru٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z 100000000.123ru100٬000٬000٫123)r rr localeconvrrr)rrrrrrr&test_wide_char_separator_decimal_points  z1FormatTest.test_wide_char_separator_decimal_pointcCsPGddd|jj}|d}||jj|j|d}||jj|jdS)Nc@seZdZddZdS)z;FormatTest.test_decimal_from_float_argument_type..AcSst||_dSr )ra_type)rr"rrr__init__szDFormatTest.test_decimal_from_float_argument_type..A.__init__NrrrrrrrrAsrg@E@*)r r from_floatrr)rrr"rrr%test_decimal_from_float_argument_types   z0FormatTest.test_decimal_from_float_argument_typeN)rrrrrr rrrrrrrs  Y rc@seZdZeZdS) CFormatTestNrrrrrrsrc@seZdZeZdS) PyFormatTestNrrrrrrsrc@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)ArithmeticOperatorsTestcCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||7}|||d|d7}|||ddS)N-11.122.2z11.1rz-6.116.1r rrrrrd1d2rrrr test_additionsz%ArithmeticOperatorsTest.test_additioncCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||8}|||d|d8}|||ddS) Nrrz-33.3z33.3rz-16.1rz-38.3rrrrrtest_subtractionsz(ArithmeticOperatorsTest.test_subtractioncCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||9}|||d|d9}|||ddS)N-5rrrz-25z-75rrrrrtest_multiplicationsz+ArithmeticOperatorsTest.test_multiplicationcCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||}|||d|d}|||ddS) Nr2-2.5z-0.4rz-1.25z-0.8z-0.625rrrrr test_divisionsz%ArithmeticOperatorsTest.test_divisioncCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||}|||d|d}|||ddS)N5rrrrrrrrrrtest_floor_division"sz+ArithmeticOperatorsTest.test_floor_divisioncCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||C}|||d|dC}|||d dS) NrrZ25rrZ625rZ16807Z390625rrrrr test_powering>sz%ArithmeticOperatorsTest.test_poweringcCs|jj}|d}|d}||||d||||d|d}|||d|t|t|d|}|||d|t|t|||;}|||d|d;}|||ddSNrrrrrrrrrr test_moduleZsz#ArithmeticOperatorsTest.test_modulecCs|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)r rr}rr)rrrrpqrrrtest_floor_div_modulevs$z-ArithmeticOperatorsTest.test_floor_div_modulecCsT|jj}||d |d||d |d|t|dt|ddS)Nrr)r rrabsrrrrtest_unary_operatorssz,ArithmeticOperatorsTest.test_unary_operatorscCs|jj}|jj}|jj}|d}|d}|d}|d}||f||f||f||f||ff}||f||f||f||f||f||f||ff} tjtjtjtjf} tj tj f} || D]P\} } | | D]>}|| | }|tj urdnd}| ||d ||j | | |qq|}d|j|<|D]R\} } | D]B}|| | }|tj urBdnd}| ||d ||j | | |q$q| D]:\} } | D]*}||tj | | ||tj | | q|qp|| D]&\} } | D]}|||| | qqWdn1s0YdS) NrsNaNrrTFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r)r rrvroperatorltlegtgeeqner'rrr"r)rrrvrrrrrZ qnan_pairsZ snan_pairsZ order_opsZ equality_opsrropZgotrctxrrrtest_nan_comparisonssL".          z,ArithmeticOperatorsTest.test_nan_comparisonscCsH|jj}|d|d}||dd||t|djddS)Nrr-2)r rr9rrrr#rrrtest_copy_signsz&ArithmeticOperatorsTest.test_copy_signN)rrrrrrrrrrrrr rrrrrrs7rc@seZdZeZdS)CArithmeticOperatorsTestNrrrrrrsrc@seZdZeZdS)PyArithmeticOperatorsTestNrrrrrrsrc Cs|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d} |d} | | } |j |j | | } |} | | j|||| j| d| | j||X}| |j|| |j||||j| |d| |j|~Wdn1s0Y|| j|~ Wdn1sF0Y|| |d|| |d|}| |j|||||fD]}||j|qdS)Nrrrr0.333333333333333333333333)r rrvrwryr|rxrDrfinish1rbsynchrowaitrrrdividecompare assertFalser)rrrvrwryr|rxrDrrd3test1test2c2c3c1sigrrrthfunc1s@  ""r c Cs|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d} |d} | | } |} d| _ | | } |}| |j || ||j |dd| |j ||| b}| |j |||j |d|j|<| ||j|dd| |j |~Wdn1s0Y||j |||j|~Wdn1s^0Y|j|j|| |d|| |d || j|| | j |||||fD]}|| j |qdS) NrrZ 1e425000000Tz 1e-425000000rz0.333333333333333333)r rrvrwryr|rxrDrr rrrmultiplyrr"rrrbfinish2r)rrrvrwryr|rxrDrrrrZ thiscontextrrrrrrrthfunc2sH  ""  r%c@seZdZddZdS) ThreadingTestcCs|jj}|jtkr$|jjs$|d|j}|j}|j}d|_d|_d|_t |_ t |_ t |_ tj t|fd}tj t|fd}|||j |j t|jD]}||j|q||||_||_||_dS)Nzcompiled without threadingr)targetr)r DefaultContextrd HAVE_THREADSrr rr threadingEventrrr$Threadr r%startrr'rrr)rr*Z save_precZ save_emaxZ save_eminZth1Zth2rrrrtest_threading6s2      zThreadingTest.test_threadingN)rrrr0rrrrr&0sr&c@seZdZeZdS)CThreadingTestNrrrrrr1]sr1c@seZdZeZdS)PyThreadingTestNrrrrrr2`sr2c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)( UsabilityTestcCs|jj}|d}|d}|d}||||||||||||||||||||||||||d|d|||d||d||d||t||tt t |t d}|dd}t |||||dS)Nz23.42rrrgY@@rI)r r assertGreaterassertGreaterEqual assertLessassertLessEqualrassertNotEqualobjectlistmaprrshuffler)rrdadbdcr"brrrtest_comparison_operatorsfs0                z'UsabilityTest.test_comparison_operatorscCs|jj}|d}|d}||d||d||d||d||d||d|d||d||d||d||d||d||d|ddS)N0.253.0@?g?r,0.1)r rr7r8r5r6r9rrrr>r?rrrtest_decimal_float_comparisons             z+UsabilityTest.test_decimal_float_comparisoncCs|jj}|d}|d}||d|d|||d|d||d|||d||d|d|||dt||dt||dt||dtdS)NrCrDy?y?y@y@?) r rr9rr'r_NotImplementedrar`rHrrrtest_decimal_complex_comparisons        z-UsabilityTest.test_decimal_complex_comparisonc Cs|jj}t|jj}|jj}|jj}|jj}tr6tjnd}trDtj nd}trRtj nd}|||d} || || _ | |d|dd| |dd|d| |dd|d t || |d t ||dd| |dd |d t || |d t ||dd ||d |dd ||dd |d d| _ ||dd|dd||dd|dd||dd|dt |||dt ||dd||d|dd||d|dd| |d|dd| |d|dd|||dj|dd|t|dd|d||d|dd||dd|dWdn1s0YdS)Nɚ;6eilʈrrrrl ZmH;5BrZ1ez-1el!0QYrGr!i,ri6lc( Z9er/lg]{lg]r0r.i)r rr ZFractionr#rrvrdrMIN_EMIN MIN_ETINYr r7rrr9r8r6r5rr`r'rJr_) rDrr#rrvemaxeminZetinyrrrr test_decimal_fraction_comparisons@   z.UsabilityTest.test_decimal_fraction_comparisoncCsP|jj}|d}t|}|t|t|t|}|t|t|dS)Nz43.24)r rrWrrdeepcopy)rrrrr@rrrtest_copy_and_deepcopy_methodss   z,UsabilityTest.test_copy_and_deepcopy_methodscsjjjj}fdd}|d|d|d|d|dfdd d D}|d d d dddddddddddddg|D]}|||t|q؈|d|dttd |d |dgd}|D]*}t |}|}||||qP|} d} d | _ || } d!| _ || } d"| _ || } | | | | d#| _ d$d%} || || Wdn1s 0YdS)&Ncs t|}|}|||Sr )hash__hash__r)rr"rArrrhashits z.UsabilityTest.test_hash_method..hashitr4rr1Znan123-NaNcs:g|]2}tddD]"}dD]}|d||qqqS)r!rr)r)rr)rrrrrrsz2UsabilityTest.test_hash_method..)rr!=>?@AB-1r3rz-0.000rz-0E1210.0z -23.00000Z1230E100z -4.5678E50lz 1.634E100z 90.697E100z 188.83E100z 1652.9E100Z 56531E100rrrB)r/rBrz-.0e1z34.02.5z 112390.625z -0.515625z 123456789.1r!r`'iLi) r rrextendrrrrrXrr8r )rrrZrLrZ test_stringsrrrrrZh1Zh2Zh3rrrtest_hash_methodsj         zUsabilityTest.test_hash_methodcCs|jj}|d}|d}d}d}|t||||t||||t||||t||||t||||t||||t||||t|||dS)N15.32z28.5r_r=)r rr'minmax)rrrrl1l2rrrtest_min_and_max_methods8sz&UsabilityTest.test_min_and_max_methodscCs(|jj}||d||ddS)Nrz0.372)r rrrrrrrtest_as_nonzeroLszUsabilityTest.test_as_nonzerocCs4|jj}|d}|t|d|t|ddS)NrrzDecimal('15.32'))r rrrrr#rrrtest_tostring_methodsTsz#UsabilityTest.test_tostring_methodsc Cs6|jj}|d}|d}|t|d|t|d|t|d|t|dgd}|D]\}}|t|||qd|ttj|d|ttj|d|ttj|d |t tj|d |t tj|d gd }|D]\}}|t |||q|ttj |d|ttj |d|ttj |d |t tj |d |t tj |d gd }|D]\}}|t |||q|tt |d|tt |d|tt |d |t t |d |t t |d gd}|D]&\}}} |t t |||| q dS)NZ66rrrjr_gp= ף.@) z123.00rO3.2r)3.54r)3.899r)-2.3r z-11.0irrz-0E3r)89891211712379812736.1l{#'s{Mr[rrCrrB) rz)r|rr}rr~rrrrrr)rl{#'s{M)rzr{rrrrrr)z-3.5)rr)rr)-0.5r)0.5r)rr)rmr)z3.5r))123.456rz0E+4)rr z0E+3)rrz1E+2)rrz1.2E+2)rrr)rrz123.5)rr123.46)rrr)rrz123.4560)z123.455rr)z123.445rz123.44)rrr)rBir)ZsNaN314rZNaN314) r rrrr8mathr_rr OverflowErrorceilroundr) rrrrZ test_pairsrrZ test_triplesrr:rrrtest_tonum_methods\sD   z UsabilityTest.test_tonum_methodscCsX|jj}dD]F}t||}|t|td|}|||drLdndq dS)N)r.Znan1234-nanz-nan2468r7rig) r rr8rrr[rXrr)rrrrrrrrtest_nan_to_floats   zUsabilityTest.test_nan_to_floatcCs,|jj}dD]}||}|tt|q dS)N)snanz-snanZsnan1357z -snan1234)r rrrr8)rrrrrrrtest_snan_to_floatsz UsabilityTest.test_snan_to_floatcCs||jj}|d}||tt||d}||tt||d}||tt||d}||tt|dS)Nrrrr)r rrrrr#rrrtest_eval_round_tripsz"UsabilityTest.test_eval_round_tripcCsD|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)Nrrrrrrr)rrr)rrrrrrrrr)rrrrrrr)rrrr%)rrr)rrr)rrr)rrr)rrNrrr)rrr)rrr)r)rrrrr)rrr)r rras_tupler#rrr test_as_tuples6zUsabilityTest.test_as_tuplec Cs|jj}|t|j|d|t|j|d|t|j|d|t|j|dtddD]}tdD]}dD]}|d |||f}|}|\}}||t||t ||t | |d | t ||d | |||||qvqnqbdS) Nr/r0rZsnan123rr)rfriz%s%dE%drr)r rrras_integer_ratiorrrEtuplerr5rrgcd) rrrZcoeffrrZpqrrrrrtest_as_integer_ratios2         z#UsabilityTest.test_as_integer_ratiocCsd|jj}Gddd|}|d}|d}||}|t||||}|t||t|}|t|||||t|}|t||||||d}||}|t|||||||}|t|||||||jd||}|t|||||d|_||}|t|||||||jddS)Nc@seZdZdZdS)z1UsabilityTest.test_subclassing..MyDecimalN)rrrrrrrr MyDecimal8srrr1.0r) r rr'rrtrWrrVr)rrrrrrrr)rrrtest_subclassing4s<         zUsabilityTest.test_subclassingcCs@|jj}|jj}|}|t|dt||ddSNr)r rrDrrrOrrrDrrrrtest_implicit_contextcs z#UsabilityTest.test_implicit_contextc Cs |jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj } |jj } |jj } || } d| _ d| _ d| _|d} |d}|d}| |t| jddd|| j| || j| | |j||jdd|| j|||jddd ||jddd | |t| jddd || j| || j| | |j||d jdd|| j|| |t| jddd || j| || j| | |j||d jdd|| j|| |t| jddd|j||djdd|| j|| |t| jddd|j||jdd|| j|| |t|jddd|j||djdd|| j|| |t|jddd|j||djdd|| j|| |t|jddd|j||jdd|| j||t|j ddd| |t|j!ddd|| j| || j| || j| || j||| j|| |j||j!dd|| j|d| _"|t|j#dddd| _"| t| j$|ddd}||d|j|| j$|ddd|| j|| t| j%ddd}||d|j|| j%|ddd|| j|| t| j&ddd}||d|j|| j&ddd|| j|| t| j'ddd}||d|j|| j'ddd|| j|| t| j(ddd}||d |j|| j(ddd|| j|| t| j)ddd}||d|j|| j)|ddd|| j|| t| j*ddd}||d|j|| j*|ddd|| j|| t| j+ddd}||d|j|| j+|ddd|| j|| t| j,ddd}||d|j|| j,|ddd|| j|| t| j-ddd}||d |j||j-ddd|| j|| t| j.d!dd}||d"|j|| j.ddd|| j|| t| j/ddd}||d#|j|| j/d$dd|| j|| t| j0d!dd}||d"|j|| j0d$dd|| j|| t| j1d!d%dd}||d&|j|| j1|dd%dd|| j|t2| _3t|d'j4ddd(}||dt5| _3t|d'j4ddd(}||d)t|d'j4t6dd(}||d| |j||dj4dd|| j|t2| _3t|d'j7ddd(}||dt5| _3t|d'j7ddd(}||d)t|d'j7t6dd(}||d| |j||dj7dd|| j|t2| _3t|d'j8ddd(}||dt5| _3t|d'j8ddd(}||d)t|d'j8t6dd(}||d| |j||dj8dd|| j|t6| _3t|d*j9|d+ddd,}||d-t5| _3t|d*j9|d+ddd,}||d.t|d*j9|d+t6dd,}||d-| |j||j9|d/t6dd(|| j|Wdn1 s0Y||x}d|_ d|_ d|_|dd0:} || j d|| j d|| jdWdn1 sz0YWdn1 s0YdS)1Nrr"iZ111Z1e9999z1e-9999rz 1.609487E+48FTz4.709530rz2.045323rrZ1111000z 9.999999E+999rrr +Subnormalz0E-1005rZ Nan891287828Z NaN1287828i rkreZ101rOr|rZ11100z1.11E+9rorZ225rr!rrz1.50001z1e-3)rr!rz1.501z1.500z1e-10)r ):r rr#rrvrwryr|r{rxrzrur rrrrrrrrrr'r@rDlnlog10logbr;rHrIrLr2rOcapitalsrPrr3r0rKrTrtrFrsrGrMrotatescalebshiftfmar$r! to_integralrnrrrQrRquantize)rrr#rrvrwryr|r{rxrzrurrrzrrrrrtest_none_argsls                          0  zUsabilityTest.test_none_argscCs |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||d d|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'i7rOrArIirrz9.123r<rirC)r rrrr3r4r5r0rKrTrtrFrsrGrJrrMrrNrrrrrrrtest_conversions_from_int[ sz'UsabilityTest.test_conversions_from_intN)rrrrBrIrKrUrWrqrwrxryrrrrrrrrrrrrrrr3cs($* Tg -!/ pr3c@seZdZeZdS)CUsabilityTestNrrrrrr src@seZdZeZdS)PyUsabilityTestNrrrrrr src@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)PythonAPItestscCsT|jj}|t|tj|t|tj||dtj| |dtjdSr) r rr issubclassnumbersNumberrZRealrEZassertNotIsInstancerrrrtest_abc s zPythonAPItests.test_abcc CsttjdD]}|jj}tjd}|jtjd<|d}t||}t|}| ||t rt d}t d}t tjd<t||} t tjd<t| } | | t j| | |t tjd<t||} t tjd<t| } | | t j| | |t d }t d }t tjd<t||} t tjd<t| } | | t j| | |t tjd<t||} t tjd<t| } | | t j| | ||tjd<qdS)Nrr z -3.141590000z -3.123e81723)rpickleHIGHEST_PROTOCOLr rsysmodulesdumpsloadsrrdrrErZ DecimalTuple) rprotor savedecimalrrrrrZsxr:Zsyrrr test_pickle sL                           zPythonAPItests.test_picklecCs|jj}tddD]R}d|d}|t||tt|||}|t}||t||q|t t|d|t t|d|t t|d|t t|ddS) N%0.2fY@rrr/r0) r rrrrr8rrnrrrrrrrrr:rrrtest_int s  zPythonAPItests.test_intcCsl|jj}tddD]T}d|d}|t||tt|||}|t}||t ||qdS)Nrrrr) r rrrrr8rrnrtruncrrrr test_trunc s  zPythonAPItests.test_trunccCs||jj}Gddd|}|t|||d}|t|||t|d||jdd}|||||||t d ||t d ||t d  |t|t dt|d |t|t dt|d |t|t d t|d | t |jd tdD]6}tdtdd}||t ||q@dS)Nc@seZdZddZdS)z1PythonAPItests.test_from_float..MyDecimalcSs d|_dS)Nr)r)r_rrrr sz:PythonAPItests.test_from_float..MyDecimal.__init__Nrrrrrr srr,r-rls\&5$3| r.r/r0rrr1abcr4r5r6r7)r rrrrrrrrr8rAr>rrrrr9)rrrr:Zbigintrrrrrtest_from_float s6      zPythonAPItests.test_from_floatcCs|jj}|jj}|jj}|dtd}||tj|d|dt d}||tj|d|d|gd}| ||jtj|t |dd|t |dd |t |d d dS) Nr)r r!z3.1415r)r r"z Decimal('-0')r7z Decimal('1')r!z Decimal('10')) r rr#rxrnrcreate_decimal_from_floatrpirrrr)rrr#rxrrrrtest_create_decimal_from_float s8    z-PythonAPItests.test_create_decimal_from_floatcCs|jj}|jj}|jj}|ddd}||d|d|d||dj|dtd|d|j||d j|d |d |}|d }|j||d td}|||ddS)NiiayrNz7.335z.01z7.34r!z7.33Z10e99999Z1e100000rz 0.871831e800Z1e797)rrr!z 8.71E+799)r rr#rvrrrnr)rrr#rvrrrrrr test_quantize' s( zPythonAPItests.test_quantizecCs|jj}|d}||j|||jd||||d}|t|ttd|t t |dd|t t |dd|t t |dd|t t |d ddS) Nz9.8182731e181273rrrrealrIimag conjugate __complex__) r rrrrrcomplexr8rrr~)rrrrrr test_complex? szPythonAPItests.test_complexcCs,|jj}|jj}|jj}|jj}|jj}|}d|_d|_d|_|}| | |d|d| |d|dd| ||ddd| ||dd| |j ||d|d| |j |||j || | |dj|dd |j ||d j|d| |j |||j || | |dj|d|d |j ||dj|d| |j |||j || |dj|d|d | |dj|dd | |dj|d|d| |dj|d|d| |dj|dd| |dj|dd| |dj|dd| |dj|d|d| |dj|ddd| |j ||dj|d|d| |j |||j || |dj|d|d|d| |dj|d|d|d| |dj|d |d|d | |d!j|d"|d|d#| |d!j|d"|d|d| |dj|d$|d|d%| |j ||dj |d&|d| |j |||j || |d'j!|d(|d|d)| |d*j"|d+|d d,|d-|j t#|dj$|d|j t#|dj%|d|j t#|dj&|d|j t#|dj'|d|j t#|dj(|d|j t#|dj)|d|j t#|dj*|d|j t#|dj+|d||dj,|d| |dj-|d|j t#|dj.|d|j t#|dj/|d|j t#|dj0|d| |d.j1|dd| |dj2|dd| |dj3|dd/| |d0j4|dd0| |d1j5|d2|dd| |d1j6|d2|dd| |d3j7|d2|dd| |d4j8d|dd| |d4j8d|dd| |j ||d4j9d|d| |j |||j || |d4j:d|dd|j t#|j;d5|d|j t#|dj<|d| |d=d|j t#|d$j>|d|j t#|d$j?|d|j t#|dj=d6d|j t#|dj=d6d7Wdn1s0YdS)8Nrrrr)rrrrrrrz0.7r0rz-0.9z9.73z1E+1Z9999'z-2000i0rrOz0.06250.2r)rr\rr.0.01z0.0101rz-0.3z0.02z-0.03r2rkrGZ1e109.99rr9.9z0.9)thirdrr\z7E+1irz0.21Z11r|Z01Z23g?r)r)@r rr#rrvryr rrrrrrrrrrrrHrIrLrrRrQrOrr3rtrFrsrGrJrrMrrr<r=r>r?rArCrBrEr@rDadjustedrradixrr;r2rPr0rKrTrrrrr canonicalr7r8)rrRr#rrvryZxcrrrrtest_named_parametersO s """" z$PythonAPItests.test_named_parametersc Cs|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 )r rrvFloatOperationrwryr|r{rxrzrurrArithmeticErrorrZeroDivisionErrorZConversionSyntaxZDivisionImpossibleZDivisionUndefinedZInvalidContext) rr rrvrrwryr|r{rxrzrurrrtest_exception_hierarchy sBz'PythonAPItests.test_exception_hierarchyN) rrrrrrrrrrrrrrrrrr s3  prc@seZdZeZdS)CPythonAPItestsNrrrrrr src@seZdZeZdS)PyPythonAPItestsNrrrrrr src@seZdZddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%dEdFZ&dGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5dedfZ6dgdhZ7didjZ8dkdlZ9dmdnZ:dodpZ;dqdrZdwdxZ?dydzZ@d{d|ZAd}d~ZBdS)ContextAPItestsc Cs|jj}|jj}|jj}|jj}|}|ddddddddd}||fD]z}||jd||jt||j d||j d||j d||j dt ||dgt ||d|||gqFdS) N)r r!rrrr/rr"r=?Brrrr")r r#rvrwryrr r!r$rrrr/r)rr#rvrwryrrrrrrr s&   zContextAPItests.test_none_argscCsrddl}|j}tD]}|||_||j|q|d}|tt |d||d}|tt |d|dS)Nrrr!z ROUND_UP) r r r# RoundingModesr r!rrrr~)rr rZrndrrrrr  s    z(ContextAPItests.test_from_legacy_stringscCsttjdD]l}|jj}tjd}|jtjd<|}tt||}| |j |j | |j |j | |j |j | |j |j | |j|j| |j|j| |j|j| |j|jtrttfttfgnttfg}|D]\}}ttD]n\} } tt|D]V\} } tt|D]<\} } tdd} tdd}tdd}td}td}|tjd<|j| ||t| ||t|d| t|d| d}t||}|tjd<t|}|||j| |j | | |j || |j || |j t| | |j|| |j|t||dt|d| t||d t|d| q*qqq|tjd<qdS) Nrr rIrrr)r rrr!rr/rr"rr")rrrr r#rrrrrr rrr!rr/rr"rdrrrrr randrangerEr)rrr#rrr combinationsZdumperloaderZrirfiZtir rTrScapsr/rrrrrr sZ           &zContextAPItests.test_picklecCsB|jj}||ddd|ddig||ddddigdS)Nr!r"r7)rr)r rZassertInZ assertNotInrrrrtest_equality_with_other_typesN sz.ContextAPItests.test_equality_with_other_typescCs|jj}|jj}|}|}|t|t||t|jt|j|t|jt|jt|j }t|j }| ||| |j|jdSr ) r rr#rWr9rrr"rbkeysr)rrr#rrZk1Zk2rrr test_copyT s zContextAPItests.test_copycCs"|jj}|}|tt|ddS)NZ_clamp)r r#rrrrr#rrrr test__clampc szContextAPItests.test__clampcCsJ|jj}|jj}|}||d}||d||t|jddSNrrk)r rr#rrrrrrr#rrrrrtest_absn s zContextAPItests.test_abscCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSNrr)r rr#rerrrrrrrtest_addw szContextAPItests.test_addcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rrrrrrrr test_compare szContextAPItests.test_comparecCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r3rrrrrrrtest_compare_signal sz#ContextAPItests.test_compare_signalcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r4rrrrrrrtest_compare_total sz"ContextAPItests.test_compare_totalcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r5rrrrrrrtest_compare_total_mag sz&ContextAPItests.test_compare_total_magcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r7rrrrrrr test_copy_abs s zContextAPItests.test_copy_abscCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r6rrrrrrrtest_copy_decimal s z!ContextAPItests.test_copy_decimalcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r8rrrrrrrtest_copy_negate s z ContextAPItests.test_copy_negatecCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddS)Nrrrr)r rr#r9rrrrrrrr szContextAPItests.test_copy_signcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSNrrrr)r rr#rrrrrrrr test_divide szContextAPItests.test_dividecCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r:rrrrrrrtest_divide_int szContextAPItests.test_divide_intcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r}rrrrrrr test_divmod szContextAPItests.test_divmodcCsJ|jj}|jj}|}||d}||d||t|jddSNr!r|)r rr#rrrrrrrrtest_exp s zContextAPItests.test_expcCs^|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 |d d |t|dj|dd |t|d j|d d dS) Nrrrrr4rrz not a decimalrrgZd;O?)r rr#rrrrrrrrtest_fma s0  zContextAPItests.test_fmacCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r=rrrrrrrtest_is_finite! s zContextAPItests.test_is_finitecCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r>rrrrrrrtest_is_infinite* s z ContextAPItests.test_is_infinitecCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r?rrrrrrr test_is_nan3 s zContextAPItests.test_is_nancCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#r@rrrrrrrtest_is_normal< s zContextAPItests.test_is_normalcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rArrrrrrr test_is_qnanE s zContextAPItests.test_is_qnancCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rBrrrrrrrtest_is_signedN s zContextAPItests.test_is_signedcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rCrrrrrrr test_is_snanW s zContextAPItests.test_is_snancCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rDrrrrrrrtest_is_subnormal` s z!ContextAPItests.test_is_subnormalcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rErrrrrrr test_is_zeroi s zContextAPItests.test_is_zerocCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rrrrrrrrtest_lnr s zContextAPItests.test_lncCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rrrrrrrr test_log10{ s zContextAPItests.test_log10cCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rrrrrrrr test_logb s zContextAPItests.test_logbcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r0rrrrrrrtest_logical_and sz ContextAPItests.test_logical_andcCsJ|jj}|jj}|}||d}||d||t|jddS)Nrr)r rr#r;rrrrrrrtest_logical_invert s z#ContextAPItests.test_logical_invertcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rKrrrrrrrtest_logical_or szContextAPItests.test_logical_orcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rTrrrrrrrtest_logical_xor sz ContextAPItests.test_logical_xorcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rtrrrrrrrtest_max szContextAPItests.test_maxcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rFrrrrrrr test_max_mag szContextAPItests.test_max_magcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rsrrrrrrrtest_min szContextAPItests.test_mincCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rGrrrrrrr test_min_mag szContextAPItests.test_min_magcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#Zminusrrrrrrr test_minus s zContextAPItests.test_minuscCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#r#rrrrrrr test_multiply szContextAPItests.test_multiplycCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rHrrrrrrrtest_next_minus s zContextAPItests.test_next_minuscCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rIrrrrrrrtest_next_plus s zContextAPItests.test_next_pluscCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rJrrrrrrrtest_next_toward sz ContextAPItests.test_next_towardcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rLrrrrrrrtest_normalize s zContextAPItests.test_normalizecCsn|jj}|jj}|}||d||d||d||d||d||ddS)NrOrr)r rr#rr2)rrr#rrrrtest_number_class& s z!ContextAPItests.test_number_classcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#plusrrrrrrr test_plus/ s zContextAPItests.test_pluscCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||||d|d||t|jdd|t|jdd||jddddddS) Nrrrrrrr)modulorAr")r rr#powerrrrrrrr test_power8 szContextAPItests.test_powercCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rrrrrrrrrF szContextAPItests.test_quantizecCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr# remainderrrrrrrrtest_remainderR szContextAPItests.test_remaindercCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rMrrrrrrrtest_remainder_near^ sz#ContextAPItests.test_remainder_nearcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rrrrrrrr test_rotatej szContextAPItests.test_rotatecCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rOrrrrrrr test_sqrtv s zContextAPItests.test_sqrtcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rNrrrrrrrtest_same_quantum sz!ContextAPItests.test_same_quantumcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rrrrrrrr test_scaleb szContextAPItests.test_scalebcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#rrrrrrrr test_shift szContextAPItests.test_shiftcCs|jj}|jj}|}||d|d}||dd||||dd|||d|d||t|jdd|t|jdddSr)r rr#subtractrrrrrrr test_subtract szContextAPItests.test_subtractcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rPrrrrrrrtest_to_eng_string s z"ContextAPItests.test_to_eng_stringcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rSrrrrrrrtest_to_sci_string s z"ContextAPItests.test_to_sci_stringcCsJ|jj}|jj}|}||d}||d||t|jddSr)r rr#rRrrrrrrrtest_to_integral_exact s z&ContextAPItests.test_to_integral_exactcCs\|jj}|jj}|}||d}||d||t|jd|t|jdddS)Nr!r|r)r rr#rQrrrrrrrtest_to_integral_value sz&ContextAPItests.test_to_integral_valueN)Crrrrr r rrrrrrrrr r r r r rrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r2r5rr7r8r9r:r;r<r=r?r@rArBrCrrrrr s =                                                       rc@seZdZeZdS)CContextAPItestsNrrrrrrD srDc@seZdZeZdS)PyContextAPItestsNrrrrrrE srEc@s<eZdZddZddZddZddZd d Zd d Zd S)ContextWithStatementcCsv|jj}|jj}|}|}|}Wdn1s80Y|}|||d|||d|||ddS)N!did not restore context correctlydid not copy the context __enter__ returned wrong context)r rDrr' assertIsNot)rrDrorig_ctx enter_ctxset_ctx final_ctxrrrtest_localcontext s$z&ContextWithStatement.test_localcontextc Cs|jj}|jj}|jj}|jj}|}|dd}||}|}Wdn1sT0Y|}|||d||j|jd|||d|||ddS)Nrr rGzdid not set correct contextrHrI)r r#rDrr'rr rJ) rr#rDrrKnew_ctxrLrMrNrrrtest_localcontextarg s  $z)ContextWithStatement.test_localcontextargc Cs|jj}|jj}|jj}|jj}|jj}|jj}|}||dd}|} || j |j || j |j d| j |<d| _ | |j d| || jd|| j |||h} || j |j || j |j | || j|dd|| j ||| j |~ Wdn1s(0Y|| j |~ Wdn1sZ0Y| |j d||j |||j |||j |||j |dS)NrTz0e-999z3.4e200r)r rr#rDrruryrrrr"rr9rrrr4r) rrr#rDrruryrKrQrrrrrtest_nested_with_statements s>    ""z0ContextWithStatement.test_nested_with_statementsc Cs|jj}|}~|b}~|:}~|}~Wdn1sD0YWdn1sb0YWdn1s0YWdn1s0YdSr r rrrrrrc4rrrtest_with_statements_gc1sz-ContextWithStatement.test_with_statements_gc1c Cs|jj}|}||h}~||>}~||}~~Wdn1sJ0YWdn1sh0YWdn1s0YWdn1s0YdSr rWrXrrrtest_with_statements_gc2*s   z-ContextWithStatement.test_with_statements_gc2c Cs~|jj}|jj}|jj}|jj}|@}~|dd}||||}~||jd~|dd}||~||jd|dd} || ||jd|| ~} ~ || jd~ |dd} || ~ ||jd| } || jd~ Wdn1s0YWdn1s00YWdn1sP0YWdn1sp0YdS)NrrPrrr)r r#rrDr(rr ) rr#rrDr(rZn1rZn2Zn3rZn4rYrrrtest_with_statements_gc36s<       z-ContextWithStatement.test_with_statements_gc3N) rrrrOrRrVrZr[r\rrrrrF s  #  rFc@seZdZeZdS)CContextWithStatementNrrrrrr]Wsr]c@seZdZeZdS)PyContextWithStatementNrrrrrr^Ysr^c@s8eZdZddZddZeddZddZd d Zd S) ContextFlagsc sjj}jj}jj}jj}jj}jj}jj}fdd}|dddtggd} | j |dgf| j |dgf| j |d |d gf| j |d |d gf| j |d |d gfg} |g|g|g|g|g|||||gg} | D]\} } | | | }d d | jD}| D]}| |D]}|| |q| | }t|}|D]}||vrB||qB|jtd dd | jD}|jtd ||dd||f||dd||fq qdS)Ncs2jtkr$d|j|<|j|r.|n ||dSNT)r rdrr"Z _raise_error)rflagrrr raise_erroris    z7ContextFlags.test_flags_irrelevant..raise_errorrr(r)r rrr!r"rz100E-425000010rrz 9.87654321cSsg|]\}}|r|qSrrrkrrrrrrz6ContextFlags.test_flags_irrelevant..rcSsg|]\}}|r|qSrrrcrrrrrz=operation produces different answers depending on flags set: zexpected %s, got %s.z9operation raises different flags depending on flags set: zexpected %s, got %s)r rr#rxrzr|rur{r$r1rOrer#r>rrrKr;rrrr)rrr#rxrzr|rur{rbrZ operationsZflagsetsfnrrr extra_flagsraZnew_ansZexpected_flagsZ new_flagsrrrtest_flags_irrelevant^s\         z"ContextFlags.test_flags_irrelevantcCs2|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) r r#rxrzr9rr"rupdate)rr#rxrzrrrrrtest_flag_comparisonss4  z"ContextFlags.test_flag_comparisonscCs|jj}|jj}|jj}|}||j||||dd||j |||| dd||j ||| d}||j |||d||j ||| d}||j |||d||j |d|j|<|| ||d||j ||| ||j d||j ||| d}||j ||| d}||j |Wdn1s0YdS)Ng@T)r rrrrr"rrrrrrrr)rrrrrrrrrtest_float_operationsD        z!ContextFlags.test_float_operationcs8 jj jj} jj jj}d fdd d dd ddd d d d d td tdd fdd }d fdd }|}||Z} |j||dd||ddd|j<||d||dWdn1s*0YdS)NcsN|t||}|kr*|||n||d|jdSr`)rrrr'rr)r"rArrsignalr)rrrr assert_attrs  z7ContextFlags.test_float_comparison..assert_attrrCrDrFrErr2rrrr1r/r0csdD]} |||qdD]} |||q d|d d|d d|d d|d d|dd|dd|d d|dddd|dd|dd|ddtdd|ddS) N)r_ra)r`rbrcrdrGr,rr.)r8)rrkr)rrlbig_dbig_finf_dinf_f neg_inf_d neg_inf_f neg_zero_d neg_zero_fsmall_dsmall_fzero_dzero_frrdoits z0ContextFlags.test_float_comparison..doitcs|tddg}t|d|j||r\|tddgntddg}|j|dddfv}|j|dddddiv}|jdS) Nrz100.0rr7rlg$@r"rA)rrbrlenrrrsorted)rrkrrA)rrrrrtest_containers8sz;ContextFlags.test_float_comparison..test_containers)rkT)N)N)N)r rr#rrr8rr")rr#rryr|rGrr)rrrlrmrnrorprqrrrsrtrrurvrwrxrtest_float_comparisons6 (     z"ContextFlags.test_float_comparisoncCs|jj}|jj}|jj}|jj}|}||j|||j||d|j|<d|j|<| |j|| |j|dSr`) r rr#rxrrrr" clear_trapsr)rrr#rxrrrrrtest_float_operation_defaultWs  z)ContextFlags.test_float_operation_defaultN) rrrrgrirrjr}rrrrrr_\s B& 5[r_c@seZdZeZdS) CContextFlagsNrrrrrrgsrc@seZdZeZdS)PyContextFlagsNrrrrrrisrc@seZdZddZddZdS)SpecialContextsc Cs4|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj } t ||d||||| g| } |j } |j } d} zzFd|_ |_ ||fD],}|||}| ||||j dqWn*ty}z|j} WYd}~n d}~00W| |_ | |_ || | r0| n | |_ | |_ || | r.| 0dS)Nr"i)r BasicContextExtendedContextrDr(rvrwryr|rurrWr rJr Exceptionr)rrrrDr(rvrwryr|ru savecontextZbasic_context_precZextended_context_precextemplaterrrrrtest_context_templatesosF     z&SpecialContexts.test_context_templatesc Cs@|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}| |j d| |j dt ||d|||g| } |j } d} zzR|} | j } d|_ |} | | j | |||} | | || | j dWn,ty}z|j} WYd}~n d}~00W| |_ || | r<| n| |_ || | r:| 0dS)Nrr"i)r r*rrrDr(rvrwryrr rrWrJrr)rr*rrrDr(rvrwryrZdefault_context_precrrZsaveprecrrrrtest_default_contextsH  z$SpecialContexts.test_default_contextN)rrrrrrrrrrls$rc@seZdZeZdS)CSpecialContextsNrrrrrrsrc@seZdZeZdS)PySpecialContextsNrrrrrrsrc@seZdZddZdS)ContextInputValidationc CsB|jj}|jj}|}dD]F}t||d|t||d|tt||d|t t||dqt|dd|t|dd|tt|dd|t t|dd|t t|d d|t t|d d |t t|d d |t t|d dd D]>}|tt||d|tt||d |t t||gdq|t t|dd|t t|dg|t t|di|t t|dddidD]}|t |j |q|t t|d |t t|d |jt |dd|jt |dd|jt|d d|jt|dd|jt |dgd|jt |dgd|jt |dd|jt |dddS)Nr rrrrrrrrrrr!rr7rr/rrSrIrr"rvr)r rrr!rr/rr"rr/rrrQr"rr)rr) r r#r*rWr~rrrrrrKeyError __delattr__)rr#r*rrrrrtest_invalid_contextsL   z+ContextInputValidation.test_invalid_contextN)rrrrrrrrrsrc@seZdZeZdS)CContextInputValidationNrrrrrrsrc@seZdZeZdS)PyContextInputValidationNrrrrrrsrc@seZdZddZdS)ContextSubclassingcs|jj}jj}j}j}j}j}j}j }j } Gfddd} } | } dD]} | t | | t | | qh|j t| fiddi| dd} | | jd| | | j|dd |j t| fid d i| tdd } | | jt| | |d d|j t| fiddi| ddd} | | jd| |d|d}| ||d|||||fD]}|| j|qx|j t| fiddi| ddd} | | jd| || j|d|d|jtkr |||fD]}|| j|q|j t| fiddi| d d} | | jd | d}| | |d|j t| fiddi| ddd } | | jd| |d}| t|d!|j t| fid"d i| ||gd#} ||fD]}|| j|q| t!D]}|"| j|q|j t| fid$d i| ||gd%} ||fD]}|| j#|qB| $t!D]}|"| j#|qjdS)&NcseZdZdfdd ZdS)z>ContextSubclassing.test_context_subclassing..MyContextNc s||dur||_|dur&||_|dur4||_|durB||_|durP||_|dur^||_durttrfddt D|_ durttrfddt D|_ dS)Ncsi|]}||vqSrrrrrrr &rz[ContextSubclassing.test_context_subclassing..MyContext.__init__..csi|]}||vqSrrrrrrr*r) rr r!rrrr/rFr;rrr") rr r!rrrr/rr"r#r rr"rrs*   zGContextSubclassing.test_context_subclassing..MyContext.__init__)NNNNNNNNrrrrr MyContextsrr r!rrrr/rr"r rrrPZ9e2rr!XYZ)r!r rrrr)rr z1e-99z 2.234e-2000rr)rr Z1e99z 2.234e2000rrZ1E222z1e+222r/rc)r/rz!1.000000000000000000000000000E+99rrr"r)%r rr#rurwrxryrzr{r|rvrrrrr rrrnr!r1rrerrrrdrrrSr/rrrrr"r~)rrrurwrxryrzr{r|rvrrrrrrkrrrtest_context_subclassings|            z+ContextSubclassing.test_context_subclassingN)rrrrrrrrrsrc@seZdZeZdS)CContextSubclassingNrrrrrrqsrc@seZdZeZdS)PyContextSubclassingNrrrrrrssrc@s$eZdZddZddZddZdS)CheckAttributescCs|tjtj|tjtj|tjtj|tjtj|tjdupVtjdu|tjdupptjdu|tj tj |t tt tdS)NTF) rrdrrrrPrQrr+ __version__dirrrrrtest_module_attributesysz&CheckAttributes.test_module_attributescCsJddttD}ddttD}|t|t|tdS)NcSs"g|]}d|vs|ds|qS__rrrrrrrrz;CheckAttributes.test_context_attributes..cSs"g|]}d|vs|ds|qSrrrrrrrr)rrdr#rrrbrrrrrrtest_context_attributessz'CheckAttributes.test_context_attributescCsNddttdD}ddttdD}|t|t|tdS)NcSs"g|]}d|vs|ds|qSrrrrrrrrz;CheckAttributes.test_decimal_attributes..rcSs"g|]}d|vs|ds|qSrrrrrrrr)rrdrrrbrrrrtest_decimal_attributessz'CheckAttributes.test_decimal_attributesN)rrrrrrrrrrrvsrc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)CoveragecCsH|jj}||dd||dd||dddS)NZ 1234e9999i'r.rr/)r rrrrrrr test_adjustedszCoverage.test_adjustedcCsL|jj}|jj}|d}||d|}||d}||ddS)Nr)r rrDrr)rrrDrrrrrtest_canonicals  zCoverage.test_canonicalcCsp|jj}d|_d|_d|_t|_d|_d|_ t |jD]}d|j |<d|j |<q:| }d}|||dS)Nrr(rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))r r*rWr rrrpr!rr/rrr"__repr__r)rrrrrrrrtest_context_reprs   zCoverage.test_context_reprcCsH|jj}|jj}|}d|_d|_d|_|t|dd||ddd||ddd ||dd d||d |d dd| |d d d d|t |dd d d ||d d| |d  d| |d d||dd||dd||dd ||dd||d d||ddd||dd||d|d||d|d||dd||d d||dd d||dd d||dd||d||d||d||d||d||d||dWdn1s0Y|j}d|_d d!}|| }|}||||}|||| |d}|||Wdn1s:0YdS)"Nrrz-10r!7rr|rrrz1.2rrTz1.01rFZ20Z580rrrz2E+1z-1E+1z+Normalrkz1.12345rrrroii)!r rrr rrrrrr'r?powrr@rDrrrr;rHrIrLr2rRrr<r=rCrBrEr7r8r9)rrrrrrrrrrrs^ 2   zCoverage.test_implicit_contextcCs|jj}|jj}|jj}|jj}|}t|dd\}}|||d|||dt|dd\}}||o|d|j |<t|dd\}}||o|d|j |<| t|d|d\}}||o|||j || t|dd \}}|| o2|||j || t|d d \}}||ot|||j |d|j |<| t|d d \}}|| o|||j |o|j |Wdn1s0YdS) NZ 10912837129rZ10901935Z194rrFr/rr ) r rrrvrwr}rrr?r"rrr>)rrrrvrwrrr:rrrr sB    zCoverage.test_divmodcCs|jj}|jj}|jj}|jj}|}d|_|||dd|d||j |d|_d|_ d|_ |d|j |<||d|d |d ||j |Wdn1s0YdS) NrrrIrrrFrorr/) r rrryrzr rrrrrrr")rrrryrzrrrrr56s  zCoverage.test_powercCs~|jj}|jj}|jj}|L}d|_d|_d|_d|j|<|d|d}| | Wdn1sp0YdS)NrrFrZ1e1) r rrrvr rrr"rrr?rrrrvrrrrrrJs zCoverage.test_quantizecCs>|jj}|jj}|}||dd||ddS)Nrr!)r rrDrrrrrr test_radixWs zCoverage.test_radixcCs0|jj}dD]}|t|d|dtq dS)N)rhrkrnrqr^rtrvrxrr)r rr'rrJ)rrrrrrr_szCoverage.test_ropcCs|jj}|jj}|}d|_|t|dd|t|dd|t|ddd|t|d d d |t|d d d |t|djd|t|djddWdn1s0YdS)Nr=rr|z9.99e-5rrrz1.23457rr!z 1.2345000000r\z0E+10rrr) r rrr rr __round__rr)rrrrrrr test_roundfszCoverage.test_roundcCs |j}|t|jdgdS)Nrr)r r#rrr)rrrrrtest_create_decimalws zCoverage.test_create_decimalcCst|jj}|jj}|J}d|_|dddd}|t|d||dWdn1sf0YdS)Nriir!iSrr)r rrr rrrrrrrrrrrr{szCoverage.test_intcCsl|jj}|}d|_dd }||}||| ||}||| ||d}||| dS)Nroiir)r r#r r7rr8r9)rr#rrrrrrrs    zCoverage.test_copyN)rrrrrrrrr5rrrrrrrrrrrrs Q)  rc@seZdZeZdS) CCoverageNrrrrrrsrc@seZdZeZdS) PyCoverageNrrrrrrsrc@seZdZddZdS)PyFunctionalitycCs>tj}tj}gd}|D] \}}}|t||||qdS)N) )z.0erz1e+0)z#.0erz1.e+0)rrr)z#.0fr1.)r1.1r)z#grr)rrr)z#.0grr)rrz100%)z#.0%rz100.%)rrrrr)rrrrLrrrrrrtest_py_alternate_formattings  z,PyFunctionality.test_py_alternate_formattingN)rrrrrrrrrsrc@s4eZdZddZddZddZddZd d Zd S) PyWhiteboxcCstj}tj}|}d|_|d|d}|||d|d|d}|||d|d|d}|d|d }|||d |d |d }|d d |d }d|_|d|d}d|_|dd|d}Wdn1s0YdS)Nrirz 0.00390625z-0.6z 0.0012885819Z256e7lo z-0.0625rZ152587890625e7ric rZ 152587890625riB)rrrr rrrrrtest_py_exact_powers"zPyWhitebox.test_py_exact_powercs:tj}tj}tj}|}tddttD|_|||d|d|d|dd4fdd }|j j j j j j |d|d d |d d |d d |d d |dd |dd |dd |dd |d|dd |d|d|d|dd |dd |d|d|d|dd |dd |dd |d|d d |d!d |d"d |d#d |d$d |d%|d&d |d'd |d(|d)|d*d |d+d |d,d |d-|d.d |d/d |d0d |d1|d2|d3dS)5Ncss|]}|dfVqdS)rNrrrrrrrz=PyWhitebox.test_py_immutability_operations..z-25e55z33e+33Fcs|rvtd|djjjjjjjjjjjjn@td|djjjjjjdS)Nzd1.z(d2)z())rr_sign_int_exp)Z operationZuseOtherb1b2rrrrr checkSameDecsz@PyWhitebox.test_py_immutability_operations..checkSameDec__abs__rgTr]rcrdrar_rbr` __float__rurY__int__ __trunc__rsrm__neg____bool____pos__rwrhr^rrvrtrnrxrk__str__rjrprrrrtrsrLrrMrNrOrPr)F) rrr*r(rWr%rr"rrrr)rrr*r(rrrrrtest_py_immutability_operationsst                           z*PyWhitebox.test_py_immutability_operationscCs>tj}|d}||}|t|d|t|t|dS)Nrr)rrrrr9rr*rrrtest_py_decimal_ids zPyWhitebox.test_py_decimal_idcCsTtj}tj}|.}|ddt}||Wdn1sF0YdS)Nrr)rrrZ_rescalerrrr?rrrrtest_py_rescale's zPyWhitebox.test_py_rescalecCs tj}|t|djdtdS)Nz3.1234r)rrrrZ_roundrrrrrrtest_py__round0szPyWhitebox.test_py__roundN)rrrrrrrrrrrrrs O rc@s0eZdZeddZeddZeddZdS)CFunctionalitycCstj}tj}tj}tj}dd}||}||jd||jd||jd|||||}||jd||jd||jd|||||}||jd ||jd ||jd |||| t |d | t |d | t |ddS)NcSs.||jdt||dgt||dgdS)Nrr"r)rr/r)rrrrr assert_restAsz7CFunctionality.test_c_ieee_context..assert_restr`ir`rSrU"iir@ri) rd IEEEContext DECIMAL32 DECIMAL64 DECIMAL128rr rrrrr)rrrrrrrrrrtest_c_ieee_context9s.   z"CFunctionality.test_c_ieee_contextcCs:tj}|tjtjd}||jtj||jtjdS)Nr)rdr#r, DecRoundedr_flags_trapsrrrrtest_c_context]szCFunctionality.test_c_contextcCstjtjtjtjtjtjtjtjtj tj tj tj tj tjtjf}|tjd|tjd|tjd|tjdt|D]\}}||d|>q|tjtjtjBtjBtjBtjBtj Btj B|tjtjtjB|tjtjtj BtjBdS)Nrrhir)rdr,DecConversionSyntaxDecDivisionByZeroDecDivisionImpossibleDecDivisionUndefined DecFpuError DecInexactDecInvalidContextDecInvalidOperationDecMallocErrorDecFloatOperation DecOverflowr DecSubnormal DecUnderflowrrrrZIEEE_CONTEXT_MAX_BITSrDecIEEEInvalidOperationZ DecErrorsZDecTraps)rcondrrrrrtest_constantsesH     zCFunctionality.test_constantsN)rrrrequires_extra_functionalityrrrrrrrr6s  # rc@seZdZddZddZddZddZd d Zd d Ze d dZ ddZ e ddZ ddZ ddZddZddZddZe ddZe dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zeejd+d,d-d.Zd/S)0 CWhiteboxc Cstj}tj}dd}dd}|`}d|_tdD]@}t||}tdd}||} ||||} || | q2Wdn1s0YdS)Nr!#$i@Brri)rdrrr rrrr) rrrrrrrr"rArrrrr test_bignums   zCWhitebox.test_bignumcCs|ttjdddS)Nrr)rrrdrrrrrtest_invalid_constructionsz#CWhitebox.test_invalid_constructioncCsTtj}tj}tj}tj}|||||dWdn1sF0YdS)NZ1e9999999999999999999)rdrrvr#rr)rrrvr#rrrrtest_c_input_restrictions z"CWhitebox.test_c_input_restrictioncCstj}tj}|}d|_d|_d|_t|_d|_ d|_ t tD]}d|j |<d|j |<q@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]))rdr*rrWr rrrpr!rr/rrr"rr)rr*rrrrrrrrtest_c_context_reprs"     zCWhitebox.test_c_context_reprc Cstj}tj}tj}tj}tj}tj}tj}tjdk}|} | t | j j dd| t | j j dd| t| j j|| t| j j|| tt| ddg| tt| ddg| t t| dddi| t t| dddi| j } | |=d | d <| t t| d| | t t| d| |r d nd } |r.d nd} dD]} | tt| | | q6| tt| d| |j t|| d|j t|| d|j t|| d|j t|| dd|j t|| dd|j t|| dd|j t|| dd|j t|| dddD]j} | tt| | | d| tt| | | dtjdkr| tt| | | | tt| | | dqtjdkr| tt| d| d| tt| d| d| tt| d| dtjdkrF| tt| dd| tt| dd| tt| dd| tt| dd| tt| dd| tt| dddD]j} | tt| | d| tt| | d| tt| | gd |rJ| tt| | d!| tt| | d"qJ| ttd#t| ttd$t|}| t|d%||dS)&Nri!rrrr"rriprr?r>lNZoiʚ;rrrPrT)rrrr)r rrrr/win32rrri?ri9rrzwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr)rdr#rvryrrrDr(rrrr __setitem__r"r __delitem__rr~rWrrplatformrexecrS)rr#rvryrrrDr(HAVE_CONFIG_64rrint_maxZ gt_max_emaxrZ saved_contextrrrtest_c_context_errorss      zCWhitebox.test_c_context_errorscCs|tjtj|tjtj|tjtj|tjtj|tjtj|tjtj|tj tj |tj tj dSr ) r'rdrrrrnrmrorqrpr$rsrrrrtest_rounding_strings_interned/sz(CWhitebox.test_rounding_strings_internedc Cstj}tj}tj}tj}tj}tj}tjdk}|}|r_allcrrrr)rrrrrrrr)rdr#rvryrrDr(rrrr~rrrr) rr#rvryrrDr(r rr rrrrtest_c_context_errors_extra:s:    z%CWhitebox.test_c_context_errors_extracCstj}tj}tj}tj}tj}tj}|}d|_t |_ d|_ d|_ d|_ d|_||jd||j t ||j d||j d||j d||jd||d||dtjdkr|d |d |d ||jd ||j d ||j d dS) Nri iHrri'i rrLrM)rdr*rur|rxrzr{rWr rqr!rrrr/rZEtinyZEtoprrrr)rr*rur|rxrzr{rrrrtest_c_valid_contextes8    zCWhitebox.test_c_valid_contextcCs4tj}|}||jdd|_||jddS)Nrr)rdr*rWrr )rr*rrrrtest_c_valid_context_extras z$CWhitebox.test_c_valid_context_extracCstj}tj}tj}tj}tj}tjdkr,dnd}|}d|j|<|||dj | d|||dj ||||dj t |d|tj|dj t |d |t |dj | d|t |dj |dWdn1s0YdS) Nrr?r>Trrrr) rdrrvrrrQrr"rrrr)rrrvrrrQr rrrr test_c_rounds4   zCWhitebox.test_c_roundcCstj}tjdk}|t|djdgd|t|djdd|t|djg|t|djd|rndnd}|t|djd |dS) Nrrz=10.10rz<>=10.10r?r>rz=%d.1)rdrrrrrr)rrr maxsizerrr test_c_formats  zCWhitebox.test_c_formatcCsftj}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|j}|dt }|||d|d t }|||dd|j |<|||dj t Wdn1sX0YdS)Nr!r|rz99999999999999999999999999.9Z100000000000000000000000000Tz999.9) rdrrxrrrrrrQrRrrr")rrrxrrrrrrtest_c_integrals. zCWhitebox.test_c_integralc CsTtj}tj}tj}tj}tj}||dd|t t |ddd|t |dj dd|t |dj d dd|t |d j |d g|t |d j |d ||t |d j |d d |t |d j |d td |T}||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 ddWdn1sF0YdS)Nz9.99e10z99.9E+9rrrrrrrrz 1e-100000r!rr4rZ200Tri)rdrrvrwrDrrrPrrrr2rNrrrr~r9rr<r}rrr"r]rrrr )rrrvrwrDrrrrr test_c_funcss\    zCWhitebox.test_c_funcscCstj}tj}|d}dD]0}t||}|jt|dd|jt|dddqdD]0}t||}|jt|dd|jt|dddqN|jt|jdgd|jt|jigd|t|jgg|jt|jdgd|jt|jigd|t|jgg|jt|jdgd|jt|jigd|t|jgg|jt|j dddd|jt|j ddddd|jt|j dgdd|jt|j dgdd |t|j dgg|}|jt|j dddd |jt|j dddd |jt|j dddd dS) NZ 10001111111) rr@rDrrrr;rHrIrLr2rOrPrr) rr3r0rKrtrFrsrGrMrrrrrrr)mod) rdrr#rrrrrQrRrrr4)rrr#rrfuncrrrrtest_va_args_exceptionss:  z!CWhitebox.test_va_args_exceptionscCsL|tjjtjtjBtjBtjBtjB|tj jtjtjBtjBdSr ) rrdrrrrrrr,r*rrrrtest_c_context_templates@sz"CWhitebox.test_c_context_templatesc&s"tj}tj}tj}tj}tj}tj}tj}tj}tj } tj } tj } tj } tj } tj}fdd}|}||jv||jD]}d|j|<q|jD]}|q||jD]\}}|qƈ|j||jdd|jdddt|jjdddt|jt|jt|j}t|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}tt1t}t2|D]V}t2|D]D}t3D]6}t45t1t|}t45t1t|}t46dd}t46d d }t46d d}t46d d } t46d d }!t46d d }"||||||!| t7|t7|d }|j8||j9||j:||j;||j<|!|j=| d }#|D]}$|#||$O}#qj|j"|#d }#|D]}$|#||$O}#q|j#|#qqvqh|D](}%|%|_"|j"|@|||jq|D](}%|%|_#|j#|@|||jqdS) Ncs4|D]*}||kr ||q||qdSr )rr)rkZ signal_dictrrrrassertIsExclusivelySetasz.assertIsExclusivelySetTrrrrroirrr)>rdr#r*rvrrwryr{r|rzrxrur,rrrWrr"r~rvaluesrKrrrr'rrrrzr getsizeofrrrrrrrrrrrrrrrrrrrrrsamplerr;r r!rrrr/)&rr#r*rvrrwryr{r|rzrxrur,rrrrrdrrrZ IntSignalsZIntCondZlimr:rrrr"r rTrSr/rZcrrrrrrrtest_c_signal_dictLs                       zCWhitebox.test_c_signal_dictcstjzddlm}Wnty2|dYn0dd}dfdd }d |gd d d }d |gd d d }d|gd dd }|dkr|t|d|d|t|d|d|t|d|ddS)NrrrcSsddd|DS)NrcSsg|] }t|qSrrrrrrrrzJCWhitebox.test_invalid_override..make_grouping..)rrrrrrsz6CWhitebox.test_invalid_override..make_groupingrcs|||Sr )rrr]rrrsz0CWhitebox.test_invalid_override..get_fmtr)rrrZxxxxxrrZyyyyyrr)Nr)rdrrrrrrr)rrrrZinvalid_groupingZ invalid_dotZ invalid_seprr]rtest_invalid_overrides2     zCWhitebox.test_invalid_overridecCstj}tj}tj}|}d|j|<dtj}||||dtj d}||||dtj}||||dtj d}||||Wdn1s0YdS)NTz0e%drz1e%d)rdrrrvr"rrrrrrrtest_exact_conversions   zCWhitebox.test_exact_conversioncCstj}tj}tj}tj}tj}|}d|j|<d|j|<d|j|<ddtjf}| t | |d| |||ddtjf}| ||j || |||ddtj df}| t | |d| |||ddtj df}| ||j || |||ddtjdf}| t |j || t ||ddtj df}| t |j || t ||d}| t ||d d }| t ||d d }| t ||d Wdn1s0YdS) NTrrz -0E+999999)rrrz -0E-1000007rrr)rrr)rrrz-sNaN1)rdrrrvryr|r"rrrrrrr)rrrrvryr|rrrrrtest_from_tuplesB      zCWhitebox.test_from_tuplecCstj}tjdk}||dd|rZ|dd}|dd}|||dn0|dd}|dd}|||d dS) Nrrr!r<irr)rdrrr5 __sizeof__r)rrr rrrrr test_sizeof?s zCWhitebox.test_sizeofcsztj}Gdddt}Gdddt}GdddtGfdddt}|||fD] }|||d |d qTdS) Nc@seZdZddZddZdS)z.XcSsdSNrrrrrrrRszMCWhitebox.test_internal_use_of_overridden_methods..X.as_integer_ratiocSs|Sr rrrrrrTszDCWhitebox.test_internal_use_of_overridden_methods..X.__abs__NrrrrrrrrrXQsr*c@seZdZddZdS)z.YcSs dgdSNrr4rrrrrrXszDCWhitebox.test_internal_use_of_overridden_methods..Y.__abs__N)rrrrrrrrYWsr,c@seZdZddZdS)z.IcSs dgdSr+rrrrr bit_length\szGCWhitebox.test_internal_use_of_overridden_methods..I.bit_lengthN)rrrr-rrrrI[sr.cs eZdZfddZddZdS)z.ZcsddfSr(rrr.rrr`szMCWhitebox.test_internal_use_of_overridden_methods..Z.as_integer_ratiocSs|Sr rrrrrrbszDCWhitebox.test_internal_use_of_overridden_methods..Z.__abs__Nr)rr/rrZ_s r0gfffffFY@)rdrr8rrr)rrr*r,r0rrr/r'test_internal_use_of_overridden_methodsMsz1CWhitebox.test_internal_use_of_overridden_methodsZaixzEAIX: default ulimit: test is flaky because of extreme over-allocationcCs\gd}tj}tj}tj}|tjtjtjd}||||dd||d d||d d||d d||dd d||d  d ||d  d||d  |d |t |ddd||ddd||d dd||dd|dWdn1sN0YdS)N) r;rHrIr0rKrTrJrr)r rrrrrIrr!l 9VrZ40E9z2.0E+5r)rrirz0.0025)rdrr#rrrPrrrrrrrOr})rZMaxContextSkiprr#rZ maxcontextrrrtest_maxcontext_exact_arithjs$  z%CWhitebox.test_maxcontext_exact_arithN)rrrrrrrr r rrrrrrrrrrrr!r"r#r'r1rskipIfrrrr4rrrrrs< e  *& ;,  %0rztest requires C versionc@seZdZddZddZdS) SignatureTestc CsttD]}|drqtt|}tt|}|dksF|dksFt|rt|}t|}t|j }dd|j D}|j ||d|ddd|j D}d d|j D} |d kr|j || d |dqdS) Nrrr#cSsg|]}|ds|qS)rrrrrrrs z5SignatureTest.test_inspect_module..parameter name mismatch in %smsgcSsg|] }|jqSrkindrrrrrrcSs$g|]}|dds|djqS)rrr)rr;rrrrrsr(parameter kind mismatch in %s)rrrrrdinspect isfunction signaturer; parametersrrrrK) rrp_funcc_funcp_sigc_sigc_namesp_namesc_kindp_kindrrrtest_inspect_modules*      z!SignatureTest.test_inspect_modulecstjjtjjttdtdtdtdtdtdtdtdtdtdddtjtdttdtdtdtdtdtdtdddtjtd ifdddd fd d }|d |d dS)Nrrr7)r\rrrrr"rArrr3numrr!r) r\rr"rArrr3rJrr!rcspg}i}|jD]T\}}|dkr$q|jkrB|||q|jkr^||||<qtdq||fS)Nrzunexpected parameter kind)r@rKr;rr)modulerrkwargsnameZparam)POSPOS_KWDpdictrrmkargss    z0SignatureTest.test_inspect_types..mkargscSs(|dkr dS|dkrdS|dkr$dS|S)Nrr"rrArrr)rrrrtrs   z,SignatureTest.test_inspect_types..trc stt|}tt|}t|D]}|dr.qt||}t||}t|rt|}t|}t|j }fdd|j D} j | |d|ddd|j D} dd|j D}  | d | d|d krj | d d| d dd |dnj t| t| d |dt|\} } zt|d || i| Wn&ty~td || | fYn0t|\} } zt|d || i| Wqtytd || | fYq0qdS)Nrcsg|] }|qSrrr)rRrrrrzBSignatureTest.test_inspect_types..doit..r7r8cSsg|] }|jqSrr:rrrrrrcSsg|] }|jqSrr:rrrrrrrrrr<rzinvalid signature for %s: %s %s)rrrdrrr=r>r?r;r@rrrr'rzrr)tyZp_typeZc_typerrArBrCrDrFrErHrGrkwds)rNrOrQrrRrrrysH         z.SignatureTest.test_inspect_types..doitrr#) r=Z_ParameterKindZPOSITIONAL_ONLYZPOSITIONAL_OR_KEYWORDrdrrqrDr)rryr)rNrOrQrPrrRrtest_inspect_typessF   /z SignatureTest.test_inspect_typesN)rrrrIrUrrrrr6sr6rrc Cstttt|dur|ntda|a|dur6t}nttg}t t D]l}d|vsH| dr`qH| d\}}|dur||vrqH|fdd}ttd||ttd||~~~~qHzt||durddlm} tjd} trttjd<tt|| d ttjd<tt|| tjd<Wtr0tttttttsPtd tttjdurtd nNtr~tttttttstd tttjdurtd 0dS) Nr z.decTestrcSs|t|Sr )r directory)rrrrrrOrztest_main..Ztest_r)IGNORE_EXCEPTION_DETAIL)Z optionflagsz*C tests skipped: no module named _decimal.zGInternal error: unbalanced number of changes to sys.modules['decimal'].)r*rdrrrr all_testsrroslistdirrVrrr~rdoctestrWrrrr(ORIGINAL_CONTEXTwarningswarn UserWarningorig_sys_decimalr) arithverbose todo_testsdebugZ test_classesfilenameheadtailZtesterrWrrrr test_main4sX          rhz: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)rarb)rarbrcrd)NNNN)rrYrrr]rrWrrrZ test.supportrrrrrrrr r rr=r,rdrrr`Z cfractionsZ pfractionsr rrDrrr'rurzrxr{r|ryrwrvrrrrrrnrmrorqrpr$rsrr\r*Z TESTDATADIRrargvr__file__pathdirnamecurdirZtestdirseprVisdirrrhasattrZEXTRA_FUNCTIONALITYZ skipUnlessrr5Zskip_if_extra_functionalityZTestCaser-rrrrOrPrQrrrrrrrrr r%r&r1r2r3rrrrrrrDrErFr]r^r_rrrrrrrrrrrrrrrrrrrr6rXinsertrhZoptparseZ OptionParserrZ add_option parse_argsoptrskiprdrrrrs~           eWM)',-/Xm~ P>mU      7