
    /_is<              "          d dl Z d dlZd dlZd dlmZ d dlZd dlZd dl	m
c mZ  ej                  d      Zej                  j                   Z ej$                  d      d        Zd Zd Zd ZdRd	Zej                  j1                  d
 ej2                         df ej4                         df ej6                         df ej8                         df ej:                         df ej<                         df ej>                         df ej@                         df ejB                         df ejD                         df ejF                         df ejH                         df ejJ                         df ejL                  d      df ejL                  d      df ejN                  d      df ejN                  d      df ejP                  d      d f ejP                  d      d!f ejP                  d      d"f ejP                  d      d#f ejP                  dd$%      d&f ejP                  dd'%      d(f ejR                         d)f ejT                         d*f ejV                  d+d,      d-f ejX                         d.f ejZ                         d/f ejZ                  d0      d1fg      ej                  j1                  d2d3d4g      d5               Z.ej                  j1                  d6 ej4                         g d7d8f ej>                          e/ e0d9            d:f ej@                          e/ e0d9            d;f ej:                          e/ e0d9            d<f ej<                          e/ e0d9            d=f ejH                          e/ e0d9            d>f ejJ                          e/ e0d9            d?f ejP                  d       e/ e0d9            d@f ejP                  d       e/ e0d9            dAf ejP                  d       e/ e0d9            dBf ejP                  d       e/ e0d9            dCf ejR                          e/ e0d9            dDf ejT                          e/ e0d9            dEfg      dF        Z1dG Z2ej                  j1                  dH ej4                         g d7d8df ej>                          e/ e0d9            d:df ej@                          e/ e0d9            d;df ejB                          e/ e0d9            dIdf ejD                          e/ e0d9            dJdf ej6                          e/ e0d9            dKdf ej8                          e/ e0d9            dLdf ej:                          e/ e0d9            d<df ej<                          e/ e0d9            d=df ejH                          e/ e0d9            d>df ejJ                          e/ e0d9            d?df ejP                  d       e/ e0d9            d@d f ejP                  d       e/ e0d9            dAd!f ejP                  d       e/ e0d9            dBd"f ejP                  d       e/ e0d9            dCd#f ejR                          e/ e0d9            dDd)f ejT                          e/ e0d9            dEd*fg      dM        Z3dN Z4ej                  jk                  dOP      dQ        Z6y)S    Njpypesession)scopec            	         	 t         j                  d   } t         j                  j	                  | dd      }t        j                  |      }|j                         j                  dddi      j                  }t         j                  j	                  | dd	d
d| d      }t        j                  d|      }i }d|d<   t        j                  t        j                         d|z   fi | t        j!                  d      j"                  j$                  j&                  j)                  t*        j,                        S # t        $ rG t         j                  j	                  t         j                  j                  t              ddd      } Y rw xY w)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_sniper/venv/lib/python3.12/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                 @   | j                  d      }t        d      D ]  }|j                  |d|z
          |j                         }t	        j
                  |      }|j                         dk(  sJ |j                         |dz   k(  sJ ~|j                         |k(  sJ y )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                     dd l }ddlm} | j                  d      }|j	                          t        j                  |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr   )IllegalArgumentExceptionr/   )	jpype.imports	java.langr>   r1   releasepytestraisesr5   r6   )r-   r   r>   r6   s       r,   test_jvm_buffer_releasedrD   N   sT    2&&q)J	/	0 &*%& & &s   A  A)c                     t        j                  d             }t         j                  d      }|j                  | |      S )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   s4    	C	D	FBHIJ<<*--r<   c                 B   t        |       }t        j                  d      }t        j                  d             }|j                  |       |rLt        j                  d             }|j	                         D ]  \  }}|j                  ||         |||      S  ||      S )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$ 	DAqGGAqM	&#&&&!!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                 (   |t        j                         k(  r|sy d|t        j                  |      g d}t	        t        j
                  |            }t        j                  |      }t        j                  d||      }||k(  sJ t        t        j
                  |            }t        j                  |      }|t        j                  |g      k(  sJ t        t        j
                  |      ddi      }t        j                  |      }|t        j                  |gddi      k(  sJ dddg|d	<   t        t        j
                  |            }t        j                  |      }|j                  ddi      }|t        j                  |g      k(  sJ y )
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   sd   d "'')H

8$D 4::d+,I\\)$FXXlGh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                    d| }t        j                  |      d|       }|j                  t        |             t	        |      D ]0  \  }}|dv rt         j                  |      }|j                  ||       2 |j                  t        |             t        j                  ||      }t        j                  |      }	|j                  |	      sJ y )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$ #355**S/C1c"	#
 S\*xxg.HZ(I??9%%%r<   c                     dd }t        j                  |      d|       }|j                          t        j                  |      }t        |      dk(  sJ |j                  t        j                         k(  sJ y )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                 N   d| }t        j                  |      d|       }|j                  t        |             t	        |      D ]0  \  }}|dv rt         j                  |      }|j                  ||       2 |j                  t        |             ddt        j                  |      g d}	t        t        j                  |	            }
t        j                  d             }|j                  |
       t        j                  d             }|j                  |       t         j                  d      } |||t        |            }t        j                  j                  t        j                   ||	      gd
g      }t#        j$                  |      }|j'                  |      sJ y )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      sn   \ %XJ
/Cc"8^<J3w<(G$ #355**S/C1c"# S\* 

8$D 4::d+,I 346JNN9,,457KOOJllEFGj+s7|<Gnn00	'	()	O **73!!"2333r<   c                    d}t        j                  |             }|	d|_        |S d|_        t        j                  d      d      }t         j                  d      }|j                  |j                        }| j                  t        |            |_        |j
                  j                  d|dt        |             d|_        t        |      |_	        |S )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                    g d}d}t        j                  |      d|       }|j                          t        |      D ]7  \  }}t	        | d      }|j                  ||       |j                  |dz          9 t        j                  |t        j                               }t        j                  |      }|j                  |      sJ y )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_ (	6*>8D1f%  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      sM  $  	    
 " " 	G$[[""
 i P !P2.(&."0 +RWWY!"RXXZ"#RWWY=>RXXZ?@RXXZ?@RXXZ?@RXXZ?@RYY[ABRYY[ABRYY[ABRZZ\@ARZZ\BCRZZ\BCRYYs^DERYYt_JKRYYt_JKRYYt_IJR\\#  R\\$  R\\$  R\\$  R\\$5! $ R\\$>* -9 :RYY[01RYY[89R]]2qHIRYY[#$RYY[%&RYYr]?@G/. /` dE]31 4a/b1H 3RXXZ*K8RXXZeCj!=1RYY[$uSz"M2RXXZeCj!;/RXXZeCj!>2RZZ\4c
#^4RZZ\4c
#^4R\\#U3Z(*>?R\\$eCj)+ABR\\$eCj)+ABR\\$eCj)+@A RYY[$uSz"O4RYY[$uSz"$56%6 *&+*&$( <RXXZ*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<   