gL i8 dZddlZddlZddlZddlmZmZddlm Z ddl m Z m Z m Z ddlZddlmZddlmZddlmZmZddlmZmZmZmZmZmZmZm Z dd l!m"Z"exre xse Z#ejHjKd ejHjKd ejHjKd gZ&d Z'dZ(dZ)ejTeeeeeeee eeeg dZ+ejTdZ,ejTdZ-ejTdZ.ejTdZ/ejTdZ0ejTdZ1ejTdZ2Gdde"jfZ4Gdde"jjZ6y)aj This file contains a minimal set of tests for compliance with the extension array interface test suite, and should contain no other tests. The test suite for the full functionality of the array is located in `pandas/tests/arrays/`. The tests in this file are inherited from the BaseExtensionTests, and only minimal tweaks should be applied to get the tests passing (by overwriting a parent method). Additional tests should either be added to one of the BaseExtensionTests classes (if they are relevant for the extension interface for all dtypes), or be added to the array-specific tests in `pandas/tests/arrays/`. N)IS64is_platform_windows)np_version_gt2)is_float_dtypeis_signed_integer_dtypeis_unsigned_integer_dtype) BooleanDtype) Float32Dtype Float64Dtype) Int8Dtype Int16Dtype Int32Dtype Int64Dtype UInt8Dtype UInt16Dtype UInt32Dtype UInt64Dtype)basez9ignore:invalid value encountered in divide:RuntimeWarningz)ignore:Mean of empty slice:RuntimeWarningz4ignore:overflow encountered in reduce:RuntimeWarningcttddtjgzttddztjgzddgzS)N bcd)listrangepdNAh/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/extension/test_masked.py make_datar#@sB a w &eBm)< <w F"c RRr!cttjdddtjgzttjdddztjgzddgzS)N皙?g?rg#@g#@g$@)rnparangerrr r!r"make_float_datar(Dsb RYYsC %& 55'  ryyC% & ' 55'  +  r!crddgdztjgzddgdzztjgzddgzS)NTF,)r&nanr r!r"make_bool_datar-Ns? %=1 x '4-"*< <x G4QV- WWr!)paramsc"|jSN)param)requests r"dtyper3Rs ==?r!c|jdk(r t}n$|jdk(r t}n t}t j ||S)Nfbr3)kindr(r-r#rarray)r3datas r"r:r:esB zzS  s { 88D &&r!c|jdk(r*tjtjd|Stjtjddz|S)Nr6rr7)r8rr9r&onesr7s r" data_for_twosr>psE zzSxx E22 88BGGCL1$E 22r!c(|jdk(r'tjtjdg|S|jdk(r'tjtj dg|Stjtjdg|S)Nr5r%r7r6Trr8rr9rr&r,r7s r" data_missingrAwse zzSxx E22 s xxe44 88RUUAJe ,,r!c|jdk(rtjgd|S|jdk(rtjgd|Stjgd|S)Nr5)r%皙?r7r6)TTF)rr<r)r8rr9r7s r"data_for_sortingrEsN zzSxxu55 s xx+599 88IU ++r!c.|jdk(r(tjdtjdg|S|jdk(r(tjdtj dg|Stjdtjd g|S) Nr5r%rDr7r6TFrrr@r7s r"data_missing_for_sortingrGsm zzSxxbeeS)77 s xxrvvu-U;; 88QqM //r!cdS)NcN|tjuxr|tjuSr0)rr)xys r"zna_cmp..sRUU 1qBEEzr!r r r!r"na_cmprMs  21r!c |jdk(rd}d}d}n|jdk(rd}d}|}nd}d }d }tj}tj||||||||g| S) Nr5r%rDrCr6TFrrr<r7)r8rrr9)r3r6acnas r"data_for_groupingrRsr zzS    s        B 88Q2r1aA.e <.sAr!rUfloat64)r3na_value)mapr3r to_numpyr&r,tmassert_numpy_array_equal)selfrArUresultexpecteds r"test_mapzTestMaskedArrays.test_maps^!!+!C    /#,,9rvv,NH#,,.H ##FH5r!c@|d|jfdd}|jjdk(r-tjdt j dgt}n&tjtjg}tj||y)Nr<cSr0r )rJzeros r"rLz.sr!rVrYr6Fr7) r\r3r8r&r9rrobjectr,r^r_)r`rGrarbrfs @r"test_map_na_action_ignorez*TestMaskedArrays.test_map_na_action_ignoresz'*)--n-Q # ) ) . .# 5xxu 5VDHxxrvvt 45H ##FH5r!c tj|}|jdk(r3|j dj ddvrt S|dvrtSyy#t$rtj|}YcwxYw)Nr6_r)powtruedivfloordiv)__sub____rsub__)r^ get_dtypeAttributeErrorr8striplstripNotImplementedError TypeError)r`op_nameobjotherr3s r"_get_expected_exceptionz(TestMaskedArrays._get_expected_exceptionsz (LL%E :: }}S!((-1OO**33   (LL'E (sAA;:A;rwctj|}|}|dvr|jdS|jdvr|dvrkt j 5t j ddt|jtj}dddjd}|S|j|}|S|jd k(r|d vr|jd }nL|d vrH|j|}|j|jt||}|jd}|d k(r3t|||} tj|| j<|S|j|}|S#1swYxYw)N)eqnelegeltgtbooleaniu) __rtruediv__ __truediv____div__rVzDowncasting object dtype arrays)categoryFloat64r6) __floordiv__ __rfloordiv____pow____rpow____mod____rmod__Int8)rrr)r^rqastyper8warningscatch_warningsfilterwarnings FutureWarningfillnar&r,get_op_from_name_combinefloatgetattrisna) r`rwrxrypointwise_resultsdtyperbfilledopras r"_cast_pointwise_resultz'TestMaskedArrays._cast_pointwise_resultswc"# : :??9- - ;;$ DD,,.5++ 9!. &__RVV4F 5"==3<7$??6265[[C $??62;;**73==E):E2F#??95*$.g.u5*,&&' v.HK55s r2r __class__s r"rz)TestMaskedArrays.test_divmod_series_arraysP ::??c !;;$$)%D    % (}=r!c|d\}}|jjdk(rd|_n t|_t||y)Nr<r6r)r3r8_combine_le_expected_dtypergrtest_combine_le)r` data_repeated orig_data1 orig_data2rs r"rz TestMaskedArrays.test_combine_le sE!.q!1 J    C '.7D +/5D +  .r!serreturncj|dvr/|jjdk7rtjdy)Nanyallr6z-Tested in tests/reductions/test_reductions.pyrT)r3r8rskipr`rrws r"_supports_reductionz$TestMaskedArrays._supports_reductions) n $3)> KKN Or!skipnacd}|jjdk(r|jj}n|jjdk(r|dvrd}|jj |}|dk(r#t ||}t ||}nZt |||}t |||}|s2|j jr|dvrtj}tj||y) Nint64r5r6minmaxboolcountrr) r3r8 numpy_dtypedropnarrrrrrr^assert_almost_equal)r`rrwr cmp_dtypealtrarbs r" check_reducezTestMaskedArrays.check_reduces 99>>S  --I YY^^s ".(" jjl!!), g *WS'*,F,wsG,.H*WS'*&9F,wsG,F;Hchhjnn.7.3P55 vx0r!ct|jr|jj}|S|dvrd}|S|dvr|jj}|S|jdvr|jj}|St|jr t rt r|rt sd}|Sd}|St|jr t rt r|rt sd}|Sd}|S|jjd k(r=|dvrd}|S|d vrd }|S|d vrt rt r|rt sdnd}|Std td )N)meanmedianvarstdskewr)rr)Int64UInt64Int32rUInt32rr6rr)sumprodznot supposed to reach this) rr3namerrrrrr8rv)r`arrrwrrs r"_get_expected_reduction_dtypez.TestMaskedArrays._get_expected_reduction_dtype4s #)) $ ILK@ @!IHG & IDCYY- - I@?%SYY /()> :3 :/'syy 1()> ,% ,!YY^^s "BB% N*% O+,-~V!  <==89 9r!cy)NTr rs r"_supports_accumulationz'TestMaskedArrays._supports_accumulation^sr!c d}tr|jjdk(sd}|jjj drd|}n|jjj drd|}nW|jjj dr |j}n%|jj d k(r |d vrd }nd|}d k(r"|d k(r|rt jd|d||dk(rtt|||}tjtjt|jd|||}tj||y|dvr~t|||}tjtjt|jd|||j}tj||y|d k(rzt|dd||}tjtjt|ddjd|||}tj||yt|d)N@ UUIntIIntFr6)cummincummaxrFloat32cumprodz4Float32 precision lead to large differences with op z and skipna=cumsumrrZr7)rr z not supported)is_windows_or_32bitr3itemsizer startswithr8rrrrSeriesr9rr^assert_series_equalru)r`rrwrlengthexpected_dtyperarbs r"check_accumulatez!TestMaskedArrays.check_accumulateas8 99%%* 99>> $ $S )#F8_N YY^^ & &s +"6(^N YY^^ & &s +!YYN YY^^s "..!*#&vh Y &7i+?F KKFwiP$X'  h *WS'*&9Fyy;GCJJy17;6J(H  " "68 4 , ,*WS'*&9Fyy;GCJJy17;6J))H  " "68 4  !/WS"Xw/v>Fyy@GCHOOI6@O(H  " "68 4& &@A Ar!)__name__ __module__ __qualname__rr parametrizercrhrzstrrrrrrrrrrrr __classcell__)rs@r"rTrTs [[[4*:;6<66".c.`>/ryy34 1 1C116(#(t(T"))cd<BBII<B<BT<Br!rTc eZdZy) Test2DCompatN)rrrr r!r"rrsr!r)7__doc__rnumpyr&r pandas.compatrrpandas.compat.numpyrpandas.core.dtypes.commonrrrpandasrpandas._testing_testingr^pandas.core.arrays.booleanr pandas.core.arrays.floatingr r pandas.core.arrays.integerr r rrrrrrpandas.tests.extensionrrrr pytestmarkr#r(r-fixturer3r:r>rArErGrMrRExtensionTestsrTDim2CompatTestsrr r!r"rs / 3   (*,C^1CPD KKC KKJK KKUV  SX ''33 --,,0022 ==$rBt**rBj 4'' r!