o
    gH/                     @   sn   d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z d dlm  mZ G dd dZG dd dZdS )    N)np_version_under1p18)	DataFrameIndexSeriesc                   @   s   e Zd Zejeegddd Zej	de
eddd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej	ddg d fejd!d"ejjed#d$d%ejd&d'ejjed#d$d%gd(d) Zd*d+ Zd,S )-
TestSample)paramsc                 C   s6   |j }|tu rtjd}ntjdd}||d dS )N
   )dtype)paramr   nprandomrandn)selfrequestklassarr r   d/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_sample.pyobj   s
   zTestSample.objtestr   c              	   C   sB  t jdd}t|jd|d|jd|d t|jd|d|jd|d t|jdt j|d|jdt j|d t|jdt j|d|jdt j|d t|jddt j|d	|jddt j|d	 g g }}tdD ]}t j| |	|jdd
 |	|jdd qztj|  tj|  d S )Nr   d      nrandom_stategffffff?)fracr      T)r   replacer   r   r   )
r   r   randinttmassert_equalsampleRandomStaterangeseedappend)r   r   r   r&   os1os2_r   r   r   test_sample   s6   

zTestSample.test_samplec                 C   sL   t |jdddksJ t |jdddksJ t |jdddks$J d S )Nr   r   g(\?r      g
ףp=
?)lenr#   r   r   r   r   r   test_sample_lengthsA   s   zTestSample.test_sample_lengthsc                 C   sD   d}t jt|d |jdd W d    d S 1 sw   Y  d S )NzYrandom_state must be an integer, array-like, a BitGenerator, a numpy RandomState, or Nonematcha_string)r   pytestraises
ValueErrorr#   r   r   msgr   r   r    test_sample_invalid_random_stateG   s
   "z+TestSample.test_sample_invalid_random_statec                 C   sF   d}t jt|d |jddd W d    d S 1 sw   Y  d S )Nz0Please enter a value for `frac` OR `n`, not bothr0   r,   g333333?)r   r   r3   r7   r   r   r   "test_sample_wont_accept_n_and_fracP   s   "z-TestSample.test_sample_wont_accept_n_and_fracc                 C   s~   d}t jt|d |jdd W d    n1 sw   Y  t jt|d |jdd W d    d S 1 s8w   Y  d S )NzCA negative number of rows requested. Please provide positive value.r0   r   g333333ӿr   r3   r7   r   r   r   $test_sample_requires_positive_n_fracV   s   "z/TestSample.test_sample_requires_positive_n_fracc                 C   s@   t jtdd |jdd W d    d S 1 sw   Y  d S )Nz$Only integers accepted as `n` valuesr0   g	@r   r3   r.   r   r   r   test_sample_requires_integer_n]   s   "z)TestSample.test_sample_requires_integer_nc                 C   s   d}t jt|d |jdddgd W d    n1 sw   Y  t jt|d dgd }|jd|d W d    n1 s@w   Y  t jtd	d tg d
}|jd|d W d    d S 1 sew   Y  d S )N5Weights and axis to be sampled must be of same lengthr0   r,   r      r   weights      ?   z%Fewer non-zero entries in p than size)r   r   g?r   )r4   r5   r6   r#   r   )r   r   r8   bad_weightsbad_weight_seriesr   r   r   "test_sample_invalid_weight_lengthsb   s   
"z-TestSample.test_sample_invalid_weight_lengthsc                 C   sP   dgd }d}t jt|d |jd|d W d    d S 1 s!w   Y  d S )Ngr   z.weight vector many not include negative valuesr0   r,   r@   r3   )r   r   rD   r8   r   r   r   test_sample_negative_weightsp   s
   
"z'TestSample.test_sample_negative_weightsc                 C   s   dgd }t j|d< d}tjt|d |jd|d W d    n1 s%w   Y  dgd }t j |d< tjt|d |jd|d W d    d S 1 sOw   Y  d S )Ng?r   r   z*weight vector may not include `inf` valuesr0   r,   r@   )r   infr4   r5   r6   r#   )r   r   weights_with_infr8   weights_with_ninfr   r   r   test_sample_inf_weightsw   s   


"z"TestSample.test_sample_inf_weightsc                 C   sL   dgd }t jtdd |jd|d W d    d S 1 sw   Y  d S )Nr   r   $Invalid weights: weights sum to zeror0   r,   r@   r3   )r   r   zero_weightsr   r   r   test_sample_zero_weights   s   
"z#TestSample.test_sample_zero_weightsc                 C   sN   t jgd }tjtdd |jd|d W d    d S 1 s w   Y  d S )Nr   rL   r0   r,   r@   )r   nanr4   r5   r6   r#   )r   r   nan_weightsr   r   r   test_sample_missing_weights   s   "z&TestSample.test_sample_missing_weightsc                 C   s8   d gd }d|d< t |jdd|d|jdd  d S )Nr   rB      r?   r   r   axisrA      )r!   r"   r#   iloc)r   r   weights_with_Noner   r   r   test_sample_none_weights   s
   
z#TestSample.test_sample_none_weightszfunc_str,argznp.array)r   r,   r?   r   znp.random.MT19937r,   z
NumPy<1.18)reason)marksznp.random.PCG64rC   c                 C   sl   t tddtddd}|tu r|d }|jdt||d}|jdtt||d}t|| d S )Nr         col1col2r^   r,   r   )	r   r%   r   r#   evalcomr   r!   r"   )r   func_strargframe_or_seriesr   resultexpectedr   r   r   test_sample_random_state   s   z#TestSample.test_sample_random_statec                 C   sf   t dtdi}|tu r|d }d}tjt|d |jddd W d    d S 1 s,w   Y  d S )NAabczJReplace has to be set to `True` when upsampling the population `frac` > 1.r0   r   F)r   r   )r   listr   r4   r5   r6   r#   )r   rd   r   r8   r   r   r   *test_sample_upsampling_without_replacement   s   "z5TestSample.test_sample_upsampling_without_replacementN)__name__
__module____qualname__r4   fixturer   r   r   markparametrizerj   r%   r+   r/   r9   r:   r<   r=   rF   rG   rK   rN   rQ   rX   r
   skipifr   rg   rk   r   r   r   r   r      sB    

'	

	r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSampleDataFramec           	      C   s&  dgd }d|d< t tddtdddgd |d}|jdd	d
}t||jdd  ttd}d}tjt	|d |jddd
 W d    n1 sNw   Y  d}tjt	|d |jdddd W d    n1 sow   Y  tjt
dd |jddd
 W d    n1 sw   Y  dgd }d|d< t|jd|d
|jd d  t tddgd d}ddg}t|jdd|d|dg  t|jdd|d|dg  dgd }d|d< t|jdd|d|jdd  t|jdd|d|jdd  d}tjt	|d |jddd W d    n	1 s w   Y  d}tjt	|d |jddd W d    n	1 sAw   Y  ttd}tjt	d d |jddd W d    n	1 sfw   Y  d!}tjt	|d |jdddgd d W d    d S 1 sw   Y  d S )"Nr   r   r?   rR   r[   r\   a)r^   r_   	colStringeasyweightsrv   r@   rU   z@Strings cannot be passed as weights when sampling from a Series.r0   r,   weight_columnzLStrings can only be passed to weights when sampling from rows on a DataFrame)r   rA   rT   z-'String passed to weights not a valid column'not_a_real_column_namerB   r]   rS   r_   columnsrowsindexz)No axis named 2 for object type DataFramer   )r   rT   z2No axis named not_a_name for object type DataFrame
not_a_namez&No axis named 1 for object type Seriesr>   )r   r%   r#   r!   assert_frame_equalrV   r   r4   r5   r6   KeyError)	r   easy_weight_listdfsample1serr8   weights_less_than_1second_column_weightweightr   r   r   r+      sv   

 
"$zTestSampleDataFrame.test_samplec                 C   s|   dgd }d|d< t tddtdddgd d	}|jdd|d
}t||dg  t|jddd|jdddd d S )Nr   r,   r?   r   r   r[   r\   rt   r^   r_   ru   rS   ru   *   r   )r   rT   r   )r   r%   r#   r!   r}   )r   r   r   r   r   r   r   test_sample_axis1  s   
z%TestSampleDataFrame.test_sample_axis1c                 C   s
  t g dg ddg dd}tg dg dd}t|jdg |jd	|d
 tg dg dd}t|jdg |jd	|d
 tddgddgd}t|jdg |jd	|d
 td	dgd	dgd}tjtdd |jd	|d
 W d    d S 1 s~w   Y  d S )N)rR   rU      rt   bcr]   )	   rR   r,   )r{   )r?   r   r   )r,   rR   r   r,   r?   )rA   )gMbP?r   i'  )r,   rR   r   g{Gz?r   rR   r   rL   r0   )	r   r   r!   r}   locr#   r4   r5   r6   )r   r   r   ser2ser3ser4r   r   r   %test_sample_aligns_weights_with_frame,  s   "z9TestSampleDataFrame.test_sample_aligns_weights_with_framec                 C   s\   t tjddg dd}|d}td  d|d< W d    d S 1 s'w   Y  d S )Nr   r,   r   )ry   r?   d)r   r   r   r   r#   r!   assert_produces_warning)r   r   df2r   r   r   test_sample_is_copyB  s
   

"z'TestSampleDataFrame.test_sample_is_copyc                 C   sN   t tddtdddgd d}|jddd}tg d	}t|j| d S )
Nr   r[   r\   rt   r   r,   T)ignore_index)r   r?   r   )r   r%   r#   r   r!   assert_index_equalr{   )r   r   re   expected_indexr   r   r   test_sample_ignore_indexK  s   z,TestSampleDataFrame.test_sample_ignore_indexN)rl   rm   rn   r+   r   r   r   r   r   r   r   r   rs      s    U	rs   )numpyr   r4   pandas.compatr   pandasr   r   r   pandas._testing_testingr!   pandas.core.commoncorecommonra   r   rs   r   r   r   r   <module>   s     5