
    <>is<              "          S SK r S SKrS SKrS SKJr  S SKrS SKrS SK	J
s  Jr  \R                  " S5      r\R                  R                   r\R$                  " SS9S 5       rS rS rS rSRS	 jr\R                  R1                  S
\R2                  " 5       S4\R4                  " 5       S4\R6                  " 5       S4\R8                  " 5       S4\R:                  " 5       S4\R<                  " 5       S4\R>                  " 5       S4\R@                  " 5       S4\RB                  " 5       S4\RD                  " 5       S4\RF                  " 5       S4\RH                  " 5       S4\RJ                  " 5       S4\RL                  " S5      S4\RL                  " S5      S4\RN                  " S5      S4\RN                  " S5      S4\RP                  " S5      S 4\RP                  " S5      S!4\RP                  " S5      S"4\RP                  " S5      S#4\RP                  " SS$S%9S&4\RP                  " SS'S%9S(4\RR                  " 5       S)4\RT                  " 5       S*4\RV                  " S+S,5      S-4\RX                  " 5       S.4\RZ                  " 5       S/4\RZ                  " S05      S14/5      \R                  R1                  S2S3S4/5      S5 5       5       r.\R                  R1                  S6\R4                  " 5       / S7QS84\R>                  " 5       \/" \0" S95      5      S:4\R@                  " 5       \/" \0" S95      5      S;4\R:                  " 5       \/" \0" S95      5      S<4\R<                  " 5       \/" \0" S95      5      S=4\RH                  " 5       \/" \0" S95      5      S>4\RJ                  " 5       \/" \0" S95      5      S?4\RP                  " S5      \/" \0" S95      5      S@4\RP                  " S5      \/" \0" S95      5      SA4\RP                  " S5      \/" \0" S95      5      SB4\RP                  " S5      \/" \0" S95      5      SC4\RR                  " 5       \/" \0" S95      5      SD4\RT                  " 5       \/" \0" S95      5      SE4/5      SF 5       r1SG r2\R                  R1                  SH\R4                  " 5       / S7QS8S4\R>                  " 5       \/" \0" S95      5      S:S4\R@                  " 5       \/" \0" S95      5      S;S4\RB                  " 5       \/" \0" S95      5      SIS4\RD                  " 5       \/" \0" S95      5      SJS4\R6                  " 5       \/" \0" S95      5      SKS4\R8                  " 5       \/" \0" S95      5      SLS4\R:                  " 5       \/" \0" S95      5      S<S4\R<                  " 5       \/" \0" S95      5      S=S4\RH                  " 5       \/" \0" S95      5      S>S4\RJ                  " 5       \/" \0" S95      5      S?S4\RP                  " S5      \/" \0" S95      5      S@S 4\RP                  " S5      \/" \0" S95      5      SAS!4\RP                  " S5      \/" \0" S95      5      SBS"4\RP                  " S5      \/" \0" S95      5      SCS#4\RR                  " 5       \/" \0" S95      5      SDS)4\RT                  " 5       \/" \0" S95      5      SES*4/5      SM 5       r3SN r4\R                  Rk                  SOSP9SQ 5       r6g)S    Njpypesession)scopec            	          [         R                  S   n [         R                  R	                  U SS5      n[        R                  " U5      nUR                  5       R                  SSS0S9R                  n[         R                  R	                  U SS	S
SU S35      n[         R                  " SU5      n0 nSUS'   [        R                  " [        R                  5       SU-   40 UD6  [        R!                  S5      R"                  R$                  R&                  R)                  [*        R,                  5      $ ! [         aG    [         R                  R	                  [         R                  R                  [        5      SSS5      n  GNsf = f)NARROW_SOURCE_DIRz..javazpom.xmlzPOM:versionPOMz!http://maven.apache.org/POM/4.0.0)
namespacestoolstargetzarrow-tools-z-jar-with-dependencies.jarARROW_TOOLS_JARFconvertStringsz-Djava.class.path=org)osenvironKeyErrorpathjoindirname__file__ETparsegetrootfindtextgetenvr   startJVMgetDefaultJVMPathJPackageapachearrowmemoryRootAllocatorsysmaxsize)	arrow_dirpom_pathtreeversionjar_pathkwargss         U/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_jvm.pyroot_allocatorr-       sL   NJJ12	 ww||Ivy9H88HDlln!!6
 "  4	 
 ww||67H
wi9:<H yy*H5HF$F	NN5**,.BX.M >>% ''--44BB3;;OO%  NGGLL!:D$M	Ns   D8 8AF	F	c                 L   U R                  S5      n[        S5       H  nUR                  USU-
  5        M     UR                  5       n[        R
                  " U5      nUR                  5       S:X  d   eUR                  5       US-   :X  d   eAUR                  5       U:X  d   eg )N   s      )bufferrangesetByterefCntpa_jvm
jvm_buffer
to_pybytes)r-   r6   iorig_refcntbufs        r,   test_jvm_bufferr;   :   s    &&q)J1X1a!e$  ##%K 

J
'C >>BBBB +/111+---    c                     SS K nSSKJn  U R                  S5      nUR	                  5         [
        R                  " U5         [        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nr   )IllegalArgumentExceptionr/   )	jpype.imports	java.langr>   r1   releasepytestraisesr5   r6   )r-   r   r>   r6   s       r,   test_jvm_buffer_releasedrD   N   sK    2&&q)J	/	0*% 
1	0	0s   A""
A0c                     [         R                  S5      " 5       n[         R                  S5      nUR                  X5      $ )Nz+com.fasterxml.jackson.databind.ObjectMapperz(org.apache.arrow.vector.types.pojo.Field)r   JClass	readValue)jvm_specom
pojo_Fields      r,   
_jvm_fieldrK   Y   s2    	C	D	FBHIJ<<--r<   c                 N   [        U 5      n[        R                  S5      n[        R                  S5      " 5       nUR                  U5        U(       aL  [        R                  S5      " 5       nUR	                  5        H  u  pgUR                  Xg5        M     U" XE5      $ U" U5      $ )Nz)org.apache.arrow.vector.types.pojo.Schemajava.util.ArrayListzjava.util.HashMap)rK   r   rF   additemsput)rH   metadatafield
schema_clsfieldsdctkvs           r,   _jvm_schemarX   _   s    x EIJJ\\/02F
JJull./1NN$DAGGAM %&&&&!!r<   zpa_type,jvm_specz{"name":"null"}z{"name":"bool"}z+{"name":"int","bitWidth":8,"isSigned":true}z,{"name":"int","bitWidth":16,"isSigned":true}z,{"name":"int","bitWidth":32,"isSigned":true}z,{"name":"int","bitWidth":64,"isSigned":true}z,{"name":"int","bitWidth":8,"isSigned":false}z-{"name":"int","bitWidth":16,"isSigned":false}z-{"name":"int","bitWidth":32,"isSigned":false}z-{"name":"int","bitWidth":64,"isSigned":false}z+{"name":"floatingpoint","precision":"HALF"}z-{"name":"floatingpoint","precision":"SINGLE"}z-{"name":"floatingpoint","precision":"DOUBLE"}sz-{"name":"time","unit":"SECOND","bitWidth":32}msz2{"name":"time","unit":"MILLISECOND","bitWidth":32}usz2{"name":"time","unit":"MICROSECOND","bitWidth":64}nsz1{"name":"time","unit":"NANOSECOND","bitWidth":64}z4{"name":"timestamp","unit":"SECOND","timezone":null}z9{"name":"timestamp","unit":"MILLISECOND","timezone":null}z9{"name":"timestamp","unit":"MICROSECOND","timezone":null}z8{"name":"timestamp","unit":"NANOSECOND","timezone":null}UTC)tzz9{"name":"timestamp","unit":"NANOSECOND","timezone":"UTC"}zEurope/PariszB{"name":"timestamp","unit":"NANOSECOND","timezone":"Europe/Paris"}z{"name":"date","unit":"DAY"}z${"name":"date","unit":"MILLISECOND"}      z+{"name":"decimal","precision":19,"scale":4}z{"name":"utf8"}z{"name":"binary"}
   z){"name":"fixedsizebinary","byteWidth":10}nullableTFc                 N   U[         R                  " 5       :X  a  U(       d  g SU[        R                  " U5      / S.n[	        [        R
                  " U5      5      n[        R                  " U5      n[         R                  " SXS9nXg:X  d   e[        [        R
                  " U5      5      n[        R                  " U5      nU[         R                  " U/5      :X  d   e[        [        R
                  " U5      SS05      n[        R                  " U5      nU[         R                  " U/SS05      :X  d   eSSS./US	'   [        [        R
                  " U5      5      n[        R                  " U5      nUR                  SS05      nU[         R                  " U/5      :X  d   eg )
N
field_namenamerb   typechildren)rb   metadataz
field metaz
field data)keyvaluerQ   )panulljsonloadsrK   dumpsr5   rR   rX   schemawith_metadata)	r-   pa_typerH   rb   spec	jvm_fieldresultexpected_field
jvm_schemas	            r,   test_jvm_typesrz   w   s`   d "'')H

8$D 4::d+,I\\)$FXXlGGN###TZZ-.J]]:&FRYY/0000 TZZ-/?@J]]:&FRYY/&&1ABBBB !-|DEDTZZ-.J]]:&F#11	|$&NRYY/0000r<   zpa_type,py_data,jvm_type)TFTT	BitVector   UInt1VectorUInt2Vector	IntVectorBigIntVectorFloat4VectorFloat8VectorTimeStampSecVectorTimeStampMilliVectorTimeStampMicroVectorTimeStampNanoVectorDateDayVectorDateMilliVectorc                    SU 3n[         R                  U5      " SU 5      nUR                  [        U5      5        [	        U5       H1  u  pgUS;   a  [         R                  U5      nUR                  Xg5        M3     UR                  [        U5      5        [        R                  " X!S9n[        R                  " U5      n	UR                  U	5      (       d   eg )Norg.apache.arrow.vector.vector   r}   r~   rg   )r   rF   allocateNewlen	enumerateJIntsetSafesetValueCountrm   arrayr5   equals)
r-   rt   py_datajvm_typecls
jvm_vectorr8   valpy_array	jvm_arrays
             r,   test_jvm_arrayr      s    . %XJ
/Cc"8^<J3w<(G$55**S/C1"	 %
 S\*xx.HZ(I??9%%%%r<   c                     SS 3n[         R                  U5      " SU 5      nUR                  5         [        R                  " U5      n[        U5      S:X  d   eUR                  [        R                  " 5       :X  d   eg )Nr   r   r   r   )	r   rF   r   r5   r   r   rg   rm   int32)r-   r   r   r   s       r,   test_jvm_array_emptyr      sg    $[M
2Cc"8^<JZ(Iy>Q>>RXXZ'''r<   z!pa_type,py_data,jvm_type,jvm_specUInt4VectorUInt8VectorTinyIntVectorSmallIntVectorc                 `   SU 3n[         R                  U5      " SU 5      nUR                  [        U5      5        [	        U5       H1  u  pxUS;   a  [         R                  U5      nUR                  Xx5        M3     UR                  [        U5      5        SS[        R                  " U5      / S.n	[        [        R                  " U	5      5      n
[         R                  S5      " 5       nUR                  U
5        [         R                  S5      " 5       nUR                  U5        [         R                  S5      nU" X[        U5      5      n[        R                  R                  [        R                   " X!S	9/S
/5      n["        R$                  " U5      nUR'                  U5      (       d   eg )Nr   r   r   rd   Fre   rM   z(org.apache.arrow.vector.VectorSchemaRootr   col)r   rF   r   r   r   r   r   r   ro   rp   rK   rq   rN   rm   RecordBatchfrom_arraysr   r5   record_batchr   )r-   rt   r   r   rH   r   r   r8   r   ru   rv   
jvm_fieldsjvm_vectorsjvm_vsrpy_record_batchjvm_record_batchs                   r,   test_jvm_record_batchr      sd   \ %XJ
/Cc"8^<J3w<(G$55**S/C1" % S\* 

8$D 4::d+,I 346JNN9,,457KOOJllEFGjs7|<Gnn00	'	()	O **73!!"23333r<   c                    Sn[         R                  U5      " 5       nUc	  SUl        U$ SUl        [         R                  S5      " S5      n[         R                  S5      nUR                  UR                  5      nU R                  [        U5      5      Ul        UR
                  R                  SUS[        U5      5        SUl        [        U5      Ul	        U$ )Nz5org.apache.arrow.vector.holders.NullableVarCharHolderr   r0   zjava.lang.Stringstringz!java.nio.charset.StandardCharsets)
r   rF   isSetgetBytesUTF_8r1   r   setBytesstartend)rar   nvch_clsholderrl   std_charsetsbytes_s          r,   _string_to_varchar_holderr     s    FH\\(#%F~ M /0:||$GH 2 23		#f+.q&!S[9[
Mr<   z7from_buffers is only supported for primitive arrays yet)reasonc                    / SQnSn[         R                  U5      " SU 5      nUR                  5         [        U5       H6  u  pE[	        U S5      nUR                  XF5        UR                  US-   5        M8     [        R                  " U[        R                  " 5       S9n[        R                  " U5      nUR                  U5      (       d   eg )N)r   Nu   töstz%org.apache.arrow.vector.VarCharVectorr   r   r0   r   )r   rF   r   r   r   r   r   rm   r   r   r5   r   )	r-   rj   r   r   r8   r   r   r   r   s	            r,   test_jvm_string_arrayr     s     %D
1Cc"8^<Jt_	*>8D1%  Q' %
 xx299;/HZ(I??9%%%%r<   )N)7ro   r   pyarrowrm   pyarrow.jvmjvmr5   rB   r$   xml.etree.ElementTreeetreeElementTreer   importorskipr   mark	processes
pytestmarkfixturer-   r;   rD   rK   rX   parametrizern   bool_int8int16r   int64uint8uint16uint32uint64float16float32float64time32time64	timestampdate32date64
decimal128r   binaryrz   listr2   r   r   r   r   xfailr    r<   r,   <module>r      s  $  	    
 " " 	G$[[""
 i P !P2.(&."0 +WWY!"XXZ"#WWY=>XXZ?@XXZ?@XXZ?@XXZ?@YY[ABYY[ABYY[ABZZ\@AZZ\BCZZ\BCYYs^DEYYt_JKYYt_JKYYt_IJ\\#  \\$  \\$  \\$  \\$5! $ \\$>* -9 :YY[01YY[89]]2qHIYY[#$YY[%&YYr]?@G/. /` dE]31 4a/b1H 3XXZ*K8XXZeCj!=1YY[$uSz"M2XXZeCj!;/XXZeCj!>2ZZ\4c
#^4ZZ\4c
#^4\\#U3Z(*>?\\$eCj)+AB\\$eCj)+AB\\$eCj)+@A YY[$uSz"O4YY[$uSz"$56%6 *&+*&$( <XXZ*K9JK

U3Z6	 			U3Z7	 			U3Z7	 			U3Z7	 		U3Z5	 	
U3Z6	 	
U3Z6	 	
U3Z6	 	

U3Z7	 	

U3Z7	 	SU3Z>	 	TU3ZC	 	TU3ZC	 	TU3ZB	 			U3Z&	 			U3Z.	Gj? jV$4WjV$4N$  1 2&2&r<   