
    ؔ jlO                         d Z ddlZddlZddlmZ ddlmZm	Z
mZ ddlmZmZ ddlmZmZmZm	Z	mZmZ ddlmZmZmZ ddlmZ  G d d	          Z G d
 d          Z G d d          Zd ZdS )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            	           e Zd Zg dZg dZg dZdefdefdgZg dZ	 e
j         e eeee                    e	e          Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestMRecords               皙?皙@ffffff
@皙@      @   one   two   three   four   fiveabc|S8r   r   r   r   r   maskdtypec                    | j         }|                    t                    }t          |j        |j                   t          |j        |j                   t          t          |j	        t                               t          |j	        |j	                            t                               dD ]}t          ||         ||                    t          |                    t                    |           d S )Nr$   r%   r'   )baseviewr   r   
recordmaskr   _maskr   
isinstance_datar   )selfr/   mbasefields       pC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\numpy/ma/tests/test_mrecords.pytest_byviewzTestMRecords.test_byview&   s    y		)$$U%t777U[$*555
5;11222U[$*//(*C*CDDD$ 	4 	4EeeEl3333UZZ	22E:::::    c                 .   | j                                         }|                    t                    }dD ]B}t	          t          ||          ||                    t	          ||         ||                    C|d         }t          t          |t                               t	          |j        |j                   t	          |	                                d           t	          |j
        t                     t	          |j                                        d           t	          |d         |d         d                    |d         }t          t          |t                               t	          |j        |j                   t	          |	                                d           t	          |j
        d           t	          |j                                        d	           t	          |d         |d         d                    t          |d         t          u            |d d
         }t          t          |t                               t	          |j        |j                   t	          |j
        ddg           t          |j        t#          j        dd	g|j        j                             t          ||d d
                             t                               dD ].}t	          t          ||          |d d
         |                    /d S )Nr.   r   )r   r   r   )FFFr$   )NNNT)TTTr   r   r,   )r/   copyr0   r   r   getattrr   r3   r,   tolistr1   r   r2   itemr   r   r+   nparray)r5   r/   r6   r7   mbase_first
mbase_lastmbase_sls          r8   test_getzTestMRecords.test_get2   s   y~~		)$$$ 	4 	4E..e===eeEl3333Ah
;	22333[&444[''))+;<<<[+V444[&++--/DEEE[%uSz!}5552Y

:y11222Z%u{333Z&&((*<===Z*D111Z%**,,.@AAAZ_eCjn555
36)***!9
8Y//000X^U[111X(1a&111X]X'<'9';,1K,=? ? ?	@ 	@ 	@ 	XtBQBx}}Y'?'?@@@$ 	D 	DE51148E?CCCC	D 	Dr:   c                    | j                                         }|                    t                    }|                                }d|_        d|j        j        d d <   t          |d         j        g d           t          |d         j        g d           d|_        t          |d         j        dgdz             t          t          j
        |d                   dgdz             t          |j        dgdz             t          |j                                        t          j        g d	t          
                     t           |_        t          |j        j        dgdz             t          |j        j        dgdz             t          t          j
        |d                   dgdz             t          t          j        |d                   dgdz             t          |j                                        t          j        g dt          
                     |                    t                                                    }d|j        dd <   t          |j        g d           t          |j        j        g d           t           |j        dd <   t          |j        |d                    t          |j        j        g d           ddt*          fg}t          j        g d|
          }|                    t,                    }t          j        g dg d          }||d<   t          |j        |           t          |j        j        g d           d S )N)i?B g@xDN/Ar   r$   )r   r   r   r   r   r)   r   r   F)r   r   r   r   r   r   rJ   rJ   rK   r=   r'      N/A)r   r   r   rK   rM   rM   rK   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+   )r/   r>   r0   r   
fill_valuer$   r4   r   r2   magetmaskarrayr1   r@   rB   rC   boolr   r'   r+   getdatar%   intr   rQ   )r5   r/   r6   ndtypedatardatavals          r8   test_set_fieldszTestMRecords.test_set_fieldsZ   s$   y~~		)$$

0aaaU3Z%777U3Z%777U3Z%sQw///R_U3Z001#':::U%w{333U[''))X * * *
 %)* * *	+ 	+ 	+ UW\A37+++UW'!q111R_U3Z001#':::RZc
++fX\:::U[''))X * * *
 %)* * *	+ 	+ 	+ 		)$$))++UWooo...UW]OOO444UWd3i(((UW]OOO444"UCL1x666fEEE		-((h|||)))444eUY$$$UY^YYY/////r:   c                    | j                                         }|                    t                    }t          |d         d<   t          |j        g d           t          |j        j        g d           t          t          j
        d          t          j                            d          gdt          fdt          fg          }t          |d         d<   t          |j        g d           t          |j        j        g d	           d S )
Nr$   r   rO   r   r%   r=   )r   r   r   r   r   )r   r   r   r   r   )r/   r>   r0   r   r   r   r$   r2   r   rB   arangerandomrandr\   floatr5   r/   r6   s      r8   test_set_fields_maskz!TestMRecords.test_set_fields_mask   s    y~~		)$$c
2UWooo...UW]OOO444BIaLL")..*;*;<#&*sEl!;= = =c
2UWooo...UW]OOO44444r:   c                    | j                                         }|                    t                    }t          |_        t          t          j        |d                   dgdz             t          |d         j	        |d         j	                   t          |d         j	        |d         j	                   t          |j	        
                                t          j        dgdz  t                               t          |_        t          t          j        |d                   dgdz             t          |j	        
                                t          j        d	gdz  t                               d S )
Nr%   r   r   r$   r'   r   r   r   r=   r   rJ   )r/   r>   r0   r   r   r+   r   rX   rY   r2   r@   rB   rC   rZ   r   rh   s      r8   test_set_maskzTestMRecords.test_set_mask   s6   y~~		)$$
R_U3Z001#':::U3Z%uSz'7888U3Z%uSz'7888U[''))XykAoT:::	< 	< 	< 
R_U3Z001#':::U[''))XykAoT:::	< 	< 	< 	< 	<r:   c                    | j                                         }|                    t                    }g d|_        t          |j        j        g d           t          |j        j        g d           t          |j        j        g d           g d|_        t          |j        j        g d           t          |j        j        g d           t          |j        j        g d           d S )N)r   r   r   r   r   r   r   r   r   r   )	r/   r>   r0   r   r+   r   r$   r%   r'   rh   s      r8   test_set_mask_fromarrayz$TestMRecords.test_set_mask_fromarray   s    y~~		)$$$__
UW\???333UW\???333UW\???333$__
UW\???333UW\???333UW\???33333r:   c                 B   | j                                                             t                    }t	          j        g ddt          fdt          fdt          fg          }||_        t          |j	        j        g d           t          |j
        j        g d           t          |j        j        g d           d|_        ||_        t          |j	        j        g d           t          |j
        j        g d           t          |j        j        g d           d S )	N)r   r   r   rq   r   r   r   rr   rJ   r$   r%   r'   r=   )r   r   r   r   r   )r   r   r   r   r   F)r/   r>   r0   r   rB   rC   rZ   r+   r   r$   r%   r'   	fieldmask)r5   r6   nmasks      r8   test_set_mask_fromfieldsz%TestMRecords.test_set_mask_fromfields   s   	  %%i00CCC;dc4[9; ; ; 
UW\???333UW\???333UW\???333
UW\???333UW\???333UW\???33333r:   c                    | j                                         }|                    t                                                    }t          |d<   t          |j                                        t          j	        g dt                               t          |j        g d           |                    t                                                    }d|d d<   t          |j        j        g d           t          |j        j        g d           t          |j        j        g d	           t          |j        j        g d           t          |j        j        g d
           t          |j        j        g d           |                    t                                                    }t          |d d<   t          |j        j        g d           t          |j        j        g d           t          |j        j        g d           t          |j        j        g d           t          |j        j        g d           t          |j        j        g d           d S )Nrc   )rJ   rk   rJ   rk   rk   r=   rO   r   r   r   r   )r   r   r   r   r   rn   )      @rx   r   r   r   )   5ry   r!   r"   r#   r   )r   r   r   r   r   r   r   )r/   r>   r0   r   r   r   r2   r@   rB   rC   rZ   r1   r$   r4   r%   r'   rh   s      r8   test_set_elementszTestMRecords.test_set_elements   s*   y~~		)$$))++b	K  HLLL! ! !	" 	" 	"
 	U%777		)$$))++bqb	UW]OOO444UW]OOO444UW]$;$;$;<<<UW]OOO444UW]===	? 	? 	?UW]OOO444		)$$))++bqb	UW]OOO444UW]OOO444UW]$=$=$=>>>UW]OOO444UW]AAA	C 	C 	CUW]OOO44444r:   c                    | j                                         }|                    t                    }|                                 	 d|dd <   t          |j        j        g d           t          |j        j        g d           t          |j	        j        g d           t          |j        j
        g d           t          |j        j
        |j        j
                   t          |j        j
        |j	        j
                   t          d          # t          $ r Y nt          $ r  w xY w	 d|dd <   t          d	          # t          t          f$ r Y d S w xY w)
Nrw   rc   rN   )r   r   r   r   r   )r   r    r!   ry   r#   r)   z)Flexible hard masks should be supported !r   z.Should have expected a readable buffer object!)r/   r>   r0   r   harden_maskr   r$   r4   r%   r'   r2   	ExceptionNotImplementedErrorAssertionError	TypeErrorrh   s      r8   test_setslices_hardmaskz$TestMRecords.test_setslices_hardmask   s}   y~~		)$$	I"E"##J888(?(?(?@@@BBBD D D888666666 GHHH # 	 	 	D 	 	 		
	NE"##J LMMM $Y/ 	 	 	DD	s%   	B?D 
D.#D.2E EEc                    | j                                         }|                    t                    }|                                 t          |j                   t          |_        t          |j
        |j
                   |                                 t          |j                    t          |_        t          |j
        t          j        |j        |j                             t          t          j        |d         j
                  t          u            t#          |d         j
        |d         j
                   d S )Nr%   r$   )r/   r>   r0   r   r|   r   	_hardmaskr   r+   r   r2   soften_maskrX   make_mask_noneshaper,   	make_maskr   rh   s      r8   test_hardmaskzTestMRecords.test_hardmask  s   y~~		)$$   
U[$*555EO#$$$
U[.tz4:FF	H 	H 	HU3Z-..&8999U3Z%uSz'788888r:   c                    | j                                         }|                    t                    }t	          dt
          j        dz             D ]}t          j        ||          }t          j        |          }t          |j
        |j
                   t          |j        |j                   t          |j        |j                   t          |j        |j                   d S )Nr   r   )protocol)r/   r>   r0   r   rangepickleHIGHEST_PROTOCOLdumpsloadsr   r,   r   r4   r2   )r5   r/   mrecproto_mrec_s         r8   test_picklingzTestMRecords.test_pickling  s    y~~yy##1f59:: 	: 	:ETE222ALOOEdj111 dj999dj111 dj9999	: 	:r:   c                 D   t          j        g dg dt                    }t          j        g dg dt                    }t          j        g dg dd          }dt          fdt          fd	g}t	          |||g|d
          }|                                }t          |d         t          j        dt                               t          |d         t          j        dt                               t          |d         t          j        dd                     d S )Nr   r   r   rM   r*   r   r   r   onetwothreer(   r$   r%   r&   韆     i@rI   r,   rW   )r   r   r   r=   )r   r   r   r'   )r   r   rI   )rX   rC   r\   rg   r   filledr   rB   )r5   _a_b_cddtyper   
mrecfilleds          r8   test_filledzTestMRecords.test_filled)  s0   Xiiiiiis;;;XoooIIIUCCCX---IIIUKKK*sElL92r2,f%;= = =[[]]
Z_bh}C&H&H&HIIIZ_bh/A5:'< '< '< 	= 	= 	=Z_bh/D5:'< '< '< 	= 	= 	= 	= 	=r:   c                 T   t          j        g dg dt                    }t          j        g dg dt                    }t          j        g dg dd          }dt          fd	t          fd
g}t	          |||g|d          }t          |                                g d           d S )Nr   rM   r*   r   r   rU   r(   r$   r%   r&   r   r   ))r   r   N)r   r   r    )NNr!   )rX   rC   r\   rg   r   r   r@   )r5   r   r   r   r   r   s         r8   test_tolistzTestMRecords.test_tolist8  s    Xiiiiiis;;;XoooIIIUCCCX---IIIUKKK*sElL92r2,f%;= = = 	T[[]]. . .	/ 	/ 	/ 	/ 	/r:   c                     t          dt          d          }d|d         d<   t          |d         d         d           d S )Nr   r/   )formatsnamesrR   r   )r   rg   r   )r5   xs     r8   test_withnameszTestMRecords.test_withnamesE  sA    af555!VQvYq\2&&&&&r:   c                    t          ddt          fddt          fg          }t          |d<   t	          |                    d                                          d           t          ddg          }t          |d<   t	          |                    d                                          t          j        d	|j	                                                             t          d
d          }t          |d<   d|d<   |                    d           t          |                    d          t          j        ddg|j	                             d S )Nr   i)sr(   fr=   r   )r      1g      ?)f0z<f8)r   r   )r   r   zi4, (2,3)float, floatrk   rJ   )r   r\   rg   r   r   r   rA   rB   rC   r,   r   )r5   easysolomults       r8   test_exotic_formatsz TestMRecords.test_exotic_formatsK  s9   C:|c5\"JKKKQT[[^^((**M:::#8"9:::QT[[^^((**Xd$*555::<<	> 	> 	> "9:::QQAT[[^^Xy)&<,0J8 8 8	9 	9 	9 	9 	9r:   N)__name__
__module____qualname__ilistflistslistr\   rg   r   r+   rX   rC   listzipr/   r9   rG   ra   ri   rl   ro   ru   rz   r   r   r   r   r   r   r    r:   r8   r   r      sj       OOE%%%E888ECj3,5F??D28DDUE51122VLLLD
; 
; 
;&D &D &DP50 50 50n5 5 5< < < 4 4 44 4 4"5 5 5@N N N:9 9 9"
: 
: 
:= = =/ / /' ' '9 9 9 9 9r:   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestViewc                 6   t          j        d          t           j                            d          }}dt          fdt          fg}t          j        t          t          ||                    |          }t          ||g|d          }d|j	        d<   ||||fS )	NrR   r$   r%   r=   )g      "g     Xr   )FTr   )
rB   rd   re   rf   rg   rC   r   r   r   r+   )r5   r$   r%   r]   arrr   s         r8   _create_datazTestView._create_dataa  s    	"ry~~b111,e-htC1IIf5551a&;GGG$	!Q3r:   c                     |                                  d         }|                                }t          t          |t                               t          ||           t          |j        |j                   d S )Nr   )r   r0   r   r3   r   r   r2   )r5   r   tests      r8   test_view_by_itselfzTestView.test_view_by_itselfj  sg      ""1%yy{{
4//000T4(((TZ44444r:   c                    |                                  \  }}}}t          df}|                    |          }t          t	          |t
          j                             t          |t          j	        t          t          ||                    t                               t          |d         t
          j        u            d S )Nr   r=   )r   r   )r   rg   r0   r   r3   rX   MaskedArrayr   rB   rC   r   r   r   )r5   r   r$   r%   r   ntyper   s          r8   test_view_simple_dtypezTestView.test_view_simple_dtypeq  s    ))++aA
yy
400111T28DQOO5AAABBBT
bi'(((((r:   c                    |                                  \  }}}}dt          fdt          fg}|                    |          }t          t	          |t
                               t          ||                    |                     t          |d         d         t          u            t          |j	        t          j	        |                     t          |j        d u            d S )NABr   )r   rg   r0   r   r3   r   r   r   r   r,   rB   _fill_value)r5   r   r   r   alttyper   s         r8   test_view_flexible_typez TestView.test_view_flexible_typey  s    ++--aC<#u.yy!!
4//000T388G#4#4555S	!&'''TZ'!2!2333 D()))))r:   N)r   r   r   r   r   r   r   r   r:   r8   r   r   _  sP          5 5 5) ) )* * * * *r:   r   c                   2   e Zd Z ej        g dg de          Z ej        g dg de          Z ej        g dg dd          Z	defdefd	gZ
 eeee	ge
d
          Z eej        ej        e	j        fe
          Zeee
fZd Zd Zd Zd Zd ZdS )TestMRecordsImportr   rM   r*   r   )r   r    r!   r(   r$   r%   r&   )s   99999s   99999.rL   r   r=   c                    t          j        g dg dt                    }t          j        g dg dt                    }t          j        g dg dd          }| j        \  }}}t          d|||f          D ]-\  }}t          t          ||          j        |j                   .t          j        g dg d	t                    }	t          t          |	|j        
          |d                    d S )Nr   rM   r*   r   r   r(   r.   )r   r   r   rU   r=   r   )rX   rC   r\   rg   r^   r   r   r?   r2   objectr   r   r,   )
r5   r   r   r   r   nrecr   r   l_xs
             r8   test_fromarraysz"TestMRecordsImport.test_fromarrays  s    Xiiiiiis;;;XoooIIIUCCCX---IIIUKKK)tQ/BB<88 	: 	:FQq))/9999XoooIIIVDDDZ$*===tAwGGGGGr:   c                 N   | j         \  }}}g d}t          |d          }t          |d          }t          ||           t          |          }t	          |j        |j                   |j        j        D ]3}t	          t          ||          t          |j        |                     4t          |	                                d          }t	          |j        dt          fdt          fdg           t          dd	          D ]6\  }	}
t	          t          ||	          t          |j        |
                     7t          |          }t	          |j        |j                   t          |j        |                                           t          |j        |j                   d S )
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.   )r^   recfromrecordsr   r   r   r,   r   r?   r4   r@   r\   rg   r   r   r2   )r5   r   r   r   palistpampa_mrecr7   r   ns              r8   test_fromrecordsz#TestMRecordsImport.test_fromrecords  s   #ytV4 4 4 F*:;;;&(8999R%%%D!!U[$*---[& 	L 	LE..
E0J0JKKKKDKKMM<<<U[D#;u}"MNNN,o>> 	D 	DFQ**GDJ,B,BCCCCD!!U[$*---U[$++--888U[$*55555r:   c                    | j         \  }}}t          |                                |g d          }t          |j        |j                   t          |j                                        g d           t          |                                |d          }t          |j        |j                   t          |j                                        g d           t          |                                ||j                  }t          |j        |j                   t          |j                                        |j                                                   t          |                                ||j                                                  }t          |j        |j                   t          |j                                        |j                                                   d S )Nrq   )r,   r+   )rJ   rk   rJ   T)rk   rk   rk   )r^   r   r@   r   r4   r   r2   )r5   r   r   r   r   s        r8   test_fromrecords_wmaskz)TestMRecordsImport.test_fromrecords_wmask  s   #ytVDKKMMjjjIIIU[$*555U[''))+L+L+LMMMDKKMMdCCCU[$*555U[''))+L+L+LMMMDKKMMdjIIIU[$*555U[''))4:+<+<+>+>???DKKMM!%!2!2!4!46 6 6U[$*555U[''))4:+<+<+>+>?????r:   c                    d}t                      5 }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          |dd          }d d d            n# 1 swxY w Y   t	          t          |t                               t          |j        g d           t          |j	        j
        g d           t          |j        g d           d S )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   r3   r   r   FEr2   C)r5   fcontentpathr   mrectxts        r8   test_fromtextfilez$TestMRecordsImport.test_fromtextfile  sg    	 ZZ 	L4dC "A!!!" " " " " " " " " " " " " " ""43KKKG	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	
7M22333WY---WY_lll333WY 5 5 566666s3   A-AA-A	A-A	A--A14A1c                     | j         \  }}}g dg d}}t          |t          j        ||                    }t	          |j        |           t	          |j        j        |           d S )N)d      i,  rU   rV   )r^   r	   rX   rC   r   f3r2   )r5   r   r   r   dms         r8   test_addfieldz TestMRecordsImport.test_addfield  sk    #ytV!//999Abhqq11122TWa   TW]A&&&&&r:   N)r   r   r   rX   rC   r\   r   rg   r   r   r   r   r   recfromarraysr4   r   r^   r   r   r   r   r   r   r:   r8   r   r     s7       	))))))3	7	7	7B	///				?	?	?B	,,, yy
/ 
/ 
/BCj3,5F:r2rl&"*+ + +D ="(BHbh7vFFFD$D	H 	H 	H6 6 64@ @ @*7 7 7&' ' ' ' 'r:   r   c                  l    t          j        ddgddgdt          fdt          fg          } | d          d S )	N)r   2)r   4)r   r   )r   r   r$   r%   r*   r   )rX   masked_arrayr\   r   )ys    r8   #test_record_array_with_object_fieldr    sG    
	8fSzC=)	+ 	+ 	+A
 aDDDDr:   )__doc__r   numpyrB   numpy.marX   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:   r8   <module>r     s                       
 $ # # # # # # #                K J J J J J J J J J " " " " " "9 9 9 9 9 9 9 9D
"* "* "* "* "* "* "* "*L`' `' `' `' `' `' `' `'F	 	 	 	 	r:   