o
    _~#g_                     @   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   )check_dtype)nponesr   arraytmassert_numpy_array_equal)dataresultexpected r$   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/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rightr1   r/   r3   )r   r   r   r2   r/   r   r   )r5   r?   @L@r-   )r   r   r   r   r6   r7   r   r8   r   r9   r:   r!   r"   r;   r<   r#   r$   r$   r%   
test_right1   s   rE   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   r2   r/   r   r   r3   )r)   r?   rB   rC   g%Ck#@)r   r   r   r   r6   r7   r8   r   r   r9   r:   rD   r$   r$   r%   test_no_right=   s   rI   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/   r;   T
categoriesr4      )
r   rangerM   r   r9   r   
from_codesr   appendcodes)cr#   r"   r$   r$   r%   test_bins_from_interval_indexI   s   rT   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   rJ   ))r   r^   )r^   r_   )r_   r`   )rZ      2   )r   r   r2   int8r   )
r   r   r   r   from_tuplesr   assert_index_equalrM   r    rR   )agesrS   r#   r"   r$   r$   r%   )test_bins_from_interval_index_doc_exampleV   s    rg   c                  C   sV   d} t g d}tjt| d tddg|d W d    d S 1 s$w   Y  d S )Nz)Overlapping IntervalIndex is not accepted))r   rU   )r2   rX   )r      matchr   rN   rJ   )r   rd   pytestraises
ValueErrorr   )msgiir$   r$   r%   -test_bins_not_overlapping_from_interval_indexb   s
   "rp   c                  C   sN   d} g d}t jt| d t|g d W d    d S 1 s w   Y  d S )Nz bins must increase monotonicallyr(   ri   )皙?      ?r   rU   rk   rl   rm   r   rn   r!   r$   r$   r%   test_bins_not_monotonick   s
   "ru   zx, bins, expectedz
2017-12-31r/   periodsz
2018-01-01rK   r   r   r   r   rK   nsr   c                 C   s   t | |}t|j| d S N)r   r   re   rM   )xr;   r#   r"   r$   r$   r%   #test_bins_monotonic_not_overflowings   s   
4r|   c                  C   sV   d} g d}t jt| d t|g dg dd W d    d S 1 s$w   Y  d S )Nz9Bin labels must be one fewer than the number of bin edgesr(   ri   )r   r   rU   )foobarbazr   rs   rt   r$   r$   r%   test_wrong_num_labels   s
   "r   z
x,bins,msgr2   zCannot cut empty array)r   r2   r/         ?z#`bins` should be a positive integerc                 C   s>   t jt|d t| | W d    d S 1 sw   Y  d S )Nri   rs   )r{   r;   rn   r$   r$   r%   test_cut_corner   s   "r   argcut_funcc                 C   sB   d}t jt|d || d W d    d S 1 sw   Y  d S )Nz!Input array must be 1 dimensionalri   r2   )rk   rl   rm   )r   r   rn   r$   r$   r%   test_cut_not_1d_arg   s   "r   r!   r   c                 C   sD   d}t jt|d t| dd W d    d S 1 sw   Y  d S )Nz?cannot specify integer `bins` when input data contains infinityri   r/   rJ   rs   )r!   rn   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 )Nr{   )r   rK   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   rA   F)r   r   r   r   gjt?rF   c                 C   sJ   t t dddd}t|dd| d\}}tj||d}t|j| d S )Nr   g)\(?rq   r   T)r1   rA   rG   )	r   tilearanger   r   r6   r   re   rM   )rA   breaksrH   arrr"   r;   	ex_levelsr$   r$   r%   test_labels   s   r   c                  C   s:   d} t tjdd| d}t|d}|j| ksJ d S )Nr}   r2   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   r2   	precision)g9̗Gg
ףp=
?g
ףp=
?gHzG?g
ףp=
?)r   r   r   r   r6   r   re   rM   )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   r:   )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s6J |d t
t j dksCJ |d t
dt jksOJ |d t
t j dks\J d S )NrN   r   r   r2   r   r   r   )r   r   r   infr   r   r6   r   re   rM   r   )r!   data_serr;   r"   
result_ser
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 )Nr2   r   rx   rK   r   )r   r   r   r   r   r   r   r    )r   r"   maskex_maskr$   r$   r%   test_cut_out_of_bounds  s
   r   zget_labels,get_expectedc                 C   s   | S rz   r$   r   r$   r$   r%   <lambda>*  s    r   c                 C   s"   t dgddg  ddg | ddS )NMediumr   SmallLargeTrL   )r   r   r$   r$   r%   r   +  s
    c                 C   s   t g d| S )Nr   r   r2   r   rP   r   r$   r$   r%   r   2  s    c                 C   s    t dgddg  ddg | S )Nr   r   r   r2   r   r   r$   r$   r%   r   3  s     c                 C   s>   g d}g d}g d}t ||| |d}t||| d S )N)r   rZ   rb   r   rb   r   rU   rV   ra      r`   )r   r   r   r   )r   r   r9   )
get_labelsget_expectedr;   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   )Goodr   Badr/   r   TrL   )r   r   r   r9   )r   r   r"   r   r$   r$   r%   test_cut_pass_labels_compat@  s
   r   r{   g      &@g    _Bc                 C   s   t | d d S )Nr2   r   )r{   r$   r$   r%   test_round_frac_just_worksJ  s   r   zval,precision,expected))g#]r/   i)眢#]@r/   v   )r   r2   r   )gݔ	~. ?r2   giUMu?c                 C   s   t j| |d}||ksJ d S )Nr   )tmod_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   r2   r/   r   r   rN         r/   r   r   r   )numgMb?rA   rG   )	r   r   r   r   r   r   r2   r2   r2   Tr3   )r   r   r   linspacer7   r   r6   r8   astyper   r   r   )r   r"   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   r2   Tr0   )g~jthrr   r/   rA   rG   r3   )r   r   r   r   r   r6   repeatr   r   r   r   )r   r"   r;   r#   r$   r$   r%   test_series_ret_binsn  s   r   z
kwargs,msg
duplicatesdropzBin edges must be uniqueraiser}   z(invalid value for 'duplicates' parameterc                 C   s   g d}t tg dg dd}|d ur8tjt|d t||fi |  W d    d S 1 s1w   Y  d S t||fi | }t|tt	|}t
|| d S )N)r   r2   r   rN   rU   rU   )r   r/   r   r   	   )abrS   deindexri   )r   r   r   rk   rl   rm   r   pduniquer   r   r   )kwargsrn   r;   valuesr"   r#   r$   r$   r%   test_cut_duplicates_biny  s   "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   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   rU   )r   r   flags	writeabler   r9   r   )array_1_writeablearray_2_writeablearray_1array_2hundred_elementsr$   r$   r%   test_cut_read_only  s   
r   convc                 C      t | S rz   )r
   vr$   r$   r%   r         c                 C   r   rz   )r   r   r$   r$   r%   r     r   c                 C   s
   t | S rz   )r   
datetime64r   r$   r$   r%   r     s   
 c                 C   s   t |  S rz   )r
   to_pydatetimer   r$   r$   r%   r     s    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   r2   Tr3   c                    s   g | ]} |qS r$   r$   ).0r   r   r$   r%   
<listcomp>  s    z%test_datetime_bin.<locals>.<listcomp>rJ   )r   r   r   r   r   r
   r   r   r   r   r   )r   r!   bin_datar#   r;   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r1t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/   Tr0   ry   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:00r3   )r   r   r   listr   r   from_arraysr   r   r   r   )	unitr   r!   r"   _rF   rA   exp_intervalsr#   r$   r$   r%   test_datetime_cut  s*   


r   c                 C   st   | t dt dt dt dg}ttdddd}d	}tjt|d
 t|| W d    d S 1 s3w   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rw   tzz9Cannot use timezone-naive bins with timezone-aware valuesri   )r
   r   r   rk   rl   rm   r   )r   r;   r   rn   r$   r$   r%   +test_datetime_tz_cut_mismatched_tzawareness  s   "r	  r;   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   Tr3   )r   r   
isinstanceintr   r   r   r
   r   r   r   r   )r;   r   r  r   r"   r#   r$   r$   r%   test_datetime_tz_cut   s2   







r  c                  C   sP   d} t jt| d ttdddg dd W d    d S 1 s!w   Y  d S )Nz bins must be of datetime64 dtyperi   r  r/   rv   r   r2   r   rJ   )rk   rl   rm   r   r   rn   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 )	N20130102r   rv   r  r2   rJ   F)FTTTT)r   r   rM   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 )N20180101r/   )rw   r  r   r2   Tr0   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   tz_localizere   )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 )N1dayr/   rv   r2   Tr0   )z0 days 23:57:07.200000z2 days 00:00:00z3 days 00:00:00)r   r   r   r   r   r	   re   )r   r"   r  r#   r  r$   r$   r%   test_timedelta_cut_roundtrip^  s   
r  rN   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   rU   )FTTFTr   )r   r   )r;   r   comparedata_expecteddata_resultr#   r"   r$   r$   r%   test_cut_bool_coercion_to_intl  s
   r   )r}   r   Tc                 C   sN   t d}d}tjt|d t|d| d W d    d S 1 s w   Y  d S )Nr   zJBin labels must either be False, None or passed in as a list-like argumentri   r   r   )rO   rk   rl   rm   r   )r   r   rn   r$   r$   r%   test_cut_incorrect_labels~  s
   "r!  )r   r   rV   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 )	Nr2   r   rU   rb   )sizeInt64r   )rA   r"  )r   r   r   integersr   floatr   r   r   r   r   r9   )r;   rA   r"  r   r"   r#   r$   r$   r%   test_cut_nullable_integer  s   r'  z3data, bins, labels, expected_codes, expected_labels)rV         )rh      r^   ra   )ABr+  )r   r   r   r+  r,  )r   r/   r   r   r2   r   rN   r   )r2   r   r   r2   )r2   r   r   r   c                 C   0   t | ||dd}tj||dd}t|| d S NFr;   r   r4   rL   r   r   rP   r   r9   r!   r;   r   expected_codesexpected_labelsr"   r#   r$   r$   r%   test_cut_non_unique_labels  
   	r5  )Cr,  r+  )r/   r   r   r2   c                 C   r.  r/  r1  r2  r$   r$   r%   test_cut_unordered_labels  r6  r8  c                  C   sN   d} t jt| d tddgg ddd W d    d S 1 s w   Y  d S )Nz.'labels' must be provided if 'ordered = False'ri   r   r/   r   F)r;   r4   rs   r  r$   r$   r%   3test_cut_unordered_with_missing_labels_raises_error  s   "r9  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   r2   r/   r   r   )r   r2   r   rN   )r   r   rS   Fr0  )r   r   r   r   rS   categoryr   )r   r   r   r   )r   r;   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    d S 1 s:w   Y  d S )Nvaluer2   r   r   ra   c                 S   s   g | ]}| d |d  qS )z - r   r$   )r   ir$   r$   r%   r     s    z(test_cut_no_warnings.<locals>.<listcomp>rU   Fi   )rA   r   group)
r   r   r   r   r%  rO   r   assert_produces_warningr   r<  )dfr   r$   r$   r%   test_cut_no_warnings  s
    "rB  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   r2   rA   rG   r/   r   )r   r   r2   r/   r   r:  )r   r   r   r  T)r;   r"  )r   r   cat
as_orderedr   r   r   )r#   r   r"   r$   r$   r%   .test_cut_with_duplicated_index_lowest_included  s   rE  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   rU   r   )12gMbXg#@rA   rG   g3@g33333=@gC@g     H@g33333M@g33333SQ@gS@gfffffFV@c   Tr3   r   )r   rO   r   value_countsheadtailr   r   CategoricalIndexr   r   r   r   assert_frame_equal)r   ser1ser2r"   r   r#   r$   r$   r%   *test_cut_with_nonexact_categorical_indices  s,   .rP  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 )
NrU   ra   r   )r2   r   rN   )r   r/   r   r   )r;   r   r   Tr3   )r
   r   r   rP   r   r9   )r   r"   r#   r$   r$   r%   $test_cut_with_timestamp_tuple_labels  s   rQ  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-271D)freqz
2022-02-26zM8[ns]rJ   r   Tr3   )
r   r
   r   r   r   r   rP   r   r9   r   )r;   r"   r#   r$   r$   r%   $test_cut_bins_datetime_intervalindex  s   rT  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   r2   r/   r   rN   r   r$  r   r-  )rK   r   r   r   r   rK   r2   r/   Tr3   rJ   )
r   r   NAr   r6   r   rP   r   r   r   )seriesr;   r<   r#   r"   r$   r$   r%   test_cut_with_nullable_int64  s   
rW  )bnumpyr   rk   pandasr   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.api.typesr   pandas.core.reshape.tilecorereshaper   r   r&   markparametrizer   r   r=   rE   rI   rT   rg   rp   ru   minmaxrd   iinfor   timedelta64r|   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	  
tz_convertr  r  r  r  r  r   r9   assert_equalr   r!  r'  r5  r8  r9  r;  rB  rE  rP  rQ  rT  rW  r$   r$   r$   r%   <module>   s   H
	
"






2
"


		
	 


	



		

	
&


	

  
	  
	
		