
    z-Ph<              "       ,   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                            d
 ej                    df ej                    df ej                    df ej                    df ej                    df ej                    df ej                    df ej                     df ej!                    df ej"                    df ej#                    df ej$                    df ej%                    df ej&        d          df ej&        d          df ej'        d          df ej'        d          df ej(        d          d f ej(        d          d!f ej(        d          d"f ej(        d          d#f ej(        dd$%          d&f ej(        dd'%          d(f ej)                    d)f ej*                    d*f ej+        d+d,          d-f ej,                    d.f ej-                    d/f ej-        d0          d1fg          ej                            d2d3d4g          d5                         Z.ej                            d6 ej                    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j$                     e/ e0d9                    d>f ej%                     e/ e0d9                    d?f ej(        d           e/ e0d9                    d@f ej(        d           e/ e0d9                    dAf ej(        d           e/ e0d9                    dBf ej(        d           e/ e0d9                    dCf ej)                     e/ e0d9                    dDf ej*                     e/ e0d9                    dEfg          dF             Z1dG Z2ej                            dH ej                    g d7d8df ej                     e/ e0d9                    d:df ej                      e/ e0d9                    d;df ej!                     e/ e0d9                    dIdf ej"                     e/ e0d9                    dJdf ej                     e/ e0d9                    dKdf ej                     e/ e0d9                    dLdf ej                     e/ e0d9                    d<df ej                     e/ e0d9                    d=df ej$                     e/ e0d9                    d>df ej%                     e/ e0d9                    d?df ej(        d           e/ e0d9                    d@d f ej(        d           e/ e0d9                    dAd!f ej(        d           e/ e0d9                    dBd"f ej(        d           e/ e0d9                    dCd#f ej)                     e/ e0d9                    dDd)f ej*                     e/ e0d9                    dEd*fg          dM             Z3dN Z4ej        5                    dOP          dQ             Z6dS )S    Njpypesession)scopec            	      &   	 t           j        d         } nT# t          $ rG t           j                            t           j                            t                    ddd          } Y nw xY wt           j                            | dd          }t          j        |          }|	                                
                    dddi          j        }t           j                            | dd	d
d                    |                    }t          j        d|          }i }d|d<   t          j        t                                          d|z   fi | t                              d          j        j        j                            t,          j                  S )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         V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/test_jvm.pyroot_allocatorr.       sx   NJ12		 N N NGLL!:!:D$MM			Nw||Ivy99H8HDllnn!!6
 "   	 
 w||67H299'BBD DH y*H55HF$F	N5**,,.BX.M    >>%  '-4BB3;OOOs    AA&%A&c                 z   |                      d          }t          d          D ]}|                    |d|z
             |                                }t	          j        |          }|                                dk    sJ |                                |dz   k    sJ ~|                                |k    sJ d S )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1XX % %1a!e$$$$##%%K 
J
'
'C >>BBBBB +/1111+------    c                     dd l }ddlm} |                     d          }|                                 t          j        |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   )IllegalArgumentExceptionr0   )	jpype.imports	java.langr?   r2   releasepytestraisesr6   r7   )r.   r   r?   r7   s       r-   test_jvm_buffer_releasedrE   N   s    222222&&q))J	/	0	0 & &*%%%& & & & & & & & & & & & & & & & & &s   A**A.1A.c                     t                              d                      }t                               d          }|                    | |          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   s@    	C	D	D	F	FBHIIJ<<*---r=   c                    t          |           }t                              d          }t                              d                      }|                    |           |r]t                              d                      }|                                D ]\  }}|                    ||            |||          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JJJ\\/0022F
JJu "ll.//11NN$$ 	 	DAqGGAqMMMMz&#&&&z&!!!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                 B   |t          j                    k    r|sd S 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	        |          }|
                    ddi          }|t          j	        |g          k    sJ d S )
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   s   d "'))H
8$$ D 4:d++,,I\)$$FXlGhGGGN^####TZ--..J]:&&FRY/000000 TZ--/?@@J]:&&FRY/&&1ABBBBBB !-|DDEDTZ--..J]:&&F#11	|$& &NRY/0000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                              |          d|           }|                    t	          |                     t          |          D ]9\  }}|dv rt                              |          }|                    ||           :|                    t	          |                     t          j
        ||          }t          j
        |          }	|                    |	          sJ d S )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
7
7Cc""8^<<J3w<<(((G$$ # #3555**S//C1c""""S\\***xg...HZ((I??9%%%%%%%r=   c                 ,   d                     d          }t                              |          d|           }|                                 t	          j        |          }t          |          dk    sJ |j        t          j	                    k    sJ d S )Nr   r   r   r   )
r   r   rG   r   r6   r   r   rh   rn   int32)r.   r   r   r   s       r-   test_jvm_array_emptyr      s    
&
-
-k
:
:Cc""8^<<JZ((Iy>>Q>RXZZ''''''r=   z!pa_type,py_data,jvm_type,jvm_specUInt4VectorUInt8VectorTinyIntVectorSmallIntVectorc                    d                     |          }t                              |          d|           }|                    t	          |                     t          |          D ]9\  }}|dv rt                              |          }|                    ||           :|                    t	          |                     ddt          j
        |          g d}	t          t          j        |	                    }
t                              d                      }|                    |
           t                              d                      }|                    |           t                              d          } |||t	          |                    }t          j                            t          j        ||	          gd
g          }t%          j        |          }|                    |          sJ d S )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      s   \ '
-
-h
7
7Cc""8^<<J3w<<(((G$$ # #3555**S//C1c""""S\\*** 
8$$ D 4:d++,,I 34466JNN9,,45577KOOJllEFFGgj+s7||<<Gn00	'	(	(	()	 O *733!!"23333333r=   c                    d}t                              |                      }|d|_        nd|_        t                              d          d          }t                               d          }|                    |j                  }|                     t          |                    |_        |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~/00::||$GHH 233		#f++..q&!S[[999[[
Mr=   z7from_buffers is only supported for primitive arrays yet)reasonc                    g d}d}t                              |          d|           }|                                 t          |          D ]C\  }}t	          | d          }|                    ||           |                    |dz              Dt          j        |t          j	                              }t          j        |          }|                    |          sJ d S )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D1f%%%  Q''''x29;;///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      s<	  $  				            



 " " " " " " " " " 	G$$["
 i   P P ! P2. . .(& & &. . ." " " "0 +RWYY!"RXZZ"#RWYY=>RXZZ?@RXZZ?@RXZZ?@RXZZ?@RY[[ABRY[[ABRY[[ABRZ\\@ARZ\\BCRZ\\BCRYs^^DERYt__JKRYt__JKRYt__IJR\#  R\$  R\$  R\$  R\$5!!! $ R\$>*** -9 :RY[[01RY[[89R]2qHIRY[[#$RY[[%&RYr]]?@G/. / /` dE]331 1 43a/ /b1H 3RXZZ***K8RXZZeeCjj!!=1RY[[$$uuSzz""M2RXZZeeCjj!!;/RXZZeeCjj!!>2RZ\\44c

##^4RZ\\44c

##^4R\#UU3ZZ((*>?R\$eeCjj))+ABR\$eeCjj))+ABR\$eeCjj))+@A RY[[$$uuSzz""O4RY[[$$uuSzz""$56%6  *& &+ *&$( ( ( <RXZZ***K9JK

UU3ZZ6	 		UU3ZZ7	 		UU3ZZ7	 		UU3ZZ7	 			UU3ZZ5	 	

UU3ZZ6	 	

UU3ZZ6	 	

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