U
    ¸mœd]¢  ã                   @   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   st   t  ddg¡}t  dddg¡}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=   úZ/home/sam/Atlas/atlas_env/lib/python3.8/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-   r/   r0   r.   )r6   Ú	zip_descrr   r2   r$   r5   r4   )r8   r<   r9   r:   r;   Útestr=   r=   r>   Útest_zip_descr    sF    ÿÿÿ
ÿÿ
 þÿ
ÿÿÿ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.   r/   r0   r#   )r&   )r*   ©r   ©r)   )r   )r'   )r)   )r,   r=   )r2   r3   r5   r4   r   r   ©r8   r-   rD   Ú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.   r/   r0   r#   r   ÚBB)r-   r0   )r2   r3   r5   r4   r   Úviewr   r$   )r8   r-   rD   ZnewdtyperI   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.   r/   r0   )r-   )r.   )r/   r0   )r-   )r.   r=   r=   )r2   r$   r4   Ú	get_namesr   r5   ©r8   ÚndtyperD   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    rO   r-   r.   r/   r0   )r-   r.   r/   r0   ©r-   r.   r=   )r2   r$   r4   Úget_names_flatr   r5   rQ   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    rO   r   ÚBA©rL   z|S1)r   r    rW   rL   rL   ÚBBAÚBBB)r   r    rW   rL   rY   rZ   )r2   r$   r4   r   r   r5   )r8   rR   rD   rI   r=   r=   r>   Útest_get_fieldstructure�   s(    
ÿÿ ÿ

z(TestRecFunctions.test_get_fieldstructurec                 C   sŠ  t jddddddgddddddg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�}dddddg}tt|d ƒ|ƒ t|d ||d  ƒ t|d	dd�}ddddg}tt|d ƒ|ƒ t|d ||d  ƒ t|d
dd�}ddddg}tt|d ƒ|ƒ t|d ||d  ƒ t|ddd�}dddddg}tt|d ƒ|ƒ t|d ||d  ƒ d S )N)r   ©r!   r    )r   r\   )r   )r   r    )r   )r!   ÚC)r   ©r   r   )r   r^   )r   ©r   r   r   r    rW   rX   ©Úmaskr$   FT©Z
ignoremaskÚreturn_indexr   r   éÿÿÿÿ)Úkeyrc   r   é   r+   r)   rL   )Úmar3   r5   r4   r
   r   ÚsortedrH   r=   r=   r>   Útest_find_duplicates«   s@    
  ÿ  ÿüz%TestRecFunctions.test_find_duplicatesc              	   C   sÆ   dt fg}tjdddddddgdddddddgd� |¡}t|ddd�}dddd	g}tt|d
 ƒ|ƒ t|d ||d
  ƒ t|ddd�}ddddd	dg}tt|d
 ƒ|ƒ t|d ||d
  ƒ d S )Nr-   r   r   rf   r   ©ra   Trb   r)   rd   Fé   )r5   rg   r3   rM   r
   r   rh   )r8   rR   r-   rD   rI   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kƒ d S )Nzu1,f4,i8T©Úalignr   r#   é   )	r2   r$   Úzerosr   r   ÚitemsizeÚrecordr   Útype)r8   Údtr-   r=   r=   r>   Útest_repack_fieldsÛ   s    z#TestRecFunctions.test_repack_fieldsc                 C   s¶  t jddddgd�}t|ƒ}t|t jddd�ƒ t jdd	d
dgdddgd�}t jt|ddg ƒdd�}t|t  ddddg¡ƒ t jt|dg ƒdd�}t|t  ddddg¡ƒ 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dd	d
dgdddgd�}tt
t j|ƒt  d-d.d/dg¡ƒ tt
t j|ddg ƒt  ddddg¡ƒ t jdd	d
dgdd0d1gd�}t|ƒ}t||j	ƒ}t|j|kƒ t|j|kƒ t jd2d3d4gddgd5d6ggfd7d8d!gd9d:gd;d<ggfgd=d>d?gd�}t|ƒ}t||j	ƒ}t|j|kƒ t|j|kƒ t  	dtfd@tfg¡}	t  	dA|	fd)|	fdB|	fg¡}
t  d!|
¡}t|td�}t|t jdCtd�ƒ dDdE„ }dFdG„ }dOdHdI„}|||t jt jƒd4ƒƒ}t||ƒdJt j|fƒ |||t jd3ƒd3ƒƒ}t||ƒdKt j|fƒ |t jƒ}t||ƒdLt j|fƒ |t j||t jd3ƒd3ƒƒ}t||ƒdMt j|fƒ |ƒ }tttt  d4|¡ƒ tttt  d4|¡t jd� tttt jdNt jd�ƒ d S )PNr)   ©r-   Úi4)r.   zf4,u2)ÚcÚf4r   r#   )r)   r+   Úf8)r   r   r+   )r)   r+   é   )r{   é   é   )r   r}   é   )r9   rw   )r:   ry   )r;   rz   r9   r;   rd   )Zaxisr'   g      @g      "@ç      &@r   g      @ç      @ç      $@r   r   )r   r   r+   )r,   r{   ç       @r   )r   r~   g      *@g      ,@é   )g      0@é   g      2@g      3@r.   )Úf0ry   )Úf1Úu2)rx   ry   ©r   gUUUUUU@gUUUUUU@gUUUUUU!@)r:   rw   )r;   rw   r   r   rf   rk   r{   r|   é	   r}   r~   ro   é   )Zx0rw   )Úx1)rw   r   )Zx2)rw   ©r   r   r:   r-   rx   )r   rk   c                 S   s   t  | |f¡S ©N)r2   r$   )rt   Ú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Úirt   r=   r=   r>   Ú
<listcomp>$  s     zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r2   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#   )r2   rp   r   r   rŽ   r$   )rt   r$   ÚarrÚretZbackarrr=   r=   r>   Úinspect&  s    
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rk   rG   rF   )r+   )rf   r   )N)r2   rp   r   r   r3   ZmeanÚarangeZreshaper   r$   r   r   Úbaser5   Zint32r   Ú
ValueErrorÚNotImplementedError)r8   r-   Úoutr.   rx   ZwantÚdÚddZdddÚpointÚtriangler—   Úresr�   r–   r™   rt   r=   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   r9   r:   r#   )r2   rp   r4   r$   r   r   )r8   r-   Ztest_dtype_argsZ
test_dtypeZfield1Zfield2r=   r=   r>   Útest_unstructured_to_structuredA  s    

z0TestRecFunctions.test_unstructured_to_structuredc                 C   s^  t jddddg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   rv   )r.   rz   ©rx   Úu1r#   ©r.   ry   ©r   r   )rf   r)   F)Zzero_unassigned)r   r   r   )r   rf   r)   )r   r   r   )r   rf   r)   r-   )rˆ   )©rf   )r©   )©r   rf   ))r   r   ))r   rf   rf   r   r=   )r2   Úonesr   r   r3   r   r$   )r8   r-   Znewdtr.   r=   r=   r>   Útest_field_assignment_by_nameJ  s&    


z.TestRecFunctions.test_field_assignment_by_nameN)Ú__name__Ú
__module__Ú__qualname__r?   rE   rJ   rN   rS   rV   r[   ri   rl   ru   r¤   r¥   r­   r=   r=   r=   r>   r      s   	! !Z	r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestRecursiveFillFieldsc                 C   sf   t jddgdtfdtfgd�}t jd|jd�}t||ƒ}t jdddgdtfdtfgd�}t||ƒ d S )N©r   r�   ©r   ç      4@r   r    r#   rª   ©r   ç        )r2   r3   r5   r4   rp   r$   r	   r   ©r8   r-   r.   rD   rI   r=   r=   r>   Útest_simple_flexibleh  s    
ÿz,TestRecursiveFillFields.test_simple_flexiblec                 C   st   t jddgddgdtfdtfgd�}t jd|jd	�}t||ƒ}t jddd
gdddgdtfdtfgd�}t||ƒ d S )Nr²   r³   ©r   r   r_   r   r    r`   rª   r#   rµ   r^   )rg   r3   r5   r4   rp   r$   r	   r   r·   r=   r=   r>   Útest_masked_flexibleq  s    ÿ
þz,TestRecursiveFillFields.test_masked_flexibleN)r®   r¯   r°   r¸   rº   r=   r=   r=   r>   r±   f  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   sz   t  ddg¡}t  dddg¡}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=   r-   r.   r/   r0   Úbcr1   r7   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 )NrF   rˆ   r…   r#   Fr@   T)r6   r   r2   r3   r5   r   ©r8   Ú_r9   r;   rD   rI   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   Fr@   T)r   r   r'   )r)   r+   r,   r-   r/   r0   r#   )r6   r   r   r2   r3   r5   r4   ©r8   r<   rD   rI   r=   r=   r>   Útest_solo_w_flatten™  s    


ÿz#TestMergeArrays.test_solo_w_flattenc                 C   sœ   | j \}}}}t||fdd�}tjdddgdtfdtfgd�}t||ƒ t||fd	d�}tjdddgd
d
dgdtfdtfgd�}t||ƒ t|j|jƒ d S )NF©Úusemask©r   r   ©r   r   ©rd   r   r…   r†   r#   Tr^   r_   r`   )r6   r   r2   r3   r5   r   rg   ra   ©r8   rÀ   r9   r:   rD   rI   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 )NTr@   )r   r   r   )r   r    r!   r…   r"   r    r#   F)r   r   )r   r   r†   ©r6   r   r2   r3   r5   r4   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 )NTr@   )r   r   r   r'   )r   r)   r+   r,   r…   r-   r/   r0   r#   Fr†   r.   r¾   )r   r¼   )r   r½   rË   )r8   r<   r9   rÀ   rD   rI   Zcontroldtyper=   r=   r>   Útest_flatten_wflexibleÂ  s(    
  ÿÿ
ÿÿ
ÿz&TestMergeArrays.test_flatten_wflexiblec                 C   s˜   | j \}}}}tjdddgdddgd�}t||fdd�}tjdd	d
gdddgdtfdtfgd�}t||ƒ t||fddd�}t||ƒ tt|tƒƒ d S )Nr   r   rf   r   rj   TrÄ   ©r   r   rŒ   )rd   rf   r¹   r^   r_   r…   r†   r`   )rÅ   Z
asrecarray)	r6   rg   r3   r   r5   r   r   Ú
isinstancer   )r8   rÀ   r9   ZmxrD   rI   r=   r=   r>   Útest_wmasked_arraysÓ  s    þ

z#TestMergeArrays.test_wmasked_arraysc                 C   sd   t t ddg¡ dtfg¡t dddg¡fƒ}tjddd	gd
d
dgdtfdtfgd�}t||ƒ d S )Nr   r   r-   r�   r´   rK   r²   r³   )rd   rK   r^   r_   r†   r`   )r   r2   r3   rM   r5   rg   r4   r   )r8   rD   rI   r=   r=   r>   Útest_w_singlefieldà  s    ÿþz"TestMergeArrays.test_w_singlefieldc                 C   sT   | j d }t|t dddg¡ dtfg¡fƒ tjdddgd	d
tfdtfgd� d S )Nrd   r   r   r   r]   ©r   r   r   ©r    r!   r   )z-1rd   r   r"   r    r#   )r6   r   r2   r3   rM   r5   r4   )r8   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Ë   )r8   rÀ   r9   r:   r;   rD   rI   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»   }  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   st   t  ddg¡}t  dddg¡}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   r1   r7   r=   r=   r>   r?     s     
ÿ
ÿzTestAppendFields.setup_methodc                 C   sX   | j \}}}}t|ddddgd�}tjdddgd	d	d
gdtfdtfgd�}t||ƒ d S )Nr   r   r   r   ©r6   rÆ   rÇ   rÈ   r^   r_   r…   r`   ©r6   r   rg   r3   r5   r   ©r8   rÀ   r9   rD   rI   r=   r=   r>   Útest_append_single  s    þz#TestAppendFields.test_append_singlec                 C   sf   | j \}}}}t|ddddgddggd�}tjdd	d
gdddgdtfdtfdtfgd�}t||ƒ d S )NrO   r   r   r   éd   éÈ   rÙ   )r   r   rÝ   )r   r   rÞ   )rd   r   rd   ©r   r   r   )r   r   r   r…   r   r    r`   rÚ   rÛ   r=   r=   r>   Útest_append_double  s    þz#TestAppendFields.test_append_doublec                 C   sV   | j d }t|ddddgd�}tjddd	gd
d
dgddtfdtfgd�}t||ƒ d S )Nrd   r]   r   r   r   rÙ   rÒ   rÓ   )rd   ç      ð¿r   rß   ©r   r   r   r"   r    r`   )r6   r   rg   r3   r4   r5   r   )r8   r;   rD   rI   r=   r=   r>   Útest_append_on_flex   s    
þz$TestAppendFields.test_append_on_flexc                 C   sf   | j d }t|ddddgd�}tjddd	gd
d
dg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)   r*   r   )rd   )rd   rá   r   )r   r^   r   )r   rÎ   r   r-   r.   r/   r0   r`   )r6   r   rg   r3   r5   r4   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   st   t  ddg¡}t  dddg¡}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   r1   r7   r=   r=   r>   r?   :  s     
ÿ
ÿzTestStackArrays.setup_methodc                 C   sP   | j \}}}}t|fƒ}t||ƒ t||kƒ t|ƒ}t||ƒ t||kƒ d S r�   )r6   r   r   r   )r8   rÀ   r9   rD   r=   r=   r>   rÁ   C  s    


zTestStackArrays.test_soloc                 C   sš   | j \}}}}t||fdd�}t ddddg¡}t||ƒ t||fdd�}t dddddg¡}t||ƒ t||fdd�}t dddddg¡}t||ƒ d S )NFrÄ   r   r   r   r   r   )r6   r   r2   r3   r   rÉ   r=   r=   r>   Útest_unnamed_fieldsN  s    

z#TestStackArrays.test_unnamed_fieldsc                 C   s  | j \}}}}t||fƒ}tjddddgddddgdtfdd	tfgd
�}t||ƒ t|j|jƒ t||fƒ}tjddddgddddgdd	tfdtfgd
�}t||ƒ t|j|jƒ t|||fƒ}tjddddddgddddddgdd	tfdtfgd
�}t||ƒ d S )N)r   rd   rd   )r   rd   rd   )rd   r   r   )rd   r    r   )r   r   r   )r   r   r   r…   r"   r    r`   ©r   r   rd   ©r    r   rd   )rd   rd   r   )rd   rd   r   ©r   r   r   râ   rÖ   )r6   r   rg   r3   r5   r4   r   ra   r¿   r=   r=   r>   Útest_unnamed_and_named_fields^  sV     ÿ ÿü
 ÿ ÿü
  þ  þúz-TestStackArrays.test_unnamed_and_named_fieldsc              
   C   sô   | j \}}}}tjdddgddtfdtfgd�}t||fƒ}tjdd	dddgddtfdtfgd
d
dddgd�}t||ƒ t|j|jƒ t|||fƒ}ddtfdtfdtfg}tjdddddddg|dddddddgd�}t||ƒ t|j|jƒ d S )N©r-   r�   ç      Y@©r.   r´   ç      i@©rx   rK   ç     Àr@r"   r    r]   r#   rç   rè   ré   rß   ©r$   ra   Zf3)r   r   rd   rd   )r    r   rd   rd   )r-   r�   rì   rd   )r.   r´   rî   rd   )rx   rK   rð   rd   )rd   rd   rd   r   )rd   rd   rd   r   )r   r   r   r   ©r   r   r   r   )r   r   r   r   )	r6   r2   r3   r4   r   rg   r   ra   r5   )r8   rÀ   r9   r;   ÚzzrD   rI   rR   r=   r=   r>   Útest_matching_named_fields~  sN    ÿ þ  ÿü
  ý   þû
z*TestStackArrays.test_matching_named_fieldsc                 C   sª   | j \}}}}tjdddgddtfdtfgd�}dd	d
ddœ}t||f|d�}tjdddddgddtfdtfgdddddgd�}t||ƒ t|j |j ƒ t|j|jƒ d S )Nrë   rí   rï   r"   r    r]   r#   z???g     8�Àç    €‡ÃÀg    ðiøÀ)r   r    r]   ÚD)Údefaults)r   r   rõ   )r    r   rõ   ré   rß   rñ   )r6   r2   r3   r4   r   rg   r   ra   )r8   rÀ   r;   ró   r÷   rD   rI   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 5 Q R X d S )Nr   r    r]   ©r   r   rf   ©r   r   r   r`   ©r)   r+   rk   r#   rß   T)ZautoconvertF)
r5   Úboolr4   rg   r3   r   r   ra   r   Ú	TypeError)r8   Úadtyper-   Úbdtyper.   rI   rD   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    )rx   r]   rù   rú   r`   rû   r#   rß   )r5   rü   r4   rg   r3   r   r   ra   )r8   rþ   r-   rÿ   r.   rD   rI   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    rF   r#   r-   r�   rì   r.   r´   rî   rx   rK   rð   r]   ó   Ar   r   ó   Br!   ó   aó   bó   cFT)r6   ra   r$   )r2   r3   r4   r   rg   r$   r   ra   )r8   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å   8  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.   rx   r#   r+   rƒ   éA   éK   rŸ   ©r2   r3   ÚlistÚziprš   r5   r-   r.   ©r8   r=   r=   r>   r?   ä  s    
ÿþ
ÿþzTestJoinBy.setup_methodc                 C   sb   | j | j }}td||dd�}tjdddddg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Ý   )rk   é8   éB   éj   ée   )r{   é9   éC   ék   éf   )r|   é:   éD   él   ég   )r‰   é;   éE   ém   éh   Úb1Úb2rx   rŸ   r#   ©r-   r.   r   r2   r3   r5   r   r·   r=   r=   r>   Útest_inner_joinì  s     þ ÿýzTestJoinBy.test_inner_joinc                 C   sN   | j | j }}td||ƒ tjdddddgdtfdtfd	tfd
tfgd� d S )NrT   )r+   r  r  rÝ   )rk   r  r  r  )r{   r  r  r  )r|   r  r!  r"  )r‰   r#  r%  r&  r-   r.   rx   rŸ   r#   )r-   r.   r   r2   r3   r5   ©r8   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  dddg¡fgdtfdgd�}td||ƒ}t|| tj¡ƒ d S )NrF   re   r#   r   r   rf   )ÚvalueZuint16rf   )r2   r3   r5   r   r   rM   rg   ZMaskedArray)r8   ZfooÚbarr£   r=   r=   r>   Útest_join_subdtype  s    ÿ
ÿzTestJoinBy.test_join_subdtypec                 C   s¢   | j | j }}td||dƒ}tjddddddd	d
ddddddddddddgddddddddddddddddddddgdtfdtfdtfdtfgd�}t||ƒ d S )NrT   Úouter©r   r
  rÝ   rd   ©r   é3   r  rd   ©r   é4   r  rd   ©rf   é5   r"  rd   ©r)   é6   r&  rd   ©r+   r  r  rd   )r+   r  rd   rÝ   ©rk   r  r  rd   )rk   r  rd   r  ©r{   r  r  rd   )r{   r  rd   r  ©r|   r  r!  rd   )r|   r   rd   r"  ©r‰   r#  r%  rd   )r‰   r$  rd   r&  )r   éF   rd   r  )r}   éG   rd   r  )r~   éH   rd   r  )ro   éI   rd   r!  )rŠ   éJ   rd   r%  rò   )r   r   r   r   r-   r.   rx   rŸ   r`   ©r-   r.   r   rg   r3   r5   r   r·   r=   r=   r>   Útest_outer_join  s`             ÷
         ÷
 ÿìzTestJoinBy.test_outer_joinc                 C   sz   | j | j }}td||dƒ}tjddddddd	d
ddg
ddddddddddg
dtfdtfdtfdtfgd�}t||ƒ d S )NrT   Z	leftouterr1  r2  r4  r6  r8  r:  r;  r<  r=  r>  rò   r-   r.   rx   rŸ   r`   rD  r·   r=   r=   r>   Útest_leftouter_join1  s2        ü    üözTestJoinBy.test_leftouter_joinc                 C   sX   t jddddgd�}t jddddgd�}tddg||dd	d
�}t|jjddddgƒ d S )Nrf   rv   r¨   r¦   r#   rx   r.   r  F)r  rÅ   Za1Za2)r2   rp   r¬   r   r   r$   Únames)r8   r-   r.   Újr=   r=   r>   Útest_different_field_orderB  s    z%TestJoinBy.test_different_field_orderc                 C   sB   t jddddgd�}t jddddgd�}tttdddg||ƒ d S )Nrf   rv   r¨   r¦   r#   r-   r.   )r2   rp   r¬   r   rœ   r   r+  r=   r=   r>   Útest_duplicate_keysJ  s    zTestJoinBy.test_duplicate_keysc                 C   sl   t  ddg¡}t  ddg¡}t  dddg¡}t jddg|d�}t jd	d
g|d�}td||ƒ}t|j|ƒ d S )N)re   ZS5©r-  ú<f4©re   ZS10©Zvalue1rL  )Úvalue2rL  ©ÚSarahr‚   ©ÚJohnr,   r#   ©rQ  r�   ©rS  r€   re   ©r2   r$   r3   r   r   ©r8   Úa_dtypeÚb_dtypeÚexpected_dtyper-   r.   r£   r=   r=   r>   Ú#test_same_name_different_dtypes_keyO  s      ÿz.TestJoinBy.test_same_name_different_dtypes_keyc                 C   sl   t  ddg¡}t  ddg¡}t  dddg¡}t jddg|d	�}t jd
dg|d	�}td||ƒ}t|j|ƒ d S )NrM  rK  )r-  ú<f8)re   z|S10rN  )rO  r\  rP  rR  r#   rT  rU  re   rV  rW  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dddgt jfdddgdfg|d�}t  dtdfdg¡}t jdddgdfdddgdfg|d�}t  dtdfddg¡}t jdddgt jdfg|d�}td||ƒ}t|j|ƒ t||ƒ d S )	NÚposrf   )ÚfrL  r   r   r¶   r#   )ÚgrL  )r2   r$   r5   r3   Úpir   r   )r8   rX  r-   rY  r.   rZ  r  r£   r=   r=   r>   Útest_subarray_keyh  s    (&zTestJoinBy.test_subarray_keyc                 C   sp   t jddd�}d|_tt|jƒdƒ t  ddg|¡}t  dd	g|¡}td
||ƒ}t  dddg¡}t|j|ƒ d S )Nzi1,f4Trm   )ÚkÚvrf   r«   )rf   r   rÎ   rŒ   rc  )rc  Úi1)Zv1ry   )Zv2ry   )	r2   r$   rG  r   ÚlenÚdescrr3   r   r   )r8   rt   r-   r.   r£   rZ  r=   r=   r>   Útest_padded_dtypev  s      ÿzTestJoinBy.test_padded_dtypeN)r®   r¯   r°   r?   r*  r,  r/  rE  rF  rI  rJ  r[  r]  rb  rh  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.   rx   r#   r  r  rŸ   r  )Úclsr=   r=   r>   r?   ˆ  s    
ÿþ
ÿþzTestJoinBy2.setup_methodc                 C   sp   | j | j }}td||dddd�}tjdddd	d
dddddg
dtfdtfdtfdtfdtfgd�}t||ƒ d S )Nr-   rB   Ú2r  ©Ú	r1postfixÚ	r2postfixr  ©r   r
  r  rÝ   rÝ   ©r   r3  r  r  r  ©r   r5  r  r  r  ©rf   r7  r   r"  r"  ©r)   r9  r$  r&  r&  ©r+   r  r?  r  r  ©rk   r  r@  r  r  ©r{   r  rA  r  r  ©r|   r  rB  r!  r!  ©r‰   r#  rC  r%  r%  r.   r(  rx   rŸ   r#   r)  r·   r=   r=   r>   Útest_no_r1postfix‘  s2         ÿ    ü ÿûzTestJoinBy2.test_no_r1postfixc              	   C   s   t ttd| j| jddd� d S )Nr-   rB   )rm  rn  )r   rœ   r   r-   r.   r  r=   r=   r>   Útest_no_postfix   s     ÿzTestJoinBy2.test_no_postfixc                 C   sp   | j | j }}td||dddd�}tjdddd	d
dddddg
dtfdtfdtfdtfdtfgd�}t||ƒ d S )Nr-   Ú1rB   r  rl  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  r'  r.   rx   rŸ   r#   r)  r·   r=   r=   r>   Útest_no_r2postfix¤  s2         ÿ    ü ÿûzTestJoinBy2.test_no_r2postfixc                 C   s6  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ddddddddddg
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   rc  r-   r.   rx   r#   r  r  r   )r   r   r
  r  r   r   )r}   r   r3  r  r}   r   )r   r   r5  r  r~   r   )r}   r   r7  r   ro   rf   )r   r   r9  r$  rŠ   r)   )r}   r   r  r?  rƒ   r+   )r   rf   r  r@  é   rk   )r}   rf   r  rA  r„   r{   )r   r)   r  rB  é   r|   )r}   r)   r#  rC  é   r‰   r'  r(  Úc1Úc2r{  rk  r  rl  )r2   r3   r  r  ZtileÚrepeatrš   r5   r   r   r$   )r8   r-   r.   rI   rD   r=   r=   r>   Útest_two_keys_two_vars³  sL    &
 
ÿþ&
 
ÿþ    ü  ÿû     ÿz"TestJoinBy2.test_two_keys_two_varsN)	r®   r¯   r°   Úclassmethodr?   ry  rz  r|  rƒ  r=   r=   r=   r>   ri  ‡  s   
ri  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†  Údictr6   )r8   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)r6   rÅ   N)r6   r2   r3   Úobjectr4   r5   r   r   )r8   r‡  r9   r:   rD   rI   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Únumpyr2   Znumpy.marg   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_fieldspecrP   rU   Z
_zip_descrrC   Z
_zip_dtypeZ	zip_dtyper   r±   r»   rØ   rå   r	  ri  r…  r=   r=   r=   r>   Ú<module>   s0   D




  T 6 , %A