U
    âÇ-eo<  ã                "   @   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 ¡ d8d9d8d8gd=fe ¡ e-e.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 &d¡e-e.d>ƒƒdEfe &d¡e-e.d>ƒƒdFfe &d!¡e-e.d>ƒƒdGfe &d#¡e-e.d>ƒƒdHfe '¡ e-e.d>ƒƒdIfe (¡ e-e.d>ƒƒdJfg¡dKdL„ ƒZ/dMdN„ Z0ej dOe ¡ d8d9d8d8gd=dfe ¡ e-e.d>ƒƒd?dfe ¡ e-e.d>ƒƒd@dfe ¡ e-e.d>ƒƒdPdfe  ¡ e-e.d>ƒƒdQdfe ¡ e-e.d>ƒƒdRdfe ¡ e-e.d>ƒƒdSdfe ¡ e-e.d>ƒƒdAdfe ¡ e-e.d>ƒƒdBdfe "¡ e-e.d>ƒƒdCdfe #¡ e-e.d>ƒƒdDdfe &d¡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 '¡ e-e.d>ƒƒdId.fe (¡ e-e.d>ƒƒdJd/fg¡dTdU„ ƒZ1dVdW„ Z2ejj3dXdYdZd[„ ƒZ4dS )]é    NÚjpypeÚsession)Úscopec               	   C   sÒ   zt jd } W n. tk
r<   t j t j t¡ddd¡} Y nX 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|Ž 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   úW/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_jvm.pyÚroot_allocator   s4     
 ÿþ   þÿr   c                 C   st   |   d¡}tdƒD ]}| |d| ¡ q| ¡ }t |¡}| ¡ dksJt‚| ¡ |d ks^t‚~| ¡ |kspt‚d S )Né   s   é   )ÚbufferÚrangeZsetByteZrefCntÚpa_jvmÚ
jvm_bufferZ
to_pybytesÚAssertionError)r   r%   ÚiZorig_refcntÚbufr   r   r   Útest_jvm_buffer8   s    

r)   c              	   C   sJ   dd l }ddlm} |  d¡}| ¡  t |¡ t |¡ W 5 Q R X 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    
r2   c                 C   sl   t | ƒ}t d¡}t d¡ƒ }| |¡ |r`t d¡ƒ }| ¡ D ]\}}| ||¡ q@|||ƒS ||ƒS d S )Nz)org.apache.arrow.vector.types.pojo.Schemaújava.util.ArrayListzjava.util.HashMap)r2   r   r/   ÚaddÚitemsÚput)r0   Ú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\t‚t	t |¡ƒ}t 
|¡}|t  
|g¡ksˆt‚t	t |¡ddiƒ}t 
|¡}|t  
|gddi¡ksÀt‚dddœg|d	< t	t |¡ƒ}t 
|¡}| ddi¡}|t  
|g¡kst‚d S )
NÚ
field_name©ÚnamerG   ÚtypeÚchildren)rG   ÚmetaÚdataz
field metaz
field data)ÚkeyÚvaluer7   )ÚpaÚnullÚjsonÚloadsr2   Údumpsr$   r8   r&   r=   ZschemaZwith_metadata)	r   Úpa_typer0   rG   ÚspecÚ	jvm_fieldÚresultZexpected_fieldZ
jvm_schemar   r   r   Útest_jvm_typesu   s0    2û



ÿrZ   zpa_type,py_data,jvm_typeZ	BitVectoré€   ÚUInt1VectorÚUInt2VectorÚ	IntVectorZBigIntVectorZFloat4VectorZFloat8VectorZTimeStampSecVectorZTimeStampMilliVectorZTimeStampMicroVectorZTimeStampNanoVectorZDateDayVectorZDateMilliVectorc           
      C   s   d  |¡}t |¡d| ƒ}| t|ƒ¡ t|ƒD ]&\}}|dkrJt |¡}| ||¡ q0| t|ƒ¡ t	j
||d}t 
|¡}	| |	¡sŒt‚d S )Núorg.apache.arrow.vector.{}Úvector¾   r]   r\   ©rK   )r   r   r/   ÚallocateNewÚlenÚ	enumerateÚJIntÚsetSafeÚsetValueCountrQ   Úarrayr$   Úequalsr&   )
r   rV   Úpy_dataÚjvm_typeÚclsÚ
jvm_vectorr'   ÚvalÚpy_arrayÚ	jvm_arrayr   r   r   Útest_jvm_arrayÊ   s    


rr   c                 C   sR   d  d¡}t |¡d| ƒ}| ¡  t |¡}t|ƒdks<t‚|jt	 
¡ ksNt‚d S )Nr_   r^   r`   r   )r   r   r/   rc   r$   ri   rd   r&   rK   rQ   Úint32)r   rm   rn   rq   r   r   r   Útest_jvm_array_emptyñ   s    

rt   z!pa_type,py_data,jvm_type,jvm_specZUInt4VectorZUInt8VectorZTinyIntVectorZSmallIntVectorc                 C   s  d  |¡}t |¡d| ƒ}| t|ƒ¡ t|ƒD ]&\}}|dkrJt |¡}| ||¡ q0| t|ƒ¡ ddt	 
|¡g dœ}	tt	 |	¡ƒ}
t d¡ƒ }| |
¡ t d¡ƒ }| |¡ t d¡}|||t|ƒƒ}tj tj||d	gd
g¡}t |¡}| |¡st‚d S )Nr_   r`   ra   rH   FrI   r3   z(org.apache.arrow.vector.VectorSchemaRootrb   Úcol)r   r   r/   rc   rd   re   rf   rg   rh   rS   rT   r2   rU   r4   rQ   ZRecordBatchZfrom_arraysri   r$   Zrecord_batchrj   r&   )r   rV   rk   rl   r0   rm   rn   r'   ro   rW   rX   Z
jvm_fieldsZjvm_vectorsZjvm_vsrZpy_record_batchZjvm_record_batchr   r   r   Útest_jvm_record_batchý   s4    n

û


þ
rv   c                 C   s„   d}t  |¡ƒ }|d kr d|_n`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"   rd   ZsetBytesÚstartÚend)Úrarw   Znvch_clsÚholderrP   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Š   dd dg}d}t  |¡d| ƒ}| ¡  t|ƒD ],\}}t| dƒ}| ||¡ | |d ¡ q.tj|t 	¡ d}t
 |¡}| |¡s†t‚d S )Nrw   u   tÃ¶stz%org.apache.arrow.vector.VarCharVectorr`   r!   rb   )r   r/   rc   re   r~   rg   rh   rQ   ri   rw   r$   rj   r&   )	r   rN   rm   rn   r'   rw   r|   rp   rq   r   r   r   Útest_jvm_string_array¡  s    


r€   )N)5rS   r	   ZpyarrowrQ   Zpyarrow.jvmZjvmr$   r-   r   Zxml.etree.ElementTreeÚetreeZElementTreer   Zimportorskipr   Zfixturer   r)   r.   r2   r=   ÚmarkZparametrizerR   Zbool_Zint8Zint16rs   Zint64Zuint8Zuint16Zuint32Zuint64Zfloat16Zfloat32Zfloat64Ztime32Ztime64Ú	timestampZdate32Zdate64Z
decimal128rw   ÚbinaryrZ   Úlistr#   rr   rt   rv   r~   Zxfailr€   r   r   r   r   Ú<module>   s,  




















Ý0$î

ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ük
'