o
    Ti(                     @   sZ  d dl m Z  d dlZd dlZd dlmZ d dlm  mZ	 d dl
Zd dlmZ d dlmZ d dlmZmZ d dlmZ ejdd Zejd	d
 Zejdddgdd Zdd Zdd Zdd Zejdd ddeddgfddeddgfdddgfd ddedgfd ddgfddedgfgdd Z ejddd d d d!d d"d d#d gd$d% Z!d&d' Z"ejdg d(g d)d*g d+g d)d*e#g d,e#g d+e#g d)d-gd.d/ Z$d0d1 Z%d2d3 Z&d4d5 Z'd6d7 Z(e	)d8d9d: Z*ejdi d;g igd<d= Z+dJd?d@Z,ejdAdBdCgejdDg dEdFdG Z-dHdI Z.dS )K    )datetimeN)iNaT)PandasColumn)ColumnNullType	DtypeKindfrom_dataframec                   C   s.   t jtdd ddt jtdd dddS )NZtestdata   T)orderedF)r
   	unordered)pdCategoricallist r   r   b/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/interchange/test_impl.pydata_categorical   s   r   c                   C   s   dddddt jgiS )Nseparator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad|)npnanr   r   r   r   string_data   s   r   data)r
   T)r   Fc                 C   s   t d|| d  i}| d}|jd tjksJ |jdks#J |jt	j
dfks-J | dks5J |j}|d | d ksBJ |d du sJJ t|d tsSJ t|d jt g d	 t|t|  d S )
NAr      Z
is_orderedZis_dictionaryT
categories)adest)r   	DataFrame__dataframe__get_column_by_namedtyper   ZCATEGORICAL
null_countdescribe_nullr   USE_SENTINELZ
num_chunksZdescribe_categorical
isinstancer   tmZassert_series_equalZ_colZSeriesassert_frame_equalr   )r   r   dfcolZdesc_catr   r   r   test_categorical_dtype(   s   r,   c                  C   sl   t dd} g d}| d| | i}| }t|}tj|g dd}t	d|i}t
|| d S )Npyarrow11.0.0)	MonTuer/   Wedr/   ThuFriSatSunweekday)r/   r0   r1   r2   r3   r4   r5   )r   )pytestimportorskiptablearraydictionary_encoder!   r   r   r   r    r(   r)   )paarrr9   exchange_dfresultr6   expectedr   r   r   test_categorical_pyarrow<   s   rA   c                  C   sj   t dd} d g}| d| |d i}| }tjj	|}t
dttjgi}t|| d S )Nr-   r.   r=   Zfloat64)r7   r8   r9   r:   r;   r!   r   apiinterchanger   r    r   r   r   r(   r)   r<   r=   r9   r>   r?   r@   r   r   r   test_empty_categorical_pyarrowK   s   rE   c                  C   sv   t dd} ddg}| d| |di}| }t|}tdddgi}t	|| | j
| j||s9J d S )Nr-   r.   r/   r0   r6   Zlarge_string)r7   r8   r9   r:   r!   r   r   r    r(   r)   TableequalsrC   rD   r   r   r   test_large_string_pyarrowW   s   rH   )offsetlengthexpected_valuesffffff
@r    @r      c           	      C   sr   t dd}g d}|d|i| |}| }t|}td|i}t	|| |j
|j||s7J d S )Nr-   r.   )rL   NrM   r=   )r7   r8   r9   slicer!   r   r   r    r(   r)   rF   rG   rC   )	rI   rJ   rK   r<   r=   r9   r>   r?   r@   r   r   r   test_bitmasks_pyarrowf   s   rP   c                   C      t jdddS )NrN   id   r   randomdefault_rngintegersr   r   r   r   <lambda>       rW   c                   C   rQ   )NrN   r   rR   rS   r   r   r   r   rW      rX   c                   C   s   t jd S )NrN   )r   rT   rU   r   r   r   r   rW      s    c                   C   s   t jdddgS )NrN   TF)r   rT   rU   choicer   r   r   r   rW      s    c                   C   s>   t tjdddtjdddtjddddS )NrN   il  i4  r         )yearmonthday)r   r   rT   rU   rV   r   r   r   r   rW      s
    c                    s   d\  fddt  D t}| }|  ks"J | ks*J t| t ks8J d}t	fdd|D }t
||}t
||}t|| t|jd tscJ t|jd tsmJ d S )N)
   r[   c                    s>   i | ]}d t | d    d  fddtD qS )r+   rN   r   c                    s   g | ]}  qS r   r   ).0_r   r   r   
<listcomp>   s    z-test_dataframe.<locals>.<dictcomp>.<listcomp>)intrange)r`   iZNCOLSZNROWSr   r   r   
<dictcomp>   s    0z"test_dataframe.<locals>.<dictcomp>)r   rN   c                 3   s     | ]}t   | V  qd S )N)r   keys)r`   idxrb   r   r   	<genexpr>   s    z!test_dataframe.<locals>.<genexpr>Z_INTERCHANGE_PROTOCOL_BUFFERS)re   r   r    r!   Znum_columnsZnum_rowsr   Zcolumn_namesri   tupler   Zselect_columnsZselect_columns_by_namer(   r)   r'   attrs)r   r*   df2indicesnamesr?   r@   r   rg   r   test_dataframe   s    
rq   c                     s   t tg dtg dtg dd   } tjd fdd jD }| D ]\}} j	j
tt |dd	 }d  j||f< q1  } | d
j|d
 ks]J | dj|d ksiJ | dj|d ksuJ d S )N)      ?g       @g      @g      @        )      ?      @      @g      @r   )rr   rs   rr   rr   rr   xyzrN   c                    s    i | ]}|j d t dqS )r   )lowhigh)rV   len)r`   r+   r*   rngr   r   rh      s     z,test_missing_from_masked.<locals>.<dictcomp>F)sizereplacerx   ry   rz   )r   r    r   r:   r!   rT   rU   columnsitemsindexrY   Zaranger}   locr"   r$   )rn   Z	dict_nullr+   Z	num_nullsZnull_idxr   r~   r   test_missing_from_masked   s$   r   )rt   ru   rv   )ffffff"@      %@皙'@)rx   ry   )r   rN   r   )TTFrw   c                 C   s6   t | }| }|jD ]}||jdksJ qd S )Nr   )r   r    r!   r   r"   r$   )r   r*   rn   col_namer   r   r   test_mixed_data   s
   

r   c                  C   s\   t tg dtg dtg dd} |  }| jD ]}||jdks+J qd S )N)TNFNT)NrN   Nr   rN   )r   r   Nr   Nrw   rN   )r   r    r   r:   r!   r   r"   r$   )r*   rn   r   r   r   r   test_mixed_missing   s   
r   c                 C   s   | d dg }t d|i}| d}| dksJ |jdks$J |jd tjks.J |j	t
jdfks8J |dd  }| d}| dksMJ |jdksTJ |jd tjks^J |j	t
jdfkshJ d S )Nr    r      r   r      )r   r    r!   r"   r   r$   r#   r   STRINGr%   r   ZUSE_BYTEMASK)r   Ztest_str_datar*   r+   Z	df_slicedr   r   r   test_string   s   r   c                  C   sZ   t dg di} |  d}tjtdd |j W d    d S 1 s&w   Y  d S )Nr   )r   r_   rr   r   znot supported yetmatch)r   r    r!   r"   r7   raisesNotImplementedErrorr#   r*   r+   r   r   r   test_nonstring_object   s
   "r   c                  C   s   t dt dt jgi} |  d}| dksJ |jdks#J |jd t	j
ks-J |jtjtfks7J t| t|   d S )Nr   z
2022-01-01rN   r   r   )r   r    	TimestampNaTr!   r"   r   r$   r#   r   ZDATETIMEr%   r   r&   r   r(   r)   r   r   r   r   r   test_datetime   s   r   z1.23c                  C   s^   t dt g di} |  d}t| d d }tjg ddd}t	
|| d S )Nr   )r   br   r   r   )r   r   r   Zint8)r#   )r   r    r   r!   r"   r   Zfrom_dlpackZget_buffersr:   r(   Zassert_numpy_array_equal)r*   r+   r?   r@   r   r   r    test_categorical_to_numpy_dlpack
  s
   r   r   c                 C   sB   t dd ddlm} t| }||}t|}t|| d S )Nr-   r.   r   r   )r7   r8   Zpyarrow.interchanger   r   r    r(   r)   )r   Zpa_from_dataframer@   Zarrow_dfr?   r   r   r   test_empty_pyarrow  s   
r   returnc                  C   s~   t dd} | g dg dg}dg}| j|g|d}t jtdd tjjj	|d	d
 W d    d S 1 s8w   Y  d S )Nr-   r.   )rN   rN      )r   r   rR   n_legs)rp   zHTo join chunks a copy is required which is forbidden by allow_copy=Falser   F)Z
allow_copy)
r7   r8   Zchunked_arrayr9   r   RuntimeErrorr   rB   rC   r   )r<   r   rp   r9   r   r   r   test_multi_chunk_pyarrow   s   "r   tzUTCz
US/Pacificunit)r   msusnsc                 C   sB   t jdddd| |}t d|i}t|t|  d S )Nz
2018-01-01r   D)ZperiodsfreqZts_tz)	r   Z
date_rangeZtz_localizeZas_unitr    r(   r)   r   r!   )r   r   Ztz_datar*   r   r   r   test_datetimetzdtype-  s   r   c                  C   s   t dd} dd lm} | tdddd tdddg}||d}| d|i}| }t	|}t
jg d	dgd
d}t|| d S )Nr-   r.   r   i  r   rN   zAsia/Kathmandur=   )z2020-01-01 00:00:00+05:45r   z2020-01-02 00:00:00+05:45zdatetime64[us, Asia/Kathmandu])r   r#   )r7   r8   Zpyarrow.computeZcomputer:   r   Zassume_timezoner9   r!   r   r   r    r(   r)   )r<   Zpcr=   r9   r>   r?   r@   r   r   r   )test_interchange_from_non_pandas_tz_aware8  s    r   )r   N)/r   numpyr   r7   Zpandas._libs.tslibsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   Zpandas._testingZ_testingr(   Zpandas.core.interchange.columnr   Z*pandas.core.interchange.dataframe_protocolr   r   Z&pandas.core.interchange.from_dataframer   Zfixturer   r   markZparametrizer,   rA   rE   rH   floatrP   rq   r   r:   r   r   r   r   r   Zskip_if_np_ltr   r   r   r   r   r   r   r   r   <module>   s    








	

	