
    PhO                         d Z ddlZddlmZ ddlmZ ddlmZmZ ddl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y)z^Tests suite for mrecords.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu

    N)recarray)maskednomask)temppath)fromrecords
fromarrays)MaskedRecords	mrecarrayr   fromtextfiler   addfield)assert_assert_equalassert_equal_records)picklec            	           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y)TestMRecords               皙?皙@ffffff
@皙@      @   one   two   three   four   fiveabc|S8r   r   r   r   r   maskdtypec                    | j                   }|j                  t              }t        |j                  |j                         t        |j                  |j                         t        t        |j                  t                     t        |j                  |j                  j                  t                     dD ]  }t        ||   ||           t        |j                  t              |       y )Nr%   r&   r(   )baseviewr
   r   
recordmaskr   _maskr   
isinstance_datar   )selfr0   mbasefields       gC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\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eeEl3 %UZZ	2E:    c                 J   | j                   j                         }|j                  t              }dD ]-  }t	        t        ||      ||          t	        ||   ||          / |d   }t        t        |t                     t	        |j                  |j                         t	        |j                         d       t	        |j                  t               t	        |j                  j                         d       t	        |d   |d   d          |d   }t        t        |t                     t	        |j                  |j                         t	        |j                         d       t	        |j                  d       t	        |j                  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
 j                  t                     dD ]  }t	        t        ||      |d d
 |            y )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_getzTestMRecords.test_get0   s   yy~~		)$$E.e=eeEl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CF*,!9
8Y/0X^^U[[1X((1a&1X]]XX'<'9';,1KK,=,=?	@ 	XtBQx}}Y'?@$E5148E?C %r;   c                    | j                   j                         }|j                  t              }|j                         }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                  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                  j                         t        j                  g dt        
             |j                  t              j                         }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|
      }|j                  t,              }t        j                  g dg d      }||d<   t        |j.                  |       t        |j.                  j$                  g d       y )N)i?B g@xDN/Ar   r%   )r   r   r   r   r   r*   r   r   F)r   r   r   r   r   r   rK   rK   rL   r>   r(      N/A)r   r   r   rL   rN   rN   rL   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   rA   rC   rD   boolr   r(   r,   getdatar&   intr	   rR   )r6   r0   r7   ndtypedatardatavals          r9   test_set_fieldszTestMRecords.test_set_fieldsX   sq   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                    | j                   j                         }|j                  t              }t        |d   d<   t        |j                  g d       t        |j                  j                  g d       t        t        j                  d      t        j                  j                  d      gdt        fdt        fg      }t        |d   d<   t        |j                  g d       t        |j                  j                  g d	       y )
Nr%   r   rP   r   r&   r>   )r   r   r   r   r   )r   r   r   r   r   )r0   r?   r1   r
   r   r   r%   r3   r   rC   arangerandomrandr]   floatr6   r0   r7   s      r9   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                    | j                   j                         }|j                  t              }t        |_        t        t        j                  |d         dgdz         t        |d   j                  |d   j                         t        |d   j                  |d   j                         t        |j                  j                         t        j                  dgdz  t                     t        |_        t        t        j                  |d         dgdz         t        |j                  j                         t        j                  d	gdz  t                     y )
Nr&   r   r   r%   r(   r   r   r   r>   r   rK   )r0   r?   r1   r
   r   r,   r   rY   rZ   r3   rA   rC   rD   r[   r   ri   s      r9   test_set_maskz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                    | j                   j                         }|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       y )N)r   r   r   r   r   r   r   r   r   r   )	r0   r?   r1   r
   r,   r   r%   r&   r(   ri   s      r9   test_set_mask_fromarrayz$TestMRecords.test_set_mask_fromarray   s    yy~~		)$$
UWW\\?3UWW\\?3UWW\\?3$
UWW\\?3UWW\\?3UWW\\?3r;   c                 |   | j                   j                         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       y )	N)r   r   r   rr   r   r   r   rs   rK   r%   r&   r(   r>   )r   r   r   r   r   )r   r   r   r   r   F)r0   r?   r1   r
   rC   rD   r[   r,   r   r%   r&   r(   	fieldmask)r6   r7   nmasks      r9   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                    | j                   j                         }|j                  t              j                         }t        |d<   t        |j                  j                         t        j                  g dt                     t        |j                  g d       |j                  t              j                         }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       |j                  t              j                         }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       y )Nrd   )rK   rl   rK   rl   rl   r>   rP   r   r   r   r   )r   r   r   r   r   ro   )      @ry   r   r   r   )   5rz   r"   r#   r$   r   )r   r   r   r   r   r   r   )r0   r?   r1   r
   r   r   r3   rA   rC   rD   r[   r2   r%   r5   r&   r(   ri   s      r9   test_set_elementsz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                    | j                   j                         }|j                  t              }|j	                          	 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 y w xY w)
Nrx   rd   rO   )r   r   r   r   r   )r    r!   r"   rz   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	TypeErrorri   s      r9   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<;E<c                    | j                   j                         }|j                  t              }|j	                          t        |j                         t        |_        t        |j                  |j                         |j                          t        |j                          t        |_        t        |j                  t        j                  |j                  |j                               t        t        j                   |d   j                        t        u        t#        |d   j                  |d   j                         y )Nr&   r%   )r0   r?   r1   r
   r}   r   	_hardmaskr   r,   r   r3   soften_maskrY   make_mask_noneshaper-   	make_maskr   ri   s      r9   test_hardmaskzTestMRecords.test_hardmask
  s    yy~~		)$ 
U[[$**5EOO#$
U[[..tzz4::F	HU3Z--.&89U3Z%%uSz'7'78r;   c                    | j                   j                         }|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                          y )Nr   r   )protocol)r0   r?   r1   r
   ranger   HIGHEST_PROTOCOLdumpsloadsr   r-   r   r5   r3   )r6   r0   mrecproto_mrec_s         r9   test_picklingzTestMRecords.test_pickling  s    yy~~yy#1f559:ETE2ALLOEdjj1 djj9djj1 djj9 ;r;   c                    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
      }|j                         }t        |d   t        j                  dt                     t        |d   t        j                  dt                     t        |d   t        j                  dd             y )Nr   r   r   rN   r+   r   r   r   onetwothreer)   r%   r&   r'   韆     i@rJ   r-   rX   )r   r   r   r>   )r   r   r   r(   )r   r   rJ   )rY   rD   r]   rh   r   filledr   rC   )r6   _a_b_cddtyper   
mrecfilleds          r9   test_filledzTestMRecords.test_filled'  s    XXiis;XXoIUCXX-IUK*sElL92r2,f%;=[[]
Z_bhh}C&HIZ_bhh/A5:'< 	=Z_bhh/D5:'< 	=r;   c                 8   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        |j                         g d       y )Nr   rN   r+   r   r   rV   r)   r%   r&   r'   r   r   ))r   r   N)r   r   r!   )NNr"   )rY   rD   r]   rh   r   r   rA   )r6   r   r   r   r   r   s         r9   test_tolistzTestMRecords.test_tolist6  s{    XXiis;XXoIUCXX-IUK*sElL92r2,f%;= 	T[[].	/r;   c                 \    t        dt        d      }d|d   d<   t        |d   d   d       y )Nr   r0   )formatsnamesrS   r   )r
   rh   r   )r6   xs     r9   test_withnameszTestMRecords.test_withnamesC  s/    af5!VQvYq\2&r;   c                 J   t        ddt        fddt        fg      }t        |d<   t	        |j                  d      j                         d       t        ddg      }t        |d<   t	        |j                  d      j                         t        j                  d	|j                        j                                t        d
d      }t        |d<   d|d<   |j                  d       t        |j                  d      t        j                  ddg|j                               y )Nr   i)sr)   fr>   r   )r      1g      ?)f0z<f8)r   r   )r   r   zi4, (2,3)float, floatrl   rK   )r
   r]   rh   r   r   r   rB   rC   rD   r-   r   )r6   easysolomults       r9   test_exotic_formatsz 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__ilistflistslistr]   rh   r   r,   rY   rD   listzipr0   r:   rH   rb   rj   rm   rp   rv   r{   r   r   r   r   r   r   r    r;   r9   r   r      s    E%E8ECj3,5FD288DUE512VLD
;&DP50n5: 44"5@N:9"
:=/'9r;   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestViewc                 4   t        j                  d      t         j                  j                  d      }}dt        fdt        fg}t        j
                  t        t        ||            |      }t        ||g|d      }d|j                  d<   ||||f| _
        y )	NrS   r%   r&   r>   )g      "g     Xr   )FTr   )rC   re   rf   rg   rh   rD   r   r   r   r,   r_   )r6   r%   r&   r^   arrr   s         r9   setup_methodzTestView.setup_method_  s{    ))B-!3A,e-hhtC1If51a&;G$		!1a%	r;   c                     | j                   \  }}}}|j                         }t        t        |t                     t        ||       t        |j                  |j                         y )N)r_   r1   r   r4   r	   r   r3   )r6   r   r%   r&   r   tests         r9   test_view_by_itselfzTestView.test_view_by_itselfh  sJ     IIq!Syy{
4/0T4(TZZ4r;   c                 J   | j                   \  }}}}t        df}|j                  |      }t        t	        |t
        j                               t        |t        j                  t        t        ||            t                     t        |d   t
        j                  u        y )Nr   r>   )r   r   )r_   rh   r1   r   r4   rY   MaskedArrayr   rC   rD   r   r   r   )r6   r   r%   r&   r   ntyper   s          r9   test_view_simple_dtypezTestView.test_view_simple_dtypeo  sr     IIq!S
yy
401T288DQO5ABT
bii'(r;   c                 ~   | j                   \  }}}}dt        fdt        fg}|j                  |      }t        t	        |t
                     t        ||j                  |             t        |d   d   t        u        t        |j                  t        j                  |             t        |j                  d u        y )NABr   )r_   rh   r1   r   r4   r	   r   r   r   r-   rC   _fill_value)r6   r   r%   r&   r   alttyper   s          r9   test_view_flexible_typez TestView.test_view_flexible_typew  s     IIq!S<#u.yy!
4/0T388G#45S	!&'TZZ'!23  D()r;   N)r   r   r   r   r   r   r   r   r;   r9   r   r   ]  s    &5)*r;   r   c                   N   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y)TestMRecordsImportr   rN   r+   r   )r    r!   r"   r)   r%   r&   r'   )s   99999s   99999.rM   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                         1 t        j                  g dg d	t              }	t        t        |	|j                  
      |d          y )Nr   rN   r+   r   r   r)   r/   )r   r   r   rV   r>   r   )rY   rD   r]   rh   r_   r   r   r@   r3   objectr   r   r-   )
r6   r   r   r   r   nrecr   r   l_xs
             r9   test_fromarraysz"TestMRecordsImport.test_fromarrays  s    XXiis;XXoIUCXX-IUK))tQ/BB<8FQq)//9 9 XXoIVDZ$**=tAwGr;   c                 2   | j                   \  }}}g d}t        |d      }t        |d      }t        ||       t        |      }t	        |j
                  |j
                         |j
                  j                  D ],  }t	        t        ||      t        |j                  |             . t        |j                         d      }t	        |j
                  dt        fdt        fdg       t        dd	      D ]/  \  }	}
t	        t        ||	      t        |j                  |
             1 t        |      }t	        |j
                  |j
                         t        |j                  |j                                t        |j                  |j                         y )
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@   r5   rA   r]   rh   r   r   r3   )r6   r   r   r   palistpampa_mrecr8   r   ns              r9   test_fromrecordsz#TestMRecordsImport.test_fromrecords  s2   #yytV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                    | j                   \  }}}t        |j                         |g d      }t        |j                  |j                         t        |j                  j                         g d       t        |j                         |d      }t        |j                  |j                         t        |j                  j                         g d       t        |j                         ||j                        }t        |j                  |j                         t        |j                  j                         |j                  j                                t        |j                         ||j                  j                               }t        |j                  |j                         t        |j                  j                         |j                  j                                y )Nrr   )r-   r,   )rK   rl   rK   T)rl   rl   rl   )r_   r   rA   r   r5   r   r3   )r6   r   r   r   r   s        r9   test_fromrecords_wmaskz)TestMRecordsImport.test_fromrecords_wmask  s6   #yytVDKKMjIU[[$**5U[['')+LMDKKMdCU[[$**5U[['')+LMDKKMdjjIU[[$**5U[['')4::+<+<+>?DKKM!%!2!2!46U[[$**5U[['')4::+<+<+>?r;   c                    d}t               5 }t        |d      5 }|j                  |       d d d        t        |dd      }d d d        t	        t        t                     t        |j                  g d       t        |j                  j                  g d       t        |j                  g d       y # 1 sw Y   xY w# 1 sw Y   xY w)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_fromtextfilez$TestMRecordsImport.test_fromtextfile  s     	 Z4dCA! !"43KG  	
7M23WYY-WYY__l3WYY 56 ! Zs!   CB6C6B?	;CCc                     | j                   \  }}}g dg d}}t        |t        j                  ||            }t	        |j
                  |       t	        |j
                  j                  |       y )N)d      i,  rV   rW   )r_   r   rY   rD   r   f3r3   )r6   r   r   r   dms         r9   test_addfieldz TestMRecordsImport.test_addfield  sR    #yytV!9Abhhqq12TWWa TWW]]A&r;   N)r   r   r   rY   rD   r]   r   rh   r   r   r   r   r   recfromarraysr5   r   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                  b    t        j                  ddgddgdt        fdt        fg      } | d    y )	N)r   2)r   4)r   r   )r   r   r%   r&   r+   r   )rY   masked_arrayr]   r   )ys    r9   #test_record_array_with_object_fieldr    s9    
	8fSzC=)	+A
 aDr;   )__doc__numpyrC   numpy.marY   r   r   r   numpy.testingr   numpy.core.recordsr   r   r   r  numpy.ma.mrecordsr	   r
   r   r   numpy.ma.testutilsr   r   r   numpy.compatr   r   r   r   r  r   r;   r9   <module>r     sc       # "    9 9D
"* "*L`' `'F	r;   