o
    Ûñh“<  ã                "   @   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j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/e0d?ƒƒd@fe  ¡ e/e0d?ƒƒdAfe ¡ e/e0d?ƒƒdBfe ¡ e/e0d?ƒƒdCfe $¡ e/e0d?ƒƒdDfe %¡ e/e0d?ƒƒdEfe (d¡e/e0d?ƒƒdFfe (d¡e/e0d?ƒƒdGfe (d!¡e/e0d?ƒƒdHfe (d#¡e/e0d?ƒƒdIfe )¡ e/e0d?ƒƒdJfe *¡ e/e0d?ƒƒdKfg¡dLdM„ ƒZ1dNdO„ Z2ej dPe ¡ g d=¢d>dfe ¡ e/e0d?ƒƒd@dfe  ¡ e/e0d?ƒƒdAdfe !¡ e/e0d?ƒƒdQdfe "¡ e/e0d?ƒƒdRdfe ¡ e/e0d?ƒƒdSdfe ¡ e/e0d?ƒƒdTdfe ¡ e/e0d?ƒƒdBdfe ¡ e/e0d?ƒƒdCdfe $¡ e/e0d?ƒƒdDdfe %¡ e/e0d?ƒƒdEdfe (d¡e/e0d?ƒƒdFd%fe (d¡e/e0d?ƒƒdGd&fe (d!¡e/e0d?ƒƒdHd'fe (d#¡e/e0d?ƒƒdId(fe )¡ e/e0d?ƒƒdJd.fe *¡ e/e0d?ƒƒdKd/fg¡dUdV„ ƒZ3dWdX„ Z4ejj5dYdZd[d\„ ƒZ6d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 )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Úkwargs© r+   úJ/var/www/vscode/kcb/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ÚrangeÚsetByteÚrefCntÚpa_jvmÚ
jvm_bufferÚ
to_pybytes)r-   r5   ÚiÚorig_refcntÚbufr+   r+   r,   Útest_jvm_buffer:   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.   )	Újpype.importsÚ	java.langr;   r0   ÚreleaseÚpytestÚraisesr4   r5   )r-   r   r;   r5   r+   r+   r,   Útest_jvm_buffer_releasedN   s   
"ÿrA   c                 C   s"   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_Fieldr+   r+   r,   Ú
_jvm_fieldY   s   
rG   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)rG   r   rB   ÚaddÚitemsÚput)rD   ÚmetadataÚfieldÚ
schema_clsÚfieldsÚdctÚkÚvr+   r+   r,   Ú_jvm_schema_   s   


rS   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©Únamer]   ÚtypeÚchildren)r]   ÚmetaÚdataz
field metaz
field data)ÚkeyÚvaluerL   )ÚpaÚnullÚjsonÚloadsrG   Údumpsr4   rM   rS   ÚschemaÚwith_metadata)	r-   Úpa_typerD   r]   ÚspecÚ	jvm_fieldÚresultÚexpected_fieldÚ
jvm_schemar+   r+   r,   Útest_jvm_typesw   s0   2û



ÿrt   zpa_type,py_data,jvm_type)TFTTÚ	BitVectoré€   ÚUInt1VectorÚUInt2VectorÚ	IntVectorÚBigIntVectorÚFloat4VectorÚFloat8VectorÚTimeStampSecVectorÚTimeStampMilliVectorÚTimeStampMicroVectorÚTimeStampNanoVectorÚDateDayVectorÚ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¾   rw   rx   ©ra   )r   r   rB   ÚallocateNewÚlenÚ	enumerateÚJIntÚsetSafeÚsetValueCountrg   Úarrayr4   Úequals)
r-   rn   Úpy_dataÚjvm_typeÚclsÚ
jvm_vectorr7   ÚvalÚpy_arrayÚ	jvm_arrayr+   r+   r,   Útest_jvm_arrayÌ   s   


r–   c                 C   sR   d  d¡}t |¡d| ƒ}| ¡  t |¡}t|ƒdksJ ‚|jt 	¡ ks'J ‚d S )Nrƒ   ry   r„   r   )
r   r   rB   r‡   r4   r   rˆ   ra   rg   Úint32)r-   r‘   r’   r•   r+   r+   r,   Útest_jvm_array_emptyó   s   

r˜   z!pa_type,py_data,jvm_type,jvm_specÚUInt4VectorÚUInt8VectorÚTinyIntVectorÚ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…   r^   Fr_   rH   z(org.apache.arrow.vector.VectorSchemaRootr†   Úcol)r   r   rB   r‡   rˆ   r‰   rŠ   r‹   rŒ   ri   rj   rG   rk   rI   rg   ÚRecordBatchÚfrom_arraysr   r4   Úrecord_batchrŽ   )r-   rn   r   r   rD   r‘   r’   r7   r“   ro   rp   Ú
jvm_fieldsÚjvm_vectorsÚjvm_vsrÚpy_record_batchÚjvm_record_batchr+   r+   r,   Útest_jvm_record_batchÿ   s4   
n
û


þ
r¦   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   rB   ÚisSetÚgetBytesÚUTF_8r0   rˆ   ÚsetBytesÚstartÚend)Úrar§   Únvch_clsÚholderrf   Ú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)r§   Nu   tÃ¶stz%org.apache.arrow.vector.VarCharVectorr„   r§   r/   r†   )r   rB   r‡   r‰   r³   r‹   rŒ   rg   r   r§   r4   rŽ   )	r-   rd   r‘   r’   r7   r§   r°   r”   r•   r+   r+   r,   Útest_jvm_string_array£  s   

rµ   )N)7ri   r   Úpyarrowrg   Úpyarrow.jvmÚjvmr4   r?   r#   Úxml.etree.ElementTreeÚetreeÚElementTreer   Úimportorskipr   ÚmarkÚ	processesÚ
pytestmarkÚfixturer-   r:   rA   rG   rS   Úparametrizerh   Úbool_Úint8Úint16r—   Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64Útime32Útime64Ú	timestampÚdate32Údate64Ú
decimal128r§   Úbinaryrt   Úlistr1   r–   r˜   r¦   r³   Úxfailrµ   r+   r+   r+   r,   Ú<module>   s0  




















Ý0$î

ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
k'