+
    iM                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t
 ^ RIHt ^ RIHtHt ^ RIHtHtHtH	t	HtHt ^ RIHtHtHt ^ RIHt  ! R	 R
4      t ! R R4      t ! R R4      tR tR# )z^Tests suite for mrecords.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu

N)
fromarrays)fromrecords)recarray)maskednomask)MaskedRecordsaddfieldr   r   fromtextfile	mrecarray)assert_assert_equalassert_equal_records)temppathc            	          a  ] tR t^t o . ROt. ROt. ROtR]3R]3R.t	. ROt
]P                  ! ]! ]! ]]]4      4      ]
]	R7      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R tR tRtV t R# )TestMRecordsabmaskdtypec                   V P                   pVP                  \        4      p\        VP                  VP                  4       \        VP                  VP                  4       \        \        VP                  \        4      4       \        VP                  VP                  P                  \        4      4       R F  p\        W,          W#,          4       K  	  \        VP                  \        4      V4       R# )r   Nr   r   c)baseviewr
   r   
recordmaskr   _maskr   
isinstance_datar   )selfr   mbasefields   &   >/usr/lib/python3/dist-packages/numpy/ma/tests/test_mrecords.pytest_byviewTestMRecords.test_byview(   s    yy		)$U%%t7U[[$**5
5;;12U[[$**//(*CD$Eel3 %UZZ	2E:    c                   V P                   P                  4       pVP                  \        4      pR F6  p\	        \        W#4      W#,          4       \	        W,          W#,          4       K8  	  V^ ,          p\        \        V\        4      4       \	        VP                  VP                  4       \	        VP                  4       R4       \	        VP                  \        4       \	        VP                  P                  4       R4       \	        VR ,          VR ,          ^ ,          4       VR,          p\        \        V\        4      4       \	        VP                  VP                  4       \	        VP                  4       R	4       \	        VP                  R4       \	        VP                  P                  4       R
4       \	        VR ,          VR ,          R,          4       \        VR ,          \        J 4       VR,          p\        \        V\        4      4       \	        VP                  VP                  4       \	        VP                  ^ ^.4       \        VP                   \"        P$                  ! RR
.VP                  P                  R7      4       \        WaR,          P                  \        4      4       R F&  p\	        \        Wc4      VR,          V,          4       K(  	  R# )r   NTN   Nr   r   )   皙?   one)FFF)NNN)TTT)r   copyr   r
   r   getattrr   r   r   tolistr   r   r   itemr   r   r   nparray)r   r   r    r!   mbase_first
mbase_lastmbase_sls   &      r"   test_getTestMRecords.test_get4   s   yy~~		)$$E.=el3 % Ah
;	23[&&4['')+;<[++V4[&&++-/DE[%uSz!}52Y

:y12Z%%u{{3Z&&(*<=Z**D1Z%%**,.@AZ_eCjn5
36)*9
8Y/0X^^U[[1X((1a&1X]]XX'<'9';,1KK,=,=?	@ 	XBx}}Y'?@$E148E?C %r%   c                B   V P                   P                  4       pVP                  \        4      pVP                  4       pRVn        ^VP
                  P                  R&   \        VR,          P                  . RO4       \        VR,          P                  . RO4       ^Vn        \        VR,          P                  ^.^,          4       \        \        P                  ! VR,          4      ^ .^,          4       \        VP                  R.^,          4       \        VP                  P                  4       \        P                  ! . RO\        R7      4       \         Vn        \        VP"                  P$                  ^.^,          4       \        VP"                  P                  ^.^,          4       \        \        P                  ! VR,          4      ^.^,          4       \        \        P&                  ! VR,          4      R.^,          4       \        VP                  P                  4       \        P                  ! . RO\        R7      4       VP                  \        4      P                  4       p^VP
                  R&   \        VP
                  . RO4       \        VP
                  P                  . RO4       \         VP(                  R&   \        VP(                  VR,          4       \        VP(                  P                  . RO4       RR	\*        3.p\        P                  ! . ROVR7      pVP                  \,        4      p\        P                  ! . RO. ROR
7      pWeR	&   \        VP.                  V4       \        VP.                  P$                  . RO4       R# )?B :NNNr   Fr)   r      N/A:   NNr   numr   N)r:   g@xDN/A)   r@   r@   r@   r@       r*   rB   rB   r*   )rB   rB   rB   rB   r*   r*   rC   rC   rD   )rB   rB   r*   rD   rE   rE   rD   r*   r(   r<   r@   r@   )rB   r*   rB   rB   rB   rB   r*   rB   r*   r*   )alphaz|S1))r   r*   )r   r(   )r   r<   )
         r*   rB   rB   )r   r.   r   r
   
fill_valuer   r   r   r   magetmaskarrayr   r0   r2   r3   boolr   r   r   getdatar   intr   r=   )r   r   r    ndtypedatardatavals   &      r"   test_set_fieldsTestMRecords.test_set_fields\   sk   yy~~		)$

0aU3Z%%7U3Z%%7U3Z%%sQw/R__U3Z01#':U%%w{3U[['')XX *
 %)*	+ UWW\\A37+UWW''!q1R__U3Z01#':RZZc
+fX\:U[['')XX *
 %)*	+ 		)$))+UWWo.UWW]]O4UWWd3i(UWW]]O4"UCL1xx6fE		-(hh|)4eUYY$UYY^^Y/r%   c                (   V P                   P                  4       pVP                  \        4      p\        VR ,          R&   \        VP                  . RO4       \        VP                  P                  . RO4       \        \        P                  ! ^4      \        P                  P                  ^4      .R \        3R\        3.R7      p\        VR ,          R&   \        VP                  . RO4       \        VP                  P                  . RO4       R# )	r   r   r)   Nr*   r(   r<      r@   rG   )rB   r*   r(   r<   r\   )rB   rB   rB   r*   rB   )r   r.   r   r
   r   r   r   r   r   r2   arangerandomrandrR   floatr   r   r    s   &  r"   test_set_fields_mask!TestMRecords.test_set_fields_mask   s    yy~~		)$c
2UWWo.UWW]]O4BIIaL"))..*;<#&*sEl!;=c
2UWWo.UWW]]O4r%   c                   V P                   P                  4       pVP                  \        4      p\        Vn        \        \        P                  ! VR ,          4      ^.^,          4       \        VR,          P                  VR ,          P                  4       \        VR,          P                  VR,          P                  4       \        VP                  P                  4       \        P                  ! R.^,          \        R7      4       \        Vn        \        \        P                  ! VR,          4      ^ .^,          4       \        VP                  P                  4       \        P                  ! R.^,          \        R7      4       R# )r   r   r   r)   Nr*   r*   r*   rC   )r   r.   r   r
   r   r   r   rN   rO   r   r0   r2   r3   rP   r   ra   s   &  r"   test_set_maskTestMRecords.test_set_mask   s    yy~~		)$
R__U3Z01#':U3Z%%uSz'7'78U3Z%%uSz'7'78U[['')XXykAoT:	< 
R__U3Z01#':U[['')XXykAoT:	<r%   c                    V P                   P                  4       pVP                  \        4      p. ROVn        \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       . ROVn        \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       R# )r*   N)r*   rB   rB   rB   r*   rB   rB   rB   rB   r*   )	r   r.   r   r
   r   r   r   r   r   ra   s   &  r"   test_set_mask_fromarray$TestMRecords.test_set_mask_fromarray   s    yy~~		)$$
UWW\\?3UWW\\?3UWW\\?3$
UWW\\?3UWW\\?3UWW\\?3r%   c                |   V P                   P                  4       P                  \        4      p\        P
                  ! . ROR\        3R\        3R\        3.R7      pW!n        \        VP                  P                  . RO4       \        VP                  P                  . R	O4       \        VP                  P                  . RO4       RVn        W!n        \        VP                  P                  . RO4       \        VP                  P                  . R	O4       \        VP                  P                  . RO4       R# )
rB   r   r   r   r)   FN)rB   r*   rB   rm   r*   rB   r*   rn   rC   )rB   rB   r*   r*   rB   )r*   r*   rB   rB   rB   )r   r.   r   r
   r2   r3   rP   r   r   r   r   r   	fieldmask)r   r    nmasks   &  r"   test_set_mask_fromfields%TestMRecords.test_set_mask_fromfields   s    		 %%i0C;dc4[9; 
UWW\\?3UWW\\?3UWW\\?3
UWW\\?3UWW\\?3UWW\\?3r%   c                   V P                   P                  4       pVP                  \        4      P                  4       p\        VR&   \        VP                  P                  4       \        P                  ! . RO\        R7      4       \        VP                  . RO4       VP                  \        4      P                  4       pRVR&   \        VP                  P                  . RO4       \        VP                  P                  . R	O4       \        VP                  P                  . R
O4       \        VP                  P                  . R	O4       \        VP                  P                  . RO4       \        VP                  P                  . R	O4       VP                  \        4      P                  4       p\        VR&   \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       R# )r(   r)   r'   NrZ   )rC   re   rC   re   re   rG   r@   r@   r@   )r@   r@   r<   r\   r@   ri   )      @ru   ffffff
@皙@      @)   5ry      three   four   fiver[   )r*   r*   rB   rB   r*   r+   皙@rv   rw   rx   r,      tworz   r{   r|   )r   r.   r   r
   r   r   r   r0   r2   r3   rP   r   r   r   r   r   ra   s   &  r"   test_set_elementsTestMRecords.test_set_elements   s   yy~~		)$))+b	KK HHL!	"
 	U%%7		)$))+b	UWW]]O4UWW]]O4UWW]]$;<UWW]]O4UWW]]=	?UWW]]O4		)$))+b	UWW]]O4UWW]]O4UWW]]$=>UWW]]O4UWW]]A	CUWW]]O4r%   c                   V P                   P                  4       pVP                  \        4      pVP	                  4         RVRR% \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . RO4       \        VP                  P                  . R	O4       \        VP                  P                  VP                  P                  4       \        VP                  P                  VP                  P                  4       \        R4      h  \         d     M\         d    h i ; i ^TRR% \        R4      h  \        \        3 d     R# i ; i)
r@   Nz)Flexible hard masks should be supported !z.Should have expected a readable buffer object!rt   rZ   rF   )r+   r~   rv   r@   rx   )r,   r   rz   ry   r|   rA   )r   r.   r   r
   harden_maskr   r   r   r   r   r   	ExceptionNotImplementedErrorAssertionError	TypeErrorra   s   &  r"   test_setslices_hardmask$TestMRecords.test_setslices_hardmask   s#   yy~~		)$	I"E"#J8(?@BD866 GHH # 	 		
	NE"#J LMM $Y/ 		s+   C5E EEEE. .FFc                   V P                   P                  4       pVP                  \        4      pVP	                  4        \        VP                  4       \        Vn        \        VP                  VP                  4       VP                  4        \        VP                  '       * 4       \        Vn        \        VP                  \        P                  ! VP                  VP                  4      4       \        \        P                   ! VR ,          P                  4      \        J 4       \#        VR,          P                  VR ,          P                  4       R# )r   r   N)r   r.   r   r
   r   r   	_hardmaskr   r   r   r   soften_maskrN   make_mask_noneshaper   	make_maskr   ra   s   &  r"   test_hardmaskTestMRecords.test_hardmask  s    yy~~		)$ 
U[[$**5EOO#$
U[[..tzz4::F	HU3Z--.&89U3Z%%uSz'7'78r%   c                   V P                   P                  4       pVP                  \        4      p\	        ^\
        P                  ^,           4       F  p\
        P                  ! W#R7      p\
        P                  ! V4      p\        VP                  VP                  4       \        VP                  VP                  4       \        VP                  VP                  4       \        VP                  VP                  4       K  	  R# )r(   )protocolN)r   r.   r   r
   rangepickleHIGHEST_PROTOCOLdumpsloadsr   r   r   r   r   )r   r   mrecproto_mrec_s   &     r"   test_picklingTestMRecords.test_pickling  s    yy~~yy#1f559:ET2ALLOEdjj1 djj9djj1 djj9 ;r%   c                ,   \         P                  ! . R	O. R
O\        R7      p\         P                  ! . RO. R
O\        R7      p\         P                  ! . RO. R
ORR7      pR\        3R\        3R.p\	        WV.VRR7      pVP                  4       p\        VR,          \        P                  ! R\        R7      4       \        VR,          \        P                  ! R\        R7      4       \        VR,          \        P                  ! RRR7      4       R# )r*   r   |S8r   r   r   r   rM   r)   Nr*   r(   r<   rE   r+   r~   rv   onetwothreer   r   韆     i@r?   )r*   r(   r   )r+   r~   r   )r   r   r?   )rN   r3   rR   r`   r   filledr   r2   )r   _a_b_cddtyper   
mrecfilleds   &      r"   test_filledTestMRecords.test_filled+  s    XXiis;XXoIUCXX-IUK*sElL922,f%;=[[]
Z_bhh}C&HIZ_bhh/A5:'< 	=Z_bhh/D5:'< 	=r%   c                >   \         P                  ! . RO. RO\        R7      p\         P                  ! . R	O. RO\        R7      p\         P                  ! . R
O. RORR7      pR\        3R\        3R.p\	        WV.VRR7      p\        VP                  4       . RO4       R# )r*   r   r   r   r   r   Nr   rE   r   r   rL   r   r   ))r*   r+   N)r(   r~   r   )NNrz   )rN   r3   rR   r`   r   r   r0   )r   r   r   r   r   r   s   &     r"   test_tolistTestMRecords.test_tolist:  sy    XXiis;XXoIUCXX-IUK*sElL922,f%;= 	T[[].	/r%   c                v    \        ^\        RR7      p^
V^ ,          R&   \        VR,          ^ ,          ^
4       R# )r*   r   )formatsnamesN)r
   r`   r   )r   xs   & r"   test_withnamesTestMRecords.test_withnamesG  s/    af5!VQvYq\2&r%   c                P   \        ^R\        3RR\        3.R7      p\        V^ &   \	        VP                  ^4      P                  4       R4       \        ^R.R7      p\        V^ &   \	        VP                  ^4      P                  4       \        P                  ! R	VP                  R7      P                  4       4       \        ^RR7      p\        V^ &   R
V^&   VP                  ^ 4       \        VP                  ^ 4      \        P                  ! RR
.VP                  R7      4       R# )r*   ifr)   zi4, (2,3)float, floatN)sr   )r*      1g      ?)f0z<f8)r(   r(   )r*   re   rC   )r
   rR   r`   r   r   r   r1   r2   r3   r   r   )r   easysolomults   &   r"   test_exotic_formats TestMRecords.test_exotic_formatsM  s    C:|c5\"JKQT[[^((*M:#8"9:QT[[^((*XXd$**5::<	> "9:QQAT[[^XXy)&<,0JJ8	9r%    Nr[   r}   r   r   rA   )!__name__
__module____qualname____firstlineno__ilistflistslistrR   r`   r   r   rN   r3   listzipr   r#   r7   rW   rb   rf   rj   rq   r   r   r   r   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r"   r   r      s     E%E8ECj3,5FD88DUE512VLD
;&DP50n5< 44"5@N:9"
:=/'9 9r%   r   c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestViewia  c                0   \         P                  ! ^
4      \         P                  P                  ^
4      r!R\        3R\        3.p\         P
                  ! \        \        W4      4      VR7      p\        W.VRR7      pRVP                  ^&   WQW$3V n
        R# )rI   r   r   r)   r   N)g      "g     X)FT)r2   r]   r^   r_   r`   r3   r   r   r   r   rT   )r   r   r   rS   arrr   s   &     r"   setup_methodTestView.setup_methodc  sq    ))B-!3A,e-hhtCIf51&;G$		!a%	r%   c                    V P                   w  rr4VP                  4       p\        \        V\        4      4       \        WQ4       \        VP                  VP                  4       R # )N)rT   r   r   r   r   r   r   )r   r   r   r   r   tests   &     r"   test_view_by_itselfTestView.test_view_by_itselfl  sD     II!yy{
4/0T(TZZ4r%   c                P   V P                   w  rr4\        ^3pVP                  V4      p\        \	        V\
        P                  4      4       \        V\        P                  ! \        \        W#4      4      \        R7      4       \        VR,          \
        P                  J 4       R# )r(   r)   N)r<   r*   )rT   r`   r   r   r   rN   MaskedArrayr   r2   r3   r   r   r   )r   r   r   r   r   ntyper   s   &      r"   test_view_simple_dtypeTestView.test_view_simple_dtypes  sl     II!
yy
401T288DQO5ABT
bii'(r%   c                   V P                   w  rr4R \        3R\        3.pVP                  V4      p\        \	        V\
        4      4       \        WdP                  V4      4       \        VR,          ^,          \        J 4       \        VP                  \        P                  ! V4      4       \        VP                  RJ 4       R# )ABN)rT   r`   r   r   r   r   r   r   r   r   r2   _fill_value)r   r   r   r   r   alttyper   s   &      r"   test_view_flexible_type TestView.test_view_flexible_type{  s     II!<#u.yy!
4/0T88G#45S	!&'TZZ'!23  D()r%   )rT   N)
r   r   r   r   r   r   r   r   r   r   r   s   @r"   r   r   a  s     &5)* *r%   r   c                   b  a  ] tR tRt o ]P
                  ! . RO. RO]R7      t]P
                  ! . RO. RO]R7      t	]P
                  ! . RO. RORR7      t
R]3R]3R.t]! ]]	]
.]RR7      t]! ]P                  ]	P                  ]
P                  3]R7      t]]]3tR tR	 tR
 tR tR tRtV tR# )TestMRecordsImporti  r   r   r   r   r   r)   c                   \         P                  ! . RO. RO\        R7      p\         P                  ! . RO. RO\        R7      p\         P                  ! . RO. RORR7      pV P                  w  rEp\        R	WV34       F.  w  rx\        \        WG4      P                  VP                  4       K0  	  \         P                  ! . R
O. RO\        R7      p	\        \        WP                  R7      V^ ,          4       R# )r*   r   r   r)   Nr   rE   r   r   r   )r*   r+   r   rL   )rN   r3   rR   r`   rT   r   r   r/   r   objectr   r   r   )
r   r   r   r   r   nrecr   r   l_xs
   &         r"   test_fromarrays"TestMRecordsImport.test_fromarrays  s    XXiis;XXoIUCXX-IUK))Q/BB<8FQ)//9 9 XXoIVDZ**=tAwGr%   c                2   V P                   w  rp. ROp\        VRR7      p\        VRR7      p\        WV4       \        V4      p\	        VP
                  VP
                  4       VP
                  P                   F,  p\	        \        Wx4      \        VP                  V4      4       K.  	  \        VP                  4       RR7      p\	        VP
                  R\        3R\        3R.4       \        R	R
4       F.  w  r\	        \        Wy4      \        VP                  V
4      4       K0  	  \        V4      p\	        VP
                  VP
                  4       \        VP                  VP                  4       4       \        VP                  VP                  4       R# )r*   zc1, c2, c3, c4)r   zc1,c2,c3c1c2N))r*   abcg   @rB   )r(   xyg   @r*   )rB    g   ?rB   )c3z|S5)r   r   r   r   )rT   recfromrecordsr   r   r   r   r   r/   r   r0   rR   r`   r   r   r   )r   r   r   r   palistpampa_mrecr!   r   ns   &          r"   test_fromrecords#TestMRecordsImport.test_fromrecords  s(   #yyV4 F*:;&(89R%D!U[[$**-[[&&E.

E0JK ' DKKM<U[[D#;u}"MN,o>FQ*GDJJ,BC ? D!U[[$**-U[[$++-8U[[$**5r%   c                   V P                   w  rp\        VP                  4       V. ROR7      p\        VP                  VP                  4       \        VP                  P                  4       . RO4       \        VP                  4       VRR7      p\        VP                  VP                  4       \        VP                  P                  4       . RO4       \        VP                  4       W1P                  R7      p\        VP                  VP                  4       \        VP                  P                  4       VP                  P                  4       4       \        VP                  4       VVP                  P                  4       R7      p\        VP                  VP                  4       \        VP                  P                  4       VP                  P                  4       4       R# )rB   )r   r   TNrm   )rC   re   rC   )re   re   re   )rT   r   r0   r   r   r   r   )r   r   r   r   r  s   &    r"   test_fromrecords_wmask)TestMRecordsImport.test_fromrecords_wmask  s2   #yyVDKKMjIU[[$**5U[['')+LMDKKMdCU[[$**5U[['')+LMDKKMjjIU[[$**5U[['')4::+<+<+>?DKKM!%!2!2!46U[[$**5U[['')4::+<+<+>?r%   c           	        R p\        4       ;_uu_ 4       p\        VR4      ;_uu_ 4       pVP                  V4       RRR4       \        VRRR7      pRRR4       \	        \        X\        4      4       \        VP                  . RO4       \        VP                  P                  . RO4       \        VP                  . RO4       R#   + '       g   i     L; i  + '       g   i     L; i)z#
'One (S)','Two (I)','Three (F)','Four (M)','Five (-)','Six (C)'
'strings',1,1.0,'mixed column',,1
'with embedded "double quotes"',2,2.0,1.0,,1
'strings',3,3.0E5,3,,1
'strings',4,-1e-10,,,1
wN,ABCDEFG)	delimitervarnames)r*   r*   r*   r*   )r*   r(   g    OAg|۽)r   openwriter	   r   r   r   r   FEr   C)r   fcontentpathr   mrectxts   &    r"   test_fromtextfile$TestMRecordsImport.test_fromtextfile  s     	 ZZ4dCA! !"43KG  	
7M23WYY-WYY__l3WYY 56 ! Zs!   CC	CCCC*	c                    V P                   w  rp. RO. ROrT\        V\        P                  ! WER7      4      p\	        VP
                  V4       \	        VP
                  P                  V4       R# )d   r>   N)r     i,  rL   )rT   r   rN   r3   r   f3r   )r   r   r   r   dms   &     r"   test_addfield TestMRecordsImport.test_addfield  sL    #yyV!9Abhhq12TWWa TWW]]A&r%   r   Nr   rE   r   )r,   r   rz   r   )s   99999s   99999.r;   )r   r   r   r   rN   r3   rR   r   r`   r   r   r   r   r   recfromarraysr   r   rT   r   r  r  r  r  r   r   r   s   @r"   r   r     s     	))3	7B	/		?B	, 
/BCj3,5Fr2rl&"*+D "((BHHbhh7vFD$D	H64@*7&' 'r%   r   c                  n    \         P                  ! RR.RR.R\        3R\        3.R7      p V ^,           R# )	r*   r   r   r   N)r*   2)r<   4)rB   rB   )rB   r*   )rN   masked_arrayrR   r   )ys    r"   #test_record_array_with_object_fieldr&    s;    
	8fSzC=)	+A
 aDDr%   )__doc__r   numpyr2   numpy.marN   numpy._core.recordsr   r   r   r   r   r   r   numpy.ma.mrecordsr   r   r	   r
   numpy.ma.testutilsr   r   r   numpy.testingr   r   r   r   r&  r   r%   r"   <module>r.     sd       ; = ( #  
 #9 9D
"* "*L`' `'F	r%   