a
    Pf_                     @   s  d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm  m  mZ dd Zej !de"ej#gdd Z$d	d
 Z%dd Z&dd Z'dd Z(dd Z)dd Z*ej !dedddej+edej,ge
-ej+edfedej,fgfg dej#e.ej/j+d e.ej/j,gdde
-e.ej/j+d fd e.ej/j,fgfe0dde0d de0ddge#e0e.ej/j, de0d de0e.ej/j,dge
-e0e.ej/j, de0d dfe0d de0e.ej/j,dfgfgd d! Z1d"d# Z2ej !d$g d%d&fg d'd(d)fgd*d+ Z3ej !d,d%e4d%ee4d%gej !d-eegd.d/ Z5ej !d0d dd%dd1ej6gej6 d dd%dd1gej6 d dd%dd1ej6ggd2d3 Z7d4d5 Z8ej !d6d7g d8d9fd:g d;d<fgd=d> Z9d?d@ Z:dAdB Z;ej !dCdd:gdDdE Z<dFdG Z=dHdI Z>ej !dJdKdL dMdL fdNdL dOdL fgdPdQ Z?dRdS Z@ej !dTeAdUeAdUdV gdWdX ZBej !dYg dZd[d\ ZCd]d^ ZDd_d` ZEej !dadbdcidfi ddfdbdeiddfdbdfidgfgdhdi ZFej !d0g djej !dkdd%gdldm ZGej !dng dodpdq ZHej !drdsdL dtdL dudL dvdL gdwdx ZIej !dyeeej#e"gdzd{ ZJej !dye"ej#eegd|d} ZKej !d~dedddLdedddLdedddLdedddLdggej !dye"ej#eegdd ZMdd ZNdd ZOej !dg ddd ZPdd ZQej !d~ddgej !deejRfej#ejSfe"ejTfgdd ZUej !dCg ddd ZVej !d~dg dgej !d9d7d:gej !dd7d:gdd ZWej !dg dg dg dg dddgfg dg dg dg dg dfgdd ZXej !dg dg dg dg dg dfg dg dg dg dg dfgdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd ZadS )    N)Categorical	DataFrameDatetimeIndexIndexIntervalIntervalIndexSeriesTimedeltaIndex	Timestampcut
date_rangeinterval_rangeisnaqcuttimedelta_rangeto_datetime)CategoricalDtypec                  C   s>   t jddd} t| ddd}t g d}tj||dd d S )	N   int64dtype   Flabels)   r   r   r   r   )Zcheck_dtype)npZonesr   arraytmassert_numpy_array_equal)dataresultexpected r"   V/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/reshape/test_cut.pytest_simple   s    r$   funcc                 C   sn   | g d}t |ddd\}}t|d}|g d}t|dd}t|| t|t	
g d d S )N皙?ffffff?      @@ffffff#@ @   Tretbins)r   r   r   r      r   ordered)Mb?g>wa
@g!""@r+   )r   r   from_breaksroundtaker   r   assert_categorical_equalassert_almost_equalr   r   )r%   r   r    bins	intervalsr!   r"   r"   r#   	test_bins$   s    r;   c                  C   sr   t g d} t| dddd\}}t|d}t|dd}|g d}t	|| t
|t g d d S )	Nr'   r(   r)   r*   r+   r,   皙@r   Trightr/   r-   r1   )r   r   r   r0   r-   r   r   )r3   r=   @L@r+   )r   r   r   r   r4   r5   r   r6   r   r7   r8   r   r    r9   r:   r!   r"   r"   r#   
test_right1   s    rC   c                  C   sv   t g d} t| dddd\}}tj|ddd}|g d	}t|dd
}t	|| t
|t g d d S )Nr<   r   FTr>   r-   leftclosed)r   r   r   r0   r-   r   r   r1   )r'   r=   r@   rA   g%Ck#@)r   r   r   r   r4   r5   r6   r   r   r7   r8   rB   r"   r"   r#   test_no_right=   s    rG   c                  C   sn   t tdd} | }t td|jd}t|| tjt| j	d| jdd}t td|jd}t|| d S )Nr   r-   r9   T
categoriesr2      )
r   rangerK   r   r7   r   
from_codesr   appendcodes)cr!   r    r"   r"   r#   test_bins_from_interval_indexI   s    rR   c                  C   sz   t g d} t| g dd}tg d}t|j| tg d|jd}t|j| t|j	t jg ddd d S )	N)	
                     ;   <   )r      #   F   rH   ))r   r\   )r\   r]   )r]   r^   )rX      2   )r   r   r0   Zint8r   )
r   r   r   r   from_tuplesr   assert_index_equalrK   r   rP   )ZagesrQ   r!   r    r"   r"   r#   )test_bins_from_interval_index_doc_exampleV   s    rc   c                  C   sT   d} t g d}tjt| d  tddg|d W d    n1 sF0    Y  d S )Nz)Overlapping IntervalIndex is not accepted))r   rS   )r0   rV   )r      matchr   rL   rH   )r   ra   pytestraises
ValueErrorr   )msgiir"   r"   r#   -test_bins_not_overlapping_from_interval_indexb   s    rl   c                  C   sL   d} g d}t jt| d t|g d W d    n1 s>0    Y  d S )Nz bins must increase monotonicallyr&   re   )皙?      ?r   rS   rg   rh   ri   r   rj   r   r"   r"   r#   test_bins_not_monotonick   s    rq   zx, bins, expectedz
2017-12-31r-   periodsz
2018-01-01rI   r   r   r   r   rI   nsr   c                 C   s   t | |}t|j| d S N)r   r   rb   rK   )xr9   r!   r    r"   r"   r#   #test_bins_monotonic_not_overflowings   s    4
rx   c                  C   sT   d} g d}t jt| d& t|g dg dd W d    n1 sF0    Y  d S )Nz9Bin labels must be one fewer than the number of bin edgesr&   re   )r   r   rS   )foobarZbazr   ro   rp   r"   r"   r#   test_wrong_num_labels   s    r{   z
x,bins,msgr0   zCannot cut empty array)r   r0   r-         ?z#`bins` should be a positive integerc                 C   s<   t jt|d t| | W d    n1 s.0    Y  d S )Nre   ro   )rw   r9   rj   r"   r"   r#   test_cut_corner   s    r}   argcut_funcc                 C   s@   d}t jt|d || d W d    n1 s20    Y  d S )Nz!Input array must be 1 dimensionalre   r0   )rg   rh   ri   )r~   r   rj   r"   r"   r#   test_cut_not_1d_arg   s    r   r   r   c                 C   sB   d}t jt|d t| dd W d    n1 s40    Y  d S )Nz?cannot specify integer `bins` when input data contains infinityre   r-   rH   ro   )r   rj   r"   r"   r#   test_int_bins_with_inf   s    
r   c                  C   sT   d} t g d| d}t|ddgdd}t tjtjtjdtjg| d}t|| d S )Nrw   )r   rI   r   r   namer   r   Fr   )r   r   r   nanr   assert_series_equal)r   serindexpr"   r"   r#   test_cut_out_of_range_more   s
    r   zright,breaks,closedT)MbP      ?r|         ?r   r?   F)r   r   r|   r   gjt?rD   c                 C   sJ   t t dddd}t|dd| d\}}tj||d}t|j| d S )Nr   g)\(?rm   r   T)r/   r?   rE   )	r   tilearanger   r   r4   r   rb   rK   )r?   ZbreaksrF   arrr    r9   	ex_levelsr"   r"   r#   test_labels   s    r   c                  C   s:   d} t tjdd| d}t|d}|j| ks6J d S )Nry   r0   d   r   r   )r   r   randomdefault_rngstandard_normalr   r   )r   r   factorr"   r"   r#   #test_cut_pass_series_name_to_factor   s    
r   c                  C   s<   t ddd} t| ddd}tg d}t|j| d S )Nr   g\(\?{Gz?r   r0   	precision)g9̗Gg
ףp=
?g
ףp=
?gHzG?g
ףp=
?)r   r   r   r   r4   r   rb   rK   )r   r    r   r"   r"   r#   test_label_precision   s    r   r   c                 C   sZ   t ddd}t j|d d d< t|d| d}t |}t t|t j|}t|| d S )Nr   r   r   r-   r   r   )	r   r   r   r   asarraywherer   r   r8   )r   r   r    r!   r"   r"   r#   test_na_handling   s    
r   c                  C   s   t d} t| dd}t j ddt jg}t| |}t||}t|}t|j	| |d t
dt jkslJ |d t
t j dksJ |d t
dt jksJ |d t
t j dksJ d S )NrL   r   r   r0   r   r   r   )r   r   r   infr   r   r4   r   rb   rK   r   )r   Zdata_serr9   r    Z
result_serZ
ex_uniquesr"   r"   r#   test_inf_handling  s    



r   c                  C   sH   t jdd} t| g d}t|}| dk | dkB }t|| d S )Nr0   r   rt   rI   r   )r   r   r   r   r   r   r   r   )r   r    maskZex_maskr"   r"   r#   test_cut_out_of_bounds  s
    r   zget_labels,get_expectedc                 C   s   | S rv   r"   r   r"   r"   r#   <lambda>*      r   c                 C   s"   t dgddg  ddg | ddS )NMediumr   SmallLargeTrJ   )r   r   r"   r"   r#   r   +  s   c                 C   s   t g d| S )Nr   r   r0   r   rN   r   r"   r"   r#   r   2  r   c                 C   s    t dgddg  ddg | S )Nr   r   r   r0   r   r   r"   r"   r#   r   3  r   c                 C   s>   g d}g d}g d}t ||| |d}t||| d S )N)r   rX   r`   r   r`   r   rS   rT   r_      r^   )r   r   r   r   )r   r   r7   )Z
get_labelsZget_expectedr9   r   r   r    r"   r"   r#   test_cut_pass_labels&  s
    r   c                  C   sF   g d} g d}t | d|d}t | dt||ddd}t|| d S )Nr   )ZGoodr   ZBadr-   r   TrJ   )r   r   r   r7   )r   r   r    r   r"   r"   r#   test_cut_pass_labels_compat@  s
    r   rw   g      &@g    _Bc                 C   s   t | d d S )Nr0   r   )rw   r"   r"   r#   test_round_frac_just_worksJ  s    r   zval,precision,expected))g#]r-   i)眢#]@r-   v   )r   r0   r   )gݔ	~. ?r0   giUMu?c                 C   s   t j| |d}||ksJ d S )Nr   )tmodZ_round_frac)valr   r!   r    r"   r"   r#   test_round_fracP  s    r   c                  C   st   t g d} t| d}tjddddd}|d  d8  < t tj|dd	g d
t	dd}t
|| d S )N)	r   r   r0   r-   r   r   rL         r-   r   r   r   )numgMb?r?   rE   )	r   r   r   r   r   r   r0   r0   r0   Tr1   )r   r   r   Zlinspacer5   r   r4   r6   astyper   r   r   )r   r    Zexp_binsr!   r"   r"   r#   test_cut_return_intervals_  s    
r   c                  C   sX   t td} t| ddd\}}t tjg ddddtdd}t	
|| d S )	Nr   r0   Tr.   )g~jthrn   r-   r?   rE   r1   )r   r   r   r   r   r4   repeatr   r   r   r   )r   r    r9   r!   r"   r"   r#   test_series_ret_binsn  s    r   z
kwargs,msg
duplicatesdropzBin edges must be uniqueraisery   z(invalid value for 'duplicates' parameterc                 C   s   g d}t tg dg dd}|d urltjt|d" t||fi |  W d    q1 s`0    Y  n4t||fi | }t|tt	|}t
|| d S )N)r   r0   r   rL   rS   rS   )r   r-   r   r   	   )abrQ   deindexre   )r   r   r   rg   rh   ri   r   pduniquer   r   r   )kwargsrj   r9   valuesr    r!   r"   r"   r#   test_cut_duplicates_biny  s    2r   )g      "@g      "g        lengthc                 C   s@   t | g| }t|ddd}t dg| tjd}t|| d S )Nr   Fr   r   r   )r   r   r   Zintpr   r   )r   r   r   r    r!   r"   r"   r#   test_single_bin  s    r   z#array_1_writeable,array_2_writeable))TT)TF)FFc                 C   sR   t ddd}| |j_t ddd}||j_t d}tt||t|| d S )Nr   r   rS   )r   r   flagsZ	writeabler   r7   r   )Zarray_1_writeableZarray_2_writeableZarray_1Zarray_2Zhundred_elementsr"   r"   r#   test_cut_read_only  s    
r   convc                 C   s   t | S rv   )r
   vr"   r"   r#   r     r   c                 C   s   t | S rv   )r   r   r"   r"   r#   r     r   c                 C   s
   t | S rv   )r   
datetime64r   r"   r"   r#   r     r   c                 C   s   t |  S rv   )r
   Zto_pydatetimer   r"   r"   r#   r     r   c                    s   t dt dg}g d}tttt|d t|d tt|d t|d gtdd} fd	d
|D }tt||d}t	
|| d S )Nz
2012-12-13z
2012-12-15)z
2012-12-12z
2012-12-14z
2012-12-16r   r   r0   Tr1   c                    s   g | ]} |qS r"   r"   ).0r   r   r"   r#   
<listcomp>  r   z%test_datetime_bin.<locals>.<listcomp>rH   )r   r   r   r   r   r
   r   r   r   r   r   )r   r   Zbin_datar!   r9   r    r"   r   r#   test_datetime_bin  s    
	r   boxc           	      C   s   t g dd|  d}||}t|ddd\}}|tu r@d} | dkrbtg d	d|  dd
}ntg dd|  dd
}tg dd|  dd
}t||}t|tdd}t	
t|| d S )N)z
2013-01-01z
2013-01-02z
2013-01-03M8[]r-   Tr.   ru   s)z2012-12-31 23:57:082013-01-01 16:00:002013-01-02 08:00:00r   )2012-12-31 23:57:07.200000r   r   )r   r   2013-01-03 00:00:00r1   )r   r   r   listr   r   Zfrom_arraysr   r   r   r   )	unitr   r   r    _rD   r?   Zexp_intervalsr!   r"   r"   r#   test_datetime_cut  s*    


r   c                 C   sr   | t dt dt dt dg}ttdddd}d	}tjt|d
 t|| W d    n1 sd0    Y  d S )N2013-01-01 04:57:07.2000002013-01-01 21:00:002013-01-02 13:00:002013-01-03 05:00:0020130101r-   
US/Easternrs   tzz9Cannot use timezone-naive bins with timezone-aware valuesre   )r
   r   r   rg   rh   ri   r   )r   r9   r   rj   r"   r"   r#   +test_datetime_tz_cut_mismatched_tzawareness  s    r   r9   r   UTCr   r   r   r   r   c              
   C   s   d}t tdd|d}t| ts(|| } t|| }t tttd|dtd|dttd|dtd|dttd|dtd	|dgt	d
d}t
|| d S )Nr   r   r-   r   r   r   r   r   r   Tr1   )r   r   
isinstanceintr   r   r   r
   r   r   r   r   )r9   r   r   r   r    r!   r"   r"   r#   test_datetime_tz_cut   s2    







r   c                  C   sN   d} t jt| d( ttdddg dd W d    n1 s@0    Y  d S )Nz bins must be of datetime64 dtypere   r   r-   rr   r   r0   r   rH   )rg   rh   ri   r   r   rj   r"   r"   r#   test_datetime_nan_error+  s    r   c                  C   s\   t tdddtdddd} | j }t|tdg |  }t|tg d d S )	NZ20130102r   rr   r   r0   rH   F)FTTTT)r   r   rK   r   r   r   r   r   )r    r   r"   r"   r#   test_datetime_nan_mask2  s    
r   r   )Nr   z
US/Pacificc                 C   s   t tdd| |d}t|ddd\}}t||}t|| |dkr^tg dd	| d
d}ntg dd	| d
d}|| }t|| d S )NZ20180101r-   )rs   r   r   r0   Tr.   r   )z2017-12-31 23:57:082018-01-02 00:00:002018-01-03 00:00:00r   r   r   )z2017-12-31 23:57:07.200000r   r   )r   r   r   r   r   r   Ztz_localizerb   )r   r   r   r    result_binsr!   expected_binsr"   r"   r#   test_datetime_cut_roundtrip>  s    



r   c                  C   sT   t tddd} t| ddd\}}t| |}t|| tg d}t|| d S )NZ1dayr-   rr   r0   Tr.   )z0 days 23:57:07.200000z2 days 00:00:00z3 days 00:00:00)r   r   r   r   r   r	   rb   )r   r    r   r!   r   r"   r"   r#   test_timedelta_cut_roundtrip^  s    
r   rL   r   zbox, comparec                 C   sJ   |g dd }|g dd }t || dd}t || dd}||| d S )N)r   r   r   r   r   rS   )FTTFTr   )r   r   )r9   r   compareZdata_expectedZdata_resultr!   r    r"   r"   r#   test_cut_bool_coercion_to_intl  s
    r   )ry   r   Tc                 C   sL   t d}d}tjt|d t|d| d W d    n1 s>0    Y  d S )Nr   zJBin labels must either be False, None or passed in as a list-like argumentre   r   r   )rM   rg   rh   ri   r   )r   r   rj   r"   r"   r#   test_cut_incorrect_labels~  s    r   )r   r   rT   include_lowestc                 C   sh   t jdjddddt}t j|d d d< ttj	|dd| ||d}t|| ||d}t
|| d S )	Nr0   r   rS   r`   )sizeInt64r   )r?   r   )r   r   r   integersr   floatr   r   r   r   r   r7   )r9   r?   r   r   r    r!   r"   r"   r#   test_cut_nullable_integer  s    r  z3data, bins, labels, expected_codes, expected_labels)rT         )rd      r\   r_   )ABr  )r   r   r   r  r	  )r   r-   r   r   r0   r   rL   r   )r0   r   r   r0   )r0   r   r   r   c                 C   s0   t | ||dd}tj||dd}t|| d S NFr9   r   r2   rJ   r   r   rN   r   r7   r   r9   r   Zexpected_codesZexpected_labelsr    r!   r"   r"   r#   test_cut_non_unique_labels  s
    	r  )Cr	  r  )r-   r   r   r0   c                 C   s0   t | ||dd}tj||dd}t|| d S r  r  r  r"   r"   r#   test_cut_unordered_labels  s
    	r  c                  C   sL   d} t jt| d& tddgg ddd W d    n1 s>0    Y  d S )Nz.'labels' must be provided if 'ordered = False're   r|   r-   r   F)r9   r2   ro   r   r"   r"   r#   3test_cut_unordered_with_missing_labels_raises_error  s    r  c                  C   sT   t g d} t g d}t g d}t| ||dd}t g ddd}t|| d S )	N)r   r0   r-   r   r   )r   r0   r   rL   )r   r   rQ   Fr  )r   r   r   r   rQ   categoryr   )r   r   r   r   )r   r9   r   r    r!   r"   r"   r#   %test_cut_unordered_with_series_labels  s    r  c                  C   s   t dtjddddi} dd tdddD }td	. t| j	tdd
dd	|d| d< W d    n1 sr0    Y  d S )Nvaluer0   r   r   r_   c                 S   s   g | ]}| d |d  qS )z - r   r"   )r   ir"   r"   r#   r     r   z(test_cut_no_warnings.<locals>.<listcomp>rS   Fi   )r?   r   group)
r   r   r   r   r  rM   r   Zassert_produces_warningr   r  )Zdfr   r"   r"   r#   test_cut_no_warnings  s    r  c                  C   sz   t tddddgd tddddtddddg g ddd	j } t g dg dd
}t|g ddd}t||  d S )Nr   r0   r?   rE   r-   r   )r   r   r0   r-   r   r  )r   r   r   r   T)r9   r   )r   r   catZ
as_orderedr   r   r   )r!   r   r    r"   r"   r#   .test_cut_with_duplicated_index_lowest_included  s    r  c                  C   s  t td} t| d d}t| d d}t||d}tjt	ddddt	dd	ddt	d	d
ddt	d
dddt	ddddt	ddddt	ddddt	ddddt	ddddt	ddddg
dd}tdgd t
jgd  t
jgd dgd  d|d}t|| d S )Nr   rS   r   )12gMbXg#@r?   rE   g3@g33333=@gC@g     H@g33333M@g33333SQ@gS@gfffffFV@c   Tr1   r   )r   rM   r   Zvalue_countsheadtailr   r   ZCategoricalIndexr   r   r   r   Zassert_frame_equal)r   Zser1Zser2r    r   r!   r"   r"   r#   *test_cut_with_nonexact_categorical_indices  s,    .r!  c                  C   sV   t dft dft dfg} tg dg d| d}tjg d| dd	}t|| d S )
NrS   r_   r   )r0   r   rL   )r   r-   r   r   )r9   r   r   Tr1   )r
   r   r   rN   r   r7   )r   r    r!   r"   r"   r#   $test_cut_with_timestamp_tuple_labels  s    r"  c                  C   sV   t tdtddd} tttdgd| d}tjdg| d	d
}t|j	| d S )Nz
2022-02-25z
2022-02-27Z1D)freqz
2022-02-26zM8[ns]rH   r   Tr1   )
r   r
   r   r   r   r   rN   r   r7   r   )r9   r    r!   r"   r"   r#   $test_cut_bins_datetime_intervalindex  s    r$  c               	   C   sd   t dddddtjddgdd	} g d
}t|}t tjg d|dd}t| |d}t	|| d S )Nr   r   r0   r-   r   rL   r   r  r   r
  )rI   r   r   r   r   rI   r0   r-   Tr1   rH   )
r   r   ZNAr   r4   r   rN   r   r   r   )Zseriesr9   r:   r!   r    r"   r"   r#   test_cut_with_nullable_int64  s    
r%  )bnumpyr   rg   Zpandasr   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.api.typesr   Zpandas.core.reshape.tilecoreZreshaper   r   r$   markZparametrizer   r   r;   rC   rG   rR   rc   rl   rq   minmaxra   Ziinfor   Ztimedelta64rx   r{   r}   eyer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z
tz_convertr   r   r   r   r   r   r7   Zassert_equalr   r   r  r  r  r  r  r  r  r!  r"  r$  r%  r"   r"   r"   r#   <module>   s  H
	
"





2

"


		
	
 
	



	
	
	

&


	

  
	  
	
		