K ii%`dZddlZGddZdZdZdZdZd Zd Z d Z d Z d Z dZ y)a Functions to interact with Arrow memory allocated by Arrow Java. These functions convert the objects holding the metadata, the actual data is not copied at all. This will only work with a JVM running in the same process such as provided through jpype. Modules that talk to a remote JVM like py4j will not work as the memory addresses reported by them are not reachable in the python process. Nc eZdZdZdZdZdZy)_JvmBufferNannyz` An object that keeps a org.apache.arrow.memory.ArrowBuf's underlying memory alive. NcR|j}|j||_yN)getReferenceManagerretain ref_manager)selfjvm_bufr s Q/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/jvm.py__init__z_JvmBufferNanny.__init__&s&113  &cR|j|jjyyr)r release)r s r __del__z_JvmBufferNanny.__del__.s%    '    $ $ & (r)__name__ __module__ __qualname____doc__r r rrr rrsK''rrct|}|j}|j}tj|||S)a) Construct an Arrow buffer from org.apache.arrow.memory.ArrowBuf Parameters ---------- jvm_buf: org.apache.arrow.memory.ArrowBuf Arrow Buffer representation on the JVM. Returns ------- pyarrow.Buffer Python Buffer that references the JVM memory. )base)r memoryAddresscapacitypaforeign_buffer)r nannyaddresssizes r jvm_bufferr 3s? G $E##%G    D  Wd 77rc|j}|jre|dk(rtjS|dk(rtjS|dk(rtj S|dk(rtj Sy|dk(rtjS|dk(rtjS|dk(rtjS|dk(rtjSy)z Convert a JVM int type to its Python equivalent. Parameters ---------- jvm_type : org.apache.arrow.vector.types.pojo.ArrowType$Int Returns ------- typ : pyarrow.DataType  @N) getBitWidth getIsSignedrint8int16int32int64uint8uint16uint32uint64)jvm_type bit_widths r _from_jvm_int_typer2Hs$$&I >779  "_88:  "_88:  "_88:  >88:  "_99;  "_99;  "_99; rc|jj}|dk(rtjS|dk(rtjS|dk(rtj Sy)z Convert a JVM float type to its Python equivalent. Parameters ---------- jvm_type: org.apache.arrow.vector.types.pojo.ArrowType$FloatingPoint Returns ------- typ: pyarrow.DataType HALFSINGLEDOUBLEN) getPrecisiontoStringrfloat16float32float64)r0 precisions r _from_jvm_float_typer=js\%%'002IFzz| h zz| h zz| rc|jj}|dk(r*|jdk(sJtjdS|dk(r*|jdk(sJtjdS|dk(r*|jdk(sJtj dS|d k(r*|jdk(sJtj d Sy ) z Convert a JVM time type to its Python equivalent. Parameters ---------- jvm_type: org.apache.arrow.vector.types.pojo.ArrowType$Time Returns ------- typ: pyarrow.DataType SECONDr$s MILLISECONDms MICROSECONDr%us NANOSECONDnsN)getUnitr8r&rtime32time64)r0 time_units r _from_jvm_time_typerKs  "++-IH##%+++yy~ m ###%+++yy m ###%+++yy l "##%+++yy #rcZ|jj}|j}| t|}|dk(rt j d|S|dk(rt j d|S|dk(rt j d|S|d k(rt j d |Sy) z Convert a JVM timestamp type to its Python equivalent. Parameters ---------- jvm_type: org.apache.arrow.vector.types.pojo.ArrowType$Timestamp Returns ------- typ: pyarrow.DataType Nr?r@)tzrArBrCrDrErF)rGr8 getTimezonestrr timestamp)r0rJtimezones r _from_jvm_timestamp_typerRs  "++-I##%Hx=H||CH-- m #||DX.. m #||DX.. l "||DX.. #rc|jj}|dk(rtjS|dk(rtjSy)z Convert a JVM date type to its Python equivalent Parameters ---------- jvm_type: org.apache.arrow.vector.types.pojo.ArrowType$Date Returns ------- typ: pyarrow.DataType DAYrAN)rGr8rdate32date64)r0day_units r _from_jvm_date_typerXsH!**,H5yy{ ] "yy{ #rc`t|j}|j}d}|jsL|j j }|dk(rt j}n|dk(r t|}n |dk(r t|}n|dk(rt j}n|dk(rt j}n|dk(r$t j|j}n|dk(rt j}n|d k(r t|}ns|d k(r t|}nb|d k(r t!|}nQ|d k(r3t j"|j%|j'}nt)d |t)d|j+}|j-}|j/rd}nL|j1Dcic]3}t|j3t|j55}}t j6||||Scc}w)z Construct a Field from a org.apache.arrow.vector.types.pojo.Field instance. Parameters ---------- jvm_field: org.apache.arrow.vector.types.pojo.Field Returns ------- pyarrow.Field NNullInt FloatingPointUtf8BinaryFixedSizeBinaryBoolTime TimestampDateDecimalzUnsupported JVM type: z:JVM field conversion only implemented for primitive types.)rOgetNamegetType isComplex getTypeIDr8rnullr2r=stringbinary getByteWidthbool_rKrRrX decimal128r7getScaleNotImplementedError isNullable getMetadataisEmptyentrySetgetKeygetValuefield) jvm_fieldnamer0typtype_strnullable jvm_metadatametadataentrys r rwrws y  " #D  "H C    %%'002 v '')C  $X.C  (&x0C  ))+C  !))+C * *))H1134C  ((*C  %h/C  $*84C  %h/C  "-- 5 5 79J9J9LMC%( 35 5 " HJ J##%H((*L".!6!6!8: 'U^^-=)>>:: 88D#x 22:s8H+cp|j}|Dcgc] }t|}}|j}|jrd}nL|j Dcic]3}t |j t |j5}}tj||Scc}wcc}w)z Construct a Schema from a org.apache.arrow.vector.types.pojo.Schema instance. Parameters ---------- jvm_schema: org.apache.arrow.vector.types.pojo.Schema Returns ------- pyarrow.Schema N) getFieldsrwgetCustomMetadatarsrtrOrurvrschema) jvm_schemafieldsfr}r~rs r rrs ! ! #F & '1eAh 'F '//1L".!6!6!8: 'U^^-=)>>:: 99VX &&( :s B.8B3c2|jjjr-|jj }t d|dt |jj}t|jdDcgc] }t|}}t|dk(rtjg|S|j}|j}tj j#||||Scc}w)z Construct an (Python) Array from its JVM equivalent. Parameters ---------- jvm_array : org.apache.arrow.vector.ValueVector Returns ------- array : Array z'Cannot convert JVM Arrow array of type z$, complex types not yet implemented.Fr)type)getFieldrfrg getMinorTyper8rprwrlist getBuffersr lenrarray getValueCount getNullCountArray from_buffers) jvm_arrayminor_type_strdtypebufbufferslength null_counts r rrs##%//1"//1::<!5n5EF1 12 2 )$$& ' , ,Ey33E:;=#=G= 7|qxx''  $ $ &F'')J 88  DD=sDct|j}g}|jD]+}|jt |j |-t jj||j|jS)z Construct a (Python) RecordBatch from a JVM VectorSchemaRoot Parameters ---------- jvm_vector_schema_root : org.apache.arrow.vector.VectorSchemaRoot Returns ------- record_batch: pyarrow.RecordBatch )r~) r getSchemanamesappendr getVectorr RecordBatch from_arraysr~)jvm_vector_schema_root pa_schemaarraysrys r record_batchr9s-779:I FE e2<> % %## & r)rpyarrowrrr r2r=rKrRrXrwrrrrrr rsN" ''(8*D*6/4&93x'0E<r