3
Kdà                 @   s,  d dl Z d dlZd dlj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 jddg}t j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       @|S3)dtype      @            @abbabb)r   r   )r   r   )r   r   r   r!   )r   r)   r#   r$   )r"   r*   )nparrayfloatintdata)selfxyzw r5   U/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_recfunctions.pysetup   s    

 zTestRecFunctions.setupc          
   C   sH  | j \}}}}t||fdd}t|tjdtfdtfg t||fdd}t|tjdtfdtfg t||fdd}t|tjdtfddtfg t||fdd}t|tjdtfdddtfgfg t||fdd}t|tjdtfdtfd	tfd
tfg t||fdd}t|tjdtfddtfdd	tfd
tfgfgfg d S )NT)flatten Fr   |S3r   r%   r'   r(   r&   )r   r:   )r   r:   )r/   	zip_descrr   r+   r    r.   r-   )r0   r4   r1   r2   r3   testr5   r5   r6   test_zip_descr    s0    


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f f gg d}t|| d S )Nr   r         @r"   r#         @r%   r&   r'   r(   )r    r   r>   )r   r@   r#   r?   )r"   rA   r   r>   )rB   r#   r?   )rC   )r   )r"   r>   )r   rD   r?   )r"   rE   )r   )r"   )r+   r,   r.   r-   r   r   )r0   r%   r<   controlr5   r5   r6   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}|j|}t|j| t|| d S )Nr   r   g      @g      >@r"   r#   g      @g      N@r%   r&   r'   r(   )r    r   BB)r%   r(   )r+   r,   r.   r-   r   viewr   r    )r0   r%   r<   ZnewdtyperF   r5   r5   r6   test_rename_fieldsa   s    " 
z#TestRecFunctions.test_rename_fieldsc             C   s   t jddtfg}t|}t|d	 t jdtfddtfdtfgfg}t|}t|d t jdtfdg fg}t|}t|ddf ff t jg }t|}t|f  d S )Nr   |S3r   r%   r&   r'   r(   )r   rK   )r   r   r'   r(   r&   rL   )r%   rM   )r+   r    r-   	get_namesr   r.   )r0   ndtyper<   r5   r5   r6   test_get_namesl   s    
"

zTestRecFunctions.test_get_namesc             C   s   t jddtfg}t|}t|d	 t jdtfddtfdtfgfg}t|}t|d
 t jdtfdg fg}t|}t|d t jg }t|}t|f  d S )Nr   |S3r   r%   r&   r'   r(   )r   rQ   )r   r   )r%   r&   r'   r(   )r%   r&   )r+   r    r-   get_names_flatr   r.   )r0   rO   r<   r5   r5   r6   test_get_names_flat~   s    
"


z$TestRecFunctions.test_get_names_flatc             C   s   t jddtfg}t|}t|g g d t jdtfddtfdgfg}t|}t|g g dgdgd t j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 jg }t|}t|i  d S )Nr   |S3r   )r   r   BArH   |S1)r   r   rU   rH   BBABBB)r   r   rU   rH   rW   rX   )r   rT   )rH   rV   )r+   r    r-   r   r   r.   )r0   rO   r<   rF   r5   r5   r6   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 ||d0   t|ddd}ddddg}tt|d1 | t|d ||d2   t|d	dd}ddddg}tt|d3 | t|d ||d4   t|d
dd}dddddg}tt|d5 | t|d ||d6   d S )7Nr          @r   r         ?Cr   r   rU   rH   |S1)maskr    FT)
ignoremaskreturn_index)keyr`      r#   r"   rZ   r   )r   rc   rZ   r   )r   rd   rZ   r   )r   re   r[   r   )r   rf   rZ   r   )r   rg   rZ   r\   )r   rh   r   r   )r   ri   r   r   )r   rj   r   r   )r   rk   r   r   )r   rl   r   r   )r   rm   r   r   )r   rn   )rH   r]   ro   ro   ro   ro   ro   ro   ro   ro   ro   )mar,   r.   r-   r
   r   sorted)r0   r%   r<   rF   r5   r5   r6   test_find_duplicates   s2    
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j|}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   rb   r   )r^   T)r_   r`   r"   F   ro   ro   ro   ro   )r.   rp   r,   rI   r
   r   rq   )r0   rO   r%   r<   rF   r5   r5   r6   test_find_duplicates_ignoremask   s    
z0TestRecFunctions.test_find_duplicates_ignoremaskc             C   s~   t jddd}t jd|d}tt|t jd tt|jd ttt|dd| t jt j|f}tt|jt jk d S )Nzu1,f4,i8T)alignr   )r       )	r+   r    zerosr   r   itemsizerecordr   type)r0   dtr%   r5   r5   r6   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@dAdBgdCdDdEgd	}t jt|ddg dFd}t|t jddddg t jt|dg dGd}t|t jddddg t jdjdH}t||j	}t jddIddgfd
dJd!dgfddKd"d#gfd$dLd'd(gfgdMddNdOgfdQgd	}t|| t jdRdSdTdUgdVdWdXgd	}tt
t j|t jdYdZd[dg tt
t j|ddg t jddddg t jd\d]d^d_gd`dadbgd	}t|}t||j	}t|j|k t|j|k t jddd,gdd
gd.dggfdd/dgddgd0d1ggfgdcdedhgd	}t|}t||j	}t|j|k t|j|k t j	dtfdtfg}	t j	d|	fd|	fd|	fg}
t jd|
}t|td	}t|t jditd	 d5d6 }d7d8 }djd9d:}|||t jt jd,}t||dkt j|f |||t jdd}t||dlt j|f |t j}t||dmt j|f |t j||t jdd}t||dnt j|f | }tttt jd,| tttt jd,|t jd	 tttt jdot jd	 d S )pNr"   r%   i4r&   f4,u2cf4r   )r    r#   f8r            r      r1   r2   r3   )Zaxisg      @g      @g      "@      &@      ?g      @g      @g      $@r   r         @g       @g      *@g      ,@         0@   g      2@g      3@f0f1u2rb   g      :@rs   	   rv      x0x1x2c             S   s   t j| |fS )N)r+   r    )r{   shaper5   r5   r6   subarray   s    zBTestRecFunctions.test_structured_to_unstructured.<locals>.subarrayc              W   s   t jdd t| D S )Nc             S   s   g | ]\}}d j ||fqS )zx{})format).0ir{   r5   r5   r6   
<listcomp>$  s    zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r+   r    	enumerate)Zdtsr5   r5   r6   
structured#  s    zDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredc             S   s2   t jf | }t||d}t|| }|j|j|jfS )N)r    )r+   rw   r   r   r   r    )r{   r    arrretZbackarrr5   r5   r6   inspect&  s    
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)r%   r}   )r&   r~   )r   r   r   )r"   r#   )r   r   r#   )r"   r#   r   )r   r   r   )r   r   r   )r1   r}   )r2   r   )r3   r   ro   ro   )r"   r#   )r   r   )r   r   )r   r   )r   r   )r%   r}   )r   r   )r   r   r   )r   r   r   )r   r   r#   )r"   r#   r   )r   r   r   )r   r   r   )r1   r}   )r2   r   )r3   r   gUUUUUU@gUUUUUU@gUUUUUU!@)r   r   r#   )r"   r#   r   )r   r   r   )r   r   r   )r1   r}   )r2   r}   )r3   r}   )r   r}   r}   r   )r   r   r   r   r}   r   )r   r   )r   rs   )N)rs   )r"   )r   )r#   )rb   r   )r+   rw   r   r   r,   ZmeanarangeZreshaper   r    r   r   baser.   Zint32r   
ValueErrorNotImplementedError)r0   r%   outr&   r   ZwantdddZdddZpointZtriangler   resr   r   r   r{   r5   r5   r6   test_structured_to_unstructured   sz    





z0TestRecFunctions.test_structured_to_unstructuredc             C   s^  t jddddgd}ddg}tt||t j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 j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t jd }}t|| t|f  d d S )*Nr   r%   r}   r&   r   r   u1)r    r   r   rb   r"   F)Zzero_unassignedr   )r%   r}   )r&   r   )r   r   )r&   r   )r   r   )r   r   )rb   r"   )r   r   r   )r   rb   r"   )r   r   r   )r   rb   r"   )r&   r   )r   r   )r   r   r   )r   rb   )r   r   r   )r   r   rb   )r   r   r   )r   r   rb   )r   )r+   onesr   r   r,   r   r    )r0   r%   Znewdtr&   r5   r5   r6   test_field_assignment_by_nameA  s&    


z.TestRecFunctions.test_field_assignment_by_nameN)__name__
__module____qualname__r7   r=   rG   rJ   rP   rS   rY   rr   rt   r|   r   r   r5   r5   r5   r6   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 )Nr         $@r         4@r   r   )r    rb   r           )r   r   )r   r   )rb   )r   r   )r   r   )r   r   )r+   r,   r.   r-   rw   r    r	   r   )r0   r%   r&   r<   rF   r5   r5   r6   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         4@r   r   r   )r^   r    rb   )r            )r   r   )r   r   )r   r   )r   r   )rb   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )rp   r,   r.   r-   rw   r    r	   r   )r0   r%   r&   r<   rF   r5   r5   r6   test_masked_flexibleh  s    
z,TestRecursiveFillFields.test_masked_flexibleN)r   r   r   r   r   r5   r5   r5   r6   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   s   t jddg}t jdddg}t jddgddtfgd}t jdddf ffdddf ff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          @|S3)r    g      @r"   r#   g      @r%   r&   r'   r(   bc)r   r   )r   r   )r   r   )r+   r,   r-   r.   r/   )r0   r1   r2   r3   r4   r5   r5   r6   r7   w  s    &zTestMergeArrays.setupc             C   s|   | j \}}}}t|}tjdd	gdtfgd}t|| t|f}t|| t|dd}t|| t|dd}t|| d S )
Nr   r   r   )r    F)r8   T)r   )r   )r/   r   r+   r,   r.   r   )r0   _r1   r3   r<   rF   r5   r5   r6   	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   F)r8   Tr   r         @r"   r#         @r%   r'   r(   )r    )r   r   r   )r"   r#   r   )r/   r   r   r+   r,   r.   r-   )r0   r4   r<   rF   r5   r5   r6   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)usemaskr   r   r   r   r   r   r   )r    Tr   )r^   r    )r   r   )r   r   ro   )ro   r   )r   r   )r   r   ro   )ro   r   )r   r   )r   r   )r   r   )r/   r   r+   r,   r.   r   rp   r^   )r0   r   r1   r2   r<   rF   r5   r5   r6   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 )NT)r8   r   r         ?r   r          @r   |S3)r    Fr   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   )r   r   )r/   r   r+   r,   r.   r-   r   )r0   r   r1   r3   r<   rF   r5   r5   r6   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ddf fffddddf fffg|d}t|| d S )NT)r8   r   r         @r"   r#         @r   r%   r'   r(   )r    Fr   r&   r   g      ?)r   r   r   r   )r   r"   r#   r   )r/   r   r+   r,   r.   r-   r   )r0   r4   r1   r   r<   rF   Zcontroldtyper5   r5   r6   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   rb   r   )r^   T)r   r   r   )r^   r    )r   Z
asrecarray)r   r   )r   r   ro   )ro   rb   )r   r   )r   r   )r   r   )	r/   rp   r,   r   r.   r   r   
isinstancer   )r0   r   r1   Zmxr<   rF   r5   r5   r6   test_wmasked_arrays  s    

z#TestMergeArrays.test_wmasked_arraysc             C   sd   t tjddgjdtfgtj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%         $@      4@      >@r   r   )r^   r    )r   r   )r   r   ro   )ro   r   )r   r   )r   r   )r   r   )r   r+   r,   rI   r.   rp   r-   r   )r0   r<   rF   r5   r5   r6   test_w_singlefield  s    z"TestMergeArrays.test_w_singlefieldc             C   sT   | j d }t|tjdddgjdtfgf tjdddgddtfdtfgd d S )Nr   r   r   r   r\   r         ?r          @-1|S3)r    ro   )r   r   r   )r   r   r   ro   )r   ro   r   )r   r   )r/   r   r+   r,   rI   r.   r-   )r0   r3   r5   r5   r6   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   F)r   r   r   r   r   r   f2|S3r   )r    r   r   )r   r   r   )r   r   )r/   r   r+   r,   r.   r-   r   )r0   r   r1   r2   r3   r<   rF   r5   r5   r6   test_singlerecord  s    z!TestMergeArrays.test_singlerecordN)r   r   r   r7   r   r   r   r   r   r   r   r   r   r5   r5   r5   r6   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 jddg}t j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 )Nr   r   r   r   r   r         ?r          @|S3)r          @r"   r#         @r%   r&   r'   r(   )r   r   )r   r   )r   r   r   r   )r   r   r#   r   )r"   r   )r+   r,   r-   r.   r/   )r0   r1   r2   r3   r4   r5   r5   r6   r7     s    
 zTestAppendFields.setupc             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   )r/   r   r   r   r   )r^   r    )r   r   )r   r   ro   )ro   r   )r   r   )r   r   )r   r   )r/   r   rp   r,   r.   r   )r0   r   r1   r<   rF   r5   r5   r6   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 )Nr   r   r   r   r   d      )r/   r   r   r   r   )r^   r    )r   r   )r   r   r   )r   r   r   ro   ro   )ro   r   ro   )r   r   r   )r   r   r   )r   r   r   )r/   r   rp   r,   r.   r   )r0   r   r1   r<   rF   r5   r5   r6   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 )Nr   r\   r   r   r   )r/   r         ?r          @r   |S3)r^   r    ro   )r   r   r   )r   r   r   ro         )ro   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   )r/   r   rp   r,   r-   r.   r   )r0   r3   r<   rF   r5   r5   r6   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#         @g      ?r%   r&   r'   r(   )r^   r    r   r   )r   r   r   r#   r   )r"   r   r   ro   ro         ro   r   )ro   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   )r/   r   rp   r,   r.   r-   r   )r0   r4   r<   rF   r5   r5   r6   test_append_on_nested   s    
z&TestAppendFields.test_append_on_nestedN)r   r   r   r7   r   r   r   r   r5   r5   r5   r6   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 jddg}t j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 )Nr   r   r   r   r   r         ?r          @|S3)r          @r"   r#         @r%   r&   r'   r(   )r   r  )r   r  )r   r  r   r  )r   r  r#   r  )r"   r  )r+   r,   r-   r.   r/   )r0   r1   r2   r3   r4   r5   r5   r6   r7   1  s    
 zTestStackArrays.setupc             C   sP   | j \}}}}t|f}t|| t||k t|}t|| t||k d S )N)r/   r   r   r   )r0   r   r1   r<   r5   r5   r6   r   :  s    


zTestStackArrays.test_soloc             C   s   | j \}}}}t||fdd}tjddddg}t|| t||fdd}tjdddddg}t|| t||fdd}tjdddddg}t|| d S )NF)r   r   r   r   r   r   )r/   r   r+   r,   r   )r0   r   r1   r2   r<   rF   r5   r5   r6   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/d2d5gd6d7d8d9d:d;gd<dtfd	tfgd}t|| d S )=Nr   r   r   r   r   r   |S3)r^   r    r   ro   ro   )r   ro   ro   ro   ro   )r   ro   ro   ro   )ro   r   r   ro   )ro   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r	  ro   )r   r   ro   ro   )r   r   ro   ro   ro   )ro   ro   r   ro   ro   )ro   ro   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r	  ro   )r   r   ro   ro   )r   r   ro   ro   )r   r   ro   ro   )r   r   ro   ro   ro   )ro   ro   r   ro   ro   )ro   ro   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r	  )r/   r   rp   r,   r.   r-   r   r^   )r0   r   r1   r3   r<   rF   r5   r5   r6   test_unnamed_and_named_fieldsU  s4    

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/d1d5d9g|d:d;d<d=d>d?d@gd}t|| t|j|j d S )ANr%         $@      Y@r&         4@      i@r         >@     r@r   |S3r   r\   )r    r   r   r   )r    r^   Zf3)r%   r  r  )r&   r  r  )r   r  r  )r   r  ro   )r   r   ro   ro   )r   r   ro   )r%   r  r  )r&   r  r  )r   r  r  )r   r  )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r  ro   ro   )r   r   ro   ro   ro   ro   )r   r   ro   ro   ro   )r%   r  r  ro   ro   )r&   r  r  ro   ro   )r   r  r  ro   ro   ro   ro   )ro   ro   ro   r   ro   ro   ro   )ro   ro   ro   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )	r/   r+   r,   r-   r   rp   r   r^   r.   )r0   r   r1   r3   zzr<   rF   rO   r5   r5   r6   test_matching_named_fieldsu  s.    

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%         $@      Y@r&         4@      i@r         >@     r@r   |S3r   r\   )r    z???g     8@g    @g    i@)r   r   r\   D)defaultsr   r   r   )r    r^   )r%   r  r  )r&   r  r  )r   r  r  )r   r  g     8g    g    i    )r   r   r      )r   r   r  )r%   r  r  )r&   r  r  )r   r  r  )r   r  )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r/   r+   r,   r-   r   rp   r   r^   )r0   r   r3   r  r  r<   rF   r5   r5   r6   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 Q R X d S )Nr   r   r\   r   r   rb   r   )r^   r    r"   r#   rs   )r    T)ZautoconvertF)r   r   rb   )r   r   r   )r"   r#   rs   )r   r   rb   )r"   r#   rs   )r   r   r   )r   r   r   )
r.   boolr-   rp   r,   r   r   r^   r   	TypeError)r0   adtyper%   bdtyper&   rF   r<   r5   r5   r6   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 )Nr%   r   r&   r   r   r\   r   r   rb   r   )r^   r    r"   r#   rs   )r    )r%   r   )r&   r   )r   r\   )r   r   rb   )r   r   r   )r%   r   )r&   r   )r   r\   )r"   r#   rs   )r   r   rb   )r"   r#   rs   )r   r   r   )r   r   r   )r.   r   r-   rp   r,   r   r   r^   )r0   r"  r%   r#  r&   r<   rF   r5   r5   r6   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   |S3)r    r%   g      $@g      Y@r&   g      4@g      i@r   g      >@g     r@r\      Ag      ?r      Bg       @   a   b   cFT)r/   r^   r    )r   r   )r   r   )r   r&  )r   )r   r&  )r   )r+   r,   r-   r   rp   r    r   r^   )r0   r3   r  r   expectedr5   r5   r6   test_subdtype  s,     









zTestStackArrays.test_subdtypeN)r   r   r   r7   r   r  r
  r  r  r$  r%  r-  r5   r5   r5   r6   r   /  s   	 r   c               @   sz   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
ejjdddd Zdd Zdd Zdd ZdS )
TestJoinByc             C   s   t jttt jdt jddt jdddtfdtfdtfgd	| _t jttt jd
dt jddt jdddtfdtfdtfgd	| _d S )Nr   2   <   r   n   r%   r&   r   )r    r#   r   A   K   r   )r+   r,   listzipr   r.   r%   r&   )r0   r5   r5   r6   r7     s    zTestJoinBy.setupc          
   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)jointyper#   7   r2  i   r   rs   8   B   j   e   r   9   C   k   f   r   :   D   l   g   r   ;   E   m   h   b1b2r   r   )r    )r#   r8  r2  r9  r   )rs   r:  r;  r<  r=  )r   r>  r?  r@  rA  )r   rB  rC  rD  rE  )r   rF  rG  rH  rI  )r%   r&   r   r+   r,   r.   r   )r0   r%   r&   r<   rF   r5   r5   r6   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 ) Nr%   r&   r#   r8  r9  r   rs   r:  r<  r=  r   r>  r@  rA  r   rB  rD  rE  r   rF  rH  rI  r   r   )r    )r%   r&   )r#   r8  r9  r   )rs   r:  r<  r=  )r   r>  r@  rA  )r   rB  rD  rE  )r   rF  rH  rI  )r%   r&   r   r+   r,   r.   )r0   r%   r&   r5   r5   r6   	test_join  s    zTestJoinBy.test_joinc             C   s`   t jdgdtfgd}t jdt jdddgfgdtfd	gd}td||}t||jtj d S )
Nr   ra   )r    r   rb   valueuint16)r   )rN  rO  rb   )r+   r,   r.   r   r   rI   rp   ZMaskedArray)r0   Zfoobarr   r5   r5   r6   test_join_subdtype  s    zTestJoinBy.test_join_subdtypec             C   s   | j | j }}td4||d}tjd6d8d:d<d>d@dBdDdFdHdJdLdNdPdRdTdVdXdZd\gd]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpgdtfdtfd1tfd2tfgd3}t|| d S )qNr%   r&   outerr   r/  r   r   3   r=  r   4   rA  rb   5   rE  r"   6   rI  r#   r8  r9  r2  rs   r:  r<  r;  r   r>  r@  r?  r   rB  rD  rC  r   rF  rH  rG  r   F   r   G   r   H   rv   I   r   J   r   r   )r^   r    )r%   r&   ro   )r   r/  r   ro   ro   )r   rS  r=  ro   ro   )r   rT  rA  ro   ro   )rb   rU  rE  ro   ro   )r"   rV  rI  ro   ro   )r#   r8  r9  ro   ro   )r#   r2  ro   r   ro   )rs   r:  r<  ro   ro   )rs   r;  ro   r=  ro   )r   r>  r@  ro   ro   )r   r?  ro   rA  ro   )r   rB  rD  ro   ro   )r   rC  ro   rE  ro   )r   rF  rH  ro   ro   )r   rG  ro   rI  ro   )r   rW  ro   r9  ro   )r   rX  ro   r<  ro   )r   rY  ro   r@  ro   )rv   rZ  ro   rD  ro   )r   r[  ro   rH  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r%   r&   r   rp   r,   r.   r   )r0   r%   r&   r<   rF   r5   r5   r6   test_outer_join  s2    zTestJoinBy.test_outer_joinc             C   sz   | j | j }}td%||d}tjd'd)d+d-d/d1d3d5d7d9g
d:d;d<d=d>d?d@dAdBdCg
dtfdtfd"tfd#tfgd$}t|| d S )DNr%   r&   Z	leftouterr   r/  r   r   rS  r=  r   rT  rA  rb   rU  rE  r"   rV  rI  r#   r8  r9  rs   r:  r<  r   r>  r@  r   rB  rD  r   rF  rH  r   r   )r^   r    )r%   r&   ro   )r   r/  r   ro   ro   )r   rS  r=  ro   ro   )r   rT  rA  ro   ro   )rb   rU  rE  ro   ro   )r"   rV  rI  ro   ro   )r#   r8  r9  ro   ro   )rs   r:  r<  ro   ro   )r   r>  r@  ro   ro   )r   rB  rD  ro   ro   )r   rF  rH  ro   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r%   r&   r   rp   r,   r.   r   )r0   r%   r&   r<   rF   r5   r5   r6   test_leftouter_join(  s     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 )Nrb   r%   r}   r&   r   r   r   )r    r6  F)r7  r   Za1Za2)r%   r}   )r&   r   )r   r   )r   r   )r&   r   )r%   r}   )r+   rw   r   r   r   r    names)r0   r%   r&   jr5   r5   r6   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 )Nrb   r%   r}   r&   r   r   r   )r    )r%   r}   )r&   r   )r   r   )r   r   )r&   r   )r%   r}   )r+   rw   r   r   r   r   )r0   r%   r&   r5   r5   r6   test_duplicate_keysA  s    zTestJoinBy.test_duplicate_keyszSee comment at gh-9343)reasonc             C   sl   t jddg}t jddg}t jdddg}t jddg|d}t jddg|d}td||}t|j| d S )Nra   S5rN  <f4S10value1value2Sarah       @John      @)r          $@      @)ra   rc  )rN  rd  )ra   re  )rN  rd  )ra   re  )rf  rd  )rg  rd  )rh  ri  )rj  rk  )rh  rl  )rj  rm  )r+   r    r,   r   r   )r0   a_dtypeb_dtypeexpected_dtyper%   r&   r   r5   r5   r6   #test_same_name_different_dtypes_keyF  s    z.TestJoinBy.test_same_name_different_dtypes_keyc             C   sl   t jddg}t jddg}t jdddg}t jddg|d}t jddg|d}td||}t|j| d S )Nra   re  rN  <f4<f8|S10rf  rg  rh         @rj        @)r          $@      @)ra   re  )rN  rr  )ra   re  )rN  rs  )ra   rt  )rf  rr  )rg  rs  )rh  ru  )rj  rv  )rh  rw  )rj  rx  )r+   r    r,   r   r   )r0   rn  ro  rp  r%   r&   r   r5   r5   r6   test_same_name_different_dtypesS  s    z*TestJoinBy.test_same_name_different_dtypesc             C   s   t jdtdfd
g}t jdddgt jfdddgdfg|d}t jdtdfdg}t jdddgdfdddgdfg|d}t j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posrb   f<f4r   r   g        )r    g)r{  r|  )r}  r|  )r{  r|  )r}  r|  )r+   r    r.   r,   pir   r   )r0   rn  r%   ro  r&   rp  r,  r   r5   r5   r6   test_subarray_key`  s    (&zTestJoinBy.test_subarray_keyc             C   sp   t jddd}d|_tt|jd t jddg|}t jddg|}td||}t jdddg}t|j| d S )Nzi1,f4T)ru   kvrb   r   r   i1v1r   v2)r  r  )r   rb   )rb   r   )r   r   )r   r   )r  r  )r  r   )r  r   )	r+   r    r^  r   lendescrr,   r   r   )r0   r{   r%   r&   r   rp  r5   r5   r6   test_padded_dtypen  s    zTestJoinBy.test_padded_dtypeN)r   r   r   r7   rL  rM  rQ  r\  r]  r`  ra  pytestmarkZxfailrq  ry  r  r  r5   r5   r5   r6   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 jdt jddt jdddtfdtfdtfgd	| _t jttt jdt jd
dt jdddtfdtfdtfgd	| _d S )Nr   r/  r0  r   r1  r%   r&   r   )r    r2  r3  r   )r+   r,   r4  r5  r   r.   r%   r&   )clsr5   r5   r6   r7     s    zTestJoinBy2.setupc             C   sp   | j | j }}td||dddd}tjd3d4d5d6d7d8d9d:d;d<g
dtfd.tfd/tfd0tfd1tfgd2}t|| d S )=Nr%   r9   2r6  )	r1postfix	r2postfixr7  r   r/  r2  r   r   rS  r;  r=  r   rT  r?  rA  rb   rU  rC  rE  r"   rV  rG  rI  r#   r8  rW  r9  rs   r:  rX  r<  r   r>  rY  r@  r   rB  rZ  rD  r   rF  r[  rH  r&   rK  r   r   )r    )r   r/  r2  r   r   )r   rS  r;  r=  r=  )r   rT  r?  rA  rA  )rb   rU  rC  rE  rE  )r"   rV  rG  rI  rI  )r#   r8  rW  r9  r9  )rs   r:  rX  r<  r<  )r   r>  rY  r@  r@  )r   rB  rZ  rD  rD  )r   rF  r[  rH  rH  )r%   r&   r   r+   r,   r.   r   )r0   r%   r&   r<   rF   r5   r5   r6   test_no_r1postfix  s    zTestJoinBy2.test_no_r1postfixc          	   C   s   t ttd| j| jddd d S )Nr%   r9   )r  r  )r   r   r   r%   r&   )r0   r5   r5   r6   test_no_postfix  s    zTestJoinBy2.test_no_postfixc             C   sp   | j | j }}td||dddd}tjd3d4d5d6d7d8d9d:d;d<g
dtfd.tfd/tfd0tfd1tfgd2}t|| d S )=Nr%   1r9   r6  )r  r  r7  r   r/  r2  r   r   rS  r;  r=  r   rT  r?  rA  rb   rU  rC  rE  r"   rV  rG  rI  r#   r8  rW  r9  rs   r:  rX  r<  r   r>  rY  r@  r   rB  rZ  rD  r   rF  r[  rH  rJ  r&   r   r   )r    )r   r/  r2  r   r   )r   rS  r;  r=  r=  )r   rT  r?  rA  rA  )rb   rU  rC  rE  rE  )r"   rV  rG  rI  rI  )r#   r8  rW  r9  r9  )rs   r:  rX  r<  r<  )r   r>  rY  r@  r@  )r   rB  rZ  rD  rD  )r   rF  r[  rH  rH  )r%   r&   r   r+   r,   r.   r   )r0   r%   r&   r<   rF   r5   r5   r6   test_no_r2postfix  s    zTestJoinBy2.test_no_r2postfixc             C   s6  t jttt jddgdt jt jddt jddt jdddtfd	tfd
tfdtfgd}t jttt jddgdt jt jddt jddt jdddtfd	tfd
tfdtfgd}t jd9d:d;d<d=d>d?d@dAdBg
dtfd	tfd1tfd2tfd3tfd4tfgd}td	dg||d5d6d7d8}t	|j
|j
 t	|| d S )CNr   r   r#   r   r/  r0  r   r  r%   r&   r   )r    r2  r3  r   rS  r;  r   rT  r?  r   rU  rC  rv   rb   rV  rG  r   r"   r8  rW  r   r:  rX     rs   r>  rY  r   r   rB  rZ     r   rF  r[     r   rJ  rK  c1c2r  r  r6  )r  r  r7  )r   r   r/  r2  r   r   )r   r   rS  r;  r   r   )r   r   rT  r?  r   r   )r   r   rU  rC  rv   rb   )r   r   rV  rG  r   r"   )r   r   r8  rW  r   r#   )r   rb   r:  rX  r  rs   )r   rb   r>  rY  r   r   )r   r"   rB  rZ  r  r   )r   r"   rF  r[  r  r   )r+   r,   r4  r5  Ztilerepeatr   r.   r   r   r    )r0   r%   r&   rF   r<   r5   r5   r6   test_two_keys_two_vars  s"    & & z"TestJoinBy2.test_two_keys_two_varsN)	r   r   r   classmethodr7   r  r  r  r  r5   r5   r5   r6   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  dictr/   )r0   r  r5   r5   r6   r7     s    zTestAppendFieldsObj.setupc             C   s   | j d }tj|df|dfgdtfdtfgd}tjddgtd}t|d	|d
d}tj|ddf|ddfgdtfdtfd	tfgd}t|| dS )z7Test append_fields when the base array contains objectsr  g      ?g       @r   r   )r    r   r   r\   F)r/   r   N)r/   r+   r,   objectr-   r.   r   r   )r0   r  r1   r2   r<   rF   r5   r5   r6   test_append_to_objects  s    
z*TestAppendFieldsObj.test_append_to_objectsN)r   r   r   __doc__r7   r  r5   r5   r5   r6   r    s   r  ).r  Znumpyr+   Znumpy.marp   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_fieldspecrN   rR   Z
_zip_descrr;   Z
_zip_dtypeZ	zip_dtyper   r   r   r   r   r.  r  r  r5   r5   r5   r6   <module>   s0   
D




  K 6 , &A