
    SBgM                         S r SSKrSSKrSSKJr  SSKJrJr  SSKJ	r	  SSK
JrJrJr  SSKJrJrJrJrJrJr  SSKJrJrJr   " S S	5      r " S
 S5      r " S S5      rS rg)z^Tests suite for mrecords.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu

    N)maskednomask)temppath)recarrayfromrecords
fromarrays)MaskedRecords	mrecarrayr   fromtextfiler   addfield)assert_assert_equalassert_equal_recordsc            	           \ rS rSr/ SQr/ SQr/ SQrS\4S\4S/r	/ SQr
\R                  " \" \" \\\5      5      \
\	S	9rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestMRecords                  皙?皙@ffffff
@皙@      @   one   two   three   four   fiveabc|S8r   r   r   r   r   maskdtypec                    U R                   nUR                  [        5      n[        UR                  UR                  5        [        UR                  UR                  5        [        [        UR                  [        5      5        [        UR                  UR                  R                  [        5      5        S H  n[        X   X#   5        M     [        UR                  [        5      U5        g )Nr%   r&   r(   )baseviewr
   r   
recordmaskr   _maskr   
isinstance_datar   )selfr0   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                 B   U R                   R                  5       nUR                  [        5      nS H*  n[	        [        X#5      X#   5        [	        X   X#   5        M,     US   n[        [        U[        5      5        [	        UR                  UR                  5        [	        UR                  5       S5        [	        UR                  [        5        [	        UR                  R                  5       S5        [	        US   US   S   5        US   n[        [        U[        5      5        [	        UR                  UR                  5        [	        UR                  5       S5        [	        UR                  S5        [	        UR                  R                  5       S	5        [	        US   US   S   5        [        US   [        L 5        US S
 n[        [        U[        5      5        [	        UR                  UR                  5        [	        UR                  SS/5        [        UR                   ["        R$                  " SS	/UR                  R                  S95        [        XaS S
 R                  [        5      5        S H  n[	        [        Xc5      US S
 U   5        M      g )Nr/   r   )r   r   r    )FFFr%   )NNNT)TTTr   r   r-   )r0   copyr1   r
   r   getattrr   r4   r-   tolistr2   r   r3   itemr   r   r,   nparray)r6   r0   r7   r8   mbase_first
mbase_lastmbase_sls          r9   test_getTestMRecords.test_get0   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,=,=?	@ 	XBQx}}Y'?@$E148E?C %r<   c                    U R                   R                  5       nUR                  [        5      nUR                  5       nSUl        SUR
                  R                  S S & [        US   R                  / SQ5        [        US   R                  / SQ5        SUl        [        US   R                  S/S-  5        [        [        R                  " US   5      S/S-  5        [        UR                  S/S-  5        [        UR                  R                  5       [        R                  " / S	Q[        S
95        [         Ul        [        UR"                  R$                  S/S-  5        [        UR"                  R                  S/S-  5        [        [        R                  " US   5      S/S-  5        [        [        R&                  " US   5      S/S-  5        [        UR                  R                  5       [        R                  " / SQ[        S
95        UR                  [        5      R                  5       nSUR
                  SS & [        UR
                  / SQ5        [        UR
                  R                  / SQ5        [         UR(                  SS & [        UR(                  US   5        [        UR(                  R                  / SQ5        SS[*        4/n[        R                  " / SQUS
9nUR                  [,        5      n[        R                  " / SQ/ SQS9nXeS'   [        UR.                  U5        [        UR.                  R$                  / SQ5        g )N)i?B g@xDN/Ar   r%   )r   r   r   r   r   r*   r   r   F)r   r   r   r   r   r   rM   rM   rN   r?   r(      N/A)r   r   r   rN   rP   rP   rN   r   r   r   r   r   r   )r   r   r   r   r   r&   r   r   r   r   r   )alphaz|S1num))r%   r   )r&   r   )r(   r   )
         r   r   r   r,   )r0   r@   r1   r
   
fill_valuer%   r5   r   r3   magetmaskarrayr2   rB   rD   rE   boolr   r(   r,   getdatar&   intr	   rT   )r6   r0   r7   ndtypedatardatavals          r9   test_set_fieldsTestMRecords.test_set_fieldsX   so   yy~~		)$

0aU3Z%%7U3Z%%7U3Z%%s1u-R__U3Z01#a%8U%%wqy1U[['')XX *
 %)*	+ UWW\\A3q5)UWW''!Q/R__U3Z01#a%8RZZc
+fXaZ8U[['')XX *
 %)*	+ 		)$))+UWWo.UWW]]O4UWWd3i(UWW]]O4"UCL1xx6fE		-(hh|)4eUYY$UYY^^Y/r<   c                    U R                   R                  5       nUR                  [        5      n[        US   S'   [        UR                  / SQ5        [        UR                  R                  / SQ5        [        [        R                  " S5      [        R                  R                  S5      /S[        4S[        4/S9n[        US   S'   [        UR                  / SQ5        [        UR                  R                  / S	Q5        g )
Nr%   r   rR   r   r&   r?   )r   r   r   r   r   )r   r   r   r   r   )r0   r@   r1   r
   r   r   r%   r3   r   rD   arangerandomrandr_   floatr6   r0   r7   s      r9   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                    U R                   R                  5       nUR                  [        5      n[        Ul        [        [        R                  " US   5      S/S-  5        [        US   R                  US   R                  5        [        US   R                  US   R                  5        [        UR                  R                  5       [        R                  " S/S-  [        S95        [        Ul        [        [        R                  " US   5      S/S-  5        [        UR                  R                  5       [        R                  " S	/S-  [        S95        g )
Nr&   r   r   r%   r(   r   r   r   r?   r   rM   )r0   r@   r1   r
   r   r,   r   r[   r\   r3   rB   rD   rE   r]   r   rl   s      r9   test_set_maskTestMRecords.test_set_mask   s    yy~~		)$
R__U3Z01#a%8U3Z%%uSz'7'78U3Z%%uSz'7'78U[['')XXyk!m48	: 
R__U3Z01#a%8U[['')XXyk!m48	:r<   c                    U R                   R                  5       nUR                  [        5      n/ SQUl        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        / SQUl        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        g )N)r   r   r   r   r   r   r   r   r   r   )	r0   r@   r1   r
   r,   r   r%   r&   r(   rl   s      r9   test_set_mask_fromarray$TestMRecords.test_set_mask_fromarray   s    yy~~		)$$
UWW\\?3UWW\\?3UWW\\?3$
UWW\\?3UWW\\?3UWW\\?3r<   c                 t   U R                   R                  5       R                  [        5      n[        R
                  " / SQS[        4S[        4S[        4/S9nX!l        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        SUl        X!l        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        g )	N)r   r   r   rx   r   r   r   ry   rM   r%   r&   r(   r?   )r   r   r   r   r   )r   r   r   r   r   F)r0   r@   r1   r
   rD   rE   r]   r,   r   r%   r&   r(   	fieldmask)r6   r7   nmasks      r9   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                    U R                   R                  5       nUR                  [        5      R                  5       n[        US'   [        UR                  R                  5       [        R                  " / SQ[        S95        [        UR                  / SQ5        UR                  [        5      R                  5       nSUS S& [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / S	Q5        [        UR                  R                  / SQ5        [        UR                  R                  / S
Q5        [        UR                  R                  / SQ5        UR                  [        5      R                  5       n[        US S& [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        g )Nrg   )rM   rp   rM   rp   rp   r?   rR   r   r   r   r   )r   r   r   r   r   rt   )      @r   r   r   r   )   5r   r"   r#   r$   r   )r   r   r   r   r   r   r   )r0   r@   r1   r
   r   r   r3   rB   rD   rE   r]   r2   r%   r5   r&   r(   rl   s      r9   test_set_elementsTestMRecords.test_set_elements   s   yy~~		)$))+b	KK HHL!	"
 	U%%7		)$))+bq	UWW]]O4UWW]]O4UWW]]$;<UWW]]O4UWW]]=	?UWW]]O4		)$))+bq	UWW]]O4UWW]]O4UWW]]$=>UWW]]O4UWW]]A	CUWW]]O4r<   c                    U R                   R                  5       nUR                  [        5      nUR	                  5          SUSS & [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  / SQ5        [        UR                  R                  UR                  R                  5        [        UR                  R                  UR                  R                  5        [        S5      e! [         a     O[         a    e f = f SUSS & [        S	5      e! [        [        4 a     g f = f)
Nr   rg   rQ   )r   r   r   r   r   )r    r!   r"   r   r$   r*   z)Flexible hard masks should be supported !r   z.Should have expected a readable buffer object!)r0   r@   r1   r
   harden_maskr   r%   r5   r&   r(   r3   	ExceptionNotImplementedErrorAssertionError	TypeErrorrl   s      r9   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?>E?c                    U R                   R                  5       nUR                  [        5      nUR	                  5         [        UR                  5        [        Ul        [        UR                  UR                  5        UR                  5         [        UR                  (       + 5        [        Ul        [        UR                  [        R                  " UR                  UR                  5      5        [        [        R                   " US   R                  5      [        L 5        [#        US   R                  US   R                  5        g )Nr&   r%   )r0   r@   r1   r
   r   r   	_hardmaskr   r,   r   r3   soften_maskr[   make_mask_noneshaper-   	make_maskr   rl   s      r9   test_hardmaskTestMRecords.test_hardmask
  s    yy~~		)$ 
U[[$**5EOO#$
U[[..tzz4::F	HU3Z--.&89U3Z%%uSz'7'78r<   c                    U R                   R                  5       nUR                  [        5      n[	        S[
        R                  S-   5       H  n[
        R                  " X#S9n[
        R                  " U5      n[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        M     g )Nr   r   )protocol)r0   r@   r1   r
   rangepickleHIGHEST_PROTOCOLdumpsloadsr   r-   r   r5   r3   )r6   r0   mrecproto_mrec_s         r9   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                    [         R                  " / SQ/ SQ[        S9n[         R                  " / SQ/ SQ[        S9n[         R                  " / SQ/ SQSS9nS[        4S[        4S	/n[	        XU/US
S9nUR                  5       n[        US   [        R                  " S[        S95        [        US   [        R                  " S[        S95        [        US   [        R                  " SSS95        g )Nr   r   r   rP   r+   r   r   r   onetwothreer)   r%   r&   r'   韆     i@rL   r-   rZ   )r   r   r   r?   )r   r   r   r(   )r   r   rL   )r[   rE   r_   rk   r   filledr   rD   )r6   _a_b_cddtyper   
mrecfilleds          r9   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                 $   [         R                  " / SQ/ SQ[        S9n[         R                  " / SQ/ SQ[        S9n[         R                  " / SQ/ SQSS9nS[        4S	[        4S
/n[	        XU/USS9n[        UR                  5       / SQ5        g )Nr   rP   r+   r   r   rX   r)   r%   r&   r'   r   r   ))r   r   N)r   r   r!   )NNr"   )r[   rE   r_   rk   r   r   rB   )r6   r   r   r   r   r   s         r9   test_tolistTestMRecords.test_tolist6  sy    XXiis;XXoIUCXX-IUK*sElL922,f%;= 	T[[].	/r<   c                 V    [        S[        SS9nSUS   S'   [        US   S   S5        g )Nr   r0   )formatsnamesrU   r   )r
   rk   r   )r6   xs     r9   test_withnamesTestMRecords.test_withnamesC  s/    af5!VQvYq\2&r<   c                 0   [        SS[        4SS[        4/S9n[        US'   [	        UR                  S5      R                  5       S5        [        SS/S9n[        US'   [	        UR                  S5      R                  5       [        R                  " S	UR                  S9R                  5       5        [        S
SS9n[        US'   SUS'   UR                  S5        [        UR                  S5      [        R                  " SS/UR                  S95        g )Nr   i)sr)   fr?   r   )r      1g      ?)f0z<f8)r   r   )r   r   zi4, (2,3)float, floatrp   rM   )r
   r_   rk   r   r   r   rC   rD   rE   r-   r   )r6   easysolomults       r9   test_exotic_formats TestMRecords.test_exotic_formatsI  s    C:|c5\"JKQT[[^((*M:#8"9:QT[[^((*XXd$**5::<	> "9:QQAT[[^XXy)&<,0JJ8	9r<    N) __name__
__module____qualname____firstlineno__ilistflistslistr_   rk   r   r,   r[   rE   listzipr0   r:   rI   rd   rm   rq   ru   r|   r   r   r   r   r   r   r   r   __static_attributes__r   r<   r9   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"
:=/'9r<   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestViewi]  c                 "   [         R                  " S5      [         R                  R                  S5      p!S[        4S[        4/n[         R
                  " [        [        X5      5      US9n[        X/USS9nSUR                  S'   XQX$4U l
        g )	NrU   r%   r&   r?   )g      "g     Xr   )FTr   )rD   rh   ri   rj   rk   rE   r   r   r   r,   ra   )r6   r%   r&   r`   arrr   s         r9   setup_methodTestView.setup_method_  sq    ))B-!3A,e-hhtCIf51&;G$		!a%	r<   c                     U R                   u  pp4UR                  5       n[        [        U[        5      5        [        XQ5        [        UR                  UR                  5        g )N)ra   r1   r   r4   r	   r   r3   )r6   r   r%   r&   r   tests         r9   test_view_by_itselfTestView.test_view_by_itselfh  sD     II!yy{
4/0T(TZZ4r<   c                 @   U R                   u  pp4[        S4nUR                  U5      n[        [	        U[
        R                  5      5        [        U[        R                  " [        [        X#5      5      [        S95        [        US   [
        R                  L 5        g )Nr   r?   )r   r   )ra   rk   r1   r   r4   r[   MaskedArrayr   rD   rE   r   r   r   )r6   r   r%   r&   r   ntyper   s          r9   test_view_simple_dtypeTestView.test_view_simple_dtypeo  sl     II!
yy
401T288DQO5ABT
bii'(r<   c                 z   U R                   u  pp4S[        4S[        4/nUR                  U5      n[        [	        U[
        5      5        [        XdR                  U5      5        [        US   S   [        L 5        [        UR                  [        R                  " U5      5        [        UR                  S L 5        g )NABr   )ra   rk   r1   r   r4   r	   r   r   r   r-   rD   _fill_value)r6   r   r%   r&   r   alttyper   s          r9   test_view_flexible_type TestView.test_view_flexible_typew  s     II!<#u.yy!
4/0T88G#45S	!&'TZZ'!23  D()r<   )ra   N)	r   r   r   r   r   r   r   r   r   r   r<   r9   r   r   ]  s    &5)*r<   r   c                   8   \ rS rSr\R
                  " / SQ/ SQ\S9r\R
                  " / SQ/ SQ\S9r	\R
                  " / SQ/ SQSS9r
S\4S	\4S
/r\" \\	\
/\SS9r\" \R                  \	R                  \
R                  4\S9r\\\4rS rS rS rS rS rSrg)TestMRecordsImporti  r   rP   r+   r   )r    r!   r"   r)   r%   r&   r'   )s   99999s   99999.rO   r   r?   c                    [         R                  " / SQ/ SQ[        S9n[         R                  " / SQ/ SQ[        S9n[         R                  " / SQ/ SQSS9nU R                  u  pEn[        SXU45       H.  u  px[        [        XG5      R                  UR                  5        M0     [         R                  " / SQ/ S	Q[        S9n	[        [        XR                  S
9US   5        g )Nr   rP   r+   r   r   r)   r/   )r   r   r   rX   r?   r   )r[   rE   r_   rk   ra   r   r   rA   r3   objectr   r   r-   )
r6   r   r   r   r   nrecr   r   l_xs
             r9   test_fromarrays"TestMRecordsImport.test_fromarrays  s    XXiis;XXoIUCXX-IUK))Q/BB<8FQ)//9 9 XXoIVDZ**=tAwGr<   c                    U R                   u  pn/ SQn[        USS9n[        USS9n[        XV5        [        U5      n[	        UR
                  UR
                  5        UR
                  R                   H,  n[	        [        Xx5      [        UR                  U5      5        M.     [        UR                  5       SS9n[	        UR
                  S[        4S[        4S/5        [        SS	5       H.  u  p[	        [        Xy5      [        UR                  U
5      5        M0     [        U5      n[	        UR
                  UR
                  5        [        UR                  UR                  5       5        [        UR                  UR                  5        g )
N))r   abcg   @r   )r   xyg   @r   )r    g   ?r   zc1, c2, c3, c4)r   zc1,c2,c3c1c2)c3z|S5)r   r   r   r/   )ra   recfromrecordsr   r   r   r-   r   rA   r5   rB   r_   rk   r   r   r3   )r6   r   r   r   palistpampa_mrecr8   r   ns              r9   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                    U R                   u  pn[        UR                  5       U/ SQS9n[        UR                  UR                  5        [        UR                  R                  5       / SQ5        [        UR                  5       USS9n[        UR                  UR                  5        [        UR                  R                  5       / SQ5        [        UR                  5       X1R                  S9n[        UR                  UR                  5        [        UR                  R                  5       UR                  R                  5       5        [        UR                  5       UUR                  R                  5       S9n[        UR                  UR                  5        [        UR                  R                  5       UR                  R                  5       5        g )Nrx   )r-   r,   )rM   rp   rM   T)rp   rp   rp   )ra   r   rB   r   r5   r   r3   )r6   r   r   r   r   s        r9   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                    Sn[        5        n[        US5       nUR                  U5        S S S 5        [        USSS9nS S S 5        [	        [        W[        5      5        [        UR                  / SQ5        [        UR                  R                  / SQ5        [        UR                  / SQ5        g ! , (       d  f       N= f! , (       d  f       N= f)Nz#
'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
w,ABCDEFG)	delimitervarnames)r   r   r   r   )r   r   g    OAg|۽)r   openwriter   r   r4   r	   r   FEr3   C)r6   fcontentpathr   mrectxts        r9   test_fromtextfile$TestMRecordsImport.test_fromtextfile  s     	 Z4dCA! !"43KG  	
7M23WYY-WYY__l3WYY 56 ! Zs!   CB3C3
C	=C
Cc                     U R                   u  pn/ SQ/ SQpT[        U[        R                  " XES95      n[	        UR
                  U5        [	        UR
                  R                  U5        g )N)d      i,  rX   rY   )ra   r   r[   rE   r   f3r3   )r6   r   r   r   dms         r9   test_addfield TestMRecordsImport.test_addfield  sL    #yyV!9Abhhq12TWWa TWW]]A&r<   r   N)r   r   r   r   r[   rE   r_   r   rk   r   r   r   r   r   recfromarraysr5   r   ra   r   r   r  r  r  r   r   r<   r9   r   r     s    	))3	7B	/		?B	, 
/BCj3,5Fr2rl&"*+D "((BHHbhh7vFD$D	H64@*7&'r<   r   c                  ^    [         R                  " SS/SS/S[        4S[        4/S9n U S     g )	N)r   2)r   4)r   r   )r   r   r%   r&   r+   r   )r[   masked_arrayr_   r   )ys    r9   #test_record_array_with_object_fieldr"    s9    
	8fSzC=)	+A
 aDr<   )__doc__r   numpyrD   numpy.mar[   r   r   numpy.testingr   numpy._core.recordsr   r   r   r   r  numpy.ma.mrecordsr	   r
   r   r   numpy.ma.testutilsr   r   r   r   r   r   r"  r   r<   r9   <module>r*     sc       # "   9 9D
"* "*L`' `'F	r<   