gL i[FdZddlZddlZddlmZddlZddlmZddl m Z ddl m Z ddlmZdZej"dZej"dej&g d Zej"d Zej"dej&g d Zej"dej&g d Zej"dej&g dZej"dej&g dZej"dZej"dej&g dZej"dej&g dZGddej:ZdZy)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)PerformanceWarning SparseDtype) SparseArray)basectjjd}tj|r|j d}n1|j dddt }|d|dk(r |dxxdz cc<||ddd<|S)Nd)size)r dtyper)nprandom default_rngisnanuniformintegersint) fill_valuerngdatas h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/extension/test_sparse.py make_datarsy ))   "C xx {{{$||AsC|8 7d1g  GqLGDAJ KctSNrrrr r *s =r)paramscZtt|j|j}|S)z*Length-100 PeriodArray for semantics test.r)rrparam)requestress rrr/s" i .7== IC JrcDttjddzS)Nr r )rronesrrr data_for_twosr'6s rwws|a' ((rcPttjdg|jS)zLength 2 array with [NA, Valid]r r!rrnanr"r#s r data_missingr,;s {w}} ==rc# Kfd}|yw)z1Return different versions of data for count timesc3Kt|D].}ttjj0yw)Nr!)rangerrr")count_r#s rgenzdata_repeated..genEs6u RAi 67==Q Q Rs>ANr)r#r2s` r data_repeatedr3AsR Is c4tgd|jS)N)r rr r!)rr"r+s rdata_for_sortingr5Ls yW]] ;;rcRtdtjdg|jS)Nr r r!r)r+s rdata_missing_for_sortingr7Qs 2661~'-- @@rcdS)NcZtj|xrtj|Sr)pdisna)leftrights rzna_cmp..Xsrwwt}?rrrrrna_cmpr?Vs ??rc xtddtjtjddddg|jS)Nr r rr!r)r+s rdata_for_groupingrA[s, 1bffbffaAq9gmm TTrc `tddtjdddddddg |jS)Nrr rr!r)r+s rdata_for_comparerF`s, 1bffb"aAq!< WWrc eZdZdedefdZejjdddgfdZ ejjdddgfdZ d Z d Z ejjd ejjd d dgejj!ddgddggejjdddgfdZfdZfdZfdZfdZfdZfdZdZfdZdZfdZfd Zejj;d!"fd#Zd$Zd%Z d&Z!d'Z"ejj;d("fd)Z#d*Z$fd+Z%d,Z&ejjd-d.d/gfd0Z'ejjPejjd1ejRejTejVgfd2Z,ejjPfd3Z-ejjd4d5d6e.d7e/j`gfd8d9e.d7e/j`gfed6e.d:d;gd;<fed9e.d:e/j`gfgd=Z1ejjd>d6d9gd?Z2ejj;e3d@AfdBZ4d6Z5d6Z6d6Z7d6Z8dCZ9fdDZ:fdEZ;fdFZdHe.fdKZ?dHe.fdLZ@ejj;dM"fdNZAejj;dO"ejjdPddgfdQZBxZCS)RTestSparseArrayop_namereturncy)NTr)selfobjrIs r_supports_reductionz#TestSparseArray._supports_reductionfsrskipnaTFc\|dvrGrcj|jttdk(rtjdyy)NrzCan't store nan in int array.)r rrrbskiprLrs r_check_unsupportedz"TestSparseArray._check_unsupporteds' ::S!, , KK7 8 -rctjd|ddi}tjdgdi}tjdgdijd}|||g}tj|}tj|Dcgc]}|j dc}}t j ||ycc}w)NAr)r r r)abccategorycRtj|jtSr)rasarrayastypeobject)ss rr>z:TestSparseArray.test_concat_mixed_dtypes..srzz!}33F;r)r: DataFramer{concatapplytmassert_frame_equal) rLrdf1df2df3dfsresultxexpecteds rtest_concat_mixed_dtypesz(TestSparseArray.test_concat_mixed_dtypessllCbq?+llC+,llC1299*ECo399FI JQWW; < J  fh/ Ks Cz9ignore:The previous implementation of stack is deprecatedcolumnsrtB)rtru)rtrvouterinner)names future_stackc(t||||yr)rh test_stack)rLrrrrls rrzTestSparseArray.test_stacks 4,7rcH|j|t| ||yr)rrrhtest_concat_columnsrLrna_valuerls rrz#TestSparseArray.test_concat_columnss  % #D(3rcH|j|t| ||yr)rrrh'test_concat_extension_arrays_copy_falsers rrz7TestSparseArray.test_concat_extension_arrays_copy_falses  % 7hGrcH|j|t| ||yr)rrrh test_alignrs rrzTestSparseArray.test_align  % 4*rcH|j|t| ||yr)rrrhtest_align_framers rrz TestSparseArray.test_align_frames  %  x0rcH|j|t| ||yr)rrrhtest_align_series_framers rrz'TestSparseArray.test_align_series_frames  % 'h7rcH|j|t| ||yr)rrrh test_mergers rrzTestSparseArray.test_mergerrctj|tt|Dcgc]}d|z c}}t j |j jrHt j |jdr"t j |jds%J|jd|jdk(sJ|jd|jdk(sJycc}w)Nr )indexrEr ) r:Seriesr/lenrrvaluesrgetiloc)rLrisers rtest_getzTestSparseArray.test_getsiiE#d)4D$EqQU$EF 88CJJ)) *88CGGAJ'BHHSXXa[,A AA771:!, ,,wwqzSXXa[((( %Fs C3 cH|j|t| ||yr)rrrh test_reindexrs rrzTestSparseArray.test_reindexs  % T8,rct|}tttj|j j }tddg|}|j }tj|||jd}tttj|j j }tddgd|}tj|j |y)NTFr rrr ) rrboolr:r;r rrassert_sp_array_equalfillna assert_equal)rLr,sarrexpected_dtyperrs r test_isnazTestSparseArray.test_isnas<($T277<3E3E3P3P+QRe}NC   2{{1~$T277<3E3E3P3P+QRu~%~V  X.rcttf}tj|d5t||dddy#1swYyxYwNF)check_stacklevel)r FutureWarningrassert_produces_warningrhtest_fillna_limit_backfill)rLr,warnsrls rrz*TestSparseArray.test_fillna_limit_backfills?#]3  ' ' F = G .| < = = =s >Actj|jr/|jtj j dt|!|y)Nz'returns array with different fill valuerZ) rrr applymarkerrbrcrdrhtest_fillna_no_op_returns_copy)rLrr#rls rrz.TestSparseArray.test_fillna_no_op_returns_copysF 88DOO $    !!)R!S  .t4r UnsupportedrZc"t|yr)rhtest_fillna_seriesrLr,rls rrz"TestSparseArray.test_fillna_seriess "$rcj|d}tj|ddgdj|}tj|jrt |j |}n |j }tj|j||g|ddgd}tj||y)Nr r )rtrr) r:r~rr;rrr _from_sequencerr)rLr,rrr rs rtest_fillna_framez!TestSparseArray.test_fillna_frames!!_ L1v>?FFzR 77<** + 2 2J?E &&E<<!00*j1IQV0WV   fh/rz Sparse[bool]c|jddg}tjd|id}|jd}|j |}t |j dr^|r.|jj|jjus0J|jj|jjusJ|jjj|jusJy)Nr rtFcopy)rrblocks) taker:r~rrhasattr_mgrrrrt_valuesto_dense)rLr,using_copy_on_writearrdf filled_valrs rtest_fillna_copy_framez&TestSparseArray.test_fillna_copy_framesA' \\3*5 1WWT] :& 277H %"yy~~););;;;yy~~V]]-?-????tt||$$&#,,.888rcH|jddg}tj|d}|d}|j|}|r|j|jusJ|j|jusJ|jj |j usJy)Nr Frr)rr:rrrr)rLr,rrrrrs rtest_fillna_copy_seriesz'TestSparseArray.test_fillna_copy_series&sA'ii%(V J' ;;&..0 00;;fnn4 44{{##%777rzNot Applicablec$t||yr)rhtest_fillna_length_mismatchrs rrz+TestSparseArray.test_fillna_length_mismatch4s +L9rc|d|dk7sJt|}|dd\}}tj|j||||g|j}t j gd}|j|}tdd} tj|j||||g| } tj|| |j||||g|j} t j gd}|j|| }tj|j||||g|j} tj|| y) Nrr r r)TTFFfloatg)TFTT) typer:rrr rarraywhererrassert_series_equal) rLrrclsrurvrcondr new_dtyperothers rtest_where_seriesz!TestSparseArray.test_where_series8s8Aw$q'!!!4jBQx1ii**Aq!QzTestSparseArray.lqrNg?c|Srrrs rr>zTestSparseArray.mrrignorez1.0r*r!ctdtjg}|j||}t j ||y)Nr  na_action)rrr*maprassert_extension_array_equal)rLfuncrrrrs rtest_mapzTestSparseArray.test_mapis8Arvv;'$)4 ''9rrcd}tjt|5|jd|dddy#1swYyxYw)Nz-fill value in the sparse values not supported)matchc"tjSr)rr*rs rr>z1TestSparseArray.test_map_raises..}s rvvrr)rbraises ValueErrorr)rLrrmsgs rtest_map_raiseszTestSparseArray.test_map_raisesxs=> ]]:S 1 < HH%H ; < < $?D    %kk"a$ii() C!1=#FrcD|jjdk(r@|jdk7r1tjj d}|j |tj|}|dz}|j|||||dz}|j||||y)Nrgtr-rZr r ) r rr1rbrcrdrr:rr&)rLrFr$r#rcrrs rtest_sparse_arrayz!TestSparseArray.test_sparse_arrays  ! ! , , 1m6L6LPT6T;;$$,>$?D    %ii()" C!1=#F" C!1=#FrzDifferent reprc&t|||yr)rhtest_array_repr)rLrr rls rr8zTestSparseArray.test_array_reprs d+rzresult does not match expectedas_indexc&t|||yr)rhtest_groupby_extension_agg)rLr9rArls rr;z*TestSparseArray.test_groupby_extension_aggs *85FGr)Dr1 __module__ __qualname__strrrNrbrc parametrizerirnrrrfilterwarningsr: MultiIndex from_tuplesrrrrrrrrrrrrrdrr_combine_le_expected_dtyperrrrrrrfails_arm_wheelsrrr~rrrrr*rr  TypeErrorr series_scalar_excframe_scalar_exc divmod_excseries_array_excrrrrr&r(r3r6r8r; __classcell__)rls@rrHrHes [[Xe}5Q6Q0 [[Xe}5H6H09 0 [[C [[ #J MM % %Z('0B &   [[^dE];8<84H+18+)- /= 5 [[m,%-% 0("0 9 8 [[./:0:1,CD [[X(';<B=B  [[!! [[URXXryy",,$GH<I"< [[!!="= [[# $ S"&&M : ; (Kbff $> ? $ UENuE F (K8 9  ::  [[[4*:;<<<  [[i0GH)I) JYNMM "*99"*0;"*HJKJ G; G G+ G [[./,0, [[>? [[Z$7H8@HrrHc4|jtusJyr)construct_array_typerrs rtest_array_type_with_argrMs  % % '; 66 6r) __doc__numpyrrb pandas.errorsrpandasr:rpandas._testing_testingr pandas.arraysrpandas.tests.extensionrrfixturer r*rr'r,r3r5r7r?rArFExtensionTestsrHrMrrrrXs  ,%' 266{#$ ))266{#>$> 266{#$266{#<$<266{#A$A@@266{#U$U266{#X$XNHd))NHb 7r