K id ddlZddlZddlZddlZddlZddlZddlmZ  ddl Z ddl ZddlmcmZddlmZmZmZmZ ddlmZddlZddlZ ej8ddZdMdZej8ddd g d Zej8dgd  d Z da!dZ"dZ#ejHj2dZ% dNdZ&dOdZ'dPdZ(ejHjdZ)ejHj2dZ*ejHj2dZ+ejHj2dZ,ejHj2dZ-ejHj2dZ.ejHj2dZ/ejHj2dZ0ejHj2dZ1ejHj2dZ2dZ3ejHjdZ4ejHj2d Z5ejHj2d!Z6ejHj2d"Z7ejHj2d#Z8ejHj2d$Z9ejHj2d%Z:ejHj2d&Z;ejHj2d'ZejHj2ejHjd*e@+d,ZAejHj2d-ZBejHj2d.ZCejHj2d/ZDejHj2ejHjejj d01d2ZHejHj2d3ZIejHjd4ZJejHj2d5ZKejHj2ejHjd6ejHjd7d8ZMejHj2d9ZNd:ZOejHj2d;ZPejHj2d<ZQejHj2ejHjejHjejHjd=ZUejHjd>ZVd?ZWejHjejHj2d@ZYejHjejHj2dAZ[dBZ\ejHj2dCZ]dDZ^dEZ_dFZ`dGZaejHjejeje jgdHdIZeejHjdJZfejHj2dKZgejHj2dLZhy#e $rdZ YwxYw#e $rYwxYw)QN) read_feather write_feather read_tableFeatherDataset)assert_frame_equalmodule)scopec |dz S)Nfeather) base_datadirs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_feather.pydatadirr,s ) ##c.tj|S)Nprefix)tempfilemktemprs r random_pathr1s ??& ))r)r paramsc#(K|jywN)paramrequests rversionr5s --s)N uncompressedlz4zstdc#K|jdvrKtjj|js"t j |jd|jyw)N)r!r"z is not available)rpaCodec is_availablepytestskiprs r compressionr):sL}}'0E0E MM1 w}}o%678 --sA)A+cgayr) TEST_FILES)rs r setup_moduler,EsJrcxtD]} tj|y#tj$rY1wxYwr)r+osremoveerror)rpaths rteardown_moduler2Js9  IIdOxx   s #99ctjtj5t ddddy#1swYyxYw)Ntest_invalid_file)r'raisesr$ ArrowIOErrorrr rrtest_file_not_existr7Rs0 r '*()***s 9Ac| t}|d}tj|t|||||tj j |s tdt|||}||}t||y)Nr)r)compression_levelrfile not written use_threads) rr+appendrr.r1exists Exceptionrr) dfexpectedr1columnsr<rr)r9results r_check_pandas_roundtriprDXs} |}d"d $5wH 77>>$ *++ $[ AFvx(rc| t}tj|t|||tj j |s tdt|}|j|sJy)Nr)r:) rr+r=rr.r1r>r?requals)tabler1r)rCs r_check_arrow_roundtriprIqs` |}d%;7 77>>$ *++  F ==  rc ttjfd}tj||y)Nc"ty)Nr)r)r@r1rsrfz!_assert_error_on_write..fsb$0r)rr+r=r'r5)r@excr1rrMs` `` r_assert_error_on_writerO~s4 |}d1 MM#qrc"d}d}t|Dcgc] }t}}t|dDcic]1}dt|ztjj |d3}}t j|}tj|t|D]5\}}||d|zz|dz|d|zzf} t|| d| d||7t|j}|j|sJycc}wcc}w)NdrRrcol_rrL)rangerstrnprandomrandnr$rHr+extend enumeraterrrrG) r num_values num_filesipathsdatarHindexr1rowss r test_datasetrcsJI$))$4 5q[] 5E 5z!}%   QA77 D  HHTNEe 'F t Z]i/ 0 QY:a=I5 6  eDGT!W-tWE F % + + -D ;;u  # 6 s D6D ci}ddg}d}|D]5}tjj|}|j|||<7t j |}t ||y)Nf4f8rRrL)rWrXrYastypepd DataFramerDrr` numpy_dtypesr\dtypevaluesr@s rtest_float_no_nullsrnsb D$?g ! E5!rcttjdk(rtjdGdd}t j t dddd|tjgdd d g }t} t||| tjj|rJy#t$rY-wxYw) Nwin32z/Windows hangs on to file handle for some reasonc eZdZy)6test_delete_partial_file_on_error..CustomClassN__name__ __module__ __qualname__r rr CustomClassrx rrrSfoobar)numbersstringsrrrBrL)sysplatformr'r(rhrirUrWrrrr?r.r1r>)rrr@r1s r!test_delete_partial_file_on_errorrss ||w EF   Qxe[]BFFC EI&  (B =D b$0ww~~d## ##    s;B++ B76B7cd}ddddtjg}tjd||zi}gd}tjd||zi}t |||gd}tjd||zi}tjd||zi}t |||d dddtjg}tjd||zi}gd}tjd||zi}t |||y) Nrrquxr)rNsbarsquxNrLfooNrrNr)rWrrhrirD)rrrmr@ ex_valuesrAs r test_stringsrsGdE5"&& 1F y&7"23 4B4I||Y G(;<=HB':/F y&7"23 4B||Y(89:HB':T5% 0F y&7"23 4B1I||Y G(;<=HB':rcTtjddgdzi}t||y)NrrzrLrhrirDrr@s rtest_empty_stringsrs% y2$), -BB0rctjddgdzi}|dk(r:tjjj r|j d}n|}t|||y)Nall_nonerzrrV)rrA)rhrir$ pandas_compat _pandas_apiuses_string_dtypergrDrr@rAs r test_all_nonersX zD6B;/ 0B!|((44FFH99U#B(Crctjddd}|j|jj d}t ||y)Nrrr})NNNABcategory)rrL)rhriassignrrgrDrs rtest_all_null_categoryrs? I,>? @B RTT[[, -BB0rctdDcic] }d|dgdz}}tj|}t|d|ycc}w)NrRcrrzT)r<r)rUrhrirD)rr^r`r@s rtest_multithreaded_readrsU3Z !sGbTBY  !D ! d BBD'B !sActjdtjtjdzdgdz}tjd|i}t ||y)NrrrrzrrL)rWrrrhrirD)rrmr@s rtest_nan_as_nullrsIXXubffbffqj%82= >F y&) *BB0rcd}ddddtjg}tjd||zi}|dj d|d<gd}tjdtj ||zi}t |||y) NrrrrrrrrL)rWrrhrirg CategoricalrD)rrrmr@rAs r test_categoryrs}GT5% 0F y&7"23 4ByM((4ByM .F||Yv7G(HIJHB':rctjdtjddi}|jjj djj d|d<t||y) Nnaivez 2016-03-28rz)periodsutczAmerica/Los_Angeleswith_tzrL)rhri date_rangerdt tz_localize tz_convertrDrs rtest_timestamprsZ w lB GH IBXX[[,,U3b$9:yMB0rc tjdtjddddtjdddgi}|jjj d|d<t ||y)Ntestirr}rrrL)rhri TimestamprrrrDrs rtest_timestamp_with_nullsrsf v T1a 8 $ " T1a 8 :;  ?BGGJJ**51ByMB0rctjgdgdd}|}|dk(r|jt}t |||y)Nrrr})TFTF)rrrrrL)rhrirenamerVrDrs rtest_non_string_columnsrsB ,46 7BH!|99S9)B':rzunicode filenames not supported)rcdjd}tjdgdi}t|t ||y)NsBesa_Kavajë.featherzutf-8rrr)r1r)decoderhrirDr)rrr@s rtest_unicode_filenamers; * 1 1' :D ul+ ,BB[%=$+-rcrtjgdgdgdd}|ddg}t|||ddgy)Nr)rS)rr}rSr)rboowoor r )rrBrrs rtest_read_columnsr sC  B 5%.!HB'%*EN4rcbt}tj|d}tjj dtjj dd|}tjd|i}t||tjd|d|dzi}t||y) NrRrrzrpints more_intsr)r1) rr+r=rWrXrrsr$rHrrI)rr1r\rmrHs rtest_overwritten_filer(s =DdJIINN1 YY  q":  6F HHff% &E% HHk6!JM#:; .ANrr rrrr/mrrrr)rrg@)rhrirOr& TypeError)rr@s rtest_unsupportedr1gsR    sQS!#J' (B2z* sM* +B2y)rctjdtjdi}t j |}t j}t||dd|j}tjjt j|}|jdk(sJt|jddk(sJy)Nrrr chunksizerrr)rhrirWrr$rHrrrgetvalueipc open_file BufferReadernum_record_batcheslen get_batch)r@rHrrCipc_files rtest_v2_set_chunksizer>xs sBIIdO, -B HHRLE **,C%Q7 \\^Fvv 78H  & &! ++ + x!!!$ % ,, ,rc0tjdtjdi}gd}|D]\}}t |||t j }tjtd5t||dd dddtjtd 5t||d d dddtjtd 5t||ddddy#1swYoxYw#1swYHxYw#1swYyxYw)Nrr))r N)r!N)r!r)r!r)r"r)r"rz)r)r9z2Feather V1 files do not support compression optionmatchr!r)r)rz0Feather V1 files do not support chunksize optionir4z"compression="snappy" not supportedsnappyrF) rhrirWrrDrrr'r5r&r)r@casesr)r9rs rtest_v2_compression_optionsrDs  sBIIdO, -B E+0E& & 2C EE **,C  F H= b#5!<=  D F: b#q9: zA C5b#8455== :: 55s$6C4)DD 4C=D  Dctjjdstjdtj t jddgdg}tj}t|||j}tj}t||d|j}t|t|ksJy) N lz4_framez+LZ4 compression support is not built in C++rif0rr rF) r$r%r&r'r(rHrWrepeatrrrr6r;)trdefault_resultuncompressed_results rtest_v2_lz4_default_compressionrLs 88  - AB "))Av&'v6A **,C!S\\^N **,C!Sn5,,. ~ %8!9 99 9rc tjtjgdgdggdg}tj}t j td5t||ddddy#1swYyxYw)NrrGrz[Unsupported Feather V1 type: list. Use V2 format to serialize all Arrow types.r@rrL) r$rHrrrr'r5r0r)rHrs rtest_v1_unsupported_typesrNsj HHbhh 2t456tf EE **,C yL N- eS!, ---s !A99Bcrtjdtjdi}t ||y)NrirL)rhrirWrrDrs rtest_large_dataframerPs* sBIIi01 2BB0rcdgddzgdzdzz}tjd|i}tj}t ||dt t j|j}t||tjtd5t |tjd dddy#1swYyxYw) Nxiribyte_colrLzp'byte_col' exceeds 2GB maximum capacity of a Feather binary column. This restriction may be lifted in the futurer@r) rhrirrrrr$r9r6rr'r5r&)rmr@rrCs r!test_chunked_binary_error_messagerTsV   F z6* +B **,C"c1% "//#,,.9 :Fvr" z*5 63 b"**,2333s !CCctjtjgdgdg}t|dz }t ||y)NrrGr data.feather)r$rHrrVrI)tempdirrrHr1s rtest_feather_without_pandasrXs9 HHbhhy)*4& 9E w' (D5$'rc,tjtjdj ddgd}t |ddg|ddg|t |d d g|ddg|t |d dg|d dg|t |d d g|d dg|y) Nrrr}rrrr)rBrArrrrr)rhrirWrrrDrs rtest_read_column_selectionrZs biim++Aq1? KB S#JS#JJ QFRc ^WF S#JS#JJ QFRc ^WFrctjgdgdgdggd}t|dz }t|||tjgdgdgdggd}gdgd fD]"}t || }|j |r"Jy) Nrr)r*rrrVrLrrr)rrrr)r$rHrVrrrG)rWrrHr1rA col_selectionrCs r%test_read_column_duplicated_selectionr^s HHiI6o NE w' (D%w/xxIy9-/H)95' D-8}}X&&&'rcztjgdgdgdggd}t|dz }t||dt |}|j |sJt |d dg }|j d d gk(sJtjt5t |d d g dddy#1swYyxYw) Nrr)r*r\rrVrrLrrrr) r$rHrVrrrG column_namesr'r5r&)rWrHr1rCs r#test_read_column_duplicated_in_fileras HHiI6o NE w' (D%q) F ==  q!f -F   3* ,, , z "-4#s,---s B11B:c tjgdgdgdggd}t|dz }t|||ddD}t j t d 5t|| dddy#1swYyxYw) Nrr)r*rrrVrLc3 K|]}|ywrr ).0xs r z2test_read_column_with_generator..,s.1.s zColumns must be a sequencer@r)r$rHrVrr'r5r0r)rWrrHr1 columns_gens rtest_read_column_with_generatorrh(sl HHiI6o NE w' (D%w/.o.K y(D E.4-...s #A::Bctjdtjjgdgdgddgi}t ||tjdtj dd gd d ggi}t ||tjdtj dd gd d ggd d gdggi}t ||y)Ncolrrf1f2rrFrrr}rrSr)r$rH StructArrayrurIr)r)rHs rtest_nested_typesrn1s HHeR^^77 ItTl845 6E5k: HHeRXX1v1v&678 9E5k: HHeRXXAA'71a&$&HIJ KE5k:r)r r!r"ct||y)NrF)rI)rHr)s rtest_roundtriprp>s5k:rctjdtdi}t|dz }|j |sJy)NrrSz)v0.17.0.version.2-compression.lz4.feather)r$rHrUrrG)rrArCs rAtest_feather_v017_experimental_compression_backward_compatibilityrrDs<xxeAh(H "MM NF == "" "rctjdgdigd}|dk(r'|jdjt}n|}t ||| y) Nrrr)rarT)droprrL)rhri reset_indexrrVrDrs rtest_preserve_index_pandasrvUsM sI&o >B!|>>t>,33C3@B':rc4ddlm}tjd|jd|jdgi}t ||dz |jd}|jd}t |dz d}||ddk(sJ||dd k(sJy) Nr)datetimedatez 1654-01-01z 1920-01-01ztest_resolution.featherT)timestamp_as_objectr)rxrhri fromisoformatrr)rWrxr@ expected_0 expected_1rCs r0test_feather_datetime_resolution_arrow_to_pandasr~as " v|,|, 0 B"g 99:'' 5J'' 5J '$==.24F * ** * * ** *r)feather_)NNNFNNN)NN)Nr)irr.rrr' hypothesishhypothesis.strategies strategiesstnumpyrW ImportErrorpyarrowr$pyarrow.tests.strategiestestspastpyarrow.featherrrrrpandas.testingrpandasrhpyarrow.pandas_compatfixturerrrr)r+r,r2markr7rDrIrOrcrnrxr{rrrrrrrrrrrrrrrrrrxfailr0rrrrskipifr1supports_unicode_filenamesrr rrfilterwarningsr#r'r,r1r>r!rBr"rDrLrNslowrP large_memoryrTrXrZr^rarhrngiven all_tables sampled_fromrprrrvr~r rrrs;$  "''-- 1 h$ $*h1v./h'LMN  ** 596;6:.2)2   . 1 122.  2114""& 1 11161111$ &""$$.;;011 DD11CC11;;1111/)<+=+++11;;:::<>->- 4 4 - -  # #9:FG;H;;++9 * *  - -"5"5J::(-11 33,(FF" '-&. ;/"//*IJK;L; # # ;;++M B  s"[[[[[[