o
    :‘ði�M  ã                   @   sº   d Z ddlZddl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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 G dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZdd„ ZdS )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                   @   sÒ   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d�Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'S )(ÚTestMRecords©é   é   é   é   é   ©çš™™™™™ñ?çš™™™™™@çffffff
@çš™™™™™@ç      @©ó   oneó   twoó   threeó   fouró   fiveÚaÚb©Úcú|S8©r   r   r   r   r   ©ÚmaskÚdtypec                 C   s€   | j }| t¡}t|j|jƒ t|j|jƒ tt|j	t
ƒƒ t|j	|j	 t
¡ƒ dD ]}t|| || ƒ q*t| t¡|ƒ d S )N©r"   r#   r%   )ÚbaseÚviewr	   r   Ú
recordmaskr   Ú_maskr   Ú
isinstanceÚ_datar   )Úselfr,   ÚmbaseÚfield© r5   ú[/root/parts/websockify/install/lib/python3.10/site-packages/numpy/ma/tests/test_mrecords.pyÚtest_byview$   s   
zTestMRecords.test_byviewc                 C   s´  | j  ¡ }| t¡}dD ]}tt||ƒ|| ƒ t|| || ƒ q|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d�ƒ t||d d
…  t¡ƒ dD ]}tt||ƒ|d d
… | ƒ qÇd S )Nr+   r   )r   r   r   )FFFr"   éÿÿÿÿ)NNNT)TTTr   r   ©r*   )r,   Úcopyr-   r	   r   Úgetattrr   r0   r*   Útolistr.   r   r/   Úitemr   r   r)   ÚnpÚarray)r2   r,   r3   r4   Úmbase_firstÚ
mbase_lastÚmbase_slr5   r5   r6   Útest_get0   sF   

ÿþÿÿzTestMRecords.test_getc                 C   s  | 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 ƒ tt	 
|d ¡dgd ƒ t|jdgd ƒ t|j ¡ tjg d	¢td
�ƒ t|_t|jjdgd ƒ t|jjdgd ƒ tt	 
|d ¡dgd ƒ tt	 |d ¡dgd ƒ t|j ¡ tjg d¢td
�ƒ | 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¢|d
�}| t¡}t	jg d¢g d¢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   rE   rE   rF   r9   r%   ó   N/A)©r   r   r   rF   rH   rH   rF   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:   r-   r	   Ú
fill_valuer"   r1   r   r/   ÚmaÚgetmaskarrayr.   r<   r>   r?   Úboolr   r%   r)   Úgetdatar#   Úintr   rL   )r2   r,   r3   ÚndtypeÚdataÚrdataÚvalr5   r5   r6   Útest_set_fieldsX   sP   



ûÿ

ûÿ
zTestMRecords.test_set_fieldsc                 C   sž   | j  ¡ }| t¡}t|d d< t|jg d¢ƒ t|jjg d¢ƒ tt	 
d¡t	j d¡gdtfdtfgd�}t|d d< t|jg d¢ƒ t|jjg d	¢ƒ d S )
Nr"   éþÿÿÿr   rJ   r   r#   r9   )r   r   r   r   r   )r   r   r   r   r   )r,   r:   r-   r	   r   r   r"   r/   r   r>   ÚarangeÚrandomÚrandrW   Úfloat©r2   r,   r3   r5   r5   r6   Útest_set_fields_mask�   s   

ÿz!TestMRecords.test_set_fields_maskc                 C   sÄ   | j  ¡ }| t¡}t|_tt |d ¡dgd ƒ t|d j	|d j	ƒ t|d j	|d j	ƒ t|j	 
¡ tjdgd td�ƒ t|_tt |d ¡dgd ƒ t|j	 
¡ tjd	gd td�ƒ d S )
Nr#   r   r   r"   r%   ©r   r   r   r9   r   rE   )r,   r:   r-   r	   r   r)   r   rS   rT   r/   r<   r>   r?   rU   r   rb   r5   r5   r6   Útest_set_maskž   s   


ÿ
ÿzTestMRecords.test_set_maskc                 C   s˜   | 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:   r-   r	   r)   r   r"   r#   r%   rb   r5   r5   r6   Útest_set_mask_fromarray®   s   



z$TestMRecords.test_set_mask_fromarrayc                 C   s¶   | j  ¡  t¡}tjg d¢dtfdtfdtfgd�}||_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   rh   ©r   r   r   ri   rE   r"   r#   r%   r9   )r   r   r   r   r   )r   r   r   r   r   F)r,   r:   r-   r	   r>   r?   rU   r)   r   r"   r#   r%   Ú	fieldmask)r2   r3   Únmaskr5   r5   r6   Útest_set_mask_fromfields¼   s   þz%TestMRecords.test_set_mask_fromfieldsc                 C   s^  | j  ¡ }| t¡ ¡ }t|d< t|j ¡ tj	g d¢t
d�ƒ 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 )Nr]   )rE   rd   rE   rd   rd   r9   rJ   ©r   r   r   r   )r   r   r   r   r   rf   )ç      @rn   r   r   r   )ó   5ro   r   r    r!   r   )r   r   r   r   r   r   r   )r,   r:   r-   r	   r   r   r/   r<   r>   r?   rU   r.   r"   r1   r#   r%   rb   r5   r5   r6   Útest_set_elementsÍ   s<   

ÿþÿÿzTestMRecords.test_set_elementsc              	   C   sð   | j  ¡ }| t¡}| ¡  zAd|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
ƒ W tdƒ‚ tyX   Y n ty_   ‚ w zd|dd …< W td	ƒ‚ ttfyw   Y d S w )
Nrm   r]   rI   )r   r   r   r   r   )r   r   r   ro   r!   r'   z)Flexible hard masks should be supported !r   z.Should have expected a readable buffer object!)r,   r:   r-   r	   Úharden_maskr   r"   r1   r#   r%   r/   ÚNotImplementedErrorÚAssertionErrorÚ	ExceptionÚ	TypeErrorrb   r5   r5   r6   Útest_setslices_hardmaskí   s2   

ÿúÿýÿz$TestMRecords.test_setslices_hardmaskc                 C   sž   | j  ¡ }| t¡}| ¡  t|jƒ t|_t	|j
|j
ƒ | ¡  t|j ƒ t|_t	|j
t |j|j¡ƒ tt |d j
¡tu ƒ t|d j
|d j
ƒ d S )Nr#   r"   )r,   r:   r-   r	   rq   r   Ú	_hardmaskr   r)   r   r/   Úsoften_maskrS   Úmake_mask_noneÚshaper*   Ú	make_maskr   rb   r5   r5   r6   Útest_hardmask
  s   


ÿzTestMRecords.test_hardmaskc                 C   s~   | j  ¡ }| t¡}tdtjd ƒD ]*}tj||d�}t |¡}t	|j
|j
ƒ t|j|jƒ t	|j|jƒ t|j|jƒ qd S )Nr   r   )Úprotocol)r,   r:   r-   r	   ÚrangeÚpickleÚHIGHEST_PROTOCOLÚdumpsÚloadsr   r*   r   r1   r/   )r2   r,   ÚmrecÚprotoÚ_Úmrec_r5   r5   r6   Útest_pickling  s   


úzTestMRecords.test_picklingc                 C   sÂ   t jg d¢g d¢td�}t jg d¢g d¢td�}t jg d¢g d¢dd�}dtfdtfd	g}t|||g|d
d�}| ¡ }t|d tjdtd�ƒ t|d tjdtd�ƒ t|d tjddd�ƒ d S )N©r   r   r   rH   r(   ©r   r   r   ©ÚoneÚtwoÚthreer&   r"   r#   r$   ©éŸ† ç    ðiø@rD   ©r*   rR   )r   r   r�   r9   )r   r   r�   r%   )r‹   rŒ   rD   )rS   r?   rW   ra   r   Úfilledr   r>   )r2   Ú_aÚ_bÚ_cÚddtyperƒ   Ú
mrecfilledr5   r5   r6   Útest_filled'  s   ÿÿÿzTestMRecords.test_filledc                 C   s„   t jg d¢g d¢td�}t jg d¢g d¢td�}t jg d¢g d¢dd�}dtfd	tfd
g}t|||g|dd�}t| ¡ g d¢ƒ d S )Nrˆ   rH   r(   r‰   rŠ   rP   r&   r"   r#   r$   rŽ   r‘   ))r   r   N)r   r   r   )NNr   )rS   r?   rW   ra   r   r   r<   )r2   r“   r”   r•   r–   rƒ   r5   r5   r6   Útest_tolist6  s   ÿÿzTestMRecords.test_tolistc                 C   s0   t dtdd�}d|d d< t|d d dƒ d S )Nr   r,   )ÚformatsÚnamesrM   r   )r	   ra   r   )r2   Úxr5   r5   r6   Útest_withnamesC  s   zTestMRecords.test_withnamesc                 C   sº   t ddtfddtfgd�}t|d< t| d¡ ¡ dƒ t ddgd�}t|d< t| d¡ ¡ tjd	|j	d� ¡ ƒ t d
dd�}t|d< d|d< | d¡ t
| d¡tjddg|j	d�ƒ d S )Nr   Úi)Úsr&   Úfr9   r   )r   ó   1g      ð?)Úf0z<f8)r   r   )r   r   zi4, (2,3)float, floatrd   rE   )r	   rW   ra   r   r   r’   r=   r>   r?   r*   r   )r2   ÚeasyÚsoloÚmultr5   r5   r6   Útest_exotic_formatsI  s"   ÿ


ÿÿz TestMRecords.test_exotic_formatsN)Ú__name__Ú
__module__Ú__qualname__ÚilistÚflistÚslistrW   ra   r–   r)   rS   r?   ÚlistÚzipr,   r7   rC   r\   rc   re   rg   rl   rp   rv   r|   r‡   r˜   r™   r�   r¦   r5   r5   r5   r6   r      s,    (7 r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestViewc                 C   sn   t  d¡t j d¡}}dtfdtfg}t jtt||ƒƒ|d�}t||g|dd�}d|j	d< ||||f| _
d S )	NrM   r"   r#   r9   )g      "Àg     ÀXÀr‘   )FTr   )r>   r^   r_   r`   ra   r?   r­   r®   r   r)   rY   )r2   r"   r#   rX   Úarrrƒ   r5   r5   r6   Úsetup_method_  s   
zTestView.setup_methodc                 C   s@   | j \}}}}| ¡ }tt|tƒƒ t||ƒ t|j|jƒ d S )N)rY   r-   r   r0   r   r   r/   )r2   rƒ   r"   r#   r°   Útestr5   r5   r6   Útest_view_by_itselfh  s
   
zTestView.test_view_by_itselfc                 C   sd   | j \}}}}tdf}| |¡}tt|tjƒƒ t|tj	t
t||ƒƒtd�ƒ t|d tju ƒ d S )Nr   r9   )r   r   )rY   ra   r-   r   r0   rS   ÚMaskedArrayr   r>   r?   r­   r®   r   )r2   rƒ   r"   r#   r°   Úntyper²   r5   r5   r6   Útest_view_simple_dtypeo  s   
zTestView.test_view_simple_dtypec                 C   s~   | j \}}}}dtfdtfg}| |¡}tt|tƒƒ t|| |¡ƒ t|d d tu ƒ t|j	t
 	|¡ƒ t|jd u ƒ d S )NÚAÚBr   )rY   ra   r-   r   r0   r   r   r   r   r*   r>   Ú_fill_value)r2   rƒ   r"   r#   r°   Úalttyper²   r5   r5   r6   Útest_view_flexible_typew  s   
z TestView.test_view_flexible_typeN)r§   r¨   r©   r±   r³   r¶   r»   r5   r5   r5   r6   r¯   ]  s
    	r¯   c                   @   sÄ   e Zd Zejg d¢g d¢ed�Zejg d¢g d¢ed�Zejg d¢g d¢dd�Z	defdefd	gZ
eeee	ge
d
d�Zeejeje	jfe
d�Zeee
fZdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestMRecordsImportrˆ   rH   r(   r‰   )r   r   r   r&   r"   r#   r$   )s   99999s   99999.rG   r‘   r9   c           
      C   s¶   t jg d¢g d¢td�}t jg d¢g d¢td�}t jg d¢g d¢dd�}| j\}}}td|||fƒD ]\}}tt||ƒj|jƒ q2t jg d¢g d	¢t	d�}	t
t|	|jd
�|d ƒ d S )Nrˆ   rH   r(   r‰   rŠ   r&   r+   )r   r   r‹   rP   r9   r   )rS   r?   rW   ra   rY   r®   r   r;   r/   Úobjectr   r   r*   )
r2   r“   r”   r•   rƒ   Únrecr…   r    ÚlÚ_xr5   r5   r6   Útest_fromarrays�  s   z"TestMRecordsImport.test_fromarraysc                 C   s   | j \}}}g d¢}t|dd�}t|dd�}t||ƒ t|ƒ}t|j|jƒ |jjD ]}tt||ƒt|j|ƒƒ q*t| 	¡ dd�}t|jdt
fdtfdgƒ tdd	ƒD ]\}	}
tt||	ƒt|j|
ƒƒ qSt|ƒ}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+   )rY   Úrecfromrecordsr   r   r   r*   r›   r;   r1   r<   rW   ra   r®   r’   r/   )r2   rƒ   r¾   r–   ÚpalistÚpaÚmpaÚ_mrecr4   r    Únr5   r5   r6   Útest_fromrecords›  s"   
z#TestMRecordsImport.test_fromrecordsc                 C   sð   | j \}}}t| ¡ |g d¢d�}t|j|jƒ t|j ¡ g d¢ƒ t| ¡ |dd�}t|j|jƒ t|j ¡ g d¢ƒ t| ¡ ||jd�}t|j|jƒ t|j ¡ |j ¡ ƒ t| ¡ ||j ¡ d�}t|j|jƒ t|j ¡ |j ¡ ƒ d S )Nrh   )r*   r)   )rE   rd   rE   T)rd   rd   rd   )rY   r   r<   r   r1   r   r/   )r2   rƒ   r¾   r–   rÌ   r5   r5   r6   Útest_fromrecords_wmaskµ  s   
ÿz)TestMRecordsImport.test_fromrecords_wmaskc              	   C   s°   d}t ƒ �)}t|dƒ�}| |¡ W d   ƒ n1 sw   Y  t|ddd�}W d   ƒ n1 s1w   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   r0   r   r   ÚFÚEr/   ÚC)r2   ÚfcontentÚpathr    Úmrectxtr5   r5   r6   Útest_fromtextfileÊ  s   ÿÿýz$TestMRecordsImport.test_fromtextfilec                 C   sP   | j \}}}g d¢g d¢}}t|tj||d�ƒ}t|j|ƒ t|jj|ƒ d S )N)éd   éÈ   i,  rP   rQ   )rY   r   rS   r?   r   Úf3r/   )r2   rƒ   r¾   r–   ÚdÚmr5   r5   r6   Útest_addfieldÝ  s
   z TestMRecordsImport.test_addfieldN)r§   r¨   r©   rS   r?   rW   r“   ra   r”   r•   r–   r   rƒ   Úrecfromarraysr1   r¾   rY   rÁ   rÎ   rÏ   rÝ   rã   r5   r5   r5   r6   r¼   ƒ  s"    
ÿÿ
r¼   c                  C   s0   t jddgddgdtfdtfgd�} | d  d S )	N)r   Ú2)r   Ú4)r   r   )r   r   r"   r#   r(   r   )rS   Úmasked_arrayrW   r½   )Úyr5   r5   r6   Ú#test_record_array_with_object_fieldæ  s   ýré   )Ú__doc__r   Únumpyr>   Únumpy.marS   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é   r5   r5   r5   r6   Ú<module>   s      D&c