+
    xȇiJB                     Z   R t ^ RIt^ RIHt ^ RIHtHtHtH	t	H
t
HtHtHtHtHtHtHt ^ RIHt ^ RIHtHt R t ! R R]P0                  4      t]t ! R	 R
]4      t ! R R]]4      t]t ! R R4      t ! R R]4      t ! R R]4      t  ! R R4      t! ! R R4      t"R t# ! R R4      t$R# )zoTests suite for MaskedArray & subclassing.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu

N)NDArrayOperatorsMixin)MaskedArrayaddarangearray
asanyarrayasarraydividehypotlogmaskedmasked_arraynomask)assert_equal)assert_assert_raisesc                 6    \        V R \        V4       V4       R # N)r   len)abs   &&o/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/numpy/ma/tests/test_subclassing.pyassert_startswithr      s    7CFQ    c                   V   a a ] tR t^ t o/ 3R ltV 3R ltV 3R ltV 3R ltRtVt	V ;t
# )SubArrayc                z    \         P                  ! V4      P                  V 4      pVP                  4       Vn        V# r   )npr   viewcopyinfo)clsarrr    xs   &&& r   __new__SubArray.__new__#   s-    MM###C(r   c                f   < \         SV `  V4       \        VR / 4      P                  4       V n        R# )r    N)super__array_finalize__getattrr   r    )selfobj	__class__s   &&r   r(   SubArray.__array_finalize__(   s)    "3'C,113	r   c                   < \         SV `  V4      pVP                  P                  R ^ 4      ^,           VP                  R &   V# )added)r'   __add__r    getr*   otherresultr,   s   && r   r0   SubArray.__add__,   s8    '%{{w:Q>Gr   c                   < \         SV `  V4      pVP                  P                  R ^ 4      ^,           VP                  R &   V# )iadded)r'   __iadd__r    r1   r2   s   && r   r8   SubArray.__iadd__1   s9    !%( &! <q @Hr   r    )__name__
__module____qualname____firstlineno__r$   r(   r0   r8   __static_attributes____classdictcell____classcell__r,   __classdict__s   @@r   r   r       s#       " 
4
 r   r   c                   :   a a ] tR t^:t oRtRV 3R lltRtVtV ;t# )SubMaskedArrayz<Pure subclass of MaskedArray, keeping some info on subclass.c                F   < \         SV `  ! V 3/ VB pWP                  R &   V# r:   )r'   r$   _optinfo)r!   r    kwargsr+   r,   s   &&, r   r$   SubMaskedArray.__new__<   s'    goc,V,#V
r    r   )	r;   r<   r=   r>   __doc__r$   r?   r@   rA   rB   s   @@r   rE   rE   :   s     F r   rE   c                   >   a  ] tR t^Bt o / ]3R lt]R 4       tRtV t	R# )	MSubArrayc                n    \        W4      p\        P                  ! WVR 7      pVP                  Vn        V# ))datamask)r   r   r$   r    )r!   rO   r    rP   subarr_datas   &&&&  r   r$   MSubArray.__new__D   s.    $%##C4@[[
r   c                >    V P                  \        4      pR Vn        V# )F)r   r   _sharedmask)r*   _views   & r   _seriesMSubArray._seriesJ   s    		+&!r   rJ   N)
r;   r<   r=   r>   r   r$   propertyrW   r?   r@   rC   s   @r   rM   rM   B   s#      "   r   rM   c                   B   a  ] tR t^Yt o RtR tR tR tR tR t	Rt
V tR# )	CSAIteratorz
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
c                n    Wn         VP                  \        P                  4      P                  V n        R # r   )	_originalr   r   ndarrayflat	_dataiter)r*   r   s   &&r   __init__CSAIterator.__init__`   s!    

+00r   c                    V # r   rJ   r*   s   &r   __iter__CSAIterator.__iter__d   s    r   c                    V P                   P                  V4      p\        V\        P                  4      '       g   VP                  4       pVP                  \        V P                  4      4      pV# r   )	ra   __getitem__
isinstancer   r_   	__array__r   typer^   )r*   indxouts   && r   ri   CSAIterator.__getitem__g   sN    nn((.#rzz**--/ChhtDNN+,
r   c                V    V P                   P                  V4      V P                  V&   R # r   )r^   _validate_inputra   )r*   indexvalues   &&&r   __setitem__CSAIterator.__setitem__n   s     $ > >u Eur   c                    \        V P                  4      P                  4       P                  \	        V P
                  4      4      # r   )nextra   rk   r   rl   r^   re   s   &r   __next__CSAIterator.__next__q   s.    DNN#--/44T$..5IJJr   )ra   r^   N)r;   r<   r=   r>   rK   rb   rf   ri   rt   rx   r?   r@   rZ   s   @r   r\   r\   Y   s+     1FK Kr   r\   c                      a a ] tR t^ut oR tR tR tV 3R ltV 3R lt]	R 4       t
]
P                  R 4       t
R
V 3R lltR	tVtV ;t# )ComplicatedSubArrayc                4    R V P                  \        4       R2# )z	myprefix z
 mypostfix)r   r   re   s   &r   __str__ComplicatedSubArray.__str__w   s    499X./z::r   c                <    R V P                   P                   RV  R2# )< >)r,   r;   re   s   &r   __repr__ComplicatedSubArray.__repr__z   s"    4>>**+1TF!44r   c                H    \        V\        4      '       g   \        R 4      hV# )z!Can only set to MySubArray values)rj   r{   
ValueError)r*   rs   s   &&r   rq   #ComplicatedSubArray._validate_input~   s!    %!455@AAr   c                D   < \         SV `  WP                  V4      4       R # r   )r'   rt   rq   r*   itemrs   r,   s   &&&r   rt   ComplicatedSubArray.__setitem__   s     	D"6"6u"=>r   c                   < \         SV `  V4      p\        V\        P                  4      '       g$   VP                  4       P                  \        4      pV# r   )r'   ri   rj   r   r_   rk   r   r{   r   s   && r   ri   ComplicatedSubArray.__getitem__   s@    #D)%,,OO%**+>?Er   c                    \        V 4      # r   )r\   re   s   &r   r`   ComplicatedSubArray.flat   s    4  r   c                .    V P                  4       pWR &   R# ):NNNN)ravel)r*   rs   ys   && r   r`   r      s    JJL!r   c                   < \         SV `  WV4      pVeL   V^ ,          \        P                  J d1   VP                  P                  R^ 4      ^,           VP                  R&   V# )N
multiplied)r'   __array_wrap__r   multiplyr    r1   )r*   r+   contextreturn_scalarr,   s   &&&&r   r   "ComplicatedSubArray.__array_wrap__   sP    g$S=A71:#<%(XX\\,%BQ%FCHH\"
r   rJ   )NF)r;   r<   r=   r>   r}   r   rq   rt   ri   rY   r`   setterr   r?   r@   rA   rB   s   @@r   r{   r{   u   sT     ;5
?
 ! ! 
[[  r   r{   c                   H   a  ] tR t^t o RtRt^tR tR tRR lt	R t
RtV tR# )	WrappedArrayz
Wrapping a MaskedArray rather than subclassing to test that
ufunc deferrals are commutative.
See: https://github.com/numpy/numpy/issues/15200)
c                    Wn         W n        R # r   _arrayattrs)r*   r   r   s   &&,r   rb   WrappedArray.__init__   s    
r   c                h    V P                   P                   R V P                   RV P                   R2# )z(

z
))r,   r;   r   r   re   s   &r   r   WrappedArray.__repr__   s.    ..))*#dkk]"TZZLLLr   Nc                B    \         P                  ! V P                  4      # r   )r   r   r   )r*   dtyper   s   &&&r   rk   WrappedArray.__array__   s    zz$++&&r   c                    VR 8X  d\   V Uu. uF,  p\        WPP                  4      '       d   VP                  MTNK.  	  ppV P                  ! V! V/ VB 3/ V P                  B # \        # u upi )__call__)rj   r,   r   r   NotImplemented)r*   ufuncmethodinputsrH   args   &&&*, r   __array_ufunc__WrappedArray.__array_ufunc__   sn    Z!')!'# %/sNN$C$CcjjL!'  )>>%":6":IdjjII!!	)s   2A)r   )NN)r;   r<   r=   r>   rK   	__slots____array_priority__rb   r   rk   r   r?   r@   rZ   s   @r   r   r      s1     
 $IM'" "r   r   c                   n   a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )TestSubclassingc                V    \         P                  ! ^RR7      p\        V. ROR7      pW3# )   float)r   rP   )       r   r   r   )r   r   	msubarrayr*   r#   mxs   &  r   _create_dataTestSubclassing._create_data   s%    IIaw'q/ur   c                   \         P                  ! ^4      p. ROp\        V4      p\        W2R7      p\	        \        V\        4      4       \        VP                  V4       \	        \        VP                  \        4      4       R# )r   r   Nr   r   r   r   r   )	r   r   r   r   r   rj   r   r   rR   )r*   r#   mxsubxmsubs   &    r   test_data_subclassing%TestSubclassing.test_data_subclassing   sW    IIaL{T*
5+./U[[$'
5;;12r   c                z    V P                  4       ^,          p\        \        VP                  \        4      4       R# )r   N)r   r   rj   rR   subarray)r*   r   s   & r   test_maskedarray_subclassing,TestSubclassing.test_maskedarray_subclassing   s(     #
288X./r   c           	     8   V P                  4       w  r\        P                  ! R R7      ;_uu_ 4        \        \	        \        V4      \        4      4       \        \        V4      \        P
                  ! V4      4       RRR4       R#   + '       g   i     R# ; i)ignorer	   N)r   r   errstater   rj   r   r   r   r   s   &  r   test_masked_unary_operations,TestSubclassing.test_masked_unary_operations   sY    !!#[[))Js2w	23Q+ *)))s   ABB	c                "   V P                  4       w  r\        \        \        W"4      \        4      4       \        \        \        W!4      \        4      4       \        \        W!4      W!,           4       \        \        \        W"4      P                  \        4      4       \        \        \        P                  ! W"4      \        4      4       \        \        \        W"4      \        4      4       \        \        \        W!4      \        4      4       R # r   )
r   r   rj   r   r   r   rR   r   outerr
   r   s   &  r   test_masked_binary_operations-TestSubclassing.test_masked_binary_operations   s    !!#
3r;	23
3r:y12SZ(
3r;,,h78
399R,i89
5=)45
5<34r   c                L   V P                  4       w  r\        VP                  P                  4       VP                  R 7      p\        \        \        W"4      \        4      4       \        \        \        W!4      \        4      4       \        \        W"4      \        W34      4       R# )r   N)
r   r   rO   rk   rP   r   rj   r	   r   r   )r*   r#   r   xmxs   &   r   test_masked_binary_operations2.TestSubclassing.test_masked_binary_operations2   sh    !!#277,,.RWW=
6">956
6"=)45VB^VC%56r   c                   \        \        ^4      ^ .^.^,          ,           R7      p\        \        V4      4      p\	        V4      pV^,           p\        \        V\        4      4       \        \        V\        4      '       * 4       \        \        VP                  \        4      4       \        VP                  P                  / 4       V^,           p\        \        V\        4      4       \        \        V\        4      4       \        \        VP                  \        4      4       \        VP                  P                  R,          ^ 8  4       V^,          p\        \        V\        4      4       \        \        V\        4      4       \        \        VP                  \        4      4       \        VP                  P                  R,          ^ 8  4       VP                  . R	O4       \        VP                  . R	O4       VP                  P                  . R
O4       \        VP                  . R
O4       \        VRR/R7      p\        V4      p\        \!        VR4      4       \        VP                  VP                  4       R# )r   r   r/   r7   namer#   r:   r    N)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   rj   r   rM   rR   r   r   r    	_set_mask_maskrW   hasattr)r*   r#   myymzr   mxsubs   &      r   test_attributepropagation)TestSubclassing.test_attributepropagation   s   &)1#a-0(1+&q\!V
1k*+Jq),,-
177H-.QWW\\2&!V
1k*+
1i()
177H-.W%)*
a
2{+,
2y)*
288X./h'!+,
_%RXX/


_-RXX/.T"v&'UZZ+r   c                d   \         P                  ! ^4      p. ROp\        \        W4      4      p\	        WRV/R7      p\        VRR7      p\        \        V\        4      '       * 4       \        \        V\        4      4       \        VP                  V4       \        V4      p\        \        V\        4      '       * 4       \        \        V\        4      4       \        VP                  V4       \        VRR7      p\        \        V\        4      4       \        VP                  VP                  4       \        VP                  VP                  4       \        V4      p\        \        V\        4      4       \        VP                  VP                  4       \        VP                  V4       R# )r   r   )rP   r    F)subokTNr   )r   r   listziprM   r   r   rj   r   r   r   r   r    r   )r*   r#   r   xinfor   r   s   &     r   test_subclasspreservation)TestSubclassing.test_subclasspreservation  s   IIaLSY&%9T/Jui001
5+./U[[!$Jui001
5+./U[[!$T.
5),-UZZ+U[[$**-4 
5),-UZZ+U[[!$r   c                   \         P                  ! ^4      p\        V4      p\        V. ROR7      p\	        \        V^,          \        4      4       \	        \        VR,          \        4      4       \	        \        VR,          \        4      4       \	        \        V^,          \        4      4       \	        \        VR,          P                  \        4      4       \	        V^ ,          \        J 4       \	        \        VR,          P                  \        4      4       \	        \        VR,          P                  \        4      4       \	        \        VP                  ^,          P                  \        4      4       \	        VP                  ^ ,          \        J 4       \	        \        VP                  R,          P                  \        4      4       \        \        VP                  ^V^,          4       \        \        VP                  ^V^,          4       \        \        VP                  \        ^^4      VR,          4       V^,          V^&   VR,          VR&   \        \        VP                  P                  ^V^,          4       \        \        VP                  P                  \        ^^4      VR,          4       V^,          VP                  ^&   VR,          VP                  R&   R# )z,test that getter and setter go via baseclassr   :r      NNTFTFFr   .r   .)r   r   r{   r   r   rj   rO   r   r`   baser   r   rt   slice)r*   r#   xcsubmxcsubs   &   r   test_subclass_items#TestSubclassing.test_subclass_items+  s   IIaL#A&e*KL 	
58%89:
5=*=>?
5:':;< 	
6!9&9:;
6&>..0CDEq	V#$
6&>..0CDE
6#;++-@AB 	
6;;q>..0CDEA&()
6;;s+002EFG 	j%"3"3Q!=j&"4"4a1>j&"4"4eAqk1S6J!Hq	Cjsj&++"9"91adCj&++"9"95A;#OqA :Cr   c                   \         P                  ! ^4      p\        V4      p\        V4      p\	        \        VR,          P                  \        4      4       \	        \        VR,          P                  \        4      4       \	        \        V^,          \        4      4       \	        \        V^ ,          \        4      4       R# )r   Nr   r   )r   r   r{   r   r   rj   rO   )r*   r#   r   mxcsub_nomasks   &   r   test_subclass_nomask_items*TestSubclassing.test_subclass_nomask_itemsP  s    IIaL#A&$U+
=0557JKL
=0557JKL
=+-@AB
=+-@ABr   c                    \         P                  ! ^4      p\        V. ROR7      p\        \	        V4      R4       \        V4      p\        V. ROR7      p\        \	        V4      R\
        P                   R24       R# )zGtest that repr uses the name of the subclass
and 'array' for np.ndarrayr   r   masked_z(data=[--, 1, --, 3, 4]Nr   )r   r   r   r   reprr   r;   )r*   r#   r   r   r   s   &    r   test_subclass_repr"TestSubclassing.test_subclass_repr[  se     IIaL!"CD$r(N3{T(IJ$u+h''((?@	Br   c                j   \         P                  ! ^4      p\        V4      p\        V. ROR7      p\	        \        V4      R4       \        V4      p\        \        VP                  ^ \         P                  P                  P                  4       \        V. ROR7      p\	        \        V4      R4       R# )z7test str with subclass that has overridden str, setitemr   z[-- 1 -- 3 4]z myprefix [-- 1 -- 3 4] mypostfixNr   )r   r   r   r   r   strr{   r   r   rt   macoremasked_print_option)r*   r#   r   r   r   r   s   &     r   test_subclass_str!TestSubclassing.test_subclass_strf  s     IIaL{T(IJSZ1#A&j%"3"3Qeejj44	6e*KLS["DEr   c                X   \        R . ROR7      p\        . ROR7      p\        P                  ! W4      p\        RVP                  9   4       \        VP                  R,          R 8H  4       W,
          p\        RVP                  9   4       \        VP                  R,          R 8H  4       R# )test)rO   r    N)r         r   r      )r   r   r  r	  r   r   )rE   r   subtractr   rG   )r*   arr1arr2diff1diff2s   &    r   $test_pure_subclass_info_preservation4TestSubclassing.test_pure_subclass_info_preservationt  s     f+=>#56D'%..()v&&01%..()v&&01r   rJ   N)r;   r<   r=   r>   r   r   r   r   r   r   r   r   r   r   r   r  r  r?   r@   rZ   s   @r   r   r      sP     
30
,57,B%6#&J	C	BF
2 
2r   r   c                   0   a  ] tR tRt o RtR tR tRtV tR# )ArrayNoInheritancei  z6Quantity-like class that does not inherit from ndarrayc                    Wn         W n        R # r   	magnitudeunits)r*   rO   r  s   &&&r   rb   ArrayNoInheritance.__init__  s    
r   c                .    \        V P                  V4      # r   )r)   r  )r*   attrs   &&r   __getattr__ArrayNoInheritance.__getattr__  s    t~~t,,r   r  N)	r;   r<   r=   r>   rK   rb   r  r?   r@   rZ   s   @r   r  r    s     @- -r   r  c                     \         P                  P                  . RO. R	OR7      p \        V R4      p\         P                  P                  V4      p\	        V P
                  VP
                  4       \	        V P                  VP                  4       . R
OV n        \	        V P                  VP                  4       \        VP                  4       \         P                  P                  VRR7      p\	        V P
                  VP
                  4       \	        V P                  VP                  4       . R	OV n        \	        . R
OVP                  4       \        VP                  '       * 4       \         P                  P                  VRR7      p\	        V P
                  VP
                  4       \	        V P                  . R	O4       \        VP                  '       * 4       \        VP                  '       * 4       R# )r   TFr   meters)r   )	keep_maskN)r   r  r	  )TFT)TFF)	r   r  r   r  r   rO   rP   r   
sharedmask)data_maskeddata_masked_units	new_arrays      r   test_array_no_inheritancer$    sT   %%++i.A+BK*;A -.I!!9>>2!!9>>2+K!!9>>2I  ! -D9I!!9>>2!!9>>2*K%y~~6	$$$% -?I!!9>>2!!#67		$$$%r   c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestClassWrappingi  c                h    \         P                  P                  . RO. ROR7      p\        V4      pW3# )r   r   r   r	  r   FTF)r   r  r   r   )r*   r   wms   &  r   r   TestClassWrapping._create_data  s,    EEy/CD!_ur   c           	        V P                  4       ^,          p\        P                  ! RR7      ;_uu_ 4        \        \	        \        P
                  ! V4      \        4      4       RRR4       R#   + '       g   i     R# ; i)r   r   r   N)r   r   r   r   rj   r   r   )r*   r*  s   & r   r   .TestClassWrapping.test_masked_unary_operations  sJ     #[[))Jrvvbz<89 *)))s   .A//B 	c                   V P                  4       w  r\        \        \        P                  ! W"4      \
        4      4       \        \        \        P                  ! W4      \
        4      4       \        \        \        P                  ! W!4      \
        4      4       \        \        P                  ! W4      W,           4       \        \        \        P                  ! W4      \
        4      4       \        \        \        P                  ! W!4      \
        4      4       \        \        \        P                  ! W!4      \
        4      4       \        \        \        P                  ! W4      \
        4      4       \        \        P                  ! W!4      V,          \        P                  ! W4      V,          4       \        P                  ! W.4      p\        \        \        P                  ! W#4      \
        4      4       \        \        \        P                  ! W24      \
        4      4       \        \        P                  ! W24      \        P                  ! W#4      4       R # r   )
r   r   rj   r   r   r   r   r
   r	   stack)r*   r   r*  m2s   &   r   r   /TestClassWrapping.test_masked_binary_operations  sJ   !!#
266"><89
266!=,78
266"=,78RVVA]AF+
288A?L9:
288B?L9:
299R+\:;
299Q+\:;RYYr%)299Q?R+?@XXqf
299R,l;<
299R,l;<RYYr&		"(9:r   c                    \        4       p\        \        VP                  R ^4       \        P
                  P                  . RO. ROR7      p\        V4      p\        \        VP                  R^4       R# )not_a_real_attrr   not_an_attrNr(  r)  )r   r   AttributeError__setattr__r   r  r   r   )r*   mixinr   r*  s   &   r   test_mixins_have_slots(TestClassWrapping.test_mixins_have_slots  sT    %'ne&7&79JANEEy/CD!_nbnnmQGr   rJ   N)
r;   r<   r=   r>   r   r   r   r8  r?   r@   rZ   s   @r   r&  r&    s      
:;*H Hr   r&  )%rK   numpyr   numpy.lib.mixinsr   numpy.ma.corer   r   r   r   r   r   r	   r
   r   r   r   r   numpy.ma.testutilsr   numpy.testingr   r   r   r_   r   r   rE   rM   r   r\   r{   r   r   r  r$  r&  rJ   r   r   <module>r?     s     2    , 0 rzz . [ +  	K K8(( (V"( "8B2 B2J- -&@*H *Hr   