
    /hh9c                    t   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKJrJrJrJr  S SKJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKrS SKrS SKr\R6                  S:X  a  \" S5        \" S	S
/S9r\" S	S
/S9rS SKr\" SS/S9r \\RB                  S	'   \" SS/S9r"\\RB                  S	'   \\ \\"0r#\\RB                  S	'   \RH                  " \S5      r%\\(       a.  \&" \RO                  5       RP                  RS                  5       5      OS\\&" \RO                  5       RP                  RS                  5       5      0r*\\(       ae  \RV                  \RX                  \RZ                  \R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  /	OS\\RV                  \RX                  \RZ                  \R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  /	0r4S r5\Rl                  r6\Rn                  r7\Rp                  r8\Rr                  r9\Rt                  r:\Rv                  r;\Rx                  r<\Rz                  r=\6\7\8\9\:\;\<\=/r>\\(       a  \RO                  5       R                  5       OS\\RO                  5       R                  5       0r?S r@SrA\BS:X  a  \R                  S    rDO\ErD\R                  R                  \D5      =(       d    \R                  rI\I\R                  -   \A-   \R                  -   rK\R                  R                  \K5      (       + qMSrN\O" \S5      (       a  SOSrP\RH                  " \PS5      rQ\R                  " \PS5      rS " S S5      rT " S S5      rU\% " S S\U\R                  5      5       rW " S S\U\R                  5      rX " S  S!5      rY\% " S" S#\Y\R                  5      5       rZ " S$ S%\Y\R                  5      r[ " S& S'5      r\\% " S( S)\\\R                  5      5       r] " S* S+\\\R                  5      r^ " S, S-5      r_\% " S. S/\_\R                  5      5       r` " S0 S1\_\R                  5      raS2 rbS3 rc\R                  " 5        " S4 S55      5       re\% " S6 S7\e\R                  5      5       rf " S8 S9\e\R                  5      rg " S: S;5      rh\% " S< S=\h\R                  5      5       ri " S> S?\h\R                  5      rj " S@ SA5      rk\% " SB SC\k\R                  5      5       rl " SD SE\k\R                  5      rm " SF SG5      rn\% " SH SI\n\R                  5      5       ro " SJ SK\n\R                  5      rp " SL SM5      rq\% " SN SO\q\R                  5      5       rr " SP SQ\q\R                  5      rs " SR SS5      rt\% " ST SU\t\R                  5      5       ru " SV SW\t\R                  5      rv " SX SY5      rw\% " SZ S[\w\R                  5      5       rx " S\ S]\w\R                  5      ry " S^ S_5      rz\% " S` Sa\z\R                  5      5       r{ " Sb Sc\z\R                  5      r| " Sd Se5      r}\% " Sf Sg\}\R                  5      5       r~ " Sh Si\}\R                  5      r\S\% " Sj Sk\R                  5      5       5       r " Sl Sm5      r\% " Sn So\\R                  5      5       r " Sp Sq\\R                  5      r " Sr Ss\R                  5      r " St Su\R                  5      r " Sv Sw\R                  5      r\% " Sx Sy\R                  5      5       r\\% " Sz S{\R                  5      5       5       rS| rS} rS~ rSqSqSqSqSS jr\BS:X  a  S SKr\GR$                  " S5      r\GR)                  SSSSS9  \GR)                  SSSSS9  \GR+                  5       u  rr\GR0                  (       a  \" SSS9  g\(       a  \" SS\\GR2                  S9  g\" SSS9  gg)    N)is_resource_enabledrequires_IEEE_754requires_docstringscheck_disallow_instantiation)
TestFailedrun_with_localecpython_onlydarwin_malloc_err_warning)import_fresh_module)threading_helper)warnings_helperdarwintest_decimaldecimal_decimal)fresh)blocked	fractionsztest requires C versionc                 h   ^^ [        X5      mU R                  [        UU4S jT 5       5      5        g )Nc              3   L   >#    U  H  oT;   a  TU   O	TU   (       + v   M     g 7fN ).0sdexpecteds     :/opt/python-3.13.8/usr/lib/python3.13/test/test_decimal.py	<genexpr>!assert_signals.<locals>.<genexpr>V   s$     FAqH}qtad(:As   !$)getattr
assertTrueall)clscontextattrr   r   s      `@r   assert_signalsr&   T   s$    ANN3FAFFG    c                     U (       d  g U R                  S[        [        R                  [        U    S5      S9nU R                  U5        g )N	   r   )precroundingtraps)ContextROUND_HALF_EVENdictfromkeysSignals
setcontext)mDefaultTestContexts     r   initr5   m   s@    ft}}WQZ/K #  LL#$r'   decimaltestdata__main__F
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildc                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)IBMTestCases   c                 j   U R                   R                  5       U l        U R                   R                  5       U l        S/U l        [        / SQ5      U l        U R                   [        :X  a  U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S	5        U R                  R                  S
5        U R                  U R                  U R                  U R                  U R                  S.U l        0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)_S*S+_S,S-_0 S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_SHSI_SJSK_SLSM_SNSO_ESPSQSRSS.EU l        [         ["        [$        [&        [(        [*        [,        [.        ST.U l        U R                   R2                  U R                   R4                  U R                   R6                  U R                   R4                  U R                   R4                  U R                   R8                  U R                   R4                  U R                   R4                  U R                   R:                  U R                   R<                  U R                   R>                  U R                   R@                  SU.U l!        SVU l"        g )WN#)scbx164scbx165expx901expx902expx903expx905lnx901lnx902lnx903lnx905logx901logx902logx903logx905powx1183powx1184powx4001powx4002powx4003powx4005powx4008powx4010powx4012powx4014pwsx803pwsx805powx4302powx4303powx4342powx4343pwmx325pwmx326)	precisionr+   maxexponentminexponentclampandlogical_andapply_applyclassnumber_class
comparesigcompare_signalcomparetotalcompare_totalcomparetotmagcompare_total_magcopycopy_decimalcopyabscopy_abs
copynegatecopy_negatecopysign	copy_sign	divideint
divide_intinvertlogical_invertiscanonicalis_canonicalisfinite	is_finite
isinfiniteis_infiniteisnanis_nanisnormal	is_normalisqnanis_qnanissigned	is_signedissnanis_snanissubnormalis_subnormaliszerois_zeromaxmagmax_magminmagmin_mag	nextminus
next_minusnextplus	next_plus
nexttowardnext_towardor
logical_orreduce	normalizeremaindernearremainder_nearsamequantumsame_quantum
squarerootsqrttoengto_eng_string
tointegralto_integral_valueto_integral_exactto_sci_stringlogical_xor)tointegralxtoscixor)ceilingdownfloor	half_down	half_evenhalf_upup05up)clampedconversion_syntaxdivision_by_zerodivision_impossibledivision_undefinedinexactinvalid_contextinvalid_operationoverflowrounded	subnormal	underflow)r{   r}   r   r   r   r   r   r   r   r   r   )#r   r-   r$   readcontextignore_listsetskipped_test_idsCaddchange_precisionchange_rounding_methodchange_max_exponentchange_min_exponentchange_clamp
ChangeDictNameAdapterROUND_CEILING
ROUND_DOWNROUND_FLOORROUND_HALF_DOWNr.   ROUND_HALF_UPROUND_UP
ROUND_05UPRoundingDictClampedInvalidOperationDivisionByZeroInexactOverflowRounded	Subnormal	Underflow
ErrorNamesLogicalFunctionsselfs    r   setUpIBMTestCases.setUp   s   ||++-<<//15 !$ "% "!H <<1!!%%i0!!%%i0!!%%j1!!%%j1!!%%j1!!%%j1!!%%i0!!%%i0 *.)>)>(,(C(C+/+C+C+/+C+C%)%6%6	8$1E- $1#H$1#N$1 ))9$1 +?	$1
 ,,?$1 #>$1 &j$1 )$1 '{$1 ($1 %%5$1 *.$1 '{$1 )$1 $H$1  '{!$1" %Y#$1$ '{%$1& %Y'$1( *.)$1* %Y+$1, %Y-$1. %Y/$10 (1$12 '{3$14 )5$16 !7$18 %[9$1: ,,<;$1< *.=$1> )?$1@ $OA$1B ))<C$1D +>$3"/I$1N *7&0'2+:+:)6$,&02 (,||';';151N1N040K0K37<<3P3P26,,2O2O'+||';';/3||/L/L151N1N(,(=(='+||';';)-)?)?)-)?)?A
!1r'   c                 l   U R                   [        :X  a  U R                   R                  S:X  al  U R                  R	                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  U5      $ U R                   R                  X5      $ )N@Ti?i9)	r   r   MAX_EMAXr   _unsafe_setprec_unsafe_setemax_unsafe_setemincreate_decimalDecimal)r   vr$   s      r   read_unlimitedIBMTestCases.read_unlimited  s     <<1!6!6)!C,,Z8,,Z8,,[9##22155<<''33r'   c                    [         (       a  [        R                  e[        USS9 nU H7  nUR	                  SS5      R	                  SS5      n U R                  U5      nM9     S S S 5        g ! U R                  R                   a9  nU R                  SUR                  R                  -   S-   U-   5         S nAM  S nAff = f! , (       d  f       g = f)Nutf-8)encodingz
 
zException "z" raised on line )skip_expectedunittestSkipTestopenreplace	eval_liner   DecimalExceptionfail	__class____name__)r   fileflinet	exceptions         r   	eval_fileIBMTestCases.eval_file(  s    =###$)Q||FB/77bAet,A	  *) ||44 eIImI,?,?,H,HHK^^_ccdde *)s5   (CA- C-C .B;5C;C  C
Cc                    UR                  S5      S:  al  US S S:w  ac  UR                  S5      (       dM  UR                  S5      S   S-   UR                  S5      S   R                  S5      S   -   R                  5       nO"UR                  S5      S   R                  5       nU R                   H  nUR                  U5      S:  d  M    g    U(       d  g SU;   a  U R                  U5      $ U R                  U5      $ )	Nz -> r      --z  --->   :)find
startswithsplitstripr   eval_directiveeval_equation)r   r   ignores      r   r   IBMTestCases.eval_line7  s    66&>Q1Ra5D=f9M9Mq!D(q!''-a0127%'  a &&(A&&Fvvf~" ' AX&&q))%%a((r'   c                     S UR                  S5       5       u  p#US:X  a  U R                  U   nO [        U5      nU R                  R                  US 5      nU" U5        g ! [         a     N2f = f)Nc              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7fr   )r  lower)r   xs     r   r   .IBMTestCases.eval_directive.<locals>.<genexpr>J  s     @<a	))<s   *,r	  r+   c                      g r   r   )argss    r   <lambda>-IBMTestCases.eval_directive.<locals>.<lambda>S  s    $r'   )r  r   int
ValueErrorr   get)r   r   functvalues       r   r  IBMTestCases.eval_directiveI  sp    @1773<@J%%e,EE
 ##E,>@e	  s   A# #
A0/A0c                    [         (       d  [        R                  " 5       S:  a  g U R                  R                  5          UR	                  S5      nUS   R                  5       R	                  5       nUS   n[        (       a  [        SUSS9  US   R                  5       nUSS  nUS   R                  5       R	                  5       nUS   nUSS  nS	 n	X@R                  ;   a  g U R                  R!                  XU5      n
U
S
:X  a  g [#        U R                  U
5      n/ nSnSnU Vs/ s H  oR$                  UR                  5          PM!     nn[&        U R                      H  nSU R                  R(                  U'   M     U H  nSU R                  R(                  U'   M     [+        U5       GH  u  nnUR-                  S5      S-  S:X  a  SU-
  nU(       a
  US-   U-   nM5  UU-   nSnU	" U5      nU
S;   a  [.        (       av  U Hp  nSU R                  R(                  U'    U" U R                  R1                  U5      5        U R3                  SU< SU< 35        SU R                  R(                  U'   Mr     U R                  R1                  U5      nOU R5                  UU R                  5      nUR7                  U5        GM     U	" U5      n[.        (       a  U
S;  a  U HT  nSU R                  R(                  U'    U" U6   U R3                  SU< SU< 35        SU R                  R(                  U'   MV     [8        U R                      Vs/ s H  nUU;   d  M  UPM     nnU H;  nSU R                  R(                  U'    U" U6   U R3                  SU< SU< 35        M=     U H  nSU R                  R(                  U'   M     [        (       a  [        SU R                  5         [=        U" U6 5      nXR>                  ;   a  [=        [A        [C        U5      5      5      nU RE                  5       nURG                  [H        S9  URG                  [H        S9  U RK                  WUSU-   S-   U-   5        U RK                  UUSU-   S-   [=        U5      -   5        g ! [        [        [        4 a    U R                  R                  ef = fs  snf ! U a     GN}[&        U R                      a)  nU R3                  SU< SU< SU< S35         S nAGNS nAff = f! U a     GN[&        U R                      a)  nU R3                  SU< SU< SU< S35         S nAGNAS nAff = fs  snf ! U a     GM  [&        U R                      a2  nU R3                  S[;        U5      < SU< SU< 35         S nAGMQ  S nAff = f! [&        U R                      a$  nU R3                  SU< SU< 35         S nAGNS nAf  [        SU5        e = f)Ng?r  r   zTest  )endr  r  c                     U R                  SS5      R                  SS5      n U R                  SS5      R                  SS5      n U R                  SS5      R                  SS5      n U $ )Nz''SingleQuotez""DoubleQuote'r   ")r   )vals    r   	FixQuotes-IBMTestCases.eval_equation.<locals>.FixQuotesj  s^    ++dM2::4OC++c2&..sB7C++mS199-MCJr'   rescaler   r'  )r   r   zDid not raise z in zRaised z when z	 disabledz; expected r  zERROR:keyzIncorrect answer for z -- got zIncorrect flags set in )&TEST_ALLrandomr$   clear_flagsr  r  DEBUGprintr  	TypeErrorAttributeError
IndexErrorr   r   r   r   r  r    r   r1   r,   	enumeratecountEXTENDEDERRORTESTr   r   r   appendOrderedSignalstypestrr   r  evalgetexceptionssortreprassertEqual)r   r   SidesLidr  valstempans
exceptionsr*  fnamevalsconglomeratequoter  theirexceptionsr  ir)  r   erroreordered_errorsresultmyexceptionss                            r   r  IBMTestCases.eval_equationV  sj   xFMMOd2  "	0GGDMEa &&(A1Bugrs+aDJJLEuHa &&(AA$C12J	 &&&  $$U2Ie,?IJz!??17795zJ .I,-DLLy) /(I,-DLLy) ))FAsyy~!Q&E	+c1C7"S(!#A::$$!045**51M!$,,"="=a"@A !II%&KL45**51 "1 LL//2''4<<8KKN7 *: n.P!P(,-""5)E4L II%CD,-""5) ) *8)E^)EAoI]a)EN^',-""5)E4L II%CD ( (,-""5) ( 5$%	&F---Sf./ ))+d#&014zAFJ	L 	'!+j83|;LL	NW >:6 	0,,///	0$ K,  % ! &t||4 5 II'(!U'4 5 55$  t||, -II !U, - -- _
  t||, 3II#Aw52 3 33  t||$ 	6II5!455	(As   BR &&S"!S?T
U&U&U+*:W  ,STT/TTU#$U#:UU#+V=5V=&V88V= XW66Xc                     [         U R                      Vs/ s H$  oR                  R                  U   (       d  M"  UPM&     sn$ s  snf r   )r1   r   r$   flags)r   rP  s     r   r?  IBMTestCases.getexceptions  s4    "4<<0J0aLL4F4Fq4I0JJJs
   !AAc                     U R                   [        :X  a6  U R                   R                  S:X  a  U R                  R	                  U5        g XR                  l        g Nr   )r   r   MAX_PRECr$   r   r*   )r   r*   s     r   r   IBMTestCases.change_precision  s;    <<1!6!6)!CLL((. $LLr'   c                 $    XR                   l        g r   )r$   r+   )r   r+   s     r   r   #IBMTestCases.change_rounding_method  s     (r'   c                     U R                   [        :X  a6  U R                   R                  S:X  a  U R                  R	                  U5        g XR                  l        g rY  )r   r   rZ  r$   r   Eminr   exps     r   r    IBMTestCases.change_min_exponent  ;    <<1!6!6)!CLL((- #LLr'   c                     U R                   [        :X  a6  U R                   R                  S:X  a  U R                  R	                  U5        g XR                  l        g rY  )r   r   rZ  r$   r   Emaxr`  s     r   r    IBMTestCases.change_max_exponent  rc  r'   c                 $    XR                   l        g r   )r$   ra   )r   ra   s     r   r   IBMTestCases.change_clamp  s    "r'   )	r   r   r   r   r   r$   r   r   r   N)r   
__module____qualname____firstlineno__r   r   r  r   r  r  r?  r   r   r   r   r   __static_attributes__r   r'   r   r:   r:      sE    K1Z4e)$~N@K%
)$
$
#r'   r:   c                   f    \ rS rSrS rS rS rS rS rS r	S r
S	 r\S
 5       rS rS rS rSrg)ExplicitConstructionTesti  c                 j    U R                   R                  nU R                  U" 5       U" S5      5        g )N0r   r   rB  r   r   s     r   test_explicit_empty,ExplicitConstructionTest.test_explicit_empty  s'    ,,&&GCL1r'   c                 ^    U R                   R                  nU R                  [        US 5        g r   )r   r   assertRaisesr4  rr  s     r   test_explicit_from_None0ExplicitConstructionTest.test_explicit_from_None  s#    ,,&&)Wd3r'   c           	         U R                   R                  nU" S5      nU R                  [        U5      S5        U" S5      nU R                  [        U5      S5        U" S5      nU R                  [        U5      S5        U" S5      nU R                  [        U5      S5        [	        SS	5       HV  nS
 HM  n[	        SS5       H:  nUSU-  U-   -  nU" U5      nU R                  [        U5      [        U5      5        M<     MO     MX     g )N-   45{e	500000123-45r   rp      r     r  )r   r   rB  r=  range)r   r   r   nsignr  rN  s          r   test_explicit_from_int/ExplicitConstructionTest.test_explicit_from_int  s    ,,&& BKQ& IQ- CLQ' AJQ% q"Ar1A1q)A
A$$SVSV4 &   r'   c           
         U R                   R                  nU R                   R                  nU R                   R                  nU R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S	5        U R	                  [        U" S
5      5      S5        U R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S5        U R	                  [        U" S5      5      S5        S H3  nS H*  nU R	                  [        U" US-   U-   5      5      S5        M,     M5     U" 5        nSUR                  U'   U R                  X!S5        U R                  [        USSS5        U R                  X!S5        U R                  X!S5        U R                  X!S5        U R                  X!S5        U R                  X!S5        U R                  X!S5        S S S 5        g ! , (       d  f       g = f)Nr   NaNr{  45.3445e2z4.5E+3uglyz1.3E4 
z1.3E+4z  -7.89z-7.89z  3.45679  z3.45679z	1_3.3e4_0z1.33E+411_0_0_01000)r   r"      u    z	9.311E+28Txyz1234r  yu   1 2 3u    1 2 r  u     z12 3z1_2_ 3)	r   r   r   localcontextrB  r=  r,   rv  r4  )r   r   r   r  leadtrailcs          r   test_explicit_from_string2ExplicitConstructionTest.test_explicit_from_string  s4   ,,&&<<88||00 	WR[)51 	WT]+T2 	WW-.8 	WV_-x8 	WV_-u5 	WZ018<WY/0':W]34i@ 	W[12J?WY/0&9 2D6  WTK-?%-G%H!I!,. 7 2
 ^q(,AGG$%.?i&#sC .9JK.9OP .B.H .E .G' ^^s   B'I==
Jc                    U R                   R                  nU" S5      nU R                  [        U5      S5        U" S5      nU R                  [        U5      S5        U" S5      nU R                  [        U5      S5        U" S5      nU R                  [        U5      S5        U" S	5      nU R                  [        U5      S
5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        X" S5      SS45        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        g )Nr   r   r   rp  r  )   r  r   r  r   r  r     r  r  r  	r  r  r  r)   r  r  r  r  r  -4.34913534E-17)r   r   FInfinity)r  r  r  r  r)   r  )   r  r  )        r  r  r  r  r  )r  r  zwrong!)r  r  r  )r  r  1)r  r  r  )r  )r  r  r  Nr  r  )r  )r  r  r)   r  r  )r  )r  
   r  r)   r  r  )r  )r  r  r  ar  r  )r   r   rB  r=  rv  r  r   r   r   s      r   test_explicit_from_tuples2ExplicitConstructionTest.test_explicit_from_tuplesN  s   ,,&& \#Q% ^%Q' *,Q) :<Q!23 \#Q, 	*g/CE 	*g/FH*g/GI*g
OQ/OP 	*g/MO*g/GI*g/HJ 	*g}>*g/IK*g/GI*g/GI*g/HJr'   c                 h   U R                   R                  nU" SS/S/5      nU R                  [        U5      S5        U" S/ SQS/5      nU R                  [        U5      S5        U" / SQ5      nU R                  [        U5      S5        U" S/ SQS45      nU R                  [        U5      S5        g )Nr   rp  r  r  r  r  r  r   r   rB  r=  r  s      r   test_explicit_from_list0ExplicitConstructionTest.test_explicit_from_listy  s    ,,&&QQK Q%Q3S9:Q!239:Q!23Q3S9:Q!23r'   c                 ,   U R                   R                  nU R                  [        U" S5      5      S5        U R                  [        U" S5      5      S5        U R	                  U" S5      U" S5      5        U R	                  U" S5      U" S5      5        g )Nr   Fr  T)r   r   assertIsboolrB  rr  s     r   test_explicit_from_bool0ExplicitConstructionTest.test_explicit_from_bool  so    ,,&&d71:&.d71:&-4
3r'   c                    U R                   R                  nU" S5      nU" U5      nU R                  [        U5      S5        U" S5      nU" U5      nU R                  [        U5      S5        U" S5      nU" U5      nU R                  [        U5      S5        U" S5      nU" U5      nU R                  [        U5      S5        g )	Nrz  r{  r|  r}  r~  r  r   rp  r  r   r   r   rP  s       r   test_explicit_from_Decimal3ExplicitConstructionTest.test_explicit_from_Decimal  s    ,,&& BKAJQ& IAJQ- CLAJQ' AJAJQ%r'   c           	      R   U R                   R                  nU" S5      nU R                  [        U5      U5        U R                  [	        U5      S5        U R                  U" [        S5      5      R                  5       5        U R                  U" [        S5      5      R                  5       5        U R                  U" [        S5      5      R                  5       5        U R                  [	        U" [        S5      5      5      [	        U" S5      5      5        U R                  [	        U" [        S5      5      5      [	        U" S5      5      5        U R                  [	        U" [        S5      5      5      [	        U" S5      5      5        U R                  [	        U" [        S	5      5      5      [	        U" S
5      5      5        [        S5       HV  n[        R                  " S5      [        R                  " 5       S-  S-
  -  nU R                  U[        U" U5      5      5        MX     g )N皙?90.1000000000000000055511151231257827021181583404541015625naninf-infr  r  	-Infinity-0.0-0   {Gz?       @      ?)r   r   rB  r<  r=  r!   floatr   r   r  r0  expovariate)r   r   rrN  r  s        r   test_explicit_from_float1ExplicitConstructionTest.test_explicit_from_float  s    ,,&&CLa'*QK	Me-5578e-99;<f.::<=WU5\23WU^,	.WU5\23WZ01	3WU6]34W[12	4WU6]34WT]+	-sA""4(FMMOc,AC,GHAQgaj 12 r'   c           	      \
   U R                   R                  nU R                   R                  nU R                   R                  n[        R                  " U R                   R                  5       5      nSUl        U" 5       nU R                  [        U5      S5        UR                  5       nU R                  [        U5      S5        U R                  [        UR                  S 5        UR                  S5      nU R                  XQ5        U R                  UR                  S5      UR                  S5      5        U" S5      nU R                  [        U5      S5        UR                  S5      nU R                  [        U5      S5        U R                  [        UR                  S5      5      S	5        U" S
5      nU R                  [        U5      S5        UR                  S
5      nU R                  [        U5      S5        U" S5      nU" U5      nU R                  [        U5      S5        UR                  U5      nU R                  [        U5      S5        SUl        SUR                  U'   S HI  nUR                  U5      nU R                  [        XQ5      5        U R                  [!        U5      U5        MK     SUl        SUR                  U'   U R                  X4R                  S5        SUl        U R                  [        UR                  S5      5      S5        U R                  [        UR                  S5      5      S5        U R                  [        UR                  S5      5      S5        U R                  [        UR                  S5      5      S5        U R                  X$R                  S5        U R                  ["        UR                  S5        U R                  [        UR                  SS5        U R                  X$R                  S5        U R                  X$R                  S5        SUl        U R                  X$R                  S 5        U R                  X$R                  U" S 5      5        S!UR                  U'   U R                  [        UR                  S 5      5      S	5        U R                  UR$                  U   5        S!UR$                  U'   U R                  [        UR                  U" S 5      5      5      S	5        U R                  UR$                  U   5        g )"Nr  rp    in  z457E+2456789z4.57E+5z3.14
r  r  r  z	-4.35E-17r|  r}  z5.00E+8   T)	l        l         l    i   r   l                          z0E-017z0E-17r{  -Infr  NaN123r  )r  r  r  r  5678z 123412_34NaN12345F)r   r   r   r   rn   
getcontextr*   rB  r=  r   rv  r4  assertIsInstancer,   r!   
isinstancer  r  rV  )r   r   r   r   ncr   prevdecr   s           r   $test_explicit_context_create_decimal=ExplicitConstructionTest.test_explicit_context_create_decimal  sG   ,,&&<<88,,&&YYt||..01 IQ%Q% 	)R%6%6= c"a)**51**84	6 HQ*h'Q+ 	R..x895A :<Q!23DFQ- )$GQ-g&Q+ %)!"3A!!!$AOOJq23SVQ'	3  '#4#4d; R..x897CR..t45t<R..v67ER..x898D 	*,=,=uE*b&7&7I)R%6%6G*,=,=wG*,=,=wG *,=,=zJ*,=,=!*-	/ &+!"R..z:;UC!123%*!"R..wz/BCDeL!123r'   c           	      ~   U R                   R                  nU R                   R                  5       nUR                  S5      nU R	                  [        U5      U5        U R	                  [        U5      S5        U R                  UR                  [        S5      5      R                  5       5        U R                  UR                  [        S5      5      R                  5       5        U R                  UR                  [        S5      5      R                  5       5        U R	                  [        UR                  [        S5      5      5      [        UR                  S5      5      5        U R	                  [        UR                  [        S5      5      5      [        UR                  S5      5      5        U R	                  [        UR                  [        S5      5      5      [        UR                  S5      5      5        U R	                  [        UR                  [        S	5      5      5      [        UR                  S
5      5      5        SUl        [        S5       H_  n[        R                  " S5      [        R                  " 5       S-  S-
  -  nU R	                  U[        UR                  U5      5      5        Ma     g )Nr  z0.1000000000000000055511151231r  r  r  r  r  r  r  r  d   r  r  r  r  )r   r   r-   r   rB  r<  r=  r!   r  r   r   r*   r  r0  r  )r   r   r  r  rN  r  s         r   'test_explicit_context_create_from_float@ExplicitConstructionTest.test_explicit_context_create_from_float  s   ,,&&\\!!#c"a'*Q!AB))%,7??AB))%,7CCEF))%-8DDFGR..uU|<=R..u56	8R..uU|<=R..z:;	=R..uV}=>R..{;<	>R..uV}=>R..t45	7sA""4(FMMOc,AC,GHAQb&7&7&: ;< r'   c                     U R                   R                  nSSSS.nUR                  5        H&  u  p4U R                  [	        U" U5      5      U5        M(     g )Nr  z	0.0000372z-NaN2400)u   １u   ٠.٠٣٧٢e-٣u   -nan౨౪౦౦)r   r   itemsrB  r=  )r   r   test_valuesinputr   s        r   test_unicode_digits,ExplicitConstructionTest.test_unicode_digits0  sS    ,,&& 8C-7
  +002OES0(;  3r'   r   N)r   ri  rj  rk  rs  rw  r  r  r  r  r  r  r   r  r  r  r  rl  r   r'   r   rn  rn    sS    24566Hp)KV44&. 3 3.W4r=0	<r'   rn  c                       \ rS rSr\rSrg)CExplicitConstructionTesti;  r   Nr   ri  rj  rk  r   r   rl  r   r'   r   r  r  ;      Gr'   r  c                       \ rS rSr\rSrg)PyExplicitConstructionTesti>  r   Nr   ri  rj  rk  Pr   rl  r   r'   r   r  r  >      Gr'   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ImplicitConstructionTestiA  c                 x    U R                   R                  nU R                  [        [        S[        5       5        g )NzDecimal(5) + Noner   r   rv  r4  r>  localsrr  s     r   test_implicit_from_None0ImplicitConstructionTest.test_implicit_from_NoneD  s(    ,,&&)T+>Ir'   c                     U R                   R                  nU R                  [        U" S5      S-   5      S5        U R                  U" S5      S-   U" S5      5        g )Nr  rz  50l   2}r r  rr  s     r   test_implicit_from_int/ImplicitConstructionTest.test_implicit_from_intH  sN    ,,&& 	WQZ"_-t4l2GL4IJr'   c                 x    U R                   R                  nU R                  [        [        S[        5       5        g )NzDecimal(5) + "3"r  rr  s     r   test_implicit_from_string2ImplicitConstructionTest.test_implicit_from_stringP  (    ,,&&)T+=vxHr'   c                 x    U R                   R                  nU R                  [        [        S[        5       5        g )NzDecimal(5) + 2.2r  rr  s     r   test_implicit_from_float1ImplicitConstructionTest.test_implicit_from_floatT  r  r'   c                 ~    U R                   R                  nU R                  U" S5      U" S5      -   U" S5      5        g )Nr  rz  2   rq  rr  s     r   test_implicit_from_Decimal3ImplicitConstructionTest.test_implicit_from_DecimalX  s2    ,,&&gbk172;?r'   c                 *  ^^ U R                   R                  n " S S5      nU R                  [        U" 5       U" S5      5      S5        U R                  [        U" S5      U" 5       5      S5        U R                  [	        S5      S5        U R                  [	        S5      S	5        U R                  [	        S
5      S5        U R                  [	        S5      S5        U R                  [	        S5      S5        U R                  [	        S5      S5        / SQnU Hw  u  nmm[        UTU4S j5        [        UTU4S j5        U R                  [	        SU-   S-   5      ST-   S-   5        U R                  [	        SU-   S-   5      ST-   S-   5        My     g )Nc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg),ImplicitConstructionTest.test_rop.<locals>.Ei`  c                     S[        U5      -   $ )Nzdivmod r=  r   others     r   
__divmod__7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__a  s     3u:--r'   c                     [        U5      S-   $ )Nz rdivmodr  r  s     r   __rdivmod__8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__c  s    5zJ..r'   c                     S[        U5      -   $ )Nzlt r  r  s     r   __lt__3ImplicitConstructionTest.test_rop.<locals>.E.__lt__e      s5z))r'   c                     S[        U5      -   $ )Nzgt r  r  s     r   __gt__3ImplicitConstructionTest.test_rop.<locals>.E.__gt__g  r  r'   c                     S[        U5      -   $ )Nzle r  r  s     r   __le__3ImplicitConstructionTest.test_rop.<locals>.E.__le__i  r  r'   c                     S[        U5      -   $ )Nzge r  r  s     r   __ge__3ImplicitConstructionTest.test_rop.<locals>.E.__ge__k  r  r'   c                     S[        U5      -   $ )Nzeq r  r  s     r   __eq__3ImplicitConstructionTest.test_rop.<locals>.E.__eq__m  r  r'   c                     S[        U5      -   $ )Nzne r  r  s     r   __ne__3ImplicitConstructionTest.test_rop.<locals>.E.__ne__o  r  r'   r   N)r   ri  rj  rk  r  r  r  r!  r$  r'  r*  r-  rl  r   r'   r   Er  `  s*    ./******r'   r/  r  z	divmod 10z
10 rdivmodzDecimal(10) < E()zgt 10zDecimal(10) > E()zlt 10zDecimal(10) <= E()zge 10zDecimal(10) >= E()zle 10zDecimal(10) == E()zeq 10zDecimal(10) != E()zne 10))+__add____radd__)-__sub____rsub__)*__mul____rmul__)/__truediv____rtruediv__)%__mod____rmod__)z//__floordiv____rfloordiv__)z**__pow____rpow__c                 &   > ST-   [        U5      -   $ Nr=  r  )r   r  lops     r   r  3ImplicitConstructionTest.test_rop.<locals>.<lambda>  s    c%j0Hr'   c                 &   > [        U5      T-   S-   $ rD  r  )r   r  rops     r   r  rF    s    E
S0@50Hr'   zE()zDecimal(10)r=  10)r   r   rB  divmodr>  setattr)r   r   r/  oplistsymrE  rH  s        @@r   test_rop!ImplicitConstructionTest.test_rop\  sd   ,,&&	* 	*$ 	WR[1;?QS1<@12G<12G<23W=23W=23W=23W=
 $MCcAsHIAsHIT%#+"=>"S[4/1T-#"5"=>!CZ%/1 $r'   r   N)r   ri  rj  rk  r  r  r  r
  r  rN  rl  r   r'   r   r  r  A  s%    JKII@01r'   r  c                       \ rS rSr\rSrg)CImplicitConstructionTesti  r   Nr  r   r'   r   rQ  rQ    r  r'   rQ  c                       \ rS rSr\rSrg)PyImplicitConstructionTesti  r   Nr  r   r'   r   rS  rS    r  r'   rS  c                   X    \ rS rSrS rS rS rS rS r\	" SSS	5      S
 5       r
S rSrg)
FormatTesti  c                     U R                   R                  n/ SQnU H(  u  p4nU R                  [        U" U5      U5      U5        M*     U R	                  [
        U" S5      R                  S5        g )N))rP  0E-15z0e-15)rP  z2.3E-15z2.3e-15)rP  z2.30E+2z2.30e+2)rP  z2.30000E-15z2.30000e-15)rP  z1.23456789123456789e40z1.23456789123456789e+40)rP  1.5z1.5e+0)rP  z0.15z1.5e-1)rP  z0.015z1.5e-2)rP  z0.0000000000015z1.5e-12)rP  z15.0z1.50e+1)rP  -15z-1.5e+1)rP  rp  z0e+0)rP  0E10e+1)rP  0.0z0e-1)rP  0.000e-2).6erW  z0.000000e-9)r_  rp  z0.000000e+6)r_  z9.999999z9.999999e+0)r_  z	9.9999999z1.000000e+1)r_  z-1.23e5z-1.230000e+5)r_  z1.23456789e-3z1.234568e-3)r   rp  rp  )r   r\  r\  )r   0E-2r]  )r   z0.00E-80.0000000000)r   rZ  rp  )r   z3.2E132)r   z3.2E2320)r   z3.20E2rc  )r   z3.200E2z320.0)r   z3.2E-6z	0.0000032).6frW  0.000000)rd  rZ  re  )rd  rp  re  ).0frp  rp  )rf  r^  rp  )rf  
3.141592653).1frg  3.1)z.4frg  3.1416)rd  rg  3.141593)z.7frg  	3.1415926)z.8frg  rg  )z.9frg  z3.141592650)grp  rp  )rn  r\  r\  )rn  rZ  r[  )GrZ  z0E+1)rn  z0E-5z0.00000)rn  z0E-6re  )rn  z0E-7z0e-7)rn  z-0E2z-0e+2).0grg  rh  )z.0nrg  rh  )z.1grg  rh  )z.2grg  rj  )z.5grg  rk  )z.7grg  rl  )z.8grg  rm  )z.9grg  rg  )z.10grg  rg  )r<  rZ  0%)r<  0E0rq  )r<  z0E-1rq  )r<  r`  rq  )r<  z0E-3z0.0%)r<  z0E-4z0.00%).3%rp  0.000%)rs  0E10rt  )rs  z0E-10rt  )rs  z2.34z234.000%)rs  z1.234567z123.457%).0%1.23z123%)rP  r  r  )r   -NaN123rx  )z+gNaN456z+NaN456)z.3eInfr  )z.16fr  r  )rp  -sNaNr{  )r   1.00r|  )6123   123)z<6r~  z123   )z>6r~  r  )z^6r~  z 123  )z=+6r~  z+  123)#<10r  z
NaN#######)r  z-4.3z
-4.3######)z#<+100.0130z
+0.0130###)z#< 10r  z
 0.0130###)z@>10r  z
@-Infinity)z#>5r  r  )z?^5r~  z?123?)z%^6r~  z%123%%)z ^6-45.6z-45.6 )z/=10r  z
-/////45.6)z/=+1045.6z
+/////45.6)z/= 10r  z
 /////45.6)z =10r  z
- Infinity)z ^16r  z   -Infinity    )z >101.2345z
    1.2345)z <10r  z
1.2345    ),1234567z	1,234,567)r  123456123,456)r  1234512,345)r  r  z1,234)r  r~  r~  )r  12r  )r  r  r  )r  rp  rp  )r  z-1234567z
-1,234,567)r  -123456-123,456)z7,r  r  )z8,r   123,456)08,r  z	0,123,456)z+08,r  z+123,456)z 08,r  r  )r  r  r  )z+09,r  z
+0,123,456)z07,1234.561,234.56)r  r  r  )z09,r  z	01,234.56)z010,r  z
001,234.56)z011,r  0,001,234.56)z012,r  r  )z08,.1fz1234.5z01,234.5)r  
1.23456789r  )z,%
123.456789z12,345.6789%)z,er  z
1.23456e+5)z,Er  z
1.23456E+5)_r  	1_234_567)07_r  z1_234.56)r  r  r  )z_%r  z12_345.6789%)ri  r  r  )ri  z-.0r  )ri  -.01r  )z.1f0.r\  )z6.1fr  z   0.0)r  -1.z  -1.0)r  -0.r\  )r  .01r\  )r  r  r\  )z.2fr  r]  )r  r  r]  )r  z.001r]  )r  z-.001r]  )z.1er  0.0e+1)r  r  r  )z.1Er  0.0E+1)r  r  r  )zz.2e-0.001z-1.00e-3)zz.2gr  r  )zz.2%r  z-0.10%)zfz-0.0000z0.0000)r  -00000.000001r\  )r  -00000.r\  )r  -.0000000000r\  )r  r  r]  )r  r  r]  )r  r  r]  )r  z.090.1)r  z-.09z-0.1) z.0fr  z 0)+z.0fr  z+0)-z.0fr  rp  )r  r  -1)r  r  r  )r  r  r  )zz>6.1fr  zzz-0.0)zz>z6.1fr  zzzz0.0)zx>z6.1fr  zxxx0.0)u
   🖤>z6.1fr  u   🖤🖤🖤0.0)z >z6.1fr  z   0.0)zz3,.10Fz
-6.24E-323ra  )r=   rp  r  )za=-7.0z0.12345zaaaa0.1)z	<^+15.20%r  z<<+Infinity%<<<)z>,%sNaN1234567zsNaN1234567%)z=10.10%r  z
   NaN123%r  s   -020)r   r   rB  formatrv  r4  
__format__)r   r   r  fmtr   rR  s         r   test_formattingFormatTest.test_formatting  sc    ,,&&Sh *NCFVGAJ4f= * 	)WQZ%:%:GDr'   c                     U R                   R                  5        n[        Ul        U R	                  [        U R                   R                  S5      S5      S5        S S S 5        g ! , (       d  f       g = f)Nr  r  r]  )r   r  r   r+   rB  r  r   r   ctxs     r   +test_negative_zero_format_directed_rounding6FormatTest.test_negative_zero_format_directed_roundingt  sP    \\&&(C(CLVDLL$8$8$BFK"$ )((s   AA%%
A3c                 n    U R                  [        [        U R                  R	                  S5      S5        g )Nrw  fz)rv  r  r  r   r   r   s    r   test_negative_zero_bad_format(FormatTest.test_negative_zero_bad_formatz  s%    *fdll.B.B6.JDQr'   c                   ^ ^	 T R                   R                  m	 SSKJn  U 4S jnS>U	U 4S jjnSU" / SQ5      SS	.nSU" W/5      S
S	.nSU" / SQ5      SS	.nSU" SSSU/5      SS	.nSR                  S5      U" / SQ5      SR                  S5      S	.nT R                  U" T	" S5      U5      S5        T R                  U" T	" S5      U5      S5        T R                  U" T	" S5      U5      S5        T R                  U" T	" S5      U5      S5        T R                  U" SU5      S5        T R                  U" SU5      S5        T R                  U" SU5      S5        T R                  U" SU5      S5        T R                  U" SUS5      S5        T R                  U" SUS5      S5        T R                  U" SUS5      S5        T R                  U" SUS5      S 5        T R                  U" S!US"5      S#5        T R                  U" S!US$5      S#5        T R                  U" S!US%5      S&5        T R                  U" S!US'5      S(5        T R                  U" S)US%5      S*5        T R                  U" S)US'5      S*5        T R                  U" S)US+5      S,5        T R                  U" S)US-5      S.5        T R                  U" S)US/5      S.5        T R                  U" S)US05      S15        T R                  U" S2US'5      S35        T R                  U" S2US+5      S35        T R                  U" S2US-5      S35        T R                  U" S2US/5      S45        T R                  U" S2US05      S55        T R                  U" S2US65      S55        T R                  U" S2US75      S85        T R                  U" S2US95      S:5        T R                  U" T	" S;5      US<5      S=5        g ! [         a    T R                  S5         GNf = f)?Nr   CHAR_MAXlocale.CHAR_MAX not availablec                    > TR                   [        :X  a+  SR                  U  Vs/ s H  n[        U5      PM     sn5      $ U $ s  snf Nr   )r   r   joinchr)lstr  r   s     r   make_grouping/FormatTest.test_n_format.<locals>.make_grouping  s8    59\\Q5F277C0CqCFC01OCO0s   Ac                    > TR                   [        :X  a  T" U 5      R                  X!5      $ T" U 5      R                  X!S9$ )N)_localeconv)r   r   r  )r  overrider  r   r   s      r   get_fmt)FormatTest.test_n_format.<locals>.get_fmt  s<    ||q qz,,S;;qz,,S,GGr'   .r  r  r   r  decimal_pointgroupingthousands_sepr   r"  &r  r  r  r3  s   ¿r   s   ´z12.7z12,7z1-2&7i[z123,456,789	123456789z123 456 789l   c}z123456-78-9012-3z.6nz
1.23457e+8z
1,23457e+8z
1&23457e+8r  03nr  04n05n0123406n00123490  r  07nz012,34508nz	0,012,34509n010nz
00,012,345i@ z1-2345-6z	01-2345-6z0-01-2345-6011n012nz00-01-2345-6013nz000-01-2345-6-1.5020nu   -0´000´000´000´001¿5Nr  )r   r   localer  ImportErrorskipTestdecoderB  )
r   r  r  r  en_USfr_FRru_RUcrazydotsep_wider   s
   `        @r   test_n_formatFormatTest.test_n_format}  s   ,,&&	;'	P	H 	H "&y1! "&z2  "%i0! "%q!Q&9:! *009%i0)009 	%8&A%8&A%8&A%8'BE2MBE2K@E2MB68JKE59<HE59<HE59<HE59<H 	ue4f=ue4f=ue4g>ue4h?u5x@u5x@u5yAu5{Cu5{Cv6E6
C6
C6
C6D7G7G7H7I 	+vFH	Jc  	;MM9:	;s   O O0/O0c                    U R                   R                  nU" S5      nU R                   [        :X  a  U R                  [        5       n[        US5      nS S S 5        U R                  WR                  [        5        U R                  W[        US5      R                  5       5        U R                  [        5       n[        US5      nS S S 5        U R                  UR                  [        5        U R                  U[        US5      R                  5       5        O8U R                  [        [
        US5        U R                  [        [
        US5        [        R                  " U 5         U R                  [        US5      S5        U R                  [        US5      S	5        U R                  [        US
5      S5        U R                  [        US5      S5        U R                  [        [
        US5        U R                  [        [
        US5        U R                  [        [
        US5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f)Nz6.62607015e-34Nr  z010.3Nz010.3nzN>10.3z
NN6.63E-34zN>10.3nz
NN6.63e-34zN>10.3ez
N6.626e-34zN>10.3fz
NNNNN0.000z>Nf10NfNx)r   r   r   assertWarnsDeprecationWarningr  rB  filename__file__upperrv  r  r   check_no_warnings)r   r   hcmr  s        r   test_deprecated_N_format#FormatTest.test_deprecated_N_format  s   ,,&&$%<<1!!"451cN 6R[[(3Qq# 4 4 67!!"451h' 6R[[(3Qq( 3 9 9 ;<j&!S9j&!X>..t4VAx0,?VAy1<@VAy1<@VAy1<@j&!U;j&!V<j&!T: 54 65 65 54s%   H8<I
*CI8
I

I
I*LC_ALLps_AFr   c                 p   U R                   R                  n[        R                  " 5       S   n[        R                  " 5       S   nUS:w  a!  U R	                  SR                  US5      5        US:w  a!  U R	                  SR                  US5      5        U R                  [        U" S5      S5      S	5        g )
Nr  r  u   ٫z5inappropriate decimal point separator ({!a} not {!a})u   ٬z1inappropriate thousands separator ({!a} not {!a})z100000000.123r  u   100٬000٬000٫123)r   r   r  
localeconvr  r  rB  )r   r   r  r  s       r   &test_wide_char_separator_decimal_point1FormatTest.test_wide_char_separator_decimal_point  s     ,,&&))+O<))+O<H$MM ,,2F=(,KMH$MM ,,2F=(,KM 	 8#>9	;r'   c                 F    " S SU R                   R                  5      nUR                  S5      nU R                  U R                   R                  UR                  5        UR                  S5      nU R                  U R                   R                  UR                  5        g )Nc                       \ rS rSrS rSrg);FormatTest.test_decimal_from_float_argument_type.<locals>.Ai   c                 $    [        U5      U l        g r   )r<  a_type)r   r  s     r   __init__DFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__  s    "1gr'   )r	  Nr   ri  rj  rk  r
  rl  r   r'   r   Ar     s    &r'   r  g     @E@*   )r   r   
from_floatrB  r	  )r   r  r  s      r   %test_decimal_from_float_argument_type0FormatTest.test_decimal_from_float_argument_type  sr    	&$$ 	& LL--qxx8LL--qxx8r'   r   N)r   ri  rj  rk  r  r  r  r  r  r   r  r  rl  r   r'   r   rU  rU    sD    \E|$RWJr;0 Xw+; ,; 9r'   rU  c                       \ rS rSr\rSrg)CFormatTesti	  r   Nr  r   r'   r   r  r  	  r  r'   r  c                       \ rS rSr\rSrg)PyFormatTesti  r   Nr  r   r'   r   r  r    r  r'   r  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)ArithmeticOperatorsTesti  c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-   U" S5      5        U R                  X2-   U" S5      5        US-   nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-   nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S5      5        g )N-11.122.2z11.1r  z-6.116.1r   r   rB  r<  r   r   d1d2r  s        r   test_addition%ArithmeticOperatorsTest.test_addition  s    ,,&&WV_ 	00 FGFO,a$r(+ FGFO,a$r(+ 	WV_- 	aWV_-r'   c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-
  U" S5      5        U R                  X2-
  U" S5      5        US-
  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-
  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S5      5        g )	Nr  r  z-33.3z33.3r  z-16.1r  z-38.3r  r  s        r   test_subtraction(ArithmeticOperatorsTest.test_subtraction.  s    ,,&&WV_ 	 010 FGG,-a$r(+ FGFO,a$r(+ 	WW-. 	aWW-.r'   c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-  U" S5      5        U R                  X2-  U" S5      5        US-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S5      5        g )N-5rh  rY  r  z-25z-75r  r  s        r   test_multiplication+ArithmeticOperatorsTest.test_multiplicationJ  s    ,,&&T]S\ 	// FGEN+a$r(+ FGEN+a$r(+ 	WU^, 	aWU^,r'   c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-  U" S5      5        U R                  X2-  U" S5      5        US-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S5      5        g )	Nr&  2-2.5z-0.4r  z-1.25z-0.8z-0.625r  r  s        r   test_division%ArithmeticOperatorsTest.test_divisionf  s    ,,&&T]S\ 	00 FGG,-a$r(+ FGFO,a$r(+ 	WV_- 	aWX./r'   c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-  U" S5      5        U R                  X2-  U" S5      5        US-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S5      5        g )N5r*  rp  r  r     r  r  r  s        r   test_floor_division+ArithmeticOperatorsTest.test_floor_division  s    ,,&&S\S\ 	.. !GGCL)a$r(+ GGCL)a$r(+ 		WS\* 	qWS\*r'   c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-  U" S5      5        U R                  X2-  U" S5      5        US-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S	5      5        g )
Nr/  r*  25rb  r  625r0  16807390625r  r  s        r   test_powering%ArithmeticOperatorsTest.test_powering  s    ,,&&S\S\ 	// !GGEN+a$r(+ GGG,-a$r(+ 		WT]+ 	qWX./r'   c                 &   U R                   R                  nU" S5      nU" S5      nU R                  X#-  U" S5      5        U R                  X2-  U" S5      5        US-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        SU-  nU R                  XA" S5      5        U R                  [        U5      [        U5      5        X#-  nU R                  X!" S5      5        US-  nU R                  X!" S5      5        g Nr/  r*  r  r  r0  r  r  s        r   test_module#ArithmeticOperatorsTest.test_module  s    ,,&&S\S\ 	-- FGCL)a$r(+ FGCL)a$r(+ 	WS\* 	aWS\*r'   c                 f   U R                   R                  nU" S5      nU" S5      n[        X#5      u  pEU R                  XA" S5      5        U R                  XQ" S5      5        U R                  [	        U5      [	        U5      5        U R                  [	        U5      [	        U5      5        [        US5      u  pEU R                  XA" S5      5        U R                  XQ" S5      5        U R                  [	        U5      [	        U5      5        U R                  [	        U5      [	        U5      5        [        SU5      u  pEU R                  XA" S5      5        U R                  XQ" S5      5        U R                  [	        U5      [	        U5      5        U R                  [	        U5      [	        U5      5        g r;  )r   r   rJ  rB  r<  )r   r   r  r  pqs         r   test_floor_div_module-ArithmeticOperatorsTest.test_floor_div_module  sV   ,,&&S\S\ GCL)GCL)a$r(+a$r(+ AGCL)GCL)a$r(+a$r(+ 2GCL)GCL)a$r(+a$r(+r'   c                    U R                   R                  nU R                  U" S5      7U" S5      5        U R                  U" S5      * U" S5      5        U R                  [        U" S5      5      [        U" S5      5      5        g )Nrz  r~  )r   r   rB  absrr  s     r   test_unary_operators,ArithmeticOperatorsTest.test_unary_operators  sg    ,,&&'"+ws|4'"+ws|4WR[)3ws|+<=r'   c                 
   U R                   R                  nU R                   R                  nU R                   R                  nU" S5      nU" S5      nU" S5      nU" S5      nXD4XF4Xd4XG4Xt44nXT4XE4XV4Xe4XW4Xu4XU44n	[        R
                  [        R                  [        R                  [        R                  4n
[        R                  [        R                  4nU" 5        nSUR                  U'   X-    H^  u  pX-    HQ  nU" X5      nU[        R                  L a  SOSnU R                  UUSR                  UUR                  XU5      5        MS     M`     S S S 5        U" 5        nS	UR                  U'   U H\  u  pU HQ  nU" X5      nU[        R                  L a  SOSnU R                  UUSR                  UUR                  XU5      5        MS     M^     U	 HP  u  pU HE  nU R                  U[        R                  X5        U R                  U[        R                  X5        MG     MR     X-    H   u  pU
 H  nU R                  X/X5        M     M"     S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)
Nr  sNaNrz  r*  r   TFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r  )r   r   r   r  operatorltlegtgeeqner,   r  r  r   rv  )r   r   r   r  r  r   rN  r   
qnan_pairs
snan_pairs	order_opsequality_opsr  r  r  opgotr   s                     r   test_nan_comparisons,ArithmeticOperatorsTest.test_nan_comparisons  s@    ,,&&<<88||00ENFOENCLVaVaVaVaV;
VaVaVaVaVaVaVK
KKhkk8;;F	{{HKK/ ^s*+CII&'"/#2BQ(C')X[['8teHMM(C!,,2F$bkk1->? 3 0  ^s*+CII&'"&BQ(C')X[['8teHMM(C#..4f$bkk1/>? ' # #&B%%&6QJ%%&6QJ ' #
 #/#B%%&6AA $ 0% ^ ^ ^s   $A6I")C0I4"
I14
Jc                    U R                   R                  nU" S5      R                  U" S5      5      nU R                  U" S5      R                  S5      U5        U R	                  [
        U" S5      R                  S5        g )Nr  r  -2)r   r   ru   rB  rv  r4  r  s      r   test_copy_sign&ArithmeticOperatorsTest.test_copy_sign2  sd    ,,&&AJ  ---b115)WQZ%9%94@r'   r   N)r   ri  rj  rk  r   r#  r'  r,  r1  r8  r<  rA  rE  rV  rZ  rl  r   r'   r   r  r    s<    .8/8-808+808+8,6>8BtAr'   r  c                       \ rS rSr\rSrg)CArithmeticOperatorsTesti9  r   Nr  r   r'   r   r]  r]  9  r  r'   r]  c                       \ rS rSr\rSrg)PyArithmeticOperatorsTesti<  r   Nr  r   r'   r   r_  r_  <  r  r'   r_  c           
      b   U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU R                   R                  nU R                   R                  nU R                   R                  nU" S5      n	U" S5      n
X-  nU R                  R                  5         U R                  R                  5         X-  nU" 5        nU R                  UR                  U   5        U R                  X=R                   U	S5        U R                  UR                  U   5        U" 5        nU R                  UR                  U   5        U R                  UR                  U   5        U R                  X.R"                  X" S5      5        U R                  UR                  U   5        AS S S 5        U R%                  UR                  U   5        AS S S 5        U R'                  X" S5      5        U R'                  X" S5      5        U" 5       nU R                  UR                  U   5        XEX24 H!  nU R%                  UR                  U   5        M#     g ! , (       d  f       N= f! , (       d  f       N= f)Nr  r  r   rH  0.333333333333333333333333)r   r   r   r   r   r   r   r  r  finish1r   synchrowaitr!   rV  rv  dividecompareassertFalserB  )r#   r   r   r   r   r   r   r  r  r  d3test1test2c2c3c1sigs                    r   thfunc1ro  A  s   kk!!G{{33[[//N{{##H%%Ikk!!G''J;;++L	B	BEEKKOOKKEE	2rxx()B:rxx/0^rNN288G,-NN288N34-zz2wvONN288$456  	!123 
 OOE7#?@AOOE7#?@A	BNN288G$%ND& E ^	 
s&   A!J %A>J#'J 
J	J  
J.c           	         U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU R                   R                  nU R                   R                  nU R                   R                  nU" S5      n	U" S5      n
X-  nU" 5       nSUl	        X-  nU" 5        nU R                  UR                  U   5        U R                  XNR                  U" S5      S5        U R                  UR                  U   5        U" U5       nU R                  UR                  U   5        U R                  UR                  U   5        SUR                  U'   U R                  X_R                   U" S5      S5        U R                  UR                  U   5        AS S S 5        U R                  UR                  U   5        U R                  UR                  U   5        AS S S 5        U R"                  R%                  5         U R&                  R%                  5         U R)                  X" S5      5        U R)                  X" S	5      5        U R                  UR                  U   5        U R                  UR                  U   5        XEX24 H!  nU R                  UR                  U   5        M#     g ! , (       d  f       GN= f! , (       d  f       N= f)
Nr  r     1e425000000  Tz1e-425000000ra  z0.333333333333333333)r   r   r   r   r   r   r   r  r  r*   r!   rV  rv  multiplyrg  r,   re  rc  r   finish2rB  )r#   r   r   r   r   r   r   r  r  r  rh  ri  thiscontextrj  rk  rl  rn  s                    r   thfunc2rw  h  sP   kk!!G{{33[[//N{{##H%%Ikk!!G''J;;++L	B	BEE,KKEE	2rxx();;0FLrxx)*+&"NN288G,-OOBHHX./"&BHHYY		7>3JCPNN288I./ ' 	+,+, 
 KKOOKKOOOOE7#?@AOOE7#9:;OOK%%i01NN;$$W-.ND))#./ E' '&	 
s'   A(K;BK)AK;)
K8	3K;;
L	c                       \ rS rSrS rSrg)ThreadingTesti  c                    U R                   R                  nU R                   [        :X  a,  U R                   R                  (       d  U R	                  S5        UR
                  nUR                  nUR                  nSUl        SUl        SUl        [        R                  " 5       U l
        [        R                  " 5       U l        [        R                  " 5       U l        [        R                  " [        U 4S9n[        R                  " [        U 4S9nUR!                  5         UR!                  5         U R                  R#                  5         U R                  R#                  5         [$        U R                       H!  nU R'                  UR(                  U   5        M#     UR+                  5         UR+                  5         X!l        X1l        XAl        g )Nzcompiled without threading   r   )targetr  )r   DefaultContextr   HAVE_THREADSr  r*   re  r_  	threadingEventrc  rb  ru  Threadro  rw  startrd  r1   rg  rV  r  )r   r~  	save_prec	save_emax	save_eminth1th2rn  s           r   test_threadingThreadingTest.test_threading  sG   44<<1T\\%>%>MM67 #''	"''	"''	 '( ( ( (gTG<gTG<				4<<(C^11#67 ) 	

'''r'   )rb  ru  rc  N)r   ri  rj  rk  r  rl  r   r'   r   ry  ry    s    $(r'   ry  c                       \ rS rSr\rSrg)CThreadingTesti  r   Nr  r   r'   r   r  r    r  r'   r  c                       \ rS rSr\rSrg)PyThreadingTesti  r   Nr  r   r'   r   r  r    r  r'   r  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)UsabilityTesti  c                 8   U R                   R                  nU" S5      nU" S5      nU" S5      nU R                  XB5        U R                  XB5        U R	                  X$5        U R                  X$5        U R                  X#5        U R                  X$5        U R                  X#5        U R                  X#5        U R                  US5        U R	                  SU5        U R                  US5        U R                  US5        U R                  US5        U R                  U[        5       5        U R                  U[        5        [        [        U[        S5      5      5      nUS S  n[        R                  " U5        UR                  5         U R                  XV5        g )Nz23.42r{     rz  r  gY@@r  )r   r   assertGreaterassertGreaterEqual
assertLessassertLessEqualrB  assertNotEqualobjectlistmapr  r0  shuffler@  )r   r   dadbdcr  bs          r   test_comparison_operators'UsabilityTest.test_comparison_operators  sU   ,,&&WWT] 	2"'R$ B#R$' 	2r"BR  	B'B%B)B' WeCj)*qTq	r'   c                 0   U R                   R                  nU" S5      nU" S5      nU R                  US5        U R                  US5        U R	                  US5        U R                  US5        U R                  US5        U R                  US5        U R	                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU" S5      5        g )N0.253.0      @      ?g      ?r  r  )r   r   r  r  r  r  r  rB  r   r   r  r  s       r   test_decimal_float_comparison+UsabilityTest.test_decimal_float_comparison  s    ,,&&V_U^C R%2t$D)B$T"3#R(b!T2&D"%b!C0r'   c                    U R                   R                  nU" S5      nU" S5      nU R                  US5        U R                  SU5        U R                  US5        U R                  SU5        U R                  SU5        U R                  US5        U R                  US5        U R                  SU5        U R	                  UR                  S5      [        5        U R	                  UR                  S5      [        5        U R	                  UR                  S5      [        5        U R	                  UR                  S5      [        5        g )Nr  r  y      ?        y      ?        y      @        y      @      ?)	r   r   r  rB  r  r  NotImplementedr$  r!  r  s       r   test_decimal_complex_comparison-UsabilityTest.test_decimal_complex_comparison  s    ,,&&V_U^B)Vb)g''B'&2&f&B)Vb)bii'8bii'8bii'8bii'8r'   c           
         U R                   R                  n[        U R                      R                  nU R                   R                  nU R                   R
                  nU R                   R                  n[        (       a  [        R                  OSn[        (       a  [        R                  OSn[        (       a  [        R                  OSnU" XgS9n	U" U	5         Xil        U R                  U" S5      U" SS5      5        U R                  U" SS5      U" S5      5        U R                  U" SS5      U" S	[        U5      -   5      5        U R                  U" S
[        U5      -   5      U" SS5      5        U R                  U" SS5      U" S	[        U5      -   5      5        U R                  U" S
[        U5      -   5      U" SS5      5        U R                  U" S5      U" SS5      5        U R                  U" SS5      U" S5      5        SU	l        U R                  U" S5      S-  U" SS5      5        U R                  U" SS5      U" S5      S-  5        U R!                  U" SS5      U" S[        U5      -   5      5        U R#                  U" S[        U5      -   5      U" SS5      5        U R%                  U" S5      U" SS5      5        U R%                  U" S5      U" SS5      5        U R                  U" S5      U" SS5      5        U R                  U" S5      U" SS5      5        U R'                  XQ" S5      R(                  U" SS5      5        U R+                  [,        U" SS5      R/                  U" S5      5      5        U R                  U" S5      U" SS5      5        U R                  U" SS5      U" S5      5        S S S 5        g ! , (       d  f       g = f)Nɚ;6eilʈre  r_  r   r  l	   ZmH;5B r  1ez-1el   !0QYr  r  i,  r  i6l   c(	 9er  l   g] {   lg] r  r  i)r   r   r   Fractionr-   r  r   r   r   MIN_EMIN	MIN_ETINYr*   r  r=  rB  r  r  r  r  rv  r!  r  r  r  )
r   Dr  r-   r  r   emaxeminetinyr  s
             r    test_decimal_fraction_comparison.UsabilityTest.test_decimal_fraction_comparison  s   LL  dll#,,,,&&||00<<88 QqzzIQqzzJ qk)!_FOOAaD!A&K"LMOOAb!FG1NOOAaFAdSZ&7$89OOAec%j011Qq6:OOAa 9:AdSZ>O<PQOOAec%j011Q7P3QRQuXq2w/QqWah/AF!Q!A/!A!Q/  9j!91TCI=M;NO##AdSY&6$79j9QRqx;s);<qx<)<=OOAfIqS'9:OOAfIqc':;.%2cKMM.!Bs)*:*:1U8*DE%!Bs)4"S	1U847 __s   K%O		
Oc                 (   U R                   R                  nU" S5      n[        R                  " U5      nU R                  [	        U5      [	        U5      5        [        R
                  " U5      nU R                  [	        U5      [	        U5      5        g )Nz43.24)r   r   rn   rB  rE  deepcopy)r   r   r   r  r  s        r   test_copy_and_deepcopy_methods,UsabilityTest.test_copy_and_deepcopy_methodsB  sf    ,,&&GIIaLA1&]]1BA'r'   c                   ^  T R                   R                  nT R                   R                  nU 4S jnU" U" S5      5        U" U" S5      5        U" U" S5      5        U" U" S5      5        U" U" S5      5        S VVVs/ s H2  n[        SS	5        H  nS
  H  nU" USU-  U-   -  5      PM     M      M4     nnnnUR	                  U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      /5        U H-  nT R                  U" U5      [        [        U5      5      5        M/     / SQn	U	 H7  n
[        U
5      nU" U
5      nT R                  U" U5      [        U5      5        M9     U" 5        nU" S5      nSUl	        U" U5      nS	Ul	        U" U5      nSUl	        U" U5      nT R                  UU5        T R                  UU5        S Ul	        S!S"-  nT R                  U" U" U5      5      U" U5      5        S S S 5        g s  snnnf ! , (       d  f       g = f)#Nc                 `   > [        U 5      nU R                  5       nTR                  X5        U$ r   )hash__hash__rB  )r   r  r  r   s      r   hashit.UsabilityTest.test_hash_method.<locals>.hashitP  s*    QA

AQ"Hr'   r  r  r  nan123-NaN)r                     r  !   =   >   ?   @   A   B   r  r  r  r  r  r]  z-0.000ru  z-0E1210.0z	-23.000001230E100z
-4.5678E50l       z	1.634E100z
90.697E100z
188.83E100z
1652.9E100	56531E100)r  r  r\  z-.0e1z34.02.5z
112390.625z	-0.515625z123456789.1   r  '  iL  i  )
r   r   r  r  extendrB  r  r  r  r*   )r   r   r  r  r3   r  r  r  r  test_stringsr   r   r   r  r  h1h2h3s   `                 r   test_hash_methodUsabilityTest.test_hash_methodK  sg   ,,&&||00	 	wr{wz"#w{#$wx !wv!A,!A1 %c21#*4	 tQTAX/ $+	 0 !/ 0!A 	 ,
 	! $
#% )* $%%%$) 	0 !EVE]DU,<= !
BAaA
AVAYQ0 
 ^q &AAFBAFBAFBR$R$AFAVGAJ/;# ^S,R ^s    9I9B
I
I!c                 t   U R                   R                  nU R                  [        [        U" S5      5        U" S5      nU R                  [	        U5      [        R                  U5      5         " S S5      n " S SX5      nU" S5      nU R                  [	        U5      [        R                  U5      5        g )NrH  r  c                       \ rS rSrS rSrg)-UsabilityTest.test_hash_method_nan.<locals>.Hi  c                     g)Nr  r   r   s    r   r  6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__  s    r'   r   N)r   ri  rj  rk  r  rl  r   r'   r   Hr    s    r'   r  c                       \ rS rSrSrg)-UsabilityTest.test_hash_method_nan.<locals>.Di  r   N)r   ri  rj  rk  rl  r   r'   r   r  r    s    r'   r  )r   r   rv  r4  r  rB  r  r  )r   r   r  r  r  s        r   test_hash_method_nan"UsabilityTest.test_hash_method_nan  s    ,,&&)T76?;efooe&<=	 		 	%efooe&<=r'   c                    U R                   R                  nU" S5      nU" S5      nSnSnU R                  [        X#5      U5        U R                  [        X25      U5        U R                  [	        X#5      U5        U R                  [	        X25      U5        U R                  [        X%5      U5        U R                  [        XR5      U5        U R                  [	        XC5      U5        U R                  [	        X45      U5        g )N15.32z28.5r  r  )r   r   r  minmax)r   r   r  r  l1l2s         r   test_min_and_max_methods&UsabilityTest.test_min_and_max_methods  s    ,,&&WV_ 	c"j"%c"j"%c"j"%c"j"% 	c"j"%c"j"%c"j"%c"j"%r'   c                     U R                   R                  nU R                  U" S5      5        U R                  U" S5      5        g )Nr   z0.372)r   r   rg  r!   rr  s     r   test_as_nonzeroUsabilityTest.test_as_nonzero  s6    ,,&& 	$()r'   c                     U R                   R                  nU" S5      nU R                  [        U5      S5        U R                  [	        U5      S5        g )Nr  zDecimal('15.32'))r   r   rB  r=  rA  r  s      r   test_tostring_methods#UsabilityTest.test_tostring_methods  sD    ,,&&GQ)a"45r'   c           
         U R                   R                  nU" S5      nU" S5      nU R                  [        U5      S5        U R                  [        U5      S5        U R                  [	        U5      S5        U R                  [	        U5      S5        / SQnU H1  u  pVU R                  [
        R                  " U" U5      5      U5        M3     U R                  [        [
        R                  U" S5      5        U R                  [        [
        R                  U" S5      5        U R                  [        [
        R                  U" S	5      5        U R                  [        [
        R                  U" S
5      5        U R                  [        [
        R                  U" S5      5        / SQnU H1  u  pVU R                  [
        R                  " U" U5      5      U5        M3     U R                  [        [
        R                  U" S5      5        U R                  [        [
        R                  U" S5      5        U R                  [        [
        R                  U" S	5      5        U R                  [        [
        R                  U" S
5      5        U R                  [        [
        R                  U" S5      5        / SQnU H&  u  pVU R                  [        U" U5      5      U5        M(     U R                  [        [        U" S5      5        U R                  [        [        U" S5      5        U R                  [        [        U" S	5      5        U R                  [        [        U" S
5      5        U R                  [        [        U" S5      5        / SQnU H1  u  pXn	U R                  [        [        U" U5      U5      5      U	5        M3     g )N66r  r  r  gp=
ף.@)	z123.00r  3.2r  )3.54r  )3.899r  )-2.3r  z-11.0ir\  r   z-0E3r   )89891211712379812736.1l   {#'s{M r  rH  r  rz  r  )	r  )r  r  r  r  r  r  r  r  r  r  r  )r  l   {#'s{M )r  r   r	  r
  r  r  r  r  )z-3.5)r+  r  )r  r  )-0.5r   )0.5r   )rX  r  )r  r  )z3.5r  ))123.456r  z0E+4)-123.456r  z-0E+4)r  r  z0E+3)r  r  z-0E+3)r  r  z1E+2)r  r  z1.2E+2)r  r   r~  )r  r  z123.5)r  r  123.46)r  r  r  )r  r  z123.4560)z123.455r  r  )z123.445r  z123.44)rz  r  r  )r  ir  )sNaN314r  NaN314)r   r   rB  r  r  mathr   rv  r  OverflowErrorceilroundr=  )
r   r   r  r  
test_pairsr   rN  test_triplesr  r  s
             r   test_tonum_methods UsabilityTest.test_tonum_methods  s   ,,&&T]W 	R"%R"% 	rB'rE*

 DATZZ
3Q7 *djj'&/B*djj'&/B*djj'(2CD-WU^D-WV_E

 DATYYwqz2A6 *diiA*diiA*dii1BC-GENC-GFOD
$ DAU71:.2 *eWV_=*eWV_=*eWX->?-?-@$ $GA!Swqz1!56: $r'   c                 .   U R                   R                  nS Hy  n[        U" U5      5      nU R                  [        R
                  " U5      5        [        R                  " SU5      nU R                  XBR                  S5      (       a  SOS5        M{     g )N)r  nan1234-nanz-nan2468r  r3  g      )	r   r   r  r!   r  r   rt   rB  r  )r   r   r   r   r  s        r   test_nan_to_floatUsabilityTest.test_nan_to_float3  sm     ,,&&7Agaj!AOODJJqM*==a(DT<<+<+<4#F	 8r'   c                     U R                   R                  nS H&  nU" U5      nU R                  [        [        U5        M(     g )N)snanz-snansnan1357z	-snan1234)r   r   rv  r  r  )r   r   r   r   s       r   test_snan_to_float UsabilityTest.test_snan_to_float=  s6    ,,&&;A
Aj%3 <r'   c                    U R                   R                  nU" S5      nU R                  U[        [	        U5      5      5        U" S5      nU R                  U[        [	        U5      5      5        U" S5      nU R                  U[        [	        U5      5      5        U" S5      nU R                  U[        [	        U5      5      5        g )Nr  r  r  r  )r   r   rB  r>  rA  r  s      r   test_eval_round_trip"UsabilityTest.test_eval_round_tripC  s    ,,&& \#DaM* ^%DaM* *,DaM* :<DaM*r'   c                 @   U R                   R                  nU" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S	5      nU R                  UR                  5       S
5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        U" S5      nU R                  UR                  5       S5        g )Nr   r  r~  r  r  r  r  )r   r  r  )r   r   r   r  r   r  r  r  r  )r   r  r   r  r  r  r  )r  r   r   r   %   )r  r  r-  )r  r   r-  )r   r*  r  )r   r+  r  )r  r,  r  r  r   r  )r  r   r  )r   r  r  )r  )r   r  r0  r  r  )r  r  r  )r   r   rB  as_tupler  s      r   test_as_tupleUsabilityTest.test_as_tupleV  s   ,,&& AJ|5 CL~7 %&'LN J~7 35'?A')}5["}5 46'@B(*|5\#|5 ^%~6+-~6+-~6r'   c           	      <   U R                   R                  nU R                  [        UR                  U" S5      5        U R                  [        UR                  U" S5      5        U R                  [
        UR                  U" S5      5        U R                  [
        UR                  U" S5      5        [        SS5       H  n[        S5       H  nS H  nU" S	XCU4-  5      nUR	                  5       nUu  pxU R                  U[        5        U R                  U[        5        U R                  U[        5        U R                  US
5        U R                  [        R                  " Xx5      S5        U R                  U" U5      U" U5      -  U5        M     M     M     g )Nr  r  r  snan123r  r    )r0  r3  z%s%dE%dr   r  )r   r   rv  r  as_integer_ratior  r  r  tupler  r  rB  r  gcd)	r   r   ra  coeffr  r   pqr?  r@  s	            r   test_as_integer_ratio#UsabilityTest.test_as_integer_ratio  sb   ,,&& 	-!22GEN	D-!22GFO	E*!22GFO	E*!22GI4F	H Q<Ct$D	T#,> >?A++-BDA ))"e4))!S1))!S1 &&q!,$$TXXa^Q7 $$WQZ'!*%<a@! % %  r'   c                 2   U R                   R                  n " S SU5      nU" S5      nU" S5      nX4-   nU R                  [        U5      U5        UR	                  U5      nU R                  [        U5      U5        [
        R
                  " U5      nU R                  [        U5      U5        U R                  XS5        [
        R                  " U5      nU R                  [        U5      U5        U R                  XS5        U" S5      nU" U5      nU R                  [        U5      U5        U R                  Xe5        U" U5      nU R                  [        U5      U5        U R                  Xu5        U R                  UR                  S 5        U" U5      nU R                  [        U5      U5        U R                  Xe5        SUl        U" U5      nU R                  [        U5      U5        U R                  Xe5        U R                  UR                  S 5        g )Nc                       \ rS rSrSrSrg)1UsabilityTest.test_subclassing.<locals>.MyDecimali  Nr   )r   ri  rj  rk  r  rl  r   r'   r   	MyDecimalr>    s    Ar'   r?  r  r  1.0r)   )	r   r   r  r<  r  rn   rB  r  r  )r   r   r?  r  r  r   r  r3   s           r   test_subclassingUsabilityTest.test_subclassing  s   ,,&&	 	 q\q\Gd1gw'FF2Jd1gw'IIbMd1gy)MM"d1gy) ENAJd1gw' aLd1gy)acc4  AJd1gw' aLd1gy)acc4 r'   c           
         U R                   R                  nU R                   R                  nU" 5       nU R                  [	        U" S5      R                  5       5      [	        UR                  U" S5      5      5      5        g Nr   )r   r   r  rB  r=  r   r   r   r  r  s       r   test_implicit_context#UsabilityTest.test_implicit_context  s^    ,,&&\\,,
 LWQZ__./QVVGAJ/0	2r'   c           	      z%   U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  n	U R                   R                  n
U R                   R                  nU" U" 5       5       nSUl        SUl        SUl        U" S5      nU" S5      nU" S5      nUR                  5         U R!                  [#        UR%                  S S95      S5        U R'                  UR(                  U	   5        U R'                  UR(                  U
   5        UR                  5         U R+                  XnR$                  S S9  U R'                  UR(                  U   5        U R-                  UR/                  S S9S	5        U R-                  UR1                  S S9S
5        UR                  5         U R!                  [#        UR3                  S S95      S5        U R'                  UR(                  U	   5        U R'                  UR(                  U
   5        UR                  5         U R+                  XA" S5      R2                  S S9  U R'                  UR(                  U   5        UR                  5         U R!                  [#        UR5                  S S95      S5        U R'                  UR(                  U	   5        U R'                  UR(                  U
   5        UR                  5         U R+                  XA" S5      R4                  S S9  U R'                  UR(                  U   5        UR                  5         U R!                  [#        UR7                  S S95      S5        U R+                  XQ" S5      R6                  S S9  U R'                  UR(                  U   5        UR                  5         U R!                  [#        UR9                  S S95      S5        U R+                  XNR8                  S S9  U R'                  UR(                  U   5        UR                  5         U R!                  [#        UR;                  S S95      S5        U R+                  XA" S5      R:                  S S9  U R'                  UR(                  U   5        UR                  5         U R!                  [#        UR=                  S S95      S5        U R+                  XA" S5      R<                  S S9  U R'                  UR(                  U   5        UR                  5         U R!                  [#        UR?                  S S95      S5        U R+                  XnR>                  S S9  U R'                  UR(                  U   5        U R!                  [#        URA                  S S95      S5        UR                  5         U R!                  [#        URC                  S S95      S5        U R'                  UR(                  U   5        U R'                  UR(                  U	   5        U R'                  UR(                  U
   5        U R'                  UR(                  U   5        U R'                  UR(                  U   5        UR                  5         U R+                  XnRB                  S S9  U R'                  UR(                  U   5        SUl"        U R!                  [#        URG                  S S95      S5        SUl"        UR                  5         [#        URI                  U" S5      S S95      nU R!                  US5        U R+                  XMRH                  U" S5      S S9  U R'                  UR(                  U   5        UR                  5         [#        URK                  SS S95      nU R!                  US5        U R+                  XMRJ                  U" S5      S S9  U R'                  UR(                  U   5        UR                  5         [#        URM                  SS S95      nU R!                  US5        U R+                  XMRL                  SS S9  U R'                  UR(                  U   5        UR                  5         [#        URO                  SS S95      nU R!                  US5        U R+                  XMRN                  SS S9  U R'                  UR(                  U   5        UR                  5         [#        URQ                  SS S95      nU R!                  US 5        U R+                  XMRP                  SS S9  U R'                  UR(                  U   5        UR                  5         [#        URS                  SS S95      nU R!                  US5        U R+                  XMRR                  U" S5      S S9  U R'                  UR(                  U   5        UR                  5         [#        URU                  SS S95      nU R!                  US5        U R+                  XMRT                  U" S5      S S9  U R'                  UR(                  U   5        UR                  5         [#        URW                  SS S95      nU R!                  US5        U R+                  XMRV                  U" S5      S S9  U R'                  UR(                  U   5        UR                  5         [#        URY                  SS S95      nU R!                  US5        U R+                  XMRX                  U" S5      S S9  U R'                  UR(                  U   5        UR                  5         [#        UR[                  SS S95      nU R!                  US 5        U R+                  XNRZ                  SS S9  U R'                  UR(                  U   5        UR                  5         [#        UR]                  S!S S95      nU R!                  US"5        U R+                  XMR\                  SS S9  U R'                  UR(                  U   5        UR                  5         [#        UR_                  SS S95      nU R!                  US#5        U R+                  XMR^                  S$S S9  U R'                  UR(                  U   5        UR                  5         [#        URa                  S!S S95      nU R!                  US"5        U R+                  XMR`                  S$S S9  U R'                  UR(                  U   5        UR                  5         [#        URc                  S!S%S S95      nU R!                  US&5        U R+                  XmRb                  U" S5      S%S S9  U R'                  UR(                  U   5        [d        Ul3        [#        U" S'5      Ri                  S S S(95      nU R!                  US5        [j        Ul3        [#        U" S'5      Ri                  S S S(95      nU R!                  US)5        [#        U" S'5      Ri                  [l        S S(95      nU R!                  US5        UR                  5         U R+                  XA" S5      Rh                  S S9  U R'                  UR(                  U   5        [d        Ul3        [#        U" S'5      Ro                  S S S(95      nU R!                  US5        [j        Ul3        [#        U" S'5      Ro                  S S S(95      nU R!                  US)5        [#        U" S'5      Ro                  [l        S S(95      nU R!                  US5        UR                  5         U R+                  XA" S5      Rn                  S S9  U R'                  UR(                  U   5        [d        Ul3        [#        U" S'5      Rq                  S S S(95      nU R!                  US5        [j        Ul3        [#        U" S'5      Rq                  S S S(95      nU R!                  US)5        [#        U" S'5      Rq                  [l        S S(95      nU R!                  US5        UR                  5         U R+                  XA" S5      Rp                  S S9  U R'                  UR(                  U   5        [l        Ul3        [#        U" S*5      Rs                  U" S+5      S S S,95      nU R!                  US-5        [j        Ul3        [#        U" S*5      Rs                  U" S+5      S S S,95      nU R!                  US.5        [#        U" S*5      Rs                  U" S+5      [l        S S,95      nU R!                  US-5        UR                  5         U R+                  XNRr                  U" S/5      [l        S S(9  U R'                  UR(                  U   5        S S S 5        U" U" 5       5       nSUl        SUl        SUl        U" S S09 nU R!                  UR                  S5        U R!                  UR                  S5        U R!                  UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)1Nr0  rs  i1111e9999z1e-9999r$   z1.609487E+48FTz4.709530r  z2.045323r*  r   1111000z9.999999E+999rH  r  rp  
+Subnormalz0E-1005r  Nan891287828
NaN1287828i    r  r  e   101r  rI  r  11100z1.11E+9r  r  225rX  r+   r$   r  z1.50001z1e-3)ra  r+   r$   z1.501z1.500z1e-10)r  ):r   r   r-   r  r   r   r   r   r   r   r   r   r*   re  r_  r1  rB  r=  ra  r!   rV  rv  r  r   r   lnlog10logbry   r   r   r   rg   r   capitalsr   rf  ri   rc   r   r   r  r   r  r   r   rotatescalebshiftfmar.   r+   to_integralr   r   r   r   quantize)r   r   r-   r  r   r   r   r   r   r   r   r   r  r  r  zrG  r$   s                     r   test_none_argsUsabilityTest.test_none_args  s8   ,,&&,,&&||00<<8844<<((LL**	LL**	,,&&,,&&,,&&')$AFAFAFA!A	"A MMOSt!45~FOOAGGG,-OOAGGG,-MMOht<OOAGGH-.MM!++d+3U;MM!...6=MMOSd!34jAOOAGGG,-OOAGGG,-MMO.MOOAGG$456MMOS!67DOOAGGG,-OOAGGG,-MMO.0A0A4POOAGG$456MMOS!56<ngajootLOOAGGN34MMOS!1!1$!1!?@)L.0@0@$OOOAGG$456MMOSd!;<oN.0J0JTXYOOAGG$456MMOST!:;ZH.0I0ISWXOOAGG$456MMOST!:;SAhTBOOAGGH-.S!=>MMMOS!56	BOOAGGG,-OOAGGG,-OOAGGG,-OOAGGI./OOAGGI./MMOh=OOAGGH-.AJS!>?KAJ MMOaii 7iFGCS,/.		76?TXYOOAGG$456MMOa&&tT&:;CS$'.0@0@'%.Z^_OOAGG$456MMOammCm67CS%(.sDQOOAGG$456MMOall3l56CS%(.c4POOAGG$456MMOammCm67CS$'.sDQOOAGG$456MMOaeeCe./CS%(.wvPTUOOAGG$456MMOaiiTi23CS%(.		76?TXYOOAGG$456MMOaeeCe./CS%(.wvPTUOOAGG$456MMOaiiTi23CS%(.		76?TXYOOAGG$456MMOa&&sD&9:CS$'.0@0@#tTOOAGG$456MMOahhq$h/0CS'*.#tLOOAGG$456MMOahhq$h/0CS),.%NOOAGG$456MMOaggag./CS'*.MOOAGG$456 MMOaeeAq$e/0CS%(hwx/@!TROOAGGH-. )AJgen00$0MNCS#&#AJgen00$0MNCS#&gen00(D0QRCS#&MMO.0K0KUYZOOAGG$456(AJgen66d6STCS#&#AJgen66d6STCS#&gen66RV6WXCS#&MMO.0Q0Q[_`OOAGG$456(AJgen66d6STCS#&#AJgen66d6STCS#&gen66RV6WXCS#&MMO.0Q0Q[_`OOAGG$456!AJgi(11gfoPT^b1cdCS'*#AJgi(11gfoPT^b1cdCS'*gi(11gfoPXbf1ghCS'*MMO.

GG<LW_imnOOAGG$456o %r ')$GLGLGL$'1  +  -  . (	 %$s %$z ('	 %$sB    AC3AJ
HAJ,H$AAJI9AJ,J

AJJ
AJ)	J%AJ,J,
AJ:c           	      L   U R                   R                  nU R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R	                  S5      U" S5      R	                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S5      R                  S5      U" S5      R                  U" S5      5      5        U R                  U" S	5      R!                  S5      U" S	5      R!                  U" S5      5      5        U R                  U" S5      R#                  S
5      U" S5      R#                  U" S
5      5      5        U R                  U" S5      R%                  S5      U" S5      R%                  U" S5      5      5        U R                  U" S5      R'                  S5      U" S5      R'                  U" S5      5      5        U R                  U" S5      R)                  S5      U" S5      R)                  U" S5      5      5        U R                  U" S5      R+                  U" S5      S5      U" S5      R+                  U" S5      U" S5      5      5        U R                  U" S5      R+                  SS5      U" S5      R+                  U" S5      U" S5      5      5        U R                  U" S5      R+                  SU" S5      5      U" S5      R+                  U" S5      U" S5      5      5        g )Nr  r  iu'    i7  r  r  r  i   r  r4  z9.123r  r  irz  C   )r   r   rB  rf  ri   rk   rm   rc   r   r   r  r   r  r   r   r^  r   rY  r   rZ  r[  r\  rr  s     r   test_conversions_from_int'UsabilityTest.test_conversions_from_int	  s    ,,&&++A. ++GAJ7	92215 2271:>	@11!4 11'!*=	?55a8 55gajA	C33D9 33GDMB	D2248 2274=A	C33D9 33GDMB	D))#. ))'#,7	9--c2 --gcl;	=))#. ))'#,7	9--c2 --gcl;	=11#6 11'#,?	A//4 //=	?44T: 44WT]C	E,,Q/ ,,WQZ8	:33D9 33GDMB	D)006 )00?	A++B/ ++GBK8	: 	))'"+r: ))'"+wr{C	E))"b1 ))'"+wr{C	E))"gbk: ))'"+wr{C	Er'   r   N)r   ri  rj  rk  r  r  r  r  r  r  r  r  r  r  r  r  r$  r'  r0  r:  rA  rF  r`  rf  rl  r   r'   r   r  r    st    "H1&9((5T(L<\>&(*6g;RG4+&+7ZAB-!^2m/^/Er'   r  c                       \ rS rSr\rSrg)CUsabilityTesti	  r   Nr  r   r'   r   ri  ri  	  r  r'   ri  c                   8   ^  \ rS rSr\rU 4S jrU 4S jrSrU =r	$ )PyUsabilityTesti	  c                    > [         TU ]  5         [        R                  " 5       U l        [        R
                  " S5        g NiX  superr   sysget_int_max_str_digits_previous_int_limitset_int_max_str_digitsr   r   s    r   r   PyUsabilityTest.setUp
  +    #&#=#=#? ""4(r'   c                 b   > [         R                  " U R                  5        [        TU ]  5         g r   rp  rs  rr  ro  tearDownrt  s    r   ry  PyUsabilityTest.tearDown
  "    ""4#;#;<r'   rr  
r   ri  rj  rk  r  r   r   ry  rl  __classcell__r   s   @r   rk  rk  	      G)
 r'   rk  c                   `    \ rS rSrS rS rS r\S 5       rS r	S r
S rS	 rS
 rS rS rSrg)PythonAPItestsi
  c                 l   U R                   R                  nU R                  [        U[        R
                  5      5        U R                  [        U[        R                  5      5        U R                  U" S5      [        R
                  5        U R                  U" S5      [        R                  5        g rD  )
r   r   r!   
issubclassnumbersNumberrg  Realr  assertNotIsInstancerr  s     r   test_abcPythonAPItests.test_abc
  sq    ,,&&
7GNN;<GW\\:;gaj'..9  W\\:r'   c                    [        [        R                  S-   5       GHJ  nU R                  R                  n[
        R                  S   nU R                  [
        R                  S'   U" S5      n[        R                  " XA5      n[        R                  " U5      nU R                  XF5        [        (       Ga  [        R	                  S5      n[        R	                  S5      n[        [
        R                  S'   [        R                  " Xq5      n	[        [
        R                  S'   [        R                  " U	5      n
U R                  U
[        R                  5        U R                  X5        [        [
        R                  S'   [        R                  " X5      n[        [
        R                  S'   [        R                  " U5      n
U R                  U
[        R                  5        U R                  X5        [        R	                  S5      R                  5       n[        R	                  S5      R                  5       n[        [
        R                  S'   [        R                  " Xq5      n	[        [
        R                  S'   [        R                  " U	5      n
U R                  U
[        R                  5        U R                  X5        [        [
        R                  S'   [        R                  " X5      n[        [
        R                  S'   [        R                  " U5      n
U R                  U
[        R                  5        U R                  X5        U[
        R                  S'   GMM     g )Nr  r   z-3.141590000z-3.123e81723)r  pickleHIGHEST_PROTOCOLr   r   rp  modulesdumpsloadsrB  r   r  r  r/  DecimalTuple)r   protor   savedecimalr   r?  rP  r  r  sxr  sys               r   test_picklePythonAPItests.test_pickle
  sF   622Q67Ell**G++i0K &*\\CKK	"'AQ&AQAQ"qIIn-IIn-)*I&\\!+)*I&LL$%%a3  &)*I&\\!+)*I&LL$%%a3  &IIn-668IIn-668)*I&\\!+)*I&LL$%%a8  &)*I&\\!+)*I&LL$%%a8  &%0CKK	"a 8r'   c           	      P   U R                   R                  n[        SS5       H|  nSUS-  -  nU R                  [	        U" U5      5      [	        [        U5      5      5        U" U5      nUR                  [        5      nU R                  U" [	        U5      5      U5        M~     U R                  [        [        U" S5      5        U R                  [        [        U" S5      5        U R                  [        [        U" S5      5        U R                  [        [        U" S5      5        g )	N   %0.2f      Y@r  r"  r  r  )r   r   r  rB  r  r  r]  r   rv  r  r  r   r   r  r   r   r  s         r   test_intPythonAPItests.test_intH
  s    ,,&&tS!A1u9%AS_c%(m<
Aj)AWSV_a0 " 	*c76?;*c76?;-gen=-gfo>r'   c                     U R                   R                  n[        SS5       H$  nU R                  [	        U" U5      5      U5        M&     g )Nr  i  )r   r   r  r  r  r   r   r  s      r   test_small_intsPythonAPItests.test_small_intsY
  s7    ,,&&r3AMM#gaj/1-  r'   c           	      ^   U R                   R                  n[        SS5       H  nSUS-  -  nU R                  [	        U" U5      5      [	        [        U5      5      5        U" U5      nUR                  [        5      nU R                  U" [        R                  " U5      5      U5        M     g )Nr  r  r  r  )
r   r   r  rB  r  r  r]  r   r  truncr  s         r   
test_truncPythonAPItests.test_trunc`
  s    ,,&&tS!A1u9%AS_c%(m<
Aj)AWTZZ]3Q7 "r'   c           	         U R                   R                  n " S SU5      nU R                  [        X!5      5        UR	                  S5      nU R                  [        U5      U5        U R                  [        U5      S5        U R                  UR                  S5        SnU R                  UR	                  U5      U" U5      5        U R                  UR	                  [        S5      5      R                  5       5        U R                  UR	                  [        S5      5      R                  5       5        U R                  UR	                  [        S	5      5      R                  5       5        U R                  [        UR	                  [        S5      5      5      [        U" S
5      5      5        U R                  [        UR	                  [        S5      5      5      [        U" S5      5      5        U R                  [        UR	                  [        S	5      5      5      [        U" S5      5      5        U R                  [        UR                  S5        [        S5       H_  n[        R                   " S5      [        R                  " 5       S-  S-
  -  nU R                  U[        UR	                  U5      5      5        Ma     g )Nc                       \ rS rSrS rSrg)1PythonAPItests.test_from_float.<locals>.MyDecimalip
  c                     SU l         g )Nr  r  )r   r  s     r   r
  :PythonAPItests.test_from_float.<locals>.MyDecimal.__init__q
  s	    r'   r  Nr  r   r'   r   r?  r  p
  s    r'   r?  r  r  r  l   s\&5$3|	 r  r  r  r  r  r  abcr  r  r  r  )r   r   r!   r  r  rB  r<  r=  r  r  r   r   rv  r4  r  r0  r  )r   r   r?  r  bigintrN  r  s          r   test_from_floatPythonAPItests.test_from_floatl
  s   ,,&&	 	 	
967  %a),QK	Mc".--f5y7HI	,,U5\:BBDE	,,U5\:FFHI	,,U6];GGIJY11%,?@WU^,	.Y11%,?@WZ01	3Y11%-@AW[12	4)Y%9%95AsA""4(FMMOc,AC,GHAQi&:&:1&= >? r'   c                    U R                   R                  nU R                   R                  nU R                   R                  nU" S[        S9nU R                  UR                  [        R                  5      U" S5      5        U" S[        S9nU R                  UR                  [        R                  5      U" S5      5        U" SU/S9nU R                  UUR                  [        R                  5        U R                  [        UR                  S5      5      S5        U R                  [        UR                  S5      5      S	5        U R                  [        UR                  S
5      5      S5        g )Nr  )r*   r+   z3.1415rk  )r*   r,          zDecimal('-0')r  zDecimal('1')r  zDecimal('10'))r   r   r-   r   r   rB  create_decimal_from_floatr  pir   rv  rA  )r   r   r-   r   r$   s        r   test_create_decimal_from_float-PythonAPItests.test_create_decimal_from_float
  s5   ,,&&,,&&,,&&q:6--dgg6H	
 q84--dgg6H	
 q	2--GG	

 	g??EF(	*g??DE'	)g??CD(	*r'   c                 8   U R                   R                  nU R                   R                  nU R                   R                  nU" SSS9nU R	                  U" S5      R                  U" S5      5      U" S5      5        U R	                  U" S5      R                  U" S5      [        S9U" S5      5        U R                  UU" S	5      R
                  U" S
5      US9  U" 5       nU" S5      nUR                  XA" S5      [        S9nU R	                  Xa" S5      5        g )Ni iayr  z7.335r  z7.34r+   z7.3310e999991e100000rK  z0.871831e8001e797)r$   ra  r+   z	8.71E+799)r   r   r-   r   rB  r^  r   rv  )r   r   r-   r   r  r   r  s          r   test_quantizePythonAPItests.test_quantize
  s   ,,&&,,&&<<88V,G%%gen5FO	
 	G%%genz%JFO	
 	J(('**=q 	 	

 IN#JJqgg&6JLGK01r'   c                 B   U R                   R                  nU" S5      nU R                  UR                  U5        U R                  UR                  S5        U R                  UR                  5       U5        U" S5      nU R                  [        U5      [        [        S5      5      5        U R                  [        [        USS5        U R                  [        [        USS5        U R                  [        [        USS5        U R                  [        [        US	S5        g )
Nz9.8182731e181273r   r  r  realr  imag	conjugate__complex__)r   r   rB  r  r  r  complexr  rv  r5  rK  r  s      r   test_complexPythonAPItests.test_complex
  s    ,,&&&'##*CLWU1X%67.'1fcB.'1fcB.'1k3G.'1mSIr'   c           	         U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU" 5       nSUl        SUl        SUl        U" 5        nUR                  5         U R                  U" SU5      S5        U R                  U" SUS9S5        U R                  U" USS9S5        U R                  U" US9S5        UR                  5         U R                  XASUS9  U R                  UR                  U   5        U R                  UR                  U   5        UR                  5         U R                  U" S5      R                  US9S	5        U R                  XQ" S
5      R                  US9  U R                  UR                  U   5        U R                  UR                  U   5        UR                  5         U R                  U" S5      R!                  US9U" S5      5        U R                  XA" S5      R                   US9  U R                  UR                  U   5        U R                  UR                  U   5        U R                  U" S5      R#                  US9U" S5      5        U R                  U" S5      R%                  US9S5        U R                  U" S5      R'                  US9U" S5      5        U R                  U" S5      R)                  US9U" S5      5        U R                  U" S5      R+                  US9S5        U R                  U" S5      R-                  US9S5        U R                  U" S5      R/                  US9S5        U R                  U" S5      R1                  US9U" S5      5        U R                  U" S5      R3                  USS9S5        UR                  5         U R                  UU" S5      R4                  U" S5      US9  U R                  UR                  U   5        U R                  UR                  U   5        U R                  U" S5      R7                  U" S5      US9U" S5      5        U R                  U" S5      R7                  U" S5      US9U" S5      5        U R                  U" S5      R9                  U" S 5      US9U" S 5      5        U R                  U" S!5      R;                  U" S"5      US9U" S#5      5        U R                  U" S!5      R=                  U" S"5      US9U" S5      5        U R                  U" S5      R?                  U" S$5      US9U" S%5      5        UR                  5         U R                  UU" S5      R@                  U" S&5      US9  U R                  UR                  U   5        U R                  UR                  U   5        U R                  U" S'5      RC                  U" S(5      US9U" S)5      5        U R                  U" S*5      RE                  U" S+5      US	S,9U" S-5      5        U R                  [F        U" S5      RH                  US9  U R                  [F        U" S5      RJ                  US9  U R                  [F        U" S5      RL                  US9  U R                  [F        U" S5      RN                  US9  U R                  [F        U" S5      RP                  US9  U R                  [F        U" S5      RR                  US9  U R                  [F        U" S5      RT                  US9  U R                  [F        U" S5      RV                  US9  U R                  U" S5      RY                  US95        U R                  U" S5      R[                  US95        U R                  [F        U" S5      R\                  US9  U R                  [F        U" S5      R^                  US9  U R                  [F        U" S5      R`                  US9  U R                  U" S.5      Rc                  US9S5        U R                  U" S5      Re                  US9S5        U R                  U" S5      Rg                  US9S/5        U R                  U" S05      Ri                  US9S05        U R                  U" S15      Rk                  U" S25      US9S5        U R                  U" S15      Rm                  U" S25      US9S5        U R                  U" S35      Ro                  U" S25      US9S5        U R                  U" S45      Rq                  SUS9S5        U R                  U" S45      Rq                  SUS9S5        UR                  5         U R                  UU" S45      Rr                  SUS9  U R                  UR                  U   5        U R                  UR                  U   5        U R                  U" S45      Ru                  SUS9S5        U R                  [F        URv                  S5US9  U R                  [F        U" S5      Rx                  US9  U R                  U" S5      R{                  5       S5        U R                  [F        U" S$5      R|                  US9  U R                  [F        U" S$5      R~                  US9  U R                  [F        U" S5      Rz                  S6S9  U R                  [F        U" S5      Rz                  S6S79  S S S 5        g ! , (       d  f       g = f)8Nr  r  r)   rK  )r$   r  r   r  r  r0  r  z0.7r  r  z-0.9z9.73z1E+19999'  z-2000i0r~  r  z0.06250.2r  )r$   r  rp  r  0.01z0.0101r\  z-0.3z0.02z-0.03r  r  r  1e109.99rX  r  9.9z0.9)thirdr$   r  z7E+1irM  z0.2111rI  0123g?r  )r  )@r   r   r-   r  r   r   r*   re  r_  r1  rB  rv  r!   rV  rg  ra  rU  rV  r   r   r   r]  r   r   r   rf  ri   r  r   r  r   r   r^  r   r\  r4  r{   r}   r   r   r   r   r   r   r   r   adjustedr  radixrW  ry   rg   r   rc   r   r   rY  rZ  r[  r  r/  	canonicalrq   rs   )r   r  r-   r  r   r   xcr  s           r   test_named_parameters$PythonAPItests.test_named_parameters
  s	   LL  ,,&&||00<<88<<((Y^qMMOQq"Xq)Qq"-q1Qr3Q7Qr]A.NN.5"EOOBHH%567QWW%567NNQqTXXbX115h!"=OOBHHX./QWWX./NNQqTWWRW0!E(;.""EOOBHH%567QWW%567QqTZZZ3QvY?QrU--b-92>QrU__R_8!F)DQvY000<aiHQvY2222>EQwZ99"9EuMQuX777CSIQx[--b-91U8DQx[0010ErJNN.f33QuXr  KOOBHH%567QWW%567QvY]]1X;]CQuXNQvY]]1X;]CQuXNQuX--ai-DvY(QvY]]1W:r]BAfINQvY..qz2.FuX'QuX11!D'21F%QNN.h//6B  HOOBHH%567QWW%567QvY55ah5KvY( QuX\\%"A\NvY( i1):):BGi1Di1)9)92Fi1bAi1rBi1rBi1Di1rBQvY000<=OOAfI2222>?i1Ci1Di1R@QtW\\"\5q9QqT000<a@QvY33B3?NQvY44R4@&IQtW004"0EqIQtW//$/DaHQtW004"0EqIQtW^^Ar^:A>QtW^^Ar^:A>NNhgnna  =OOBHHX./QWWX./QtW]]2r]:A>isBGi1CQqT^^-q1i4)9)92Fi4)<)<bIi1Ei1SAE ^^s   j(m
mc                    U R                   nUR                  nUR                  nUR                  nUR                  nUR
                  nUR                  nUR                  nUR                  n	UR                  n
UR                  nU R                  [        U[        5      5        U R                  [        X25      5        U R                  [        XB5      5        U R                  [        U[        5      5        U R                  [        XR5      5        U R                  [        U[        5      5        U R                  [        Xj5      5        U R                  [        Xi5      5        U R                  [        Xb5      5        U R                  [        Xy5      5        U R                  [        Xz5      5        U R                  [        Xx5      5        U R                  [        Xr5      5        U R                  [        X5      5        U R                  [        X5      5        U R                  [        X5      5        U R                  [        X5      5        U R                  [        UR                   U5      5        U R                  [        UR"                  U5      5        U R                  [        UR$                  U5      5        U R                  [        UR$                  [        5      5        U R                  [        UR&                  U5      5        g r   )r   r   r   FloatOperationr   r   r   r   r   r   r   r!   r  ArithmeticErrorr4  ZeroDivisionErrorConversionSyntaxDivisionImpossibleDivisionUndefinedInvalidContext)r   r   r   r   r  r   r   r   r   r   r   r   s               r   test_exception_hierarchy'PythonAPItests.test_exception_hierarchy@  s!   ,,"33"33 // //##%%	%%	//////
#3_EF
#3FG
>DE
>9=>
>DE
>3DEF
856
856
8>?
967
967
989
9?@
9?@
7=>
7=>
7=>
7#;#;=MNO
7#=#=?OPQ
7#<#<>NOP
7#<#<>OPQ
7#9#9;KLMr'   r   N)r   ri  rj  rk  r  r  r  r	   r  r  r  r  r  r  r  r  rl  r   r'   r   r  r  
  sP    ;11f?" . .
8@@*820J nB`&Nr'   r  c                       \ rS rSr\rSrg)CPythonAPItestsih  r   Nr  r   r'   r   r  r  h  r  r'   r  c                       \ rS rSr\rSrg)PyPythonAPItestsik  r   Nr  r   r'   r   r  r  k  r  r'   r  c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@rBgA)BContextAPItestsin  c                    U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU" 5       nU" S S S S S S S S S9nXV4 H  nU R                  UR                  S5        U R                  UR                  [        5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        [        XS/ 5        [        XSX#U/5        M     g )	N)r*   r+   re  r_  rX  ra   rV  r,   r  ?B r  r   rV  r,   )r   r-   r   r   r   rB  r*   r+   r.   re  r_  rX  ra   r&   )r   r-   r   r   r   rm  rk  r  s           r   r`  ContextAPItests.test_none_argsp  s	   ,,&&<<8844<<((Y$Dt"$d$HAQVVR(QZZ9QVVV,QVVW-QZZ+QWWa(4GR04G.>.6.8 9 r'   c                    [        [        R                  S-   5       GH=  nU R                  R                  n[
        R                  S   nU R                  [
        R                  S'   U" 5       n[        R                  " [        R                  " XA5      5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                   UR                   5        U R                  UR"                  UR"                  5        [$        (       a  [$        [&        4[&        [$        4/O[&        [&        4/nU GHH  u  px[)        [*        5       GH.  u  p[)        [,        U   5       GH  u  p[)        [,        U   5       GH  u  p[.        R0                  " SS5      n[.        R0                  " SS5      n[.        R0                  " SS5      n[.        R0                  " S5      n[.        R0                  " S5      nU[
        R                  S'   UR	                  XU[*        U	   UU[,        U   S U [,        U   S U S9n[        R                  " XA5      nU[
        R                  S'   [        R                  " U5      nU R3                  UUR                  5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR                  [*        U	   5        U R                  UR                  U5        U R                  UR                  U5        [5        U US[,        U   S U 5        [5        U US	[,        U   S U 5        GM     GM     GM1     GMK     U[
        R                  S'   GM@     g )
Nr  r   r  rd  r   r  )r*   r_  re  r+   rX  ra   rV  r,   rV  r,   )r  r  r  r   r-   rp  r  r  r  rB  r*   r_  re  r+   rX  ra   rV  r,   r   r  r7  RoundingModesr;  r0  	randranger  r&   )r   r  r-   r  r  rP  combinationsdumperloaderrir  fitir*   r  r  capsra   r   r   s                       r   r  ContextAPItests.test_pickle  sG   622Q67Ell**G++i0K &*\\CKK	"	AV\\!34AQVVQVV,QVVQVV,QVVQVV,QZZ4QZZ4QWWagg.QWWagg.QWWagg. 01qQFQF+1vhL".&}5EB!*>&+A!B%.~f/E%FEB#)#3#3As#;D#)#3#3D!#<D#)#3#3As#;D#)#3#3A#6D$*$4$4Q$7E 6<CKK	2 &'+T+8+<+/u(6v(>s(C(6v(>s(C !/ !A !'Q 6A 6<CKK	2 &QA 11!V^^D ,,QVVT: ,,QVVT: ,,QVVT: ,,QZZr9JK ,,QZZ> ,,QWWe<*4G^F=STWUW=XY*4G^F=STWUW=XY? &G "C 6 #/H &1CKK	"s 8r'   c                     U R                   R                  nU R                  U" S5      SSU" S5      S0 /5        U R                  U" S5      SSS0 /5        g )Nr  r  r  )r  r  )r   r   assertInassertNotInrr  s     r   test_equality_with_other_types.ContextAPItests.test_equality_with_other_types  sO    ,,&&gbkCgbk5"#EFsC&;<r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  5       nU R	                  [        U5      [        U5      5        U R	                  [        UR                  5      [        UR                  5      5        U R	                  [        UR                  5      [        UR                  5      5        [        UR                  R                  5       5      n[        UR                  R                  5       5      nU R                  XV5        U R                  UR                  UR                  5        g r   )r   r   r-   rn   r  rE  rV  r,   r   keysrB  )r   r   r-   r  r   k1k2s          r   	test_copyContextAPItests.test_copy  s    ,,&&,,&&IFFHBqE2a5)BqwwKAGG5BqwwKAGG5   !''*r'   c                 v    U R                   R                  nU" 5       nU R                  [        [        US5        g )N_clamp)r   r-   rv  r5  r    r   r-   r  s      r   test__clampContextAPItests.test__clamp  s.     ,,&&I.'1h?r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g Nr  r  )r   r   r-   rD  rB  rv  r4  r   r   r-   r  r   s        r   test_absContextAPItests.test_abs  g    ,,&&,,&&IEE'"+rA&)QUUD1r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g Nr  r  )r   r   r-   r   rB  rv  r4  r
  s        r   test_addContextAPItests.test_add      ,,&&,,&&IEE'!*gaj)q!a(wqz1-q1q'!*-q1)QUUC3)QUUAs3r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   rf  rB  rv  r4  r
  s        r   test_compareContextAPItests.test_compare      ,,&&,,&&IIIgaj'!*-1a!,71:q1151gaj115)QYYQ7)QYY37r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   ri   rB  rv  r4  r
  s        r   test_compare_signal#ContextAPItests.test_compare_signal      ,,&&,,&&IWQZ4))!Q/3))'!*a8!<))!WQZ8!<)Q%5%5sA>)Q%5%5q#>r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   rk   rB  rv  r4  r
  s        r   test_compare_total"ContextAPItests.test_compare_total  s    ,,&&,,&&IOOGAJ
3A.2Q7;GAJ7;)Q__c1=)Q__a=r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   rm   rB  rv  r4  r
  s        r   test_compare_total_mag&ContextAPItests.test_compare_total_mag  s    ,,&&,,&&I
GAJ7,,Q2A6,,WQZ;Q?,,Q
;Q?)Q%8%8#qA)Q%8%8!SAr'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r	  )r   r   r-   rq   rB  rv  r4  r
  s        r   test_copy_absContextAPItests.test_copy_abs&  sg    ,,&&,,&&IJJwr{#B+)QZZ6r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r	  )r   r   r-   ro   rB  rv  r4  r
  s        r   test_copy_decimal!ContextAPItests.test_copy_decimal/  h    ,,&&,,&&INN72;'+Q/)Q^^T:r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r	  )r   r   r-   rs   rB  rv  r4  r
  s        r   test_copy_negate ContextAPItests.test_copy_negate8  h    ,,&&,,&&IMM'"+&r*A.)Q]]D9r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g )Nr  r  r  rY  )r   r   r-   ru   rB  rv  r4  r
  s        r   rZ  ContextAPItests.test_copy_signA  s    ,,&&,,&&IKK
GBK0Q+Q/WQZ4a8Q4a8)Q[[#r:)Q[[!T:r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g Nr  r  r  r*  )r   r   r-   re  rB  rv  r4  r
  s        r   test_divideContextAPItests.test_divideM      ,,&&,,&&IHHWQZ,!Q+'!*a0!4!WQZ0!4)QXXsA6)QXXq#6r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   rw   rB  rv  r4  r
  s        r   test_divide_intContextAPItests.test_divide_intY      ,,&&,,&&ILLWQZ0a+Q/gaj!4a8a4a8)Q\\3:)Q\\1c:r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   rJ  rB  rv  r4  r
  s        r   test_divmodContextAPItests.test_divmode  r2  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g Nr  rI  )r   r   r-   ra  rB  rv  r4  r
  s        r   test_expContextAPItests.test_expq  r  r'   c           	         U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      U" S5      5      nU R	                  UR                  SSS5      U5        U R	                  UR                  U" S5      SS5      U5        U R	                  UR                  SU" S5      S5      U5        U R	                  UR                  SSU" S5      5      U5        U R	                  UR                  U" S5      U" S5      S5      U5        U R                  [        UR                  SSS5        U R                  [        UR                  SSS5        U R                  [        UR                  SSS5        U R                  [        UR                  U" S5      U" S5      S	5        U R                  [        UR                  U" S
5      U" S5      S5        U R                  [        U" S5      R                  U" S5      S	5        U R                  [        U" S
5      R                  U" S5      S5        g )Nr  r  r  r*  rh  4r  r   znot a decimalr  r"  gZd;O?)r   r   r-   r\  rB  rv  r4  r
  s        r   test_fmaContextAPItests.test_fmaz  s   ,,&&,,&&IEE'!*gaj'!*5q!Q+wqz1a0!4q'!*a0!4q!WQZ0!4wqz71:q91=)QUUCA6)QUUAsA6)QUUAq#6 	)QUU!*-wqz?	L)QUU!!*gfou	> 	)WZ%8%<%<!!*o	7)WQZ^^!&/5	2r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r}   rB  rv  r4  r
  s        r   test_is_finiteContextAPItests.test_is_finite  g    ,,&&,,&&IKK$R!,)Q[[$7r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_infinite ContextAPItests.test_is_infinite  r+  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_nanContextAPItests.test_is_nan  sg    ,,&&,,&&IHHWR[!"q))QXXt4r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_normalContextAPItests.test_is_normal  rE  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_qnanContextAPItests.test_is_qnan  g    ,,&&,,&&IIIgbk"2*)QYY5r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_signedContextAPItests.test_is_signed  rE  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_snanContextAPItests.test_is_snan  rR  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_subnormal!ContextAPItests.test_is_subnormal  r'  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_is_zeroContextAPItests.test_is_zero  rR  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   rU  rB  rv  r4  r
  s        r   test_lnContextAPItests.test_ln  sg    ,,&&,,&&IDDb1%)QTT40r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   rV  rB  rv  r4  r
  s        r   
test_log10ContextAPItests.test_log10  g    ,,&&,,&&IGGGBK a()QWWd3r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   rW  rB  rv  r4  r
  s        r   	test_logbContextAPItests.test_logb  g    ,,&&,,&&IFF72;Q')QVVT2r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   rc   rB  rv  r4  r
  s        r   test_logical_and ContextAPItests.test_logical_and       ,,&&,,&&IMM'!*gaj1q!,a0wqz15q9q'!*5q9)Q]]C;)Q]]As;r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g )Nr4  r  )r   r   r-   ry   rB  rv  r4  r
  s        r   test_logical_invert#ContextAPItests.test_logical_invert  sn    ,,&&,,&&IWT]+))$/3)Q%5%5v>r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   r   rB  rv  r4  r
  s        r   test_logical_orContextAPItests.test_logical_or  r6  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r  )r   r   r-   r   rB  rv  r4  r
  s        r   test_logical_xor ContextAPItests.test_logical_xor!  rm  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r  rB  rv  r4  r
  s        r   test_maxContextAPItests.test_max-  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r   rB  rv  r4  r
  s        r   test_max_magContextAPItests.test_max_mag9  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r  rB  rv  r4  r
  s        r   test_minContextAPItests.test_minE  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r   rB  rv  r4  r
  s        r   test_min_magContextAPItests.test_min_magQ  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   minusrB  rv  r4  r
  s        r   
test_minusContextAPItests.test_minus]  re  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   rt  rB  rv  r4  r
  s        r   test_multiplyContextAPItests.test_multiplyf      ,,&&,,&&IJJwqz71:.Aq)1-GAJ2A6Awqz2A6)QZZa8)QZZC8r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_next_minusContextAPItests.test_next_minusr  sh    ,,&&,,&&ILL%b)1-)Q\\48r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_next_plusContextAPItests.test_next_plus{  rE  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r   rB  rv  r4  r
  s        r   test_next_toward ContextAPItests.test_next_toward  rm  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_normalizeContextAPItests.test_normalize  rE  r'   c                    U R                   R                  nU R                   R                  nU" 5       nU R                  UR	                  S5      UR	                  U" S5      5      5        U R                  UR	                  S5      UR	                  U" S5      5      5        U R                  UR	                  S5      UR	                  U" S5      5      5        g )Nr  r   r~  )r   r   r-   rB  rg   )r   r   r-   r  s       r   test_number_class!ContextAPItests.test_number_class  s    ,,&&,,&&I,annWS\.JK*ANN71:,FG,annWS\.JKr'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   plusrB  rv  r4  r
  s        r   	test_plusContextAPItests.test_plus  ri  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R	                  UR                  U" S5      U" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R	                  UR                  SSSS9S5        g )	Nr  r  r  r?  r  r  r  )modulor  r  )r   r   r-   powerrB  rv  r4  r
  s        r   
test_powerContextAPItests.test_power  s	   ,,&&,,&&IGGGAJ
+A*Q/3GAJ/3WQZ8!<)QWWc15)QWWa5Q!4a8r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r^  rB  rv  r4  r
  s        r   r  ContextAPItests.test_quantize  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   	remainderrB  rv  r4  r
  s        r   test_remainderContextAPItests.test_remainder  s    ,,&&,,&&IKK
GAJ/Q*A.WQZ3Q7Q
3Q7)Q[[#q9)Q[[!S9r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r   rB  rv  r4  r
  s        r   test_remainder_near#ContextAPItests.test_remainder_near  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   rY  rB  rv  r4  r
  s        r   test_rotateContextAPItests.test_rotate  r2  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   	test_sqrtContextAPItests.test_sqrt  ri  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r   rB  rv  r4  r
  s        r   test_same_quantum!ContextAPItests.test_same_quantum  s    ,,&&,,&&INN71:wqz21-q1
A6:71:6:)Q^^S!<)Q^^Q<r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   rZ  rB  rv  r4  r
  s        r   test_scalebContextAPItests.test_scaleb  r2  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   r[  rB  rv  r4  r
  s        r   
test_shiftContextAPItests.test_shift
  s    ,,&&,,&&IGGGAJ
+A*Q/3GAJ/3)QWWc15)QWWa5r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      U" S5      5      nU R	                  UR                  SS5      U5        U R	                  UR                  U" S5      S5      U5        U R	                  UR                  SU" S5      5      U5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g r/  )r   r   r-   subtractrB  rv  r4  r
  s        r   test_subtractContextAPItests.test_subtract  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_to_eng_string"ContextAPItests.test_to_eng_string"  h    ,,&&,,&&IOOGBK(,a0)Q__d;r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_to_sci_string"ContextAPItests.test_to_sci_string+  r  r'   c                    U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        g r;  )r   r   r-   r   rB  rv  r4  r
  s        r   test_to_integral_exact&ContextAPItests.test_to_integral_exact4  sn    ,,&&,,&&I,,,R0!4)Q%8%8$?r'   c                 `   U R                   R                  nU R                   R                  nU" 5       nUR                  U" S5      5      nU R	                  UR                  S5      U5        U R                  [        UR                  S5        U R                  [        UR                  SS5        g )Nr  rI  r  )r   r   r-   r   rB  rv  r4  r
  s        r   test_to_integral_value&ContextAPItests.test_to_integral_value=  s    ,,&&,,&&I,,,R0!4)Q%8%8$?)Q%8%8"cBr'   r   N)Cr   ri  rj  rk  r`  r  r  r  r  r  r  r  r  r  r  r"  r%  r)  rZ  r0  r4  r8  r<  r@  rC  rG  rJ  rM  rP  rT  rW  rZ  r]  r`  rc  rg  rk  ro  rr  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rl  r   r'   r   r  r  n  s>   9(;1z=+	@2
4
8
?
>
B7;:
;
7
;
72248:58686;6143
<?
;
<
4
8
4
84
998
<8L39
9
:
?
73
=
7
6
9<<@Cr'   r  c                       \ rS rSr\rSrg)CContextAPItestsiG  r   Nr  r   r'   r   r  r  G  r  r'   r  c                       \ rS rSr\rSrg)PyContextAPItestsiJ  r   Nr  r   r'   r   r  r  J  r  r'   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)ContextWithStatementiM  c                 8   U R                   R                  nU R                   R                  nU" 5       nU" 5        nU" 5       nS S S 5        U" 5       nU R                  X6S5        U R	                  UWS5        U R                  UWS5        g ! , (       d  f       NN= f)N!did not restore context correctlydid not copy the context __enter__ returned wrong context)r   r  r  r  assertIsNot)r   r  r  orig_ctx	enter_ctxset_ctx	final_ctxs          r   test_localcontext&ContextWithStatement.test_localcontextQ  s|    \\,,
||00<^y lG L	h+NO7,FGgy*LM ^s   B
Bc                    U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU" 5       nU" SS9nU" U5       nU" 5       nS S S 5        U" 5       nU R	                  XHS5        U R                  WR                  UR                  S5        U R                  XWS5        U R	                  UWS5        g ! , (       d  f       Nt= f)Nr  r*   r  zdid not set correct contextr  r  )r   r-   r  r  r  rB  r*   r  )	r   r-   r  r  r  new_ctxr  r  r  s	            r   test_localcontextarg)ContextWithStatement.test_localcontextarg^  s    ,,&&\\,,
||00||00<r"'"i lG #L	h+NOw||5RS+EFgy*LM #"s   .C$$
C2c           	      |   U R                   R                  S[        SSSSS9 nU R                  UR                  S5        U R                  UR
                  U R                   R                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        S S S 5        U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  S	S
9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS9  U R                  [        U R                   R                  SS
9  g ! , (       d  f       GN= f)Nr  i   r   r  )r*   r+   r_  re  rX  ra   )r^   r_  r  re  r  rX  ra   r   r  rV  r,   )r   r  r   rB  r*   r+   r_  re  rX  ra   rv  r4  r  r  s     r   test_localcontext_kwargs-ContextWithStatement.test_localcontext_kwargso  s   \\&&o2 ' 
 SXXr*S\\4<<+G+GHSXXs+SXXr*S\\1-SYY*
 	)T\\%>%>"M*dll&?&?aH*dll&?&?bI*dll&?&?!L*dll&?&?qI)T\\%>%>L)T\\%>%>K)T\\%>%>bI)T\\%>%>bI)T\\%>%>RH)T\\%>%>RH3
 
s   B=J,,
J;c                    U R                   R                  5       nUR                  nU R                   R                  SS9 nU R	                  UR                  S5        U R	                  UR                  U5        S S S 5        U R                   R                  SS9 nU R	                  UR                  S5        U R	                  UR                  U5        S S S 5        g ! , (       d  f       Ni= f! , (       d  f       g = f)Nr  r  r  )r   r  r*   r  rB  )r   r  	orig_precctx2s       r   >test_local_context_kwargs_does_not_overwrite_existing_argumentSContextWithStatement.test_local_context_kwargs_does_not_overwrite_existing_argument  s    ll%%'HH	\\&&B&/4TYY+SXXy1 0 \\&&B&/4TYY+SXXy1 0/ 0/ 0/s    9C9C-
C*-
C;c           	         U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU R                   R                  nU" 5       nUR                  5         U" SS9nU" 5        n	U R                  U	R                  UR                  5        U R                  U	R                  UR                  5        SU	R                  U'   SU	l        U R                  UR                  S5        U R                  XYR                  S5        U R                  U	R                  U   5        U" U5       n
U R                  U
R                  UR                  5        U R                  U
R                  UR                  5        U R                  XjR                   U" S5      S5        U R#                  U
R                  U   5        U R                  U
R                  U   5        A
S S S 5        U R#                  U	R                  U   5        A	S S S 5        U R                  UR                  S5        U R#                  UR                  U   5        U R#                  UR                  U   5        U R#                  UR                  U   5        U R#                  UR                  U   5        g ! , (       d  f       N= f! , (       d  f       N= f)N  r  Tz0e-999z3.4e200r  )r   r   r-   r  r  r   r   r1  rB  rV  r,   r_  r  rv  r   r!   r  rg  )r   r   r-   r  r  r   r   r  r  rm  rk  s              r   test_nested_with_statements0ContextWithStatement.test_nested_with_statements  s1   ,,&&,,&&\\,,
||00,,&&<<((<s#^rRXXx~~6RXXx~~6 $BHHWBGt4g'8'8(COOBHHW-.g&"  7==9  7==9!!(HHgi6H!L  '!23 23 ' RXXh/0! " 	HMM400112w/0x01 '& ^s&   )CK,*B-K'K,
K)	%K,,
K:c           	      @   U R                   R                  nU" 5        nAU" 5        nAU" 5        nAU" 5        nAS S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N'= f! , (       d  f       N0= f! , (       d  f       N9= f! , (       d  f       g = fr   r   r  r   r  rm  rk  rl  c4s         r   test_with_statements_gc1-ContextWithStatement.test_with_statements_gc1  so    ||00^r2!^r%2 ( $   ^ ( $^   ^sO   	B	A>	A-A	A-A>B
A*&A--
A;7A>>
B	B
Bc           	      F   U R                   R                  nU" 5        nU" U5       nAU" U5       nAU" U5       nAAS S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N'= f! , (       d  f       N0= f! , (       d  f       N9= f! , (       d  f       g = fr   r  r  s         r   test_with_statements_gc2-ContextWithStatement.test_with_statements_gc2  s{    ||00^rb!R!"%%b)R * & " ^
 *) &% "! ^sO   	B
B
A0A	A0BB
A-)A00
A>:B
B	B
B c           	         U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU" 5        nAU" SS9nU" U5        U" U5       nAU R                  UR                  S5        AU" SS9nU" U5        AU R                  U" 5       R                  S5        U" SS9n	U" U	5        U R                  U" 5       R                  S5        U" U	5       n
A	U R                  U
R                  S5        A
U" SS9nU" U5        AU R                  U" 5       R                  S5        U" 5        nU R                  UR                  S5        AS S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N'= f! , (       d  f       N0= f! , (       d  f       N9= f! , (       d  f       g = f)Nr  r  r  r  r  )r   r-   r  r  r2   rB  r*   )r   r-   r  r  r2   rm  n1rk  n2n3rl  n4r  s                r   test_with_statements_gc3-ContextWithStatement.test_with_statements_gc3  st   ,,&&||00\\,,
\\,,
^raBrNb!R  !,!_2  !2!2A6!_2  !2!2A6!"%$$RWWa0 aBrN$$Z\%6%6:%2((!4 ( & "	 ^. ( &% "!	 ^sV    G8BF5>AF$F	2F$:F5G
F!F$$
F2.F55
G	?G
Gr   N)r   ri  rj  rk  r  r  r  r  r  r  r  r  rl  r   r'   r   r  r  M  s.    NN"I82!2F

r'   r  c                       \ rS rSr\rSrg)CContextWithStatementi  r   Nr  r   r'   r   r  r    r  r'   r  c                       \ rS rSr\rSrg)PyContextWithStatementi  r   Nr  r   r'   r   r	  r	    r  r'   r	  c                   <    \ rS rSrS rS r\S 5       rS rS r	Sr
g)	ContextFlagsi  c                 6  ^  T R                   R                  nT R                   R                  nT R                   R                  nT R                   R                  nT R                   R
                  nT R                   R                  nT R                   R                  nU 4S jnU" SSS[        / / S9n	U	R                  U" S5      /4U	R                  U" S5      /4U	R                  U" S5      U" S	5      /4U	R                  U" S5      U" S	5      /4U	R                  U" S5      U" S	5      /4/n
U/U/U/U/U/X4XVU//nU
 GHK  u  pU	R                  5         U" U6 nU	R                  R!                  5        VVs/ s H  u  nnU(       d  M  UPM     nnnU H  nU	R                  5         U H  nU" U	U5        M     U" U6 n[#        U5      nU H  nUU;  d  M  UR%                  U5        M     UR'                  [(        S
9  U	R                  R!                  5        VVs/ s H  u  nnU(       d  M  UPM     nnnUR'                  [(        S
9  T R+                  UUSSU< SU< S3-   5        T R+                  UUSSU< SU< 3-   5        M     GMN     g s  snnf s  snnf )Nc                    > TR                   [        :X  a&  SU R                  U'   U R                  U   (       a  Ueg U R	                  U5        g NT)r   r   rV  r,   _raise_error)r$   flagr   s     r   raise_error7ContextFlags.test_flags_irrelevant.<locals>.raise_error  sC    ||q &*d#==&J ' $$T*r'   r)   r|  r   )r*   r_  re  r+   r,   rV  z100E-425000010r  r  z
9.87654321r-  z=operation produces different answers depending on flags set: z	expected z, got r  z9operation raises different flags depending on flags set: )r   r   r-   r   r   r   r   r   r.   re   r   r   rt  r  r1  rV  r  r  r:  r@  rE  rB  )r   r   r-   r   r   r   r   r   r  r$   
operationsflagsetsfnr  rG  kr   rV  extra_flagsr  new_ansexpected_flags	new_flagss   `                      r   test_flags_irrelevant"ContextFlags.test_flags_irrelevant  s    ,,&&,,&&,,&&,,&&LL**	,,&&LL**		+ qI#2"BH
 ^^g&6789\\GAJ<([[7<0',2GHI 5w|7LMN 5w|7LMN
 Iy9+y9+y9EG #HB!d)C#*==#6#6#8>#841aAQ#8E>'##%'D. (d) "&e'D>1&--d3 ( ###+ +2--*=*=*?E*?31Q1Q*?	E2&  g!`;>!H"IJ   N"];I9"U#VW+  ( # ?" Fs   6JJJ
,J
c                    U R                   R                  nU R                   R                  nU R                   R                  nU" 5       nU R	                  UR
                  UR                  5        U R	                  UR                  UR
                  5        UR                  Ul        U R                  UR
                  UR                  5        U R                  UR                  UR
                  5        SUR
                  U'   UR
                  Ul        U R                  UR
                  UR                  5        U R                  UR                  UR
                  5        0 nUR                  UR
                  5        U R                  XTR
                  5        U R                  UR
                  U5        SXR'   U R	                  XTR
                  5        U R	                  UR
                  U5        US0nU R	                  XTR
                  5        U R	                  UR
                  U5        S/nU R	                  XTR
                  5        U R	                  UR
                  U5        g )NTFr  )	r   r-   r   r   r  rV  r,   rB  update)r   r-   r   r   r  r   s         r   test_flag_comparisons"ContextFlags.test_flag_comparisons;  s   ,,&&,,&&,,&&I 	AGGQWW-AGGQWW-''!''*!''*''!''*!''*	GG$!$
Aww'AGGQ' UOAww'AGGQ'GAww'AGGQ'r'   c                    U R                   R                  nU R                   R                  nU R                   R                  nU" 5        nU R	                  UR
                  U   5        UR                  5         U R                  U" S5      S5        U R                  UR                  U   5        UR                  5         U R                  UR                  S5      S5        U R                  UR                  U   5        UR                  5         UR                  S5      nU R	                  UR                  U   5        U R                  US5        U R                  UR                  U   5        UR                  5         UR                  S5      nU R	                  UR                  U   5        U R                  US5        U R                  UR                  U   5        SUR
                  U'   UR                  5         U R                  X!S5        U R                  UR                  U   5        UR                  5         U R                  X$R                  S5        U R                  UR                  U   5        UR                  5         UR                  S5      nU R	                  UR                  U   5        UR                  5         UR                  S5      nU R	                  UR                  U   5        S S S 5        g ! , (       d  f       g = f)Ng      @T)r   r   r  r  rg  r,   r1  rB  r!   rV  r   r  r  rv  )r   r   r  r  r  r  s         r   test_float_operation!ContextFlags.test_float_operationa  sG   ,,&&44||00^qQWW^45 MMOWS\3/OOAGGN34MMOQ--c2C8OOAGGN34 MMO""3'AQWW^45Q$OOAGGN34MMO++C0AQWW^45Q$OOAGGN34 '+AGGN# MMOns;OOAGGN34MMOn.>.>DOOAGGN34 MMO""3'AQWW^45MMO++C0AQWW^45] ^^s   
J)K<<
L
c                   ^ ^^^	^
^^^^^^^^^^^ T R                   R                  mT R                   R                  nT R                   R                  mT R                   R                  nSUU 4S jjm	T" S5      mT" S5      m
SmSmT" S5      mT" S5      mSmS	mT" S
5      mT" S5      m[        S5      m[        S5      mSUU	U
UUUUUUUUUUU4S jjnSUUU 4S jjnU" 5       nU" U5       nT R                  UR                  T   5        U" US S9  U" US S9  SUR                  T'   U" UTS9  U" UTS9  S S S 5        g ! , (       d  f       g = f)Nc                    > UR                  5         [        X5      nUT:X  a  TR                  XEU5        OTR                  U" U5      S5        TR	                  UR
                  T   5        g r  )r1  r    rv  r  r!   rV  )r  r  r%   r$   signalr   r  r   s         r   assert_attr7ContextFlags.test_float_comparison.<locals>.assert_attr  sX    ! A'!!&Q/adD)OOGMM.9:r'   r  r  r  r  r\  r  r  r  r  r  r  r  c                   > S H  nT" TTX U5        M     S H  nT" TTX U5        M     T" TTSU S 5        T" TTSU S 5        T" TTSU S 5        T" TTSU S 5        T" TTSU S 5        T" T	T
SU S 5        T" TTSU S 5        T" TTSU S 5        T" T" S5      SSU S 5        T" T	TSU S 5        T" TT
SU S 5        T" T" S5      [        S5      SU S 5        g )	N)r  r$  )r!  r'  r*  r-  r  r  r  r  )r  )r  r&  r%   r   r'  big_dbig_finf_dinf_f	neg_inf_d	neg_inf_f
neg_zero_d
neg_zero_fsmall_dsmall_fzero_dzero_fs      r   doit0ContextFlags.test_float_comparison.<locals>.doit  s   *GUDV< + +E7DV< + (At<
J!TB
FHa>
Ha>!T:	9h4@uh48 !T:Xq$?	5(At<y(At<eh4Hr'   c                 ~  > U R                  5         [        ST" S5      /5      nTR                  [        U5      S5        TR	                  U R
                  T   5        U R                  5         U(       a   TR                  U[        ST" S5      /5        O[        ST" S5      /5      nTR	                  U R
                  T   5        U R                  5         ST" S5      S4;   nTR	                  U R
                  T   5        U R                  5         ST" S5      SSS0;   nTR	                  U R
                  T   5        g )	Nr  z100.0r  r  r  g      $@r  r  )r1  r   rB  lenr!   rV  rv  sorted)r  r&  r   r  r   r  r   s       r   test_containers;ContextFlags.test_float_comparison.<locals>.test_containers  s    MMOUGG,-.ASVQ'OOAGGN34MMO!!&&32HID'&/23OOAGGN34MMO#..AOOAGGN34MMOc#66AOOAGGN34r'   )r&  Tr   )r   r   r-   r  r  r  rg  r,   )r   r-   r  r6  r;  r  r  r   r  r'  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  s   `      @@@@@@@@@@@@@@@r   test_float_comparison"ContextFlags.test_float_comparison  s2   ,,&&,,&&44||00	; 	; &/V_


#K(	e&M		I 	I 	I<	5 	5* Y"QWW^454 Ad+&*AGGN#>*An5 s   .A
E
Ec                    U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU" 5       nU R                  UR                  U   5        U R                  UR                  U   5        UR                  5         SUR                  U'   SUR                  U'   U R                  UR                  U   5        U R                  UR                  U   5        g r  )
r   r   r-   r   r  rg  rV  r,   clear_trapsr!   )r   r   r-   r   r  r$   s         r   test_float_operation_default)ContextFlags.test_float_operation_default  s    ,,&&,,&&,,&&33)~67~67!%g(,n%n56g./r'   r   N)r   ri  rj  rk  r  r  r   r"  r=  rA  rl  r   r'   r   r  r    s1    @WD$(L 36 36jY6v0r'   r  c                       \ rS rSr\rSrg)CContextFlagsi  r   Nr  r   r'   r   rD  rD    r  r'   rD  c                       \ rS rSr\rSrg)PyContextFlagsi  r   Nr  r   r'   r   rF  rF    r  r'   rF  c                        \ rS rSrS rS rSrg)SpecialContextsi  c           
      |   U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  n	[        XSXVXxU	/5        U" 5       R                  5       n
UR                  nUR                  nS n S=Ul        Ul        X4 H?  nU" U5        U" 5       nU R                  X5        U R                  UR                  S5        MA     Xl        Xl        U" U
5        U(       a  Ueg ! [         a  nUR                   n S nAN9S nAff = f! Xl        Xl        U" U
5        U(       a  Uef = f)Nr,   i  )r   BasicContextExtendedContextr  r2   r   r   r   r   r   r&   rn   r*   r  rB  	Exceptionr   )r   rJ  rK  r  r2   r   r   r   r   r   savecontextbasic_context_precextended_context_precextemplater  rP  s                    r   test_context_templates&SpecialContexts.test_context_templates  s   ||00,,66\\,,
\\,,
<<8844<<((LL**	,,&&t7xGL	
 !l'')).. / 4 4	7::L 4(98$L  -  -	 : !3#8 {#   	B	 !3#8 {# s+   AE9 9
FFF FF F;c                    U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                   R
                  nU R                   R                  nU R                   R                  nU R                   R                  nU R                  UR                  S5        U R                  UR                  S5        [        XSXgU/5        U" 5       R                  5       n	UR                  n
S n U" 5       nUR                  nSUl
        U" 5       nU R                  UR                  U5        U" U5        U" 5       nU R                  X5        U R                  UR                  S5        Xl
        U" U	5        U(       a  Ueg ! [         a  nUR                  n S nAN3S nAff = f! Xl
        U" U	5        U(       a  Uef = f)Nr)   r,   i  )r   r~  rJ  rK  r  r2   r   r   r   rB  r*   r&   rn   r  rL  r   )r   r~  rJ  rK  r  r2   r   r   r   rM  default_context_precrP  r  saveprecrP  s                  r   test_default_context$SpecialContexts.test_default_context/  s   44||00,,66\\,,
\\,,
<<8844<<((**A.--q1tWx8	
 !l'')-22	AvvH"%NAQVVX.~&AQ/QVVS) #7{#   	B	 #7{# s+   A9F- -
G7GG GG G)r   N)r   ri  rj  rk  rR  rW  rl  r   r'   r   rH  rH    s    "H'r'   rH  c                       \ rS rSr\rSrg)CSpecialContextsiX  r   Nr  r   r'   r   rZ  rZ  X  r  r'   rZ  c                       \ rS rSr\rSrg)PySpecialContextsi[  r   Nr  r   r'   r   r\  r\  [  r  r'   r\  c                       \ rS rSrS rSrg)ContextInputValidationi^  c           	         U R                   R                  nU R                   R                  nUR                  5       nS Hb  n[	        X4S5        U R                  [        X45      S5        U R                  [        [        X4S5        U R                  [        [        X4S5        Md     [	        USS5        U R                  [        US5      S5        U R                  [        [        USS5        U R                  [        [        USS5        U R                  [        [        US	S5        U R                  [        [        US	S
5        U R                  [        [        US	S5        U R                  [        [        US	S5        S HY  nU R                  [        [        X4S5        U R                  [        [        X4S5        U R                  [        [        X4/ SQ5        M[     U R                  [        [        USS5        U R                  [        [        US/ 5        U R                  [        [        US0 5        U R                  [        [        USSS05        S H$  nU R                  [        UR                  U5        M&     U R                  [        [        US
5        U R                  [        [        US
5        U R                  [        USS9  U R                  [        USS9  U R                  [        USS9  U R                  [        USS9  U R                  [        US/S9  U R                  [        US/S9  U R                  [        USS9  U R                  [        USS9  g )Nr*   re  r  r  r  r_  r  r  r  r  r  r+   r)   r  rX  ra   r  r  r  rV  r,   r   r   )r*   re  r_  r+   rX  ra   rV  r,   r  r  r  r  r  Qr  r   r  )r  r   )r   r-   r~  rn   rK  rB  r    rv  r  r4  r5  KeyError__delattr__)r   r-   r~  r  r%   s        r   test_invalid_context+ContextInputValidation.test_invalid_context`  s   ,,&&44! %DAV$WQ-v6j'1B?i!5A	 % 	67#F+W5*gq&!<)WaA)WaR@)WaQ?)WaSA)WaUC *Dj'1B?j'1A>i!7C * 	.'1fcB 	)Wa"=(GQ<(GQ-a0	2'DnammTB'
 	)Wa3)Wa3 	)Wv>)Wu=*gQ7*g;(GC59(GC59 	)WE:)WE:r'   r   N)r   ri  rj  rk  rg  rl  r   r'   r   r^  r^  ^  s    :;r'   r^  c                       \ rS rSr\rSrg)CContextInputValidationi  r   Nr  r   r'   r   rj  rj    r  r'   rj  c                       \ rS rSr\rSrg)PyContextInputValidationi  r   Nr  r   r'   r   rl  rl    r  r'   rl  c                       \ rS rSrS rSrg)ContextSubclassingi  c                 	  ^^ U R                   mTR                  nTR                  mTR                  nTR                  nTR
                  nTR                  nTR                  nTR                  nTR                  nTR                  n	 " UU4S jST5      n
T" 5       nU
" 5       nS H'  nU R                  [        X5      [        X5      5        M)     U R                  " [        U
40 SS0D6  U
" SS9nU R                  UR                  S5        U R                  XR                   U" S5      S	5        U R                  " ["        U
40 S
S0D6  U
" [$        SS9nU R                  UR&                  [$        5        U R                  UR)                  U" S5      5      S5        U R                  " [        U
40 SS0D6  U
" SSS9nU R                  UR*                  S5        UR-                  U" S5      U" S5      5      nU R                  X" S5      5        XHXvU4 H!  nU R/                  UR0                  U   5        M#     U R                  " [        U
40 SS0D6  U
" SSS9nU R                  UR2                  S5        U R                  X[R,                  U" S5      U" S5      5        U R                   [4        :X  a)  XEU4 H!  nU R/                  UR0                  U   5        M#     U R                  " [        U
40 SS0D6  U
" S	S9nU R                  UR6                  S	5        UR9                  S5      nU R                  UR;                  U5      S5        U R                  " [        U
40 SS0D6  U
" SSS 9nU R                  UR<                  S5        UR)                  U" S5      5      nU R                  [?        U5      S!5        U R                  " ["        U
40 S"S0D6  U
" Xc/S#9nXc4 H!  nU R/                  UR0                  U   5        M#     URA                  5         [B        T    H!  nU RE                  UR0                  U   5        M#     U R                  " ["        U
40 S$S0D6  U
" Xc/S%9nXc4 H!  nU R/                  URF                  U   5        M#     URI                  5         [B        T    H!  nU RE                  URF                  U   5        M#     g )&Nc                   .   > \ rS rSr   SU U4S jjrSrg)>ContextSubclassing.test_context_subclassing.<locals>.MyContexti  Nc	                   > T
R                  U 5        Ub  Xl        Ub  X l        Ub  X0l        Ub  X@l        Ub  XPl        Ub  X`l        Ub9  [        U[        5      (       a  [        T   U-    V	s0 s H  oX;   _M	     nn	Xpl
        Ub:  [        U[        5      (       a  [        T   U-    V	s0 s H  oX;   _M	     nn	Xl        g g s  sn	f s  sn	f r   )r
  r*   r+   r_  re  rX  ra   r  r  r;  rV  r,   )r   r*   r+   r_  re  rX  ra   rV  r,   r   r-   r   s             r   r
  GContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__  s       &# $I'$,M# $I# $I'$,M$!&J$!%..9G9PSX9X Y9XAAJ9X Y!&J$!%..9G9PSX9X Y9XAAJ9X Y!&J % !Z !Zs   /C+C)re  r_  rX  ra   rV  r*   r+   r,   )NNNNNNNNr  )r-   r   s   r   	MyContextrq    s    IM@D%)' 'r'   rt  r*   r+   r_  re  rX  ra   rV  r,   r*   r  r  r  9e2r   r+   XYZ)r+   r*   r  r)   r_  r  )r_  r*   z1e-99z2.234e-2000r\  re  )re  r*   1e99z
2.234e2000rX  r  1E222z1e+222ra   r  c   )ra   re  z!1.000000000000000000000000000E+99rV  r  r,   r  )%r   r   r-   r   r   r   r   r   r   r   r   rB  r    rv  r  r*   r^  r4  r   r+   r  r_  r   r!   rV  re  r   rX  r   r   ra   r=  r1  r;  rg  r,   r@  )r   r   r   r   r   r   r   r   r   r   rt  r  r   r%   r  r&  r-   r   s                   @@r   test_context_subclassing+ContextSubclassing.test_context_subclassing  s/   ,,////// ////##//%%	%%	"33	' 	' 	'4 IK'DWQ-wq/?@'
 	*i?F2;?1#*JJJ 	)YE:e2DEz2Z0/3 	*i>F1:>2A&$EE''"GM$:;GEN+9wGFOOAGGFO, H 	*i?F2;?11%#(EE76?GL<QR<<1"g60 7 	*iCJr?Cq!Q'W%+X6 	*i?GA;?AB'!$FF76?#Q!DE 	)YB75/BW56/FOOAGGFO, 0	$W-FQWWV_- . 	)YB75/BW56/FOOAGGFO, 0	$W-FQWWV_- .r'   r   N)r   ri  rj  rk  r{  rl  r   r'   r   rn  rn    s    i.r'   rn  c                       \ rS rSr\rSrg)CContextSubclassingi  r   Nr  r   r'   r   r~  r~    r  r'   r~  c                       \ rS rSr\rSrg)PyContextSubclassingi  r   Nr  r   r'   r   r  r    r  r'   r  c                   &    \ rS rSrS rS rS rSrg)CheckAttributesi  c                    U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R
                  [        R
                  5        U R                  [        R                  [        R                  5        U R                  [        R                  SL =(       d    [        R                  SL 5        U R                  [        R                  SL =(       d    [        R                  SL 5        U R                  [        R                  [        R                  5        U R                  [        [        [        5      5      [        [        [        5      5      5        U R                  [        [        5       Vs/ s H  oS S S:w  d  M  UPM     sn[        [        R                  5      5        g s  snf )NTFr  __)rB  r   rZ  r  r   r  r  r!   r  __version__r  r   dirr:  __all__)r   r  s     r   test_module_attributes&CheckAttributes.test_module_attributes  s    	QZZ0QZZ0QZZ0akk2$.I!..E2IJ$.I!..E2IJ6SQ[#c!f+6SV=V!u}!V=vaii?PQ=s   5G+G+c                    [        [        R                  5       5       Vs/ s H#  nSU;   d  UR                  S5      (       a  M!  UPM%     nn[        [        R                  5       5       Vs/ s H#  nSU;   d  UR                  S5      (       a  M!  UPM%     nnU R                  [        U5      [        U5      -
  [        5       5        g s  snf s  snf )Nr  r  )r  r   r-   r  r  rB  r   r   r   r  r  s       r   test_context_attributes'CheckAttributes.test_context_attributes)  s    AIIK(O(1DAIQ\\#=NQ(OAIIK(O(1DAIQ\\#=NQ(OQ#a&#%0 POs    CC+ CCc                    [        [        R                  S5      5       Vs/ s H#  nSU;   d  UR                  S5      (       a  M!  UPM%     nn[        [        R                  S5      5       Vs/ s H#  nSU;   d  UR                  S5      (       a  M!  UPM%     nnU R	                  [        U5      [        U5      -
  [        5       5        g s  snf s  snf )Nr)   r  r  )r  r   r   r  rB  r   r  s       r   test_decimal_attributes'CheckAttributes.test_decimal_attributes/  s    AIIaL)P)1TQYall3>OQ)PAIIaL)P)1TQYall3>OQ)PQ#a&#%0 QPs    C	C	- CCr   N)r   ri  rj  rk  r  r  r  rl  r   r'   r   r  r    s    R 11r'   r  c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)Coveragei5  c                    U R                   R                  nU R                  U" S5      R                  5       S5        U R                  U" S5      R                  5       S5        U R                  U" S5      R                  5       S5        g )N	1234e9999i'  r  r   r  )r   r   rB  r  rr  s     r   test_adjustedCoverage.test_adjusted7  si    ,,&&-668%@002A6002A6r'   c                    U R                   R                  nU R                   R                  nU" S5      R                  5       nU R	                  US5        U" 5       nUR                  U" S5      5      nU R	                  US5        g )Nr)   )r   r   r  r  rB  )r   r   r  r  r  s        r   test_canonicalCoverage.test_canonical?  sk    ,,&&\\,,
AJ  "ALKK
#Ar'   c                 ^   U R                   R                  R                  5       nSUl        SUl        SUl        [        Ul        SUl        SUl	        [        U R                       H!  nSUR                  U'   SUR                  U'   M#     UR                  5       nSnU R                  X45        g )Nr   r|  r   r  Fz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))r   r~  rn   r*   re  r_  r   r+   rX  ra   r;  rV  r,   __repr__rB  )r   r  rn  r   r   s        r   test_context_reprCoverage.test_context_reprJ  s    LL'',,.$

!$,,/C AGGCL AGGCL 0 JJL" 	r'   c           
         U R                   R                  nU R                   R                  nU" 5        nSUl        SUl        SUl        U R                  [        U" S5      5      S5        U R                  U" S5      S-   S5        U R                  U" S5      S-  S	5        U R                  U" S5      S
-  S5        U R                  U" S5      R                  U" S5      S5      S5        U R                  U" S5      R                  S
S5      R                  5       S5        U R                  [        U" S5      S	S
5      S	5        U R                   [        :X  aG  U R                  [        SU" S	5      S
5      S	5        U R                  [        SS	U" S
5      5      S	5        OFU R                  [        [        SU" S	5      S
5        U R                  [        [        SS	U" S
5      5        U R                  U" S5      R                  5       S5        U R                  U" S5      R!                  5       S5        U R                  U" S5      R#                  5       S5        U R                  U" S5      R%                  5       S5        U R                  U" S5      R'                  5       S5        U R                  U" S5      R)                  5       S	5        U R                  U" S5      R+                  5       S5        U R                  U" S5      * S5        U R                  U" S5      S-  S5        U R                  U" S5      R-                  5       S5        U R                  U" S5      R/                  5       U" S5      5        U R                  U" S5      R1                  5       U" S5      5        U R                  U" S5      R3                  5       S5        U R                  U" S5      7S5        U R                  U" S5      S
-  S5        U R                  U" S5      S
-
  S5        U R                  U" S5      R5                  5       S5        U R7                  U" S5      R9                  5       5        U R7                  U" S5      R;                  5       5        U R7                  U" S5      R;                  5       5        U R7                  U" S5      R=                  5       5        U R7                  U" S5      R?                  5       5        U R7                  U" S5      RA                  5       5        U R7                  U" S5      RA                  5       5        S S S 5        U" 5        nSUl        S S!-  nU" U5      * nURC                  5       nU R                  Xd5        URE                  5       nU R                  Xd5        URG                  U" S5      5      nU R                  Xd5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)"Nr  r  z-10r  7r  rI  r  r  r0  z1.2r  r  Tz1.01r  F20580r*  r  r)   z2E+1z-1E+1z+Normalr  z1.12345r  r"  rp  r  i  i  )$r   r   r  r*   re  r_  rB  rD  r\  r  r   powr   rv  r4  ra  r   r   rU  rV  rW  ry   r   r   r   rg   r   r!   r{   r}   r   r   r   rq   rs   ru   )r   r   r  r  r  r  r_  s          r   rF  Coverage.test_implicit_context]  s   ,,&&||00^qAFAFAF S0"5WS\A-q1WT]Q.2WT]a/3WU^//CQGMM'%.,,Q299;TBSa3Q7||q   RQ!7;  RGAJ!7; !!)S"gaj!D !!)S"aDWV_002A6MM'&/335u=MM'&/668$?WT]--/3WT]002A6WU^002A6WT]99;Q?gen_b1WS\A-q1WT]557;WT]446HWU^5579IJWT]7799Egdm^R0WT]Q.2WT]Q.2WY/AACQG OOGCL5578OOGCL2245OOGCL2245OOGFO3356OOGDM3356OOGCL0023OOGCL0023K P ^qAFAA

AQ"AQ"GAJ'AQ" ^Q ^P ^s   T
WB W'
W$'
W5c                    U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU" 5        n[        U" S5      S5      u  pgU R                  Xa" S5      5        U R                  Xq" S5      5        [        U" S5      S5      u  pgU R                  UR                  5       =(       a    UR                  5       5        SUR                  U'   [        U" S5      S5      u  pgU R                  UR                  5       =(       a    UR                  5       5        SUR                  U'   UR                  5         [        U" S5      U" S5      5      u  pgU R                  UR                  5       =(       a    UR                  5       5        U R                  UR                  U   5        UR                  5         [        U" S5      S	5      u  pgU R                  UR                  5       =(       a    UR                  5       5        U R                  UR                  U   5        UR                  5         [        U" S
5      S
5      u  pgU R                  UR                  5       =(       a    UR                  5       5        U R                  UR                  U   5        SUR                  U'   UR                  5         [        U" S5      S
5      u  pgU R                  UR                  5       =(       a    UR                  5       5        U R                  UR                  U   =(       a    UR                  U   5        S S S 5        g ! , (       d  f       g = f)N10912837129rc  10901935194r  r0  Fr  rP  r      )r   r   r  r   r   rJ  rB  r!   r   r,   r1  rV  r   )r   r   r  r   r   r  r@  r  s           r   r8  Coverage.test_divmod  sf   ,,&&||00<<8844^q'-0$7DAQ
 34Q/'%.!,DAOOAHHJ5188:6(-AGG$%'%.!,DAOOAHHJ5188:6(-AGG$%MMO'%.'%.9DAOOAHHJ5188:6OOAGG$456MMO'%.#.DAOOAMMO:
;OOAGG$456MMO'!*a(DAOOAHHJ5188:6OOAGG$456&+AGGN#MMO'"+q)DAOOAMMO:
;OOAGG$45 4GGN35A ^^s    L M))
M7c                    U R                   R                  nU R                   R                  nU R                   R                  nU R                   R                  nU" 5        nSUl        UR                  5         U R                  U" S5      S-  U" S5      5        U R                  UR                  U   5        SUl        SUl
        SUl        UR                  5         SUR                  U'   U R                  U" S5      U" S	5      -  U" S
5      5        U R                  UR                  U   5        S S S 5        g ! , (       d  f       g = f)Nr  r@  r  r|  r  r  Fr  r  r  )r   r   r  r   r   r*   r1  rB  r!   rV  re  r_  r,   )r   r   r  r   r   r  s         r   r  Coverage.test_power  s    ,,&&||00<<((,,&&^qAFMMOWU^s2GFODOOAGGG,-AFAFAFMMO %AGGHWU^wu~=wu~NOOAGGH-. ^^s    CD99
Ec                    U R                   R                  nU R                   R                  nU R                   R                  nU" 5        nSUl        SUl        SUl        SUR                  U'   U" S5      R                  U" S5      5      nU R                  UR                  5       5        S S S 5        g ! , (       d  f       g = f)Nr  r  Frz  1e1)r   r   r  r   r*   re  r_  r,   r^  r!   r   r   r   r  r   r  r  s         r   r  Coverage.test_quantize  s    ,,&&||00<<88^qAFAFAF(-AGG$%$$WU^4AOOAHHJ' ^^s   
A!B44
Cc                     U R                   R                  nU R                   R                  nU" 5       nU R                  U" S5      R	                  5       S5        U R                  UR	                  5       S5        g )Nr  r  )r   r   r  rB  r  rE  s       r   
test_radixCoverage.test_radix  sZ    ,,&&\\,,
L++-r2B'r'   c                     U R                   R                  nS H/  nU R                  [        U" S5      U5      " S5      [        5        M1     g )N)r2  r5  r8  r;  r  r>  r@  rB  r  r  )r   r   r  r    r  )r   r   r%   s      r   rN  Coverage.test_rop	  s=    ,,&&MDMM''#,5e<nMMr'   c                 &   U R                   R                  nU R                   R                  nU" 5        nSUl        U R	                  [        U" S5      R                  5       5      S5        U R	                  [        U" S5      R                  5       5      S5        U R	                  [        U" S5      R                  S5      5      S5        U R	                  [        U" S	5      R                  S
5      5      S5        U R	                  [        U" S	5      R                  S5      5      S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  SS5        S S S 5        g ! , (       d  f       g = f)Nr  r  rI  z9.99e-5rp  r  r  z1.23457r  r  z1.2345000000r  z0E+10rw  r/  r  )	r   r   r  r*   rB  r=  	__round__rv  r4  )r   r   r  r  s       r   
test_roundCoverage.test_round  s&   ,,&&||00^qAFS!:!:!<=tDS!3!=!=!?@#FS!6!@!@!CDiPS!2!<!<R!@A>RS!2!<!<S!ABGLi)B)BCHi)B)BAqI ^^s   EF
Fc                 |    U R                   R                  5       nU R                  [        UR                  S/5        g )Nr<  )r   r-   rv  r  r   )r   r  s     r   test_create_decimalCoverage.test_create_decimal!  s.    LL  "*a&6&6>r'   c                 D   U R                   R                  nU R                   R                  nU" 5        nSUl        U" SS-  5      SS-  -  nU R	                  [        U5      S5        U R	                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr  i  i  r  iS  r  r  )r   r   r  r*   rB  r  r]  r   r   r  r  r  s        r   r  Coverage.test_int%  sy    ,,&&||00^qAFd
#b$h.ASVQ'Q]]_a0	 ^^s   AB
Bc                 ,   U R                   R                  nU" 5       nSUl        SS-  * nUR                  U5      nU R	                  XC* 5        UR                  U5      nU R	                  XC* 5        UR                  US5      nU R	                  XC* 5        g )Nr  i  i  r  )r   r-   r*   rq   rB  rs   ru   )r   r-   r  r  r  s        r   r  Coverage.test_copy/  s    ,,&&IdlOJJqMBMM!BKK1Br'   r   N)r   ri  rj  rk  r  r  r  rF  r8  r  r  r  rN  r  r  r  r  rl  r   r'   r   r  r  5  sH    7	&X#t'5R/(((NJ"?1 r'   r  c                       \ rS rSr\rSrg)	CCoveragei?  r   Nr  r   r'   r   r  r  ?  r  r'   r  c                   8   ^  \ rS rSr\rU 4S jrU 4S jrSrU =r	$ )
PyCoverageiB  c                    > [         TU ]  5         [        R                  " 5       U l        [        R
                  " S5        g rm  rn  rt  s    r   r   PyCoverage.setUpE  rv  r'   c                 b   > [         R                  " U R                  5        [        TU ]  5         g r   rx  rt  s    r   ry  PyCoverage.tearDownJ  r{  r'   r|  r}  r  s   @r   r  r  B  r  r'   r  c                       \ rS rSrS rSrg)PyFunctionalityiN  c                     [         R                  n[         R                  n/ SQnU H(  u  pEnU R                  [	        U" U5      U5      U5        M*     g )N)
)z.0er@  z1e+0)z#.0er@  z1.e+0)rf  r@  r  )z#.0fr@  1.)rn  1.1r  )z#gr  r  )rp  r  r  )z#.0gr  r  )rv  r@  z100%)z#.0%r@  z100.%)r  r   r  rB  r  )r   r   r  r  r  r   rR  s          r   test_py_alternate_formatting,PyFunctionality.test_py_alternate_formattingQ  sF    ))~~ *NCFVGAJ4f= *r'   r   N)r   ri  rj  rk  r  rl  r   r'   r   r  r  N  s    >r'   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	
PyWhiteboxif  c                    [         R                  n[         R                  nU" 5        nSUl        U" S5      U" S5      -  nU R	                  XA" S5      5        U" S5      U" S5      -  nU R	                  XA" S5      5        U" S5      U" S5      -  nU" S5      U" S	5      -  nU R	                  XA" S
5      5        U" S5      U" S	5      -  nU" SS-  5      U" S	5      -  nSUl        U" S5      U" S5      -  nU R	                  XA" S5      5        SUl        U" S5      U" S5      -  nU R	                  XA" S5      5        SUl        U" S5      U" S5      -  nU R	                  XA" S5      5        SUl        U" S5      U" S5      -  nU R	                  XA" S5      5        SUl        U" SS-  5      U" S5      -  n[         R
                  Ul        [         R                  Ul        [         R                  Ul	        SUR                  [         R                  '   U" S5      nUS-  nU R	                  US5        S S S 5        g ! , (       d  f       g = f)Nr  i   r  z
0.00390625z-0.6z0.0012885819256e7l   o z-0.0625r  152587890625e7r  ic
  r  152587890625z3e-6r  z2.6e-6r  z2.56e-6r     iB  u   l                  )r  r   r  r*   rB  rZ  r   re  r  r_  r,   r   )r   r   r  r  r  D2ress          r   test_py_exact_powerPyWhitebox.test_py_exact_poweri  s   ))~~^qAF'&/1AQ 56'&/1AQ 78 GFO3A%);;AQ/()WY-??A4 GI$66AAF'76?:AQ0AF'76?:AQ 12AF'76?:AQ	 23AF'76?:AQ	 23AF376?2A ZZAFZZAFZZAF!"AGGAIIB)CS(+Y ^^s   HH99
Ic                   ^ ^^^^	 [         R                  n[         R                  n[         R                  nUR	                  5       n[        S [        [             5       5      Ul        U" U5        U" S5      mU" S5      mU" S5      m	U" S5      mS1UUUU	U 4S jjnU" T5        T R                  TR                  TR                  5        T R                  TR                  TR                  5        T R                  TR                  TR                  5        U" S5        U" SS5        U" SS5        U" S	S5        U" S
S5        U" SS5        U" SS5        U" SS5        U" SS5        U" S5        U" SS5        U" S5        U" S5        U" S5        U" SS5        U" SS5        U" S5        U" S5        U" S5        U" SS5        U" SS5        U" SS5        U" S5        U" SS5        U" SS5        U" SS5        U" S S5        U" S!S5        U" S"5        U" S#S5        U" S$S5        U" S%5        U" S&5        U" S'S5        U" S(S5        U" S)S5        U" S*5        U" S+S5        U" S,S5        U" S-S5        U" S.5        U" S/5        U" S05        g )2Nc              3   (   #    U  H  oS 4v   M
     g7f)r   Nr   )r   r   s     r   r   =PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>  s     9'8!1v'8s   z-25e55z33e+33c                   > U(       a  [        SU -   S-   5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        g [        SU -   S-   5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        TR                  TR                  TR                  5        g )Nzd1.z(d2)z())r>  rB  _sign_int_exp)	operationuseOtherb1b2r  r  r   s     r   checkSameDec@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDec  s   UY&/0  2884  "''2  "''2  2884  "''2  "''2UY&-.  2884  "''2  "''2r'   __abs__r1  Tr  r*  r-  r$  r  r'  r!  	__float__r?  r  __int__	__trunc__r=  r7  __neg____bool____pos__rA  r2  r  r  r@  r>  r8  rB  r5  __str__r4  r:  r  r/  rf  r  r  r   r^  r   r   r   r   r]  )F)r  r   r~  r2   rn   r/   r;  r,   rB  r  r  r  )
r   r   r~  r2   r  r  r  r  r  r  s
   `     @@@@r   test_py_immutability_operations*PyWhitebox.test_py_immutability_operations  s^   ))))\\
!9~a'8991XXXX	3 	3 	288,"''*"''*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'   c                     [         R                  nU" S5      nU" U5      nU R                  [        U5      S5        U R	                  [        U5      [        U5      5        g )Nrz  r{  )r  r   rB  r=  r  rE  r  s       r   test_py_decimal_idPyWhitebox.test_py_decimal_id  sI    ))BKAJQ&BqE2a5)r'   c                     [         R                  n[         R                  nU" 5        nU" S5      R                  S[        5      nU R                  UR                  5       5        S S S 5        g ! , (       d  f       g = f)Nr  r  )r  r   r  _rescaler   r!   r   r  s        r   test_py_rescalePyWhitebox.test_py_rescale  sM    ))~~^q''84AOOAHHJ' ^^s   <A--
A;c                 |    [         R                  nU R                  [        U" S5      R                  S[
        5        g )Nz3.1234r   )r  r   rv  r  _roundr   rr  s     r   test_py__roundPyWhitebox.test_py__round  s*    ))*gh&7&>&>8Lr'   r   N)
r   ri  rj  rk  r  r  r  r  r  rl  r   r'   r   r  r  f  s    1,fM$^*(Mr'   r  c                   D    \ rS rSr\S 5       r\S 5       r\S 5       rSrg)CFunctionalityi  c                 l   [         R                  n[         R                  n[         R                  n[         R                  nS nU" U5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U" X5        U" U5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U" X5        U" U5      nU R                  UR                  S5        U R                  UR                  S	5        U R                  UR                  S
5        U" X5        U R                  [        US5        U R                  [        US5        U R                  [        US5        g )Nc                 p    U R                  UR                  S5        [        XS/ 5        [        XS/ 5        g )Nr  r,   rV  )rB  ra   r&   )r   r$   s     r   assert_rest7CFunctionality.test_c_ieee_context.<locals>.assert_rest  s.    W]]A.4'264'26r'   r0  `   ir  r  r  "   i   ir  r  i   )r   IEEEContext	DECIMAL32	DECIMAL64
DECIMAL128rB  r*   re  r_  rv  r  r  )r   r  r  r  r	  r  r  s          r   test_c_ieee_context"CFunctionality.test_c_ieee_context  sQ    mmKK	KK	\\
	7
 	"#$%D	"$%&D
#$&'D 	-e<*k26*k48r'   c                    [         R                  nU" [         R                  [         R                  S9nU R	                  UR
                  [         R                  5        U R	                  UR                  [         R                  5        g )N)rV  r,   )r   r-   r8   
DecRoundedrB  _flags_trapsr  s      r   test_c_contextCFunctionality.test_c_context)  sO    ))!,,all;1<<01<<0r'   c                 b   [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  4nU R!                  [         R"                  S5        U R!                  [         R$                  S5        U R!                  [         R&                  S5        U R!                  [         R(                  S5        [+        U5       H  u  p#U R!                  USU-  5        M     U R!                  [         R,                  [         R                  [         R                  -  [         R
                  -  [         R                  -  [         R                  -  [         R                  -  [         R                  -  5        U R!                  [         R.                  [         R,                  [         R                  -  5        U R!                  [         R0                  [         R.                  [         R                  -  [         R                  -  5        g )Nr  r     i   r  )r   r8   DecConversionSyntaxDecDivisionByZeroDecDivisionImpossibleDecDivisionUndefinedDecFpuError
DecInexactDecInvalidContextDecInvalidOperationDecMallocErrorDecFloatOperationDecOverflowr  DecSubnormalDecUnderflowrB  r  r  r	  IEEE_CONTEXT_MAX_BITSr7  DecIEEEInvalidOperation	DecErrorsDecTraps)r   condrN  r   s       r   test_constantsCFunctionality.test_constants1  s    LL!//1D1D##Q%;%;MM1<<)<)<!!1#3#3NNANN
 	b)b)s+00#6 dODAQ1% $ 	22..001//0 ' ,,	-
 ../ ))*	+ 	22,,-	. 	Q]]21>>A	Cr'   r   N)	r   ri  rj  rk  requires_extra_functionalityr
  r  r&  rl  r   r'   r   r  r    sA     "!9 "!9F "1 "1 "#C "#Cr'   r  c                       \ rS rSrS rS rS rS rS rS r	\
S 5       rS	 r\
S
 5       rS rS rS rS rS r\
S 5       r\
S 5       rS rS rS rS rS rS rS rS rS rS rSrg)	CWhiteboxiW  c                 r   [         R                  n[         R                  nSS-  nSS-  nU" 5        nSUl        [	        S5       HV  n[
        R                  " X45      n[
        R                  " SS5      nXx-  n	U" U5      U" U5      -  n
U R                  X5        MX     S S S 5        g ! , (       d  f       g = f)Nr  #   $   i@B r  r4  i  )r   r   r  r*   r  r0  r  rB  )r   r   r  r  r  r  rN  r  r  r  r  s              r   test_bignumCWhitebox.test_bignum[  s     ))~~VV^qAF1X$$R,$$T40FAJ'!*,  &  ^^s   A-B((
B6c                 P    U R                  [        [        R                  SS5        g )Nr)   r  )rv  r4  r   r   r   s    r   test_invalid_construction#CWhitebox.test_invalid_constructionl  s    )QYY59r'   c                     [         R                  n[         R                  n[         R                  n[         R                  nU" U" 5       5         U R                  X!S5        S S S 5        g ! , (       d  f       g = f)N1e9999999999999999999)r   r   r   r-   r  rv  )r   r   r   r-   r  s        r   test_c_input_restriction"CWhitebox.test_c_input_restrictiono  sS    ))--))~~')$.57 %$$s   A**
A8c                    [         R                  n[         R                  nUR                  5       nSUl        SUl        SUl        [        Ul        SUl	        SUl
        [        [             H!  nSUR                  U'   SUR                  U'   M#     SUR                  U'   SUR                  U'   UR                  5       nSnU R                  XV5        g )Nr   r|  r   r  TaQ  Context(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]))r   r~  r  rn   r*   re  r_  r   r+   rX  ra   r;  rV  r,   r  rB  )r   r~  r  r  rn  r   r   s          r   test_c_context_reprCWhitebox.test_c_context_reprz  s     ))))!$

!!$CAGGCLAGGCL % #'"&JJLO 	r'   c           	      8   [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  n[         R                  n[         R                  n[         R                  S:  nU" 5       n	U R                  [        U	R                  R                  SS5        U R                  [        U	R                  R                  SS5        U R                  [        U	R                  R                  U5        U R                  [        U	R                  R                  U5        U R                  [         ["        U	SS/5        U R                  [         ["        U	SS/5        U R                  [        ["        U	SSS05        U R                  [        ["        U	SSS05        U	R                  R%                  5       n
X	 S	U
S
'   U R                  [        ["        U	SU
5        U R                  [        ["        U	SU
5        U(       a  SOSnU(       a  SOSnS H  nU R                  [        ["        XU5        M!     U R                  [        ["        U	SU* 5        U R                  [        XS9  U R                  [        XS9  U R                  [        X* S9  U R                  [&        XS-   S9  U R                  [&        XS-   S9  U R                  [&        X* S-
  S9  U R                  [&        XS-   S9  U R                  [&        XS-   S9  S H  nU R                  [&        ["        XUS-   5        U R                  [&        ["        XU* S-
  5        [(        R*                  S:w  d  MX  U R                  [        ["        XU5        U R                  [        ["        XU* S-
  5        M     [         R                  S:X  am  U R                  [&        [-        U	S5      US-   5        U R                  [&        [-        U	S5      US-   5        U R                  [&        [-        U	S5      U* S-
  5        [         R                  S:X  a  U R                  [        [-        U	S5      S5        U R                  [        [-        U	S5      S5        U R                  [        [-        U	S5      S5        U R                  [        [-        U	S5      S5        U R                  [        [-        U	S5      S5        U R                  [        [-        U	S5      S5        S H  nU R                  [        ["        XS5        U R                  [        ["        XS5        U R                  [         ["        X/ S Q5        U(       d  Mb  U R                  [        ["        XS!5        U R                  [        ["        XS"5        M     U R                  [         [.        S#[1        5       5        U R                  [         [.        S$[1        5       5        U" 5       nU R                  [         US%5        U" U5        g )&Nr   i!  r   rV  r  r,   r  r  iprw  r  r  l     NZoi ʚ;r`  r_  r  r  r  r  r  r  )r*   r_  re  rX  ra   win32r   r   r   i?r  i9rb  ra                 zwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr  )r   r-   r   r   r  r  r  r2   rZ  rv  re  rV  __setitem__r,   r  __delitem__r4  rK  rn   r  rp  platformr    execr  )r   r-   r   r   r  r  r  r2   HAVE_CONFIG_64r  r   int_maxgt_max_emaxr%   saved_contexts                  r   test_c_context_errorsCWhitebox.test_c_context_errors  s   ))--::))~~\\
\\
**y0I 	(AGG$7$7a@(AGG$7$7a@*agg&9&98D*agg&9&9;KL)Wa3%@)Wa#?(GQ!A?(GQ!A? GGLLN%(GQ;(GQ; ,' .fE %Dj'1KH %*gq&;,G 	*g@*g@*gLA 	-qyA-qyA-xzB-	B-19E BDmWawqyImWaxzJ||w&!!*gqH!!*gq
K B ::"mWQ8I-J%ai)mWQ8I-J%ai)mWQ8I-J&hqj* ::"j'!5F*GKj'!5F*G(*j'!5F*GLj'!5F*G(*j'!5F*G)+j'!5F*GK *Dj'1B?j'1A>i!7C~!!*gqF!!*gqH * 	)T+K (	$)TI (	$
 #)Z7=!r'   c                    U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R
                  [        R
                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        g r   )r  r   r   r  r   r   r   r   r   r.   r   r   s    r   test_rounding_strings_interned(CWhitebox.test_rounding_strings_interned  s    ajj!**-allALL1aooq7ammQ]]3aooq7a''):):;a''):):;allALL1r'   c           	         [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  n[         R                  n[         R                  S:  nU" 5       nU(       a  SOSn	U R                  [        [        USU	S-   5        U R                  [        [        USU	* S-
  5        [        R                  S:w  a>  U R                  [        [        USU	5        U R                  [        [        USU	* S-
  5        S H  n
U R                  [        [        XU	S-   5        U R                  [        [        XU	* S-
  5        [        R                  S:w  d  MX  U R                  [        [        XU	5        U R                  [        [        XU	* S-
  5        M     U R                  [        [        USS	5        U R                  [        [        USS5        U R                  [        [        US/ S
Q5        U(       a:  U R                  [        [        USS5        U R                  [        [        USS5        S H;  n
U R                  [        [        XS5        U R                  [        [        XS5        M=     g )Nr   r  r  _allcrr  r  r;  )r  r  r  ra  r<  r=  r  r  )r   r-   r   r   r  r  r2   rZ  rv  r  rK  rp  r@  r  r4  )r   r-   r   r   r  r  r2   rB  r  rC  r%   s              r   test_c_context_errors_extra%CWhitebox.test_c_context_errors_extra  s   ))--::~~\\
\\
**y0I ,' 	-!XwqyI-!XxzJ<<7"j'1hHj'1h
K )DmWawqyImWaxzJ||w&!!)WawG!!)WaxzJ ) 	*gq(B?*gq(A>)Wa7Cj'1hFj'1hH )Di!6Bi!3? )r'   c                 P   [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  n[         R                  nUR                  5       nSUl        [        Ul
        SUl        SUl        SUl        SUl        U R                  UR                  S5        U R                  UR                  [        5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR!                  5       S5        U R                  UR#                  5       S5        [         R$                  S:X  a  UR'                  S	5        UR)                  S	5        UR+                  S
5        U R                  UR                  S	5        U R                  UR                  S	5        U R                  UR                  S
5        g g )Nr  i  iHr  r   i'i  r   r  r  )r   r~  r   r   r   r   r   rn   r*   r   r+   re  r_  rX  ra   rB  EtinyEtoprZ  r   r   r   )r   r~  r   r   r   r   r   r  s           r   test_c_valid_contextCWhitebox.test_c_valid_context2  s   ))))KK	))))KK	! "

$]3'&Q'!$E*4( ::"i(i(j)QVVY/QVVY/QVVZ0 #r'   c                     [         R                  nUR                  5       nU R                  UR                  S5        SUl        U R                  UR                  S5        g )Nr  r   )r   r~  rn   rB  rL  )r   r~  r  s      r   test_c_valid_context_extra$CWhitebox.test_c_valid_context_extraX  sJ    ))!1%1%r'   c           	      F   [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  n[         R                  S:  a  SOSnU" 5        nSUR                  U'   U R                  X!" S5      R                  U* S-
  5        U R                  X!" S5      R                  U5        U R                  X!" S5      R                  [        US-   5      5        U R                  [         R                  U" S5      R                  [        US-
  5      * 5        U R                  [        U" S5      R                  U* S-
  5        U R                  [        U" S5      R                  US-   5        S S S 5        g ! , (       d  f       g = f)	Nr   r  r  Trw  r  r  r  )r   r   r   r  r   r  rZ  r,   rv  r  r  r  )r   r   r   r  r   r  rC  r  s           r   test_c_roundCWhitebox.test_c_rounda  sK   ))--~~::KK	ZZ)3'^q(,AGG$%.0I0I&hqj*.0I0I%'.0F0F!(1*o/a00'#,2H2H"9Q;//1mWV_-F-F&hqj*mWV_-F-F%ai) ^^s   0DF
F c                    [         R                  n[         R                  S:  nU R                  [        U" S5      R
                  S/ S5        U R                  [        U" S5      R
                  SS5        U R                  [        U" S5      R
                  / 5        U R                  [        U" S5      R
                  S5        U(       a  SOSnU R                  [        U" S5      R
                  S	U-  5        g )
Nr   r  z=10.10r)   z<>=10.10r  r  r  z=%d.1)r   r   rZ  rv  r4  r  r  )r   r   rB  maxsizes       r   test_c_formatCWhitebox.test_c_formaty  s    ))**y0)WQZ%:%:Hb!L)WQZ%:%:HaH)WQZ%:%:B?*gaj&;&;ZH+'*gl&;&F&F!G+	-r'   c                     [         R                  n[         R                  n[         R                  nU" S5      nU R	                  UR                  5       S5        U R                  [        UR
                  S5        U R                  [        UR
                  SS5        U R                  [        UR
                  S5        U R	                  UR                  5       S5        U R                  [        UR                  S5        U R                  [        UR                  SS5        U R                  [        UR                  S5        U R	                  UR                  5       S5        U R                  [        UR                  S5        U R                  [        UR                  SS5        U R                  [        UR                  S5        U" 5        nU" S5      R                  [        5      nU R	                  XA" S5      5        U" S5      R                  [        5      nU R	                  XA" S5      5        SUR                  U'   U R                  X!" S5      R                  [        5        S S S 5        g ! , (       d  f       g = f)Nr  rI  r  z99999999999999999999999999.9100000000000000000000000000Tz999.9)r   r   r   r  rB  r]  rv  r4  r   r   r   r,   )r   r   r   r  r  r  s         r   test_c_integralCWhitebox.test_c_integral  s   ))))~~BK"-)Q]]D9)Q]]B<)Q]]B7,,.3)Q%8%8$?)Q%8%8"cB)Q%8%8"=,,.3)Q%8%8$?)Q%8%8"cB)Q%8%8"=^q67II(SAQ(E FG67II(SAQ(E FG#AGGGgww'7'I'I8T ^^s   BI//
I=c           
         [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  nU R                  U" S5      R                  5       S5        U R                  [        [        U" S5      SS5        U R                  [        U" S5      R                  SS5        U R                  [        U" S5      R                  S	SS5        U R                  [        U" S
5      R                  U" S5      / 5        U R                  [        U" S
5      R                  U" S5      U" 5       5        U R                  [        U" S
5      R                  U" S5      S5        U R                  [        U" S
5      R                  U" S5      [        S5        U" 5        nUR                  5         U R                  [        UR                   U" S5      SS5        U R                  [        UR"                  S5        U R                  [        UR$                  S5        U R                  [        UR&                  SSSS5        U R                  [        UR                  SS	SS5        U R                  [)        UR#                  U" S5      5      5      S5        U R                  UR+                  5       S5        SUR,                  U'   U R                  X1" S5      R.                  S5        U R                  X6R&                  SS5        U R1                  UR2                  U   5        UR5                  5         SUR,                  U'   U R                  X!" S5      R.                  S5        U R                  X&R&                  SS5        U R1                  UR2                  U   5        SUR,                  U'   SUl        U R                  U[        U" S5      SS5        S S S 5        g ! , (       d  f       g = f)Nz9.99e10z99.9E+9r  r  rh  r)   r  r  r  r  z	1e-100000r  r4  r  r  200Tr   i  )r   r   r   r   r  r  rB  r   rv  r4  r  rg   r   r^  r   r@  ru   r  r{   rJ  r=  r  r,   r  r!   rV  r1  r*   )r   r   r   r   r  r  r  s          r   test_c_funcsCWhitebox.test_c_funcs  s   ))--))\\
~~+99;YG)S'!*a=)WQZ%<%<c3G)WQZ%<%<acJL!**GK,@"	
 	L!**GK,@*,	
 	L!**GK,@"	
 	L!**GK,@(D	

 ^qMMO igaj#sKic:i=i1acBiAsCHSWS\!:;UCQWWY+&*AGGN#ngaj.C.CQGnhh1=OOAGG$456MMO(,AGG$%.
0E0EqI.!Q?OOAGGN34(,AGG$%AF.WT]AsK5 ^^s   4H1O..
O<c           	         [         R                  n[         R                  nU" S5      nS H9  n[        X45      nU R	                  [
        USS9  U R	                  [
        USS S9  M;     S H9  n[        X45      nU R	                  [
        USS9  U R	                  [
        USS S9  M;     U R	                  [
        UR                  S / S9  U R	                  [
        UR                  0 / S9  U R	                  [
        UR                  / / 5        U R	                  [
        UR                  S / S9  U R	                  [
        UR                  0 / S9  U R	                  [
        UR                  / / 5        U R	                  [
        UR                  S / S9  U R	                  [
        UR                  0 / S9  U R	                  [
        UR                  / / 5        U R	                  [
        UR                  SSSS9  U R	                  [
        UR                  SSSS S9  U R	                  [
        UR                  S/ S S9  U R	                  [
        UR                  S/ S S	9  U R	                  [
        UR                  S/ / 5        U" 5       nU R	                  [
        UR                  SSSS
9  U R	                  [
        UR                  SSS S
9  U R	                  [
        UR                  SSS S
9  g )N10001111111)ra  r   r   rU  rV  rW  ry   r   r   r   rg   r   r   r  rK  )rf  ri   rc   r   r  r   r  r   r   rY  rZ  r[  rT  r  r  r  )mod)r   r   r-   r    rv  r4  r]  r   r   r\  r^  r  )r   r   r-   r  r%   funcr  s          r   test_va_args_exceptions!CWhitebox.test_va_args_exceptions  s   ))))M"KD 1#Dis;isDAKDD 1#Dis;isDAD 	)Q]]T2N)Q]]RL)Q]]B;)Q%8%84QST)Q%8%82rR)Q%8%8"bA)Q%8%84QST)Q%8%82rR)Q%8%8"bA)QUUAq#>)QUUAq#tD)QZZBE)QZZBF)QZZB;I)QWWa<)QWWa$?)QWWc1$?r'   c                    U R                  [        R                  R                  [        R                  [        R
                  -  [        R                  -  [        R                  -  [        R                  -  5        U R                  [        R                  R                  [        R                  [        R
                  -  [        R                  -  5        g r   )
rB  r   rJ  r  r"  r  r  r   r8   r~  r   s    r   test_c_context_templates"CWhitebox.test_c_context_templates  s    NN!!%%a&9&99!--GNN<<(	

 	##%%a&9&99!--G	
r'   c                   ^  [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  n[         R                  n[         R                  n[         R                  n[         R                  n	[         R                  n
[         R                  n[         R                  n[         R                  n[         R                  nU 4S jnUR                  5       nT R!                  UUR"                  ;   5        UR%                  5         UR"                  R'                  5        H  nSUR"                  U'   M     UR"                  R)                  5        H  nT R!                  U5        M     UR%                  5         UR"                  R+                  5        H  u  nnT R-                  U5        M     T R-                  UR.                  R1                  U5      5        T R3                  UR.                  R1                  S5      S 5        T R5                  UR.                  R1                  SS5      S5        T R7                  [8        UR.                  R0                  SSS5        T R5                  [;        UR.                  5      [;        UR"                  5      5        [<        R>                  " UR.                  5      n[<        R>                  " UR"                  5      nUR.                  RA                  5       nURC                  5         UUl"        T R!                  UR.                  U   5        UR%                  5         UUl#        T R!                  UR"                  U   5        URC                  5         UR.                  R                  5       nSUU'   UUl        U" UUR.                  5        UR%                  5         UR"                  R                  5       nSUU'   UUl        U" UUR"                  5        U[         R                  U	[         RH                  U
[         RJ                  U[         RL                  U[         RN                  U[         RP                  U[         RR                  U[         RT                  U[         R                  0	n[         RV                  [         RX                  [         RZ                  [         R\                  [         R                  [         R^                  [         R`                  /n[;        [b        [            5      n[e        U5       GH  n[e        U5       GH  n[f         GH  n[h        Rj                  " [b        [            U5      n[h        Rj                  " [b        [            U5      n[h        Rl                  " SS5      n[h        Rl                  " SS	5      n[h        Rl                  " S	S5      n[h        Rl                  " S	S
5      n [h        Rl                  " S	S
5      n![h        Rl                  " S	S
5      n"U" UUUUU!U [o        U5      [o        U5      S9nT R5                  URp                  U5        T R5                  URr                  U5        T R5                  URt                  U5        T R5                  URv                  U5        T R5                  URx                  U!5        T R5                  URz                  U 5        S	n#U H  n$U#UU$   -  n#M     T R5                  URD                  U#5        S	n#U H  n$U#UU$   -  n#M     T R5                  URF                  U#5        GM     GM	     GM     U H;  n%U%Ul"        T R!                  URD                  U-  5        U" UUR.                  5        M=     U H;  n%U%Ul#        T R!                  URF                  U-  5        U" UUR"                  5        M=     g )Nc                 r   > U H0  nX :X  a  TR                  X   5        M  TR                  X   5        M2     g r   )r!   rg  )r&  signal_dictrn  r   s      r   assertIsExclusivelySet<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySet.  s2    "=OOK$45$$[%56	 #r'   Tr  r  r_  r  r  ir   r  ru  )>r   r-   r~  r   r  r   r   r   r   r   r   r   r8   r  r"  rn   r!   r,   r@  r  valuesr  rg  rV  r  r  rB  rv  r4  r9  rp  	getsizeofr  r1  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r;  r  r  r0  sampler  r  r*   r+   r_  re  rX  ra   )&r   r-   r~  r   r  r   r   r   r   r   r   r   r8   r  r"  rr  r  r  r   r   r   
IntSignalsIntCondlimr  r   r  rV  r,   r*   r  r  ra   r  crr   r  r%  s&   `                                     r   test_c_signal_dictCWhitebox.test_c_signal_dict  s    ))))--))))::KK	KK	))))))\\
33"#";";	7 ! 	AGG+,	AAGGAJ  !AOOA "	GGMMODAqQ $ 	X./aggkk#&-S#.4)QWW[[#sC@QWWs177|4MM!''"MM!''"GG 	
()	& 012 	
GGLLN .~qww7	GGLLN)y!''2 1<<
1<<
1<<
Q^^
Q^^
AMM
!--
!--
A55


 
!
!1#9#91==


q44a6F6F



 .#$sA3Z*]E"MM.*;Q?E"MM.*;Q?E!++Au5D!++FA6D!++Au5D",,Q2E!++Aq1D))!Q/BTE4)-U$u+&*5k3A $$QVVT2$$QZZ7$$QVVT2$$QVVT2$$QZZ6$$QWWe4A"Z]* #$$QXXq1A"Z]* #$$QXXq19 +   @ DAHOOAHH%<<="#3QWW= 
 DAHOOAHH%<<="#3QWW= r'   c                   ^ [         R                  m SSKJn  S nSU4S jjnSU" / SQ5      SS.nS	U" / S
Q5      SS.nSU" / S
Q5      SS.nWS:X  a  U R                  [        USUS5        U R                  [        USUS5        U R                  [        USUS5        g ! [         a    U R                  S5         Nf = f)Nr   r  r  c                 b    SR                  U  Vs/ s H  n[        U5      PM     sn5      $ s  snf r  )r  r  )r  r  s     r   r  6CWhitebox.test_invalid_override.<locals>.make_grouping  s'    77C0CqCFC0110s   ,c                 2   > T" U 5      R                  X!5      $ r   )r  )r  r  r  r   s      r   r  0CWhitebox.test_invalid_override.<locals>.get_fmt  s    1:((77r'   r  )   r  r   r  xxxxxr  r  yyyyy   r  rn  r  )r   r   r  r  r  r  rv  r  )r   r  r  r  invalid_groupinginvalid_dotinvalid_sepr   s          @r   test_invalid_overrideCWhitebox.test_invalid_override  s    ))	;'	2	8 "&}5!
 &&y1!
 "&y1%
 s?j'5.5 	*guk3G*guk3G=  	;MM9:	;s   B   B>=B>c                    [         R                  n[         R                  n[         R                  nU" 5        nSUR                  U'   S[
        R                  -  nU R                  X1U5        S[
        R                  * S-
  -  nU R                  X1U5        S[
        R                  -  nU R                  X1U5        S[
        R                  * S-
  -  nU R                  X1U5        S S S 5        g ! , (       d  f       g = f)NTz0e%dr  z1e%d)r   r   r  r   r,   rp  r[  rv  r  s         r   test_exact_conversionCWhitebox.test_exact_conversion  s    ))~~--^q(,AGG$% $A.;3;;,q.)A.; $A.; 3;;,q.)A.;# ^^s   B,C--
C;c                    [         R                  n[         R                  n[         R                  n[         R                  n[         R
                  nU" 5        nSUl        SUR                  U'   SUR                  U'   SUR                  U'   SS[        R                  4nU R                  [        UR                  U5      5      S5        U R                  X1U5        SS[        R                  4nU R                  XFR                  U5        U R                  X1U5        SS[        R                  * S-
  4nU R                  [        UR                  U5      5      S5        U R                  X1U5        SS[        R                  * S-
  4nU R                  XVR                  U5        U R                  X1U5        SS[        R                  S-   4nU R                  [        UR                  U5        U R                  [        X5        SS[        R                  * S-
  4nU R                  [        UR                  U5        U R                  [        X5        S	nU R                  [        U" U5      5      S
5        SnU R                  [        U" U5      5      S
5        SnU R                  [        U" U5      5      S5        S S S 5        g ! , (       d  f       g = f)Nr)   Tr  r   z
-0E+999999)r   r  r  z-0E-1000007r  r.  r{  )r  r  r  )r  rd  r  z-sNaN1)r   r   r  r   r   r   r*   r,   rp  r[  rB  r=  r   rv  r  )r   r   r  r   r   r   r  r  s           r   test_from_tupleCWhitebox.test_from_tuple  sK   ))~~--::KK	^qAF(,AGG$% $AGGH!%AGGI B$AS!1!1!!45|D.;Is{{+Ah(8(8!<.; BQ'AS!1!1!!45}E.;I|A~.Ai)9)91=.; BA&AmQ-=-=qAmW8BQ'AmQ-=-=qAmW8 AS_g6AS_g6 AS_h7Q ^^s   I!K
Kc                    [         R                  n[         R                  S:  nU R                  U" S5      R	                  5       S5        U(       aG  U" SS-  5      R	                  5       nU" SS-  5      R	                  5       nU R                  XCS-   5        g U" SS-  5      R	                  5       nU" SS-  5      R	                  5       nU R                  XCS	-   5        g )
Nr   r   r  r  i  r        r  )r   r   rZ  r  
__sizeof__rB  )r   r   rB  r  r  s        r   test_sizeofCWhitebox.test_sizeof  s    ))**y071:002A6U$//1AU$//1AQ!$T
#..0AT
#..0AQ!$r'   c                 &  ^ [         R                  n " S S[        5      n " S S[        5      n " S S[        5      m " U4S jS[        5      nX#U4 H9  nU R	                  UR                  U" S	5      5      UR                  S	5      5        M;     g )
Nc                        \ rS rSrS rS rSrg)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Xi  c                     gNr  r   r   s    r   r5  MCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratio   s    r'   c                     U $ r   r   r   s    r   r  DCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__"      r'   r   Nr   ri  rj  rk  r5  r  rl  r   r'   r   Xr    s    r'   r  c                       \ rS rSrS rSrg)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Yi%  c                     S/S-  $ Nr  r  r   r   s    r   r  DCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__&      s3wr'   r   N)r   ri  rj  rk  r  rl  r   r'   r   Yr  %      r'   r  c                       \ rS rSrS rSrg)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Ii)  c                     S/S-  $ r  r   r   s    r   
bit_lengthGCWhitebox.test_internal_use_of_overridden_methods.<locals>.I.bit_length*  r  r'   r   N)r   ri  rj  rk  r  rl  r   r'   r   Ir  )  r  r'   r  c                   (   > \ rS rSrU 4S jrS rSrg)<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Zi-  c                 $   > T" S5      T" S5      4$ r  r   )r   r  s    r   r5  MCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratio.  s    !ad|#r'   c                     U $ r   r   r   s    r   r  DCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.__abs__0  r  r'   r   Nr  )r  s   r   Zr  -  s    $r'   r  gfffffFY@)r   r   r  r  rB  r  )r   r   r  r  r  r#   r  s         @r   'test_internal_use_of_overridden_methods1CWhitebox.test_internal_use_of_overridden_methods  sy    ))	 		 		 		 	 7CW//E
;$//68 r'   c                    [        [        R                  5       R                  5      nUR                  S   n[        [        R                  5       5      nUU[        R                  [        R                  4nU HA  nU R                  US9   U R                  [        S5         SUl
        S S S 5        S S S 5        MC     g ! , (       d  f       N= f! , (       d  f       Mf  = f)Nr   )tp	immutabler  )r<  r   r-   rV  	__bases__r  r   subTestassertRaisesRegexr4  foo)r   
SignalDictSignalDictMixinContextManagertypesr  s         r   test_c_immutable_types CWhitebox.test_c_immutable_types7  s    !))+++,
$..q1ann./IIII	
 B$++I{CBF D %$ CC %$s$   
C!B>)C>
CC
C	c                 T    [        [        R                  5       5      n[        X5        g r   )r<  r   r  r   )r   r  s     r   test_c_disallow_instantiation'CWhitebox.test_c_disallow_instantiationF  s    ann./$T:r'   c                    [        [        R                  5       R                  5      nU" 5       nSnU R	                  [
        U5         [        U5        S S S 5        U R	                  [
        U5         [        U5        S S S 5        U R	                  [
        U5         [        U5        S S S 5        U R	                  [
        U5         SU[        R                  '   S S S 5        U R	                  [
        U5         U[        R                       S S S 5        U R	                  [
        U5         U[        R                  5       R                  :H    S S S 5        U R	                  [
        U5         [        R                  5       R                  U:H    S S S 5        U R	                  [
        U5         UR                  5         S S S 5        g ! , (       d  f       GNw= f! , (       d  f       GN_= f! , (       d  f       GNG= f! , (       d  f       GN'= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nzinvalid signal dictT)r<  r   r-   rV  r  r  r9  iterrA  r   rn   )r   r  sderr_msgs       r   test_c_signaldict_segfault$CWhitebox.test_c_signaldict_segfaultJ  s   !))+++,
\'##J8G 9 ##J8H 9 ##J8H 9 ##J8%)Bq!!" 9 ##J8q!!" 9 ##J8!))+### 9 ##J8IIK# 9 ##J8GGI 98+ 98 98 98 98 98 98 98 98s`   G1GG'G97H)"H)"H.)H?
G
G$'
G69
H
H
H+.
H<?
Ic                     [         R                  S5      nU R                  [        US5      S5        [         R	                  SS9   U R                  [        US5      S5        S S S 5        g ! , (       d  f       g = f)Nz6.09e+23r=   z6.09E+23r   r  )r   r   rB  r  r  )r   r  s     r   test_format_fallback_capitals'CWhitebox.test_format_fallback_capitalsh  sX     IIj!34^^Q^'VAs^Z8 (''s   A++
A9c                    [         R                  S5      nU R                  [        US5      S5        [         R	                  [         R
                  S9   U R                  [        US5      S5        S S S 5        g ! , (       d  f       g = f)Nz6.09z#.1fz6.1r  z6.0)r   r   rB  r  r  r   )r   r  s     r   test_format_fallback_rounding'CWhitebox.test_format_fallback_roundingp  s\    IIf6*E2^^Q\\^2VAv.6 322s   A99
Br   N) r   ri  rj  rk  r.  r1  r5  r8  rF  rI  r(  rM  rR  rU  rX  r\  r`  rd  rj  rm  r{  r  r  r  r  r  r  r  r  r  r  rl  r   r'   r   r*  r*  W  s    '":	7:c"J	2 "(@ "(@T$1L "& "&)0-U>9Lv*@X "	
 "	
 "C> "C>J#HJ<0/8b%88;<97r'   r*  c                        \ rS rSrS rS rSrg)SignatureTestiv  c                    [        [        5       GH  nUR                  S5      (       a  M  [        [        U5      n[        [        U5      nUS:X  d#  US:X  d  [
        R                  " U5      (       d  Me  [
        R                  " U5      n[
        R                  " U5      n[        UR                  R                  5       5      nUR                  R                  5        Vs/ s H  nUR                  S5      (       a  M  UPM     nnU R                  XhSU-  S9  UR                  R                  5        Vs/ s H  owR                  PM     n	nUR                  R                  5        Vs/ s H-  nUS   R                  S5      (       a  M  US   R                  PM/     n
nUS:w  d  GM  U R                  XS	U-  S9  GM     g s  snf s  snf s  snf )
Nr  r   r-   parameter name mismatch in %smsgr   r  r2   parameter kind mismatch in %s)r  r  r  r    r   inspect
isfunction	signaturer  
parametersr  rB  rt  kindr  )r   r%   p_funcc_funcp_sigc_sigc_namesr  p_namesc_kindp_kinds              r   test_inspect_module!SignatureTest.test_inspect_module{  s   FDs##Q%FQ%F	!TY%6""6**))&1))&1 u//4467&+&6&6&;&;&= .&=<<, &= .   %Dv%M ! O +0*:*:*A*A*CD*CQ&&*CD-2-=-=-C-C-E 0-EA$//#. $!A$))-E 0 <'$$V)H6)Q % S1 . E0s    G >G 5G(G
	G
c                   ^ ^^^^^ [         R                  R                  m[         R                  R                  m[        [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      SS[        R                  [        R                  5       S.[        [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      [        R                  S5      SS[        R                  [        R                  5       S.0mUUU4S jmS mUUUU U4S jnU" S	5        U" S
5        g )Nr  r  r  )r  r  r  r  r_  r  r  r  ra  r  numr   r+   r$   )r  r  r  r  r  ra  r  r  r   r+   r$   c                   > / n0 nUR                   R                  5        H[  u  pEUS:X  a  M  UR                  T:X  a  UR                  TU    U   5        M6  UR                  T:X  a  TU    U   X4'   MR  [	        S5      e   X#4$ )Nr   zunexpected parameter kind)r  r  r  r:  r   )	modulern  r  kwargsnameparamPOSPOS_KWDpdicts	         r   mkargs0SignatureTest.test_inspect_types.<locals>.mkargs  s    DF"~~3356>8::$KKfd 34ZZ7*#(=#6FL$%@AA  6 <r'   c                 0    U S:X  a  gU S:X  a  gU S:X  a  gU $ )Nr  r  r  r  r_  r  r   )r   s    r   tr,SignatureTest.test_inspect_types.<locals>.tr  s$     CxCxCxHr'   c           
      (  > [        [        U 5      n[        [        U 5      n[        U5       GH  nUR	                  S5      (       a  M  [        X5      n[        X#5      n[
        R                  " U5      (       d  MO  [
        R                  " U5      n[
        R                  " U5      n[        UR                  R                  5       5      nUR                  R                  5        V	s/ s H  n	T" U	5      PM     n
n	TR                  XSU-  S9  UR                  R                  5        V	s/ s H  oR                  PM     nn	UR                  R                  5        V	s/ s H  oR                  PM     nn	TR                  US   T5        TR                  US   T5        U S:X  a  TR                  USS  USS  SU-  S9  O&TR                  [        U5      [        U5      SU-  S9  T" [        U5      u  p [        U" S5      U5      " U0 UD6  T" [        U5      u  p [        U" S5      U5      " U0 UD6  GM     g s  sn	f s  sn	f s  sn	f ! [          a    [#        S	U< S
U< SU< 35      ef = f! [          a    [#        S	U< S
U< SU< 35      ef = f)Nr  r  r  r   r   r  r  r)   zinvalid signature for z: r"  )r    r  r   r  r  r  r  r  r  r  r  rB  rt  r  r  r9  rL  r   )typ_typec_typer%   r  r  r  r  r  r  r  r  r  r  kwdsr  r  r  r   r  s                  r   r6  .SignatureTest.test_inspect_types.<locals>.doit  sn   Q^FQ^FF??3'' . .%%f--#--f5E#--f5E #5#3#3#8#8#:;G.3.>.>.C.C.EF.Er!u.EGF$$W)H6)Q % S /4.>.>.E.E.GH.Gff.GFH.3.>.>.E.E.GH.Gff.GFH MM&)W5MM&)S1 Y((VABZ-Lv-U ) W ((Vc&k-Lv-U ) W "(5!1JDcq	40$?$? "(5!1JDcq	40$?$?Q $ G
 IH$ % c(fVZ\`)abbc % c(fVZ\`)abbcs*   'H;*I I5I
I/
"I,/"Jr   r-   )	r  _ParameterKindPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr   r   r   r  r  )r   r6  r  r  r  r  r  s   ` @@@@@r   test_inspect_types SignatureTest.test_inspect_types  sL   $$44((>> aiiliil))A,))A,))A,))A,))A,))A,IIaL yy|!" !0 aiiliil))A,))A,))A,IIaL yy|!" !
014	 	-	c -	c^ 	YYr'   r   N)r   ri  rj  rk  r  r  rl  r   r'   r   r  r  v  s    
S8er'   r  c           
      b  ^ [         b  U R                  5       n[        R                  " [        5       He  nSU;  d  UR                  S5      (       a  M!  UR                  S5      u  pE[         b  U[         ;  a  MG  U4S jn[        [        SU-   U5        AAAAMg     S[        4S[        44 HT  u  pxU(       d  M  [        US-   [        [        R                  4SU05      n	UR                  U R                  U	5      5        MV     [         c  S	S
KJn
Jn  [&        R(                  " 5       R+                  5       m[        [        4 Hi  nU(       d  M  U4S jnU4U4S jjnU[        L a  UOS	nU[,        R.                  S'   UR                  U
" XUUS95        [&        [,        R.                  S'   Mk     U$ )Nz.decTestr  c                 2    U R                  [        U-   5      $ r   )r  	directory)r   r   s     r   r  load_tests.<locals>.<lambda>  s    $..Q*Gr'   test_r   Pyr:   r   r   )DocTestSuiteIGNORE_EXCEPTION_DETAILc                 @    U[         R                  S'   [        U5        g Nr   )rp  r  r5   )slfrh  s     r   r   load_tests.<locals>.setUp  s    ),I&S	r'   c                    > [         [        R                  S'   UR                  [        U   R                  5       5        [         R                  " TR                  5       5        g r  )orig_sys_decimalrp  r  r2   ORIGINAL_CONTEXTrn   )r  rh  orig_contexts     r   ry  load_tests.<locals>.tearDown   sC    )9I&/499;< ++L,=,=,?@r'   )r   ry  optionflags)
TODO_TESTS
suiteClassoslistdirr  r  r  rK  r:   r   r  r<  r   TestCaseaddTestloadTestsFromTestCasedoctestr  r  r  r  rn   rp  r  )r  testspatternr  headtailtesterprefixrh  
test_classr  r  r   ry  r  r  s                  @r   
load_testsr&    s   !!# JJy)X%)<)<S)A)A^^C(
!d*&< (Ggnf5dD& * Qx$*&>1'):):;$c*,
 	f22:>? + A'22499;a4C"  #& A 69AX11K%(CKK	"MM,s(/:< =%5CKK	"  Lr'   c                  r    [        [        5        [        [        5        [        b  [        qg [	        S5      qg r  )r5   r   r  ARITHr   r/  r   r'   r   setUpModuler)  +  s$    GG)uH/B9/MHr'   c                     [         (       a.  [         R                  [        [            R                  5       5        [        R                  [        [           R                  5       5        [         (       d)  [
        R                  " [        5      R                  S5        [        [        R                  S   La  [        S5      eg )Nz*C tests skipped: no module named _decimal.r   zGInternal error: unbalanced number of changes to sys.modules['decimal'].)r   r2   r  rn   r  logging	getLoggerr   warningr  rp  r  r   r   r'   r   tearDownModuler.  1  s    q!,,'*//1
2LL!!$))+,1(#++8	
 s{{955 3 4 	4 6r'   c                 b    U q UqUq[        R                  " [
        U(       a  SOSS[
        /S9  g )Nr  r  F)	verbosityexitargv)r(  r  r2  r   mainr   arithverbose
todo_testsdebugs       r   testr9  B  s+     EJEMM(7aXJWr'   z:test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]z--debugz-d
store_truez2shows the test number and context before each test)actionhelpz--skipz-sz%skip over 90% of the arithmetic tests)r5  r6  r4  )NNNN)r+  r  r  rp  rI  warningsr  rn   r   r  r  test.supportr   r   r   r   r   r   r	   r
   test.support.import_helperr   r   r   r0  r  r  r@  r   r  r   r  
cfractionsr  
pfractionsr   
skipUnlessrequires_cdecimalr6  r  rV  r  r1   r   r   r   r   r   r   r   r   r  r;  r&   r   r   r   r   r   r   r.   r   r  r  r5   TESTDATADIRr   r2  r   r  pathdirnamecurdirtestdirsepr  isdirr   r9  hasattrEXTRA_FUNCTIONALITYr(  skipIfskip_if_extra_functionalityr:   rn  r  r  r  r  rQ  rS  rU  r  r  r  r]  r_  ro  rw  requires_working_threadingry  r  r  r  ri  rk  r  r  r  r  r  r  r  r  r	  r  rD  rF  rH  rZ  r\  r^  rj  rl  rn  r~  r  r  r  r  r  r  r  r  r*  r  r&  r)  r.  r(  r/  r  r2  r9  optparseOptionParserr?  
add_option
parse_argsoptr  skipr8  r   r'   r   <module>rV     s  6         8 85 5 ; ) (    <<8n- 	*6	J<8 " ![MB
I  [MB
I z1Z(	)I ''+DE  1U1<<>$$&'$U1<<>$$&'  iiAIIq{{AKKjj!""A$6$6"&aiiAIIq{{AKKjj!""A$6$6	H ::\\
mm####\\
 J{/ aQ\\^TQ\\^ %  z88A;DD
''//$

,299bff{*RVV3	GGMM),,   &a66dE '22G I &oo46 a# a#LI< I<V
  8(:K:K  !98;L;L K1 K1Z  8(:K:K  !98;L;L s9 s9j *h//  :x00 hA hAT	 68I8I   79J9J 
%'N*0Z ,,.*( *( /*(Z ]H$5$5  mX%6%6 pE pEd ]H$5$5  
mX%6%6 
[N [Nz
 nh&7&7  ~x'8'8 WC WCr (9(9  ):): b bH 0(2C2C  183D3D I0 I0V L("3"3  \8#4#4 N N` (9(9  ):): <; <;| 4h6G6G  5x7H7H k. k.Z ,h.?.?  -x/@/@  1h'' 1  1<H  H T (++  
8,, 
>h'' >0ZM"" ZMxSCX&& SCj \7!! \7 \7| DH%% D  DN*XN	4 	
X zZ[ALLD<pLqLLD<cLd,,.KS$
xxx5$'	4$ciiH4& r'   