
    <>i=T                        S SK r S SKrS SKJr  S SKrS SKrS SKrS SKrS SKr	S SKJ
r
  S SKJr  \R                  R                  r S SKJr  S SKr\R*                  " SS9S 5       rS	 rSS
 jrSS jr\R                  R$                  \R                  R5                  S/ SQ5      S 5       5       rS rS rS rS rS r S r!S r"\R                  RF                  S 5       r$S r%S r&S r'S r(g! \ a     Nf = f)    N)Path)fs)util)assert_frame_equalmodule)scopec                     U S-  $ )Norc )base_datadirs    U/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_orc.pydatadirr   ,   s    %    c           	         U GH  nX   nX   nUS:X  a}  U VVs/ s H   oU  H  ofR                  5       SS1:H  PM     M"     snn(       aH  X   R                  5       n[        U5       H!  u  pU Vs/ s H  ofS   US   4PM     snXx'   M#     XqU'   M  US   R                  n	[	        U	[
        R
                  5      (       a  [        R                  " U5      nO[	        U	[
        R                  5      (       a  UR                  R                  nOU	[        R                  L a  S/[        U5      -  n
[        [        XC5      5       Hw  u  nu  pk[        R                  " U5      (       a  M%  UR                  5       R                   nSU* -  n[        R                  " [#        X-  5      5      R%                  U5      X'   My     [        R&                  " U
5      nX1U'   GM     gs  snnf s  snf )zS
Fix type of expected values (as read from JSON) according to
actual ORC datatype.
mapkeyvaluer   N
   )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   'G0G$c                 F    Uc  Ub  XU R                  SS9n[        XSS9  g )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           
      (   SSK Jn  UR                  U 5      nUR                  5       n[	        U[
        R                  5      (       d   eUR                  5         [        R                  " UR                  5       5      n[        UR                  5      [        UR                  5      :X  d   eUR                  R                  UR                  5      (       d  UR                  UR                  S9nU(       a  [        Xa5        [!        Xa5        Sn[#        UR$                  5       H\  nUR'                  U5      n	[!        [        R                  " U	R                  5       5      UUU[)        U	5      -   S9  U[)        U	5      -  nM^     XtR*                  :X  d   eg)z;
Check a ORC file against the expected columns dictionary.
r   r
   columns)r>   r?   N)pyarrowr
   ORCFileread
isinstancepaTablevalidater   	DataFrame	to_pydictsetrD   equalsreindexr7   r@   rangenstripesread_striper!   nrows)
orc_pathr=   need_fixr
   orc_filetabler<   json_posr1   batchs
             r   check_example_filer[   ]   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   filename)zTestOrcFile.test1.orcTestOrcFile.testDate1900.orczdecimal.orcc                 z    X-  n[         R                  " [        UR                  S5      5      SS9n[	        X#SS9  g)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)rV   N)r   	read_jsonstrwith_suffixr[   )r\   r   pathrX   s       r   test_example_using_jsonrd      s6     DLLT--i89FEtT2r   c                 z    U S-  nS[        U5      < S3n[        R                  " [        R                  SU/SS9  g )Nr]   zif 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check)ra   
subprocessrunsys
executable)r   rc   codes      r   test_timezone_database_absentrn      sF     33D$ %(I= 1D NNCNND$/t<r   c                    [        S5      nUR                  5       (       d  [        R                  " SU 35        [        US-  5      n [        R
                  " X#SS9  US-  S-  R                  SS	9  US
-  S-  R                  SS	9  U S-  nS[        U5      < S[        U5      < S3n[        R                  " [        R                  SU/SS9  g ! [         a#  n[        R                  " SU 35         S nANS nAff = f)Nz/usr/share/zoneinfoz Test needs timezone database in zoneinfoT)symlinksz"Failed to copy timezone database: USPacific)
missing_okAmericaLos_Angelesr]   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"
    rf   rg   )r   existspytestskipshutilcopytreeOSErrorunlinkra   ri   rj   rk   rl   )r   tmpdirsource_tzdirtzdirerc   rm   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   	C 
C>C99C>c                    SSK Jn  UR                  U S-  5      R                  5       nUR                  S:X  d   e[
        R                  " S[
        R                  " 5       4S[
        R                  " 5       4S[
        R                  " 5       4S[
        R                  " 5       4S[
        R                  " 5       4S	[
        R                  " 5       4S
[
        R                  " 5       4S[
        R                  " 5       4S[
        R                  " 5       4S[
        R                   " S[
        R"                  " [
        R                   " S[
        R                  " 5       4S[
        R                  " 5       4/5      5      4/5      4S[
        R"                  " [
        R                   " S[
        R                  " 5       4S[
        R                  " 5       4/5      5      4S[
        R$                  " [
        R                  " 5       [
        R                   " S[
        R                  " 5       4S[
        R                  " 5       4/5      5      4/5      nUR                  U:X  d   eg )Nr   rB   zTestOrcFile.emptyFile.orcboolean1byte1short1int1long1float1double1bytes1string1middlelistr   )rE   r
   rF   rG   num_rowsrI   schemabool_int8int16int32int64float32float64binarystringstructlist_map_)r   r
   rX   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                    SSK Jn  [        R                  " S/ SQ05      nU S-  nUR	                  5         US-  nUR                  U[        U5      5        UR                  U[        R                  " 5       S9nUR                  U5      (       d   eUR                  S[        R                  " U 5      S9nUR                  U5      (       d   eUR                  [        R                  " U5      5      nUR                  U5      (       d   eg )	Nr   rB   a         data_dirzdata.orc)
filesystemzdata_dir/data.orc)rE   r
   rI   rX   mkdirwrite_tablera   
read_tabler   LocalFileSystemrO   r   _filesystem_uri)r~   r
   rX   	directoryrc   results         r   test_filesystem_urir      s    HHc9%&E#IOOz!DOOE3t9% ^^DR-?-?-A^BF== ^^(<(<V(D  FF== ^^T"$F==r   c                    SSK Jn  [        R                  " / SQ5      n[        R                  " / SQ5      n[        R                  " X#S.5      nU R                  S5      nUR                  XE5        UR                  U5      nUR                  U5      (       d   eUR                  U/ 5      nSUR                  :X  d   eSUR                  :X  d   eUR                  US/S	9nSUR                  :X  d   eS
UR                  :X  d   eg )Nr   rB   r   Nr   NNArrowNORCr   utf8test.orc   r   rC   r   )rE   r
   rI   arrayrX   joinr   r   rO   r   num_columns)r~   r
   r   brX   fileoutput_tables          r   test_orcfile_readwriter     s    
#$A
-.AHHq,-E;;z"DOOE >>$'L<<%%%%>>$+L%%%%%(((((>>$	>:L%%%%%(((((r   c                  p   SSK Jn   SSKJn  U" 5       n[        R
                  " / SQ5      n[        R
                  " / SQ5      n[        R                  " X4S.5      nU R                  XR5        UR                  S5        U R                  U5      nUR                  5       nUR                  U5      (       d   eg )Nr   rB   )BytesIOr   r   r   )rE   r
   ior   rI   r   rX   r   seekrF   rG   rO   )r
   r   bufr   r   rX   rW   r   s           r   test_bytesio_readwriter     s    
)C
#$A
-.AHHq,-EOOEHHQK{{3H==?L<<%%%%r   c                  4   SSK Jn   [        R                  " 5       n[        R                  " / SQ5      n[        R                  " / SQ5      n[        R
                  " X#S.5      nU R                  XA5        [        R                  " UR                  5       5      nU R                  U5      nUR                  5       nUR                  U5      (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   e[        R                  " 5       n[         R"                  " [$        5         U R                  X5        S S S 5        [        R                  " UR                  5       5      nU R                  U5      nUR                  5       nUR                  U5      (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   eg ! , (       d  f       N= f)
Nr   rB   r   r   r   UNCOMPRESSEDz0.12i'     rE   r
   rI   BufferOutputStreamr   rX   r   BufferReadergetvaluerF   rG   rO   compressionfile_versionrow_index_stridecompression_sizerx   warnsFutureWarningr
   buffer_output_streamr   r   rX   buffer_readerrW   r   s           r   test_buffer_readwriter   (  s   002
#$A
-.AHHq,-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            
      @   SSK Jn   [        R                  " 5       n[        R                  " / SQ5      n[        R                  " / SQ5      n[        R
                  " X#S.5      nU R                  UUSSSS	S
9  [        R                  " UR                  5       5      nU R                  U5      nUR                  5       nUR                  U5      (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   e[        R                  " 5       n[         R"                  " [$        5         U R                  UUSSSS	S
9  S S S 5        [        R                  " UR                  5       5      nU R                  U5      nUR                  5       nUR                  U5      (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   eg ! , (       d  f       N= f)Nr   rB   r   r   r   snappyz0.11i  r   )r   r   r   compression_block_sizeSNAPPYuncompressedi N  r   r   r   s           r   'test_buffer_readwrite_with_writeoptionsr   I  s   002
#$A
-.AHHq,-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                     SSK Jn   [        R                  " 5       n[        R                  " / SQ5      n[        R
                  " SU05      n[        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS	9  S S S 5        [        R                  " [        5         U R                  UUS
S	9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUSS9  S S S 5        [        R                  " [        5         U R                  UUS S!9  S S S 5        [        R                  " [        5         U R                  UUSS"/S!9  S S S 5        [        R                  " [        5         U R                  UU1 S#kS!9  S S S 5        [        R                  " [        5         U R                  UUSS$9  S S S 5        [        R                  " [        5         U R                  UUS%S$9  S S S 5        [        R                  " [        5         U R                  UUS&S$9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNp= f! , (       d  f       GNN= f! , (       d  f       GN,= f! , (       d  f       GN
= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN`= f! , (       d  f       GN>= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GNP= f! , (       d  f       GN.= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       GN<= f! , (       d  f       g = f)'Nr   rB   r   r   )
batch_sizeigR @gp=
ף?)r   z1.1)stripe_sizeipgG @)r   nonezlid)r   i8gR"@)compression_strategynolarge)r   igGz0@cat)padding_tolerancearrow)dictionary_key_size_thresholdg333333?g	r   )bloom_filter_columnsgffffff?>   r   r   )bloom_filter_fppg?g)rE   r
   rI   r   r   rX   rx   raises
ValueErrorr   	TypeError)r
   r   r   rX   s       r   +test_buffer_readwrite_with_bad_writeoptionsr   y  s   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  &Y)Y;ZZ6Z1*[[['[9:\.\"\/]
]>]%2]7&^	^^-^?6_*_#_5``:`+0`=&aa!a3)
Y8;
Z

Z
Z.1
[ 
[
[$'
[69
\
\
\,/
\>
]
]"%
]47
^	
^
^*-
^<?
_
_ #
_25
`
`
`(+
`:=
a
a!
a03
bc                 $
   SSK Jn  [        R                  " S[        R                  " 5       5      n[        R                  " S[        R
                  " U/5      5      n[        R                  " S[        R                  " 5       5      [        R                  " S[        R                  " [        R                  " S[        R                  " 5       5      5      5      [        R                  " S[        R
                  " U[        R                  " S	[        R                  " 5       5      /5      5      [        R                  " S
[        R                  " [        R                  " S[        R
                  " [        R                  " S[        R                  " 5       5      [        R                  " S	[        R                  " 5       5      /5      5      5      5      [        R                  " S[        R                  " 5       5      /nS/SS//SS0SS./SSS.SSS.//S//n[        R                  " U[        R                  " U5      S9n[        U S-  5      nUR                  Xg5        UR                  U5      nUR                  5       n	U	R                  U5      (       d   eUR                  SS/S9n
U
R                  UR                  SS/5      5      (       d   eUR                  / SQS9nUR                  UR                  / SQ5      5      (       d   eUR                  S/S9n[        R                  " SSSS00/05      nUR                  U5      (       d   eUR                  S/S9n[        R                  " SS	S0/05      nUR                  U5      (       d   eUR                  / SQS9nUR                  UR                  SS/5      5      (       d   eUR                  S/S9n[        R                  " S
SS0SS0//05      nUR                  U5      (       d   eUR                  SS/S9n
U
R                  UR                  SS/5      5      (       d   eUR                  / S QS9nUR                  UR                  / S!Q5      5      (       d   e[         R"                  " [$        5         UR                  S"/S9  S S S 5        [         R"                  " [&        5         UR                  S/S9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)#Nr   rB   innerr   basicr   itemr   inner2list-structinner1basic2r   r   r   r   )r   r         )r   r         	   )r   r   rC   )r   r   r   struct.middle.innerstruct.inner2)r   r   r   zlist-struct.inner1r   )r   r   r   wrong)rE   r
   rI   fieldr   r   r   r   rX   r   ra   r   rF   rG   rO   selectrx   r   IOErrorr   )tempdirr
   r   r   fieldsarrsrX   rc   rW   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!fXGQ<1=>!
$a&@	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   #S0T0
S>
Tc                 
   SSK Jn  [        U S-  5      nUR                  U5       n[        R
                  " [        5         UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rB   r   )rE   r
   ra   	ORCWriterrx   r   AttributeErrortest)r  r
   rc   writers       r   test_wrong_usage_orc_writerr    sT    w#$D	t	]]>*KKM + 
	** 
	s#   A4A#A4#
A1	-A44
Bc                 Z   SSK Jn  [        U S-  5      n[        R                  " / SQ5      n[        R                  " / SQ5      n[        R
                  " X4S.5      n[        R                  " [        R                  5         UR                  XR5        S S S 5        g ! , (       d  f       g = f)Nr   rB   r   r   )NNNNr   )
rE   r
   ra   rI   r   rX   rx   r   ArrowNotImplementedErrorr   )r  r
   rc   r   r   rX   s         r    test_orc_writer_with_null_arraysr    sm    w#$D
#$A
)*AHHq,-E	r22	3$ 
4	3	3s   B
B*)NN)F))r   r   pathlibr   rz   ri   rk   rx   rE   rI   r   pyarrow.testsr   markr
   
pytestmarkpandas.testingr   pandasr   ImportErrorfixturer   r7   r@   r[   parametrizerd   rn   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   
C. .C76C7