o
    EhB                  %   @   s<  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZ d dlmZmZmZ ej dg dd	d
 Z!ej dg g dej"g ddfddgdej"ddgddfddge#eej$ddge#dfddge%deej$ddge%ddfej$g e#ddeej$g e#dfej$ddgdddej"ddgddfej$ddgdddej"ddgddfddgdeej$ddgddfddgdeej$ddgej&dfej$ddgej'ddeej$ddgej'dfeej$ddgej(ddeej$ddgej(dfe
)dde
)ddgdeddgddfe
)ddge
*dedgddfddge%dej"ej$ddgddddfddge%dej"ej$ddgddddfej$ddgdddej"ej$ddgddddfe
+ddge%dej"ddgddfe
+ddgdej"ddgddfddge%dej"ddgddfddge
j,dd ej"ddge
j,dd dfd!d"ge%d#ej"d!d"gd$dfe
-d!d"ge%d#ej"d!d"gd$dfej$ddgd%de%d&ej"ej$ddgd%dd%dfe
-d!d"gdej"d!d"gd$dfej.ej/d'ej&d0d%e%d%ddej.ej/d'ej&d0d%e%d%dfej.ej/d'ej&d0d%e%d%de%d%ej.ej/d'ej&d0d%e%d%dfd(d)gd*e
1d(d)gfd(d)ge
j2dd+d,e
j1d(d)gd+d,fe
3dde
3d-d.gd/e4d0d1gfd dgd2ed dgddfddgd3e
j$ddgd3dfe
5ddgdeej$ddgej&dfd(dgd4e
6 7 j"d(dge
6 dfd(dgd5e re
j6ej8d67 j"d(dge
j6ej8d6dnee$d(d7gfd(dge
6 e
6 7 j"d(dge
6 dfd(dge
j6ej8d6e
j6ej8d67 j"d(dge
j6ej8d6dfej$d(d)ge9de
6 e
6 7 j"d(d)ge
6 dfej$d(d)ge9de
j6ej8d6e
j6ej8d67 j"d(d)ge
j6ej8d6dfd+dgd8ej"d+dgd8dfd+dge
: ej"d+dgd8dfe
;ddgdeej$ddgej&dfe
5e
j1d(d)gg d9d:de
j1d(d)gg d9d:fe<d e<dgd;ed dgfeddgddd*e
1e
)dde
)ddgfd<d= Z=d>d? Z>e?dZ@ej d@e
)dde
)ddgeddgddfe
3d de
3ddgeAg dAfe
Bde
Bdgej"ddgddfe  dBdde  dCddgej"ddgddfej$ddgdde"ej$ddgddfej$ddgdDdej.ej$ddgdDde%dDdfe
jBddd e
jBddd gej"ddge
j,ddEdFdfe j dBdde@dGe j dCdde@dGgej"ddge
j,e@dEdFdfe
Cd!e
Cd"gej"d!d"gd$dfej$ddgd$de"ej$ddgd$dfej$ddgdHde"ej$ddgdHdfddgej"ddgddfddgej"ddgddfde
jDgej"de
jDgddfdej8gej"dej8gddfdIdJgej"dIdJgddfdIdgej"dIe
jDgddfdIej8gej"dIe
jDgddfdIe
jDgej"dIe
jDgddfddgej"ddgddfddgej"de
jDgddfdej8gej"de
jDgddfde
jDgej"de
jDgddfddgej"ddgddfdej8dgej"g dKddfd(d)ge
6 7 j"d(d)ge
6 dfd(dge
6 7 j"d(dge
6 dfej$d(d)ge9de
6 7 j"d(d)ge
6 dfd+dLgej"d+dLgd8dfd+dgej"d+dgd8dfgdMdN ZEej dOe
)dde
)ddPge
j3d ddQdRe
j3dddSdRge
jBddd e
jBddTd ge
jBddd e
Bdge$e
Bde
jBddd ggdUdV ZFej dOe$d gdWdX ZGdYdZ ZHd[d\ ZId]d^ ZJeG d_d` d`eZKG dadb dbeZLdcdd ZMdedf ZNdS )g    N)using_string_dtype)register_extension_dtype)BooleanArrayDatetimeArrayFloatingArrayIntegerArrayIntervalArraySparseArrayTimedeltaArray)NumpyExtensionArrayperiod_array)DecimalArrayDecimalDtype
to_decimal
dtype_unit)zM8[h]M8[m]zm8[h]r   c                 C   sV   t | }d}tjtt|d tjg |d W d    d S 1 s$w   Y  d S )Nzdatetime64 and timedelta64 dtype resolutions other than 's', 'ms', 'us', and 'ns' are deprecated. In future releases passing unsupported resolutions will raise an exception.matchdtype)	npr   tmZassert_produces_warningFutureWarningreescapepdarray)r   Z	dtype_varmsg r   >lib/python3.10/site-packages/pandas/tests/arrays/test_array.pytest_dt64_array"   s   
"r    zdata, dtype, expectedZFloat64r         ZInt64Zfloat32      ?       @int64Zfloat64Z2000DZ2001z	Period[D])Zfreqzdatetime64[ns]zM8[ns]zdatetime64[s]zM8[s]ZCET)tzZ1hZ2hztimedelta64[ns]zm8[ns]zm8[s]ztimedelta64[s]   abcategoryT)Zordered      interval)r!   r"   )r,   r-   zSparse[int64]ZInt16stringstr)na_valueNoneZboolean)r)   r*   c)
categoriesdecimalc                 C   s   t j| |d}t|| d S Nr   r   r   r   assert_equal)datar   expectedresultr   r   r   
test_array0   s    sr<   c                  C   sv   t ddg} tj| | jd}t| |rJ tj| | jdd}t| |r(J tj| | jdd}t| |s9J d S )Nr!   r"   r   Tr   copyF)r   r   r   r   r   Zshares_memory)r)   r*   r   r   r   test_array_copy&  s   r?   zdata, expected)r   r!   r"   i  i  zM8[us]ns)r'   Zunit)Ztzinfozm8[us]g?g?)r#   Nr$   Fc                 C   s   t | }t|| d S )Nr7   )r9   r:   r;   r   r   r   test_array_inference8  s   
irA   r9   Yleft)closedrightZUTCc                 C   s,   t | }ttj| td}t|| d S r6   )r   r   r   r   objectr   Zassert_extension_array_equal)r9   r;   r:   r   r   r   test_array_inference_fails  s   
rG   c                 C   sB   t jtdd tj| dd W d    d S 1 sw   Y  d S )Nz)NumpyExtensionArray must be 1-dimensionalr   r%   r   pytestraises
ValueErrorr   r   )r9   r   r   r   test_nd_raises  s   "rL   c                   C   s>   t jtdd td W d    d S 1 sw   Y  d S )NzCannot pass scalar '1'r   r!   rH   r   r   r   r   test_scalar_raises  s   "rM   c                  C   s`   t jddgddggddgd} d}tjt|d	 t |  W d    d S 1 s)w   Y  d S )
Nr!   r"   r,   r-   AB)columnsz'Cannot pass DataFrame to 'pandas.array'r   )r   Z	DataFramerI   rJ   	TypeErrorr   )Zdfr   r   r   r   test_dataframe_raises  s
   "rR   c                   C   sF   t jtdd tjg ddd W d    d S 1 sw   Y  d S )Nz6cannot safely cast non-equivalent int(32|64) to uint16r   )r"   r,   ZUInt16r   )rI   rJ   rQ   r   r   r   r   r   r   test_bounds_check  s
   "rT   c                   @   s   e Zd ZdZedd ZdS )DecimalDtype2decimal2c                 C   s   t S )zq
        Return the array type associated with this dtype.

        Returns
        -------
        type
        )DecimalArray2)clsr   r   r   construct_array_type  s   	z"DecimalDtype2.construct_array_typeN)__name__
__module____qualname__nameclassmethodrY   r   r   r   r   rU     s    rU   c                       s(   e Zd Zeddd fdd
Z  ZS )rW   NFr=   c                   s,   t |tjtjfrtdt j|||dS )N3scalars should not be of type pd.Series or pd.Indexr=   )
isinstancer   SeriesIndexrQ   super_from_sequence)rX   Zscalarsr   r>   	__class__r   r   rd     s   zDecimalArray2._from_sequence)rZ   r[   r\   r^   rd   __classcell__r   r   re   r   rW     s    rW   c                 C   s   | }|t dt dg}t }tjtdd tj||d W d    n1 s*w   Y  tj	|dd}tj|j
|d}t|| d S )N12r_   r   r   rV   )r5   DecimalrU   rI   rJ   rQ   rW   rd   r   r   valuesr   r8   )Zindex_or_seriesZboxr9   r   r;   r:   r   r   r   test_array_unboxes  s   rl   c                  C   s@   t jt jdgdd} | jdtd}tddg}t|| d S )Nr!   zstring[python]r   T)r1   r   )r   r   NAZto_numpyboolr   r   Zassert_numpy_array_equal)Zarrr;   r:   r   r   r   test_array_to_numpy_na  s   ro   )OZdatetimer5   r   Znumpyr   rI   ZpytzZpandas._configr   Zpandasr   Zpandas._testingZ_testingr   Zpandas.api.extensionsr   Zpandas.arraysr   r   r   r   r   r	   r
   Zpandas.core.arraysr   r   Zpandas.tests.extension.decimalr   r   r   ZmarkZparametrizer    rd   rF   r   r   r%   Zfloat16Zint32ZPeriodZPeriodDtypeZDatetimeIndexZDatetimeTZDtypeZTimedeltaIndexZ_simple_newZarangeviewZCategoricalZCategoricalDtypeZIntervalZfrom_tuplesra   ZStringDtyperY   nanr0   ZBooleanDtyperb   rj   r<   r?   timezoneZcetZfrom_breaksZ	TimestampZ	Timedeltarm   rA   rG   rL   rM   rR   rT   rU   rW   rl   ro   r   r   r   r   <module>   s
   $	
 %+17>ELQV\
dinu{                &  -  6  =  E  M  U  Z  &_  b   g  j  
r
$

h

	