
    g<              "          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j                  |            }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 }w 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-{}-jar-with-dependencies.jarARROW_TOOLS_JARFconvertStringsz-Djava.class.path=org)osenvironKeyErrorpathjoindirname__file__ETparsegetrootfindtextformatgetenvr   startJVMgetDefaultJVMPathJPackageapachearrowmemoryRootAllocatorsysmaxsize)	arrow_dirpom_pathtreeversionjar_pathkwargss         K/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_jvm.pyroot_allocatorr.       sN   NJJ12	 ww||Ivy9H88HDlln!!6
 "  4	 
 ww||67H299'BDH yy*H5HF$F	NN5**,.BX.M >>% ''--44BB3;;OO%  NGGLL!:D$M	Ns   E A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.   r7   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   )IllegalArgumentExceptionr0   )	jpype.imports	java.langr?   r2   releasepytestraisesr6   r7   )r.   r   r?   r7   s       r-   test_jvm_buffer_releasedrE   N   sK    2&&q)J	/	0*% 
1	0	0s   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_fieldrL   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)rL   r   rG   additemsput)rI   metadatafield
schema_clsfieldsdctkvs           r-   _jvm_schemarY   _   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namerc   typechildren)rc   metadataz
field metaz
field data)keyvaluerR   )panulljsonloadsrL   dumpsr6   rS   rY   schemawith_metadata)	r.   pa_typerI   rc   spec	jvm_fieldresultexpected_field
jvm_schemas	            r-   test_jvm_typesr{   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j                  |      }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   rh   )r   r   rG   allocateNewlen	enumerateJIntsetSafesetValueCountrn   arrayr6   equals)
r.   ru   py_datajvm_typecls
jvm_vectorr9   valpy_array	jvm_arrays
             r-   test_jvm_arrayr      s    . '
-
-h
7Cc"8^<J3w<(G$355**S/C1c"	 %
 S\*xxg.HZ(I??9%%%r=   c                    dj                  d      }t        j                  |      d|       }|j                          t	        j
                  |      }t        |      dk(  sJ |j                  t        j                         k(  sJ y )Nr   r   r   r   )
r   r   rG   r   r6   r   r   rh   rn   int32)r.   r   r   r   s       r-   test_jvm_array_emptyr      sk    
&
-
-k
:Cc"8^<JZ(Iy>Q>>RXXZ'''r=   z!pa_type,py_data,jvm_type,jvm_specUInt4VectorUInt8VectorTinyIntVectorSmallIntVectorc                 f   dj                  |      }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   re   Frf   rN   z(org.apache.arrow.vector.VectorSchemaRootr   col)r   r   rG   r   r   r   r   r   r   rp   rq   rL   rr   rO   rn   RecordBatchfrom_arraysr   r6   record_batchr   )r.   ru   r   r   rI   r   r   r9   r   rv   rw   
jvm_fieldsjvm_vectorsjvm_vsrpy_record_batchjvm_record_batchs                   r-   test_jvm_record_batchr      sm   \ '
-
-h
7C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   r1   zjava.lang.Stringstringz!java.nio.charset.StandardCharsets)
r   rG   isSetgetBytesUTF_8r2   r   setBytesstartend)rar   nvch_clsholderrm   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   r1   r   )r   rG   r   r   r   r   r   rn   r   r   r6   r   )	r.   rk   r   r   r9   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)7rp   r   pyarrowrn   pyarrow.jvmjvmr6   rC   r%   xml.etree.ElementTreeetreeElementTreer   importorskipr   mark	processes
pytestmarkfixturer.   r<   rE   rL   rY   parametrizero   bool_int8int16r   int64uint8uint16uint32uint64float16float32float64time32time64	timestampdate32date64
decimal128r   binaryr{   listr3   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=   