bgGBdZddlZddlmZddlmZmZddlm Z ddl m Z m Z m Z mZmZmZmZmZmZmZmZmZdZGdd ejZeZGd d eZGd d eeZeZGddZGddeZGddeZ GddZ!GddZ"dZ#GddZ$dS)zTests suite for MaskedArray & subclassing. :author: Pierre Gerard-Marchant :contact: pierregm_at_uga_dot_edu :version: $Id: test_subclassing.py 3473 2007-10-29 15:18:13Z jarrod.millman $ N)NDArrayOperatorsMixin)assert_ assert_raises) assert_equal) arrayarangemasked MaskedArray masked_arraylogaddhypotdivideasarray asanyarraynomaskcPt|dt||dSN)rlen)abs r/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/numpy/ma/tests/test_subclassing.pyassert_startswithrs&7CFF7Qc<eZdZifdZfdZfdZfdZxZS)SubArrayctj||}||_|Sr)nprviewcopyinfo)clsarrr!xs r__new__zSubArray.__new__s3 M#   # #C ( (rct|t|di|_dSNr!)super__array_finalize__getattrr r!)selfobj __class__s rr)zSubArray.__array_finalize__s? ""3'''C,,1133 rct|}|jdddz|jd<|S)Naddedr)r(__add__r!getr+otherresultr-s rr1zSubArray.__add__$s>''%{w::Q> G rct|}|jdddz|jd<|S)Niaddedrr0)r(__iadd__r!r2r3s rr8zSubArray.__iadd__)s@!!%(( & ! < >u E Eurct|jt |jSr)nextrWr_rr`rTrZs r__next__zCSAIterator.__next__hs6DN##--//44T$.5I5IJJJrN) r9r:r;rCrXr[r]rgrjrPrrrRrRPsq 111FFFKKKKKrrRc|eZdZdZdZdZfdZfdZedZ e j dZ d fd Z xZ S) ComplicatedSubArrayc>d|tdS)Nz myprefix z mypostfix)rrrZs r__str__zComplicatedSubArray.__str__ns:499X..::::rc(d|jjd|dS)N< >)r-r9rZs r__repr__zComplicatedSubArray.__repr__qs 44>*44T4444rcNt|tstd|S)Nz!Can only set to MySubArray values)r^rl ValueError)r+rfs rrdz#ComplicatedSubArray._validate_inputus*%!455 B@AA A rcrt|||dSr)r(rgrdr+itemrfr-s rrgzComplicatedSubArray.__setitem__zs3 D$"6"6u"="=>>>>>rct|}t|tjs,|t}|Sr)r(r]r^rrUr_rrlrws rr]zComplicatedSubArray.__getitem__sR##D))%,, @OO%%**+>??E rc t|Sr)rRrZs rrVzComplicatedSubArray.flats4   rc<|}||dd<dSr)ravel)r+rfys rrVzComplicatedSubArray.flats JJLL!!!rNct||}|:|dtjur&|jdddz|jd<|S)Nr multipliedr0)r(__array_wrap__rmultiplyr!r2)r+r,contextr-s rrz"ComplicatedSubArray.__array_wrap__sXgg$$S'22  71:#<#<%(X\\,%B%BQ%FCH\ " rr) r9r:r;rnrsrdrgr]rOrVsetterrr<r=s@rrlrlls;;;555 ????? !!X! [[rrlc2eZdZdZdZdZdZdZdZdZ dS) WrappedArrayz Wrapping a MaskedArray rather than subclassing to test that ufunc deferrals are commutative. See: https://github.com/numpy/numpy/issues/15200) _arrayattrsc "||_||_dSrr)r+rrs rrXzWrappedArray.__init__s  rc@|jjd|jd|jdS)Nz(  z ))r-r9rrrZs rrszWrappedArray.__repr__s*.)LLdkLLTZLLLLrc4tj|jSr)rrrrZs rr_zWrappedArray.__array__sz$+&&&rcl|dkr'fd|D}j||i|fijStS)N__call__cLg|] }t|jr|jn|!SrP)r^r-r).0argr+s r z0WrappedArray.__array_ufunc__..s@)))%/sDN$C$CLcjj)))r)r-rNotImplemented)r+ufuncmethodinputsrBs` r__array_ufunc__zWrappedArray.__array_ufunc__sg Z  ))))!')))F!4>%%":6":":IIdjII I! !rN) r9r:r;rC __slots____array_priority__rXrsr_rrPrrrrsj $IMMM'''"""""rrc\eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdS)TestSubclassingcjtjdd}t|gd}||f|_dS)Nfloat)dtype)rr0rrrrH)rr msubarrayrGr+r$mxs r setup_methodzTestSubclassing.setup_methods; Iaw ' ' ' q / / /G rc2tjd}gd}t|}t||}t t |t t|j|t t |jtdS)Nrrrr0rrr) rrrr rr^r rrJ)r+r$mxsubxmsubs rtest_data_subclassingz%TestSubclassing.test_data_subclassings IaLL OO{{T*** 5+..///U[$''' 5;1122222rch|j\}}tt|jtdSr)rGrr^rJsubarrayrs rtest_maskedarray_subclassingz,TestSubclassing.test_maskedarray_subclassings-)B 28X../////rc2|j\}}tjd5tt t |t tt |tj|ddddS#1swxYwYdSNignore)r)rGrerrstaterr^r rrrs rtest_masked_unary_operationsz,TestSubclassing.test_masked_unary_operationss)B [ ) ) ) , , Js2ww 22 3 3 3 Q + + + , , , , , , , , , , , , , , , , , ,sAB  BBc|j\}}ttt||tttt||tt t||||zttt||jttttj||tttt||tttt||tdSr) rGrr^r rrrJrouterrrs rtest_masked_binary_operationsz-TestSubclassing.test_masked_binary_operationss)B 3r2;; 22333 3r1::y11222SQZZA&&& 3r2;;,h77888 39R,,i88999 5R==)44555 5Q<<3344444rc|j\}}t|j|j}t t t ||tt t t ||ttt ||t ||dS)Nr) rGr r_rHrr^rrr)r+r$rxmxs rtest_masked_binary_operations2z.TestSubclassing.test_masked_binary_operations2s)B27,,..RW=== 6"b>>955666 6"a==)44555VB^^VC%5%566666rc~ttddgdgdzz}tt|}t |}|dz}t t |tt t |t t t |j tt|j j i|dz}t t |tt t |tt t |j tt |j j ddk|dz }t t |tt t |tt t |j tt |j j ddk| gdt|jgd|j gd t|jgd t|d d i }t|}t t!|d t|j |j dS)Nrrr0rr/r7)r0rrrr0)rrrrr0namer$)r!r!)rrr rrrr^r rErJrrr! _set_mask_maskrNhasattr)r+r$myymzrmxsubs rtest_attributepropagationz)TestSubclassing.test_attributepropagations= &))1#qc!e) , , , (1++ & & q\\ T 1k**+++Jq),,,--- 17H--...QW\2&&& T 1k**+++ 1i(())) 17H--... W%)*** a 2{++,,, 2y))*** 28X../// h'!+,,, ___%%%RX/// ___---RX/// ---T""v&&'''UZ+++++rctjd}gd}dt||D}t||d|i}t |d}t t |t t t |tt|j |t|}t t |t t t |tt|j |t |d}t t |tt|j |j t|j |j t|}t t |tt|j |j t|j |dS) Nrrcg|] \}}||f SrPrP)rijs rrz=TestSubclassing.test_subclasspreservation.. s 000FQ!Q000rr)rHr!F)subokT) rrziprEr rr^r rrrr!r)r+r$rxinforrs rtest_subclasspreservationz)TestSubclassing.test_subclasspreservations IaLL OO00c!Qii000&888T///Jui000111 5+..///U[!$$$ Jui000111 5+..///U[!$$$T... 5),,---UZ+++U[$*---4   5),,---UZ+++U[!$$$$$rc2tjd}t|}t|gd}t t |dtt t |dtt t |ddtt t |dtt t |djtt |dtut t |djtt t |ddjtt t |jdjtt |jdtut t |jddj ttt|j d|dtt|j d|dtt|j tdd|dd|d|d<|dd|dd<tt|jj d|dtt|jj tdd|dd|d|jd<|dd|jdd<d S) z,test that getter and setter go via baseclassrTFTFFrr0r0.rrr.N)rrrlr rr^rGr rVbaserrurgslice)r+r$xcsubmxcsubs rtest_subclass_itemsz#TestSubclassing.test_subclass_items"s IaLL#A&&e*K*K*KLLL  58%899::: 5<)<==>>> 51:':;;<<<  6!9&9::;;; 6%=-/BCCDDDq V#$$$ 6%=-/BCCDDD 6!A#;+-@AABBB  6;q>.0CDDEEE A&())) 6;qs+02EFFGGG j%"3Q!===j&"4a1>>>j&"4eAqkk1QqS6JJJ!Hq AaCjqs j&+"91adCCCj&+"95A;;!A#OOOq A 1: AaCrctjd}t|}t|}t t |djtt t |djtt t |dtt t |dtdS)Nrrrr0r)rrrlr rr^rG)r+r$r mxcsub_nomasks rtest_subclass_nomask_itemsz*TestSubclassing.test_subclass_nomask_itemsGs IaLL#A&&$U++  =/46IJJKKK =/46IJJKKK =+-@AABBB =+-@AABBBBBrc(tjd}t|gd}tt |dt |}t|gd}tt |dt jddS)zOtest that repr uses the name of the subclass and 'array' for np.ndarrayrrrr masked_z(data=[--, 1, --, 3, 4]N)rrr rreprrr9)r+r$rrrs rtest_subclass_reprz"TestSubclassing.test_subclass_reprRs IaLL !"C"C"C D D D$r((N333{{T(I(I(IJJJ$u++ @h' @ @ @ B B B B Brctjd}t|}t|gd}t t |dt |}tt|j dtj j j t|gd}t t |ddS)z7test str with subclass that has overridden str, setitemrrrz [-- 1 -- 3 4]rz myprefix [-- 1 -- 3 4] mypostfixN) rrrr rstrrlrrurgmacoremasked_print_option)r+r$rrrrs rtest_subclass_strz!TestSubclassing.test_subclass_str]s IaLL{{T(I(I(IJJJSZZ111#A&&j%"3Qej4 6 6 6e*K*K*KLLLS[["DEEEEErcTtdgd}tgd}tj||}td|jvt|jddk||z }td|jvt|jddkdS)Ntest)r0rr)rG)rr0rrrrr!)r?rsubtractrrA)r+arr1arr2diff1diff2s r$test_pure_subclass_info_preservationz4TestSubclassing.test_pure_subclass_info_preservationksf===999===111 D$''%.()))v&&0111t %.()))v&&011111rN)r9r:r;rrrrrrrrrrrrrrPrrrrs 333000 ,,, 5 5 5777,,,B%%%6#&#&#&J C C C B B B F F F 2 2 2 2 2rrceZdZdZdZdZdS)ArrayNoInheritancez6Quantity-like class that does not inherit from ndarrayc"||_||_dSr) magnitudeunits)r+rGrs rrXzArrayNoInheritance.__init__zs rc,t|j|Sr)r*r)r+attrs r __getattr__zArrayNoInheritance.__getattr__~st~t,,,rN)r9r:r;rCrXrrPrrrrxs8@@-----rrctjgdgd}t|d}tj|}t |j|jt |j|jgd|_t |j|jt|jtj|d}t |j|jt |j|jgd|_t gd|jt|j tj|d }t |j|jt |jgdt|j t|j dS) N)r0rr)TFTrmeters)TFFT)r F) keep_mask) rrrrrrGrHr sharedmask) data_maskeddata_masked_units new_arrays rtest_array_no_inheritancers%++iii.A.A.A+BBK*;AA -..I!9>222!9>222+++K!9>222 I !!! -D 99I!9>222!9>222***K%%%y~666 $ $%%% - ??I!9>222!#6#6#6777   $ $%%%%%rc&eZdZdZdZdZdZdS)TestClassWrappingctjgdgd}t|}||f|_dS)Nr0rrFTFr)rrr rrGr+rwms rrzTestClassWrapping.setup_methodsA E  yyy/C/C/C  D D !__G rc|j\}}tjd5tt tj|t ddddS#1swxYwYdSr)rGrrrr^r rrs rrz.TestClassWrapping.test_masked_unary_operationss)B [ ) ) ) : : Jrvbzz<88 9 9 9 : : : : : : : : : : : : : : : : : :s5A""A&)A&c0|j\}}tttj||t tttj||t tttj||t t tj||||ztttj||t tttj||t tttj||t tttj||t t tj|||ztj|||ztj ||g}tttj||t tttj||t t tj||tj||dSr) rGrr^rr rrrrstack)r+rrm2s rrz/TestClassWrapping.test_masked_binary_operationss)B 26"b>><88999 26!R==,77888 26"a==,77888RVAr]]AF+++ 28Ar??L99::: 28B??L99::: 29R++\::;;; 29Q++\::;;;RYr1%%)29Q??R+?@@@ Xq!f   29R,,l;;<<< 29R,,l;;<<<RYr2&& "b(9(9:::::rct}tt|jddtjgdgd}t|}tt|jdddS)Nnot_a_real_attrr0rrr not_an_attrr)rrAttributeError __setattr__rrr r)r+mixinrrs rtest_mixins_have_slotsz(TestClassWrapping.test_mixins_have_slotssq%''ne&79JANNN E  yyy/C/C/C  D D !__nbnmQGGGGGrN)r9r:r;rrrrrPrrrrsU ::: ;;;*HHHHHrr)%rCnumpyrnumpy.lib.mixinsr numpy.testingrrnumpy.ma.testutilsr numpy.ma.corerrr r r r r rrrrrrrUrrr?rErrRrlrrrrrrPrrrs22222200000000++++++    rz0 [     +     KKKKKKKK8(((((((((V"""""("""8B2B2B2B2B2B2B2B2J--------&&&@*H*H*H*H*H*H*H*H*H*Hr