
    0hhc                        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  S SKJrJrJrJrJrJr  S SK	Jr  S SKJr  S SKJrJr   " S S5      r " S	 S
5      r \R6                  " 5       R                  5         Sr\ R<                  " \S5       " S S\\ R>                  5      5       r  " S S\ R>                  5      r! " S S\\ R>                  5      r"S\-  S-  4S jr# " S S\ R>                  5      r$ " S S\ R>                  5      r% " S S\ R>                  5      r& " S S\ R>                  5      r'\(S:X  a  \ RR                  " 5         gg! \ a    Sr Nf = f)     N)partial)logexppifsumsin	factorial)support)Fraction)abcCounterc                        \ rS rSrS rS rSrg)MyIndex   c                     Xl         g Nvalue)selfr   s     9/opt/python-3.13.8/usr/lib/python3.13/test/test_random.py__init__MyIndex.__init__   s    
    c                     U R                   $ r   r   r   s    r   	__index__MyIndex.__index__   s    zzr   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    r   r   c                       \ rS rSrS rS rS rS rS r\	R                  R                  S5      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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 )!TestBasicOps   c                 r    [        U5       Vs/ s H  o R                  R                  5       PM     sn$ s  snf )z0Helper function to make a list of random numbers)rangegenrandom)r   nis      r   
randomlistTestBasicOps.randomlist   s'    +0848a!8444s   #4c                 "   U R                   R                  5         U R                   R                  5       n[        R                  " S5        U R                   R                  5         U R                   R                  5       nU R                  X5        g )N皙?)r)   seedgetstatetimesleepassertNotEqual)r   state1state2s      r   test_autoseedTestBasicOps.test_autoseed#   sY    ""$

3""$F+r   c                    SnU R                   R                  5         U R                   R                  5       nU R                  U5      nU R                   R	                  U5        U R                  X0R                  U5      5        g )N  )r)   r1   r2   r-   setstateassertEqual)r   Nstaterandseqs       r   test_saverestoreTestBasicOps.test_saverestore+   s]    !!#//!$% //!"45r   c                     " S S[         5      nS H  nU R                  R                  U5        M      S[        S5      U" 5       4 H<  nU R	                  [
        5         U R                  R                  U5        S S S 5        M>     [        [        S5      5      [        SS94 H.  nU R	                  [
        U R                  R                  U5        M0     U R	                  [
        U R                  R                  SS	SS
5        U R	                  [
        [        U R                  5      / 5        g ! , (       d  f       M  = f)Nc                       \ rS rSrS rSrg)*TestBasicOps.test_seedargs.<locals>.MySeed5   c                     g)Ni?r#   r   s    r   __hash__3TestBasicOps.test_seedargs.<locals>.MySeed.__hash__6   s    r   r#   N)r   r   r    r!   rH   r"   r#   r   r   MySeedrE   5   s    r   rJ   )
Nr      l      Fx:^V    Fx:^V FTQ	@ay      ?       @r      rK   )one      )
objectr)   r1   tupleassertRaises	TypeErrorlistr(   dicttype)r   rJ   args      r   test_seedargsTestBasicOps.test_seedargs3   s    	V 	,CHHMM#, %,1C""9-c" .- 2 qNDQK0Ci< 1)TXX]]Aq!Q?)T$((^R8 .-s   D//
D>	c                     [        S5      nU R                  R                  U5        U R                  U[        S5      5        g )Ns   1234)	bytearrayr)   r1   r=   )r   rO   s     r   test_seed_no_mutate_bug_44018*TestBasicOps.test_seed_no_mutate_bug_44018E   s1    gaIg./r   zrandom._urandomc                 :    [         Ul        U R                  5         g r   )NotImplementedErrorside_effectr\   )r   urandom_mocks     r   *test_seed_when_randomness_source_not_found7TestBasicOps.test_seed_when_randomness_source_not_foundJ   s     $7 r   c                 0   U R                   R                  n/ nU" U5        U R                  U/ 5        S/nU" U5        U R                  US/5        [        S5       Vs/ s H  n[	        [        U5      5      PM     nn[        S5       Vs/ s H  n[	        [        U5      5      PM     nnU H  nU" U5        M     [        XE5       HM  u  pvU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        MO     [	        [        S5      5      n[	        [        S5      5      nU" U5        U R                  X(:g  5        U" U5        U R                  X(:g  5        U R                  [        US5        g s  snf s  snf )N%   
   r;   rK   rR   rP   )r)   shuffler=   r(   rX   ziplenset
assertTruerV   rW   )	r   rl   lstr+   seqsshuffled_seqsshuffled_seqseqshuffled_lsts	            r   test_shuffleTestBasicOps.test_shuffleT   sH   ((""b!drd#(-b	2	1U1X	216r;AeAh;)LL! *#&t#;SSXs<'89SXs<'89 $< 5;E$K(+,+,)Wi8/ 3;s   FFc                    U R                   R                  nU R                  [        5         U" / 5        S S S 5        U R	                  U" S/5      S5        U R                  U" SS/5      SS/5        g ! , (       d  f       ND= f)N2      K   )r)   choicerV   
IndexErrorr=   assertIn)r   r}   s     r   test_choiceTestBasicOps.test_choiceu   sc    z*2J +r*fb"X&R1 +*s   	A33
Bc                 J   U R                   R                  n " S S[        5      nU R                  [        5         U" U" / 5      5        S S S 5        U R                  U" U" S/5      5      S5        U R                  U" U" SS/5      5      SS/5        g ! , (       d  f       NP= f)Nc                       \ rS rSrSrS rSrg)/TestBasicOps.test_choice_with_numpy.<locals>.NA   zSimulate numpy.array() behaviorc                     [         er   )RuntimeErrorr   s    r   __bool__8TestBasicOps.test_choice_with_numpy.<locals>.NA.__bool__   s    ""r   r#   N)r   r   r    r!   __doc__r   r"   r#   r   r   NAr      s
    -#r   r   rz   r{   r|   )r)   r}   rX   rV   r~   r=   r   )r   r}   r   s      r   test_choice_with_numpy#TestBasicOps.test_choice_with_numpy|   s     	# 	#
 z*2b6N +B4)2.fRR\*RH5 +*s   B
B"c                 F   Sn[        U5      n[        US-   5       H|  nU R                  R                  X#5      nU R                  [	        U5      U5        [        U5      nU R                  [	        U5      U5        U R                  U[        U5      :*  5        M~     U R                  U R                  R                  / S5      / 5        U R                  [        U R                  R                  X!S-   5        U R                  [        U R                  R                  / S5        g )Nd   rK   r   rL   )	r(   r)   sampler=   rn   ro   rp   rV   
ValueError)r   r>   
populationksuniqs         r   test_sampleTestBasicOps.test_sample   s     1X
qsA
.ASVQ'q6DSY*OODC
O34  	Q/4*dhhoozQ3G*dhhoor2>r   c           
      2   Sn[        U5      nSn[        U5       Hy  n[        U5      [        X-
  5      -  n0 n[        U5       H<  nS U[        U R                  R	                  X$5      5      '   [        U5      U:X  d  M;    Mg     U R                  5         M{     g )N   '  )r(   r	   rU   r)   r   rn   fail)r   r+   poptrialsr   expectedpermsr,   s           r   test_sample_distribution%TestBasicOps.test_sample_distribution   s     AhqA |y~5HE6]8<eDHHOOC345u:) #
 		 r   c                 ,   U R                   R                  [        S5      S5        U R                   R                  [        S5      S5        U R                   R                  [        S5      S5        U R                   R                  [	        S5      S5        g )N   rR   abcdefghijklmnopqrst)r)   r   r(   strrU   r   s    r   test_sample_inputsTestBasicOps.test_sample_inputs   s^    b	1%b	1%23Q745q9r   c                     U R                  [        U R                  R                  [        R                  S5      S5        g )NabcdefrR   )rV   rW   r)   r   rY   fromkeysr   s    r   test_sample_on_dicts!TestBasicOps.test_sample_on_dicts   s'    )TXX__dmmH6MqQr   c                     U R                  [        5         1 SknU R                  R                  USS9  S S S 5        g ! , (       d  f       g = f)N>   rj   r      (   rz   <   F   r   r   )rV   rW   r)   r   )r   r   s     r   test_sample_on_sets TestBasicOps.test_sample_on_sets   s5    y)5JHHOOJ!O, *))	   >
Ac                 0    " S S[         R                  [         R                  5      nU" / SQ5      n[        R                  " 5          [        R
                  " S[        5        U R                  R                  USS9  S S S 5        g ! , (       d  f       g = f)Nc                   &    \ rS rSrS rS rS rSrg)3TestBasicOps.test_sample_on_seqsets.<locals>.SeqSet   c                     Xl         g r   _items)r   itemss     r   r   <TestBasicOps.test_sample_on_seqsets.<locals>.SeqSet.__init__   s    #r   c                 ,    [        U R                  5      $ r   )rn   r   r   s    r   __len__;TestBasicOps.test_sample_on_seqsets.<locals>.SeqSet.__len__   s    4;;''r   c                      U R                   U   $ r   r   )r   indexs     r   __getitem__?TestBasicOps.test_sample_on_seqsets.<locals>.SeqSet.__getitem__   s    {{5))r   r   N)r   r   r    r!   r   r   r   r"   r#   r   r   SeqSetr      s    $(*r   r   )rR   rS   rK   rP   errorrR   r   )	r   SequenceSetwarningscatch_warningssimplefilterDeprecationWarningr)   r   )r   r   r   s      r   test_sample_on_seqsets#TestBasicOps.test_sample_on_seqsets   sa    	*S\\377 	* L)
$$&!!'+=>HHOOJ!O, '&&s   6B
Bc                    U R                   R                  n/ SQn/ SQnSn[        U" X#US95      nU R                  [	        UR                  5       5      U5        [        X#5       H  u  pgU R                  XV   U5        M     U R                  SU5        [	        U5      n[        U" X#US95      nU R                  [	        UR                  5       5      U5        [        X#5       H  u  pgU R                  XV   U5        M     U R                  SU5        [        U" S/S/SS95      nU R                  U[        SS	95        [        U5      n[        U" US/U-  SU-  S95      nU R                  U[        SU-  5      5        U R                  [        5         U" / S
QSSS9  S S S 5        U R                  [        5         U" / S
Q/ SQSS9  S S S 5        U R                  [        5         U" SS/SS/SS9  S S S 5        U R                  [        5         U" / S
QSS/SS9  S S S 5        U R                  [        5         U" / S
Q/ SQSS9  S S S 5        U R                  U" SS/ SQS9U" / SS95        U R                  U" / S/ S9U" / S5      5        U R                  [        5         U" / S/ S9  S S S 5        U R                  [        5         U" SSS/S9  S S S 5        g ! , (       d  f       GNC= f! , (       d  f       GN+= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)N)redgreenblueorangeblackbrownamber)     r   rj   r   r   rK     countsr   r   xrj      )r   )r   r   r   )iirR   r   r      rK   )rK   rR   rP   rS   r   r   )r   r   r   )r   r   r   )r   )r)   r   r   r=   sumvaluesrm   assertLessEqualassertNotInrn   rV   rW   r   )	r   r   colorsr   r   summarycolorweightncs	            r   test_sample_with_counts$TestBasicOps.test_sample_with_counts   s    ON&!<=W^^-.2 0ME  8 1'* K&!<=W^^-.2 0ME  8 1'* &#tq9:'A,/ [&R2b5AB'"V)"45 y)+B"= *z*+LAF +z*E7#RH; +z*+QFa@ +z*+LAF + 	5Ai02O	
 	2q$2qM	
 z*2q$ +z*31#& +*- *)******** +***sT   K<K-&K?L:L""	L3
M
K*-
K<?
L
L"
L03
M
Mc                    U R                   R                  n/ SQnSn[        S5      n[        [        S5      5      nU" USS9U" U[        S5      SS9U" SU[        S5      S9U" SU[        S5      S94 Hc  nU R	                  [        U5      S5        U R	                  [        U5      [        5        U R                  [        U5      [        U5      :*  5        Me     U R                  [        5         U" S5        S S S 5        U R	                  U" US	S9/ 5        U R	                  U" US
S9/ 5        U R                  [        5         U" USS9  S S S 5        U R                  [        U" USS95      [        U5      :*  5        U R                  [        U" USS95      [        U5      :*  5        U R                  [        5         U" USS9  S S S 5        U R                  [        U" US SS95      [        U5      :*  5        U R                  [        U" US SS95      [        U5      :*  5        U R                  [        5         U" USS/SS9  S S S 5        U R                  [        5         U" USSS9  S S S 5        U R                  [        5         U" US /S-  SS9  S S S 5        / SQ/ SQ[        SS5      [        SS5      [        SS5      [        SS5      // SQ4 H.  nU R                  [        U" X'SS95      [        U5      :*  5        M0     U R                  [        5         U" USS/SS9  S S S 5        U R                  [        5         U" USSS9  S S S 5        U R                  [        5         U" US /S-  SS9  S S S 5        U R                  [        5         U" U[        S5      [        S5      SS9  S S S 5        / SQ/ SQ[        SS5      [        SS5      [        SS5      [        SS5      /4 H.  nU R                  [        U" X'SS95      [        U5      :*  5        M0     U R	                  U" S/ SQ5      S/5        U R	                  U" S/ SQ5      S/5        U R	                  U" S/ SQ5      S/5        U R	                  U" S/ SQ5      S/5        U R                  [        5         U" / SS9  S S S 5        U R                  [        5         U" / / SS9  S S S 5        U R                  [        5         U" / / SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNg= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNM= f! , (       d  f       GN9= f! , (       d  f       GN!= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)N)r   r   r   yellowabcdrS   r   r   )r   r   weights)r   r   cum_weightsrR   r   rL         @)r   r   rK   rj   )   rj   r{   r   )g333333.@gffffff$@g3333339@gL>@rP      )TFTFr   r   )rK   r   r   r   rO   )r   rK   r   r   b)r   r   rK   r   c)r   r   r   rK   d)r)   choicesr(   ro   r=   rn   rZ   rX   rp   rV   rW   r   r   r~   )r   r   datastr_data
range_dataset_datar   r   s           r   test_choicesTestBasicOps.test_choices  s   ((""11X
uQx= DAD%(a(aD%(;aDeAh?	
F S[!,T&\40OOCK3t945
 y)AJ * 	+R0,b1y)DC  * 	GH23s8}DEGJ!45ZHIy)H" * 	GD$!45TBCGD$!<=TJKz*D1Q%1% +y)D"" *y)D4&(a( * !(!Q!Q!Q!QP*	
G OOC ;<D	IJ
 z*Dqeq1 +y)DbA. *y)DtfQh!4 *y)D%(aA> * !(!Q!Q!Q!QP
G
 OOCQ GHCPTIUV
 	6>6>6>6> z*B! +z*Ba( +z*BB!, +*o *)
 *)
 *)
 +*)))) +*))))))  +*****s   0	TT?T'<T9$	U
UU/	V,VV%&V7	W	1	W
T
T$'
T69
U
U
U,/
U>
V
V"%
V47
W	
W
W(c                 H    U R                   R                  nU" SS/SS/SS9  g )NrK   rR   g         )r   r   r   )r)   r   )r   r   s     r   test_choices_subnormal#TestBasicOps.test_choices_subnormalO  s(    
 ((""Aq6FF+;tDr   c                     U R                  [        5         U R                  R                  SSS/5        S S S 5        g ! , (       d  f       g = f)NAB        rV   r   r)   r   r   s    r   "test_choices_with_all_zero_weights/TestBasicOps.test_choices_with_all_zero_weightsW  s4    z*HHTC:. +**r   c                     U R                  [        5         U R                  R                  S/ SQ5        S S S 5        g ! , (       d  f       g = f)NABC)rP   rK   r  r   s    r   test_choices_negative_total(TestBasicOps.test_choices_negative_total\  s0    z*HHUJ/ +**r   c                 t   U R                  [        5         U R                  R                  S[	        S5      /5        S S S 5        U R                  [        5         U R                  R                  SS[	        S5      /5        S S S 5        U R                  [        5         U R                  R                  S[	        S5      * S/5        S S S 5        U R                  [        5         U R                  R                  SS[	        S5      /5        S S S 5        U R                  [        5         U R                  R                  S[	        S5      [	        S5      /5        S S S 5        g ! , (       d  f       GN.= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NAinfr  r  {   nanz-inf)rV   r   r)   r   floatr   s    r   test_choices_infinite_total(TestBasicOps.test_choices_infinite_total`  s   z*HHS5<.1 +z*HHTCu#67 +z*HHTU5\M3#78 +z*HHTCu#67 +z*HHTE&M5<#@A +* +*********s;   'E$(E6)F%(F*1F)$
E36
F
F
F&)
F7c                    S H  nU R                   R                  U5        U R                   R                  5       nU R                   R                  SS5      nU R                   R                  U5        U R                   R                  5       nU R                   R                  SS5      nU R	                  X$5        U R	                  X55        M     g )N)rK      r  i  i90  i@ i	 r   rK   )r)   r1   r*   gaussr=   )r   r1   x1y1x2y2s         r   
test_gaussTestBasicOps.test_gaussl  s    
 <DHHMM$"B1%BHHMM$"B1%BR$R$ <r   c                     [        SS5       HC  nU R                  SU R                  R                  U5      s=:*  =(       a    SU-  :  Os  5        ME     U R	                  U R                  R                  S5      S5        U R                  R                  nS HV  nSU-  S-
  nSnSn[        S5       H  nU" U5      nXX-  nXdU-  -  nM     U R	                  XT5        U R	                  Xd5        MX     U R                  [        U R                  R                  5        U R                  [        U R                  R                  SS5        U R                  [        U R                  R                  S5        U R                  [        U R                  R                  SS-  5        U R                  [        [        4U R                  R                  SS-  5        U R                  [        U R                  R                  S5        g )	NrK   r;   r   rR   )rK   rR   rP   rS          r!  4   rF   6   w         r   r   rL   g333333$@)	r(   rp   r)   getrandbitsr=   rV   rW   r   OverflowError)	r   r   getbitsspanall_bitscumcpl_cumr,   vs	            r   test_getrandbitsTestBasicOps.test_getrandbits}  s   q$AOOA!5!5a!8??1a4?@  --a0!4 ((&&LD$wqyHCG3ZDMa<'   S+W/ M 	)TXX%9%9:)TXX%9%91a@*dhh&:&:B?-)=)=q$wG:}5txx7K7KRQUXV)TXX%9%94@r   c                    [        [        R                  S-   5       H  n[        R                  " U R                  U5      n[        S5       Vs/ s H  o0R                  R                  5       PM     nn[        R                  " U5      n[        S5       Vs/ s H  o5R                  5       PM     nnU R                  XF5        M     g s  snf s  snf )NrK   rj   )r(   pickleHIGHEST_PROTOCOLdumpsr)   r*   loadsr=   )r   protor?   r,   origseqnewgenrestoredseqs          r   test_picklingTestBasicOps.test_pickling  s    622Q67ELL51E27)<)Qxx()G<\\%(F49"I>Iq==?IK>W2 8<>s   #CCc                    / SQnU Hp  u  p#[        [        R                  " U5      S5       n[        R                  " U5      nS S S 5        U R                  [        WR                  5       S-  5      U5        Mr     g ! , (       d  f       N?= f)N))zrandv2_32.pcki  )zrandv2_64.pckib  )z
randv3.pckiW  rbr;   )openr
   findfiler2  loadr=   intr*   )r   filesfiler   frs         r   test_bug_1727780TestBasicOps.test_bug_1727780  sf    & !KDg&&t,T2aKKN 3SD159 !22s   A<<
B
	c                    ^ SnU R                   R                  m[        U4S j[        U5       5       5      nU R	                  SX!-  s=:  =(       a    S:  Os  X!-  5        g )N順 c              3   @   >#    U  H  nT" S 5      S-  S:H  v   M     g7f)l          rP   rR   Nr#   ).0r,   	randranges     r   	<genexpr>-TestBasicOps.test_bug_9025.<locals>.<genexpr>  s!     Gh	*+a/14hs   333333?gGz?)r)   rL  r   r(   rp   )r   r+   r   rL  s      @r   test_bug_9025TestBasicOps.test_bug_9025  sL     HH&&	GeAhGGqs((S(130r   c                 F   [        SS5       HX  nU R                  R                  U5      nU R                  [	        U5      [
        5        U R                  [        U5      U5        MZ     U R                  U R                  R                  S5      S5        U R                  [        U R                  R                  5        U R                  [        U R                  R                  SS5        U R                  [        U R                  R                  S5        U R                  [        U R                  R                  SS-  5        U R                  [        [        4U R                  R                  SS-  5        U R                  [        U R                  R                  S5        g )	NrK   rj   r   r   rR   rL   r;         ?)r(   r)   	randbytesr=   rZ   bytesrn   rV   rW   r   r(  )r   r+   r   s      r   test_randbytesTestBasicOps.test_randbytes  s&   q"A88%%a(DT$Z/SY* 
 	++A.4 	)TXX%7%78)TXX%7%7A>*dhh&8&8"=-););QWE:}5txx7I7I2t8T)TXX%7%7=r   c                     U R                  U R                  R                  5       [        5        U R                  U R                  R	                  5       [        5        g r   )assertIsInstancer)   normalvariater  r  r   s    r   test_mu_sigma_default_args'TestBasicOps.test_mu_sigma_default_args  s:    dhh446>dhhnn.6r   r#   N)$r   r   r    r!   r-   r8   rA   r\   r`   unittestmockpatchrf   rw   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r/  r:  rF  rP  rV  r[  r"   r#   r   r   r%   r%      s    
5,69$0
 ]]*+ ,9B26?  :R-
- 6'pK-ZE/
0
B%"A63
:1>"7r   r%   TFz!random.SystemRandom not availablec                       \ rS rSr\R
                  " 5       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\\4S jrSrg)SystemRandom_TestBasicOpsi  c                 8    U R                   R                  5         g r   r)   r1   r   s    r   r8   'SystemRandom_TestBasicOps.test_autoseed  s    r   c                     U R                  [        U R                  R                  5        U R                  [        U R                  R                  S 5        g r   )rV   rc   r)   r2   r<   r   s    r   rA   *SystemRandom_TestBasicOps.test_saverestore  s:    -txx/@/@A-txx/@/@$Gr   c                 :    U R                   R                  S5        g Nr   rc  r   s    r   r\   'SystemRandom_TestBasicOps.test_seedargs  s    cr   c                     S U R                   l        U R                   R                  S5        U R                  U R                   R                  S 5        g rh  )r)   
gauss_nextr1   r=   r   s    r   r  $SystemRandom_TestBasicOps.test_gauss  s8    "c,,d3r   c                     [        [        R                  S-   5       H3  nU R                  [        [        R
                  U R                  U5        M5     g )NrK   )r(   r2  r3  rV   rc   r4  r)   )r   r6  s     r   r:  'SystemRandom_TestBasicOps.test_pickling  s9    622Q67E16<<5Q 8r   c                     SnSn[        S5       H,  nU[        U R                  R                  5       U-  5      -  nM.     U R	                  X!S-
  5        g Nl          r   r   rK   r(   rA  r)   r*   r=   r   r*  r,  r,   s       r   test_53_bits_per_float0SystemRandom_TestBasicOps.test_53_bits_per_float  K    sA3txx(4/00C 1f%r   c                     SS-  nSn[        S5       HF  nU R                  R                  U5      nU R                  SUs=:*  =(       a    U:  Os  5        X$-  nMH     U R	                  X!S-
  5        g NrR   r   r   r   rK   r(   r)   rL  rp   r=   r   r*  r,  r,   rE  s        r   test_bigrand&SystemRandom_TestBasicOps.test_bigrand  e     CxsA""4(AOOAMMTM*HC  	1f%r   c                    S H  nU R                   R                  SUS-
  -  5      nU R                   R                  SU-  5      nX2::  a  MI  U R                  X R                   R                  X#5      s=:*  =(       a    U:  Os  5        M     g N)	r   P      r         iw  i   i&  rR   r)   rL  rp   r   r,   startstops       r   test_bigrand_ranges-SystemRandom_TestBasicOps.test_bigrand_ranges  n    ;AHH&&qQqSz2E88%%a1f-D}OOEXX%7%7%DKKtKL <r   c                     S Hd  u  pU R                  [        [        X5      5      [        [        S5       Vs/ s H  o0R                  R	                  X5      PM     sn5      5        Mf     g s  snf N))r   )l        l         )l            l           r   r=   ro   r(   r)   rL  r   r  r  r,   s       r   test_rangelimits*SystemRandom_TestBasicOps.test_rangelimits  U    KKESu!23U3ZHZXX''3ZHIK LH   $A,c                     U R                   R                  SSS5      nU R                  US5        U R                   R                  SSS5      nU R                  US5        g )Nr   rj   rR   )r   rR   rS   r   r   )r)   rL  r   r=   )r   rints     r   test_randrange_nonunit_step5SystemRandom_TestBasicOps.test_randrange_nonunit_step
  sP    xx!!!R+dO,xx!!!Q*q!r   c                    [        U R                  [        U R                  R                  5      n[        U R                  [
        U R                  R                  5      nU" SS5        U" S5        U" SSS5        U" SSS5        U" SSS5        U" SSS5        U" S5        U" S	5        U" [        SS
5      5        U" S5        U" SS5        U" SS5        U" S[        SS
5      5        U" SS5        U" SSS5        U" SS5        U" SS5        U" [        SS
5      S5        U" SS5        U" SSS5        U" SSS5        U" SSS	5        U" SS[        SS
5      5        U" SSS5        U" SSS5        U" SSS5        g )NrP   i/r   r   *   r  n!	@      @rK   3gW}W@       @rR   2r   rS  )r   rV   r   r)   rL  rW   r   )r   raises_value_errorraises_type_errors      r   test_randrange_errors/SystemRandom_TestBasicOps.test_randrange_errors  st   $T%6%6
DHHDVDVW#D$5$5y$((BTBTU 	1a 4 1c3' 	1b!$!R%!Q$ 	'"#(1a.)#!W%!S!!Xa^,!S!!Wa( 	'1%#q!(1a.!,#q!'1a( 	!R)!R%!R!Q0!R%!R%!Q$r   c                 
   U R                   R                  nU R                  [        5         U" SSS9  S S S 5        U R                  [        5         U" SS SS9  S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = f)Nr;   r   )step)r)   rL  rV   rW   )r   rL  s     r   test_randrange_step-SystemRandom_TestBasicOps.test_randrange_step8  s`    HH&&	y)d% *y)dDs+ *) *)))s   A#	A4#
A14
Bc                    [        SS5       H  nSU-  nUS-   nU" SU" US5      -   5      nU R                  Xe5        U R                  USUS-
  -  5        XDS-
  -  nU" SU" US5      -   5      nU R                  XeUS-   /5        U R                  SU-  Us=:  =(       a    SUS-
  -  :  Os  5        XDS-	  -  nU" SU" US5      -   5      nU R                  Xe5        U R                  SU-  Us=:  =(       a    SUS-
  -  :  Os  5        M     g NrK   r;   grZ|
 ?rR   r   r(   r=   r   rp   r   _logrA  r,   r+   numbitsr   s          r   test_randbelow_logic.SystemRandom_TestBasicOps.test_randbelow_logic@      q$AQAcGGd1aj()AQ(QAaC)QJAGd1aj()AMM!wqy12OOAqD1//q1Q3x/0bLAGd1aj()AQ(OOAqD1//q1Q3x/0  r   r#   N)r   r   r    r!   r*   SystemRandomr)   r8   rA   r\   r  r:  rs  rz  r  r  r  r  r  r   rA  r  r"   r#   r   r   ra  ra    s]    



CH4
R&	&MK
"&%P, ), 1r   ra  c                       \ rS rSr\R
                  R                  S 5       r\R
                  R                  S 5       rSr	g)TestRawMersenneTwisteriV  c                     SS K n[        [        R                  S-   5       H8  nUR	                  5       nU R                  [        [        R                  X25        M:     g )Nr   rK   )_randomr(   r2  r3  RandomrV   rW   r4  )r   r  r6  rE  s       r   test_bug_41052%TestRawMersenneTwister.test_bug_41052W  sC     	622Q67E Aiq@ 8r   c                     SS K nUR                  5       nUR                  S5        UR                  S5      nU R                  UR	                  5       UR	                  5       5        g )Nr   _ )r  r  r1   r=   r*   )r   r  r1r2s       r   test_bug_42008%TestRawMersenneTwister.test_bug_42008_  sI     	^^
^^G$biik2r   r#   N)
r   r   r    r!   testr
   cpython_onlyr  r  r"   r#   r   r   r  r  V  s>    	\\A A 
\\3 3r   r  c                   <  ^  \ rS rSr\R
                  " 5       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U 4S jrS r\R.                  " SSSS9S 5       rS r\\4S jrS rS rS rU 4S jr S r!\R.                  " SSSS9S 5       r"S  r#S!r$U =r%$ )"MersenneTwister_TestBasicOpsii  c                    U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        g s  snf s  snf )	Ni4 rK   versionrS   )z0x1.ac362300d90d2p-1z0x1.9d16f74365005p-1z0x1.1ebb4352e4c4dp-1z0x1.1a7422abf9c11p-1zthe quick brown foxrR   )z0x1.1239ddfb11b7cp-3z0x1.b3cbb5c51b120p-4z0x1.8c4f55116b60fp-1z0x1.63eb525174a27p-1r)   r1   r=   r(   r*   hexr   r,   s     r   test_guaranteed_stable3MersenneTwister_TestBasicOps.test_guaranteed_stablel  s    gq)58D8a((//+//18D=	> 	+Q758D8a((//+//18D=	>	 E Es   1C 1C!c                    U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ S	Q5        g s  snf s  snf s  snf )
NnofarrK   r  rS   z0x1.8645314505ad7p-1z0x1.afb1f82e40a40p-5z0x1.2a59d2285e971p-1z0x1.56977142a7880p-6rachelz0x1.0b294cc856fcdp-1z0x1.2ad22d79e77b8p-3z0x1.3052b9c072678p-2z0x1.578f332106574p-3 z0x1.b0580f98a7dbep-1z0x1.84129978f9c1ap-1z0x1.aeaa51052e978p-2z0x1.092178fb945a6p-2r  r  s     r   test_bug_27706+MersenneTwister_TestBasicOps.test_bug_27706w  s    	gq)58D8a((//+//18D=	> 	h*58D8a((//+//18D=	> 	b!$58D8a((//+//18D=	> E
 E
 Es   1E	 1E1Ec                      " S S[         5      n U R                  R                  U" 5       5        g ! [         a     g f = f)Nc                       \ rS rSrS rSrg);MersenneTwister_TestBasicOps.test_bug_31478.<locals>.BadInti  c                     g r   r#   r   s    r   __abs__CMersenneTwister_TestBasicOps.test_bug_31478.<locals>.BadInt.__abs__  s    r   r#   N)r   r   r    r!   r  r"   r#   r   r   BadIntr    s    r   r  )rA  r)   r1   rW   )r   r  s     r   test_bug_31478+MersenneTwister_TestBasicOps.test_bug_31478  s7    	S 		HHMM&(# 		s    2 
??c                    U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        U R                   R                  SSS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ S	Q5        S
nU R                   R                  USS9  U R                  [        S5       Vs/ s H*  oR                   R	                  5       R                  5       PM,     sn/ SQ5        g s  snf s  snf s  snf s  snf )Ns   nofarrK   r  rS   r  s   rachelr  r   r  s	     @`)z0x1.52c2fde444d23p-1z0x1.875174f0daea4p-2z0x1.9e9b2c50e5cd2p-1z0x1.fa57768bd321cp-2r  )r   r,   r   s      r   test_bug_31482+MersenneTwister_TestBasicOps.test_bug_31482  s_    	h*58D8a((//+//18D=	> 	i+58D8a((//+//18D=	> 	c1%58D8a((//+//18D=	> 4a#58D8a((//+//18D=	>! E
 E
 E Es   1F8 1F=1G<1Gc                 Z    U R                  [        U R                  R                  S5        g )N)rK   NN)rV   r   r)   r<   r   s    r   test_setstate_first_arg4MersenneTwister_TestBasicOps.test_setstate_first_arg  s    *dhh&7&7Ir   c                    U R                   R                  5       nU R                  [        U R                   R                  S5        U R                  [
        U R                   R                  S5        U R                  [        U R                   R                  SSS-  S 45        U R                  [        U R                   R                  SSS-  S-   S 45        U R                  [
        [        45         U R                   R	                  SSS-  S	-   S 45        S S S 5        U R                  [
        [        45         U R                   R	                  SSS-  S
-   S 45        S S S 5        U R                   R                  S5      nU R                   R	                  U5        U R                  U R                   R                  S5      U5        U R                   R                  5       S   n[        U5      n[        S5      US'   S U 5       nU R                  [        U R                   R                  SUS 45        g ! , (       d  f       GN&= f! , (       d  f       N= f)N)rR   NN)rR   rk   NrR   )rO   q  )r   ip  )rK   )r  )rL   r   rK   r  rL   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )rA  )rK  r   s     r   rM  HMersenneTwister_TestBasicOps.test_setstate_middle_arg.<locals>.<genexpr>  s     .AQs   )r)   r2   rV   rW   r<   r   r(  r'  r=   rX   r  )r   start_statebits100state_valuesr?   s        r   test_setstate_middle_arg5MersenneTwister_TestBasicOps.test_setstate_middle_arg  s   hh''))TXX%6%6H*dhh&7&79KL)TXX%6%6F3J8MN)TXX%6%6DHVOT8RS
M:;HHq$s(6/489 <
M:;HHq$s(5.$78 < ((&&s++&--c2G< xx((*1-L) <R..)TXX%6%6E48HI# <;;;s   1%H59%I5
I
Ic                     / SQnU R                   R                  S5        U R                  S5      SS  n[        X!5       H  u  p4U R	                  X4SS9  M     g )N)
g>FdV?gwR1ۉ?gQ"?g~5?g mb?gYKbX?gH,r̊?gV8?gOֶ?g4Ԗ?   #q  `&  'R      )places)r)   r1   r-   rm   assertAlmostEqual)r   r   actualrO   es        r   test_referenceImplementation9MersenneTwister_TestBasicOps.test_referenceImplementation  sU    	) 	CD&st,)DA""1b"1 *r   c           	          SSK Jn  / SQnU R                  R                  S5        U R	                  S5      SS  n[        X25       H'  u  pEU R                  [        U" US5      5      U5        M)     g )Nr   )ldexp)
l   #1,u l   wbl' l    JX l   uak~[ l   @"p1y l   sV%bX$ l   E3EJ l   Vb l   aoek l   4)[v r  r  r  rF   )mathr  r)   r1   r-   rm   r=   rA  )r   r  r   r  rO   r  s         r   $test_strong_reference_implementationAMersenneTwister_TestBasicOps.test_strong_reference_implementation  sb    
 		& 	CD&st,)DASq".2 *r   c                 J    SS-  S-
  nU R                   R                  U5        g )NrK   i8 rc  )r   r1   s     r   test_long_seed+MersenneTwister_TestBasicOps.test_long_seed  s#     i A%dr   c                     SnSn[        S5       H,  nU[        U R                  R                  5       U-  5      -  nM.     U R	                  X!S-
  5        g rp  rq  rr  s       r   rs  3MersenneTwister_TestBasicOps.test_53_bits_per_float  ru  r   c                     SS-  nSn[        S5       HF  nU R                  R                  U5      nU R                  SUs=:*  =(       a    U:  Os  5        X$-  nMH     U R	                  X!S-
  5        g rw  rx  ry  s        r   rz  )MersenneTwister_TestBasicOps.test_bigrand  r|  r   c                    S H  nU R                   R                  SUS-
  -  5      nU R                   R                  SU-  5      nX2::  a  MI  U R                  X R                   R                  X#5      s=:*  =(       a    U:  Os  5        M     g r~  r  r  s       r   r  0MersenneTwister_TestBasicOps.test_bigrand_ranges!  r  r   c                     S Hd  u  pU R                  [        [        X5      5      [        [        S5       Vs/ s H  o0R                  R	                  X5      PM     sn5      5        Mf     g s  snf r  r  r  s       r   r  -MersenneTwister_TestBasicOps.test_rangelimits)  r  r  c                 L  > [         TU ]  5         U R                  R                  S5        U R	                  U R                  R                  S5      S5        U R                  R                  S5        U R	                  U R                  R                  [        S5      5      S5        g )N r      S!m.vFXO )superr/  r)   r1   r=   r'  r   )r   	__class__s    r   r/  -MersenneTwister_TestBasicOps.test_getrandbits.  sx     " 	g--c26	8g--gcl;6	8r   c                    SnU R                   R                  S5        U R                   R                  U5      nU R                  UR	                  5       U5        U R                  USS-  S-
  -  S5        U R                  X!S-
  -	  S5        g )Nl        r  rR   r   rK   l   S!m.vFXl   Xx@W-HBbr)   r1   r'  r=   
bit_lengthr   sizer   s      r   test_getrandbits_2G_bits5MersenneTwister_TestBasicOps.test_getrandbits_2G_bits9  su    gHH  &.afQh)GHCx*IJr   l        g?F)r  memusedry_runc                    U R                   R                  S5        U R                   R                  U5      nU R                  UR	                  5       U5        U R                  USS-  S-
  -  S5        U R                  X!S-
  -	  S5        g )Ni rR   r   rK   l   W]Wg l   B4zvN")FUr  r  s      r   test_getrandbits_4G_bits5MersenneTwister_TestBasicOps.test_getrandbits_4G_bitsA  sp    gHH  &.afQh)GHCx*HIr   c                     U R                   R                  S5        U R                  U R                   R                  SS-  5      S5        g )Nr  rR   c   r  )r)   r1   r=   rL  r   s    r   test_randrange_uses_getrandbits<MersenneTwister_TestBasicOps.test_randrange_uses_getrandbitsI  s<     	g 	++ArE26	8r   c                    [        SS5       H  nSU-  nUS-   nU" SU" US5      -   5      nU R                  Xe5        U R                  USUS-
  -  5        XDS-
  -  nU" SU" US5      -   5      nU R                  XeUS-   /5        U R                  SU-  Us=:  =(       a    SUS-
  -  :  Os  5        XDS-	  -  nU" SU" US5      -   5      nU R                  Xe5        U R                  SU-  Us=:  =(       a    SUS-
  -  :  Os  5        M     g r  r  r  s          r   r  1MersenneTwister_TestBasicOps.test_randbelow_logicS  r  r   c                 p   S[         R                  -  n[        R                  " 5          [        R                  " S[
        5        U R                  R                  US-   US9  S S S 5        U R                  R                  SUS9  SnSnXU-  -
  U-  n[        R                  R                  R                  [         R                  S5       nXC-   XC-
  /Ul        U R                  R                  X!S9  U R                  UR                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	NrK   ignore)maxsizei  r  {Gz?r*   rR   )r*   BPFr   r   r   UserWarningr)   _randbelow_without_getrandbitsr]  r^  r_  rT   r  rd   r=   
call_count)r   r   r+   epsilonlimitrandom_mocks         r   "test_randbelow_without_getrandbits?MersenneTwister_TestBasicOps.test_randbelow_without_getrandbitsh  s     VZZ-$$&!!(K8HH33	7 4  ' 	//g/F  aK(G3]]  ''x@K',&HK#HH33A3G[33Q7 A@3 '&2 A@s   9D
AD'
D$'
D5c                     SnSnSnU R                   R                  XU5      nU R                  X$s=:  =(       a    U:*  Os  5        U R                  XB-   U-  S5        g )Nl    J)rM   i8r   )r)   rL  rp   r=   )r   r  r  r  r   s        r   test_randrange_bug_15908917MersenneTwister_TestBasicOps.test_randrange_bug_1590891  sT    %HHuD1))E)*!&$*r   c                    U R                   R                  nSnU R                   R                  S5        U R                   R                  [        U5      SS9nU R                   R                  S5        U R                   R                  [        U5      S/U-  SS9nU R	                  X45        U R                   R                  S5        U R                   R                  [        U5      [        SUS-   5      SS9nU R	                  X55        / SQn/ SQn/ S	QnS
/S-  S/S-  -   S/S-  -   n	U R                   R                  S5        U R                   R                  U	SS9nU R                   R                  S5        U R                   R                  XgSS9nU R	                  X45        U R                   R                  S5        U R                   R                  XhSS9nU R	                  X55        g )Ni r  r   r   rK   r   )RedBlackGreen)r   r   rR   )r   $   &   r/  r   r0  r1  rR   i߉ )r)   r   r1   r(   r=   )
r   r   r+   rO   r   r   r   r   r   expanded_populations
             r   test_choices_algorithms4MersenneTwister_TestBasicOps.test_choices_algorithms  s   ((""gHHU1X/gHHU1Xs1u6gHHU1X5AaC=EJ /
"$glgY^;wi!mKgHH0E:gHHZE:gHHZEJr   c           
      *  >^ ^ [         TT ]  5         SnSmT R                  R                  U5        T R	                  T R                  R                  S5      T5        T R                  R                  U5        T R	                  T R                  R                  S5      S5        T R	                  T R                  R                  S5      T5        T R                  R                  U5        T R	                  SR                  [        S5       Vs/ s H  nT R                  R                  S5      PM      sn5      T5        T R                  R                  U5        TSS S2   nT R	                  SR                  U 4S j[        S5       5       5      U5        T R                  R                  U5        SR                  U4S	 j[        S[        T5      S5       5       5      nT R	                  SR                  U 4S
 j[        S5       5       5      U5        T R                  R                  U5        SR                  U4S j[        S[        T5      S5       5       5      nT R	                  SR                  U 4S j[        S5       5       5      U5        g s  snf )Nr  s   3f6oe   r   r   rS   rP   c              3   Z   >#    U  H   nTR                   R                  S 5      v   M"     g7f)rK   Nr)   rT  rK  _r   s     r   rM  >MersenneTwister_TestBasicOps.test_randbytes.<locals>.<genexpr>  #     !JA$(("4"4Q"7"7   (+c              3   :   >#    U  H  nTUS -   US-    v   M     g7f)rR   rS   Nr#   rK  r,   r   s     r   rM  r=    (      B&@ &a!eQU3&@   c              3   Z   >#    U  H   nTR                   R                  S 5      v   M"     g7f)rR   Nr:  r;  s     r   rM  r=    r>  r?  c              3   :   >#    U  H  nTUS -   US-    v   M     g7f)rK   rS   Nr#   rA  s     r   rM  r=    rB  rC  c              3   Z   >#    U  H   nTR                   R                  S 5      v   M"     g7f)rP   Nr:  r;  s     r   rM  r=    r>  r?  )	r	  rV  r)   r1   r=   rT  joinr(   rn   )r   r1   r<  	expected1	expected2	expected3r   r
  s   `     @r   rV  +MersenneTwister_TestBasicOps.test_randbytes  s     Gd++B/: 	d++A.4++B/: 	d%("K(Q488#5#5a#8("KL!	#
 	dQTTN	!Jq!JJ"	$ 	dHH B&+As8}a&@B B	!Jq!JJ"	$ 	dHH B&+As8}a&@B B	!Jq!JJ"	$' #Ls   %Jc                 H   Sn[         R                  " 5       nU R                  R                  U5        UR                  U5        [	        S5       HP  nU R                  U R                  R                  U5      UR                  US-  5      R                  US5      5        MR     g )N   OS 	   r   little)	r*   r  r)   r1   r(   r=   rT  r'  to_bytes)r   r1   gen2r+   s       r   test_randbytes_getrandbits7MersenneTwister_TestBasicOps.test_randbytes_getrandbits  sz    }}d		$qATXX//2!--a!e4==aJL r   i    g @c                 2   U R                   R                  S5        U R                   R                  U5      nU R                  [	        U5      U5        U R                  US S R                  5       S5        U R                  USS  R                  5       S5        g )NrM  r  f6fd9ae63855ab91ea238b4fr  0e7af69a84ee99bf4a11becc)r)   r1   rT  r=   rn   r  r  s      r   test_randbytes_256M0MersenneTwister_TestBasicOps.test_randbytes_256M  st    j!HHt$Q&3B'AB34(BCr   c           
         U R                   R                  nU R                   R                  n/ SQn/ SQnSnU" S5        U" X4US9nU" S5        [        X45       VVV	s/ s H  u  px[	        U5        H  oPM     M     n
nnn	U R                  [        U
5      [        U5      5        U" XS9nU R                  Xk5        Sn/ SQnU" S5        S	R                  U" XS
S95      nS	R                  [        X5       VVV	s/ s H  u  p[	        U5        H  oPM     M     sn	nn5      n
U" S5        S	R                  U" U
S
S95      nU R                  Xk5        g s  sn	nnf s  sn	nnf )N)r   r   r   r   r   r   )r   r   r   rj   r   rK   r   r  r   r   	abcdefghi)	rj   rN  r      r   r   rS   rP   rR   r  r   )	r)   r   r1   rm   r(   r=   rn   r   rG  )r   r   r1   r   r   r   s1r   countr,   expandeds2r   letters                 r   test_sample_counts_equivalence;MersenneTwister_TestBasicOps.test_sample_counts_equivalence  s3    xx}}FEWFQ/W03F0CZ0CnuUSX\E\E0CZXF4H" -WWWVC"5677#c:Ja:JTYZ_T`qFT`F:JabWWWVH+,  [ bs    E: Er#   )&r   r   r    r!   r*   r  r)   r  r  r  r  r  r  r  r  r  rs  rz  r  r  r/  r  r
   
bigmemtestr  r  r   rA  r  r)  r,  r5  rV  rR  rW  ra  r"   __classcell__)r
  s   @r   r  r  i  s    
--/C	>>$	>6JJ<2>3,&	&MK
	8K U8UCJ DJ8 ), 1* 8D+B&$PL U7EBD CD! !r   r  r        ?c                    U S:  a(  [         [        [         U -  5      -  [        SU -
  5      -  $ U S-   nX S-
  -  [        U5      -  U-  [	        SSU -  SU S-   -  SU S-   -  S	U S
-   -  SU S-   -  SU S-   -  SU S-   -  SU S-   -  /	5      -  $ )Nre  rS  g      @g?g
ö)$@g&Ԏgta@r  gQfr  g>@~)@g      @gA~      @g~\>g      @giE>g      @)r   r   gammar   r   )zsqrt2piazs      r   rh  rh  	  s    3wC1I~c!e,,	
iBC%=3r7"W,tAae$QsU#ae$QsU#qu%!C%(!C%(
5 
0 
 
r   c                      \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	5      S
 5       r\R                  R                  S	5      S 5       r\R                  R                  S	5      S 5       r\R                  R                  S	5      S 5       r\R                  R                  S5      S 5       rSrg)TestDistributionsi  c                    [         R                  " 5       n[        S5       Vs/ s H  o!R                  5       PM     snS/S-  -   nUS S  R                  Ul         UR	                  SS5        US S  R                  Ul         UR                  S5        US S  R                  Ul         UR                  S5        US S  R                  Ul         UR                  5         US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  SS5        US S  R                  Ul         UR                  S	S	5        US S  R                  Ul         UR                  SSS
5        g s  snf )Nrz   r  r   rK   rj   rS  r!  g      i@r  UUUUUU?)r*   r  r(   r   uniformparetovariateexpovariateweibullvariatevonmisesvariaterZ  r  lognormvariategammavariatebetavariate
triangular)r   gr,   r   s       r   test_zeroinputs!TestDistributions.test_zeroinputs  s   MMO!&r+AXXZ+seAg5Q488QYYq_Q488Q__S1Q488Q]]3/Q488Q]]_Q488Q--c37Q488Q..sC8Q488Q__S#6Q488QWWS#.Q488Q--c37Q488Q..sC8Q488Q^^D#6Q488Q^^C5Q488Q^^E37Q488Q]]34Q488Q\\#sG< ,s   I>c                 B   [         R                  " 5       nSn[        SU5       Vs/ s H  o3[        U5      -  PM     nnUR                  SSS4UR
                  SSS4UR                  S	S
S4UR                  S[        [        S-  S-  4UR                  SSS4UR                  S[        S5      [        S5      [        S5      S-  -
  44 H  u  pVpxUS S  R                  Ul         / n	[        [        U5      5       H  n U	R                  U" U6 5        M     S=pU	 H  nX-  n
XU-
  S-  -  nM     [        U	5      nU R!                  X-  USUR"                  < U< 3S9  U R!                  XS-
  -  USUR"                  < U< 3S9  M     g s  snf ! [         a     M  f = f)Nr   rK   )rS        $@g      @g      @)r  rS  ro  gqq?g<ݚ?)      ?gUUUUUU?)gGz?r   rR   rP   )rg  g      ?g?)rS  r  gUUUUUU?g?r   )r  msg)r*   r  r(   r  rp  rx  rr  rt  r   rq  rs  rh  r   rn   appendr~   r  r   )r   ry  r>   r,   r   variateargsmu	sigmasqrdyr\  r_  r  s                r   test_avg_stdTestDistributions.test_avg_std0  s    MMO!&q,AuQxZ,J6FG2G\Jx8""Ir2q57;&+":<!!:uW~"'.w1B"BD-F(G2 txxAHA3q6]HHWd^, #
 KB2v!m#  AA""24A181A1A4'H # J""2s8Yq181A1A4'H # J/-F - " s   F>F
FFc                    [         R                  " 5       nSnUR                  SS4UR                  SS4UR                  SS4UR                  [        S5      4S4UR                  S[        S5      4S4UR                  SS4UR                  S	S
4UR                  [        S5      * S4S4UR                  SS4UR                  SS4UR                  SS4UR                  SS4UR                  [        S5      4S
4UR                  S[        S5      4S4UR                  SS44 H-  u  p4n[        U5       H  nU R                  U" U6 U5        M     M/     g )Nr   )r}  r}  r}  )r}  r}  r}  r  r  r  )r}  r  )r  r  rS  )r   re  r   )rj   r  )rj   rS  rj   )r  r}  )r*   r  rp  rx  rr  r  rt  r  ru  rZ  binomialvariaterq  rs  r(   r=   )r   ry  r>   r  r  r   r,   s          r   test_constantTestDistributions.test_constantP  sS   MMOL$/|T2148u5""S%,$7=+t,!!:s3!!U5\M3#7=+t4""Ha0""Iq1""Ir25</37!!D%,#7>!!;4(#G8" 1X  $: #(r   c                 4  ^ [         R                  mU R                  [        5         T" SS9  S S S 5        U R                  [        5         T" SSS9  S S S 5        U R                  [        5         T" SSS9  S S S 5        U R	                  T" SS5      S5        U R	                  T" S	S
5      S5        U R	                  T" S	S5      S	5        U R                  T" SS5      S;   5        U R                  T" SS5      S;   5        U R                  T" SS
5      S;   5        U R                  T" SS5      S;   5        U R	                  T" SS5      S5        U R                  T" SS5      [        [        S5      5      ;   5        U R                  T" SS5      [        [        S5      5      ;   5        U R                  T" SS5      [        [        S5      5      ;   5        U R                  T" SS5      [        [        S5      5      ;   5        [        U4S j[        S5       5       5      nU R                  SUS   s=:*  =(       a    S:*  Os  U5        U R                  SUS   s=:*  =(       a    S:*  Os  5        U R                  SUS   s=:*  =(       a    S :*  Os  5        U R                  S!US"   s=:*  =(       a    S#:*  Os  5        U R	                  [        U5      1 S$k5        [        U4S% j[        S5       5       5      nU R                  S&US'   US(   -   US)   -   US*   -   US+   -   s=:*  =(       a    S,:*  Os  5        U R                  [        U5      [        [        S5      5      :*  5        U R	                  UR                  5       S5        U R                  S-T" S.S/5      s=:*  =(       a    S0:*  Os  5        U R                  S1T" S.S5      s=:*  =(       a
    S2:*  5        g s  5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)3NrL   )r+   rK   g      )r+   pr~  r   re  rj   r  rS  rO  >   r   rK   g?>   r   >   rK   r   gC]r2<      ?r   g      ?r   e   c              3   6   >#    U  H  nT" S S5      v   M     g7f)rS   r  Nr#   rK  r,   Bs     r   rM  9TestDistributions.test_binomialvariate.<locals>.<genexpr>  s     71AaJJ   rI  is  ii  i  i  iJ  rR   i6Z  i
  rP   i   >   r   rK   rR   rP   rS   c              3   6   >#    U  H  nT" S S5      v   M     g7f)r   r  Nr#   r  s     r   rM  r    s     9.QAc4LL.r  i  r   r            iF  i!i g?i@o@i@Nil)
r*   r  rV   r   r=   rp   ro   r(   r   total)r   r   r  s     @r   test_binomialvariate&TestDistributions.test_binomialvariateg  s%   "" z*G +z*TN +z*SM +1cA&2sQ'2sR(!S	V+,!S	V+,!S	S()!S	S() 	1ea( 	!T
c%(m34 	!T
c%(m34 	#tE#J78 	#tE#J78 7g77!A$00&0!4!A$00&01!A$00&01!A$//%/0Q1 9%.99!B%"+ae"3AbE"9!B%"?II6IJA#eCj/12G, 	
aS&9GGZGH
aS&9GGZGHGHe +*****s#   O$O60P$
O36
P
Pc                    [         R                  " 5       nSnS Hp  nS Hg  n[        U5       HU  nUR                  X45      nU R	                  SUs=:*  =(       a    [         R
                  :*  Os  SR                  X4U5      S9  MW     Mi     Mr     g )Nr   )r  r0   g@g@)r  ffffff@g     @@r   zCvonmisesvariate({}, {}) produced a result {} out of range [0, 2*pi])r  )r*   r  r(   rt  rp   TWOPIformat)r   ry  r>   r  kappar<  r   s          r   test_von_mises_range&TestDistributions.test_von_mises_range  s}     MMO$B(qA..r9FOOV33v||334:F2f4M $ O " ) %r   c                 `    [         R                  " SS5        [         R                  " SS5        g )Nr   g  4&kCg}Ô%IT)r*   rt  r   s    r   test_von_mises_large_kappa,TestDistributions.test_von_mises_large_kappa  s"    q$'q%(r   c                 4   U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        g )NrL   rP   r   rR   rK   r   )rV   r   r*   rv  r   s    r   test_gammavariate_errors*TestDistributions.test_gammavariate_errors  sj    *f&9&92qA*f&9&91a@*f&9&91a@*f&9&91bAr   zrandom.Random.randomc                 h    / SQUl         [        R                  " SS5      nU R                  US5        g )N):0yE>re  rO  g?r  g=
ףp=@rd   r*   rv  r  r   r(  returned_values      r   #test_gammavariate_alpha_greater_one5TestDistributions.test_gammavariate_alpha_greater_one  s.     #3,,S#6~t4r   c                 f    S/Ul         [        R                  " SS5      nU R                  US5        g )Ng?rS  rN   g/qr	?r  r  s      r   !test_gammavariate_alpha_equal_one3TestDistributions.test_gammavariate_alpha_equal_one  s1     $(&,,S$7~/@Ar   c                     SnSS/Ul         [        R                  " SU5      n[        R                  " SU-  5      nU R	                  X45        g )NrN   r  rS  )rd   r*   rv  rr  r  )r   r(  betagammavariate_returned_valueexpovariate_returned_values        r   4test_gammavariate_alpha_equal_one_equals_expovariateFTestDistributions.test_gammavariate_alpha_equal_one_equals_expovariate  sL    
 #',&,&9&9#t&D#%+%7%7d
%C":Wr   c                 ^   [         R                  n[         R                  n[         R                  nSnSnX%-   U-  nSnSn	Sn
XU-   X/Ul        [         R
                  " XV5      nU R                  US5        Sn	Sn
XU-   X/Ul        [         R
                  " XV5      nU R                  US	5        g )
Ngffffff?g333333?r!  gX Y?g=,6V?g.3333?gl%t?gK,	9?g7SvT?)r*   _e_expr  rd   rv  r  )r   r(  r  r  r  alphar  r   r&  r  r  r  s               r   ,test_gammavariate_alpha_between_zero_and_one>TestDistributions.test_gammavariate_alpha_between_zero_and_one  s    F YY{{{{ZO
 $&G|R"<,,U9~/AB 
 $&G|R"<,,U9~/ABr   zrandom.Random.gammavariatec                 `    SUl         U R                  S[        R                  " SS5      5        g )Nr  g	@r  )return_valuer=   r*   rw  )r   gammavariate_mocks     r   test_betavariate_return_zero.TestDistributions.test_betavariate_return_zero%  s*     *-&f00'BCr   r#   N)r   r   r    r!   rz  r  r  r  r  r  r  r]  r^  r_  r  r  r  r  r  r"   r#   r   r   rm  rm    s    =(J@;.6IrO)
B ]]/05 15 ]]/0B 1B ]]/0X 1X ]]/0CC 1CCJ ]]56D 7Dr   rm  c                        \ rS rSrS rS rSrg)TestRandomSubclassingi-  c                 B     " S S[         R                  5      nU" SS9  g )Nc                       \ rS rSrSS jrSrg)HTestRandomSubclassing.test_random_subclass_with_kwargs.<locals>.Subclassi0  Nc                 B    [         R                  R                  U 5        g r   )r*   r  r   )r   newargs     r   r   QTestRandomSubclassing.test_random_subclass_with_kwargs.<locals>.Subclass.__init__1  s    &&t,r   r#   r   )r   r   r    r!   r   r"   r#   r   r   Subclassr  0  s    -r   r  rK   )r  )r*   r  )r   r  s     r    test_random_subclass_with_kwargs6TestRandomSubclassing.test_random_subclass_with_kwargs.  s    	-v}} 	- 	r   c                   ^  " U4S jS[         R                  5      n[        5       mU" 5       R                  S5        U R	                  TS15         " U4S jS[         R                  5      n[        5       mU" 5       R                  S5        U R	                  TS15         " U4S jS	U5      n[        5       mU" 5       R                  S5        U R	                  TS
15         " U4S jSU5      n[        5       mU" 5       R                  S5        U R	                  TS15         " U4S jS5      n " U4S jS5      n " S SU[         R                  5      n[        5       mU" 5       R                  S5        U R	                  TS15         " S SU[         R                  5      n[        5       mU" 5       R                  S5        U R	                  TS15         " S SXV[         R                  5      n	[        5       mU	" 5       R                  S5        U R	                  TS15         " S SXe[         R                  5      n
[        5       mU
" 5       R                  S5        U R	                  TS15        g )Nc                   .   > \ rS rSrU 4S jrU 4S jrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass1i=  c                 d   > TR                  S5        [        R                  R                  U 5      $ )NzSubClass1.randomaddr*   r  r   calleds    r   r*   RTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass1.random>  %    

-.}}++D11r   c                 d   > TR                  S5        [        R                  R                  X5      $ )NSubClass1.getrandbitsr  r*   r  r'  r   r+   r  s     r   r'  WTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass1.getrandbitsB  %    

23}}0099r   r#   N)r   r   r    r!   r*   r'  r"   r  s   r   	SubClass1r  =  s    2: :r   r  r  r  c                   "   > \ rS rSrU 4S jrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass2iJ  c                 d   > TR                  S5        [        R                  R                  U 5      $ )NSubClass2.randomr  r  s    r   r*   RTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass2.randomK  r  r   r#   Nr   r   r    r!   r*   r"   r  s   r   	SubClass2r  J      2 2r   r  r  c                   "   > \ rS rSrU 4S jrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass3iT  c                 d   > TR                  S5        [        R                  R                  X5      $ )NSubClass3.getrandbitsr  r  s     r   r'  WTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass3.getrandbitsU  r  r   r#   Nr   r   r    r!   r'  r"   r  s   r   	SubClass3r  T      : :r   r  r  c                   "   > \ rS rSrU 4S jrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass4i^  c                 d   > TR                  S5        [        R                  R                  U 5      $ )NSubClass4.randomr  r  s    r   r*   RTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass4.random_  r  r   r#   Nr  r  s   r   	SubClass4r  ^  r  r   r  r  c                   "   > \ rS rSrU 4S jrSrg)HTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.Mixin1ih  c                 d   > TR                  S5        [        R                  R                  U 5      $ )NMixin1.randomr  r  s    r   r*   OTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.Mixin1.randomi  s$    

?+}}++D11r   r#   Nr  r  s   r   Mixin1r  h  r  r   r  c                   "   > \ rS rSrU 4S jrSrg)HTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.Mixin2il  c                 d   > TR                  S5        [        R                  R                  X5      $ )NMixin2.getrandbitsr  r  s     r   r'  TTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.Mixin2.getrandbitsm  s%    

/0}}0099r   r#   Nr  r  s   r   Mixin2r  l  r  r   r  c                       \ rS rSrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass5iq  r#   Nr   r   r    r!   r"   r#   r   r   	SubClass5r  q      r   r  r  c                       \ rS rSrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass6iw  r#   Nr  r#   r   r   	SubClass6r	  w  r  r   r
  r   c                       \ rS rSrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass7i}  r#   Nr  r#   r   r   	SubClass7r  }  r  r   r  c                       \ rS rSrSrg)KTestRandomSubclassing.test_subclasses_overriding_methods.<locals>.SubClass8i  r#   Nr  r#   r   r   	SubClass8r    r  r   r  )r*   r  ro   rL  r=   )r   r  r  r  r  r  r  r  r
  r  r  r  s              @r   "test_subclasses_overriding_methods8TestRandomSubclassing.test_subclasses_overriding_methods5  s   	: 	: b!"9!:;	2 	2 b!"4!56	:	 	: b!"9!:;	2	 	2 b!"4!56	2 	2	: 	:
	 	b!/!23	 	b!"6!78	 	b!/!23	 	b!"6!78r   r#   N)r   r   r    r!   r  r  r"   r#   r   r   r  r  -  s    R9r   r  c                   `    \ rS rSrS rS r\R                  R                  5       S 5       r	Sr
g)
TestModulei  c                    U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R
                  S5        g )Ng3?r?g.DT!@g9B.?gtY@)r  r*   NV_MAGICCONSTr  LOG4SG_MAGICCONSTr   s    r   testMagicConstantsTestModule.testMagicConstants  sY    v335EFv||];v{{,<=v335EFr   c                     U R                  [        [        R                  5      [        [	        [        5      5      :*  5        g r   )rp   ro   r*   __all__dirr   s    r   test__all__TestModule.test__all__  s%    FNN+s3v;/??@r   c                    [         R                  " 5       u  p[         R                  " 5       nUS:X  a]   [        R                  " S5      n[        US5       nUR                  [        U5      5        S S S 5        [         R                  " S5        g [         R                  " U5        [        R                  " S5      n[        US5       n[        UR                  5       5      nS S S 5        U R                  UW5        [        R                  " USS9  g ! , (       d  f       N= f! [         R                  " S5        f = f! , (       d  f       Nb= f)Nr   r&  wrE  )exitcode)ospipeforkr*   r'  r>  writer   _exitcloseevalreadr5   r
   wait_process)r   rE  r!  pidvalrD  	child_vals          r   test_after_forkTestModule.test_after_fork  s     wwyggi!8((-!S\QGGCH% "  HHQK$$S)Ca N	 Y/  q1 "\ 
 s/   "D# D1D# D>
D D# #D;>
Er#   N)r   r   r    r!   r  r  r  r
   requires_forkr/  r"   r#   r   r   r  r    s/    GA 
\\!2 "2r   r  c                        \ rS rSrS rS rSrg)CommandLineTesti  c                    [         R                  " [        R                  " S5      5      u  pU R	                  UR
                  / SQ5        U R                  UR                  S5      5        [         R                  " [        R                  " S5      5      u  pU R	                  UR                  S5        U R                  UR                  S5      5        [         R                  " [        R                  " S5      5      u  pU R	                  UR                  S5        U R                  UR                  S5      5        [         R                  " [        R                  " S5      5      u  pU R	                  UR                  / SQ5        U R                  UR                  S5      5        [         R                  " [        R                  " S	5      5      u  pU R	                  UR                  S	/5        U R                  UR                  S5      5        [         R                  " [        R                  " S
5      5      u  pU R	                  UR                  S
/5        U R                  UR                  S5      5        g )N--choice a b c)rO   r   r   zusage: --integer 5r   --float 2.5r   a b c52.5)r*   _parse_argsshlexsplitr=   r}   rp   
startswithintegerr  input)r   r  	help_texts      r   test_parse_argsCommandLineTest.test_parse_args  s    ,,U[[9I-JKo6	,,Y78 ,,U[[-GHq)	,,Y78 ,,U[[-GHS)	,,Y78 ,,U[[-AB_5	,,Y78 ,,U[[-=>cU+	,,Y78 ,,U[[-?@eW-	,,Y78r   c                     S HU  u  p[         R                  " S5        U R                  [         R                  " [        R
                  " U5      5      U5        MW     g )N)	)r5  r   )z"a b c"r   )r8  r   )z--choice 'a a' 'b b' 'c c'b b)z'a a' 'b b' 'c c'rE  )r6  rS   )r9  rS   )r7  痎p @)r:  rF  r   )r*   r1   r=   mainr<  r=  )r   commandr   s      r   	test_mainCommandLineTest.test_main  s@    
"
G KKNV[[W)=>I
"
r   r#   N)r   r   r    r!   rB  rI  r"   r#   r   r   r3  r3    s    92Jr   r3  __main__)*r]  unittest.mockr*   r#  r3   r2  r<  r   test.supportr  	functoolsr   r  r   r   r   r   r   r	   r
   	fractionsr   collectionsr   r   r   r%   r  SystemRandom_availablerc   
skipUnlessTestCasera  r  r  rh  rm  r  r  r3  r   rG  r#   r   r   <module>rT     s_      	       3 3   $ m7 m7`"
  " "	+-PQA1h.?.? A1 RA1H3X.. 3&]!<1B1B ]!@ "fs] $OD)) ODdZ9H-- Z9z 2""  2F'Jh'' 'JT zMMO W   #"#s   $E E E 