U
    SA{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                   @   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   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=   úE/tmp/pip-unpacked-wheel-m6chaliv/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©Z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+   é   )rz   é   é   )r   r|   é   )r9   rv   )r:   rx   )r;   ry   r9   r;   rd   )Zaxisr'   g      @g      "@ç      &@r   g      @ç      @ç      $@r   r   )r   r   r+   )r,   rz   ç       @r   )r~   r}   g      *@g      ,@é   )g      0@é   g      2@g      3@r.   )Úf0rx   )Úf1Úu2)rw   rx   ©r   gUUUUUU@gUUUUUU@gUUUUUU!@)r:   rv   )r;   rv   r   r   rf   rk   rz   r{   é	   r|   r}   rn   é   )Zx0rv   )Úx1)rv   r   )Úx2)rv   ©r   r   r:   r-   rw   )r   rk   c                 S   s   t  | |f¡S ©N)r2   r$   )rs   Ú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Úirs   r=   r=   r>   Ú
<listcomp>$  s     zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r2   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#   )r2   ro   r   r   rŽ   r$   )rs   r$   ÚarrÚretZbackarrr=   r=   r>   Úinspect&  s    
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rk   rG   rF   )r+   )rf   r   )N)r2   ro   r   r   r3   ZmeanÚarangeZreshaper   r$   r   r   Úbaser5   Zint32r   Ú
ValueErrorÚNotImplementedError)r8   r-   Úoutr.   rw   ZwantÚdÚddZdddÚpointZtriangler–   Úresr�   r•   r˜   rs   r=   r=   r>   Útest_structured_to_unstructuredç   s–    ÿý
þü
ÿÿÿÿÿÿþ


 ÿÿz0TestRecFunctions.test_structured_to_unstructuredc                 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   ru   )r.   ry   ©rw   Úu1r#   ©r.   rx   ©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_nameA  s&    


z.TestRecFunctions.test_field_assignment_by_nameN)Ú__name__Ú
__module__Ú__qualname__r?   rE   rJ   rN   rS   rV   r[   ri   rl   rt   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   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   ro   r$   r	   r   ©r8   r-   r.   rD   rI   r=   r=   r>   Útest_simple_flexible_  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   ro   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   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?   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 )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¸   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   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?   1  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¾   :  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_fieldsE  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_fieldsU  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@©rw   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   )rw   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_fieldsu  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    )rw   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ë   rw   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â   /  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.   rw   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   )rz   é9   éC   ék   éf   )r{   é:   éD   él   ég   )rˆ   é;   éE   ém   éh   Úb1Úb2rw   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  )rz   r  r  r  )r{   r  r  r  )rˆ   r   r"  r#  r-   r.   rw   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  ©rz   r  r  rd   )rz   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  )rn   éI   rd   r  )r‰   éJ   rd   r"  rï   )r   r   r   r   r-   r.   rw   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	leftouterr.  r/  r1  r3  r5  r7  r8  r9  r:  r;  rï   r-   r.   rw   rž   r`   rA  r´   r=   r=   r>   Útest_leftouter_join(  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   ru   r¥   r£   r#   rw   r.   r  F)r  rÂ   Za1Za2)r2   ro   r©   r   r   r$   Únames)r8   r-   r.   Újr=   r=   r>   Útest_different_field_order9  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   ru   r¥   r£   r#   r-   r.   )r2   ro   r©   r   r›   r   r(  r=   r=   r>   Útest_duplicate_keysA  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value1rI  )Úvalue2rI  ©ÚSarahr�   ©ÚJohnr,   r#   ©rN  r€   ©rP  r   re   ©r2   r$   r3   r   r   ©r8   Ú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   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 )NrJ  rH  )r*  ú<f8)re   z|S10rK  )rL  rY  rM  rO  r#   rQ  rR  re   rS  rT  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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   )ÚfrI  r   r   r³   r#   )ÚgrI  )r2   r$   r5   r3   Úpir   r   )r8   rU  r-   rV  r.   rW  r  r¡   r=   r=   r>   Útest_subarray_key_  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Œ   r`  )r`  Úi1)Úv1rx   )Zv2rx   )	r2   r$   rD  r   ÚlenÚdescrr3   r   r   )r8   rs   r-   r.   r¡   rW  r=   r=   r>   Útest_padded_dtypem  s      ÿzTestJoinBy.test_padded_dtypeN)r«   r¬   r­   r?   r'  r)  r,  rB  rC  rF  rG  rX  rZ  r_  rf  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.   rw   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   r0  r  r  r  ©r   r2  r  r  r  ©rf   r4  r  r  r  ©r)   r6  r!  r#  r#  ©r+   r  r<  r  r  ©rk   r  r=  r  r  ©rz   r  r>  r  r  ©r{   r  r?  r  r  ©rˆ   r   r@  r"  r"  r.   r%  rw   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   )rk  rl  )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  rj  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  r$  r.   rw   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   r`  r-   r.   rw   r#   r
  r  r   )r   r   r  r
  r   r   )r|   r   r0  r  r|   r   )r   r   r2  r  r}   r   )r|   r   r4  r  rn   rf   )r   r   r6  r!  r‰   r)   )r|   r   r  r<  r‚   r+   )r   rf   r  r=  é   rk   )r|   rf   r  r>  rƒ   rz   )r   r)   r  r?  é   r{   )r|   r)   r   r@  é   rˆ   r$  r%  Zc1Úc2ry  ri  r  rj  )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?   rw  rx  rz  r€  r=   r=   r=   r>   rg  ~  s   
rg  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pytestZ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  rg  r‚  r=   r=   r=   r>   Ú<module>   s0   D




  K 6 , %A