+
    nDj=T                        ^ RI t ^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt	^ RIH
t
 ^ RIHt ]P                  P                  t ^ RIHt ^ RIt]P*                  ! RR7      R 4       tR	 tRR
 ltRR lt]P                  P$                  ]P                  P5                  R. RO4      R 4       4       tR tR tR tR tR t R t!R t"]P                  PF                  R 4       t$R t%R t&R t'R t(R#   ] d     Li ; i)    N)Path)fs)util)assert_frame_equalmodule)scopec                     V R ,          # orc )base_datadirs   &P/data/cameron/venvs/s3viz/lib/python3.14/site-packages/pyarrow/tests/test_orc.pydatadirr   ,   s    %    c           	     $   V EF  pW,          pW,          pVR8X  d   V UUu. uF  qU F  qfP                  4       RR08H  NK  	  K!  	  upp'       dT   W,          P                  4       p\        V4       F(  w  rV Uu. uF  qfR,          VR,          3NK  	  upWx&   K*  	  WqV&   K  V^ ,          P                  p	\	        V	\
        P
                  4      '       d   \        P                  ! V4      pEM\	        V	\
        P                  4      '       d   VP                  P                  pMV	\        P                  J d   R.\        V4      ,          p
\        \        WC4      4       F  w  pw  rk\        P                  ! V4      '       d   K&  VP                  4       P                   p^
V) ,          p\        P                  ! \#        W,          4      4      P%                  V4      W&   K  	  \        P&                  ! V
4      pW1V&   EK   	  R# u uppi u upi )zS
Fix type of expected values (as read from JSON) according to
actual ORC datatype.
mapkeyvalueN)keyscopy	enumerate	__class__
issubclassdatetimepdto_datetimedatedtdecimalDecimallenzipisnullas_tupleexponentroundscalebSeries)actual_colsexpected_colsnameexpectedactualmdcolitypconverted_decimalsvexpfactors   &&            r   fix_example_valuesr7   1   s   
  &"EM7?Kx!AeW---xKK%**,C!(+:;<!QU8QwZ0!< ,"%$Qi!!c8,,--~~h/HX]]++{{''HGOO#"&#h-!7&s6'<=	6Ayy||**,//CC4ZFaj(9:AA#F ')	 > yy!34H&d=  L =s   %H<Hc                 X    Vf   Ve   WV P                  RR7      p\        WRR7       R # )NT)dropF)check_dtype)reset_indexr   )orc_dfexpected_dfstartstops   &&&&r   check_example_valuesr@   W   s/    D,!-99t9Dv>r   c           
     P   ^ RI Hp VP                  V 4      pVP                  4       p\	        V\
        P                  4      '       g   Q hVP                  4        \        P                  ! VP                  4       4      p\        VP                  4      \        VP                  4      8X  g   Q hVP                  P                  VP                  4      '       g   VP                  VP                  R7      pV'       d   \        Wa4       \!        Wa4       ^ p\#        VP$                  4       Fg  pVP'                  V4      p	\!        \        P                  ! V	P                  4       4      VVV\)        V	4      ,           R7       V\)        V	4      ,          pKi  	  WtP*                  8X  g   Q hR# )z;
Check a ORC file against the expected columns dictionary.
r
   columns)r>   r?   N)pyarrowr   ORCFileread
isinstancepaTablevalidater   	DataFrame	to_pydictsetrC   equalsreindexr7   r@   rangenstripesread_striper!   nrows)
orc_pathr=   need_fixr   orc_filetabler<   json_posr1   batchs
   &&&       r   check_example_filerZ   ]   s9    {{8$HMMOEeRXX&&&&	NN \\%//+,F{""#s6>>':::: >>  !4!455!))&..)A6/-H8$$%$$Q'R\\%//*;<(#+"*SZ"7	9 	CJ & ~~%%%r   filenamec                    W,          p\         P                  ! \        VP                  R4      4      RR7      p\	        W#RR7       R# )z
Check a ORC file example against the equivalent JSON file, as given
in the Apache ORC repository (the JSON file has one JSON object per
line, corresponding to one row in the ORC file).
z.jsn.gzT)lines)rU   N)r   	read_jsonstrwith_suffixrZ   )r[   r   pathrW   s   &&  r   test_example_using_jsonrb      s6     DLLT--i89FEtT2r   c                     V R ,          pR\        V4      : R2p\        P                  ! \        P                  RV.RR7       R# )TestOrcFile.testDate1900.orczif 1:
        import os
        os.environ['TZDIR'] = '/tmp/non_existent'

        from pyarrow import orc
        try:
            orc_file = orc.ORCFile(z)
            orc_file.read()
        except Exception as e:
            assert "time zone database" in str(e).lower(), e
        else:
            assert False, "Should have raised exception"
    -cTcheckN)r_   
subprocessrunsys
executable)r   ra   codes   &  r   test_timezone_database_absentrm      sF     33D$ %(I= 1D NNCNND$/t<r   c                 P   \        R 4      pVP                  4       '       g   \        P                  ! RV 24       \        VR,          4      p \        P
                  ! W#RR7       VR,          R,          P                  RR	7       VR
,          R,          P                  RR	7       V R,          pR\        V4      : R\        V4      : R2p\        P                  ! \        P                  RV.RR7       R#   \         d$   p\        P                  ! RT 24        Rp?LRp?ii ; i)z/usr/share/zoneinfoz Test needs timezone database in zoneinfoT)symlinksz"Failed to copy timezone database: NUSPacific)
missing_okAmericaLos_Angelesrd   z6if 1:
        import os
        os.environ['TZDIR'] = zA

        from pyarrow import orc
        orc_file = orc.ORCFile(a!  )
        try:
            orc_file.read()
        except Exception as e:
            timezones = ["zoneinfo/US/Pacific", "zoneinfo/America/Los_Angeles"]
            assert any(tz in str(e) for tz in timezones), e
        else:
            assert False, "Should have raised exception"
    re   rf   )r   existspytestskipshutilcopytreeOSErrorunlinkr_   rh   ri   rj   rk   )r   tmpdirsource_tzdirtzdirera   rl   s   &&     r   test_timezone_absentr      s    -.L  6|nEF*$%E>d; T\I%%%6
Y&..$.?33D"5zn -  !$D	} -D NNCNND$/t<1  >8<==>s   C7 7D%D  D%c                    ^ RI Hp VP                  V R,          4      P                  4       pVP                  ^ 8X  g   Q h\
        P                  ! R\
        P                  ! 4       3R\
        P                  ! 4       3R\
        P                  ! 4       3R\
        P                  ! 4       3R\
        P                  ! 4       3R\
        P                  ! 4       3R	\
        P                  ! 4       3R
\
        P                  ! 4       3R\
        P                  ! 4       3R\
        P                   ! R\
        P"                  ! \
        P                   ! R\
        P                  ! 4       3R\
        P                  ! 4       3.4      4      3.4      3R\
        P"                  ! \
        P                   ! R\
        P                  ! 4       3R\
        P                  ! 4       3.4      4      3R\
        P$                  ! \
        P                  ! 4       \
        P                   ! R\
        P                  ! 4       3R\
        P                  ! 4       3.4      4      3.4      pVP                  V8X  g   Q hR# )r   r
   zTestOrcFile.emptyFile.orcboolean1byte1short1int1long1float1double1bytes1string1middlelistr   N)rD   r   rE   rF   num_rowsrH   schemabool_int8int16int32int64float32float64binarystringstructlist_map_)r   r   rW   expected_schemas   &   r   test_orcfile_emptyr      s   KK"==>CCEE>>Qii	RXXZ 	"'')	288:		"((*	2::< 	BJJL!	299;	BIIK 	299bhh		FBHHJ/%ryy{35 67 8  	
 
II
+!299;/1 2
 	 
				FBHHJ#7$-ryy{#;#= > 	'! O0 <<?***r   c                 :   ^ RI Hp \        P                  ! R. RO/4      pV R,          pVP	                  4        VR,          pVP                  V\        V4      4       VP                  V\        P                  ! 4       R7      pVP                  V4      '       g   Q hVP                  R\        P                  ! V 4      R7      pVP                  V4      '       g   Q hVP                  \        P                  ! V4      4      pVP                  V4      '       g   Q hR# )	r   r
   adata_dirzdata.orc)
filesystemzdata_dir/data.orcN         )rD   r   rH   rW   mkdirwrite_tabler_   
read_tabler   LocalFileSystemrN   r   _filesystem_uri)r}   r   rW   	directoryra   results   &     r   test_filesystem_urir      s    HHc9%&E#IOOz!DOOE3t9% ^^DR-?-?-A^BF== ^^(<(<V(D  FF== ^^T"$F==r   c                 "   ^ RI Hp \        P                  ! . RO4      p\        P                  ! . RO4      p\        P                  ! RVRV/4      pV P                  R4      pVP                  WE4       VP                  V4      pVP                  V4      '       g   Q hVP                  V. 4      p^VP                  8X  g   Q h^ VP                  8X  g   Q hVP                  VR.R7      p^VP                  8X  g   Q h^VP                  8X  g   Q hR# )	r   r
   Nr   utf8test.orcrB   r   Nr   NNArrowNORC)rD   r   rH   arrayrW   joinr   r   rN   r   num_columns)r}   r   r   brW   fileoutput_tables   &      r   test_orcfile_readwriter     s    
#$A
-.AHHgq&!,-E;;z"DOOE >>$'L<<%%%%>>$+L%%%%%(((((>>$	>:L%%%%%(((((r   c                  x   ^ RI Hp  ^ RIHp V! 4       p\        P
                  ! . RO4      p\        P
                  ! . RO4      p\        P                  ! RVRV/4      pV P                  WR4       VP                  ^ 4       V P                  V4      pVP                  4       pVP                  V4      '       g   Q hR# )r   r
   )BytesIONr   r   r   r   )rD   r   ior   rH   r   rW   r   seekrE   rF   rN   )r   r   bufr   r   rW   rV   r   s           r   test_bytesio_readwriter     s    
)C
#$A
-.AHHgq&!,-EOOEHHQK{{3H==?L<<%%%%r   c                  b   ^ RI Hp  \        P                  ! 4       p\        P                  ! . R	O4      p\        P                  ! . R
O4      p\        P
                  ! RVRV/4      pV P                  WA4       \        P                  ! VP                  4       4      pV P                  V4      pVP                  4       pVP                  V4      '       g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q h\        P                  ! 4       p\         P"                  ! \$        4      ;_uu_ 4        V P                  W4       RRR4       \        P                  ! VP                  4       4      pV P                  V4      pVP                  4       pVP                  V4      '       g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hR#   + '       g   i     L; i)r   r
   Nr   r   UNCOMPRESSEDz0.12i'     r   r   rD   r   rH   BufferOutputStreamr   rW   r   BufferReadergetvaluerE   rF   rN   compressionfile_versionrow_index_stridecompression_sizerw   warnsFutureWarningr   buffer_output_streamr   r   rW   buffer_readerrV   r   s           r   test_buffer_readwriter   (  s   002
#$A
-.AHHgq&!,-EOOE0OO$8$A$A$CDM{{=)H==?L<<%%%%>111  F***$$---$$--- 002	m	$	$,4 
%OO$8$A$A$CDM{{=)H==?L<<%%%%>111  F***$$---$$--- 
%	$s   HH.	c                  z   ^ RI Hp  \        P                  ! 4       p\        P                  ! . RO4      p\        P                  ! . RO4      p\        P
                  ! RVRV/4      pV P                  VVRRRRR	7       \        P                  ! VP                  4       4      pV P                  V4      pVP                  4       pVP                  V4      '       g   Q hVP                  R
8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q h\        P                  ! 4       p\         P"                  ! \$        4      ;_uu_ 4        V P                  VVRRRRR	7       RRR4       \        P                  ! VP                  4       4      pV P                  V4      pVP                  4       pVP                  V4      '       g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hR#   + '       g   i     L; i)r   r
   Nr   r   snappyz0.11i  r   )r   r   r   compression_block_sizeSNAPPYuncompressedi N  r   r   r   r   r   s           r   'test_buffer_readwrite_with_writeoptionsr   I  s   002
#$A
-.AHHgq&!,-EOO$   OO$8$A$A$CDM{{=)H==?L<<%%%%8+++  F***$$,,,$$--- 002	m	$	$ &"#( 	 	
 
% OO$8$A$A$CDM{{=)H==?L<<%%%%>111  F***$$---$$---# 
%	$s   H**H:	c                     ^ RI Hp  \        P                  ! 4       p\        P                  ! . RO4      p\        P
                  ! RV/4      p\        P                  ! \        4      ;_uu_ 4        V P                  VV^ R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV^ R	7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR!R	7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR
R	7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV^ R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV^ R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR"R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV^ R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV^ R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR#R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR$R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV^ R.R7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VV0 R%mR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVRR7       RRR4       \        P                  ! \        4      ;_uu_ 4        V P                  VVR&R7       RRR4       R#   + '       g   i     EL:; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELc; i  + '       g   i     EL8; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELa; i  + '       g   i     EL6; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL_; i  + '       g   i     EL4; i  + '       g   i     EL	; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL]; i  + '       g   i     EL2; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     R# ; i)'r   r
   Nr   )
batch_sizegR @gp=
ף?)r   z1.1)stripe_sizegG @)r   nonezlid)r   gR"@)compression_strategynolarge)r   gGz0@cat)padding_tolerancearrow)dictionary_key_size_thresholdg333333?r   )bloom_filter_columnsgffffff?)bloom_filter_fppg?r   iipi8ig	>   r   r   g)rD   r   rH   r   r   rW   rw   raises
ValueErrorr   	TypeError)r   r   r   rW   s       r   +test_buffer_readwrite_with_bad_writeoptionsr   y  sE   002
#$AHHgq\"E 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
y	!	!  	 	
 
" 
z	"	"  	 	
 
# 
z	"	"  	 	
 
# 
z	"	" #$ 	 	
 
# 
z	"	" #' 	 	
 
# 
z	"	" #* 	 	
 
# 
y	!	! !" 	 	
 
" 
z	"	" !% 	 	
 
# 
z	"	" !( 	 	
 
# 
z	"	"  	 	
 
# 
z	"	" ! 	 	
 
# 
z	"	" $ 	 	
 
# 
z	"	" # 	 	
 
# 
z	"	" *1 	 	
 
# 
z	"	" *- 	 	
 
# 
z	"	" *. 	 	
 
# 
z	"	" !) 	 	
 
# 
z	"	" "#S 	 	
 
# 
z	"	" !+ 	 	
 
# 
z	"	" $ 	 	
 
# 
z	"	"   	 	
 
# 
z	"	" ! 	 	
 
#	"g 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
"	!	! 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
"	!	! 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	" 
#	"	"sh  .^4-_,_+_0*`)`(`,'a &a%a($a<#b"b$!b8 cc c4ddd0eee,f ff(f<gg$g84_	_	_-	0`	`	`)	,`=	 a	a%	(a9	<b	b!	$b5	8c		c	 c1	4d	d	d-	0e	e	e)	,e=	 f	f%	(f9	<g	g!	$g5	8h		c                 
   ^ RI Hp \        P                  ! R\        P                  ! 4       4      p\        P                  ! R\        P
                  ! V.4      4      p\        P                  ! R\        P                  ! 4       4      \        P                  ! R\        P                  ! \        P                  ! R\        P                  ! 4       4      4      4      \        P                  ! R\        P
                  ! V\        P                  ! R\        P                  ! 4       4      .4      4      \        P                  ! R	\        P                  ! \        P                  ! R\        P
                  ! \        P                  ! R
\        P                  ! 4       4      \        P                  ! R\        P                  ! 4       4      .4      4      4      4      \        P                  ! R\        P                  ! 4       4      .p^ .^^..RR^/R^/.R
^R^/R
^R^/..^	..p\        P                  ! V\        P                  ! V4      R7      p\        V R,          4      pVP                  Wg4       VP                  V4      pVP                  4       p	V	P                  V4      '       g   Q hVP                  RR.R7      p
V
P                  VP                  RR.4      4      '       g   Q hVP                  . ROR7      pVP                  VP                  . RO4      4      '       g   Q hVP                  R.R7      p\        P                  ! RRR^//./4      pVP                  V4      '       g   Q hVP                  R.R7      p\        P                  ! RR^/./4      pVP                  V4      '       g   Q hVP                  . ROR7      pVP                  VP                  RR.4      4      '       g   Q hVP                  R.R7      p\        P                  ! R	R
^/R
^/../4      pVP                  V4      '       g   Q hVP                  ^ ^.R7      p
V
P                  VP                  RR.4      4      '       g   Q hVP                  . ROR7      pVP                  VP                  . RO4      4      '       g   Q h\         P"                  ! \$        4      ;_uu_ 4        VP                  R.R7       RRR4       \         P"                  ! \&        4      ;_uu_ 4        VP                  ^.R7       RRR4       R#   + '       g   i     LP; i  + '       g   i     R# ; i)r   r
   innerr   basicr   itemr   inner2list-structinner1basic2)r   r   rB   struct.middle.innerstruct.inner2zlist-struct.inner1wrongN)r   r   r   )r   r   r   r   )r   r   r   )rD   r   rH   fieldr   r   r   r   rW   r   r_   r   rE   rF   rN   selectrw   r   IOErrorr   )tempdirr   r   r   fieldsarrsrW   ra   rV   result1result2result3result4	expected4result5	expected5result6result7	expected7s   &                  r   test_column_selectionr  [  s"    HHWbhhj)EXXh		5' 23F
"((*%
BHHRXXfbhhj9:	
 	bii(BHHJ)G HI	
 	288BHH		HHXrxxz2HHXrxxz2# % 	
 	288:&!F& 
q!fXGQ<1=>Q!
$xHa&@	ABQCID HHT"))F"34Ew#$DOOE {{4 H mmoG>>%     mmWh$7m8G>>%,,':;<<<<mm$@mAG>>%,,'CDEEEE mm%:$;m<G(h!%=$>?@I>>)$$$$mm_$5m6G(h]O45I>>)$$$$mm@  G >>%,,'9:;;;;mm%9$:m;G-Ha=8Q-*H)IJKI>>)$$$$ mmQFm+G>>%,,':;<<<<mmIm.G>>%,,'HIJJJJ 
w		 	wi( 
 
 
z	"	"qc" 
#	" 
 	
 
#	"	"s   T2U2U	U	c           	      >   ^ RI Hp \        V R,          4      pVP                  V4      ;_uu_ 4       p\        P
                  ! \        4      ;_uu_ 4        VP                  4        RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   r
   r   N)rD   r   r_   	ORCWriterrw   r   AttributeErrortest)r   r   ra   writers   &   r   test_wrong_usage_orc_writerr    s]    w#$D	t		]]>**KKM + 
	** 
		s#   #BA8	&B8BBB	c                 ~   ^ RI Hp \        V R,          4      p\        P                  ! . RO4      p\        P                  ! . RO4      p\        P
                  ! RVRV/4      p\        P                  ! \        P                  4      ;_uu_ 4        VP                  WR4       RRR4       R#   + '       g   i     R# ; i)r   r
   r   Nr   r   r   )NNNN)
rD   r   r_   rH   r   rW   rw   r   ArrowNotImplementedErrorr   )r   r   ra   r   r   rW   s   &     r    test_orc_writer_with_null_arraysr    sy    w#$D
#$A
)*AHHgq&!,-E	r22	3	3$ 
4	3	3	3s   B++B<	)NN)F)zTestOrcFile.test1.orcrd   zdecimal.orc))r   r   pathlibr   ry   rh   rj   rw   rD   rH   r   pyarrow.testsr   markr   
pytestmarkpandas.testingr   pandasr   ImportErrorfixturer   r7   r@   rZ   parametrizerb   rm   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   <module>r     s  $      
    
 [[__
	1
 h    #'L?"&J  & 
	3 	3=("=J+B 0)&&.B ,. ,.^_
DL#^%W  		s   
C2 2C<;C<