
    Owgw4                     n    d dl Zd dlZd dlmZmZmZ d dlmZ	 d dl
mc mZ  G d d      Z G d d      Zy)    N)	DataFrameIndexSeriesc                   ,   e Zd Zej                  d        Zej                  j                  d e e	d                  d        Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zej                  j                  ddg dfddg      d        Zd Zd Zy)
TestSamplec                     |t         u r/t        j                  j                  d      j	                  d      }n.t        j                  j                  d      j	                  d      } ||d       S )N   
   )r
   r
   )dtype)r   nprandomdefault_rngstandard_normal)selfframe_or_seriesarrs      ]/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_sample.pyobjzTestSample.obj   sU    f$))''*::2>C))''*::8DCs$//    testr
   c           
         t         j                  j                  d      j                  dd      }t	        j
                  |j                  d|      |j                  d|             t	        j
                  |j                  d|      |j                  d|             t	        j
                  |j                  dt         j                  j                  |            |j                  dt         j                  j                  |                   t	        j
                  |j                  dt         j                  j                  |            |j                  dt         j                  j                  |                   t	        j
                  |j                  ddt         j                  j                  |      	      |j                  ddt         j                  j                  |      	             g g }}t        d      D ]F  }|j                  |j                  d|             |j                  |j                  d|             H t	        j
                  |  t	        j
                  |  y )
Nr	   r   d      nrandom_stategffffff?)fracr   T)r   replacer   )	r   r   r   integerstmassert_equalsamplerangeappend)r   r   r   seedos1os2_s          r   test_samplezTestSample.test_sample   s    yy$$Q'00C8
JJJ.

QT
0R	
 	JJCdJ3JJCdJ3	

 	JJ)>)>t)DJEJJ)>)>t)DJE	

 	JJCbii.C.CD.IJJJJCbii.C.CD.IJJ	

 	JJYY2248  
 JJYY2248  	
 rSq 	@AJJszzADz9:JJszzsz>?	@ 	
r   c                     t        |j                  d      dk(        sJ t        |j                  d      dk(        sJ t        |j                  d      dk(        sJ y )Nr   r   g(\?r      g
ףp=
?)lenr"   r   r   s     r   test_sample_lengthszTestSample.test_sample_lengthsE   s[    3:::?a'(((3::4:(A-...3::4:(A-...r   c                     d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nzdrandom_state must be an integer, array-like, a BitGenerator, Generator, a numpy RandomState, or Nonematcha_string)r   pytestraises
ValueErrorr"   r   r   msgs      r    test_sample_invalid_random_statez+TestSample.test_sample_invalid_random_stateK   s?    + 	 ]]:S1 	0JJJJ/	0 	0 	0s	   :Ac                     d}t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)Nz0Please enter a value for `frac` OR `n`, not bothr2   r-   g333333?)r   r   r5   r9   s      r   "test_sample_wont_accept_n_and_fracz-TestSample.test_sample_wont_accept_n_and_fracT   s:    @]]:S1 	&JJJ%	& 	& 	&s	   ;Ac                    t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nz<A negative number of rows requested. Please provide `n` >= 0r2   r+   z?A negative number of rows requested. Please provide `frac` >= 0g333333ӿr,   r5   r/   s     r   $test_sample_requires_positive_n_fracz/TestSample.test_sample_requires_positive_n_fracZ   sw    ]]P
 	 JJJ		
 ]]S
 	" JJDJ!		" 	"	 	
	" 	"s   A.A:.A7:Bc                     t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nz$Only integers accepted as `n` valuesr2   g	@r+   r5   r/   s     r   test_sample_requires_integer_nz)TestSample.test_sample_requires_integer_nf   s4    ]]:-ST 	JJJ	 	 	s	   8Ac                    d}t        j                  t        |      5  |j                  dddg       d d d        t        j                  t        |      5  dgdz  }|j                  d|       d d d        t        j                  t        d	      5  t	        g d
      }|j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)N5Weights and axis to be sampled must be of same lengthr2   r-   r      r   weights      ?   z%Fewer non-zero entries in p than size)r   r   g?r   )r6   r7   r8   r"   r   )r   r   r:   bad_weightsbad_weight_seriess        r   "test_sample_invalid_weight_lengthsz-TestSample.test_sample_invalid_weight_lengthsk   s    E]]:S1 	,JJQFJ+	, ]]:S1 	1%"*KJJKJ0	1 ]]:-TU 	7 &{ 3JJ$5J6	7 	7	, 	,	1 	1	7 	7s#   B>C
!C>C
CCc                     dgdz  }d}t        j                  t        |      5  |j                  d|       d d d        y # 1 sw Y   y xY w)Ngr
   z.weight vector many not include negative valuesr2   r-   rF   r5   )r   r   rJ   r:   s       r   test_sample_negative_weightsz'TestSample.test_sample_negative_weightsy   sE    frk>]]:S1 	1JJKJ0	1 	1 	1s   AA
c                 z   dgdz  }t         j                  |d<   d}t        j                  t        |      5  |j                  d|       d d d        dgdz  }t         j                   |d<   t        j                  t        |      5  |j                  d|       d d d        y # 1 sw Y   [xY w# 1 sw Y   y xY w)Ng?r
   r   z*weight vector may not include `inf` valuesr2   r-   rF   )r   infr6   r7   r8   r"   )r   r   weights_with_infr:   weights_with_ninfs        r   test_sample_inf_weightsz"TestSample.test_sample_inf_weights   s      52: ff:]]:S1 	6JJ$4J5	6 !EBJ "w!]]:S1 	7JJ$5J6	7 	7	6 	6
	7 	7s   B%B1%B.1B:c                     dgdz  }t        j                  t        d      5  |j                  d|       d d d        y # 1 sw Y   y xY w)Nr   r
   $Invalid weights: weights sum to zeror2   r-   rF   r5   )r   r   zero_weightss      r   test_sample_zero_weightsz#TestSample.test_sample_zero_weights   sC     sRx]]:-ST 	2JJLJ1	2 	2 	2s	   ?Ac                     t         j                  gdz  }t        j                  t        d      5  |j                  d|       d d d        y # 1 sw Y   y xY w)Nr
   rU   r2   r-   rF   )r   nanr6   r7   r8   r"   )r   r   nan_weightss      r   test_sample_missing_weightsz&TestSample.test_sample_missing_weights   sG     vvhm]]:-ST 	1JJKJ0	1 	1 	1s   AAc                     d gdz  }d|d<   t        j                  |j                  dd|      |j                  dd        y )Nr
   rH      rE   r   r   axisrG      )r    r!   r"   iloc)r   r   weights_with_Nones      r   test_sample_none_weightsz#TestSample.test_sample_none_weights   sD    !FRK"!
JJ,=J>1	
r   zfunc_str,argznp.array)r	   r-   rE   r   )znp.random.MT19937r-   )znp.random.PCG64rI   c           	      N   t        t        dd      t        dd      d      }t        j                  ||      }|j	                  d t        |      |            }|j	                  dt        j                   t        |      |                  }t        j                  ||       y )Nr
         col1col2r-   r   )	r   r#   r    get_objr"   evalcomr   r!   )r   func_strargr   r   resultexpecteds          r   test_sample_random_statez#TestSample.test_sample_random_state   s     r2b"FGjjo.and8nS.AB::0@0@hPSAT0U:V
)r   c                 *    |t        j                  d            }t         j                  j                  d      }|j	                  d|      }|j	                  d|      }|j
                  j                  |j
                  j                  k(  j                         rJ |j	                  dt         j                  j                  d            }|j	                  dt         j                  j                  d            }t        j                  ||       y )Nr   r	   2   r   rI   )
r   aranger   r   r"   indexvaluesallr    r!   )r   r   r   rngresult1result2s         r   test_sample_generatorz TestSample.test_sample_generator   s    biin-ii##A& **r*4**r*4MM((GMM,@,@@EEGGG **r		0E0Eb0I*J**r		0E0Eb0I*J
)r   c                     t        dt        d      i      }t        j                  ||      }d}t	        j
                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)NAabczJReplace has to be set to `True` when upsampling the population `frac` > 1.r2   r	   F)r   r   )r   listr    rj   r6   r7   r8   r"   )r   r   r   r:   s       r   *test_sample_upsampling_without_replacementz5TestSample.test_sample_upsampling_without_replacement   sf     d5k*+jjo.4 	 ]]:S1 	.JJAuJ-	. 	. 	.s   
A''A0N)__name__
__module____qualname__r6   fixturer   markparametrizer   r#   r)   r0   r;   r=   r@   rB   rL   rN   rS   rW   r[   rc   rq   r{   r    r   r   r   r      s    ^^0 0 [[VT%)_5, 6,\/0&
"
71721
 [[&$#	
*** .r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSampleDataFramec                 L   dgdz  }d|d<   t        t        dd      t        dd      dgdz  |d      }|j                  dd	
      }t        j                  ||j
                  dd        t        t        d            }d}t        j                  t        |      5  |j                  dd
       d d d        d}t        j                  t        |      5  |j                  ddd       d d d        t        j                  t        d      5  |j                  dd
       d d d        dgdz  }d|d<   t        j                  |j                  d|
      |j
                  d d        t        t        d      dgdz  d      }ddg}t        j                  |j                  dd|      |dg          t        j                  |j                  dd|      |dg          dgdz  }d|d<   t        j                  |j                  dd|      |j
                  dd        t        j                  |j                  dd|      |j
                  dd        d}t        j                  t        |      5  |j                  dd       d d d        d}t        j                  t        |      5  |j                  dd       d d d        t        t        d            }t        j                  t        d       5  |j                  dd       d d d        d!}t        j                  t        |      5  |j                  dddgdz         d d d        y # 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)"Nr   r
   rE   r]   re   rf   a)rh   ri   	colStringeasyweightsr   rF   r`   z@Strings cannot be passed as weights when sampling from a Series.r2   r-   weight_columnzLStrings can only be passed to weights when sampling from rows on a DataFrame)r   rG   r_   z-'String passed to weights not a valid column'not_a_real_column_namerH   rg   r^   ri   columnsrowsru   z)No axis named 2 for object type DataFramer	   )r   r_   z2No axis named not_a_name for object type DataFrame
not_a_namez&No axis named 1 for object type SeriesrD   )r   r#   r"   r    assert_frame_equalra   r   r6   r7   r8   KeyError)	r   easy_weight_listdfsample1serr:   weights_less_than_1second_column_weightweights	            r   r)   zTestSampleDataFrame.test_sample   sg   
 38b"b"!URZ/	
 ))a)7
grwwq|4 U2YP]]:S1 	5JJOJ4	5 	 ]]:S1 	<II?I;	< ]]K
 	= II#;I<	=  !cBh!$A
bii!5HiI277SUTU;W b	C52:>? !1v
II+?I@"fX,	

 	II	3GIH"fX,	
 rq	
bii!&&iI277STUV<X
III8"''!A,	

 :]]:S1 	#III"	# C]]:S1 	.III-	. U2Y]]:-UV 	$JJJ#	$ F]]:S1 	7IIC52:I6	7 	7w	5 	5	< 	<	= 	=F	# 	#	. 	.	$ 	$
	7 	7sT   MMM)0M6)N4N-NMM&)M36M?NNN#c                 6   dgdz  }d|d<   t        t        dd      t        dd      dgdz  d	      }|j                  dd|
      }t        j                  ||dg          t        j                  |j                  dd      |j                  ddd             y )Nr   r-   rE   r	   r
   re   rf   r   rh   ri   r   r^   r   *   r   )r   r_   r   )r   r#   r"   r    r   )r   r   r   r   s       r   test_sample_axis1z%TestSampleDataFrame.test_sample_axis1+  s    372r]E"bMPR
S
 ))aa1A)B
gr;-'89 	III+RYYQSY-T	
r   c                 |   t        g dg ddg d      }t        g dg d      }t        j                  |j                  dg   |j                  d	|
             t        g dg d      }t        j                  |j                  dg   |j                  d	|
             t        ddgddg      }t        j                  |j                  dg   |j                  d	|
             t        d	dgd	dg      }t        j                  t        d      5  |j                  d	|
       d d d        y # 1 sw Y   y xY w)N)r]   r`      r   bcrg   )	   r]   r-   )ru   )rE   r   r   )r-   r]   r   r-   rE   rG   )gMbP?r   i'  )r-   r]   r
   g{Gz?r   r]   r	   rU   r2   )	r   r   r    r   locr"   r6   r7   r8   )r   r   r   ser2ser3ser4s         r   %test_sample_aligns_weights_with_framez9TestSampleDataFrame.test_sample_aligns_weights_with_frame;  s   	?C9UYi0
bffaSk299Q9+DE 'z:
bffaSk299Q9+EF tQi1v.
bffaSk299Q9+EF q!fQF+]]:-ST 	'IIaI&	' 	' 	's   D22D;c                     t        t        j                  j                  d      j	                  d      g d      }|j                  d      }t        j                  d       5  d|d<   d d d        y # 1 sw Y   y xY w)Nr	   )r
   r-   r   )r   r-   rE   d)r   r   r   r   r   r"   r    assert_produces_warning)r   r   df2s      r   test_sample_is_copyz'TestSampleDataFrame.test_sample_is_copyP  sh     II!!!$44W=
 iil''- 	CH	 	 	s   "A11A:c                    t        j                  t         j                  dt         j                  g      }|j                         }t	        g d      }|j                  |       t        j                  ||       t        g ddt         j                  t         j                  gd      }|d   j                         }|j                  ddd	       |d   }t        j                  ||       y )
NrE   )rE   r	   r-   r   )rE   rE   rE   )rv   rG   rG   g      ?T)r   r   rG   )
r   arrayrY   copyr   r"   r    assert_numpy_array_equalr   assert_series_equal)r   ro   rp   r   r   s        r   #test_sample_does_not_modify_weightsz7TestSampleDataFrame.test_sample_does_not_modify_weights[  s    2661bff-.;;=Y 	

6
"
##FH5 )BFFBFF8KLMi=%%'
		sD)	<I
vx0r   c                     t        t        dd      t        dd      dgdz  d      }|j                  dd      }t        t        d            }t	        j
                  |j                  |d	       y )
Nr
   re   rf   r   r   r-   T)ignore_index)exact)r   r#   r"   r   r    assert_index_equalru   )r   r   ro   expected_indexs       r   test_sample_ignore_indexz,TestSampleDataFrame.test_sample_ignore_indexm  s`    2r]E"bMPR
S
 140uQx
fllN$Gr   N)	r   r   r   r)   r   r   r   r   r   r   r   r   r   r      s#    S7j
 '*	1$Hr   r   )numpyr   r6   pandasr   r   r   pandas._testing_testingr    pandas.core.commoncorecommonrl   r   r   r   r   r   <module>r      s;      
     B. B.JbH bHr   