a
    ç´«já«  ã                   @   s.  d dl Z d dlZd dlmZ d dl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mZmZmZmZmZmZmZmZmZ ejjjZejjj Z ejjj!Z!ejjj"Z#ejjj$Z%G dd„ dƒZ&G dd	„ d	ƒZ'G d
d„ dƒZ(G dd„ dƒZ)G dd„ dƒZ*G dd„ dƒZ+G dd„ dƒZ,G dd„ dƒZ-dS )é    N)ÚMaskedRecords)Úassert_equal)Úassert_Úassert_raises)Údrop_fieldsÚrename_fieldsÚget_fieldstructureÚrecursive_fill_fieldsÚfind_duplicatesÚmerge_arraysÚappend_fieldsÚstack_arraysÚjoin_byÚrepack_fieldsÚunstructured_to_structuredÚstructured_to_unstructuredÚapply_along_fieldsÚrequire_fieldsÚassign_fields_by_namec                   @   st   e Z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 )ÚTestRecFunctionsc                 C   sr   t  ddg¡}t  g d¢¡}t jddgddtfgd�}t jd	d
gdtfddtfdtfgfgd�}||||f| _d S ©Né   é   ©é
   é   é   ©ÚAç      ð?©ÚBç       @©r   z|S3r!   ©Údtype©r   ©r   ç      @©é   ©é   ç      @ÚaÚbÚbaÚbb©ÚnpÚarrayÚfloatÚintÚdata©ÚselfÚxÚyÚzÚw© r>   ú`/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/lib/tests/test_recfunctions.pyÚsetup_method   s    

ÿ
ÿzTestRecFunctions.setup_methodc                 C   sH  | j \}}}}t||fdd�}t|t dtfdtfg¡ƒ t||fdd�}t|t dtfdtfg¡ƒ t||fdd�}t|t dtfddtfg¡ƒ t||fdd�}t|t dtfdddtfgfg¡ƒ t||fdd�}t|t dtfdtfdtfd	tfg¡ƒ t||fdd�}t|t dtfddtfd
dtfd	tfgfgfg¡ƒ d S )NT©ÚflattenÚ Fr#   r!   r.   r0   r1   r/   )r7   Ú	zip_descrr   r3   r%   r6   r5   )r9   r=   r:   r;   r<   Útestr>   r>   r?   Útest_zip_descr    sD    ÿÿÿ
ÿÿ
þÿ
ÿÿÿzTestRecFunctions.test_zip_descrc                 C   s&  t jddgdtfddtfdtfgfgd�}t|dƒ}t jdd	gddtfdtfgfgd�}t||ƒ t|dƒ}t jd
dgdtfgd�}t||ƒ t|dgƒ}t jddgdtfddtfgfgd�}t||ƒ t|ddgƒ}t jd
dgdtfgd�}t||ƒ t|ddgƒ}t jddgg d�}t||ƒ d S )Nr&   r)   r.   r/   r0   r1   r$   )r'   )r+   ©r   ©r*   )r   )r(   )r*   )r-   r>   )r3   r4   r6   r5   r   r   ©r9   r.   rE   Úcontrolr>   r>   r?   Útest_drop_fieldsA   s,    
ÿ

ÿ



ÿ

z!TestRecFunctions.test_drop_fieldsc                 C   sš   t jddddgffddddgffgd	tfd
dtfdtdffgfgd�}t|dddœƒ}dtfd
dtfdtdffgfg}| |¡}t|j|ƒ t||ƒ d S )Nr   r   r(   ç      >@r*   r,   r-   g      N@r.   r/   r0   r1   r$   r   ÚBB)r.   r1   )r3   r4   r6   r5   r   Úviewr   r%   )r9   r.   rE   ZnewdtyperJ   r>   r>   r?   Útest_rename_fieldsa   s    "ÿÿ 
z#TestRecFunctions.test_rename_fieldsc                 C   s    t  ddtfg¡}t|ƒ}t|dƒ t  dtfddtfdtfgfg¡}t|ƒ}t|dƒ t  dtfdg fg¡}t|ƒ}t|d	ƒ t  g ¡}t|ƒ}t|d
ƒ d S )Nr#   r!   ©r   r!   r.   r/   r0   r1   )r.   )r/   )r0   r1   )r.   )r/   r>   r>   )r3   r%   r5   Ú	get_namesr   r6   ©r9   ÚndtyperE   r>   r>   r?   Útest_get_namesl   s    
"


zTestRecFunctions.test_get_namesc                 C   s    t  ddtfg¡}t|ƒ}t|dƒ t  dtfddtfdtfgfg¡}t|ƒ}t|dƒ t  dtfdg fg¡}t|ƒ}t|d	ƒ t  g ¡}t|ƒ}t|d
ƒ d S )Nr#   r!   rP   r.   r/   r0   r1   )r.   r/   r0   r1   ©r.   r/   r>   )r3   r%   r5   Úget_names_flatr   r6   rR   r>   r>   r?   Útest_get_names_flat~   s    
"


z$TestRecFunctions.test_get_names_flatc              	   C   sæ   t  ddtfg¡}t|ƒ}t|g g dœƒ t  dtfddtfdgfg¡}t|ƒ}t|g g dgdgdœƒ t  dtfddtfdd	tfd
tfgfgfg¡}t|ƒ}g g dgdgddgddgdœ}t||ƒ t  g ¡}t|ƒ}t|i ƒ d S )Nr#   r!   rP   r   ÚBA©rM   z|S1)r   r!   rX   rM   rM   ÚBBAÚBBB)r   r!   rX   rM   rZ   r[   )r3   r%   r5   r   r   r6   )r9   rS   rE   rJ   r>   r>   r?   Útest_get_fieldstructure�   s&    
ÿÿÿ

z(TestRecFunctions.test_get_fieldstructurec                 C   sf  t jg d¢g d¢dtfddtfdgfgd�}t|dd	d
�}ddg}tt|d ƒ|ƒ t|d ||d  ƒ t|dd	d�}g d¢}tt|d ƒ|ƒ t|d ||d  ƒ t|dd	d�}g d¢}tt|d ƒ|ƒ t|d ||d  ƒ t|dd	d�}g d¢}tt|d ƒ|ƒ t|d ||d  ƒ t|dd	d�}g d¢}tt|d ƒ|ƒ t|d ||d  ƒ d S )N)©r   ©r"   r!   )r   r^   r]   )r   )r   r!   r]   )r   )r"   ÚC)©r   ©r   r   r`   r`   r`   )r   ra   )r   ©r   r   r   r!   rX   rY   ©Úmaskr%   FT©Z
ignoremaskÚreturn_indexr   r   éÿÿÿÿ)Úkeyrf   )r   r   r   é   r,   )r   r   r   r*   rM   )r   r   r   ri   r*   )Úmar4   r6   r5   r
   r   ÚsortedrI   r>   r>   r?   Útest_find_duplicates«   s0    
üz%TestRecFunctions.test_find_duplicatesc                 C   s¦   dt fg}tjg d¢g d¢d� |¡}t|ddd�}g d¢}tt|d ƒ|ƒ t|d	 ||d  ƒ t|d
dd�}g d¢}tt|d ƒ|ƒ t|d	 ||d  ƒ d S )Nr.   )r   r   r   r   r   ri   ri   )r   r   r   r   r   r   r   ©rd   Tre   )r   r   ri   r*   rg   r   F)r   r   r   ri   r*   é   )r6   rj   r4   rN   r
   r   rk   )r9   rS   r.   rE   rJ   r>   r>   r?   Útest_find_duplicates_ignoremaskÌ   s    

ÿÿz0TestRecFunctions.test_find_duplicates_ignoremaskc                 C   s~   t jddd�}t jd|d�}tt|ƒt  d¡ƒ tt|ƒjdƒ ttt|ƒdd�|ƒ t  t j|f¡}tt|ƒjt ju ƒ d S )Nzu1,f4,i8T©Úalignr   r$   é   )	r3   r%   Úzerosr   r   ÚitemsizeÚrecordr   Útype)r9   Údtr.   r>   r>   r?   Útest_repack_fieldsÛ   s    z#TestRecFunctions.test_repack_fieldsc                 C   sÀ  t jdg d¢d�}t|ƒ}t|t jddd�ƒ t jg d¢g d¢d�}t jt|dd	g ƒd
d�}t|t  g d¢¡ƒ t jt|dg ƒd
d�}t|t  g d¢¡ƒ t  d¡ d¡}t||j	ƒ}t jddddgfddddgfddddgfddddgfgdd d!d"gfd#gd�}t||ƒ t jg d¢g d¢d�}tt
t j|ƒt  g d$¢¡ƒ tt
t j|dd	g ƒt  g d¢¡ƒ t jg d¢g d%¢d�}t|ƒ}t||j	ƒ}	tt  ||¡ƒ tt  |	|¡ƒ t|d	dg ƒ}
t|
dd&gd'dgd(d'gd)dggƒ tt  |
|¡ƒ t jd&d*d+gddgd,d'ggfd-d.dgd(d)gd/d0ggfgg d1¢d�}t|ƒ}t||j	ƒ}	tt  ||¡ƒ tt  |	|¡ƒ |d d d
… }t|ƒ}t|g d2¢g d3¢gƒ |g d4¢ }t|ƒ}
t|
g d5¢g d6¢gƒ t jd&d*d+gddgd,d'ggd7fd-d.dgd(d)gd/d0ggd8fgg d9¢d�}t|g d:¢ ƒ}tt  ||¡ƒ t|g d3¢g d2¢gƒ t  	dtfd;tfg¡}t  	d<|fd |fd=|fg¡}t  d|¡}t|td�}t|t jd>td�ƒ d?d@„ }dAdB„ }dSdCdD„}|||t jt jƒd+ƒƒ}t||ƒdEt j|fƒ |||t jd*ƒd*ƒƒ}t||ƒdFt j|fƒ |t jƒ}t||ƒdGt j|fƒ |t j||t jd*ƒd*ƒƒ}t||ƒdHt j|fƒ |ƒ }tttt  d+|¡ƒ tttt  d+|¡t jd� tttt jdIt jd�ƒ t jdJdKgddLgd�}t|dMdN�}| t j¡}t|dOdN�}t|dMdN�}	tt  ||¡ƒ tt|ƒt ju ƒ tt|	ƒt ju ƒ t||ƒ t|	|ƒ t j|dP dQ|j	|jdR�}||d d …< t|dOdN�}t|dMdN�}	tt  ||¡ƒ tt|ƒt ju ƒ tt|	ƒt ju ƒ t||ƒ t|	|ƒ d S )TNr*   )©r.   Úi4)r/   zf4,u2)ÚcÚf4r   r$   )r*   r,   Úf8))r   r   r,   )r*   r,   é   )r~   é   é   )r   r€   é   )©r:   rz   )r;   r|   )r<   r}   r:   r<   rg   )Zaxis)r(   g      @ç      "@ç      &@)r   ç      @ç      @ç      $@r   r   )r   r   r(   r…   r,   )r-   r~   ç       @rƒ   r   )r„   r�   g      *@g      ,@é   )g      0@é   g      2@g      3@ry   r/   )Úf0r|   )Úf1Úu2)r{   r|   ©r   )gUUUUUU@gUUUUUU@gUUUUUU!@r„   )r‚   )r;   rz   )r<   rz   r   r~   r€   r�   r   ri   rn   r   é	   rr   é   )©Úx0rz   ©Úx1)rz   r   ©Úx2)rz   ©r   r   )r   r�   r   r€   r�   rr   r�   )r   r   ri   r*   r,   rn   r~   )r–   r”   r’   )r*   r,   rn   r~   r   ri   r   )r€   r�   rr   r�   r�   r   r   é    é@   )r‘   r“   r•   )ZignoredÚu1)r’   r”   r–   r;   r.   r{   )r   rn   c                 S   s   t  | |f¡S ©N)r3   r%   )rw   Úshaper>   r>   r?   Úsubarray;  s    zBTestRecFunctions.test_structured_to_unstructured.<locals>.subarrayc                  W   s   t  dd„ t| ƒD ƒ¡S )Nc                 S   s   g | ]\}}d   |¡|f‘qS )zx{})Úformat)Ú.0Úirw   r>   r>   r?   Ú
<listcomp>?  ó    zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r3   r%   Ú	enumerate)Údtsr>   r>   r?   Ú
structured>  s    zDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredc                 S   s2   t  d| ¡}t||d�}t|| ƒ}|j|j|jfS )Nr>   r$   )r3   rs   r   r   rœ   r%   )rw   r%   ÚarrÚretZbackarrr>   r>   r?   ÚinspectA  s    
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rn   rH   rG   )r,   )ri   r   ©r   r   ©ri   r*   )r/   rz   T)ÚcopyFÚmemmapzw+)Úmoder%   rœ   )N)r3   rs   r   r   r4   ÚmeanÚarangeZreshaper   r%   r   r   Zshares_memoryr6   Zint32r   Ú
ValueErrorÚNotImplementedErrorrN   Zrecarrayrv   r¬   rœ   )r9   Ztmp_pathr.   Úoutr/   r{   ZwantÚdÚddZdddZdd_attrib_revZd_revZdd_revZd_attrib_revÚpointÚtriangler¦   Úresr�   r¥   r¨   rw   Zd_plainZdd_expectedr>   r>   r?   Útest_structured_to_unstructuredç   sì    
ÿý
þü

ÿÿÿ
ÿ"ÿþ
ÿ
ÿÿþ
ÿ

ÿÿ


ý
z0TestRecFunctions.test_structured_to_unstructuredc                 C   sJ   t  d¡}dtfdtfg}t  |¡}t||d�}t||d�}t||ƒ d S )N)r   r   r:   r;   r$   )r3   rs   r5   r%   r   r   )r9   r.   Ztest_dtype_argsZ
test_dtypeZfield1Zfield2r>   r>   r?   Útest_unstructured_to_structuredy  s    

z0TestRecFunctions.test_unstructured_to_structuredc                 C   s\  t jdg d¢d�}ddg}tt||ƒt  d|¡ƒ t jddg|d�}t||dd	� t|t jd
dg|jd�ƒ t||ƒ t|t jddg|jd�ƒ t jddddgfgd�}ddgfg}tt||ƒt  d|¡ƒ t jddg|d�}t||dd	� t|t jddg|jd�ƒ t||ƒ t|t jddg|jd�ƒ t  d¡t  d¡ }}t||ƒ t|d dƒ d S )Nr   )ry   ©r/   r}   ©r{   rš   r$   ©r/   r|   r»   r©   rª   F)Zzero_unassigned)r   r   r   )r   ri   r*   )r   r   r   )r   ri   r*   r.   rº   )rŽ   )©ri   )r©   )©r   ri   ))r   r   ))r   ri   ri   r   r>   )r3   Úonesr   r   r4   r   r%   )r9   r.   Znewdtr/   r>   r>   r?   Útest_field_assignment_by_name‚  s&    


z.TestRecFunctions.test_field_assignment_by_nameN)Ú__name__Ú
__module__Ú__qualname__r@   rF   rK   rO   rT   rW   r\   rl   ro   rx   r¸   r¹   rÀ   r>   r>   r>   r?   r      s   	! ! 	r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestRecursiveFillFieldsc                 C   sd   t jddgdtfdtfgd�}t jd|jd�}t||ƒ}t jg d¢dtfdtfgd�}t||ƒ d S )N©r   r‡   ©r   ç      4@r   r!   r$   r½   ©rÅ   rÆ   )r   ç        )r3   r4   r6   r5   rs   r%   r	   r   ©r9   r.   r/   rE   rJ   r>   r>   r?   Útest_simple_flexible   s    

ÿz,TestRecursiveFillFields.test_simple_flexiblec                 C   sp   t jddgddgdtfdtfgd�}t jd|jd	�}t||ƒ}t jg d
¢g d¢dtfdtfgd�}t||ƒ d S )NrÅ   rÆ   ©r   r   rb   r   r!   rc   r½   r$   rÈ   )rÌ   rb   ra   )rj   r4   r6   r5   rs   r%   r	   r   rÊ   r>   r>   r?   Útest_masked_flexible©  s    ÿ

þz,TestRecursiveFillFields.test_masked_flexibleN)rÁ   rÂ   rÃ   rË   rÍ   r>   r>   r>   r?   rÄ   ž  s   	rÄ   c                   @   s\   e Z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 )ÚTestMergeArraysc                 C   sx   t  ddg¡}t  g d¢¡}t jddgddtfgd�}t jd	d
gdtfddtfdtfdg fgfgd�}||||f| _d S )Nr   r   r   r   r    r#   r!   r$   ©r   )r   r(   r>   ©r*   )r,   r-   r>   r.   r/   r0   r1   Úbcr2   r8   r>   r>   r?   r@   ¸  s    ÿ þzTestMergeArrays.setup_methodc                 C   s|   | j \}}}}t|ƒ}tjddgdtfgd�}t||ƒ t|fƒ}t||ƒ t|dd�}t||ƒ t|dd�}t||ƒ d S )NrG   rŽ   r‹   r$   FrA   T)r7   r   r3   r4   r6   r   ©r9   Ú_r:   r<   rE   rJ   r>   r>   r?   Ú	test_soloÂ  s    



zTestMergeArrays.test_soloc                 C   s^   | j d }t|dd�}t||ƒ t|dd�}tjddgdtfdtfd	tfgd
�}t||ƒ d S )Nr   FrA   T)r   r   r(   )r*   r,   r-   r.   r0   r1   r$   )r7   r   r   r3   r4   r6   r5   ©r9   r=   rE   rJ   r>   r>   r?   Útest_solo_w_flattenÑ  s    


ÿz#TestMergeArrays.test_solo_w_flattenc                 C   s–   | j \}}}}t||fdd�}tjg d¢dtfdtfgd�}t||ƒ t||fdd�}tjg d¢g d¢dtfdtfgd	�}t||ƒ t|j|jƒ d S )
NF©Úusemask©)r   r   )r   r   )rg   r   r‹   rŒ   r$   T©ra   ra   rb   rc   )r7   r   r3   r4   r6   r   rj   rd   ©r9   rÓ   r:   r;   rE   rJ   r>   r>   r?   Útest_standardÜ  s    
ÿ

þ
zTestMergeArrays.test_standardc                 C   sŒ   | j \}}}}t||fdd�}tjddgdtfddtfgd�}t||ƒ t||fd	d�}tjd
dgdtfdddtfgfgd�}t||ƒ d S )NTrA   )r   r   r   )r   r!   r"   r‹   r#   r!   r$   F)r   r   )r   r    rŒ   ©r7   r   r3   r4   r6   r5   r   rÒ   r>   r>   r?   Útest_flattenì  s    
ÿ

ÿÿzTestMergeArrays.test_flattenc                 C   s°   | j \}}}}t||fdd�}tjddgdtfdtfdtfdtfgd	�}t||ƒ t||fd
d�}dtfddtfddtfdtfdg fgfgfg}tjddg|d	�}t||ƒ d S )NTrA   )r   r   r   r(   )r   r*   r,   r-   r‹   r.   r0   r1   r$   FrŒ   r/   rÑ   )r   rÏ   )r   rÐ   rÝ   )r9   r=   r:   rÓ   rE   rJ   Zcontroldtyper>   r>   r?   Útest_flatten_wflexibleú  s$    
ÿÿ
ÿÿ
ÿz&TestMergeArrays.test_flatten_wflexiblec                 C   s�   | j \}}}}tjg d¢g d¢d�}t||fdd�}tjg d¢g d¢dtfd	tfgd
�}t||ƒ t||fddd�}t||ƒ tt|tƒƒ d S )N©r   r   ri   ©r   r   r   rm   Tr×   )©r   r   r—   )rg   ri   )rÌ   ra   rb   r‹   rŒ   rc   )rØ   Z
asrecarray)	r7   rj   r4   r   r6   r   r   Ú
isinstancer   )r9   rÓ   r:   ZmxrE   rJ   r>   r>   r?   Útest_wmasked_arrays  s    
þ

z#TestMergeArrays.test_wmasked_arraysc                 C   s^   t t ddg¡ dtfg¡t g d¢¡fƒ}tjg d¢g d¢dtfdtfgd�}t||ƒ d S )	Nr   r   r.   )r‡   rÇ   rL   )rÅ   rÆ   )rg   rL   rÚ   rŒ   rc   )r   r3   r4   rN   r6   rj   r5   r   )r9   rE   rJ   r>   r>   r?   Útest_w_singlefield  s    ÿ
þz"TestMergeArrays.test_w_singlefieldc                 C   sP   | j d }t|t g d¢¡ dtfg¡fƒ tjg d¢ddtfdtfgd� d S )Nrg   r   r_   )©r   r   r   ©r!   r"   r   )z-1rg   r   r#   r!   r$   )r7   r   r3   r4   rN   r6   r5   )r9   r<   r>   r>   r?   Útest_w_shorter_flex!  s
    
	"
ÿz#TestMergeArrays.test_w_shorter_flexc                 C   sd   | j \}}}}t|d |d |d fdd�}tjdgdtfdtfddd	tfgfgd
�}t||ƒ d S )Nr   Fr×   )r   r   ©r   r   r‹   rŒ   Úf2r#   r!   r$   rÝ   )r9   rÓ   r:   r;   r<   rE   rJ   r>   r>   r?   Útest_singlerecord0  s    þÿz!TestMergeArrays.test_singlerecordN)rÁ   rÂ   rÃ   r@   rÔ   rÖ   rÜ   rÞ   rß   rä   rå   rè   rë   r>   r>   r>   r?   rÎ   µ  s   
	rÎ   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestAppendFieldsc                 C   sr   t  ddg¡}t  g d¢¡}t jddgddtfgd�}t jd	d
gdtfddtfdtfgfgd�}||||f| _d S r   r2   r8   r>   r>   r?   r@   =  s    ÿ
ÿzTestAppendFields.setup_methodc                 C   sR   | j \}}}}t|dg d¢d�}tjg d¢g d¢dtfdtfgd�}t||ƒ d S )Nr   r   ©r7   rÙ   rÚ   r‹   rc   ©r7   r   rj   r4   r6   r   ©r9   rÓ   r:   rE   rJ   r>   r>   r?   Útest_append_singleF  s    
þz#TestAppendFields.test_append_singlec                 C   s`   | j \}}}}t|dg d¢ddggd�}tjg d¢g d¢dtfd	tfd
tfgd�}t||ƒ d S )NrP   r   éd   éÈ   rí   ))r   r   rñ   )r   r   rò   )rg   r   rg   )©r   r   r   ró   )r   r   r   r‹   r   r!   rc   rî   rï   r>   r>   r?   Útest_append_doubleO  s    
þz#TestAppendFields.test_append_doublec                 C   sP   | j d }t|dg d¢d�}tjg d¢g d¢ddtfdtfgd	�}t||ƒ d S )
Nrg   r_   r   rí   )ræ   rç   )rg   ç      ð¿r   )ró   ró   ©r   r   r   r#   r!   rc   )r7   r   rj   r4   r5   r6   r   )r9   r<   rE   rJ   r>   r>   r?   Útest_append_on_flexX  s    

þz$TestAppendFields.test_append_on_flexc                 C   s`   | j d }t|dg d¢d�}tjg d¢g d¢dtfdd	tfd
tfgfdtfgd�}t||ƒ d S )Nr   r_   r   rí   ))r   r'   r   )r*   r+   r   )rg   )rg   rõ   r   )©r   ra   r   rø   )r   râ   r   r.   r/   r0   r1   rc   )r7   r   rj   r4   r6   r5   r   rÕ   r>   r>   r?   Útest_append_on_nesteda  s    

þûz&TestAppendFields.test_append_on_nestedN)rÁ   rÂ   rÃ   r@   rð   rô   r÷   rù   r>   r>   r>   r?   rì   :  s
   				rì   c                   @   sT   e Z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 )ÚTestStackArraysc                 C   sr   t  ddg¡}t  g d¢¡}t jddgddtfgd�}t jd	d
gdtfddtfdtfgfgd�}||||f| _d S r   r2   r8   r>   r>   r?   r@   r  s    ÿ
ÿzTestStackArrays.setup_methodc                 C   sP   | j \}}}}t|fƒ}t||ƒ t||u ƒ t|ƒ}t||ƒ t||u ƒ d S r›   )r7   r   r   r   )r9   rÓ   r:   rE   r>   r>   r?   rÔ   {  s    


zTestStackArrays.test_soloc                 C   sŠ   | j \}}}}t||fdd�}t g d¢¡}t||ƒ t||fdd�}t g d¢¡}t||ƒ t||fdd�}t g d¢¡}t||ƒ d S )NFr×   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r7   r   r3   r4   r   rÛ   r>   r>   r?   Útest_unnamed_fields†  s    

z#TestStackArrays.test_unnamed_fieldsc                 C   sä   | j \}}}}t||fƒ}tjg d¢g d¢dtfddtfgd�}t||ƒ t|j|jƒ t||fƒ}tjg d¢g d¢ddtfd	tfgd�}t||ƒ t|j|jƒ t|||fƒ}tjg d
¢g d¢ddtfd	tfgd�}t||ƒ d S )N))r   rg   rg   )r   rg   rg   )rg   r   r   )rg   r!   r   )©r   r   r   rü   rá   rá   r‹   r#   r!   rc   )©r   r   rg   ©r!   r   rg   ©rg   rg   r   ©rg   rg   r   )©r   r   r   r  rö   rö   rê   )rý   rþ   rý   rþ   rÿ   r   )r  r  r  r  rö   rö   )r7   r   rj   r4   r6   r5   r   rd   rÒ   r>   r>   r?   Útest_unnamed_and_named_fields–  s*    
ü

ü

úz-TestStackArrays.test_unnamed_and_named_fieldsc                 C   sÒ   | j \}}}}tjg d¢ddtfdtfgd�}t||fƒ}tjg d¢ddtfdtfgg d¢d�}t||ƒ t|j|jƒ t|||fƒ}ddtfdtfd	tfg}tjg d
¢|g d¢d�}t||ƒ t|j|jƒ d S )N©©r.   r‡   ç      Y@©r/   rÇ   ç      i@©r{   rL   ç     Àr@r#   r!   r_   r$   )rý   rþ   r  r  r  ©r  r  ró   ró   ró   ©r%   rd   Zf3))r   r   rg   rg   )r!   r   rg   rg   )r.   r‡   r  rg   )r/   rÇ   r  rg   )r{   rL   r	  rg   )rg   rg   rg   r   )rg   rg   rg   r   )©r   r   r   r   r  ©r   r   r   r   r  r  ©r   r   r   r   r  )	r7   r3   r4   r5   r   rj   r   rd   r6   )r9   rÓ   r:   r<   ÚzzrE   rJ   rS   r>   r>   r?   Útest_matching_named_fields¶  s&    
ÿ
ü

û
z*TestStackArrays.test_matching_named_fieldsc                 C   sœ   | j \}}}}tjg d¢ddtfdtfgd�}dddd	d
œ}t||f|d�}tjg d¢ddtfdtfgg d¢d�}t||ƒ t|j |j ƒ t|j|jƒ d S )Nr  r#   r!   r_   r$   z???g     8�Àç    €‡ÃÀg    ðiøÀ)r   r!   r_   ÚD)Údefaults))r   r   r  )r!   r   r  r  r  r  r
  r  )r7   r3   r4   r5   r   rj   r   rd   )r9   rÓ   r<   r  r  rE   rJ   r>   r>   r?   Útest_defaultsÒ  s    
ÿ
ü
zTestStackArrays.test_defaultsc                 C   sÌ   dt fdtfdtfg}tjdgdg|d�}dt fdtfdtfg}tjdg|d�}tjddgdd	g|d�}t||fd
d�}t||ƒ t|j|jƒ tt	ƒ�  t||fdd� W d   ƒ n1 s¾0    Y  d S )Nr   r!   r_   rà   ©r   r   r   rc   ©r*   r,   rn   r$   ró   T)ZautoconvertF)
r6   Úboolr5   rj   r4   r   r   rd   r   Ú	TypeError)r9   Úadtyper.   Úbdtyper/   rJ   rE   r>   r>   r?   Útest_autoconversionã  s    ÿ

z#TestStackArrays.test_autoconversionc                 C   s�   dt fdtfdtfg}tjdgdg|d�}dt fdtfdtfg}tjdg|d�}t||fƒ}tjddgdd	g|d�}t||ƒ t|j|jƒ d S )
N)r.   r   )r/   r!   )r{   r_   rà   r  rc   r  r$   ró   )r6   r  r5   rj   r4   r   r   rd   )r9   r  r.   r  r/   rE   rJ   r>   r>   r?   Útest_checktitlesñ  s    ÿ
z TestStackArrays.test_checktitlesc              	   C   s  t jddgddtdfgd�}t jddgd	fd
dgdfddgdfgddtdfdtfgd�}t||fƒ}tjddgdfddgdfddgd	fddgdfddgdfgddgdfddgdfddgdfddgdfddgdfg|jd�}t|j|jƒ t||ƒ t|j|jƒ d S )Nré   )r!   r   r#   r!   rG   r$   r.   r‡   r  r/   rÇ   r  r{   rL   r	  r_   ó   Ar   r   ó   Br"   ó   aó   bó   cFT)r7   rd   r%   )r3   r4   r5   r   rj   r%   r   rd   )r9   r<   r  r·   Úexpectedr>   r>   r?   Útest_subdtypeý  s:    ÿþÿþ




û




ûò
zTestStackArrays.test_subdtypeN)rÁ   rÂ   rÃ   r@   rÔ   rû   r  r  r  r  r  r#  r>   r>   r>   r?   rú   p  s   	 rú   c                   @   sl   e Z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 )Ú
TestJoinByc              	   C   sŽ   t jttt  d¡t  dd¡t  dd¡ƒƒdtfdtfdtfgd	�| _t jttt  d
d¡t  dd¡t  dd¡ƒƒdtfdtfdtfgd	�| _d S )Nr   é2   é<   rñ   én   r.   r/   r{   r$   r,   r‰   éA   éK   r³   ©r3   r4   ÚlistÚzipr¯   r6   r.   r/   ©r9   r>   r>   r?   r@     s    
ÿþ
ÿþzTestJoinBy.setup_methodc                 C   s\   | j | j }}td||dd�}tjg d¢dtfdtfdtfdtfdtfgd	�}t||ƒ d S )
Nr.   Úinner)Újointype))r,   é7   r(  éi   rñ   )rn   é8   éB   éj   ée   )r~   é9   éC   ék   éf   )r   é:   éD   él   ég   )r�   é;   éE   ém   éh   Úb1Úb2r{   r³   r$   ©r.   r/   r   r3   r4   r6   r   rÊ   r>   r>   r?   Útest_inner_join$  s    
ÿýzTestJoinBy.test_inner_joinc                 C   sH   | j | j }}td||ƒ tjg d¢dtfdtfdtfdtfgd� d S )NrU   ))r,   r0  r1  rñ   )rn   r2  r4  r5  )r~   r6  r8  r9  )r   r:  r<  r=  )r�   r>  r@  rA  r.   r/   r{   r³   r$   )r.   r/   r   r3   r4   r6   ©r9   r.   r/   r>   r>   r?   Ú	test_join0  s    
ÿýzTestJoinBy.test_joinc                 C   s^   t jdgdtfgd�}t jdt  g d¢¡fgdtfdgd�}td||ƒ}t|| tj¡ƒ d S )NrG   rh   r$   r   rà   )ÚvalueZuint16ri   )r3   r4   r6   r   r   rN   rj   ZMaskedArray)r9   ZfooÚbarr·   r>   r>   r?   Útest_join_subdtypeD  s    ÿ
ÿzTestJoinBy.test_join_subdtypec                 C   sZ   | j | j }}td||dƒ}tjg d¢g d¢dtfdtfdtfdtfgd	�}t||ƒ d S )
NrU   Úouter)©r   r%  rñ   rg   ©r   é3   r5  rg   ©r   é4   r9  rg   ©ri   é5   r=  rg   ©r*   é6   rA  rg   ©r,   r0  r1  rg   )r,   r(  rg   rñ   ©rn   r2  r4  rg   )rn   r3  rg   r5  ©r~   r6  r8  rg   )r~   r7  rg   r9  ©r   r:  r<  rg   )r   r;  rg   r=  ©r�   r>  r@  rg   )r�   r?  rg   rA  )r   éF   rg   r1  )r€   éG   rg   r4  )r�   éH   rg   r8  )rr   éI   rg   r<  )r�   éJ   rg   r@  )r  r  r  r  r  r  ©r   r   r   r   r  r_  r  r_  r  r_  r  r_  r_  r_  r_  r_  r_  r.   r/   r{   r³   rc   ©r.   r/   r   rj   r4   r6   r   rÊ   r>   r>   r?   Útest_outer_joinM  s    


ÿìzTestJoinBy.test_outer_joinc                 C   sZ   | j | j }}td||dƒ}tjg d¢g d¢dtfdtfdtfdtfgd	�}t||ƒ d S )
NrU   Z	leftouter)
rL  rM  rO  rQ  rS  rU  rV  rW  rX  rY  )
r  r  r  r  r  r  r  r  r  r  r.   r/   r{   r³   rc   r`  rÊ   r>   r>   r?   Útest_leftouter_joini  s    
özTestJoinBy.test_leftouter_joinc                 C   sP   t jdg d¢d�}t jdg d¢d�}tddg||ddd	�}t|jjg d
¢ƒ d S )Nri   ©ry   r¼   r»   r$   ©r»   r¼   ry   r{   r/   r.  F)r/  rØ   )r/   r{   Za1Za2)r3   rs   r¿   r   r   r%   Únames)r9   r.   r/   Újr>   r>   r?   Útest_different_field_orderz  s    z%TestJoinBy.test_different_field_orderc                 C   s<   t jdg d¢d�}t jdg d¢d�}tttg d¢||ƒ d S )Nri   rc  r$   rd  )r.   r/   r/   )r3   rs   r¿   r   r°   r   rF  r>   r>   r?   Útest_duplicate_keys‚  s    zTestJoinBy.test_duplicate_keysc                 C   sj   t  ddg¡}t  ddg¡}t  g d¢¡}t jddg|d�}t jdd	g|d�}td
||ƒ}t|j|ƒ d S )N)rh   ZS5©rH  ú<f4©rh   ZS10)rk  ©Zvalue1rj  )Úvalue2rj  ©ÚSarahrˆ   ©ÚJohnr-   r$   ©ro  r‡   ©rq  r†   rh   ©r3   r%   r4   r   r   ©r9   Úa_dtypeÚb_dtypeÚexpected_dtyper.   r/   r·   r>   r>   r?   Ú#test_same_name_different_dtypes_key‡  s    z.TestJoinBy.test_same_name_different_dtypes_keyc                 C   sj   t  ddg¡}t  ddg¡}t  g d¢¡}t jddg|d�}t jdd	g|d�}td
||ƒ}t|j|ƒ d S )Nrk  ri  )rH  ú<f8))rh   z|S10rl  )rm  rz  rn  rp  r$   rr  rs  rh   rt  ru  r>   r>   r?   Útest_same_name_different_dtypes“  s    z*TestJoinBy.test_same_name_different_dtypesc                 C   sÆ   t  dtdfdg¡}t jg d¢t jfg d¢dfg|d�}t  dtdfdg¡}t jg d¢dfg d	¢dfg|d�}t  dtdfddg¡}t jg d¢t jdfg|d�}td||ƒ}t|j|ƒ t||ƒ d S )
NÚposri   )Úfrj  )r   r   r   rà   rÉ   r$   )Úgrj  )ri   r   r   )r3   r%   r6   r4   Úpir   r   )r9   rv  r.   rw  r/   rx  r"  r·   r>   r>   r?   Útest_subarray_key   s    $"zTestJoinBy.test_subarray_keyc                 C   sn   t jddd�}d|_tt|jƒdƒ t  ddg|¡}t  dd	g|¡}td
||ƒ}t  g d¢¡}t|j|ƒ d S )Nzi1,f4Trp   )ÚkÚvri   r¾   )ri   r   râ   r—   r�  ))r�  Úi1)Úv1r|   )Úv2r|   )	r3   r%   re  r   ÚlenÚdescrr4   r   r   )r9   rw   r.   r/   r·   rx  r>   r>   r?   Útest_padded_dtype®  s    zTestJoinBy.test_padded_dtypeN)rÁ   rÂ   rÃ   r@   rE  rG  rJ  ra  rb  rg  rh  ry  r{  r€  rˆ  r>   r>   r>   r?   r$    s   	r$  c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestJoinBy2c              	   C   sŒ   t jttt  d¡t  dd¡t  dd¡ƒƒdtfdtfdtfgd	�| _t jttt  d¡t  d
d¡t  dd¡ƒƒdtfdtfdtfgd	�| _d S )Nr   r%  r&  rñ   r'  r.   r/   r{   r$   r(  r)  r³   r*  )Úclsr>   r>   r?   r@   À  s    
ÿþ
ÿþzTestJoinBy2.setup_methodc                 C   s`   | j | j }}td||dddd�}tjg d¢dtfdtfdtfd	tfd
tfgd�}t||ƒ d S )Nr.   rC   Ú2r.  ©Ú	r1postfixÚ	r2postfixr/  ©
)r   r%  r(  rñ   rñ   )r   rN  r3  r5  r5  )r   rP  r7  r9  r9  )ri   rR  r;  r=  r=  )r*   rT  r?  rA  rA  )r,   r0  rZ  r1  r1  )rn   r2  r[  r4  r4  )r~   r6  r\  r8  r8  )r   r:  r]  r<  r<  )r�   r>  r^  r@  r@  r/   rC  r{   r³   r$   rD  rÊ   r>   r>   r?   Útest_no_r1postfixÉ  s    ÿ
ÿûzTestJoinBy2.test_no_r1postfixc              	   C   s   t ttd| j| jddd� d S )Nr.   rC   )r�  rŽ  )r   r°   r   r.   r/   r-  r>   r>   r?   Útest_no_postfixØ  s    ÿzTestJoinBy2.test_no_postfixc                 C   s`   | j | j }}td||dddd�}tjg d¢dtfdtfdtfd	tfd
tfgd�}t||ƒ d S )Nr.   Ú1rC   r.  rŒ  r�  rB  r/   r{   r³   r$   rD  rÊ   r>   r>   r?   Útest_no_r2postfixÜ  s    ÿ
ÿûzTestJoinBy2.test_no_r2postfixc              
   C   s&  t jttt  ddgd¡t  t  d¡d¡t  dd¡t  dd¡ƒƒdtfd	tfd
tfdtfgd�}t jttt  ddgd¡t  t  d¡d¡t  dd¡t  dd¡ƒƒdtfd	tfd
tfdtfgd�}t jg d¢dtfd	tfdtfdtfdtfdtfgd�}td	dg||dddd�}t	|j
|j
ƒ t	||ƒ d S )Nr   r€   r,   r   r%  r&  r   r�  r.   r/   r{   r$   r(  r)  r   )
)r   r   r%  r(  r   r   )r€   r   rN  r3  r€   r   )r   r   rP  r7  r�   r   )r€   r   rR  r;  rr   ri   )r   r   rT  r?  r�   r*   )r€   r   r0  rZ  r‰   r,   )r   ri   r2  r[  é   rn   )r€   ri   r6  r\  rŠ   r~   )r   r*   r:  r]  é   r   )r€   r*   r>  r^  é   r�   rB  rC  Úc1Úc2r’  r‹  r.  rŒ  )r3   r4   r+  r,  ZtileÚrepeatr¯   r6   r   r   r%   )r9   r.   r/   rJ   rE   r>   r>   r?   Útest_two_keys_two_varsë  s(    &ÿþ&ÿþ
ÿûÿz"TestJoinBy2.test_two_keys_two_varsN)	rÁ   rÂ   rÃ   Úclassmethodr@   r�  r‘  r“  rš  r>   r>   r>   r?   r‰  ¿  s   
r‰  c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestAppendFieldsObjz;
    Test append_fields with arrays containing objects
    c                 C   s$   ddl m} t|dddƒd�| _d S )Nr   )ÚdateiÐ  r   )Úobj)Údatetimer�  Údictr7   )r9   r�  r>   r>   r?   r@     s    z TestAppendFieldsObj.setup_methodc                 C   s�   | j d }tj|df|dfgdtfdtfgd�}tjddgtd�}t|d	|d
d�}tj|ddf|ddfgdtfdtfd	tfgd�}t||ƒ dS )z7Test append_fields when the base array contains objectsrž  r   r"   r   r!   r$   r   r   r_   F)r7   rØ   N)r7   r3   r4   Úobjectr5   r6   r   r   )r9   rž  r:   r;   rE   rJ   r>   r>   r?   Útest_append_to_objects
  s    
ÿÿz*TestAppendFieldsObj.test_append_to_objectsN)rÁ   rÂ   rÃ   Ú__doc__r@   r¢  r>   r>   r>   r?   rœ     s   rœ  ).ZpytestÚnumpyr3   Znumpy.marj   Znumpy.ma.mrecordsr   Znumpy.ma.testutilsr   Znumpy.testingr   r   Znumpy.lib.recfunctionsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   ÚlibZrecfunctionsZ_get_fieldspecZget_fieldspecrQ   rV   Z
_zip_descrrD   Z
_zip_dtypeZ	zip_dtyper   rÄ   rÎ   rì   rú   r$  r‰  rœ  r>   r>   r>   r?   Ú<module>   s2   D




    6 , %A