a
    ³ÐOc‹   ã                   @   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                   @   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 )Ú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>   úX/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/lib/tests/test_recfunctions.pyÚsetup   s    

ÿ
ÿzTestRecFunctions.setupc                 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©Z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|j|u ƒ t|j|u ƒ 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|j|u ƒ t|j|u ƒ t  	dtfd2tfg¡}	t  	d3|	fd |	fd4|	fg¡}
t  d|
¡}t|td�}t|t jd5td�ƒ d6d7„ }d8d9„ }dAd:d;„}|||t jt jƒd(ƒƒ}t||ƒd<t j|fƒ |||t jd'ƒd'ƒƒ}t||ƒd=t j|fƒ |t jƒ}t||ƒd>t j|fƒ |t j||t jd'ƒd'ƒƒ}t||ƒd?t j|fƒ |ƒ }tttt  d(|¡ƒ tttt  d(|¡t jd� tttt jd@t jd�ƒ d S )BNr*   )©r.   Úi4)r/   zf4,u2)ÚcÚf4r   r$   )r*   r,   Úf8))r   r   r,   )r*   r,   é   )r}   é   é   )r   r   é   )©r:   ry   )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@rx   r/   )Úf0r{   )Úf1Úu2)rz   r{   ©r   )gUUUUUU@gUUUUUU@gUUUUUU!@rƒ   )r�   )r;   ry   )r<   ry   r   r   ri   rn   r}   r~   é	   r   r€   rq   é   ))Zx0ry   )Úx1)ry   r   )Zx2)ry   ©r   r   r;   r.   rz   )r   rn   c                 S   s   t  | |f¡S ©N)r3   r%   )rv   Ú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Úirv   r>   r>   r?   Ú
<listcomp>$  ó    zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r3   r%   Ú	enumerate)Z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   rr   r   r   r“   r%   )rv   r%   ÚarrÚretZbackarrr>   r>   r?   Úinspect&  s    
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rn   rH   rG   )r,   )ri   r   )N)r3   rr   r   r   r4   ÚmeanÚarangeZreshaper   r%   r   r   Úbaser6   Úint32r   Ú
ValueErrorÚNotImplementedError)r9   r.   Úoutr/   rz   ZwantÚdÚddZdddZpointZtrianglerœ   Úresr”   r›   rž   rv   r>   r>   r?   Útest_structured_to_unstructuredç   s�    
ÿý
þü

ÿÿÿ
ÿÿþ

ÿÿz0TestRecFunctions.test_structured_to_unstructuredc                 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   )rx   ©r/   r|   ©rz   Úu1r$   ©r/   r{   r«   ©r   r   )ri   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_nameA  s&    


z.TestRecFunctions.test_field_assignment_by_nameN)Ú__name__Ú
__module__Ú__qualname__r@   rF   rK   rO   rT   rW   r\   rl   ro   rw   r©   r²   r>   r>   r>   r?   r      s   	! !Zr   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   rr   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   rr   r%   r	   r   r¼   r>   r>   r?   Útest_masked_flexibleh  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@   w  s    ÿ þzTestMergeArrays.setupc                 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_singlerecordï  s    þÿz!TestMergeArrays.test_singlerecordN)r³   r´   rµ   r@   rÆ   rÈ   rÎ   rÐ   rÑ   rÖ   r×   rÚ   rÝ   r>   r>   r>   r?   rÀ   t  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.setupc                 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_single  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_double  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_flex  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_nested   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@   1  s    ÿ
ÿzTestStackArrays.setupc                 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_fieldsE  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_fieldsU  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@©rz   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   )rz   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_fieldsu  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!   )rz   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ù   rz   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ì   /  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/   rz   r$   r,   rˆ   éA   éK   r¦   ©r3   r4   ÚlistÚzipr    r6   r.   r/   ©r9   r>   r>   r?   r@   Û  s    
ÿþ
ÿþzTestJoinBy.setupc                 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Úb2rz   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,   r"  r#  rã   )rn   r$  r&  r'  )r}   r(  r*  r+  )r~   r,  r.  r/  )rŽ   r0  r2  r3  r.   r/   rz   r¦   r$   )r.   r/   r   r3   r4   r6   ©r9   r.   r/   r>   r>   r?   Ú	test_joinï  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_subdtype  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   r'  rg   ©r   é4   r+  rg   ©ri   é5   r/  rg   ©r*   é6   r3  rg   ©r,   r"  r#  rg   )r,   r  rg   rã   ©rn   r$  r&  rg   )rn   r%  rg   r'  ©r}   r(  r*  rg   )r}   r)  rg   r+  ©r~   r,  r.  rg   )r~   r-  rg   r/  ©rŽ   r0  r2  rg   )rŽ   r1  rg   r3  )r   éF   rg   r#  )r   éG   rg   r&  )r€   éH   rg   r*  )rq   éI   rg   r.  )r�   éJ   rg   r2  )rÿ   rÿ   rÿ   rÿ   rÿ   rÿ   ©r   r   r   r   rÿ   rQ  rÿ   rQ  rÿ   rQ  rÿ   rQ  rQ  rQ  rQ  rQ  rQ  r.   r/   rz   r¦   rc   ©r.   r/   r   rj   r4   r6   r   r¼   r>   r>   r?   Útest_outer_join  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)
r>  r?  rA  rC  rE  rG  rH  rI  rJ  rK  )
rÿ   rÿ   rÿ   rÿ   rÿ   rÿ   rÿ   rÿ   rÿ   rÿ   r.   r/   rz   r¦   rc   rR  r¼   r>   r>   r?   Útest_leftouter_join(  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   ©rx   r­   r«   r$   ©r«   r­   rx   rz   r/   r   F)r!  rÊ   )r/   rz   Za1Za2)r3   rr   r±   r   r   r%   Únames)r9   r.   r/   Újr>   r>   r?   Útest_different_field_order9  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   rU  r$   rV  )r.   r/   r/   )r3   rr   r±   r   r£   r   r8  r>   r>   r?   Útest_duplicate_keysA  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©r:  ú<f4©rh   ZS10)r]  ©Zvalue1r\  )Úvalue2r\  ©ÚSarahr‡   ©ÚJohnr-   r$   ©ra  r†   ©rc  r…   rh   ©r3   r%   r4   r   r   ©r9   Úa_dtypeÚb_dtypeÚexpected_dtyper.   r/   r¨   r>   r>   r?   Ú#test_same_name_different_dtypes_keyF  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 )Nr]  r[  )r:  ú<f8))rh   z|S10r^  )r_  rl  r`  rb  r$   rd  re  rh   rf  rg  r>   r>   r?   Útest_same_name_different_dtypesR  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   )Úfr\  )r   r   r   rÒ   r»   r$   )Úgr\  )ri   r   r   )r3   r%   r6   r4   Úpir   r   )r9   rh  r.   ri  r/   rj  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‘   rs  ))rs  Úi1)Zv1r{   )Zv2r{   )	r3   r%   rW  r   ÚlenÚdescrr4   r   r   )r9   rv   r.   r/   r¨   rj  r>   r>   r?   Útest_padded_dtypem  s    zTestJoinBy.test_padded_dtypeN)r³   r´   rµ   r@   r7  r9  r<  rS  rT  rY  rZ  rk  rm  rr  rx  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/   rz   r$   r  r  r¦   r  )Úclsr>   r>   r?   r@     s    
ÿþ
ÿþzTestJoinBy2.setupc                 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   r@  r%  r'  r'  )r   rB  r)  r+  r+  )ri   rD  r-  r/  r/  )r*   rF  r1  r3  r3  )r,   r"  rL  r#  r#  )rn   r$  rM  r&  r&  )r}   r(  rN  r*  r*  )r~   r,  rO  r.  r.  )rŽ   r0  rP  r2  r2  r/   r5  rz   r¦   r$   r6  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  r4  r/   rz   r¦   r$   r6  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   rs  r.   r/   rz   r$   r  r  r   )
)r   r   r  r  r   r   )r   r   r@  r%  r   r   )r   r   rB  r)  r€   r   )r   r   rD  r-  rq   ri   )r   r   rF  r1  r�   r*   )r   r   r"  rL  rˆ   r,   )r   ri   r$  rM  é   rn   )r   ri   r(  rN  r‰   r}   )r   r*   r,  rO  é   r~   )r   r*   r0  rP  é   rŽ   r4  r5  Z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?   ry  ~  s   
ry  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.setupc                 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  ry  r‹  r>   r>   r>   r?   Ú<module>   s0   D




  K 6 , %A