
    /_iR                        d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZ	d dlm
Z
 d dlmZ ej                  j                  Z	 d dlmZ d dlZ ej*                  d      d        Zd	 Zdd
ZddZej                  j$                  ej                  j5                  dg d      d               Zd Zd Zd Zd Zd Z d Z!d Z"ej                  jF                  d        Z$d Z%d Z&d Z'd Z(y# e$ r Y w xY w)    N)Path)fs)util)assert_frame_equalmodule)scopec                     | dz  S )Norc )base_datadirs    U/var/www/html/land_sniper/venv/lib/python3.12/site-packages/pyarrow/tests/test_orc.pydatadirr   ,   s    %    c           	         |D ]  }||   }| |   }|dk(  rs|D cg c]  }|D ]  }|j                         ddhk(     c}}rG||   j                         }t        |      D ]   \  }}|D cg c]  }|d   |d   f c}||<   " |||<   |d   j                  }	t	        |	t
        j
                        rt        j                  |      }nt	        |	t
        j                        r|j                  j                  }n|	t        j                  u rdgt        |      z  }
t        t        ||            D ]q  \  }\  }}t        j                  |      r|j                         j                   }d| z  }t        j                  t#        ||z              j%                  |      |
|<   s t        j&                  |
      }|||<    yc c}}w c c}w )z_
    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   
  ' &T"EM7?K!KAeW--K-K%**,C!(+ =1:;<Q1U8QwZ0<A="%M$Qi!!c8,,-~~h/HX]]+{{''HGOO#"&#h-!7&s68'<= H	6Aqyy|**,//CC4ZFa&j(9:AA#F 'q)	H yy!34H&d=' L =s   #G*Gc                 R    ||||| j                  d      }t        | |d       y )NT)dropF)check_dtype)reset_indexr   )orc_dfexpected_dfstartstops       r   check_example_valuesr@   W   s3    D,!%-99t9Dv{>r   c           
         ddl m} |j                  |       }|j                         }t	        |t
        j                        sJ |j                          t        j                  |j                               }t        |j                        t        |j                        k(  sJ |j                  j                  |j                        s|j                  |j                        }|rt        ||       t!        ||       d}t#        |j$                        D ]]  }|j'                  |      }	t!        t        j                  |	j                               |||t)        |	      z          |t)        |	      z  }_ ||j*                  k(  sJ y)zC
    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[   ]   s>    {{8$HMMOEeRXX&&&	NN \\%//+,F{""#s6>>':::: >>  !4!45!))&..)A6;/-H8$$% $$Q'R\\%//*;<(#+"*SZ"7	9 	CJ x~~%%%r   filename)zTestOrcFile.test1.orcTestOrcFile.testDate1900.orczdecimal.orcc                     || z  }t        j                  t        |j                  d            d      }t	        ||d       y)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      s:     XDLLT--i89FEtUT2r   c                 |    | dz  }dt        |      d}t        j                  t        j                  d|gd       y )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                    t        d      }|j                         st        j                  d|        t        |dz        }	 t	        j
                  ||d       |dz  dz  j                  d	       | d
z  }dt        |      dt        |      d}t        j                  t        j                  d|gd       y # t        $ r"}t        j                  d|        Y d }~d }~ww xY w)Nz/usr/share/zoneinfoz Test needs timezone database in zoneinfoT)symlinksz"Failed to copy timezone database: USPacific)
missing_okr]   z6if 1:
        import os
        os.environ['TZDIR'] = zA

        from pyarrow import orc
        orc_file = orc.ORCFile(z)
        try:
            orc_file.read()
        except Exception as e:
            assert "zoneinfo/US/Pacific" in str(e), 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>ed; T\I%%%633D"5zn -  !$D	} -D NNCNND$/t<%  >8<==>s   B< <	C'C""C'c                    ddl m} |j                  | dz        j                         }|j                  dk(  sJ t        j                  dt        j                         fdt        j                         fdt        j                         fdt        j                         fdt        j                         fd	t        j                         fd
t        j                         fdt        j                         fdt        j                         fdt        j                   dt        j"                  t        j                   dt        j                         fdt        j                         fg            fg      fdt        j"                  t        j                   dt        j                         fdt        j                         fg            fdt        j$                  t        j                         t        j                   dt        j                         fdt        j                         fg            fg      }|j                  |k(  sJ y )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                    ddl m} t        j                  dg di      }| dz  }|j	                          |dz  }|j                  |t        |             |j                  |t        j                               }|j                  |      sJ |j                  dt        j                  |             }|j                  |      sJ |j                  t        j                  |            }|j                  |      sJ y )	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                    ddl m} t        j                  g d      }t        j                  g d      }t        j                  ||d      }| j                  d      }|j                  ||       |j                  |      }|j                  |      sJ |j                  |g       }d|j                  k(  sJ d|j                  k(  sJ |j                  |dg	      }d|j                  k(  sJ d
|j                  k(  sJ y )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OOE4 >>$'L<<%%%>>$+L%%%%%(((((>>$	>:L%%%%%(((((r   c                  d   ddl m}  ddlm}  |       }t	        j
                  g d      }t	        j
                  g d      }t	        j                  ||d      }| j                  ||       |j                  d       | j                  |      }|j                         }|j                  |      sJ y )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OOE3HHQK{{3H==?L<<%%%r   c                     ddl m}  t        j                         }t        j                  g d      }t        j                  g d      }t        j
                  ||d      }| j                  ||       t        j                  |j                               }| j                  |      }|j                         }|j                  |      sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  d	k(  sJ t        j                         }t!        j"                  t$              5  | j                  ||       d d d        t        j                  |j                               }| j                  |      }|j                         }|j                  |      sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  d	k(  sJ y # 1 sw Y   xY w)
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_sizerv   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	$ 5,e45OO$8$A$A$CDM{{=)H==?L<<%%%>111  F***$$---$$---5 5s   ;G22G;c            	         ddl m}  t        j                         }t        j                  g d      }t        j                  g d      }t        j
                  ||d      }| j                  ||dddd	
       t        j                  |j                               }| j                  |      }|j                         }|j                  |      sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  d	k(  sJ t        j                         }t!        j"                  t$              5  | j                  ||dddd	
       d d d        t        j                  |j                               }| j                  |      }|j                         }|j                  |      sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  d	k(  sJ y # 1 sw Y   xY w)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   C  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    G<<Hc                  N   ddl m}  t        j                         }t        j                  g d      }t        j
                  d|i      }t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d	       d d d        t        j                  t              5  | j                  ||d
	       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d       d d d        t        j                  t              5  | j                  ||d !       d d d        t        j                  t              5  | j                  ||dd"g!       d d d        t        j                  t              5  | j                  ||h d#!       d d d        t        j                  t              5  | j                  ||d$       d d d        t        j                  t              5  | j                  ||d%$       d d d        t        j                  t              5  | j                  ||d&$       d d d        y # 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   AxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   KxY w# 1 sw Y   "xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   UxY w# 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)'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   rv   raises
ValueErrorr   	TypeError)r
   r   r   rX   s       r   +test_buffer_readwrite_with_bad_writeoptionsr   s  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  "Z"Z/Z<[	:[0[#&[0[=\
\>\$4\1*\> ]]]%]28]?.^$^^&^3_ <_2_(_' _4```"Z,/Z9<[	[[ #[-0[:=\
\\!$\.1\;>]]]"%]/2]<?^	^^#&^03^= _
__$'_14_>```$c                 	   ddl m} t        j                  dt        j                               }t        j                  dt        j
                  |g            }t        j                  dt        j                               t        j                  dt        j                  t        j                  dt        j                                           t        j                  dt        j
                  |t        j                  d	t        j                               g            t        j                  d
t        j                  t        j                  dt        j
                  t        j                  dt        j                               t        j                  d	t        j                               g                        t        j                  dt        j                               g}dgddggddiddgddddddggdgg}t        j                  |t        j                  |            }t        | dz        }|j                  ||       |j                  |      }|j                         }	|	j                  |      sJ |j                  ddg      }
|
j                  |j                  ddg            sJ |j                  g d      }|j                  |j                  g d            sJ |j                  dg      }t        j                  ddddiigi      }|j                  |      sJ |j                  dg      }t        j                  dd	digi      }|j                  |      sJ |j                  g d      }|j                  |j                  ddg            sJ |j                  dg      }t        j                  d
ddiddiggi      }|j                  |      sJ |j                  ddg      }
|
j                  |j                  ddg            sJ |j                  g d       }|j                  |j                  g d!            sJ t!        j"                  t$              5  |j                  d"g       d d d        t!        j"                  t&              5  |j                  dg       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)#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   selectrv   r   IOErrorr   )tempdirr
   r   r   fieldsarrsrX   rc   rW   result1result2result3result4	expected4result5	expected5result6result7	expected7s                      r   test_column_selectionr  U  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OOE4 {{4 H mmoG>>%    mmWh$7m8G>>%,,':;<<<mm$@mAG>>%,,'CD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 
w	 ) 	wi()
 
z	" #qc"# #) )
# #s   4S)SSSc                     ddl m} t        | dz        }|j                  |      5 }t	        j
                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rB   r   )rE   r
   ra   	ORCWriterrv   r   AttributeErrortest)r   r
   rc   writers       r   test_wrong_usage_orc_writerr    sf    w#$D	t	 ]]>* 	KKM	 	 	 s#   A. A"A."A+	'A..A7c                 L   ddl m} t        | dz        }t        j                  g d      }t        j                  g d      }t        j
                  ||d      }t        j                  t        j                        5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   rB   r   r   )NNNNr   )
rE   r
   ra   rI   r   rX   rv   r   ArrowNotImplementedErrorr   )r   r
   rc   r   r   rX   s         r    test_orc_writer_with_null_arraysr    sz    w#$D
#$A
)*AHHq!,-E	r22	3 %t$% % %s   >BB#)NN)F))r   r   pathlibr   rx   ri   rk   rv   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=(=>+B 0)&&.B ,. ,.^_
DL#^%K  		s   
C/ /C76C7