o
    V=ºiŽ¤  ã                   @   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                   @   ól   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   ór   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@   úgC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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#   r0   r2   r3   r1   )r9   Ú	zip_descrr   r5   r'   r8   r7   )r;   r?   r<   r=   r>   Útestr@   r@   rA   Ú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+   r0   r1   r2   r3   r&   )r)   )r-   ©r   ©r,   )r   )r*   )r,   )r/   r@   )r5   r6   r8   r7   r   r   ©r;   r0   rG   Úcontrolr@   r@   rA   Ú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@r0   r1   r2   r3   r&   r    ÚBB)r0   r3   )r5   r6   r8   r7   r   Úviewr   r'   )r;   r0   rG   ZnewdtyperL   r@   r@   rA   Útest_rename_fieldsa   s   "ÿÿ 
z#TestRecFunctions.test_rename_fieldsc                 C   ó    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#   r0   r1   r2   r3   )r0   )r1   )r2   r3   )r0   )r1   r@   r@   )r5   r'   r7   Ú	get_namesr   r8   ©r;   ÚndtyperG   r@   r@   rA   Útest_get_namesl   ó   
"


zTestRecFunctions.test_get_namesc                 C   rR   )Nr%   r#   rS   r0   r1   r2   r3   )r0   r1   r2   r3   ©r0   r1   r@   )r5   r'   r7   Úget_names_flatr   r8   rU   r@   r@   rA   Útest_get_names_flat~   rX   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#   rS   r    ÚBA©rO   z|S1)r    r#   r\   rO   rO   ÚBBAÚBBB)r    r#   r\   rO   r^   r_   )r5   r'   r7   r   r   r8   )r;   rV   rG   rL   r@   r@   rA   Ú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   rb   ra   )r   )r!   r#   ra   )r   )r$   ÚC)©r   ©r   r   rd   rd   rd   )r   re   )r   ©r   r   r    r#   r\   r]   ©Úmaskr'   FT©Z
ignoremaskÚreturn_indexr   r   éÿÿÿÿ)Úkeyrj   )r   r   r   é   r.   )r   r   r   r,   rO   )r   r   r   rm   r,   )Úmar6   r8   r7   r
   r   ÚsortedrK   r@   r@   rA   Ú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 )Nr0   )r   r   r   r   r   rm   rm   )r   r   r   r   r   r   r   ©rh   Tri   )r   r   rm   r,   rk   r   F)r   r   r   rm   r,   é   )r8   rn   r6   rP   r
   r   ro   )r;   rV   r0   rG   rL   r@   r@   rA   Ú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&   é   )	r5   r'   Úzerosr   r   ÚitemsizeÚrecordr   Útype)r;   Údtr0   r@   r@   rA   Ú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,   )©r0   Úi4)r1   zf4,u2)ÚcÚf4r   r&   )r,   r.   Úf8))r   r   r.   )r,   r.   é   )r�   é   é   )r   rƒ   é   )©r<   r}   )r=   r   )r>   r€   r<   r>   rk   )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@r|   r1   )Úf0r   )Úf1Úu2)r~   r   ©r   )gUUUUUU@gUUUUUU@gUUUUUU!@r‡   )r…   )r=   r}   )r>   r}   r   r   rm   rr   r�   r‚   é	   rƒ   r„   ru   é   ))Zx0r}   )Úx1)r}   r   )Zx2)r}   ©r   r   r=   r0   r~   )r   rr   c                 S   s   t  | |f¡S ©N)r5   r'   )rz   Úshaper@   r@   rA   Ú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Úirz   r@   r@   rA   Ú
<listcomp>$  s    zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r5   r'   Ú	enumerate)Zdtsr@   r@   rA   Ú
structured#  s   zDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredc                 S   s2   t  d| ¡}t||d�}t|| ƒ}|j|j|jfS )Nr@   r&   )r5   rv   r   r   r—   r'   )rz   r'   ÚarrÚretZbackarrr@   r@   rA   Úinspect&  s   
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rr   rJ   rI   )r.   )rm   r   r–   )r5   rv   r   r   r6   ÚmeanÚarangeZreshaper   r'   r   r   Úbaser8   Zint32r   Ú
ValueErrorÚNotImplementedError)r;   r0   Úoutr1   r~   ZwantÚdÚddZdddZpointZtrianglerŸ   Úresr˜   rž   r¡   rz   r@   r@   rA   Ú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   )r|   ©r1   r€   ©r~   Úu1r&   ©r1   r   r­   ©r   r   )rm   r,   F)Zzero_unassigned)r   r   r   )r   rm   r,   )r   r   r   )r   rm   r,   r0   r¬   )r‘   )©rm   )r°   )©r   rm   ))r   r   ))r   rm   rm   r   r@   )r5   Úonesr   r   r6   r   r'   )r;   r0   Znewdtr1   r@   r@   rA   Útest_field_assignment_by_nameA  s&   


z.TestRecFunctions.test_field_assignment_by_nameN)Ú__name__Ú
__module__Ú__qualname__rB   rH   rM   rQ   rW   r[   r`   rp   rs   r{   r«   r´   r@   r@   r@   rA   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   ç        )r5   r6   r8   r7   rv   r'   r	   r   ©r;   r0   r1   rG   rL   r@   r@   rA   Ú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   rf   r    r#   rg   r±   r&   r¼   )rÀ   rf   re   )rn   r6   r8   r7   rv   r'   r	   r   r¾   r@   r@   rA   Útest_masked_flexibleh  s   ÿ

þz,TestRecursiveFillFields.test_masked_flexibleN)rµ   r¶   r·   r¿   rÁ   r@   r@   r@   rA   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@   r0   r1   r2   r3   Úbcr4   r:   r@   r@   rA   rB   w  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 )NrI   r‘   rŽ   r&   FrC   T)r9   r   r5   r6   r8   r   ©r;   Ú_r<   r>   rG   rL   r@   r@   rA   Ú	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   FrC   T)r   r   r*   )r,   r.   r/   r0   r2   r3   r&   )r9   r   r   r5   r6   r8   r7   ©r;   r?   rG   rL   r@   r@   rA   Ú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   )rk   r   rŽ   r�   r&   T©re   re   rf   rg   )r9   r   r5   r6   r8   r   rn   rh   ©r;   rÇ   r<   r=   rG   rL   r@   r@   rA   Ú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 )NTrC   )r   r    r!   )r   r#   r$   rŽ   r%   r#   r&   F)r   r   )r   r"   r�   ©r9   r   r5   r6   r8   r7   r   rÆ   r@   r@   rA   Ú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 )NTrC   )r   r   r   r*   )r   r,   r.   r/   rŽ   r0   r2   r3   r&   Fr�   r1   rÅ   )r!   rÃ   )r   rÄ   rÑ   )r;   r?   r<   rÇ   rG   rL   Zcontroldtyper@   r@   rA   Ú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   rm   ©r   r   r   rq   TrË   )©r   r   r•   )rk   rm   )rÀ   re   rf   rŽ   r�   rg   )rÌ   Z
asrecarray)	r9   rn   r6   r   r8   r   r   Ú
isinstancer   )r;   rÇ   r<   ZmxrG   rL   r@   r@   rA   Ú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   r0   )rŠ   r»   rN   )r¹   rº   )rk   rN   rÎ   r�   rg   )r   r5   r6   rP   r8   rn   r7   r   )r;   rG   rL   r@   r@   rA   Ú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 )Nrk   r   rc   )©r    r!   r   ©r#   r$   r   )z-1rk   r   r%   r#   r&   )r9   r   r5   r6   rP   r8   r7   )r;   r>   r@   r@   rA   Ú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Ñ   )r;   rÇ   r<   r=   r>   rG   rL   r@   r@   rA   Útest_singlerecordï  s   þÿz!TestMergeArrays.test_singlerecordN)rµ   r¶   r·   rB   rÈ   rÊ   rÐ   rÒ   rÓ   rØ   rÙ   rÜ   rß   r@   r@   r@   rA   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   r   r   r4   r:   r@   r@   rA   rB   ü  ó   ÿ
ÿ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   ©r9   rÍ   rÎ   rŽ   rg   ©r9   r   rn   r6   r8   r   ©r;   rÇ   r<   rG   rL   r@   r@   rA   Ú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 )NrS   r   éd   éÈ   râ   ))r   r   ræ   )r   r   rç   )rk   r   rk   )©r   r   r   rè   )r   r   r   rŽ   r    r#   rg   rã   rä   r@   r@   rA   Ú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 )
Nrk   rc   r   râ   )rÚ   rÛ   )rk   ç      ð¿r   )rè   rè   ©r   r   r   r%   r#   rg   )r9   r   rn   r6   r7   r8   r   )r;   r>   rG   rL   r@   r@   rA   Ú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   rc   r   râ   ))r   r)   r   )r,   r-   r   )rk   )rk   rê   r   )©r   re   r   rí   )r   rÖ   r   r0   r1   r2   r3   rg   )r9   r   rn   r6   r8   r7   r   rÉ   r@   r@   rA   Útest_append_on_nested   s   

þûz&TestAppendFields.test_append_on_nestedN)rµ   r¶   r·   rB   rå   ré   rì   rî   r@   r@   r@   rA   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   r   r   r4   r:   r@   r@   rA   rB   1  rá   zTestStackArrays.setup_methodc                 C   sP   | j \}}}}t|fƒ}t||ƒ t||u ƒ t|ƒ}t||ƒ t||u ƒ d S r–   )r9   r   r   r   )r;   rÇ   r<   rG   r@   r@   rA   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   )r9   r   r5   r6   r   rÏ   r@   r@   rA   Ú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   rk   rk   )r   rk   rk   )rk   r    r   )rk   r#   r   )©r   r   r   rñ   rÕ   rÕ   rŽ   r%   r#   rg   )©r    r   rk   ©r#   r   rk   ©rk   rk   r   ©rk   rk   r   )©r   r   r   rö   rë   rë   rÞ   )rò   ró   rò   ró   rô   rõ   )rö   rö   rö   rö   rë   rë   )r9   r   rn   r6   r8   r7   r   rh   rÆ   r@   r@   rA   Ú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©©r0   rŠ   ç      Y@©r1   r»   ç      i@©r~   rN   ç     Àr@r%   r#   rc   r&   )rò   ró   rù   rû   rý   ©rö   rö   rè   rè   rè   ©r'   rh   Zf3))r    r   rk   rk   )r#   r   rk   rk   )r0   rŠ   rú   rk   )r1   r»   rü   rk   )r~   rN   rþ   rk   )rk   rk   rk   r   )rk   rk   rk   r   )©r   r   r   r   r  ©r   r   r   r   r  r  ©r   r   r   r   r  )	r9   r5   r6   r7   r   rn   r   rh   r8   )r;   rÇ   r<   r>   ÚzzrG   rL   rV   r@   r@   rA   Ú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#   rc   r&   z???g     8�Àç    €‡ÃÀg    ðiøÀ)r    r#   rc   ÚD)Údefaults))r    r   r  )r#   r   r  rù   rû   rý   rÿ   r   )r9   r5   r6   r7   r   rn   r   rh   )r;   rÇ   r>   r  r  rG   rL   r@   r@   rA   Ú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   ƒ d S 1 s`w   Y  d S )Nr    r#   rc   rÔ   ©r   r   r   rg   ©r,   r.   rr   r&   rè   T)ZautoconvertF)
r8   Úboolr7   rn   r6   r   r   rh   r   Ú	TypeError)r;   Úadtyper0   Úbdtyper1   rL   rG   r@   r@   rA   Ú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)r0   r    )r1   r#   )r~   rc   rÔ   r
  rg   r  r&   rè   )r8   r  r7   rn   r6   r   r   rh   )r;   r  r0   r  r1   rG   rL   r@   r@   rA   Ú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#   rI   r&   r0   rŠ   rú   r1   r»   rü   r~   rN   rþ   rc   ó   Ar!   r   ó   Br$   ó   aó   bó   cFT)r9   rh   r'   )r5   r6   r7   r   rn   r'   r   rh   )r;   r>   r  rª   Úexpectedr@   r@   rA   Útest_subdtype¼  s:   ÿþÿþ




û




ûò
zTestStackArrays.test_subdtypeN)rµ   r¶   r·   rB   rÈ   rð   r÷   r  r	  r  r  r  r@   r@   r@   rA   rï   /  s    	 rï   c                   @   r   )Ú
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   r0   r1   r~   r&   r.   rŒ   éA   éK   r¨   ©r5   r6   ÚlistÚzipr£   r8   r0   r1   ©r;   r@   r@   rA   rB   Û  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 )
Nr0   Úinner)Újointype))r.   é7   r  éi   ræ   )rr   é8   éB   éj   ée   )r�   é9   éC   ék   éf   )r‚   é:   éD   él   ég   )r’   é;   éE   ém   éh   Úb1Úb2r~   r¨   r&   ©r0   r1   r   r5   r6   r8   r   r¾   r@   r@   rA   Ú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 )NrY   ))r.   r%  r&  ræ   )rr   r'  r)  r*  )r�   r+  r-  r.  )r‚   r/  r1  r2  )r’   r3  r5  r6  r0   r1   r~   r¨   r&   )r0   r1   r   r5   r6   r8   ©r;   r0   r1   r@   r@   rA   Ú	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 )NrI   rl   r&   r   rÔ   )ÚvalueZuint16rm   )r5   r6   r8   r   r   rP   rn   ZMaskedArray)r;   ZfooÚbarrª   r@   r@   rA   Útest_join_subdtype  s   ÿ
ÿzTestJoinBy.test_join_subdtypec                 C   óZ   | 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 )
NrY   Úouter)©r   r  ræ   rk   ©r   é3   r*  rk   ©r   é4   r.  rk   ©rm   é5   r2  rk   ©r,   é6   r6  rk   ©r.   r%  r&  rk   )r.   r  rk   ræ   ©rr   r'  r)  rk   )rr   r(  rk   r*  ©r�   r+  r-  rk   )r�   r,  rk   r.  ©r‚   r/  r1  rk   )r‚   r0  rk   r2  ©r’   r3  r5  rk   )r’   r4  rk   r6  )r   éF   rk   r&  )rƒ   éG   rk   r)  )r„   éH   rk   r-  )ru   éI   rk   r1  )r“   éJ   rk   r5  )r  r  r  r  r  r  ©r   r   r   r   r  rU  r  rU  r  rU  r  rU  rU  rU  rU  rU  rU  r0   r1   r~   r¨   rg   ©r0   r1   r   rn   r6   r8   r   r¾   r@   r@   rA   Útest_outer_join  s   


ÿìzTestJoinBy.test_outer_joinc                 C   r@  )
NrY   Z	leftouter)
rB  rC  rE  rG  rI  rK  rL  rM  rN  rO  )
r  r  r  r  r  r  r  r  r  r  r0   r1   r~   r¨   rg   rV  r¾   r@   r@   rA   Ú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 )Nrm   ©r|   r¯   r­   r&   ©r­   r¯   r|   r~   r1   r#  F)r$  rÌ   )r1   r~   Za1Za2)r5   rv   r³   r   r   r'   Únames)r;   r0   r1   Újr@   r@   rA   Ú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 )Nrm   rY  r&   rZ  )r0   r1   r1   )r5   rv   r³   r   r¥   r   r;  r@   r@   rA   Ú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)rl   ZS5©r=  ú<f4©rl   ZS10)ra  ©Zvalue1r`  )Úvalue2r`  ©ÚSarahr‹   ©ÚJohnr/   r&   ©re  rŠ   ©rg  r‰   rl   ©r5   r'   r6   r   r   ©r;   Úa_dtypeÚb_dtypeÚexpected_dtyper0   r1   rª   r@   r@   rA   Ú#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 )Nra  r_  )r=  ú<f8))rl   z|S10rb  )rc  rp  rd  rf  r&   rh  ri  rl   rj  rk  r@   r@   rA   Ú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Úposrm   )Úfr`  )r   r   r   rÔ   r½   r&   )Úgr`  )rm   r   r   )r5   r'   r8   r6   Úpir   r   )r;   rl  r0   rm  r1   rn  r  rª   r@   r@   rA   Ú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,f4Trt   )ÚkÚvrm   r²   )rm   r   rÖ   r•   rw  ))rw  Úi1)Zv1r   )Zv2r   )	r5   r'   r[  r   ÚlenÚdescrr6   r   r   )r;   rz   r0   r1   rª   rn  r@   r@   rA   Útest_padded_dtypem  s   zTestJoinBy.test_padded_dtypeN)rµ   r¶   r·   rB   r:  r<  r?  rW  rX  r]  r^  ro  rq  rv  r|  r@   r@   r@   rA   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  r0   r1   r~   r&   r  r  r¨   r  )Úclsr@   r@   rA   rB     s   
ÿþ
ÿþzTestJoinBy2.setup_methodc                 C   ó`   | 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 )Nr0   rE   Ú2r#  ©Ú	r1postfixÚ	r2postfixr$  ©
)r   r  r  ræ   ræ   )r   rD  r(  r*  r*  )r   rF  r,  r.  r.  )rm   rH  r0  r2  r2  )r,   rJ  r4  r6  r6  )r.   r%  rP  r&  r&  )rr   r'  rQ  r)  r)  )r�   r+  rR  r-  r-  )r‚   r/  rS  r1  r1  )r’   r3  rT  r5  r5  r1   r8  r~   r¨   r&   r9  r¾   r@   r@   rA   Útest_no_r1postfixˆ  ó   ÿ
ÿûzTestJoinBy2.test_no_r1postfixc              	   C   s   t ttd| j| jddd� d S )Nr0   rE   )r‚  rƒ  )r   r¥   r   r0   r1   r"  r@   r@   rA   Útest_no_postfix—  s   
ÿzTestJoinBy2.test_no_postfixc                 C   r  )Nr0   Ú1rE   r#  r�  r„  r7  r1   r~   r¨   r&   r9  r¾   r@   r@   rA   Útest_no_r2postfix›  r†  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   rw  r0   r1   r~   r&   r  r  r   )
)r   r   r  r  r   r   )rƒ   r   rD  r(  rƒ   r   )r   r   rF  r,  r„   r   )rƒ   r   rH  r0  ru   rm   )r   r   rJ  r4  r“   r,   )rƒ   r   r%  rP  rŒ   r.   )r   rm   r'  rQ  é   rr   )rƒ   rm   r+  rR  r�   r�   )r   r,   r/  rS  é   r‚   )rƒ   r,   r3  rT  é   r’   r7  r8  Zc1Úc2rˆ  r€  r#  r�  )r5   r6   r   r!  ZtileÚrepeatr£   r8   r   r   r'   )r;   r0   r1   rL   rG   r@   r@   rA   Útest_two_keys_two_varsª  s(   &ÿþ&ÿþ
ÿûÿz"TestJoinBy2.test_two_keys_two_varsN)	rµ   r¶   r·   ÚclassmethodrB   r…  r‡  r‰  r�  r@   r@   r@   rA   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’  Údictr9   )r;   r’  r@   r@   rA   rB   Å  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   rc   F)r9   rÌ   N)r9   r5   r6   Úobjectr7   r8   r   r   )r;   r“  r<   r=   rG   rL   r@   r@   rA   Útest_append_to_objectsÉ  s   
ÿÿz*TestAppendFieldsObj.test_append_to_objectsN)rµ   r¶   r·   Ú__doc__rB   r—  r@   r@   r@   rA   r‘  ¿  s    r‘  ).ZpytestZnumpyr5   Znumpy.marn   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_fieldspecrT   rZ   Z
_zip_descrrF   Z
_zip_dtypeZ	zip_dtyper   r¸   rÂ   rà   rï   r  r}  r‘  r@   r@   r@   rA   Ú<module>   s2    D




  K 6 , %A