K ig ddlZddlZddlZddlZ ddlmZddlZ ddl Z ddl m Z ejjedudZej"edZej"edZej"edZd Zej.d ZGd d ej2Zd ZdZdZdZdZdZ dZ!edZ"edZ#dZ$edZ%edZ&dCdZ'edZ(edZ)edZ*dZ+edZ,edZ-ed Z.d!Z/d"Z0d#Z1eejjed$e0e1gd%Z3ed&Z4ed'Z5ejjed(ejlejnd)ejlejpd)ejliggd*+d,Z9ejjed-ejtgd.d/ejlejvfejxejtgd.gd0g1d2ejpd0ejliejpd0ejvifgd3d4g+d5Z=ejjed-ejtgd.d6ejlejvfejxejtgd.gd0g1d7ejpd0ejliejpd0ejvifgd3d4g+d8Z>ejjed9ej~jd:gd;dZBd?ZCd@ZDdAZEedBZFy#e$rdZYwxYw#e$rdxZ Z YwxYw)DN)ffiz!test needs cffi package installed)reasonz"Cannot import released ArrowSchemamatchz!Cannot import released ArrowArrayz#Cannot import released Arrow Streamcntjjtj||dk(SN)ctypes pythonapiPyCapsule_IsValid py_object)capsulenames ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_cffi.pyr r 3s,    - -f.>.>w.G NRS SSc#Ktj| dtj|jy#tj|jwxYwwN)paregister_extension_typeunregister_extension_typeextension_name)ext_types rregistered_extension_typer7sDx(>  $$X%<%<=$$X%<%<=sA!= A!!AA!cDeZdZfdZedZdZedZxZ S) ParamExtTypecZ||_t| tj|dy)Nz$pyarrow.tests.test_cffi.ParamExtType)_widthsuper__init__rbinary)selfwidth __class__s rrzParamExtType.__init__Bs&  5)? Arc|jSr)rr!s rr"zParamExtType.widthGs {{rcHt|jjSr)strr"encoder%s r__arrow_ext_serialize__z$ParamExtType.__arrow_ext_serialize__Ks4::%%''rcDt|j}||Sr)intdecode)cls storage_type serializedr"s r__arrow_ext_deserialize__z&ParamExtType.__arrow_ext_deserialize__NsJ%%'(5zr) __name__ __module__ __qualname__rpropertyr"r) classmethodr0 __classcell__)r#s@rrr@s6A (rrctjdtjtjfgddiS)Nintskey1value1metadata)rschemalist_int32rr make_schemarATs4 99vrxx 345& 2 44rcLtjdtdfgddiSNextr9r:r;)rr=rr@rrmake_extension_schemarFYs) 99ul1o./& 2 44rc`tjdtdjfgddiSrC)rr=rr.r@rrmake_extension_storage_schemarH^s/ 99ul1o::;<& 2 44rcJtjdgddgggtS)Nr *)r record_batchrAr@rr make_batchrMds" ??aS1b'N+[] ;;rct}|djjtjddgtj d}tj |g|S)NrsfoosbarrEtype)rFrP wrap_arrayrarrayr rL)r=ext_cols rmake_extension_batchrThsT " $FQinn''&&1A68iil)DEG ??G9f --rct}tjdgddggg|tjdgddggg|gS)Nr rJrK)rArrLr=s r make_batchesrYosJ ]F 1#2w(&1 $QF+,f5 rctj5}tjj||5}|D]}|j | ddd|j cdddS#1swY"xYw#1swYyxYwr)rBufferOutputStreamipc new_streamwritegetvalue)r=batchessinkoutbatchs rmake_serializedrdws{   D VV  tV , !  ! %  ! !}}  ! !s"!A=A1A=1A: 6A==Bc`tjd}ttjd|}t j t j}t jt j}|j|t j|kDsJ~t j|kDsJt jj|}|t jt jk(sJt j|k(sJt5t jj|dddt jj|tjdd}||_tj t"d5t jj|dddt5t jj|dddy#1swYxYw#1swYDxYw#1swYyxYw)Nstruct ArrowSchema* uintptr_tzchar[]szzzz$Invalid or unsupported format stringr)rnewr+castgccollectrtotal_allocated_bytesr>r? _export_to_cDataType_import_from_cassert_schema_releasedformatpytestraises ValueError)c_schema ptr_schema old_allocatedtyptyp_new bad_formats rtest_export_import_typer{sww,-HSXXk845JJJL,,.M ((288: CZ # # % 55 5 # # % 55 5kk((4G bhhrxxz* ** * # # % 66 6 / "":./HHJJ'6*J HO zC E/ "":./ / "":.////////s$2 H 5 H# H$ HH!$H-c&tjd}ttjd|}t j t j}t jdt jt jd}|j|t j|kDsJ~t j|kDsJt jj|}|t jdt jt jdk(sJt j|k(sJt5t jj|dddy#1swYyxYw)NrfrgtestT)nullable)rrhr+rirjrkrrlfieldr>r?rmFieldrorp)rurvrwr field_news rtest_export_import_fieldrsww,-HSXXk845JJJL,,.M HHVRXXbhhj1D AE z" # # % 55 5 # # % 55 5'' 3I "((*)=M MM M # # % 66 6 ,  +,,,s  FFctjd}ttjd|}tjd|d}ttjd|}t j t j}t jt j}t jdgddgg|} | j} || |t j|kDsJ~ |||} | j| k(sJ| jt jt jk(sJt j|kDsJ~ ~t j|k(sJt5||t jt jdddt jdgddggt jt j} | j} || ||~ |||} | j| k(sJ| jt jt jk(sJt j|kDsJ~ t j|k(sJt5|||dddy#1swYxYw#1swYyxYw) Nrfrgstruct *r rJrKrO)rrhr+rirjrkrrlr>r?rR to_pylistrPassert_array_releasedrp) array_typeexporterimporterrurvc_array ptr_arrayrwrxarrpy_valuearr_news rcheck_export_import_arrayrsQww,-HSXXk845Jgg |1-.GCHH['23IJJL,,.M ((288: C ((QC!R> ,C}}H S) # # % 55 5 y#&G    ( ** * <<288BHHJ/ // / # # % 55 5 # # % 66 6 2BHHRXXZ012 ((QC!R>(< =C}}H S)Z( y*-G    ( ** * <<288BHHJ/ // / # # % 55 5 # # % 66 6 (J'((!22 ((s/K 9 K KK"c~tdtjjtjjyN ArrowArray)rrArrayrmror@rrtest_export_import_arrayrs'  rctdtjjtjjt j d}tt jd|}tjdgddggtjtj}|j||jdk(sJ|jdk(sJ|jjdk(sJy) NArrowDeviceArraystruct ArrowDeviceArray*rgr rJrKrO)rrr_export_to_c_device_import_from_c_devicerrhr+rirRr>r? device_type device_idlength)rrrs rtest_export_import_device_arrayrs $$ &&gg01GCHH['23I ((QC!R>(< =CI&   ! ## #    "" " ==  1 $$ $rc||}tjd}ttjd|}t j t j}|j|t j|kDsJt jj|}||k(sJt j|k(sJ~t j|k(sJt5t jj|dddt jj|tjtd5t jj|dddt5t jj|dddy#1swYxYw#1swYDxYw#1swYyxYw)Nrfrg%ArrowSchema describes non-struct typer)rrhr+rirjrkrrlrmSchemarorpr?rrrsrt)schema_factoryexpected_schema_factoryrurvrw schema_news rcheck_export_import_schemarsr&"0ww,-HSXXk845JJJL,,.M!!*- # # % 55 5))*5J 02 22 2 # # % 66 6 # # % 66 6 -   ,-HHJJ' zD F-   ,- -   ,---- ----s$4 F1 F= G 1F:=G Gc"ttyr)rrAr@rrtest_export_import_schemar s {+rcttttt d5ttdddy#1swYyxYwr)rrFrHrrr@rr(test_export_import_schema_with_extensionr%s>4<> #<? 3:"#89:::s AA ctjd}ttjd|}d}t j t |5tjt|dddt j t |5tjjt|}dddtk(sJy#1swYexYw#1swY%xYw)Nrfrgz,Passing a pointer value as a float is unsafer) rrhr+rirrwarns UserWarningrArmfloatrrro)rurvrrs r'test_export_import_schema_float_pointerr0sww,-HSXXk845J :E k /6 ""5#456 k /AYY--eJ.?@ A  && & 66AAs#C)C%C"%C.ctjd}ttjd|}tjd|d}ttjd|}t j t j}|} | j} | j} || |t j|kDsJ~ ||| } | j| k(sJ| j| k(sJt j|kDsJ~ ~ t j|k(sJt5||tddd|} | j} | j||~ |||} | j| k(sJ| j|jk(sJt j|kDsJ~ t j|k(sJt5|||dddt jj||j|tj t"d5|||dddt5|||dddy#1swYctdtjjtjjt yr)rr RecordBatchrmrorMr@rrtest_export_import_batchrus* ## %% rcttd5tdtjj tjj tdddy#1swYyxYw)Nr r)rrrrrrmrorTr@rr'test_export_import_batch_with_extensionrsK "<? 3 !  NN ' ' NN ) )     s AA!!A*ctdtjjtjjt t jd}tt jd|}t }|j||jdk(sJ|jdk(sJ|jjdk(sJy)Nrrrgr rrJ)rrrrrrMrrhr+rirrrRr)rrrcs rtest_export_import_device_batchrs ** ,, gg01GCHH['23I LE i(   ! ## #    "" " ==  1 $$ $rcbt}|dj}|||}|j|~~tjj |}|j|k(sJt |}~|tk(sJtt}|dj}tjj|j}|||}|j|~~tjj |}|j}~tj||yy)Nr)rYr=rmrRecordBatchReaderrolistpdTable from_batches to_pandas read_pandastmassert_frame_equal) ptr_streamreader_factoryr`r=reader reader_new got_batches expected_dfgot_dfs r_export_import_batch_readerrsnG QZ  F FG ,F  #%%44Z@J    && &z"K ,. (( ( ~.""hh++G4>>@ 0J' G))88D '')  k62rcTtjjt||Sr)rr\ open_streamrdr=r`s rmake_ipc_stream_readerrs 66  ofg> ??rcBtjj||Sr)rrrrs rmake_py_record_batch_readerrs   , ,VW ==rrcztjd}ttjd|}t j t j}t||t j|k(sJt5t jj|dddy#1swYyxYw)Nstruct ArrowArrayStream*rg) rrhr+rirjrkrrlrassert_stream_releasedrro)rc_streamrrws rtest_export_import_batch_readerrs ww12HSXXk845JJJL,,.M N; # # % 66 6 8 ++J7888s  B11B:ctjd}ttjd|}t j t j}d}t jjt|}|j|t jj|}tjt5}|j!ddddt#j$vsJdt#|j$vsJdt#|j$vsJt j|k(sJy#1swYnxYw)Nrrgc3^K td#t$r}td|d}~wwxYww)Nfoobar)rtNotImplementedErrorrY)es rgenz0test_export_import_exception_reader..gens5  8 '' 8)%0a7 8s-  * %*-zValueError: foozNotImplementedError: barzraise ValueError('foo'))rrhr+rirjrkrrlrrrArmrorrrsrread_next_batchr'value)rrrwroriginalrexc_infos r#test_export_import_exception_readerrsww12HSXXk845JJJL,,.M&##00FH *%  ! ! 0 0 > # # % 66 6$$&G # # % 55 5 # # % 66 6rz&arr,schema_accessor,bad_type,good_typeabcc|jSrrOxs rr5 !&&rr)namesc|jSrrXrs rrr8 !((rrRrLctjtj}t |j }|j \}}t|ddk(sJt|ddk(sJ|||}|j|sJtj|kDsJ~tj|k(sJ|j }tj|kDsJ~tj|k(sJtjtd5|j |jddd|j |j\}} ||| }|||k(sJy#1swYBxYw)Nrr s arrow_array-Could not cast.* string to requested .* int32r) rjrkrrlrPr__arrow_c_array__r equalsrrrsrtr rschema_accessorbad_type good_typerw import_arrayschema_capsulerarr_out array_capsules rtest_roundtrip_array_capsuler 4suJJL,,.M933L!335NG ^_ = BB B Wn 5 :: :>73G >>#   # # % 55 5 # # % 66 6##%G # # % 55 5 # # % 66 6 zM O= h99;<=%($9$9$$&%(!NM>=9G 7 #y 00 0== FF c|jSrrOrs rrr_rrc|jSrrXrs rrrbrrctjtj}t |j }|j \}}t|ddk(sJt|ddk(sJ|||}|j|sJtj|kDsJ~tj|k(sJ|j}tj|kDsJ~tj|k(sJtjtd5|j |jddd|j |j\}} ||| }|||k(sJy#1swYBxYw)Nrr sarrow_device_arrayrr)rjrkrrlrP_import_from_c_device_capsule__arrow_c_device_array__r rrrrrsrtrrs r#test_roundtrip_device_array_capsuler^szJJL,,.M9::L!::<NG ^_ = BB B W&; < AA A>73G >>#   # # % 55 5 # # % 66 6##%G # # % 55 5 # # % 66 6 zM OD $$X%@%@%BCD%($@$@$$&%(!NM>=9G 7 #y 00 0DDr  constructorcBtjj||Sr)rrrrs rrrsBHH11'6Brrecordbatchreadertablect}|dj}tjt j }|||}|j }t|ddk(sJtjj|}|j|k(sJt|}t|t|k(sJt||D]\}} |j| rJ~~~~ ~t j |k(sJ|||}t jdt ji} tj tj"j$d5|j | j'dddt jdt j(t ji} |j | j'}tjj|}|j| k(sJt||D]\}} |j| rJy#1swYxYw)Nrarrow_array_streamr r8zField 0 cannot be castr)rYr=rjrkrrl__arrow_c_stream__r rrrlenziprr?rrrslibArrowTypeErrorrr>) rr`r=rwrrimported_readerimported_batchesrcexpected bad_schemamatching_schemas rtest_roundtrip_reader_capsuler$s nG QZ  FJJL,,.M fg &C$$&G W&; < AA A**AA'JO  ! !V ++ +O,  CL 00 0/9&x||H%%%& _eX/? # # % 66 6 fg &CFBHHJ/0J rvv,,4L M@ z<<>?@ii"((*)= >?O$$_%G%G%IJG**AA'JO  ! !_ 44 48&x||H%%%&@@s & II c6t}tjdtjtjfg}|j }|j |}|j|}t|ddk(sJtjj|}|j|k(sJ|jj|sJtjt5|jdddy#1swYyxYw)Nr8rr )rMrr=r>int64rrirr rrrrrrrs StopIteration)rcrequested_schemarequested_capsulebatch_as_requestedrrs r4test_roundtrip_batch_reader_capsule_requested_schemar+s LEyy6288BHHJ+?"@!AB(;;=$45&&'89G W&; < AA A**AA'JO  ! !%5 55 5  * * , 3 34F GG G } %*'')***s 5DDct}|j}t|ddk(sJtjj |}|j |j k(sJ|jj|sJtjt5|jdddy#1swYyxYw)Nrr ) rMrr rrrr=rrrrrsr')rcrrs r#test_roundtrip_batch_reader_capsuler-s LE&&(G W&; < AA A**AA'JO  ! !U\\ 11 1  * * , 3 3E :: : } %*'')***s B::Cctjtjgdg}|j}t |ddk(sJtj j |}|j|jk(sJ||k(sJy)Nrrr )r chunked_arrayrRrr ChunkedArrayrrP)chunkedrimported_chunkeds r$test_roundtrip_chunked_array_capsuler3s} 9:;G((*G W&; < AA A==gF  GLL 00 0 w && &rctjtjgdg}|jj }|j |}tj j|}||k(sJtj}|j }|j |}tj j|}||jtjk(sJtj}|j }tjtd5|j |dddy#1swYyxYw)Nrz-Could not cast string to requested type int64r)rr/rRrPrrr0rr rir&rrrsrt)r1r)rr2requested_types r5test_roundtrip_chunked_array_capsule_requested_schemar6s 9:;G 779(():;G==gF w && &YY[N&99;(():;G==gF w||BIIK8 88 8XXZN&99; I 6 ""#45666s 8EEc ddl}tjdt j d}t t jd|}tjgdtj}|j|d|_ tjtd 5tjj||j dddy#t$rYwxYw#1swYyxYw) Nrzpyarrow.cuda is availablerrgrrOrJz&Trying to import data on a CUDA devicer) pyarrow.cudarrskip ImportErrorrrhr+rirrRr&rrrsrrrP)pyarrowrrrs rtest_import_device_no_cudar<s1  /0gg01GCHH['23I ((9288: .CI&G {*R S< &&y#((;<<    <rIs&   [[  t 'J L ':<& 9;';=T >>2##(4 4 4 <. / /@ , ,.)(X   % %$-@ , , : :  '  '3(l       % %$3@@> )0578 88  8  7 7B  DXRXXeXRXXZ-H!*E8288:+>!?!A8:7:7&A RXXo 0("((*ibiikJ/23C5A 3 #$ 3  $% D  "1"1BA RXXo 0("((*ibiikJ/23C5A 3 #$ 3  $% D  "1"1D%%B) W% ' "& ' "&J * *'60 <