
    /_iQv                        d dl Z d dlZd dlZd dlZd dlmZmZ 	 d dlZd dl
Zd dlmZ ej                  j!                  g dg ddej"                  fddej"                  fddej$                  fddej$                  fd ej&                         ej(                  fd ej*                         ej,                  fd ej.                         ej0                  fd ej2                         ej4                  fd ej6                         ej8                  fd ej:                         ej<                  fd ej>                         ej$                  fd ej@                         ejB                  fd ejD                         ejF                  fddejH                  fd ejJ                         ejL                  f ejN                  d	      dejP                  f ejN                  d
      dejR                  fddejT                  fddejV                  fd ejX                         ejZ                  fd ej\                         ej^                  fd ej`                         ejb                  fd ejd                         ejf                  fd ejh                  d      ejj                  fg ddejl                  fg d ejn                   ej&                               ejp                  fg d ejr                   ej&                         d      ejt                  fg d ejv                   ej&                               ejx                  fg d ejz                   ej&                               ej|                  fe j~                  j                         dej                  fe j~                  j                          ej                         ej                  fe j                   j                         dej                  fe j                   j                         j                         j                  d        ej                  d      ej                  fe j                   j                         j                         dej                  f e j                  d      dej                  f ej                  g d      dej                  fdddgddej                  fddg ej                   ej                          ej&                               ej                  f      d        ZSej                  j                  d         ZTd! ZUd" ZVd# ZWd$ ZXd% ZYej                  j                  d&        Z[d' Z\d( Z]d) Z^d* Z_d+ Z`d, Zad- Zbej                  j!                  d.d/gd ej                  d      fd0 ej                  d      fd ej                  d      fd ej                  d1      fd0 ej                  d1      fd ej                  d1      fd ej                  d2      fd3 ej                  d2      fd ej                  d2      fd ej                  d4      fd3 ej                  d4      fd ej                  d4      fd ej                         fd0 ej                         fd ej                         fd ej                         fd3 ej                         fd ej                         fd ej                  d4      fd3 ej                  d4      fd ej                  d4      fd ej                  d4      fd3 ej                  d4      fd ej                  d4      fd5 ej                         fd ej                         fg      d/ej                  fd6       Zid7 Zjej                  j                  d8        Zkd9 Zld: Zmej                  j!                  d; ej                          ej                         g      d<        Znej                  j                  d=        Zpej                  j                  d>        Zrd? Zsd@ Ztej                  j                  dA        Zuej                  j                  dB        Zvej                  j                  dC        ZwdD Zxej                  j!                  d.dEdFg      ej                  j!                  dG ej                         ejT                  f ejX                         ejZ                  f ej`                         ejb                  fg      dH               Zyej                  j!                  d.g dI      ej                  j!                  dG ejh                         ejV                  f ej\                         ej^                  f ejd                         ejf                  fg      dJ               ZzdK Z{ej                  j!                  dL ejr                   ej                               ejl                  f ejn                   ej                               ejp                  f ejv                   ej                               ejx                  f ejz                   ej                               ej|                  fg      dM        Z|ej                  j                  ej                  j!                  dN ejr                   ej>                                ejn                   ej>                                ejv                   ej>                                ejz                   ej>                               dg      dO               Z}ej                  j                  ej                  j!                  dPejr                  ejn                  ejv                  ejz                  g      dQ               Z~dR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zy# e	$ r dZY w xY w)^    N)SequenceMapping)valuetyklassFT         ?1.123z*1.1234567890123456789012345678901234567890strings   byteslargestrings
   largebytesstring_views
   bytes_views   abc   r      r   r   r   r      )r   r   r   r      r   )microseconds)days)r   r	   ir   abr   r   r   r   c                    t        j                  | |      }|j                          |j                  d       t        ||      sJ |j	                         | k(  sJ |t        j                  | |      k(  sJ || k7  sJ |dk7  sJ t        |      t        |      k(  sJ |j                  du sJ |d k7  sJ t        j                  d |j                        }|j                  du sJ |j	                         J |t        j                  | |      k7  sJ |j                  |j                  |            }|j                  |      sJ t        j                  |      } |       J ~ |       J y )NtypeTfullelseF)pascalarvalidate
isinstanceas_pyhashis_validr   loadsdumpsequalsweakrefref)r   r   r   pickle_moduler   restoredwrs          Y/var/www/html/land_sniper/venv/lib/python3.12/site-packages/pyarrow/tests/test_scalars.pytest_basicsr3   !   sa   X 			%b!AJJLJJDJa779		%b))))::;;7d1g::99
		$QVV$A::779		%b)))) ""=#6#6q#9:H88H 
QB4	4<<    c                 V   t        j                  d      t        j                         t        j                  }}}t        j                  ||      }|j                          |j                  d       t        ||      sJ |j                         |k(  sJ |t        j                  ||      k(  sJ ||k7  sJ |dk7  sJ t        |      t        |      k(  sJ |j                  du sJ |d k7  sJ t        j                  d |j                        }|j                  du sJ |j                         J |t        j                  ||      k7  sJ | j                  | j                  |            }|j                  |      sJ t        j                  |      } |       J ~ |       J y )Nr
   r   Tr    r"   F)npfloat16r#   HalfFloatScalarr$   r%   r&   r'   r(   r)   r   r*   r+   r,   r-   r.   )r/   r   r   r   r   r0   r1   s          r2   test_basics_np_requiredr9   l   s   zz#

b6H6Hu2E
		%b!AJJLJJDJa779		%b))))::;;7d1g::99
		$QVV$A::779		%b)))) ""=#6#6q#9:H88H 
QB4	4<<r4   c                  "   t        j                  t        j                  d      t        j                         d      } | j                          t        j                  t        d      5  | j                  d       d d d        y # 1 sw Y   y xY w)N   Fsafez(string scalar contains invalid UTF8 datamatchTr    )	pccastr#   r$   r   r%   pytestraises
ValueErrorr   s    r2   test_invalid_scalarrF      sa    
		'"BIIKe<AJJL	zG
I 	


  s   )BBc                      t        j                  t              5  t        j                          d d d        y # 1 sw Y   y xY w)N)rB   rC   RuntimeErrorr#   
NullScalar r4   r2   test_null_singletonrK      s,    	|	$ 
  s	   8Ac                 ~   t        j                  d       }|t         j                  u sJ |j                         J |dk7  sJ |t        j                  d       k(  du sJ |dk(  du sJ t         j                  t         j                  k(  sJ t         j                  dvsJ t        j                  d d g      }|D ](  }|t         j                  u sJ |j                         (J  | j                  | j                  |            }|j                  |      sJ t        j                  |      } |       J ~ |       J y )N	somethingTr   F)r   )
r#   r$   NAr'   arrayr*   r+   r,   r-   r.   )r/   nullarrvr0   r1   s         r2   
test_nullsrS      s3   99T?D255==::<;BIIdO#,,,AI%55BEE>>55
((D$<
 C !BEEzzwwy   !
 ""=#6#6t#<=H??4    
T	B44r4   c                      t        t        d            } t        j                  | | z         }t	        |      }t        |t              sJ t        |      dk(  sJ y )Ni  )listranger#   rO   setr&   len)valuesrQ   set_from_arrays      r2   test_hashingr[      sN    %*F
((6F?
#CXNnc***~#%%%r4   c                      t        j                  ddiddigddid gg      } t        j                  ddid gg      }t        | d         }t        |d         }||k(  sJ y )Nr   r         r   r   )r#   rO   r(   )r   r   hash1hash2s       r2   test_hashing_struct_scalarra      sk    
C8c1X&#q4(89:A
C8T"#$A1JE1JEE>>r4   c            	         t        t        j                  d      j                  t        j                  d                  } | dk(  sJ t        t        j                  t        j
                  ddd      t        j                  dd                  }|d	k(  sJ t        t        j                  t        j
                  ddd      t        j                  d
                  }|dk(  sJ t        t        j                  t        j                  d      j                  t        j                  d            d            }|dk(  sJ y )Nz
0000-01-01r   z0<pyarrow.TimestampScalar: '0000-01-01T00:00:00'>i  r   UTCtzr   z5<pyarrow.TimestampScalar: '2015-01-01T00:00:00+0000'>usz7<pyarrow.TimestampScalar: '2015-01-01T00:00:00.000000'>z
2000-01-01America/New_Yorkz5<pyarrow.TimestampScalar: '2000-01-01T00:00:00-0500'>)reprr#   r$   rA   	timestampdatetimer@   assume_timezoner   r   cds       r2   test_timestamp_scalarro      s    RYY|$))",,s*;<=ABBBBRYYx((q!42<<PU;VWXAGGGGRYYx((q!42<<;MNOAIIIIR
		,$$R\\#%679KM 	NAGGGGr4   c                     t        j                  d      } t        j                  d      }t        j                  d t        j                               }t        | t         j                        sJ t        |t         j                        sJ t        |t         j                        sJ t        |      dk(  sJ t        |      dk(  sJ t        |       dk(  sJ t        |       dk(  sJ t        |      dk(  sJ t        |      d	k(  sJ |j                         du sJ | j                         du sJ |j                         J t        |      du sJ t        |       du sJ t        |      du sJ y )
NFTr   z<pyarrow.BooleanScalar: True>Truez<pyarrow.BooleanScalar: False>Falsez<pyarrow.BooleanScalar: None>None)	r#   r$   bool_r&   BooleanScalarrh   strr'   bool)falsetruerP   s      r2   	test_boolrz      sT   IIeE99T?D99T
+DeR--...dB,,---dB,,---:8888t9;::::u:   :8888t9::<4;;=E!!!::<:;%:r4   c                     t        j                  d      } t        | t         j                        sJ t	        |       dk(  sJ t        |       dk(  sJ | j                         dk(  sJ t        |       dk(  sJ t        j                  t              5  t        j                  dd       d d d        t        j                  d      } t        | t         j                        sJ t	        |       dk(  sJ t        |       d	k(  sJ | j                         dk(  sJ t        |       dk(  sJ t        |       dk(  sJ t        j                  d
d      } t        | t         j                        sJ t	        |       dk(  sJ t        |       dk(  sJ | j                         d
k(  sJ t        |       d
k(  sJ t        |       dk(  sJ y # 1 sw Y   xY w)Nr   z<pyarrow.Int64Scalar: 1>1r	   uint8r         ?z<pyarrow.DoubleScalar: 1.5>z1.5g      ?r7   z<pyarrow.HalfFloatScalar: 0.5>z0.5r   )r#   r$   r&   Int64Scalarrh   rv   r'   intrB   rC   OverflowErrorDoubleScalarfloatr8   rE   s    r2   test_numericsr      s   
		!Aa(((70000q6S==779>>q6Q;;	}	% $
		"7#$ 			#Aa)))73333q6U??7798s??q6Q;; 			#I&Aa++,,,76666q6U??7798s??q6Q;;'$ $s   F??G	c                  x   t        j                  d      } t        j                  |       }t	        |t        j
                        sJ |j                         | k(  sJ |j                  t        j                  dd      k(  sJ t        j                  d      } t        j                  t        j                        5  t        j                  | t        j                  dd             d d d        t        j                  t        j                        5  t        j                  | t        j                  dd             d d d        t        j                  | t        j                  dd            }t	        |t        j
                        sJ |j                         | k(  sJ y # 1 sw Y   xY w# 1 sw Y   sxY w)Nr   r   r   1.1234scaler   r   )decimalDecimalr#   r$   r&   Decimal128Scalarr'   r   
decimal128rB   rC   ArrowInvalidrR   r   s     r2   test_decimal128r   	  s1    A
		!Aa,,---779>>66R]]1a((((!A	r	' 5
		!"--345	r	' 5
		!"--345 			!"--34Aa,,---779>>5 55 5   9-F$-F0$F-0F9c                  x   t        j                  d      } t        j                  |       }t	        |t        j
                        sJ |j                         | k(  sJ |j                  t        j                  dd      k(  sJ t        j                  d      } t        j                  t        j                        5  t        j                  | t        j                  dd             d d d        t        j                  t        j                        5  t        j                  | t        j                  dd             d d d        t        j                  | t        j                  dd            }t	        |t        j
                        sJ |j                         | k(  sJ y # 1 sw Y   xY w# 1 sw Y   sxY w)	Nz,1234567890123456789012345678901234567890.123+   r   r   r   r   r   r   )r   r   r#   r$   r&   Decimal256Scalarr'   r   
decimal256rB   rC   r   r   s     r2   test_decimal256r     s2   FGA
		!Aa,,---779>>66R]]2q))))!A	r	' 5
		!"--345	r	' 5
		!"--345 			!"--34Aa,,---779>>5 55 5r   c                  $   t        j                  ddd      } t        j                  ddd      }t        j                         t        j                         fD ]7  }| |fD ].  }t        j
                  ||      }|j                         |k(  r.J  9 y )Ni  r   i  r   )rj   dater#   date32date64r$   r'   )d1d2r   rn   r   s        r2   	test_dater   -  s{    	tQ	"B	tQ	"Byy{BIIK( "b 	"A		!"%A779>!>	""r4   c                  V   t        j                  t        j                  ddd      t        j                  d            } t        j                  ddd      }t        j
                         t        j                         fD ](  }| j                  |      }|j                         |k(  r(J  y )Ni  r   rf   r   )	r#   r$   rj   ri   r   r   r   rA   r'   )r$   expectedr   results       r2   test_date_castr   8  s}    YYx((q!42<<;MNF}}T1a(Hyy{BIIK( *R||~)))*r4   c                  x   t        j                  dd      } t        j                  dd      }t        j                  d      t        j                  d      t        j                  d      t        j                  d      g}|D ]7  }| |fD ].  }t        j
                  ||      }|j                         |k(  r.J  9 y )	N   r      r   msrf   nsr   )rj   timer#   time32time64r$   r'   )t1t2typesr   tr   s         r2   test_time_from_datetime_timer   A  s    	r1	B	r1	BYYs^RYYt_biioryyOE "b 	"A		!"%A779>!>	""r4   r   	time_typei   @r   rf   l            r   )r   r   c                 x    t        j                  | |      }|j                  d       |j                  | k(  sJ y )Nr   Tr    )r#   r$   r%   r   )r   r   time_scalars      r2   test_temporal_valuesr   L  s9    : ))E	2Kd#%%%r4   c                     t        j                  dd      } | j                  d      t        j                  dd      k(  sJ | j                  d      t        j                  dd      k(  sJ | j                  d      t        j                  dd      k(  sJ t        j                  t
              5  t        j                  d      j                  d	       d d d        y # 1 sw Y   y xY w)
Nr   int8r   int64uint32r   5fooint32)r#   r$   rA   rB   rC   rD   )vals    r2   	test_castr   n  s    
))AF
#C88G		!' ::::88H18!<<<<88H3X!>>>>	z	" '
		%g&' ' 's   2%C  C)c            	      P   t        j                  d       dd l} t        j                  dddddd| j                        }t        j                  |t        j                  dd      	      }|j                  t        j                               t        j                  d
      k(  sJ y )Npytzr     r   tzinfor   rc   rd   r   z2000-01-01 00:00:00.000000000Z)
rB   importorskipr   rj   utcr#   r$   ri   rA   r   )r   dttss      r2   test_cast_timestamp_to_stringr   w  sw     			4Aq!Qtxx	@B	2BLL%8	9B77299;299-M#NNNNr4   c                     t        j                  dt        j                               } | j                  t        j                         d      }t        j                  dt        j                               }||k(  sJ t        j                  t         j                        5  | j                  t        j                                d d d        y # 1 sw Y   y xY w)Nr~   r   Fr<   r   )r#   r$   float64rA   r   rB   rC   r   )float_scalarunsafe_castexpected_unsafe_casts      r2   test_cast_float_to_intr     s    99Srzz|4L##BHHJU#;K99QRXXZ8....	r	' &"((*%& & &   "$CCc                     t        j                  dt        j                               } | j                  t        j                         d      }t        j                  dt        j                               }||k(  sJ t        j                  t         j                        5  | j                  t        j                                d d d        y # 1 sw Y   y xY w)Nl   r   Fr<   g      PC)r#   r$   r   rA   r   rB   rC   r   )
int_scalarr   r   s      r2   test_cast_int_to_floatr     s    ,288:>J//"**,U/;K99%8rzz|L....	r	' &

%& & &r   typc                     t        j                  d      }|j                  |       }|t        j                  t        j                  ddd      |       k(  sJ y )Nz
2021-01-01i  r   r   )r#   r$   rA   rj   r   )r   r$   r   s      r2   test_cast_string_to_dater     sD    YY|$F[[FRYYx}}T1a8sCCCCr4   c                     dd l } | j                  dd      j                  }g d}t        |      D ]A  \  }}d| d}t        j
                  j                  |j                  |            }| j                  d      }|d   j                         |k(  sJ |d   j                  d|z  z  |j                  k(  sJ d	}t	        j                  ||
      }	d| d}t        j
                  j                  |j                  |      |	      }| j                  d      j                  d      j                  |      }|d   j                         |k(  sJ |d   j                  d|z  z  |j                  k(  rBJ  y )Nr   z2000-01-01 12:34:56
   )periods)r   rf   r   r   zdatetime64[]  rg   rd   r   r   )pandas
date_rangerY   	enumerater#   Arrayfrom_pandasastype	Timestampr'   r   ri   tz_localize
tz_convert)
pdrQ   unitsiunitdtype	arrow_arrr   re   
arrow_types
             r2   test_timestampr     sa   
---r-
:
A
AC#EU# >4dV1%HH((E):;	<< 56|!!#x///|!!D!G+x~~===\\$2.
dV1%HH((E):(L	LL!67 ['Z^ 	 |!!#x///|!!D!G+x~~===%>r4   c                  *   t        j                  d       dd l} d}t        j                  d|      }t        j
                  d|      }| j                  |      }t        j                  dd	d	d	|
      }|j                  |      }|j                         }||k(  sJ |j                  dk(  sJ |j                  dk(  sJ t        j
                  d|      }t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY w)Nr   r   rg   r   rd   l   $=3ir   r   r   )r   r   i         $=3i)rB   r   r   r#   ri   r$   timezonerj   fromutcr'   yearhourrC   rD   )r   re   r   r   r   r   r   s          r2   test_timestamp_nanos_nopandasr     s     	B	dr	"B 			+"5A]]2F  q!6JH~~h'HWWYFX;;$;;" 			$2.A	z	" 		  s   /D		Dc                     t        j                  d       dd l} t        j                  dddddd| j                        t        j                  ddddd	d	d
| j                        t        j                  dddddd| j                        g}|D ]C  }t        j                  |t        j                  dd            }|j                         |k(  rCJ  y )Nr   r   r   r   i'           ;   i?B i  rf   rc   rd   r   )	rB   r   r   rj   r   r#   r$   ri   r'   )r   
timestampsr   r   s       r2   test_timestamp_no_overflowr     s    
 	!Q1a488<$BBF488L$1aAdhh?J
  IIbr||DU;<wwyBr4   c                      t        j                  d       t        j                  dgt        j                  dd            } t        | d         dk(  sJ y )Nr   r   r   z+02:00rd   z1970-01-01 02:00:00+02:00)rB   r   r#   rO   ri   rv   )rQ   s    r2   !test_timestamp_fixed_offset_printr     sD    

((A3SX6
7Cs1v;5555r4   c                     t        j                  ddgd      } g d}t        |      D ]  \  }}d| d}t        j                  | j	                  |            }t        j                  d	      }t        |d
   j                         t
        j                        sJ |d
   j                         |k(  sJ |d
   j                  d|d
z   z  z  |j                         dz  k(  rJ  y )Nr        qaztimedelta64[ns]r   )rf   r   r   ztimedelta64[r     secondsr   r       eA)r6   rO   r   r#   r   rj   	timedeltar&   r'   r   total_seconds)rQ   r   r   r   r   r   r   s          r2   test_durationr    s    
((A}%->
?CEU# 04tfA&HHSZZ./	%%e4)A,,,.0B0BCCC|!!#x///!""TAaC[0&&(3./ 	0 /0r4   c                     dd l } t        j                  ddgt        j                  d            }| j	                  d      }t        |d   j                         | j                        sJ |d   j                         |k(  sJ |d   j                  |j                  k(  sJ t        j                  dgt        j                  d            }|d   j                         | j	                  dd      k(  sJ y )	Nr   r   r   r   z1 hourr   r   )r   )r   r#   rO   duration	Timedeltar&   r'   r   )r   rQ   r   s      r2   test_duration_nanos_pandasr    s    
((A}%BKK,=
>C||H%Hc!fllnbll333q6<<>X%%%q6<<8>>))) ((&'bkk$.?
@Cq6<<>R\\*<4\HHHHr4   c                  2   t        j                  ddgt        j                  d            } t        j                  d      }t        | d   j                         t        j                        sJ | d   j                         |k(  sJ | d   j                  |j                         dz  k(  sJ t        j                  dgt        j                  d      	      } t        j                  t              5  | d   j                          d d d        y # 1 sw Y   y xY w)
Nr   r   r   r   r   r   r   r   r   )r#   rO   r  rj   r  r&   r'   r   r  rB   rC   rD   )rQ   r   s     r2   test_duration_nanos_nopandasr	    s    
((A}%r{{4'8
9C!!%0Hc!fllnh&8&8999q6<<>X%%%q6<<8113c9999 ((&'bkk$.?
@C	z	" A  s   0DDc                     t        j                  g d      } t        j                  | g      }t        |d   j	                         t         j                        sJ |d   j	                         | k(  sJ |d   j
                  | k(  sJ y )N)ii  ir   )r#   MonthDayNanorO   r&   r'   r   )triplerQ   s     r2   test_month_day_nano_intervalr    sm    __/0F
((F8
Cc!fllnboo666q6<<>V###q6<<6!!!r4   r   u   mañana)r   
scalar_typc                    t        j                  | |      }t        ||      sJ |j                         | k(  sJ |j                         dk7  sJ t	        |       t	        |      v sJ t        |      t        |       k(  sJ |j                         }t        |t         j                        sJ |j                         | j                         k(  sJ y )Nr   rM   )
r#   r$   r&   r'   rh   rv   	as_bufferBuffer
to_pybytesencode)r   r   r  r   bufs        r2   test_stringr    s     			%b!Aa$$$779779###;$q'!!!q6SZ
++-Cc299%%%>>u||~---r4   )s   foos   barr4   Nc                 2   t        j                  | |      }t        ||      sJ |j                         | k(  sJ t	        |      t	        |       k(  sJ t        |       t        |      v sJ |j                         | k(  sJ |dk7  sJ |j                         }| 2|J t        j                  t              5  t        |       d d d        y |j                         | k(  sJ t        |t         j                        sJ t        |      | k(  sJ t        |      }|j                         | k(  sJ |j                  dk(  sJ |j                   dk(  sJ |j"                  dk(  sJ |j$                  t'        |       fk(  sJ |j(                  dk(  sJ y # 1 sw Y   y xY w)Nr   s   xxxxxr   r   )r   )r#   r$   r&   r'   rv   rh   r  rB   rC   rD   
memoryviewr  r  bytestobytesformatitemsizendimshaperX   strides)r   r   r  r   r  memviews         r2   test_binaryr   .  s    			%b!Aa$$$779q6SZ;$q'!!!779==
++-C}{{]]:& 	qM	 	 ~~5(((#ryy)))Qx5   Q- E)))~~$$$1$$$||q   }}U---$&&&	 	s   7FFc                     t        j                  dt        j                  d            } t        | t         j                        sJ | j                         dk(  sJ t        |       dk(  sJ t        j                  t         j                        5  t        j                  dt        j                  d             d d d        y # 1 sw Y   y xY w)Ns   foofr   r   s   foof5)
r#   r$   binaryr&   FixedSizeBinaryScalarr'   r  rB   rC   r   rE   s    r2   test_fixed_size_binaryr$  Q  s    
		'		!-Aa112227798w	r	' /
		(1./ / /s   +CC)r   r   c                    dd g}t        j                  ||       }|j                  | k(  sJ t        |      dk(  sJ t	        |j
                  t         j                        sJ |j
                  j                         |k(  sJ t	        ||      sJ t        |      t        |      v sJ |j                         |k(  sJ |d   j                         dk(  sJ |d   j                         J |d   |d   k(  sJ |d   |d   k(  sJ t        j                  t              5  |d    d d d        t        j                  t              5  |d    d d d        t	        |t              sJ y # 1 sw Y   CxY w# 1 sw Y   (xY w)	Nr   r   r   r   r   r	   r   )r#   r$   r   rX   r&   rY   r   	to_pylistrh   r'   rB   rC   
IndexErrorr   )r   r   rR   r   s       r2   	test_listr)  [  s^    
A
		!"A66R<<q6Q;;ahh)))881$$$a7d1g779>>Q4::<5   Q4::<R5AaD==R5AaD==	z	" 	"	z	" 	!a"""	  s   E%E1%E.1E:r   c                 &   t        j                  t        j                  g dt        j                               |       }| 't        j
                  t        j                               } |j                  | k(  sJ |j                         g dk(  sJ y )Nr   r   r   )r#   r$   r6   rO   r   list_r   r'   r   r   s     r2   test_list_from_numpyr-  v  sb     			"((9BHHJ7bAA	zXXbhhj!66R<<779	!!!r4   factoryc                 `   dd l }t        j                  |j                  g d            }|j	                         g dk(  sJ t
        j                  dfdt
        j                  g | t        j                               fdt
        j                  g | t        j                               fdt
        j                  g | t        j                  d            fdt
        j                  g | t        j                               ft        j                  d      t
        j                  g | t        j                  d	d
            fg}|D ]\  \  }}t        j                  t        t         f      5  t        j                  ||       d d d        t        j                  ||d      }^ y # 1 sw Y   $xY w)Nr   r   rP   r   s   stringr]   T0r   r   r   )r   r   )r   r#   r$   Seriesr'   r6   nanr"  utf8rt   r   r   r   rB   rC   rD   	TypeError)r.  r   r   casescaser   s         r2   test_list_from_pandasr7    s?    
		"))I&'A779	!!! 

BFF	WRYY[12
BFF	WRWWY/0
RVV	gbiil34
,-
//#
	'r11E)FGE  7b]]J	23 	%IId$	% IId67	% 	%s   )F$$F-	c                  h   t        j                  g dt        j                  t        j                         d            } t	        |       dk(  sJ t        | t         j                        sJ t        |       dk(  sJ | j                         g dk(  sJ | d   j                         dk(  sJ | d   j                         J | d   | d   k(  sJ t        j                  t              5  | d	    d d d        t        j                  t              5  | d    d d d        y # 1 sw Y   1xY w# 1 sw Y   y xY w)
N)r   Nr   r   r   z+<pyarrow.FixedSizeListScalar: [1, None, 3]>r   r   r	   r   )r#   r$   r+  r   rX   r&   FixedSizeListScalarrh   r'   rB   rC   r(  rE   s    r2   test_fixed_size_listr;    s   
		,RXXbhhj!%<=Aq6Q;;a//0007CCCC779$$$Q4::<1Q4::<R5AaD==	z	" 	"	z	" 	!   s   &DD(D%(D1c                     t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } ddd}t        j
                  ||       }t        |      t        |j                               cxk(  rddgk(  sJ  J t        |j                               t        j
                  dt        j                               t        j
                  dt        j                               gk(  sJ t        |j                               dt        j
                  dt        j                               fdt        j
                  dt        j                               fgk(  sJ d|v sJ d|v sJ d|vsJ d|vsJ |j                         |k(  sJ t        |      t        |      k7  sJ t        |j                               t        |      k(  sJ t        |      dk(  sJ t        |d   t         j                        sJ t        |d   t         j                        sJ |d   j                         dk(  sJ |d   j                         dk(  sJ t        |t               sJ t#        j$                  t&              5  |d	    d d d        t        j
                  d |       }t        |      t        |j                               cxk(  rddgk(  sJ  J |j                         J d|v sJ d|v sJ t        |d   t         j                        sJ t        |d   t         j                        sJ t        |d   t         j                        sJ t        |d
   t         j                        sJ |d   j(                  du sJ |d   j(                  du sJ |d   j                         J |d   j                         J t        |t               sJ y # 1 sw Y   PxY w)Nxyr   g      @r=  r>  r   zr   nonexistentr   F)r#   structfieldint16float32r$   rU   keysrY   itemsr'   rh   rX   r&   Int16ScalarFloatScalarr   rB   rC   KeyErrorr)   r   rR   r   s      r2   test_structrL    sm   	
bhhj!
bjjl# 
B
 cA
		!"A7d1668n2c
22222

		!"((*%
		#BJJL)     	?	bii
+,	bii"**,/0    !8O8!8O8a<<A::779>>7d1g	?d1g%%%q6Q;;afbnn---afbnn---S6<<>QS6<<>S   a!!!	x	  	- 			$R A7d1668n2c
22222779!8O8!8O8afbnn---afbnn---adBNN+++adBNN+++S6??e###S6??e###S6<<>!!!S6<<>!!!a!!!! s   (O<<Pc            	         t        j                  t        j                  dt        j                               t        j                  dt        j                               t        j                  dt        j
                               g      } t        j                  g d|       }t        |      t        |j                               cxk(  rg dk(  sJ  J t        |      dk(  sJ ||k(  sJ t        |j                               dt        j                  dt        j                               fdt        j                  dt        j                               fdt        j                  dt        j
                               fgk(  sJ d|v sJ d|v sJ d	|vsJ d
|vsJ t        j                  t              5  |d    d d d        t        |d   t         j                        sJ |d   j!                         dk(  sJ t        |d
   t         j"                        sJ |d
   j!                         dk(  sJ t        |d   t         j                        sJ |d   j!                         dk(  sJ t        |d   t         j$                        sJ |d   j!                         dk(  sJ dt'        |      v sJ t        j                  t(        d      5  |j!                          d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY w)Nr=  r>  ))r=  r   )r>         @)r=  r   r   )r=  r>  r=  r   r   rN  r@  r   r   zpyarrow.StructScalarzduplicate field namesr>   )r#   rB  rC  rD  rE  r   r$   rU   rF  rX   rG  rB   rC   rJ  r&   rI  r'   rH  r   rh   rD   r,  s     r2   test_struct_duplicate_fieldsrO    st   	
bhhj!
bjjl#
bhhj! 
B
 			2<A7d1668n777777q6Q;;6M6	?	bii288:&'	biiRZZ\*+	bii288:&'    !8O8!8O8a<<A:: 
x	  	# afbnn---S6<<>S    adBNN+++Q4::<1adBNN+++Q4::<3adBNN+++Q4::<1!T!W,,,	z)@	A 		 !   s   7K%K2%K/2K;c                    t        j                  t        j                         t        j                               }ddg}t        j                  ||      }t        |      dk(  sJ t        |t         j                        sJ t        |j                  t         j                        sJ t        |      dk(  sJ |j                  j                         dddd	ddgk(  sJ t        ||      D ]  \  }}||k(  rJ  t        j                  d |      D ]  } |j                         |k(  sJ |d   t        j                  d	t        j                               t        j                  dt        j                               fk(  sJ |d
   |d   k(  sJ |d   |d   k(  sJ |d	   t        j                  dt        j                               k(  sJ t        j                  t               5  |d    d d d        t        j                  t               5  |d    d d d        t        j                  t"              5  |d    d d d        | j%                  | j'                  |            }|j)                  |      sJ |j                  d      dddk(  sJ t        |t*              sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r   r   z)<pyarrow.MapScalar: [('a', 1), ('b', 2)]>r   r   )keyr   r   r	   r&  r   r   fake_keystrictmaps_as_pydictsr   )r#   map_r   r   r$   rX   r&   	MapScalarrY   r   rh   r'  zipr'   rB   rC   r(  rJ  r*   r+   r,   r   )r/   r   rR   r   r   j_r0   s           r2   test_mapr[    sy   	bggi	(B	8A
		!"Aq6Q;;a&&&ahh)))7AAAA88a a $    Aq	 1Avv YYt"%  779>>Q4
		#BIIK(
		!"'')$    R5AaD==R5AaD==S6RYYqrwwy1111	z	" 	"	z	" 	!	x	  	* ""=#6#6q#9:H??17787,aa0@@@@a!!!   s$   )J%J17J=%J.1J:=Kc                     t        j                  t        j                         t        j                               } ddg}t        j                  ||       }|j                  d       |k(  sJ t        j                  t              5  |j                  d      sJ 	 d d d        t        j                  d      5  |j                  d      d	d
ik(  sJ 	 d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr   )r   r   r   rT  rS  z1Encountered key 'a' which was already encounteredr>   lossyr   r   )
r#   rV  r   r   r$   r'   rB   rC   rJ  warnsrK  s      r2   test_map_duplicate_fieldsr_  @  s    	bggi	(B	8A
		!"A7747(A---	x	  1wwxw0001 
O	P <wwww/C8;;;< <1 1< <s   C:C*C'*C3c                 ^   t        j                  g d      }t        j                  g d      }t         j                  j                  ||      }g d}|j	                         |k(  sJ t        t        ||            D ]  \  }\  }}||   }|j                         |k(  sJ |j                  j                         |k(  sJ |j                  j                  |      sJ |j                  j                  |      sJ | j                  | j                  |            }	|	j                  |      rJ  y )N)r   Nr   r   r   N)r   barbaz)rb  Nra  rb  r   N)r#   rO   DictionaryArrayfrom_arraysr'  r   rX  r'   r   indexr,   
dictionaryr*   r+   )
r/   indicesrf  rQ   r   rY  r   rR   r   r0   s
             r2   test_dictionaryrh  N  s   hh/0G/0J



(
(*
=C7H==?h&&&s7H56 	"	6AqFwwyA~~ww}}!###ww~~a   ||"":... &&}':':1'=>q!!!	"r4   c            	         g d} g d}t         j                  j                  | |      }|d   }t        |t         j                        sJ t        |j
                  t         j                        sJ |j
                  t        j                  |      d   k(  sJ |j                         dk(  sJ |d   }t        |j
                  t         j                        sJ |j                         J t        j                  t              5  t        j                  dt        j                  t        j                         t        j                                      d d d        y # 1 sw Y   y xY w)N)r   r   r   r   r   )r   r   r   Nr   r   r   r   )r#   RunEndEncodedArrayrd  r&   RunEndEncodedScalarr   r   rO   r'   rB   rC   NotImplementedErrorr$   run_end_encodedr   )run_endsrY   rQ   r$   s       r2   test_run_end_encodedro  b  s   !HF



+
+Hf
=CVFfb44555fllBNN333<<288F+A....<<>Q WFfllBNN333<<>!!! 
*	+ A
		!R''
BHHJ?@A A As   AEE#c           	         t         j                  j                  t        j                  g dt        j                               t        j                  g d      t        j                  g d      g      }|D ]  }|j                  d       t        |t         j                        sJ |j                  j                  |j                        sJ |j                  du sJ t        j                  t         j                        5  | j                  | j                  |             d d d         |d   j                   dk(  sJ |d   j#                         dk(  sJ |d	   j                   dk(  sJ |d	   j#                         d
k(  sJ |d   j                   d	k(  sJ |d   j#                         dk(  sJ |d   j                   d	k(  sJ |d   j#                         dk(  sJ t         j                  j%                  t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g dd      g      }|D ]  }|j                  d       t        |t         j                        sJ |j                  j                  |j                        sJ |j                  du sJ t        j                  t         j                        5  | j                  | j                  |             d d d         |d   j                   dk(  sJ |d   j#                         dk(  sJ |d   j                   d	k(  sJ |d   j#                         dk(  sJ y # 1 sw Y   xY w# 1 sw Y   &xY w)N)r   r   r   r   r   rl   r   Tr    r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )   a   b   c   dr"  r   r   )r   value_offsetschildrenrq  r   )r#   
UnionArrayfrom_sparserO   r   r%   r&   UnionScalarr   r,   r)   rB   rC   ArrowNotImplementedErrorr*   r+   	type_coder'   
from_dense)r/   rQ   r   s      r2   
test_unionr}  w  s   
--
#
#
BGGI.HH)*HH\"	
C  8	


!R^^,,,vv}}SXX&&&zzT!!!]]2667 	8 3 3A 67	8 	88 q6q   q6<<>S   q6q   q6<<>S   q6q   q6<<>Qq6q   q6<<>Q --
"
"hh,6:hh47CHH-H=HHYW-
 # C  8	


!R^^,,,vv}}SXX&&&zzT!!!]]2667 	8 3 3A 67	8 	88 q6q   q6<<>T!!!q6q   q6<<>QA	8 	84	8 	8s   !M/+!M</M9	<N	c                     t        j                  dgt        j                  t        j                         t        j                                     j	                         dgk(  sJ t        j                  dgt        j                  t        j
                  dt        j                         d      t        j
                  dt        j                                           j	                         dgk(  sJ y)z{
    Check we can call `MapScalar.as_py` with custom field names

    See https://github.com/apache/arrow/issues/36809
    )r   ra  
custom_keyF)nullablecustom_valueN)r#   r$   rV  r   r'   rC  rJ   r4   r2   ,test_map_scalar_as_py_with_custom_field_namer    s     99	
IIKIIK	
 eg.!" " " 99	
HH\299;?HH^RYY[1	
 eg.!" " "r4   c                     t        j                  t        j                  dt        j                  t        j                         t        j
                                     t        j                  dt        j                  t        j                  t        j                         t        j
                                           g      } ddiddiddigd	}t        j                  || 
      }|j                  d      |k(  sJ y )Nr=  r>  r   r   r   r   rm   r   r?  r   rS  rT  	r#   rB  rC  rV  r   r   r+  r$   r'   rK  s      r2   #test_map_types_with_maps_as_pydictsr    s    	
bggbiik277956
bhhrwwryy{BGGI>?@ 
B
 AhsAha12A
		!"A7787,111r4   c                     t        j                  t        j                  dt        j                  t        j                         t        j                  t        j                         t        j
                                           t        j                  dt        j                  t        j                  t        j                         t        j                  t        j                         t        j
                                                 g      } dddiidddiid	d
diigd}t        j                  ||       }|j                  d      |k(  sJ y )Nr=  r>  r   r|   r   r   2r   rm   3r   r?  r   rS  rT  r  rK  s      r2   *test_nested_map_types_with_maps_as_pydictsr    s    	HHS"''"))+rwwryy{BGGI/NOPHHRXXbggbiik277299;	3RST	

B S!HocC8_sS!Ho$FGA
		!"A7787,111r4   c            
      ,   t        j                  t        j                  dt        j                  t        j                         t        j                                     g      } di i}t        j
                  ||       }|j                  d      |k(  sJ y )Nr=  r   rS  rT  )r#   rB  rC  rV  r   r$   r'   )map_typerR   r   s      r2   !test_map_scalar_with_empty_valuesr    sn    yyHHS"''"))+ryy{;<	
H 
b	A
		!(#A7787,111r4   )rj   r   rB   r-   collections.abcr   r   numpyr6   ImportErrorpyarrowr#   pyarrow.computecomputer@   markparametrizeru   r   r   
Int8Scalarr}   UInt8ScalarrD  rH  uint16UInt16Scalarr   Int32Scalarr   UInt32Scalarr   uint64UInt64Scalarr7   r8   r   rE  rI  r   r   r   StringScalarBinaryScalarlarge_stringLargeStringScalarlarge_binaryLargeBinaryScalarr   StringViewScalarbinary_viewBinaryViewScalarr"  r#  
ListScalar
large_listLargeListScalarr+  r:  	list_viewListViewScalarlarge_list_viewLargeListViewScalarr   todayDate32Scalarr   Date64ScalarnowTimestampScalarr   replacer   Time32ScalarTime64Scalarr  DurationScalarr  MonthDayNanoIntervalScalarStructScalarrV  r   rW  r3   r9   rF   rK   rS   r[   ra   timezone_dataro   rz   r   r   r   r   r   r   r   r   ri   r  month_day_nano_intervalDataTyper   r   r   r   r   r   r   r   nopandasr   r   r   r  r  r	  r  r  r   r$  r)  r-  r7  r;  rL  rO  r[  r_  rh  ro  r}  r  r  r  r  rJ   r4   r2   <module>r     s  $     -   1 *4
D"""#*4	4!!"*4 bnn*4 r~~	*4
 	2==!*4 
BNN#*4 
BNN#*4 			R__%*4 
BNN#*4 			R__%*4 
BNN#*4 			R__%*4 	*"**,**+*4 	$ *4 	*"**,'*4  W__WtR%8%89!*4" W__AB	2 #*4& tR__%'*4( tR__%)*4* OBOO%r';';<+*4, OBOO%r';';<-*4. NBNN$b&9&9:/*40 NBNN$b&9&9:1*42 YRYYq\23343*44 bmm$5*46 =2==+R-?-?@7*48 hbhhwrwwy!,b.D.DE9*4: WRWWY'):):;;*4< %2%%gbggi0"2H2HI=*4> ]]D"//2?*4@ ]]IBIIK9A*4B dB$6$67C*4D !!#+++:IBIIcN__E*4H !!#T2??;I*4J XQr'8'89K*4L R___%t""$M*4P Aq6D"//2Q*4R 72779299;	:BLLIS*4 *VW*V@  <
4& 	H 	H2>$$"*" ';/			#
IBIIcN	9299S>			$
IBIIdO	9299T?			$
IBIIdO	9299T?			$
IBIIdO	9299T?			
IBIIK	9299;			
IBIIK	9299;T
LBLL	<2<<D
KBKK	;2;;t+++-.	%2%%'(52 8&2;; &98&' O O&& ibiik :;D <D > >6  06 0 0 
I 
I 
 
" 5)"45-RYY["//"R__,,-R^^r**+0 

. 6
. "=>-RYY["//"R__,,-R^^r**+0 
' ?':/ RXXibiikBMM*R]]9299;!3!34R\\)"))+ 1 12R			$b&<&<=	+ ##* BHHXRXXZBMM("((*BLLBxrxxz"  " " HHMMLL	% 7 7. 1"h(V*"Z<"(A*.b".	22 
2C  	Bs   o% %o0/o0