
    bi$                     
   d dl Z d dlZd dlmZ d dlZ	 d dlZd dl
Zd dlmc mZ  ej                  d       Zej"                  j                   ej$                  ej&                  j(                  f       ej*                   ej,                  ed            d                      Zej"                  j                  ej"                  j1                  d ej2                         df ej4                         d	f ej6                         d
fg      ej"                  j1                  d ej8                         df ej:                         d	f ej<                         d
f ej>                         dfg      ej"                  j1                  d ej@                         d	df ejB                         d
df ejD                         ddfg      ej"                  j1                  dg d      ej"                  j1                  dg d      ej"                  j1                  dddg      d                                                  Z#d Z$d Z%ej"                  j1                  dddg      d        Z&ej"                  j1                  dddg      d        Z'ej"                  j1                  dddg      ej"                  j1                  ddgg d      d                Z(ej"                  j1                  dddg      ej"                  j1                  ddgg d      d!               Z)ej"                  jT                  ej"                  j1                  d" ej2                          ej4                          ej6                         g      ej"                  j1                  d# ej8                          ej:                          ej<                          ej>                         g      ej"                  j1                  d$ ej@                         df ejB                         df ejD                         dfg      ej"                  j1                  dddg      d%                                    Z+ej"                  j1                  d# ej8                          ej:                          ej<                          ej>                         g      ej"                  j1                  dddg      d&               Z,ej"                  j1                  d' ej8                         dd(f ej:                         d	d)f ej<                         d
d*f ej>                         dd+fg      d,        Z-y# e	$ r dZY 9w xY w)-    Nc                      t         j                  t         j                  z  t         j                  z  t         j                  z  t         j
                  z  t         j                  z  S N)pastsigned_integer_typesunsigned_integer_typesfloating_types	bool_typestring_typelarge_string_type     j/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/pyarrow/tests/interchange/test_interchange_spec.py<lambda>r       sZ    !!##	$	 		 			
 		 r   )suppress_health_check   sizec                 Z   t        j                  | gdg      }|j                         }|j                  d      j                  }|| j                  k(  sJ t        |t              sJ |j                  d      j                         dk(  sJ |j                  d      j                  dk(  sJ y )Nanamesr   r   )	patable__dataframe__
get_column
null_count
isinstanceintr   offset)arrr   dfr   s       r   test_dtypesr"   -   s     HHcU3%(E				Bq!,,J'''j#&&&==  "a'''==""a'''r   zuint, uint_bw          zint, int_bw@   zfloat, float_bw, np_float_strfloat16float32float64unit)smsusnstz) zAmerica/New_Yorkz+07:30z-04:30	use_batchFTc
                    ddl m }
 g d} |
ddd       |
ddd       |
ddd      g}t        j                  t        j                  || 	      t        j                  ||	      t        j                  t	        j                  |t	        j
                  |      
      |	      g dg dt        j                  |t        j                  ||      	      d      }|	r|j                         d   }|j                         }ddddddd}|j                         D ]a  \  }}|j                  |      }|j                  dk(  sJ |j                         dk(  sJ |j                  dk(  sJ |j
                  d   |k(  raJ  |j                  d      j
                  d   |k(  sJ |j                  d      j
                  d   |k(  sJ |j                  d      j
                  d   |k(  sJ y )Nr   )datetime      r   i              typedtype)TFT)r   r0   c)r/   )r   br?   defr5   r6            r   r   r@   r?   )r3   r   r   arraynpr>   	timestamp
to_batchesr   itemsget_column_by_namer   r   r   )uintuint_bwr   int_bwfloatfloat_bwnp_float_strr*   r/   r1   dtr    dt_arrr   r!   columnscolumnkindcols                      r   test_mixed_dtypesrY   ;   s   < (
Cq"or$24B@FHH#D)#C("((3bhh|.DEER$&r||DR'@A	
	E   "1%				B AABRbAG $##F+~~"""xxzQzzQyy|t###$   %++A.'999  %++A.&888  %++A.(:::r   c                      t        j                  dg di      } | j                         }|j                  d      }|j                  dk(  sJ t        |j                  t              sJ y )Nr   )g      ?Ng       @r5   )r   r   r   rL   r   r   r   r   r!   rX   s      r   test_na_floatr\   {   sZ    HHc+,-E				B



$C>>Qcnnc***r   c                      t        j                  dg di      } | j                         }|j                  d      }t	        j
                  t        d      5  |j                   d d d        y # 1 sw Y   y xY w)Nr   r4   z.*categorical.*)match)r   r   r   rL   pytestraises	TypeErrordescribe_categoricalr[   s      r   test_noncategoricalrc      s`    HHc9%&E				B



$C	y(9	: !  ! ! !s   A,,A5c                 L   dd l }g d} |j                  d |j                  |      j                         i      }| r|j	                         d   }|j                         j                  d      }|j                  }t        |d   t              sJ t        |d   t              sJ y )Nr   )	MonTuere   Wedre   ThuFriSatNweekday
is_orderedis_dictionary)
pyarrowr   rG   dictionary_encoderJ   r   rL   rb   r   bool)r1   r   r    r   rX   categoricals         r   test_categoricalrr      s    
HCBHH	HBHHSM3356E   "1%




2
29
=C**Kk,/666k/2D999r   c                    t        j                  g dg dg      }t        j                  g dg dg      }t        j                  ||gddg      }| r!|j                         j	                         d   }|j                         }|j                         d	k(  sJ |j                         d
k(  sJ | r|j                         dk(  sJ |j                         d	k(  sJ t        |j                               ddgk(  sJ t        |j                  d      j                               t        |j                  d      j                               k(  sJ y )N)r6   r6      )rt      d   )FlamingoParrotCow)HorsezBrittle stars	Centipeden_legsanimalsr   r   r6      r5   )r5   )r}   )r   chunked_arrayr   combine_chunksrJ   r   num_columnsnum_rows
num_chunkslistcolumn_namesselect_columnsselect_columns_by_name)r1   nr   r   r!   s        r   test_dataframer      s6   
)[12A
7@B 	CAHHaVHi#89E$$&113A6				B>>q   ;;=A}}!###}}!###!"x&;;;;!!$'44674
!!,/<<><   r   r   n_chunks))
   r   )   r   )r   ru   c                 "   t        j                  dt        t        |            i      }| r|j	                         d   }|j                         }t        |j                  |            }t        |      |k(  sJ t        d |D              |k(  sJ y )Nxr   c              3   <   K   | ]  }|j                           y wr   )r   .0chunks     r   	<genexpr>z%test_df_get_chunks.<locals>.<genexpr>   s     4Eu~~4   )	r   r   r   rangerJ   r   
get_chunkslensumr1   r   r   r   r!   chunkss         r   test_df_get_chunksr      s     HHc4d,-.E  "1%				B"--)*Fv;("""4V44<<<r   c                 @   t        j                  dt        t        |            i      }| r|j	                         d   }|j                         }t        |j                  d      j                  |            }t        |      |k(  sJ t        d |D              |k(  sJ y )Nr   r   c              3   <   K   | ]  }|j                           y wr   r   r   s     r   r   z)test_column_get_chunks.<locals>.<genexpr>   s     0uzz|0r   )
r   r   r   r   rJ   r   r   r   r   r   r   s         r   test_column_get_chunksr      s     HHc4d,-.E  "1%				B"--"--h78Fv;("""000D888r   rM   r   zfloat, np_float_strc                    g dddgg}t        j                  g dt        j                  |            }t        j                  t        j
                  ||       t        j
                  ||      t        j                  ||      d      }|r!|j                         j                         d   }|j                         }|j                         D ],  }	|	j                         dk(  sJ |	j                         d	k(  r,J  |j                  d      j                  d   d	k(  sJ |j                  d	      j                  d   dk(  sJ |j                  d
      j                  d   d
k(  sJ y )Nr4   rt   ru   )r5   r6   r   rt   ru   r=   r;   )r   r@   r?   r   r5   r6   )rH   rG   r>   r   r   r   r   rJ   r   get_columnsr   r   r   )
rM   r   rP   rR   r1   r    	arr_floatr   r!   rX   s
             r   test_get_columnsr      s@     q!f
C0FGIHH!!#D1!!#C0)%0	
E $$&113A6				B~~ %xxzQ~~1$$$% ==!!!$)))==!!!$)))==!!!$)))r   c                    g d}t        j                  dt        j                  ||       i      }|r|j                         d   }|j	                         }|j                  d      }|j                         }|d   \  }}|j                  dkD  sJ |j                  dk7  sJ |j                         \  }	}
|d   dk(  sJ |	dk(  r|d   }t        j                  t        j                  t        j                  t        j                  d|   }t        |      D ]C  \  }}|j!                  |j                  ||dz  z  z         j"                  }||k(  r:J d	| d
        y y )N)r   r5   r   r;   r   datar5   )r#   r$   r%   r&   r#   zBuffer at index z	 mismatch)r   r   rG   rJ   r   r   get_buffersbufsizeptr__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r   r1   r    r   r!   rX   bufdataBuf	dataDtypedevice_bitwidthctypeidxtruthvals                   r   test_bufferr      s]   
 CHHc288Cc234E  "1%				B
--
C
//
CVGY??Q;;!))+IFA Q<1{Q<}}	

  $C. 	CJC$$W[[3(a-3H%HIOOC%<B#3C5	!BB<	C r   z indices_type, bitwidth, f_stringr?   r+   ilc                 l   t        j                  | t        j                               }t        j                  g d|      }t        j                  d|i      }|j                         }|j                  d      }|j                  d   dk(  sJ |j                  d   |k(  sJ |j                  d   |k(  sJ y )N)r   r@   NrA   r   r      r5   r6   )r   
dictionarystringrG   r   r   r   r>   )indices_typer   f_stringr<   r    r   r!   rX   s           r   test_categorical_dtyper     s     ==ryy{3D
((($
/CHHc3Z E				B
--
C99Q<299Q<8###99Q<8###r   ).r   
hypothesishhypothesis.strategies
strategiesstr_   numpyrH   ImportErrorrn   r   pyarrow.tests.strategiestestsr   deferred	all_typesmarksettingsHealthChecktoo_slowgivenarraysr"   parametrizeuint8uint16uint32int8int16int32int64r'   r(   r)   rY   r\   rc   rr   r   r   r   pandasr   r   r   r   r   r   <module>r      s  $   "   ' ' BKK		 1==#9#9";<YQ	'(( ) = ( 	Q	b	b 	A	R	R	R	 #	r9%	r9%	r9%& !89KLudm4"; 5 M : 6";J+! udm4: 5: udm4 5* udm4&*-/JK= L 5= udm4&*-/JK9 L 59 
XRXXZibiik2 	GBGGIxrxxz8288:xrxxz: 	y!	y!	y! udm4* 5 *0 	GBGGIxrxxz8288:xrxxz: udm4C 5CB &	As	R	R	R	)	$	$I  	Bs   U UU