o
    ò©Zho<  ã                "   @   sÊ  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
  mZ e d¡Zejdddd„ ƒZdd„ Zd	d
„ Zdd„ Zd]dd„Zej de ¡ dfe ¡ dfe ¡ dfe ¡ dfe ¡ dfe ¡ dfe ¡ dfe ¡ dfe ¡ dfe  ¡ dfe !¡ dfe "¡ dfe #¡ dfe $d¡dfe $d¡d fe %d!¡d"fe %d#¡d$fe &d¡d%fe &d¡d&fe &d!¡d'fe &d#¡d(fej&d#d)d*d+fej&d#d,d*d-fe '¡ d.fe (¡ d/fe )d0d1¡d2fe *¡ d3fe +¡ d4fe +d5¡d6fg¡ej d7d8d9g¡d:d;„ ƒƒZ,ej d<e ¡ g d=¢d>fe ¡ e-e.d?ƒƒd@fe ¡ e-e.d?ƒƒdAfe ¡ e-e.d?ƒƒdBfe ¡ e-e.d?ƒƒdCfe "¡ e-e.d?ƒƒdDfe #¡ e-e.d?ƒƒdEfe &d¡e-e.d?ƒƒdFfe &d¡e-e.d?ƒƒdGfe &d!¡e-e.d?ƒƒdHfe &d#¡e-e.d?ƒƒdIfe '¡ e-e.d?ƒƒdJfe (¡ e-e.d?ƒƒdKfg¡dLdM„ ƒZ/dNdO„ Z0ej dPe ¡ g d=¢d>dfe ¡ e-e.d?ƒƒd@dfe ¡ e-e.d?ƒƒdAdfe ¡ e-e.d?ƒƒdQdfe  ¡ e-e.d?ƒƒdRdfe ¡ e-e.d?ƒƒdSdfe ¡ e-e.d?ƒƒdTdfe ¡ e-e.d?ƒƒdBdfe ¡ e-e.d?ƒƒdCdfe "¡ e-e.d?ƒƒdDdfe #¡ e-e.d?ƒƒdEdfe &d¡e-e.d?ƒƒdFd%fe &d¡e-e.d?ƒƒdGd&fe &d!¡e-e.d?ƒƒdHd'fe &d#¡e-e.d?ƒƒdId(fe '¡ e-e.d?ƒƒdJd.fe (¡ e-e.d?ƒƒdKd/fg¡dUdV„ ƒZ1dWdX„ Z2ejj3dYdZd[d\„ ƒZ4dS )^é    NÚjpypeÚsession)Úscopec               	   C   sÔ   zt jd } W n ty   t j t j t¡ddd¡} Y nw t j | dd¡}t |¡}| 	¡ j
dddidj}t j | dd	d
d |¡¡}t  d|¡}i }d|d< tjt ¡ d| fi |¤Ž t d¡jjj tj¡S )NZARROW_SOURCE_DIRz..Újavazpom.xmlzPOM:versionZPOMz!http://maven.apache.org/POM/4.0.0)Ú
namespacesZtoolsÚtargetz(arrow-tools-{}-jar-with-dependencies.jarZARROW_TOOLS_JARFZconvertStringsz-Djava.class.path=Úorg)ÚosÚenvironÚKeyErrorÚpathÚjoinÚdirnameÚ__file__ÚETÚparseZgetrootÚfindÚtextÚformatÚgetenvr   ZstartJVMZgetDefaultJVMPathZJPackageÚapacheÚarrowZmemoryZRootAllocatorÚsysÚmaxsize)Z	arrow_dirZpom_pathÚtreeÚversionZjar_pathÚkwargs© r   úM/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_jvm.pyÚroot_allocator   s2   ÿ
ÿþüþÿr   c                 C   st   |   d¡}tdƒD ]
}| |d| ¡ q	| ¡ }t |¡}| ¡ dks%J ‚| ¡ |d ks/J ‚~| ¡ |ks8J ‚d S )Né   s   é   )ÚbufferÚrangeZsetByteZrefCntÚpa_jvmÚ
jvm_bufferZ
to_pybytes)r   r%   ÚiZorig_refcntÚbufr   r   r   Útest_jvm_buffer8   s   

r(   c                 C   s`   dd l }ddlm} |  d¡}| ¡  t |¡ t |¡ W d   ƒ d S 1 s)w   Y  d S )Nr   )ÚIllegalArgumentExceptionr    )	Zjpype.importsÚ	java.langr)   r"   ÚreleaseÚpytestZraisesr$   r%   )r   r   r)   r%   r   r   r   Útest_jvm_buffer_releasedL   s   
"ÿr-   c                 C   s"   t  d¡ƒ }t  d¡}| | |¡S )Nz+com.fasterxml.jackson.databind.ObjectMapperz(org.apache.arrow.vector.types.pojo.Field)r   ÚJClassZ	readValue)Újvm_specÚomZ
pojo_Fieldr   r   r   Ú
_jvm_fieldW   s   
r1   c                 C   sh   t | ƒ}t d¡}t d¡ƒ }| |¡ |r0t d¡ƒ }| ¡ D ]
\}}| ||¡ q |||ƒS ||ƒS )Nz)org.apache.arrow.vector.types.pojo.Schemaújava.util.ArrayListzjava.util.HashMap)r1   r   r.   ÚaddÚitemsÚput)r/   ÚmetadataÚfieldZ
schema_clsÚfieldsÚdctÚkÚvr   r   r   Ú_jvm_schema]   s   


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           	      C   s  |t  ¡ kr
|s
d S d|t |¡g dœ}tt |¡ƒ}t |¡}t jd||d}||ks.J ‚tt |¡ƒ}t 	|¡}|t  	|g¡ksDJ ‚tt |¡ddiƒ}t 	|¡}|t  	|gddi¡ks`J ‚dddœg|d	< tt |¡ƒ}t 	|¡}| 
ddi¡}|t  	|g¡ks…J ‚d S )
NÚ
field_name©ÚnamerF   ÚtypeÚchildren)rF   ÚmetaÚdataz
field metaz
field data)ÚkeyÚvaluer6   )ÚpaÚnullÚjsonÚloadsr1   Údumpsr$   r7   r<   ZschemaZwith_metadata)	r   Úpa_typer/   rF   ÚspecÚ	jvm_fieldÚresultZexpected_fieldZ
jvm_schemar   r   r   Útest_jvm_typesu   s0   2û



ÿrY   zpa_type,py_data,jvm_type)TFTTZ	BitVectoré€   ÚUInt1VectorÚUInt2VectorÚ	IntVectorZBigIntVectorZFloat4VectorZFloat8VectorZTimeStampSecVectorZTimeStampMilliVectorZTimeStampMicroVectorZTimeStampNanoVectorZDateDayVectorZDateMilliVectorc           
      C   s   d  |¡}t |¡d| ƒ}| t|ƒ¡ t|ƒD ]\}}|dv r%t |¡}| ||¡ q| t|ƒ¡ t	j
||d}t 
|¡}	| |	¡sFJ ‚d S )Núorg.apache.arrow.vector.{}Úvector¾   r\   r[   ©rJ   )r   r   r.   ÚallocateNewÚlenÚ	enumerateÚJIntÚsetSafeÚsetValueCountrP   Úarrayr$   Úequals)
r   rU   Úpy_dataÚjvm_typeÚclsÚ
jvm_vectorr&   ÚvalÚpy_arrayÚ	jvm_arrayr   r   r   Útest_jvm_arrayÊ   s   


rq   c                 C   sR   d  d¡}t |¡d| ƒ}| ¡  t |¡}t|ƒdksJ ‚|jt 	¡ ks'J ‚d S )Nr^   r]   r_   r   )
r   r   r.   rb   r$   rh   rc   rJ   rP   Úint32)r   rl   rm   rp   r   r   r   Útest_jvm_array_emptyñ   s   

rs   z!pa_type,py_data,jvm_type,jvm_specZUInt4VectorZUInt8VectorZTinyIntVectorZSmallIntVectorc                 C   s  d  |¡}t |¡d| ƒ}| t|ƒ¡ t|ƒD ]\}}|dv r%t |¡}| ||¡ q| t|ƒ¡ ddt	 
|¡g dœ}	tt	 |	¡ƒ}
t d¡ƒ }| |
¡ t d¡ƒ }| |¡ t d¡}|||t|ƒƒ}tj tj||d	gd
g¡}t |¡}| |¡sJ ‚d S )Nr^   r_   r`   rG   FrH   r2   z(org.apache.arrow.vector.VectorSchemaRootra   Úcol)r   r   r.   rb   rc   rd   re   rf   rg   rR   rS   r1   rT   r3   rP   ZRecordBatchZfrom_arraysrh   r$   Zrecord_batchri   )r   rU   rj   rk   r/   rl   rm   r&   rn   rV   rW   Z
jvm_fieldsZjvm_vectorsZjvm_vsrZpy_record_batchZjvm_record_batchr   r   r   Útest_jvm_record_batchý   s4   
n
û


þ
ru   c                 C   s†   d}t  |¡ƒ }|d u rd|_|S d|_t  d¡dƒ}t  d¡}| |j¡}|  t|ƒ¡|_|j d|dt|ƒ¡ d|_t|ƒ|_	|S )Nz5org.apache.arrow.vector.holders.NullableVarCharHolderr   r!   zjava.lang.StringÚstringz!java.nio.charset.StandardCharsets)
r   r.   ÚisSetZgetBytesZUTF_8r"   rc   ZsetBytesÚstartÚend)Úrarv   Znvch_clsÚholderrO   Zstd_charsetsÚbytes_r   r   r   Ú_string_to_varchar_holder  s   
ø

r}   z7from_buffers is only supported for primitive arrays yet)Úreasonc           	      C   sˆ   g d¢}d}t  |¡d| ƒ}| ¡  t|ƒD ]\}}t| dƒ}| ||¡ | |d ¡ qtj|t 	¡ d}t
 |¡}| |¡sBJ ‚d S )N)rv   Nu   tÃ¶stz%org.apache.arrow.vector.VarCharVectorr_   rv   r!   ra   )r   r.   rb   rd   r}   rf   rg   rP   rh   rv   r$   ri   )	r   rM   rl   rm   r&   rv   r{   ro   rp   r   r   r   Útest_jvm_string_array¡  s   

r   )N)5rR   r	   ZpyarrowrP   Zpyarrow.jvmZjvmr$   r,   r   Zxml.etree.ElementTreeÚetreeZElementTreer   Zimportorskipr   Zfixturer   r(   r-   r1   r<   ÚmarkZparametrizerQ   Zbool_Zint8Zint16rr   Zint64Zuint8Zuint16Zuint32Zuint64Zfloat16Zfloat32Zfloat64Ztime32Ztime64Ú	timestampZdate32Zdate64Z
decimal128rv   ÚbinaryrY   Úlistr#   rq   rs   ru   r}   Zxfailr   r   r   r   r   Ú<module>   s.  




















Ý0$î

ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
k'