+
    eiM  c                   s    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            	       s   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                s   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field   &   C/usr/lib64/python3.14/site-packages/numpy/ma/tests/test_mrecords.pytest_byviewZTestMRecords.test_byview(   s    yy		)$U%%t7U[[$**5
5;;12U[[$**//(*CD$Eel3 %UZZ	2E:    c                s   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)FFFi)NNN)TTT)r   copyr   r   r
   getattrr	   r   r   tolistr   r   r   itemr   r   r   nparray)r   r   r   r   Zmbase_firstZ
mbase_lastZmbase_sl   &      r   test_getZ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                sB   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)r0   g@xDN/A)   r6   r6   r6   r6       r%   r8   r8   r%   )r8   r8   r8   r8   r%   r%   r9   r9   r:   )r8   r8   r%   r:   r;   r;   r:   r%   r#   r2   r6   r6   )r8   r%   r8   r8   r8   r8   r%   r8   r%   r%   )Zalphaz|S1))r   r%   )r   r#   )r   r2   )
   i   i   r%   r8   r8   )r   r(   r   r   
fill_valuer   r   r
   r   magetmaskarrayr   r*   r,   r-   boolr   r   r   Zgetdatar   intr   r3   )r   r   r   ndtypedataZrdataZvalr.   r   test_set_fieldsZ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                s(   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#   r2      r6   r=   )r8   r%   r#   r2   rJ   )r8   r8   r8   r%   r8   )r   r(   r   r   r   r
   r   r   r    r,   arangerandomrandrD   floatr   r   r      &  r   test_set_fields_maskZ!TestMRecords.test_set_fields_mask   s    yy~~		)$c
2UWWo.UWW]]O4BIIaL"))..*;<#&*sEl!;=c
2UWWo.UWW]]O4r!   c                s   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%   r9   )r   r(   r   r   r   r   r
   rA   rB   r   r*   r,   r-   rC   r   rO   rP   r   test_set_maskZ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                s    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%   r8   r8   r8   r%   r8   r8   r8   r8   r%   )	r   r(   r   r   r   r
   r   r   r   rO   rP   r   test_set_mask_fromarrayZ$TestMRecords.test_set_mask_fromarray   s    yy~~		)$$
UWW\\?3UWW\\?3UWW\\?3$
UWW\\?3UWW\\?3UWW\\?3r!   c                s|   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# )
r8   r   r   r   r$   FN)r8   r%   r8   rV   r%   r8   r%   rW   r9   )r8   r8   r%   r%   r8   )r%   r%   r8   r8   r8   )r   r(   r   r   r,   r-   rC   r   r
   r   r   r   Z	fieldmask)r   r   ZnmaskrP   r   test_set_mask_fromfieldsZ%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                s   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"   NrH   )r9   rR   r9   rR   rR   r=   r6   r6   r6   )r6   r6   r2   rJ   r6   rT   )      @rZ   ffffff
@皙@      @)   5r^      three   four   fiverI   )r%   r%   r8   r8   r%   r&   皙@r[   r\   r]   r'      twor_   r`   ra   )r   r(   r   r   r   r
   r   r*   r,   r-   rC   r   r   r   r   r   rO   rP   r   test_set_elementsZ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                s   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)
r6   Nz)Flexible hard masks should be supported !z.Should have expected a readable buffer object!rY   rH   r<   )r&   rc   r[   r6   r]   )r'   re   r_   r^   ra   r7   )r   r(   r   r   harden_maskr
   r   r   r   r   r   Z	ExceptionZNotImplementedErrorZAssertionErrorZ	TypeErrorrO   rP   r   test_setslices_hardmaskZ$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                s   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   rg   r	   Z	_hardmaskr   r   r   r   Zsoften_maskrA   Zmake_mask_noneZshaper   Z	make_maskr
   rO   rP   r   test_hardmaskZTestMRecords.test_hardmask  s    yy~~		)$ 
U[[$**5EOO#$
U[[..tzz4::F	HU3Z--.&89U3Z%%uSz'7'78r!   c                s   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#   )ZprotocolN)r   r(   r   r   ZrangepickleZHIGHEST_PROTOCOLZdumpsZloadsr
   r   r   r   r   )r   r   mrecZproto_Zmrec_   &     r   test_picklingZ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                s,   \         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   r@   r$   Nr%   r#   r2   r;   r&   rc   r[   onetwoZthreer   ro   韆     i@r5   )r%   r#   rx   )r&   rc   ry   )rt   ru   r5   )rA   r-   rD   rN   r    filledr
   r,   )r   _a_b_cddtyperk   Z
mrecfilledr.   r   test_filledZ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                s>   \         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   ro   r   r   rp   Nrq   r;   rr   rs   r?   rv   rw   ))r%   r&   N)r#   rc   re   )NNr_   )rA   r-   rD   rN   r    r
   r*   )r   r{   r|   r}   r~   rk   rm   r   test_tolistZTestMRecords.test_tolist:  sy    XXiis;XXoIUCXX-IUK*sElL922,f%;= 	T[[].	/r!   c                sv    \        ^\        RR7      p^
V^ ,          R&   \        VR,          ^ ,          ^
4       R# )r%   r   )ZformatsnamesN)r   rN   r
   )r   Zxs   & r   test_withnamesZTestMRecords.test_withnamesG  s/    af5!VQvYq\2&r!   c                sP   \        ^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%   Zifr$   zi4, (2,3)float, floatN)Zsro   )r%   s   1g      ?)Zf0z<f8)r#   r#   )r%   rR   r9   )r   rD   rN   r   r
   rz   r+   r,   r-   r   r   )r   ZeasyZsoloZmultr   r   test_exotic_formatsZ 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!    NrI   rb   rd   rv   r7   )!__name__
__module____qualname____firstlineno__ZilistZflistZslistrD   rN   r~   r   rA   r-   listzipr   r    r/   rG   rQ   rS   rU   rX   rf   rh   ri   rn   r   r   r   r   __static_attributes____classdictcell__Z__classdict__   @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                   s8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestViewia  c                s0   \         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# )r>   r   r   r$   rp   N)g      "g     X)FT)r,   rK   rL   rM   rN   r-   r   r   r    r   rF   )r   r   r   rE   arrrk   rm   r   setup_methodZTestView.setup_methodc  sq    ))B-!3A,e-hhtCIf51&;G$		!a%	r!   c                s    V P                   w  rr4VP                  4       p\        \        V\        4      4       \        WQ4       \        VP                  VP                  4       R # )N)rF   r   r	   r   r   r   r   )r   rk   r   r   r   testrm   r   test_view_by_itselfZTestView.test_view_by_itselfl  sD     II!yy{
4/0T(TZZ4r!   c                sP   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)r2   r%   )rF   rN   r   r	   r   rA   ZMaskedArrayr
   r,   r-   r   r   r   )r   rk   r   r   r   Zntyper   r.   r   test_view_simple_dtypeZTestView.test_view_simple_dtypes  sl     II!
yy
401T288DQO5ABT
bii'(r!   c                s   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# )ZAZBN)rF   rN   r   r	   r   r   r   r   r
   r   r,   Z_fill_value)r   rk   r   r   r   Zalttyper   r.   r   test_view_flexible_typeZ TestView.test_view_flexible_type{  s     II!<#u.yy!
4/0T88G#45S	!&'TZZ'!23  D()r!   )rF   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   a  s     &5)* *r!   r   c                   sb  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   ro   r   r   rp   r$   c                s   \         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   ro   r$   Nrq   r;   rr   rs   r   )r%   r&   rt   r?   )rA   r-   rD   rN   rF   r   r
   r)   r   objectr   r    r   )
r   r{   r|   r}   rk   nrecrl   r   ZlZ_xs
   &         r   test_fromarraysZ"TestMRecordsImport.test_fromarrays  s    XXiis;XXoIUCXX-IUK))Q/BB<8FQ)//9 9 XXoIVDZ**=tAwGr!   c                s2   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%   Zabcg   @r8   )r#   Zxyg   @r%   )r8   Z g   ?r8   )c3z|S5)r   r   r   r   )rF   recfromrecordsr   r   r
   r   r   r)   r   r*   rD   rN   r   rz   r   )r   rk   r   r~   ZpalistZpaZmpa_mrecr   r   Zns   &          r   test_fromrecordsZ#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                s   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# )r8   )r   r   TNrV   )r9   rR   r9   )rR   rR   rR   )rF   r   r*   r   r   r
   r   )r   rk   r   r~   r      &    r   test_fromrecords_wmaskZ)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           	     s   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
ZwNZ,ZABCDEFG)Z	delimiterZvarnames)r%   r%   r%   r%   )r%   r#   g    OAg|۽)r   ZopenZwriter   r	   r   r   r
   ZFZEr   ZC)r   ZfcontentZpathr   Zmrectxtr   r   test_fromtextfileZ$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                s    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   r4   N)r   i   i,  r?   )rF   r   rA   r-   r
   Zf3r   )r   rk   r   r~   ZdZmrm   r   test_addfieldZ TestMRecordsImport.test_addfield  sL    #yyV!9Abhhq12TWWa TWW]]A&r!   r   Nrq   r;   rr   )r'   re   r_   rv   )s   99999s   99999.r1   )r   r   r   r   rA   r-   rD   r{   rN   r|   r}   r~   r    rk   recfromarraysr   r   rF   r   r   r   r   r   r   r   r   r   r   r   r     s     	))3	7B	/		?B	, 
/BCj3,5Fr2rl&"*+D "((BHHbhh7vFD$D	H64@*7&' 'r!   r   c                  sn    \         P                  ! RR.RR.R\        3R\        3.R7      p V ^,           R# )	r%   r   r   r   N)r%   Z2)r2   Z4)r8   r8   )r8   r%   )rA   Zmasked_arrayrD   r   )Zys    r   #test_record_array_with_object_fieldr     s;    
	8fSzC=)	+A
 aDDr!   )Z__doc__rj   Znumpyr,   Znumpy.marA   Znumpy._core.recordsr    r   r   r   r   r   r   Znumpy.ma.mrecordsr   r   r   r   Znumpy.ma.testutilsr	   r
   r   Znumpy.testingr   r   r   r   r   r   r!   r   <module>r      sd       ; = ( #  
 #9 9D
"* "*L`' `'F	r!   