σ 2ΔΘ[c@`sIdZddlmZmZmZddlZddlmZm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZmZmZd„Zdejfd „ƒYZeZd efd „ƒYZd eefd „ƒYZeZde fd„ƒYZ!defd„ƒYZ"de fd„ƒYZ#dS(s½Tests 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 $ i(tdivisiontabsolute_importtprint_functionN(tassert_t assert_raises(t assert_equal( tarraytarangetmaskedt MaskedArrayt masked_arraytlogtaddthypottdividetasarrayt asanyarraytnomaskcC`st|t|ƒ |ƒdS(N(Rtlen(tatb((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pytassert_startswithstSubArraycB`s/eZid„Zd„Zd„Zd„ZRS(cC`s+tj|ƒj|ƒ}|jƒ|_|S(N(tnpRtviewtcopytinfo(tclstarrRtx((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt__new__scC`sYtttt|ƒddƒƒr:tt|ƒj|ƒnt|diƒjƒ|_dS(Nt__array_finalize__R(tcallabletgetattrtsuperRtNoneRRR(tselftobj((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR s cC`s<tt|ƒj|ƒ}|jjddƒd|jd<|S(Ntaddedii(R"Rt__add__Rtget(R$tothertresult((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR''s cC`s<tt|ƒj|ƒ}|jjddƒd|jd<|S(Ntiaddedii(R"Rt__iadd__RR((R$R)R*((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR,,s (t__name__t __module__RRR'R,(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRs   tSubMaskedArraycB`seZdZdd„ZRS(s<Pure subclass of MaskedArray, keeping some info on subclass.cK`s,tt|ƒj||}||jd<|S(NR(R"R/Rt_optinfo(RRtkwargsR%((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR7s N(R-R.t__doc__R#R(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR/5st MSubArraycB`s/eZied„Zd„ZedeƒZRS(cC`s:t||ƒ}tj|d|d|ƒ}|j|_|S(Ntdatatmask(RR RR(RR4RR5tsubarrt_data((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR?s cC`s|jtƒ}t|_|S(N(RR tFalset _sharedmask(R$t_view((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt _get_seriesEs tfget(R-R.RRR;tpropertyt_series(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR3=s t CSAIteratorcB`sAeZdZd„Zd„Zd„Zd„Zd„ZeZRS(sί Flat iterator object that uses its own setter/getter (works around ndarray.flat not propagating subclass setters/getters see https://github.com/numpy/numpy/issues/4564) roughly following MaskedIterator cC`s%||_|jtjƒj|_dS(N(t _originalRRtndarraytflatt _dataiter(R$R((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt__init__Zs cC`s|S(N((R$((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt__iter__^scC`sO|jj|ƒ}t|tjƒs3|jƒ}n|jt|jƒƒ}|S(N( RCt __getitem__t isinstanceRRAt __array__RttypeR@(R$tindxtout((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRFas cC`s|jj|ƒ|j|/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt __setitem__hscC`s%t|jƒjƒjt|jƒƒS(N(tnextRCRHRRIR@(R$((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt__next__ks( R-R.R2RDRERFRORQRP(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR?Ss     tComplicatedSubArraycB`sbeZd„Zd„Zd„Zd„Zd„Zed„ƒZej d„ƒZdd„Z RS( cC`sdj|jtƒƒS(Nsmyprefix {0} mypostfix(tformatRR(R$((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt__str__sscC`sdj|jj|ƒS(Ns <{0} {1}>(RSt __class__R-(R$((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt__repr__vscC`s"t|tƒstdƒ‚n|S(Ns!Can only set to MySubArray values(RGRRt ValueError(R$RN((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRLzscC`s&tt|ƒj||j|ƒƒdS(N(R"RRRORL(R$titemRN((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyROscC`sFtt|ƒj|ƒ}t|tjƒsB|jƒjtƒ}n|S(N(R"RRRFRGRRARHR(R$RXRN((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRF…scC`s t|ƒS(N(R?(R$((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRBŒscC`s|jƒ}||(dS(N(travel(R$RNty((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRBs cC`satt|ƒj||ƒ}|dk r]|dtjkr]|jjddƒd|jd/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR\•s#N( R-R.RTRVRLRORFR=RBtsetterR#R\(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyRRqs     tTestSubclassingcB`s}eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „ZRS( cC`sItjdddƒ}t|ddddddgƒ}||f|_dS(NitdtypetfloatR5ii(RRt msubarrayR4(R$Rtmx((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pytsetup s!cC`stjdƒ}dddddg}t|ƒ}t|d|ƒ}tt|tƒƒt|j|ƒtt|jtƒƒdS(NiiiR5( RRRR RRGR RR7(R$Rtmtxsubtxmsub((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_data_subclassing₯s cC`s)|j\}}tt|jtƒƒdS(N(R4RRGR7tsubarray(R$RRd((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_maskedarray_subclassing―scC`sa|j\}}tjddƒ:ttt|ƒtƒƒtt|ƒtj|ƒƒWdQXdS(NRtignore(R4RterrstateRRGR RcR(R$RRd((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_masked_unary_operations΄scC`sΫ|j\}}ttt||ƒtƒƒttt||ƒtƒƒtt||ƒ||ƒttt||ƒjtƒƒtttj||ƒtƒƒttt ||ƒtƒƒttt ||ƒtƒƒdS(N( R4RRGR RcRR7RjtouterR (R$RRd((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_masked_binary_operations»scC`sˆ|j\}}t|jjƒd|jƒ}ttt||ƒtƒƒttt||ƒtƒƒtt||ƒt||ƒƒdS(NR5( R4R RHR5RRGRRcR(R$RRdtxmx((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_masked_binary_operations2Θs cC`s&ttdƒddgdgdƒ}tt|ƒƒ}t|ƒ}|d}tt|tƒƒtt|tƒ ƒtt|j t ƒƒt |j j iƒ|d}tt|tƒƒtt|tƒƒtt|j t ƒƒt|j j ddkƒ|d7}tt|tƒƒtt|tƒƒtt|j t ƒƒt|j j ddkƒ|j dddddgƒt |jdddddgƒ|jj dddddgƒt |jdddddgƒt|did d 6ƒ}t|ƒ}tt|dƒƒt |j |j ƒdS( NiR5iiiR&R+RRtname(RRR RjRcRRGR R3R7RRRt _set_maskt_maskR>thasattr(R$RtmytymtzRgtmxsub((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_attributepropagationΠs4&     cC`sŽtjdƒ}dddddg}gt||ƒD]\}}||f^q4}t|d|di|d6ƒ}t|dtƒ}tt|tƒ ƒtt|tƒƒt |j |ƒt |ƒ}tt|tƒ ƒtt|tƒƒt |j |ƒt|dt ƒ}tt|tƒƒt |j |j ƒt |j |j ƒt|ƒ}tt|tƒƒt |j |j ƒt |j |ƒdS(NiiiR5RRgtsubok(RRtzipR3R R8RRGR RRuRtTrueRR(R$RRftitjtxinfoRgRz((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_subclasspreservationρs(.  cC`sBtjdƒ}t|ƒ}t|dtttttgƒ}tt|dtƒƒtt|dtƒƒtt|dd!tƒƒtt|dtƒƒtt|d jtƒƒt|dt kƒtt|d jtƒƒtt|dd!jtƒƒtt|j djtƒƒt|j dt kƒtt|j dd!j tƒƒt t |jd|dƒt t |jd|dƒt t |jtddƒ|dd!ƒ|d|d<|dd!|dd+t t |j jd|dƒt t |j jtddƒ|dd!ƒ|d|j d<|dd!|j dd+dS( s,test that getter and setter go via baseclassiR5i.iiN(i.(i.(i.(RRRRR R~R8RRGR4RRBtbaseRRWROtslice(R$Rtxcsubtmxcsub((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_subclass_items s. ! &)cC`stjdƒ}t|ƒ}t|ƒ}tt|djtƒƒtt|djtƒƒtt|dtƒƒtt|dtƒƒdS(Nii.i(i.(i.(RRRRR RRGR4(R$RR…t mxcsub_nomask((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_subclass_nomask_items1s  cC`s“tjdƒ}t|dtttttgƒ}tt|ƒdƒt|ƒ}t|dtttttgƒ}tt|ƒdjtj ƒƒdS(sOtest that repr uses the name of the subclass and 'array' for np.ndarrayiR5R s!masked_{0}(data=[--, 1, --, 3, 4]N( RRR R~R8RtreprRRSR-(R$RRdRgRz((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_subclass_repr<s! ! cC`s²tjdƒ}t|ƒ}t|dtttttgƒ}tt|ƒdƒt|ƒ}t t |j dtj j jƒt|dtttttgƒ}tt|ƒdƒdS(s7test str with subclass that has overridden str, setitemiR5s [-- 1 -- 3 4]is myprefix [-- 1 -- 3 4] mypostfixN(RRRR R~R8RtstrRRRRWROtmatcoretmasked_print_option(R$RRgRzR…R†((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyttest_subclass_strGs ! !c C`sΉtddddddddgƒ}tdd dddddgƒ}tj||ƒ}td |jkƒt|jd dkƒ||}td |jkƒt|jd dkƒdS( NttestR4iiiiiiiR(R/RtsubtractRR0(R$tarr1tarr2tdiff1tdiff2((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyt$test_pure_subclass_info_preservationUs$! (R-R.ReRiRkRnRpRrR{R‚R‡R‰R‹RR—(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyR`s     !  % ($R2t __future__RRRtnumpyRt numpy.testingRRtnumpy.ma.testutilsRt numpy.ma.coreRRRR R R R R RRRRRRARRjR/R3RctobjectR?RRR`(((s>/tmp/pip-build-fiC0ax/numpy/numpy/ma/tests/test_subclassing.pyts R ,