
    <>iQv                        S SK r S SKrS SKrS SKrS SKJrJr   S SKrS SK
rS SKJr  \R                  R!                  / SQ/ SS\R"                  4PSS\R"                  4PSS\R$                  4PSS\R$                  4PS\R&                  " 5       \R(                  4PS\R*                  " 5       \R,                  4PS\R.                  " 5       \R0                  4PS\R2                  " 5       \R4                  4PS\R6                  " 5       \R8                  4PS\R:                  " 5       \R<                  4PS\R>                  " 5       \R$                  4PS\R@                  " 5       \RB                  4PS\RD                  " 5       \RF                  4PSS\RH                  4PS\RJ                  " 5       \RL                  4P\RN                  " S	5      S\RP                  4P\RN                  " S
5      S\RR                  4PSS\RT                  4PSS\RV                  4PS\RX                  " 5       \RZ                  4PS\R\                  " 5       \R^                  4PS\R`                  " 5       \Rb                  4PS\Rd                  " 5       \Rf                  4PS\Rh                  " S5      \Rj                  4P/ SQS\Rl                  4P/ SQ\Rn                  " \R&                  " 5       5      \Rp                  4P/ SQ\Rr                  " \R&                  " 5       S5      \Rt                  4P/ SQ\Rv                  " \R&                  " 5       5      \Rx                  4P/ SQ\Rz                  " \R&                  " 5       5      \R|                  4P\ R~                  R                  5       S\R                  4P\ R~                  R                  5       \R                  " 5       \R                  4P\ R                   R                  5       S\R                  4P\ R                   R                  5       R                  5       R                  S S9\R                  " S5      \R                  4P\ R                   R                  5       R                  5       S\R                  4P\ R                  " SS9S\R                  4P\R                  " / SQ5      S\R                  4PSSS/S.S\R                  4PSS/\R                  " \R                  " 5       \R&                  " 5       5      \R                  4P5      S 5       rS\R                  R                  S  5       rTS! rUS" rVS# rWS$ rXS% rY\R                  R                  S& 5       r[S' r\S( r]S) r^S* r_S+ r`S, raS- rb\R                  R!                  S.S//S\R                  " S5      4S0\R                  " S5      4S\R                  " S5      4S\R                  " S15      4S0\R                  " S15      4S\R                  " S15      4S\R                  " S25      4S3\R                  " S25      4S\R                  " S25      4S\R                  " S45      4S3\R                  " S45      4S\R                  " S45      4S\R                  " 5       4S0\R                  " 5       4S\R                  " 5       4S\R                  " 5       4S3\R                  " 5       4S\R                  " 5       4S\R                  " S45      4S3\R                  " S45      4S\R                  " S45      4S\R                  " S45      4S3\R                  " S45      4S\R                  " S45      4S5\R                  " 5       4S\R                  " 5       4/5      S/\R                  4S6 j5       riS7 rj\R                  R                  S8 5       rkS9 rlS: rm\R                  R!                  S;\R                  " 5       \R                  " 5       /5      S< 5       rn\R                  R                  S= 5       rp\R                  R                  S> 5       rrS? rsS@ rt\R                  R                  SA 5       ru\R                  R                  SB 5       rv\R                  R                  SC 5       rwSD rx\R                  R!                  S.SESF/5      \R                  R!                  SG\R                  " 5       \RT                  4\RX                  " 5       \RZ                  4\R`                  " 5       \Rb                  4/5      SH 5       5       ry\R                  R!                  S./ SIQ5      \R                  R!                  SG\Rh                  " 5       \RV                  4\R\                  " 5       \R^                  4\Rd                  " 5       \Rf                  4/5      SJ 5       5       rzSK r{\R                  R!                  SL\Rr                  " \R                  " 5       5      \Rl                  4\Rn                  " \R                  " 5       5      \Rp                  4\Rv                  " \R                  " 5       5      \Rx                  4\Rz                  " \R                  " 5       5      \R|                  4/5      SM 5       r|\R                  R                  \R                  R!                  SN\Rr                  " \R>                  " 5       5      \Rn                  " \R>                  " 5       5      \Rv                  " \R>                  " 5       5      \Rz                  " \R>                  " 5       5      S/5      SO 5       5       r}\R                  R                  \R                  R!                  SP\Rr                  \Rn                  \Rv                  \Rz                  /5      SQ 5       5       r~SR rSS rST rSU rSV rSW rSX rSY rSZ rS[ rS\ rS] rg! \	 a    Sr GNf = f)^    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                    [         R                  " XS9nUR                  5         UR                  SS9  [        XB5      (       d   eUR	                  5       U :X  d   eU[         R                  " XS9:X  d   eX@:w  d   eUS:w  d   e[        U5      [        U5      :X  d   eUR                  SL d   eUS :w  d   e[         R                  " S UR                  S9nUR                  SL d   eUR	                  5       b   eU[         R                  " XS9:w  d   eUR                  UR                  U5      5      nUR                  U5      (       d   e[        R                  " U5      nU" 5       c   eAU" 5       b   eg )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-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_scalars.pytest_basicsr3   !   s]   X 			%!AJJLJJDJa779		%))))::;;7d1g::99
		$QVV$A::779		%)))) ""=#6#6q#9:H88H 
QB4	4<<    c                 f   [         R                  " S5      [        R                  " 5       [        R                  p2n[        R                  " XS9nUR                  5         UR                  SS9  [        XC5      (       d   eUR                  5       U:X  d   eU[        R                  " XS9:X  d   eXA:w  d   eUS:w  d   e[        U5      [        U5      :X  d   eUR                  SL d   eUS :w  d   e[        R                  " S UR                  S9nUR                  SL d   eUR                  5       b   eU[        R                  " XS9:w  d   eU R                  U R                  U5      5      nUR                  U5      (       d   e[        R                  " U5      nU" 5       c   eAU" 5       b   eg )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   sy   zz#

b6H6HuE
		%!AJJLJJDJa779		%))))::;;7d1g::99
		$QVV$A::779		%)))) ""=#6#6q#9:H88H 
QB4	4<<r4   c                  "   [         R                  " [        R                  " S5      [        R                  " 5       SS9n U R                  5         [        R                  " [        SS9   U R                  SS9  S S S 5        g ! , (       d  f       g = f)N   Fsafez(string scalar contains invalid UTF8 datamatchTr    )	pccastr#   r$   r   r%   pytestraises
ValueErrorr   s    r2   test_invalid_scalarrF      s_    
		'"BIIKe<AJJL	zG
I	



I 
I 
Is   'B  
Bc                      [         R                  " [        5         [        R                  " 5         S S S 5        g ! , (       d  f       g = f)N)rB   rC   RuntimeErrorr#   
NullScalar r4   r2   test_null_singletonrK      s#    	|	$
 
%	$	$s	   :
Ac                    [         R                  " S 5      nU[         R                  L d   eUR                  5       b   eUS:w  d   eU[         R                  " S 5      :H  SL d   eUS:H  SL d   e[         R                  [         R                  :X  d   e[         R                  S;  d   e[         R                  " S S /5      nU H+  nU[         R                  L d   eUR                  5       c  M+   e   U R                  U R                  U5      5      nUR                  U5      (       d   e[        R                  " U5      nU" 5       c   eAU" 5       c   eg )N	somethingTr   F)r   )
r#   r$   NAr'   arrayr*   r+   r,   r-   r.   )r/   nullarrvr0   r1   s         r2   
test_nullsrS      s1   99T?D255==::<;BIIdO#,,,AI%55BEE>>55
((D$<
 CBEEzzwwy    
 ""=#6#6t#<=H??4     
T	B44r4   c                      [        [        S5      5      n [        R                  " X -   5      n[	        U5      n[        U[        5      (       d   e[        U5      S:X  d   eg )Ni  )listranger#   rO   setr&   len)valuesrQ   set_from_arrays      r2   test_hashingr[      sO    %*F
((6?
#CXNnc****~#%%%r4   c                      [         R                  " SS0SS0/SS0S //5      n [         R                  " SS0S //5      n[        U S   5      n[        US   5      nX#:X  d   eg )Nr   r         r   r   )r#   rO   r(   )r   r   hash1hash2s       r2   test_hashing_struct_scalarra      si    
C8c1X&#q4(89:A
C8T"#$A1JE1JE>>r4   c            
         [        [        R                  " S5      R                  [        R                  " S5      5      5      n U S:X  d   e[        [        R                  " [
        R
                  " SSS5      [        R                  " SSS9S95      nUS	:X  d   e[        [        R                  " [
        R
                  " SSS5      [        R                  " S
5      S95      nUS:X  d   e[        [        R                  " [        R                  " S5      R                  [        R                  " S5      5      S5      5      nUS:X  d   eg )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                     [         R                  " S5      n [         R                  " S5      n[         R                  " S [         R                  " 5       S9n[        U [         R                  5      (       d   e[        U[         R                  5      (       d   e[        U[         R                  5      (       d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[        U5      S:X  d   e[        U5      S	:X  d   eUR                  5       SL d   eU R                  5       SL d   eUR                  5       b   e[        U5      SL d   e[        U 5      SL d   e[        U5      SL d   eg )
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      s]   IIeE99T?D99T
+DeR--....dB,,----dB,,----:8888t9;::::u:   :8888t9::<4;;=E!!!::<:;%:r4   c                     [         R                  " S5      n [        U [         R                  5      (       d   e[	        U 5      S:X  d   e[        U 5      S:X  d   eU R                  5       S:X  d   e[        U 5      S:X  d   e[        R                  " [        5         [         R                  " SSS9  S S S 5        [         R                  " S5      n [        U [         R                  5      (       d   e[	        U 5      S:X  d   e[        U 5      S	:X  d   eU R                  5       S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[         R                  " S
SS9n [        U [         R                  5      (       d   e[	        U 5      S:X  d   e[        U 5      S:X  d   eU R                  5       S
:X  d   e[        U 5      S
:X  d   e[        U 5      S:X  d   eg ! , (       d  f       GN1= f)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   G
G*c            	         [         R                  " S5      n [        R                  " U 5      n[	        U[        R
                  5      (       d   eUR                  5       U :X  d   eUR                  [        R                  " SS5      :X  d   e[         R                  " S5      n [        R                  " [        R                  5         [        R                  " U [        R                  " SSS9S9  S S S 5        [        R                  " [        R                  5         [        R                  " U [        R                  " SSS9S9  S S S 5        [        R                  " U [        R                  " SSS9S9n[	        U[        R
                  5      (       d   eUR                  5       U :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nr   r   r   1.1234scaler   r   )decimalDecimalr#   r$   r&   Decimal128Scalarr'   r   
decimal128rB   rC   ArrowInvalidrR   r   s     r2   test_decimal128r   	  s'    A
		!Aa,,----779>>66R]]1a((((!A	r	'
		!"--34 
(	r	'
		!"--34 
( 			!"--34Aa,,----779>> 
(	'	'	'   )F+)F<+
F9<
G
c            	         [         R                  " S5      n [        R                  " U 5      n[	        U[        R
                  5      (       d   eUR                  5       U :X  d   eUR                  [        R                  " SS5      :X  d   e[         R                  " S5      n [        R                  " [        R                  5         [        R                  " U [        R                  " SSS9S9  S S S 5        [        R                  " [        R                  5         [        R                  " U [        R                  " SSS9S9  S S S 5        [        R                  " U [        R                  " SSS9S9n[	        U[        R
                  5      (       d   eUR                  5       U :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)	Nz,1234567890123456789012345678901234567890.123+   r   r   r   r   r   r   )r   r   r#   r$   r&   Decimal256Scalarr'   r   
decimal256rB   rC   r   r   s     r2   test_decimal256r     s(   FGA
		!Aa,,----779>>66R]]2q))))!A	r	'
		!"--34 
(	r	'
		!"--34 
( 			!"--34Aa,,----779>> 
(	'	'	'r   c                  .   [         R                  " SSS5      n [         R                  " SSS5      n[        R                  " 5       [        R                  " 5       4 H7  nX4 H-  n[        R
                  " X2S9nUR                  5       U:X  a  M-   e   M9     g )Ni  r   i  r   )rj   dater#   date32date64r$   r'   )d1d2r   rn   r   s        r2   	test_dater   -  sm    	tQ	"B	tQ	"Byy{BIIK(A		!%A779>!>  )r4   c                  b   [         R                  " [        R                  " SSS5      [         R                  " S5      S9n [        R                  " SSS5      n[         R
                  " 5       [         R                  " 5       4 H*  nU R                  U5      nUR                  5       U:X  a  M*   e   g )Ni  r   rf   r   )	r#   r$   rj   ri   r   r   r   rA   r'   )r$   expectedr   results       r2   test_date_castr   8  sx    YYx((q!42<<;MNF}}T1a(Hyy{BIIK(R||~))) )r4   c                     [         R                  " SS5      n [         R                  " SS5      n[        R                  " S5      [        R                  " S5      [        R                  " S5      [        R                  " S5      /nU H7  nX4 H-  n[        R
                  " XCS9nUR                  5       U:X  a  M-   e   M9     g )	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A		!%A779>!>  r4   r   	time_typei   @r   rf   l            r   )r   r   c                 n    [         R                  " XS9nUR                  SS9  UR                  U :X  d   eg )Nr   Tr    )r#   r$   r%   r   )r   r   time_scalars      r2   test_temporal_valuesr   L  s7    : ))E2Kd#%%%r4   c                     [         R                  " SSS9n U R                  S5      [         R                  " SSS9:X  d   eU R                  S5      [         R                  " SSS9:X  d   eU R                  S5      [         R                  " SSS9:X  d   e[        R                  " [
        5         [         R                  " S5      R                  S	5        S S S 5        g ! , (       d  f       g = f)
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   .&C
C+c            
      L   [         R                  " S5        SS Kn [        R                  " SSSSSSU R                  S9n[
        R                  " U[
        R                  " SSS9S	9nUR                  [
        R                  " 5       5      [
        R                  " S
5      :X  d   eg )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                     [         R                  " S[         R                  " 5       S9n U R                  [         R                  " 5       SS9n[         R                  " S[         R                  " 5       S9nX:X  d   e[
        R                  " [         R                  5         U R                  [         R                  " 5       5        S S S 5        g ! , (       d  f       g = f)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                     [         R                  " S[         R                  " 5       S9n U R                  [         R                  " 5       SS9n[         R                  " S[         R                  " 5       S9nX:X  d   e[
        R                  " [         R                  5         U R                  [         R                  " 5       5        S S S 5        g ! , (       d  f       g = f)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                     [         R                  " S5      nUR                  U 5      nU[         R                  " [        R                  " SSS5      U S9:X  d   eg )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                     SS K n U R                  SSS9R                  n/ SQn[        U5       GH?  u  p4SU S3n[        R
                  R                  UR                  U5      5      nU R                  S5      nUS   R                  5       U:X  d   eUS   R                  SU-  -  UR                  :X  d   eS	n[        R                  " XHS
9n	SU S3n[        R
                  R                  UR                  U5      U	S9nU R                  S5      R                  S5      R                  U5      nUS   R                  5       U:X  d   eUS   R                  SU-  -  UR                  :X  a  GM@   e   g )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     sX   
---r-
:
A
AC#EU#dV1%HH((E):;	<< 56|!!#x///|!!D!G+x~~===\\$.
dV1%HH((E):(L	LL!67 ['Z^ 	 |!!#x///|!!D!G+x~~===% $r4   c                  ,   [         R                  " S5        SS Kn Sn[        R                  " SUS9n[        R
                  " SUS9nU R                  U5      n[        R                  " SS	S	S	US
9nUR                  U5      nUR                  5       nXe:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        R
                  " SUS9n[         R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       g = f)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;;$;;" 			$2.A	z	"		 
#	"	"s   +D
Dc                     [         R                  " S5        SS Kn [        R                  " SSSSSSU R                  S9[        R                  " SSSSS	S	S
U R                  S9[        R                  " SSSSSSU R                  S9/nU HA  n[
        R                  " U[
        R                  " SSS9S9nUR                  5       U:X  a  MA   e   g )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                      [         R                  " S5        [        R                  " S/[        R                  " SSS95      n [        U S   5      S:X  d   eg )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                     [         R                  " SS/SS9n / SQn[        U5       H  u  p#SU S3n[        R                  " U R	                  U5      5      n[
        R                  " SS	9n[        US
   R                  5       [
        R                  5      (       d   eUS
   R                  5       U:X  d   eUS
   R                  SUS
-   -  -  UR                  5       S-  :X  a  M   e   g )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#tfA&HHSZZ./	%%e4)A,,,.0B0BCCCC|!!#x///!""TAaC[0&&(3./ 	0 / $r4   c                     SS K n [        R                  " SS/[        R                  " S5      S9nU R	                  S5      n[        US   R                  5       U R                  5      (       d   eUS   R                  5       U:X  d   eUS   R                  UR                  :X  d   e[        R                  " S/[        R                  " S5      S9nUS   R                  5       U R	                  SSS9:X  d   eg )	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3q6<<>X%%%q6<<8>>))) ((&'bkk$.?
@Cq6<<>R\\*<4\HHHHr4   c                  J   [         R                  " SS/[         R                  " S5      5      n [        R                  " SS9n[        U S   R                  5       [        R                  5      (       d   eU S   R                  5       U:X  d   eU S   R                  UR                  5       S-  :X  d   e[         R                  " S/[         R                  " S5      S	9n [        R                  " [        5         U S   R                  5         S S S 5        g ! , (       d  f       g = f)
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9q6<<>X%%%q6<<8113c9999 ((&'bkk$.?
@C	z	"A 
#	"	"s   7D
D"c                  "   [         R                  " / SQ5      n [         R                  " U /5      n[        US   R	                  5       [         R                  5      (       d   eUS   R	                  5       U :X  d   eUS   R
                  U :X  d   eg )N)ii  ir   )r#   MonthDayNanorO   r&   r'   r   )triplerQ   s     r2   test_month_day_nano_intervalr    sp    __/0F
((F8
Cc!fllnboo6666q6<<>V###q6<<6!!!r4   r   u   mañana)r   
scalar_typc                    [         R                  " XS9n[        X25      (       d   eUR                  5       U :X  d   eUR                  5       S:w  d   e[	        U 5      [	        U5      ;   d   e[        U5      [        U 5      :X  d   eUR                  5       n[        U[         R                  5      (       d   eUR                  5       U R                  5       :X  d   eg )Nr   rM   )
r#   r$   r&   r'   rh   rv   	as_bufferBuffer
to_pybytesencode)r   r   r  r   bufs        r2   test_stringr    s     			%!Aa$$$$779779###;$q'!!!q6SZ
++-Cc299%%%%>>u||~---r4   )s   foos   barr4   Nc                 j   [         R                  " XS9n[        X25      (       d   eUR                  5       U :X  d   e[	        U5      [	        U 5      :X  d   e[        U 5      [        U5      ;   d   eUR                  5       U :X  d   eUS:w  d   eUR                  5       nU c4  Ub   e[        R                  " [        5         [        U5        S S S 5        g UR                  5       U :X  d   e[        U[         R                  5      (       d   e[        U5      U :X  d   e[        U5      nUR                  5       U :X  d   eUR                  S:X  d   eUR                   S:X  d   eUR"                  S:X  d   eUR$                  ['        U 5      4:X  d   eUR(                  S:X  d   eg ! , (       d  f       g = f)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    			%!Aa$$$$779q6SZ;$q'!!!779==
++-C}{{]]:&qM '& ~~5(((#ryy))))Qx5   Q- E)))~~$$$1$$$||q   }}U---$&&& '&s   F$$
F2c                     [         R                  " S[         R                  " S5      S9n [        U [         R                  5      (       d   eU R                  5       S:X  d   e[        U 5      S:X  d   e[        R                  " [         R                  5         [         R                  " S[         R                  " S5      S9  S S S 5        g ! , (       d  f       g = f)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27798w	r	'
		(1. 
(	'	's   *C		
C)r   r   c                 <   SS /n[         R                  " X S9nUR                  U :X  d   e[        U5      S:X  d   e[	        UR
                  [         R                  5      (       d   eUR
                  R                  5       U:X  d   e[	        X15      (       d   e[        U5      [        U5      ;   d   eUR                  5       U:X  d   eUS   R                  5       S:X  d   eUS   R                  5       b   eUS   US   :X  d   eUS   US   :X  d   e[        R                  " [        5         US     S S S 5        [        R                  " [        5         US     S S S 5        [	        U[        5      (       d   eg ! , (       d  f       NN= f! , (       d  f       N7= f)	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)  [  sS    
A
		!A66R<<q6Q;;ahh))))881$$$a7d1g779>>Q4::<5   Q4::<R5AaD==R5AaD==	z	"	" 
#	z	"	! 
#a""""	 
#	"	"	"s   .E<F<
F

Fr   c                 *   [         R                  " [        R                  " / SQ[        R                  " 5       S9U S9nU c)  [         R
                  " [         R                  " 5       5      n UR                  U :X  d   eUR                  5       / SQ:X  d   eg )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                 r   SS K n[        R                  " UR                  / SQ5      5      nUR	                  5       / SQ:X  d   e[
        R                  S4S[
        R                  /U " [        R                  " 5       5      4S[
        R                  /U " [        R                  " 5       5      4S[
        R                  /U " [        R                  " S5      5      4S[
        R                  /U " [        R                  " 5       5      4[        R                  " S5      [
        R                  /U " [        R                  " S	S
5      5      4/nU HW  u  pE[        R                  " [        [         45         [        R                  " XES9  S S S 5        [        R                  " XESS9nMY     g ! , (       d  f       N(= f)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 ]]J	23IId$ 4 IId6 33s   1F((
F6	c                     [         R                  " / SQ[         R                  " [         R                  " 5       S5      S9n [	        U 5      S:X  d   e[        U [         R                  5      (       d   e[        U 5      S:X  d   eU R                  5       / SQ:X  d   eU S   R                  5       S:X  d   eU S   R                  5       b   eU S   U S   :X  d   e[        R                  " [        5         U S	     S S S 5        [        R                  " [        5         U S     S S S 5        g ! , (       d  f       N7= f! , (       d  f       g = f)
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07CCCC779$$$Q4::<1Q4::<R5AaD==	z	"	" 
#	z	"	! 
#	" 
#	"	"	"s   2D)D:)
D7:
Ec                     [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      n SSS.n[         R
                  " XS9n[        U5      [        UR                  5       5      s=:X  a	  SS/:X  d   e   e[        UR                  5       5      [         R
                  " S[         R                  " 5       S9[         R
                  " S[         R                  " 5       S9/:X  d   e[        UR                  5       5      S[         R
                  " S[         R                  " 5       S94S[         R
                  " S[         R                  " 5       S94/:X  d   eSU;   d   eSU;   d   eSU;  d   eSU;  d   eUR                  5       U:X  d   e[        U5      [        U5      :w  d   e[        UR                  5       5      [        U5      :X  d   e[        U5      S:X  d   e[        US   [         R                  5      (       d   e[        US   [         R                  5      (       d   eUS   R                  5       S:X  d   eUS   R                  5       S:X  d   e[        U[         5      (       d   e["        R$                  " [&        5         US	     S S S 5        [         R
                  " S U S9n[        U5      [        UR                  5       5      s=:X  a	  SS/:X  d   e   eUR                  5       b   eSU;   d   eSU;   d   e[        US   [         R                  5      (       d   e[        US   [         R                  5      (       d   e[        US   [         R                  5      (       d   e[        US
   [         R                  5      (       d   eUS   R(                  SL d   eUS   R(                  SL d   eUS   R                  5       b   eUS   R                  5       b   e[        U[         5      (       d   eg ! , (       d  f       GNw= f)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    s|   	
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   P>>
Qc            	      p   [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      [         R                  " S[         R
                  " 5       5      /5      n [         R                  " / SQU S9n[        U5      [        UR                  5       5      s=:X  a	  / SQ:X  d   e   e[        U5      S:X  d   eX:X  d   e[        UR                  5       5      S[         R                  " S[         R                  " 5       5      4S[         R                  " S[         R                  " 5       5      4S[         R                  " S[         R
                  " 5       5      4/:X  d   eSU;   d   eSU;   d   eS	U;  d   eS
U;  d   e[        R                  " [        5         US     S S S 5        [        US   [         R                  5      (       d   eUS   R!                  5       S:X  d   e[        US
   [         R"                  5      (       d   eUS
   R!                  5       S:X  d   e[        US   [         R                  5      (       d   eUS   R!                  5       S:X  d   e[        US   [         R$                  5      (       d   eUS   R!                  5       S:X  d   eS['        U5      ;   d   e[        R                  " [(        SS9   UR!                  5         S S S 5        g ! , (       d  f       GNG= f! , (       d  f       g = f)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    sp   	
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		 
B	A! 
!	   
B	As   L;L'
L$'
L5c                    [         R                  " [         R                  " 5       [         R                  " 5       5      nSS/n[         R                  " X!S9n[        U5      S:X  d   e[        U[         R                  5      (       d   e[        UR                  [         R                  5      (       d   e[        U5      S:X  d   eUR                  R                  5       SSS.S	SS./:X  d   e[        X25       H  u  pEXE:X  a  M   e   [         R                  " S US9 H  nM     UR                  5       U:X  d   eUS   [         R                  " S	[         R                  " 5       S9[         R                  " S[         R                  " 5       S94:X  d   eUS
   US   :X  d   eUS   US   :X  d   eUS	   [         R                  " S[         R                  " 5       S9:X  d   e[        R                  " [         5         US     S S S 5        [        R                  " [         5         US     S S S 5        [        R                  " ["        5         US     S S S 5        U R%                  U R'                  U5      5      nUR)                  U5      (       d   eUR                  SS9SSS.:X  d   e[        U[*        5      (       d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)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[    sZ   	bggi	(B	8A
		!Aq6Q;;a&&&&ahh))))7AAAA88a a $    A	vv  YYt"% & 779>>Q4
		#BIIK(
		!"'')$    R5AaD==R5AaD==S6RYYqrwwy1111	z	"	" 
#	z	"	! 
#	x	 	* 
! ""=#6#6q#9:H??17787,aa0@@@@a!!!! 
#	"	"	"	 	 s$   9J?!K	K!?
K
K!
K/c                     [         R                  " [         R                  " 5       [         R                  " 5       5      n SS/n[         R                  " XS9nUR                  S S9U:X  d   e[        R                  " [        5         UR                  SS9(       d   e S S S 5        [        R                  " SS9   UR                  SS9S	S
0:X  d   e S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)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	 wwxw000 
! 
O	Pwwww/C8;;; 
Q	P 
!	  
Q	Ps   C9C,
C),
C:c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  R                  X5      n/ SQnUR	                  5       U:X  d   e[        [        X5      5       H  u  nu  pgX5   nUR                  5       U:X  d   eUR                  R                  5       U:X  d   eUR                  R                  U5      (       d   eUR                  R                  U5      (       d   eU R                  U R                  U5      5      n	U	R                  U5      (       a  M   e   g )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&&&s756	6AFwwyA~~ww}}!###ww~~a    ||"":.... &&}':':1'=>q!!!! 7r4   c            	         / SQn / SQn[         R                  R                  X5      nUS   n[        U[         R                  5      (       d   e[        UR
                  [         R                  5      (       d   eUR
                  [         R                  " U5      S   :X  d   eUR                  5       S:X  d   eUS   n[        UR
                  [         R                  5      (       d   eUR                  5       b   e[        R                  " [        5         [         R                  " S[         R                  " [         R                  " 5       [         R                  " 5       5      5        S S S 5        g ! , (       d  f       g = f)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



+
+H
=CVFfb445555fllBNN3333<<288F+A....<<>Q WFfllBNN3333<<>!!! 
*	+
		!R''
BHHJ?@ 
,	+	+s   AE11
E?c           
      Z   [         R                  R                  [         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ5      [         R                  " / SQ5      /5      nU H  nUR                  SS9  [        U[         R                  5      (       d   eUR                  R                  UR                  5      (       d   eUR                  SL d   e[        R                  " [         R                  5         U R                  U R                  U5      5        S S S 5        M     US   R                   S:X  d   eUS   R#                  5       S:X  d   eUS	   R                   S:X  d   eUS	   R#                  5       S
:X  d   eUS   R                   S	:X  d   eUS   R#                  5       S:X  d   eUS   R                   S	:X  d   eUS   R#                  5       S:X  d   e[         R                  R%                  [         R                  " / SQSS9[         R                  " / SQSS9[         R                  " / SQSS9[         R                  " / SQSS9/S9nU H  nUR                  SS9  [        U[         R                  5      (       d   eUR                  R                  UR                  5      (       d   eUR                  SL d   e[        R                  " [         R                  5         U R                  U R                  U5      5        S S S 5        M     US   R                   S:X  d   eUS   R#                  5       S:X  d   eUS   R                   S	:X  d   eUS   R#                  5       S:X  d   eg ! , (       d  f       GM  = f! , (       d  f       GMA  = f)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 	


!R^^,,,,vv}}SXX&&&&zzT!!!]]2667 3 3A 67 87  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 	


!R^^,,,,vv}}SXX&&&&zzT!!!]]2667 3 3A 67 87  q6q   q6<<>T!!!q6q   q6<<>QA 874 87s   !N=!N
N	
N*	c                     [         R                  " S/[         R                  " [         R                  " 5       [         R                  " 5       5      5      R	                  5       S/:X  d   e[         R                  " S/[         R                  " [         R
                  " S[         R                  " 5       SS9[         R
                  " S[         R                  " 5       5      5      5      R	                  5       S/:X  d   eg)zo
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                     [         R                  " [         R                  " S[         R                  " [         R                  " 5       [         R
                  " 5       5      5      [         R                  " S[         R                  " [         R                  " [         R                  " 5       [         R
                  " 5       5      5      5      /5      n SS0SS0SS0/S	.n[         R                  " XS
9nUR                  SS9U:X  d   eg )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                     [         R                  " [         R                  " S[         R                  " [         R                  " 5       [         R                  " [         R                  " 5       [         R
                  " 5       5      5      5      [         R                  " S[         R                  " [         R                  " [         R                  " 5       [         R                  " [         R                  " 5       [         R
                  " 5       5      5      5      5      /5      n SSS00SSS00S	S
S00/S.n[         R                  " XS9nUR                  SS9U:X  d   eg )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            
      ,   [         R                  " [         R                  " S[         R                  " [         R                  " 5       [         R                  " 5       5      5      /5      n S0 0n[         R
                  " XS9nUR                  SS9U:X  d   eg )Nr=  r   rS  rT  )r#   rB  rC  rV  r   r$   r'   )map_typerR   r   s      r2   !test_map_scalar_with_empty_valuesr    sl    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     sM  $     -   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tR%8%89!*4" __AB	2 #*4& tR__%'*4( tR__%)*4* BOO%r';';<+*4, BOO%r';';<-*4. BNN$b&9&9:/*40 BNN$b&9&9:1*42 RYYq\23343*44 bmm$5*46 2==+R-?-?@7*48 bhhrwwy!,b.D.DE9*4: RWWY'):):;;*4< 2%%bggi0"2H2HI=*4> ]]D"//2?*4@ ]]BIIK9A*4B dB$6$67C*4D !!#+++:BIIcN__E*4H !!#T2??;I*4J Qr'8'89K*4L ___%t""$M*4P Aq6D"//2Q*4R 277299;	:BLLIS*4 *VW*V@  <
4& 	H 	H2>$$"*" ';/		#
BIIcN	299S>		$
BIIdO	299T?		$
BIIdO	299T?		$
BIIdO	299T?		
BIIK	299;		
BIIK	299;T
BLL	2<<D
BKK	2;;t++-.	2%%'(52 8&2;; &98&' O O&& biik :;D <D > >6  06 0 0 
I 
I 
 
" 5)"45-YY["//"__,,-^^r**+0 

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