U
    O8c]                     @   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=   E/tmp/pip-unpacked-wheel-fd_gsd75/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   )Z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dddZpointZtriangler   resr   r   r   rs   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   ro   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   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_nameJ  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>   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   ro   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   ro   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@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_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    )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   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.   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.  r0  r2  r4  r6  r7  r8  r9  r:  r   r-   r.   rw   r   r`   r@  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   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_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   ru   r   r   r#   r-   r.   )r2   ro   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value1rH  )value2rH  Sarahr   Johnr,   r#   rM  r   rO  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 )NrI  rG  )r)  <f8)re   z|S10rJ  )rK  rX  rL  rN  r#   rP  rQ  re   rR  rS  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   )frH  r   r   r   r#   )grH  )r2   r$   r5   r3   pir   r   )r8   rT  r-   rU  r.   rV  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   r_  )r_  i1)Zv1rx   )Zv2rx   )	r2   r$   rC  r   lendescrr3   r   r   )r8   rs   r-   r.   r   rV  r=   r=   r>   test_padded_dtypev  s      zTestJoinBy.test_padded_dtypeN)r   r   r   r?   r&  r(  r+  rA  rB  rE  rF  rW  rY  r^  rd  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   r/  r  r  r  r   r1  r  r  r  rf   r3  r  r  r  r)   r5  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   )ri  rj  )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  rh  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  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   r/  r  r|   r   )r   r   r1  r  r}   r   )r|   r   r3  r  rn   rf   )r   r   r5  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c2rw  rg  r  rh  )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?   ru  rv  rx  r~  r=   r=   r=   r>   re    s   
re  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  re  r  r=   r=   r=   r>   <module>   s0   D




  T 6 , %A