o
    G¾±hs<  ã                "   @   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|› 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-z-jar-with-dependencies.jarÚARROW_TOOLS_JARFÚconvertStringsz-Djava.class.path=Úorg)ÚosÚenvironÚKeyErrorÚpathÚjoinÚdirnameÚ__file__ÚETÚparseÚgetrootÚfindÚtextÚgetenvr   ÚstartJVMÚgetDefaultJVMPathÚJPackageÚapacheÚarrowÚmemoryÚRootAllocatorÚsysÚmaxsize)Ú	arrow_dirÚpom_pathÚtreeÚversionÚjar_pathÚkwargs© r*   úW/var/www/html/Persson_Maskin/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ÚrangeÚsetByteÚrefCntÚpa_jvmÚ
jvm_bufferÚ
to_pybytes)r,   r4   ÚiÚorig_refcntÚbufr*   r*   r+   Útest_jvm_buffer:   s   

r9   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:   r/   ÚreleaseÚpytestÚraisesr3   r4   )r,   r   r:   r4   r*   r*   r+   Útest_jvm_buffer_releasedN   s   
"ÿr@   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   
rF   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)rF   r   rA   ÚaddÚitemsÚput)rC   ÚmetadataÚfieldÚ
schema_clsÚfieldsÚdctÚkÚvr*   r*   r+   Ú_jvm_schema_   s   


rR   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ÚvaluerK   )ÚpaÚnullÚjsonÚloadsrF   Údumpsr3   rL   rR   ÚschemaÚwith_metadata)	r,   Úpa_typerC   r\   ÚspecÚ	jvm_fieldÚresultÚexpected_fieldÚ
jvm_schemar*   r*   r+   Útest_jvm_typesw   s0   2û



ÿrs   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¾   rv   rw   ©r`   )r   rA   ÚallocateNewÚlenÚ	enumerateÚJIntÚsetSafeÚsetValueCountrf   Úarrayr3   Úequals)
r,   rm   Úpy_dataÚjvm_typeÚclsÚ
jvm_vectorr6   Ú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‚   rx   rƒ   r   )	r   rA   r†   r3   rŒ   r‡   r`   rf   Ú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^   rG   z(org.apache.arrow.vector.VectorSchemaRootr…   Úcol)r   rA   r†   r‡   rˆ   r‰   rŠ   r‹   rh   ri   rF   rj   rH   rf   ÚRecordBatchÚfrom_arraysrŒ   r3   Úrecord_batchr   )r,   rm   rŽ   r   rC   r   r‘   r6   r’   rn   ro   Ú
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   rA   ÚisSetÚgetBytesÚUTF_8r/   r‡   ÚsetBytesÚstartÚend)Úrar¦   Únvch_clsÚholderre   Ú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   rA   r†   rˆ   r²   rŠ   r‹   rf   rŒ   r¦   r3   r   )	r,   rc   r   r‘   r6   r¦   r¯   r“   r”   r*   r*   r+   Útest_jvm_string_array£  s   

r´   )N)7rh   r   Úpyarrowrf   Úpyarrow.jvmÚjvmr3   r>   r"   Úxml.etree.ElementTreeÚetreeÚElementTreer   Úimportorskipr   ÚmarkÚ	processesÚ
pytestmarkÚfixturer,   r9   r@   rF   rR   Úparametrizerg   Úbool_Úint8Úint16r–   Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64Útime32Útime64Ú	timestampÚdate32Údate64Ú
decimal128r¦   Úbinaryrs   Úlistr0   r•   r—   r¥   r²   Úxfailr´   r*   r*   r*   r+   Ú<module>   s0  




















Ý0$î

ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
ü
k'