
    d                      H   d dl m Z  d dlZd dlZd dlZd dlmZ d dlmc 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         ed          dz  d	
           ej         ed          dz  d
          dZd\  ZZd Z ed           Z ed           Z ed           Z ed           Z  ed           Z!dddddej"        giZ#ej$        %                    dddg          d             Z&d Z'd Z(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&             Z+ej$        %                    deee ee!g          d'             Z,d( Z-ej$        %                    dg d)g d*d+g d,g d*d+ ej.        g d-           ej.        g d,           ej.        g d*          d.g          d/             Z/d0 Z0d1 Z1d2 Z2d3 Z3 e
j4        d4          d5             Z5dS )6    )datetimeN)iNaT)PandasColumn)ColumnNullType	DtypeKind)from_dataframetestdata   T)orderedF)r   	unordered)d      c                 D      fdt          t                    D             S )Nc                     i | ]I}d t          |t          dz  z
  t          z  dz              fdt          t                    D             JS )col      c                 $    g | ]}             S  r   ).0_make_ones     ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/interchange/test_impl.py
<listcomp>z)_make_data.<locals>.<dictcomp>.<listcomp>   s    2T2T2T!88::2T2T2T    )intNCOLSrangeNROWS)r   ir   s     r   
<dictcomp>z_make_data.<locals>.<dictcomp>   sh        	1c1uqy=E)A-..002T2T2T2TuU||2T2T2T  r   )r   r   )r   s   `r   
_make_datar"      s4       u   r   c                  ,    t          j        dd          S )Nir   randomrandintr   r   r   <lambda>r'   "   s    fnT377 r   c                  ,    t          j        dd          S )Nr   r   r$   r   r   r   r'   r'   #   s    v~a55 r   c                  .    t          j        ddg          S )NTF)r%   choicer   r   r   r'   r'   $   s    v}dE];; r   c                  (    t          j                     S N)r%   r   r   r   r'   r'   %   s     r   c                      t          t          j        dd          t          j        dd          t          j        dd                    S )Nil  i4  r         )yearmonthday)r   r%   r&   r   r   r   r'   r'   '   sB    H^D$''nQ##N1b!!   r   separator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad|data)r   T)r   Fc                    t          j        dt          | 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    sJ |j        }|d         | d         k    sJ |d         du sJ t          |d         t                    sJ t!          j        |d         j        t          j        g d	                     t!          j        |t+          |                                                     d S )
NAr   r   
is_orderedis_dictionaryT
categories)adest)pd	DataFrametest_data_categorical__dataframe__get_column_by_namedtyper   CATEGORICAL
null_countdescribe_nullr   USE_SENTINEL
num_chunksdescribe_categorical
isinstancer   tmassert_series_equal_colSeriesassert_frame_equalr   )r4   dfr   desc_cats       r   test_categorical_dtyperT   9   sX   	s247;=	>	>B





/
/
4
4C9Q<900000>Q!<b AAAAA>>q    'HL!T!W,,,,O$,,,,h|,l;;;;;#RY/H/H/H%I%I   "nR-=-=-?-?@@AAAAAr   c                  |   t          j        dd          } g d}|                     d|                     |                                          i          }|                                }t          |          }t          j        |g d          }t          j	        d|i          }t          j        ||           d S )Npyarrow11.0.0)	MonTuerX   WedrX   ThuFriSatSunweekday)rX   rY   rZ   r[   r\   r]   r^   )r:   )pytestimportorskiptablearraydictionary_encoderC   r   r@   CategoricalrA   rM   rQ   )paarrrb   exchange_dfresultr_   expecteds          r   test_categorical_pyarrowrk   M   s    		Y	1	1B
I
I
ICHHi#!@!@!B!BCDDE%%''KK((FnIII  G |Y011H&(+++++r   c                     t          j        dd          } d g}|                     d|                     |d                                          i          }|                                }t          j        j        	                    |          }t          j
        dt          j        t          j        g          i          }t          j        ||           d S )NrV   rW   rg   float64)r`   ra   rb   rc   rd   rC   r@   apiinterchanger   rA   re   npnanrM   rQ   rf   rg   rb   rh   ri   rj   s         r   test_empty_categorical_pyarrowrs   \   s    		Y	1	1B&CHHeRXXc955GGIIJKKE%%''KV..{;;F|UBNBF8$<$<=>>H&(+++++r   c                     t          j        dd          } ddg}|                     d|                     |d          i          }|                                }t          |          }t          j        dddgi          }t          j	        ||           | j
                            | j                            |          |          sJ d S )NrV   rW   rX   rY   r_   large_string)r`   ra   rb   rc   rC   r   r@   rA   rM   rQ   Tableequalsro   rr   s         r   test_large_string_pyarrowrx   h   s    		Y	1	1B%.CHHi#~!>!>?@@E%%''KK((F|Y788H&(+++ 8??2>88@@%HHHHHHHr   )offsetlengthexpected_valuesffffff
@rq    @r   r   c                    t          j        dd          }g d}|                    d|i                              | |          }|                                }t          |          }t          j        d|i          }t          j	        ||           |j
                            |j                            |          |          sJ d S )NrV   rW   )r|   Nr}   rg   )r`   ra   rb   slicerC   r   r@   rA   rM   rQ   rv   rw   ro   )	ry   rz   r{   rf   rg   rb   rh   ri   rj   s	            r   test_bitmasks_pyarrowr   w   s     
	Y	1	1B


CHHeS\""((88E%%''KK((F|UO455H&(+++ 8??2>88@@%HHHHHHHr   c                     t          j                   }|                                }|                                t          k    sJ |                                t          k    sJ t          |                                          t           	                                          k    sJ d}t           fd|D                       }t          |                    |                    }t          |                    |                    }t          j        ||           t!          |j        d         t                    sJ t!          |j        d         t                    sJ d S )N)r   r   c              3   f   K   | ]+}t                                                    |         V  ,d S r,   )listkeys)r   idxr4   s     r   	<genexpr>z!test_dataframe.<locals>.<genexpr>   s8      <<S$tyy{{##C(<<<<<<r   _INTERCHANGE_PROTOCOL_BUFFERS)r@   rA   rC   num_columnsr   num_rowsr   r   column_namesr   tupler   select_columnsselect_columns_by_namerM   rQ   rL   attrs)r4   rR   df2indicesnamesri   rj   s   `      r   test_dataframer      s@    
d		B




C??%%%%<<>>U""""  ""##tDIIKK'8'88888G<<<<G<<<<<EC..w7788Fc88??@@H&(+++fl#BCTJJJJJhn%DEtLLLLLLLr   c            	         t          j        t          j        g d          t          j        g d          t          j        g d          d                                          } t          j                            d          fdj        D             }|                                D ]S\  }}j	        
                    t          j        t                              |d                   }d j        ||f<   T                                } |                     d	          j        |d	         k    sJ |                     d
          j        |d
         k    sJ |                     d          j        |d         k    sJ d S )N)r   r         r   )      ?      @      @g      @r   )TFTTTxyz*   c           	      Z    i | ]'}|                     d t                              (S )r   )lowhigh)r&   len)r   r   rR   rngs     r   r!   z,test_missing_from_masked.<locals>.<dictcomp>   s1    MMM3ckkac"ggk66MMMr   F)sizereplacer   r   r   )r@   rA   rp   rc   rC   r%   RandomStatecolumnsitemsindexr*   aranger   locrD   rG   )r   	dict_nullr   	num_nullsnull_idxrR   r   s        @@r   test_missing_from_maskedr      s   	///**11122999::	
 	

 
B 



C
)


#
#CMMMMM"*MMMI#//++ % %Y8JJryR))	5JII
 !%x}




C!!#&&1Ys^CCCC!!#&&1Ys^CCCC!!#&&1Ys^CCCCCCr   )r   r   r   )ffffff"@      %@皙'@)r   r   )r   r   r   )TTFr   c                     t          j        |           }|                                }|j        D ]"}|                    |          j        dk    sJ #d S )Nr   )r@   rA   rC   r   rD   rG   )r4   rR   r   col_names       r   test_mixed_datar      sh     
d		B




CJ @ @%%h//:a?????@ @r   c                  *   t          j        t          j        g d          t          j        g d          t          j        g d          d          } |                                 }| j        D ]"}|                    |          j        dk    sJ #d S )N)TNFNT)Nr   Nr   r   )r   r   Nr   Nr   r   )r@   rA   rp   rc   rC   r   rD   rG   )rR   r   r   s      r   test_mixed_missingr      s    	999::///0077788	
 	

 
B 



CJ @ @%%h//:a?????@ @r   c                  x   t           d         dgz   } t          j        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    sJ |dd          }|                                                    d          }|                                dk    sJ |j        dk    sJ |j        d         t          j	        k    sJ |j
        t          j        dfk    sJ d S )Nr3    r6      r   r      )string_datar@   rA   rC   rD   r   rG   rE   r   STRINGrH   r   USE_BYTEMASK)test_str_datarR   r   	df_sliceds       r   test_stringr      s5    01RD8M	sM*	+	+B





/
/
4
4C88::????>Q9Q<9+++++!<a @@@@@122I

!
!
#
#
6
6s
;
;C88::????>Q9Q<9+++++!<a @@@@@@@r   c                      t          j        dg di          } |                                                     d          }t	          j        t          d          5  |j         d d d            d S # 1 swxY w Y   d S )Nr6   )r;   
   g      ?r   znot supported yet)match)r@   rA   rC   rD   r`   raisesNotImplementedErrorrE   rR   r   s     r   test_nonstring_objectr      s    	s.../	0	0B





/
/
4
4C	*2E	F	F	F  		                 s   A00A47A4c                     t          j        dt          j        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    sJ t          j        | t#          |                                                      d S )Nr6   z
2022-01-01r   r   r   )r@   rA   	TimestampNaTrC   rD   r   rG   rE   r   DATETIMErH   r   rI   r   rM   rQ   r   r   s     r   test_datetimer      s    	sR\,77@A	B	BB





/
/
4
4C88::????>Q9Q<9-----!<d CCCCC"nR-=-=-?-?@@AAAAAr   z1.23c                  f   t          j        dt          j        g d          i          } |                                                     d          }t          j        |                                d         d                   }t          j        g dd          }t          j
        ||           d S )Nr6   )r;   br;   r4   r   )r   r   r   int8)rE   )r@   rA   re   rC   rD   rp   from_dlpackget_buffersrc   rM   assert_numpy_array_equal)rR   r   ri   rj   s       r    test_categorical_to_numpy_dlpackr     s     
sBN???;;<	=	=B





/
/
4
4C^COO--f5a899Fx			000H11111r   )6r   r%   numpyrp   r`   pandas._libs.tslibsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr@   pandas._testing_testingrM   pandas.core.interchange.columnr   *pandas.core.interchange.dataframe_protocolr   r   &pandas.core.interchange.from_dataframer   re   r   rB   r   r   r"   int_data	uint_data	bool_data
float_datadatetime_dataNaNr   markparametrizerT   rk   rs   rx   floatr   r   r   rc   r   r   r   r   r   skip_if_np_ltr   r   r   r   <module>r      s\               $ $ $ $ $ $ ) ) ) ) ) ) ) ) )           7 7 7 7 7 7        B A A A A A r~dd:..3TBBBZ 0 02 5uEEE  
 u   :7788J5566	J;;<<	Z//00

   
 "35I!JKKB B LKB&, , ,	, 	, 	,I I I +	
D3ec*+	
D55<<%&	
D3%	
AUU5\\"#	
Au	
Ae~
 
I I
 
I 
Xy*iG M M M*D D D4 
oo$5$5$566ii///00---..)))$$+++,,	
 	
 @ @ @@ @ @A A A$  	B 	B 	B &2 2 2 2 2r   