o
    vhfJ                     @   s  d dl Zd dlZd dlmZ d dlmZ d dlmZ d dl	Z
d dl	mZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ G d	d
 d
Zej dej!d dgej"dej#dfe!ddgej#dfe
$ddge
j$dfe
j%ddgddedfe
j&ddgddee
j'j(j()dfe
j*+g dedfe
%ddgedfe
,d ged!fgd"d# Z-ej d$e!g d%gd&d' Z.d(d) Z/ej d*e
$ddgd+fej0d,d-gd.dd/fe
j!d ej1gd0dd1fe+d dgd2fed dgd3fe0ej!dd4gddd/fej0ej!d5d6gd7dedddd/fgd8d9 Z2d:d; Z3ej d<ej!dd4gej"dej!dd4gej"dd=fe
$ddgej!ddge4dd>fe
j'j5j6d,d-gd?de!e
j7d,d?de
j7d-d?dgd>fe
j!d ej1gd0de!d ej1gd>fe+g dej!e
8d de
8dd4ge4dd>fed dgej!d dgej"dd>fe0ej!d,d-gd7dej!d,d-gd7dd=fe0ej!d@dAgd7d9dB:de!edCddedDddgd>fe0ej!d dEgdFd;d!ej!d dEgd!dd=fe
$edGd4dHdIe!edGdHdedJdHdgd>fg
dKdL Z<ej dMd=d>gej d$ej!g d%ddej!g dNe4dgdOdP Z=ej dMd=d>gdQdR Z>ej dSg dTdUd g dVfed,ed,e
j?gded,e@dWgdX fgdYdZ ZAej d[g d\g d]eBdd^d_ej1d`gfg d\g d]eBej1d^d_ej1d`gfd^d_ej1d`gg daeCd g dbfed,ed,e
j?gd edcfd eddfded,fgded,e@dWgdX fgdedf ZDdgdh ZEej dig d%g dTdje!g d%e!dd4ej1gdje
!g d%e
!g dTdjgej dkeBej1fe4dfgdldm ZFej dnde
!g dTiej!d^gd_gej1ggeBdfg d%g d%djej!ddgd4d4gdXdXggeBdfgdodp ZGdqdr ZHG dsdt dtZIdS )u    N)HAS_PYARROW)np_version_gt2)DatetimeTZDtype)CategoricalIndexSeries	Timedelta	Timestamp
date_range)DatetimeArrayIntervalArrayNumpyExtensionArrayPeriodArraySparseArrayTimedeltaArray)StringArrayNumpySemantics)ArrowStringArrayNumpySemanticsc                   @   s  e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefdefgZej	
deej	j
ddd dd dd dd gg dddd Zej	
ddedfdedfdedfdedfgej	j
ddd d d d!d d"d gg ddd#d$ Zej	
ded%d& Zej	
dedefdefg d'd( Zej	j
dd)d d*d d+d d,d gg ddd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7S )8TestToIterableint8int16int32int64uint8uint16uint32uint64float16float32float64datetime64[ns]zdatetime64[ns, US/Eastern]ztimedelta64[ns]zdtype, rdtypemethodc                 C      |   S Ntolistx r&   _/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pandas/tests/base/test_conversion.py<lambda>6       zTestToIterable.<lambda>c                 C   r    r!   to_listr$   r&   r&   r'   r(   7   r)   c                 C      t | S r!   listr$   r&   r&   r'   r(   8   r)   c                 C      t |  S r!   r.   __iter__r$   r&   r&   r'   r(   9       )r#   r+   r.   iter)idsc                 C   s   |}|dkr-t |tjr-tjtdd |dg|d W d    d S 1 s&w   Y  d S |dg|d}||d }t||sAJ d S Nr   zfloat16 indexes are not match   dtyper   )
issubclasspdIndexpytestraisesNotImplementedError
isinstance)selfindex_or_seriesr   r:   rdtypetypsresultr&   r&   r'   test_iterable2   s   
zTestToIterable.test_iterablezdtype, rdtype, objobjectar8   categoryc                 C   r    r!   r"   r$   r&   r&   r'   r(   V   r)   c                 C   r    r!   r*   r$   r&   r&   r'   r(   W   r)   c                 C   r,   r!   r-   r$   r&   r&   r'   r(   X   r)   c                 C   r/   r!   r0   r$   r&   r&   r'   r(   Y   r2   c           	      C   s0   |}||g|d}||d }t ||sJ d S )Nr9   r   )rA   )	rB   rC   r   r:   rD   objrE   rF   rG   r&   r&   r'   !test_iterable_object_and_categoryJ   s   z0TestToIterable.test_iterable_object_and_categoryc                 C   sV   t dg|d}tt| \}}t||sJ tt| \}}t||s)J d S )Nr8   r9   )r   nextr3   itemsrA   )rB   r:   rD   rF   _rG   r&   r&   r'   test_iterable_itemsh   s
   z"TestToIterable.test_iterable_itemsc                 C   s   |}|dkr-t |tjr-tjtdd |dg|d W d    d S 1 s&w   Y  d S |dg|d}|td }t|t	sC|f}||v sIJ d S r5   )
r;   r<   r=   r>   r?   r@   maptyperA   tuple)rB   rC   r:   rD   rE   rF   rG   r&   r&   r'   test_iterable_mapt   s   

z TestToIterable.test_iterable_mapc                 C   r    r!   r"   r$   r&   r&   r'   r(      r)   c                 C   r    r!   r*   r$   r&   r&   r'   r(      r)   c                 C   r,   r!   r-   r$   r&   r&   r'   r(      r)   c                 C   r/   r!   r0   r$   r&   r&   r'   r(      r2   c                 C   s2   t tdtdg}||d }t|tsJ d S )Nz
1999-12-31z
2000-12-31r   )r   r   rA   )rB   r   irG   r&   r&   r'   test_categorial_datetimelike   s   z+TestToIterable.test_categorial_datetimelikec                 C   s   t dt dg}t|j|}|jd| dksJ t||D ]\}}t|t s+J |jd u s2J ||ks8J |j|ks?J q d S )N
2011-01-01
2011-01-02datetime64[]	r   r   dtas_unitr:   ziprA   tzunitrB   ra   valsserresexpr&   r&   r'   test_iter_box_dt64   s   z!TestToIterable.test_iter_box_dt64c                 C   s   t dddt dddg}t|j|}|jd| dksJ t||D ] \}}t|t s/J |j|jks7J ||ks=J |j|ksDJ q$d S )NrX   
US/Easternr`   rY   rZ   z, US/Eastern]r\   rb   r&   r&   r'   test_iter_box_dt64tz   s   

z#TestToIterable.test_iter_box_dt64tzc                 C   sv   t dt dg}t|j|}|jd| dksJ t||D ]\}}t|t s+J ||ks1J |j|ks8J q d S )Nz1 daysz2 daysztimedelta64[r[   )r   r   r]   r^   r:   r_   rA   ra   rb   r&   r&   r'   test_iter_box_timedelta64   s   z(TestToIterable.test_iter_box_timedelta64c                 C   st   t jdddt jdddg}t|}|jdksJ t||D ]\}}t|t js*J |jdks1J ||ks7J qd S )NrX   MfreqrY   z	Period[M]ME)r<   Periodr   r:   r_   rA   rn   )rB   rc   rF   re   rf   r&   r&   r'   test_iter_box_period   s   z#TestToIterable.test_iter_box_periodN)__name__
__module____qualname__intfloatr   r   dtypesr>   markparametrizerH   rI   rM   rQ   rU   rW   rg   rj   rk   rq   r&   r&   r&   r'   r      s    
	






r   zarr, expected_type, dtyper8   r9   r   rJ   brI   rK   20172018
US/Centralri   zdatetime64[ns, US/Central]i  i  Yrm   zY-DEC)r   r8      intervalr   l    d(	 zm8[ns]c                 C   sb   |r|dkrt r
tnt}t| j}t| j}t||u sJ t|t|u s)J t	|| d S )NrI   )
r   r   r   r   _valuesr<   r=   rS   tmassert_equal)arrexpected_typer:   using_infer_stringl_valuesr_valuesr&   r&   r'   test_values_consistent   s   

r   r   r8   r      c                 C   s&   t | }|j}t| }t|| d S r!   )r   arrayr   r   assert_extension_array_equal)r   rd   rG   expectedr&   r&   r'   test_numpy_array   s   r   c                 C   sf   t | d}|j}t| jdkrt|tsJ d S t| jdkr*t|ts(J d S t|ts1J d S )Nr9   rl   m)	r   r   npr:   kindrA   r
   r   r   )any_numpy_dtyperd   rG   r&   r&   r'   test_numpy_array_all_dtypes   s   
r   z	arr, attr_codes20002001z	period[D]_ndarrayInt64_data_left_sparse_valuesr   z2000-01-01T12:00:00z2000-01-02T12:00:00M8[ns]c                 C   s:   |}|| ddj }|rt| |} t||}|| u sJ d S )NFcopy)r   getattr)r   attrrC   requestboxrG   r&   r&   r'   
test_array   s   

r   c                  C   sT   t jdgddgg} d}tjt|d | j W d    d S 1 s#w   Y  d S )NArJ   rz   z&MultiIndex has no single backing arrayr6   )r<   
MultiIndexfrom_productr>   r?   
ValueErrorr   )idxmsgr&   r&   r'   test_array_multiindex_raises#  s
   "r   zarr, expected, zero_copyTFDz2000-01-01T06:00:00z2000-01-02T06:00:00UTC
2000-01-01
2000-01-02l     qai8z
2016-01-01z
US/Pacificperiodsr`   z
2016-01-02c                 C   s  |}t d  || }W d    n1 sw   Y  | }t || t|}t || tj|dd}tj|dd}t||rFJ tsJd S |sod}	t jt	|	d tj|dd W d    d S 1 shw   Y  d S tj|dd}
tj|dd}t|
|sJ d S )NTr   zGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changedr6   F)
r   assert_produces_warningto_numpyassert_numpy_array_equalr   asarrayr   may_share_memoryr   FutureWarning)r   r   	zero_copyindex_or_series_or_arrayr   thingrG   
result_cp1
result_cp2r   result_nocopy1result_nocopy2r&   r&   r'   test_to_numpy*  s*   <

"r   	as_series)rJ   rz   cc                 C   s   t j| dd}|rt|jdd}| }|r,| jtkr,|jjdkr,t	| |du s+J n
t	| |du s6J |jdd}|rT| jtkrT|jjdkrTt	| |du sSJ n
t	| |du s^J |jdd}t	| |du snJ d S )NFr   pyarrowT)
r<   r=   r   valuesr   r:   rI   storager   shares_memory)r   r   r   rL   rG   r&   r&   r'   test_to_numpy_copy  s   r   c                 C   s   d}t jddg|d}| rt|}| }tjtd|dtd|dgtd}t	|| |jdd}t	|| |jdd}tjdd	gdd}t	|| d S )
Nrh   r   r   ri   r9   rI   r   z2000-01-01T05z2001-01-01T05)
r<   DatetimeIndexr   r   r   r   r   rI   r   r   )r   ra   r`   rL   rG   r   r&   r&   r'   test_to_numpy_dtype  s   r   z!values, dtype, na_value, expected)r8   r   Nr   )      ?       @        z2000-01-01T00:00:00.000000000r   c                 C   s0   | |}|j ||d}t|}t|| d S Nr:   na_value)r   r   r   r   r   )rC   r   r:   r   r   rL   rG   r&   r&   r'   "test_to_numpy_na_value_numpy_dtype  s   
r   z+data, multiindex, dtype, na_value, expected)r8   r   N   ))r   rJ   )r   rz   )r8   rz   )r8   r   r   r   g      @))rJ   r   )rJ   r8   )rJ   r   )rz   r   )r8   r   r   r   20212022c                 C   s@   t j|}t| |d}|j||d}t|}t|| d S )N)indexr   )	r<   r   from_tuplesr   r   r   r   r   r   )data
multiindexr:   r   r   r   seriesrG   r&   r&   r'   (test_to_numpy_multiindex_series_na_value  s
   $
r   c                  C   s   t g d} d}tjt|d | jdd W d    n1 s w   Y  t g ddd} tjt|d | jdd W d    d S 1 sFw   Y  d S )Nr   z5to_numpy\(\) got an unexpected keyword argument 'foo'r6   T)foor   r9   )r   r>   r?   	TypeErrorr   )rF   r   r&   r&   r'   test_to_numpy_kwargs_raises  s   "r   r   )rJ   rz   zdtype, na_valuec                 C   sH   t | }|j||d}tjddgddgd|gg|d}t|| d S )Nr   r8   r   r   r9   )r<   	DataFramer   r   r   r   r   )r   r:   r   dfrG   r   r&   r&   r'    test_to_numpy_dataframe_na_value  s   
 r   zdata, expectedc                 C   s*   t | }|jttjd}t|| d S r   )r<   r   r   rv   r   nanr   r   )r   r   r   rG   r&   r&   r'   $test_to_numpy_dataframe_single_block  s   
r   c                  C   sL   t tddtjg} t tddtjg}| jdd t| | d S )Nr   r   r   )r   )r<   r   r   r   r   r   r   assert_frame_equal)rG   r   r&   r&   r'   .test_to_numpy_dataframe_single_block_no_mutate+  s   r   c                   @   s6   e Zd Zejdddgdd Zdd Zdd	 ZdS )
TestAsArrayr`   Nr}   c                 C   sx   t tdd|d}td  tj|td}W d    n1 s w   Y  ttd|dtd|dg}t	|| d S )Nr   r   r   r9   r   ri   r   )
r   r	   r   r   r   r   rI   r   r   r   )rB   r`   rd   rG   r   r&   r&   r'   test_asarray_object_dt644  s   z$TestAsArray.test_asarray_object_dt64c                 C   s<   t tddd}tjddgdd}t|}t|| d S )Nr   r   )r   r   r   r   r9   r   r	   r   r   r   r   r   )rB   rd   r   rG   r&   r&   r'   test_asarray_tz_naiveA  s   
z!TestAsArray.test_asarray_tz_naivec                 C   s`   d}t tdd|d}tjddgdd}tj|d	d}t|| tj|dd}t|| d S )
Nr}   r   r   r   z2000-01-01T06z2000-01-02T06r   r9   r   r   )rB   r`   rd   r   rG   r&   r&   r'   test_asarray_tz_awareI  s   z!TestAsArray.test_asarray_tz_aware)	rr   rs   rt   r>   rx   ry   r   r   r   r&   r&   r&   r'   r   3  s
    
r   )Jnumpyr   r>   pandas.compatr   pandas.compat.numpyr   pandas.core.dtypes.dtypesr   pandasr<   r   r   r   r   r	   pandas._testing_testingr   pandas.core.arraysr
   r   r   r   r   r   pandas.core.arrays.string_r   pandas.core.arrays.string_arrowr   r   rx   ry   r   r   ndarrayCategoricalr   PeriodIndexcorerw   PeriodDtypeIntervalIndexfrom_breaksTimedeltaIndexr   r   r   _from_sequencer   r   r   rI   arraysperiod_arrayrp   Intervaltz_localize
tz_convertviewr   r   r   NaT
datetime64r   rv   ru   r   r   r   r   r   r   r&   r&   r&   r'   <module>   sh     %



(  $  

	


;#$

	 
!
 
