a
    Ib                     @   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   sr   t ddg}t g d}t jddgddtfgd}t jd	d
gdtfddtfdtfgfgd}||||f| _d S N      
         A      ?B       @r   z|S3r!   dtyper   r         @            @abbabbnparrayfloatintdataselfxyzw r>   ^/var/www/html/barcode/barcode/lib/python3.9/site-packages/numpy/lib/tests/test_recfunctions.pysetup   s    


zTestRecFunctions.setupc                 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.   r0   r1   r/   )r7   	zip_descrr   r3   r%   r6   r5   )r9   r=   r:   r;   r<   testr>   r>   r?   test_zip_descr    sD    


zTestRecFunctions.test_zip_descrc                 C   s&  t jddgdtfddtfdtfgfgd}t|d}t jdd	gddtfdtfgfgd}t|| t|d}t jd
dgdtfgd}t|| t|dg}t jddgdtfddtfgfgd}t|| t|ddg}t jd
dgdtfgd}t|| t|ddg}t jddgg d}t|| d S )Nr&   r)   r.   r/   r0   r1   r$   )r'   )r+   r   r*   )r   )r(   )r*   )r-   r>   )r3   r4   r6   r5   r   r   r9   r.   rE   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/   r0   r1   r$   r   BB)r.   r1   )r3   r4   r6   r5   r   viewr   r%   )r9   r.   rE   ZnewdtyperJ   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/   r0   r1   )r.   )r/   )r0   r1   )r.   )r/   r>   r>   )r3   r%   r5   	get_namesr   r6   r9   ndtyperE   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!   rP   r.   r/   r0   r1   )r.   r/   r0   r1   r.   r/   r>   )r3   r%   r5   get_names_flatr   r6   rR   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!   rP   r   BArM   z|S1)r   r!   rX   rM   rM   BBABBB)r   r!   rX   rM   rZ   r[   )r3   r%   r5   r   r   r6   )r9   rS   rE   rJ   r>   r>   r?   test_get_fieldstructure   s&    


z(TestRecFunctions.test_get_fieldstructurec                 C   sf  t jg dg ddtfddtfdgfgd}t|dd	d
}ddg}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   d S )N)r   r"   r!   )r   r^   r]   )r   )r   r!   r]   )r   )r"   C)r   r   r   r`   r`   r`   )r   ra   )r   r   r   r   r!   rX   rY   maskr%   FTZ
ignoremaskreturn_indexr   r   )keyrf   )r   r   r      r,   )r   r   r   r*   rM   )r   r   r   ri   r*   )mar4   r6   r5   r
   r   sortedrI   r>   r>   r?   test_find_duplicates   s0    
z%TestRecFunctions.test_find_duplicatesc                 C   s   dt fg}tjg dg dd|}t|ddd}g d}tt|d | t|d	 ||d   t|d
dd}g d}tt|d | t|d	 ||d   d S )Nr.   )r   r   r   r   r   ri   ri   )r   r   r   r   r   r   r   rd   Tre   )r   r   ri   r*   rg   r   F)r   r   r   ri   r*      )r6   rj   r4   rN   r
   r   rk   )r9   rS   r.   rE   rJ   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u  d S )Nzu1,f4,i8TZalignr   r$      )	r3   r%   zerosr   r   itemsizerecordr   type)r9   dtr.   r>   r>   r?   test_repack_fields   s    z#TestRecFunctions.test_repack_fieldsc                 C   s  t jdg dd}t|}t|t jddd t jg dg dd}t jt|dd	g d
d}t|t g d t jt|dg d
d}t|t g d t dd}t||j	}t jddddgfddddgfddddgfddddgfgdd d!d"gfd#gd}t|| t jg dg dd}tt
t j|t g d$ tt
t j|dd	g t g d t jg dg d%d}t|}t||j	}t|j|u  t|j|u  t jd&d'd(gddgd)d*ggfd+d,dgd-d.gd/d0ggfgg d1d}t|}t||j	}t|j|u  t|j|u  t 	dtfd2tfg}	t 	d3|	fd |	fd4|	fg}
t d|
}t|td}t|t jd5td d6d7 }d8d9 }dAd:d;}|||t jt jd(}t||d<t j|f |||t jd'd'}t||d=t j|f |t j}t||d>t j|f |t j||t jd'd'}t||d?t j|f | }tttt d(| tttt d(|t jd tttt jd@t jd d S )BNr*   )r.   i4)r/   zf4,u2)cf4r   r$   )r*   r,   f8))r   r   r,   )r*   r,      )r}         )r   r      )r:   ry   )r;   r{   )r<   r|   r:   r<   rg   )Zaxis)r(   g      @      "@      &@)r         @      @      $@r   r   )r   r   r(   r   r,   )r-   r}          @r   r   )r   r   g      *@g      ,@   )g      0@   g      2@g      3@rx   r/   )f0r{   )f1u2)rz   r{   r   )gUUUUUU@gUUUUUU@gUUUUUU!@r   )r   )r;   ry   )r<   ry   r   r   ri   rn   r}   r~   	   r   r   rq      ))Zx0ry   )x1)ry   r   )Zx2)ry   r   r   r;   r.   rz   )r   rn   c                 S   s   t | |fS N)r3   r%   )rv   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irv   r>   r>   r?   
<listcomp>$      zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r3   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$   )r3   rr   r   r   r   r%   )rv   r%   arrretZbackarrr>   r>   r?   inspect&  s    
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rn   rH   rG   )r,   )ri   r   )N)r3   rr   r   r   r4   meanarangeZreshaper   r%   r   r   baser6   int32r   
ValueErrorNotImplementedError)r9   r.   outr/   rz   ZwantdddZdddZpointZtriangler   resr   r   r   rv   r>   r>   r?   test_structured_to_unstructured   s    






z0TestRecFunctions.test_structured_to_unstructuredc                 C   s\  t jdg dd}ddg}tt||t d| t jddg|d}t||dd	 t|t jd
dg|jd t|| t|t jddg|jd t jddddgfgd}ddgfg}tt||t d| t jddg|d}t||dd	 t|t jddg|jd t|| t|t jddg|jd t dt d }}t|| t|d d d S )Nr   )rx   r/   r|   rz   u1r$   r/   r{   r   r   r   )ri   r*   F)Zzero_unassigned)r   r   r   )r   ri   r*   )r   r   r   )r   ri   r*   r.   r   )r   )ri   )r   )r   ri   ))r   r   ))r   ri   ri   r   r>   )r3   onesr   r   r4   r   r%   )r9   r.   Znewdtr/   r>   r>   r?   test_field_assignment_by_nameA  s&    


z.TestRecFunctions.test_field_assignment_by_nameN)__name__
__module____qualname__r@   rF   rK   rO   rT   rW   r\   rl   ro   rw   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   sd   t jddgdtfdtfgd}t jd|jd}t||}t jg ddtfdtfgd}t|| d S )Nr   r   r         4@r   r!   r$   r   r   r   )r           )r3   r4   r6   r5   rr   r%   r	   r   r9   r.   r/   rE   rJ   r>   r>   r?   test_simple_flexible_  s    

z,TestRecursiveFillFields.test_simple_flexiblec                 C   sp   t jddgddgdtfdtfgd}t jd|jd	}t||}t jg d
g ddtfdtfgd}t|| d S )Nr   r   r   r   rb   r   r!   rc   r   r$   r   )r   rb   ra   )rj   r4   r6   r5   rr   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   sx   t ddg}t g d}t jddgddtfgd}t jd	d
gdtfddtfdtfdg fgfgd}||||f| _d S )Nr   r   r   r   r    r#   r!   r$   r   )r   r(   r>   r*   )r,   r-   r>   r.   r/   r0   r1   bcr2   r8   r>   r>   r?   r@   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 )NrG   r   r   r$   FrA   T)r7   r   r3   r4   r6   r   r9   _r:   r<   rE   rJ   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   FrA   T)r   r   r(   )r*   r,   r-   r.   r0   r1   r$   )r7   r   r   r3   r4   r6   r5   r9   r=   rE   rJ   r>   r>   r?   test_solo_w_flatten  s    


z#TestMergeArrays.test_solo_w_flattenc                 C   s   | j \}}}}t||fdd}tjg ddtfdtfgd}t|| t||fdd}tjg dg ddtfdtfgd	}t|| t|j|j d S )
NFusemask)r   r   )r   r   )rg   r   r   r   r$   Tra   ra   rb   rc   )r7   r   r3   r4   r6   r   rj   rd   r9   r   r:   r;   rE   rJ   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 )NTrA   )r   r   r   )r   r!   r"   r   r#   r!   r$   F)r   r   )r   r    r   r7   r   r3   r4   r6   r5   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 )NTrA   )r   r   r   r(   )r   r*   r,   r-   r   r.   r0   r1   r$   Fr   r/   r   )r   r   )r   r   r   )r9   r=   r:   r   rE   rJ   Zcontroldtyper>   r>   r?   test_flatten_wflexible  s$    


z&TestMergeArrays.test_flatten_wflexiblec                 C   s   | j \}}}}tjg dg dd}t||fdd}tjg dg ddtfd	tfgd
}t|| t||fddd}t|| tt|t d S )Nr   r   ri   r   r   r   rm   Tr   )r   r   r   )rg   ri   )r   ra   rb   r   r   rc   )r   Z
asrecarray)	r7   rj   r4   r   r6   r   r   
isinstancer   )r9   r   r:   ZmxrE   rJ   r>   r>   r?   test_wmasked_arrays  s    


z#TestMergeArrays.test_wmasked_arraysc                 C   s^   t tddgdtfgtg df}tjg dg ddtfdtfgd}t|| d S )	Nr   r   r.   )r   r   rL   )r   r   )rg   rL   r   r   rc   )r   r3   r4   rN   r6   rj   r5   r   )r9   rE   rJ   r>   r>   r?   test_w_singlefield  s    
z"TestMergeArrays.test_w_singlefieldc                 C   sP   | j d }t|tg ddtfgf tjg dddtfdtfgd d S )Nrg   r   r_   )r   r   r   r!   r"   r   )z-1rg   r   r#   r!   r$   )r7   r   r3   r4   rN   r6   r5   )r9   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   )r9   r   r:   r;   r<   rE   rJ   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   sr   t ddg}t g d}t jddgddtfgd}t jd	d
gdtfddtfdtfgfgd}||||f| _d S r   r2   r8   r>   r>   r?   r@     s    
zTestAppendFields.setupc                 C   sR   | j \}}}}t|dg dd}tjg dg ddtfdtfgd}t|| d S )Nr   r   r7   r   r   r   rc   r7   r   rj   r4   r6   r   r9   r   r:   rE   rJ   r>   r>   r?   test_append_single  s    
z#TestAppendFields.test_append_singlec                 C   s`   | j \}}}}t|dg dddggd}tjg dg ddtfd	tfd
tfgd}t|| d S )NrP   r   d      r   ))r   r   r   )r   r   r   )rg   r   rg   )r   r   r   r   )r   r   r   r   r   r!   rc   r   r   r>   r>   r?   test_append_double  s    
z#TestAppendFields.test_append_doublec                 C   sP   | j d }t|dg dd}tjg dg dddtfdtfgd	}t|| d S )
Nrg   r_   r   r   )r   r   )rg         r   )r   r   r   r   r   r#   r!   rc   )r7   r   rj   r4   r5   r6   r   )r9   r<   rE   rJ   r>   r>   r?   test_append_on_flex  s    

z$TestAppendFields.test_append_on_flexc                 C   s`   | j d }t|dg dd}tjg dg ddtfdd	tfd
tfgfdtfgd}t|| d S )Nr   r_   r   r   ))r   r'   r   )r*   r+   r   )rg   )rg   r   r   )r   ra   r   r   )r   r   r   r.   r/   r0   r1   rc   )r7   r   rj   r4   r6   r5   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   sr   t ddg}t g d}t jddgddtfgd}t jd	d
gdtfddtfdtfgfgd}||||f| _d S r   r2   r8   r>   r>   r?   r@   1  s    
zTestStackArrays.setupc                 C   sP   | j \}}}}t|f}t|| t||u  t|}t|| t||u  d S r   )r7   r   r   r   )r9   r   r:   rE   r>   r>   r?   r   :  s    


zTestStackArrays.test_soloc                 C   s   | j \}}}}t||fdd}tg d}t|| t||fdd}tg d}t|| t||fdd}tg d}t|| d S )NFr   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r7   r   r3   r4   r   r   r>   r>   r?   test_unnamed_fieldsE  s    

z#TestStackArrays.test_unnamed_fieldsc                 C   s   | j \}}}}t||f}tjg dg ddtfddtfgd}t|| t|j|j t||f}tjg dg dddtfd	tfgd}t|| t|j|j t|||f}tjg d
g dddtfd	tfgd}t|| d S )N))r   rg   rg   )r   rg   rg   )rg   r   r   )rg   r!   r   )r   r   r   r   r   r   r   r#   r!   rc   )r   r   rg   r!   r   rg   rg   rg   r   rg   rg   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r7   r   rj   r4   r6   r5   r   rd   r   r>   r>   r?   test_unnamed_and_named_fieldsU  s*    




z-TestStackArrays.test_unnamed_and_named_fieldsc                 C   s   | j \}}}}tjg dddtfdtfgd}t||f}tjg dddtfdtfgg dd}t|| t|j|j t|||f}ddtfdtfd	tfg}tjg d
|g dd}t|| t|j|j d S )Nr.   r         Y@r/   r         i@rz   rL        r@r#   r!   r_   r$   )r   r   r   r   r   r   r   r   r   r   r%   rd   Zf3))r   r   rg   rg   )r!   r   rg   rg   )r.   r   r   rg   )r/   r   r   rg   )rz   rL   r   rg   )rg   rg   rg   r   )rg   rg   rg   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r7   r3   r4   r5   r   rj   r   rd   r6   )r9   r   r:   r<   zzrE   rJ   rS   r>   r>   r?   test_matching_named_fieldsu  s&    




z*TestStackArrays.test_matching_named_fieldsc                 C   s   | j \}}}}tjg dddtfdtfgd}dddd	d
}t||f|d}tjg dddtfdtfgg dd}t|| t|j |j  t|j|j d S )Nr   r#   r!   r_   r$   z???g     8    g    i)r   r!   r_   D)defaults))r   r   r  )r!   r   r  r   r   r   r   r   )r7   r3   r4   r5   r   rj   r   rd   )r9   r   r<   r  r  rE   rJ   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 d    n1 s0    Y  d S )Nr   r!   r_   r   r   r   r   rc   r*   r,   rn   r$   r   T)ZautoconvertF)
r6   boolr5   rj   r4   r   r   rd   r   	TypeError)r9   adtyper.   bdtyper/   rJ   rE   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!   )rz   r_   r   r  rc   r  r$   r   )r6   r	  r5   rj   r4   r   r   rd   )r9   r  r.   r  r/   rE   rJ   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!   rG   r$   r.   r   r   r/   r   r   rz   rL   r   r_      Ar   r      Br"      a   b   cFT)r7   rd   r%   )r3   r4   r5   r   rj   r%   r   rd   )r9   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/   rz   r$   r,   r   A   K   r   r3   r4   listzipr   r6   r.   r/   r9   r>   r>   r?   r@     s    

zTestJoinBy.setupc                 C   s\   | j | j }}td||dd}tjg ddtfdtfdtfdtfdtfgd	}t|| d S )
Nr.   inner)jointype))r,   7   r  i   r   )rn   8   B   j   e   )r}   9   C   k   f   )r~   :   D   l   g   )r   ;   E   m   h   b1b2rz   r   r$   r.   r/   r   r3   r4   r6   r   r   r>   r>   r?   test_inner_join  s    
zTestJoinBy.test_inner_joinc                 C   sH   | j | j }}td|| tjg ddtfdtfdtfdtfgd d S )NrU   ))r,   r"  r#  r   )rn   r$  r&  r'  )r}   r(  r*  r+  )r~   r,  r.  r/  )r   r0  r2  r3  r.   r/   rz   r   r$   )r.   r/   r   r3   r4   r6   r9   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 g dfgdtfdgd}td||}t||tj d S )NrG   rh   r$   r   r   )valueZuint16ri   )r3   r4   r6   r   r   rN   rj   ZMaskedArray)r9   Zfoobarr   r>   r>   r?   test_join_subdtype  s    
zTestJoinBy.test_join_subdtypec                 C   sZ   | j | j }}td||d}tjg dg ddtfdtfdtfdtfgd	}t|| d S )
NrU   outer)r   r  r   rg   r   3   r'  rg   r   4   r+  rg   ri   5   r/  rg   r*   6   r3  rg   r,   r"  r#  rg   )r,   r  rg   r   rn   r$  r&  rg   )rn   r%  rg   r'  r}   r(  r*  rg   )r}   r)  rg   r+  r~   r,  r.  rg   )r~   r-  rg   r/  r   r0  r2  rg   )r   r1  rg   r3  )r   F   rg   r#  )r   G   rg   r&  )r   H   rg   r*  )rq   I   rg   r.  )r   J   rg   r2  )r   r   r   r   r   r   r   r   r   r   r   rQ  r   rQ  r   rQ  r   rQ  rQ  rQ  rQ  rQ  rQ  r.   r/   rz   r   rc   r.   r/   r   rj   r4   r6   r   r   r>   r>   r?   test_outer_join  s    


zTestJoinBy.test_outer_joinc                 C   sZ   | j | j }}td||d}tjg dg ddtfdtfdtfdtfgd	}t|| d S )
NrU   Z	leftouter)
r>  r?  rA  rC  rE  rG  rH  rI  rJ  rK  )
r   r   r   r   r   r   r   r   r   r   r.   r/   rz   r   rc   rR  r   r>   r>   r?   test_leftouter_join(  s    
zTestJoinBy.test_leftouter_joinc                 C   sP   t jdg dd}t jdg dd}tddg||ddd	}t|jjg d
 d S )Nri   rx   r   r   r$   r   r   rx   rz   r/   r   F)r!  r   )r/   rz   Za1Za2)r3   rr   r   r   r   r%   names)r9   r.   r/   jr>   r>   r?   test_different_field_order9  s    z%TestJoinBy.test_different_field_orderc                 C   s<   t jdg dd}t jdg dd}tttg d|| d S )Nri   rU  r$   rV  )r.   r/   r/   )r3   rr   r   r   r   r   r8  r>   r>   r?   test_duplicate_keysA  s    zTestJoinBy.test_duplicate_keysc                 C   sj   t ddg}t ddg}t g d}t jddg|d}t jdd	g|d}td
||}t|j| d S )N)rh   ZS5r:  <f4rh   ZS10)r]  Zvalue1r\  )value2r\  Sarahr   Johnr-   r$   ra  r   rc  r   rh   r3   r%   r4   r   r   r9   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   sj   t ddg}t ddg}t g d}t jddg|d}t jdd	g|d}td
||}t|j| d S )Nr]  r[  )r:  <f8))rh   z|S10r^  )r_  rl  r`  rb  r$   rd  re  rh   rf  rg  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g dt jfg ddfg|d}t dtdfdg}t jg ddfg d	dfg|d}t dtdfddg}t jg dt jdfg|d}td||}t|j| t|| d S )
Nposri   )fr\  )r   r   r   r   r   r$   )gr\  )ri   r   r   )r3   r%   r6   r4   pir   r   )r9   rh  r.   ri  r/   rj  r  r   r>   r>   r?   test_subarray_key_  s    $"zTestJoinBy.test_subarray_keyc                 C   sn   t jddd}d|_tt|jd t ddg|}t dd	g|}td
||}t g d}t|j| d S )Nzi1,f4Trp   )kvri   r   )ri   r   r   r   rs  ))rs  i1)Zv1r{   )Zv2r{   )	r3   r%   rW  r   lendescrr4   r   r   )r9   rv   r.   r/   r   rj  r>   r>   r?   test_padded_dtypem  s    zTestJoinBy.test_padded_dtypeN)r   r   r   r@   r7  r9  r<  rS  rT  rY  rZ  rk  rm  rr  rx  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/   rz   r$   r  r  r   r  )clsr>   r>   r?   r@     s    

zTestJoinBy2.setupc                 C   s`   | j | j }}td||dddd}tjg ddtfdtfdtfd	tfd
tfgd}t|| d S )Nr.   rC   2r   	r1postfix	r2postfixr!  
)r   r  r  r   r   )r   r@  r%  r'  r'  )r   rB  r)  r+  r+  )ri   rD  r-  r/  r/  )r*   rF  r1  r3  r3  )r,   r"  rL  r#  r#  )rn   r$  rM  r&  r&  )r}   r(  rN  r*  r*  )r~   r,  rO  r.  r.  )r   r0  rP  r2  r2  r/   r5  rz   r   r$   r6  r   r>   r>   r?   test_no_r1postfix  s    
zTestJoinBy2.test_no_r1postfixc              	   C   s   t ttd| j| jddd d S )Nr.   rC   )r}  r~  )r   r   r   r.   r/   r  r>   r>   r?   test_no_postfix  s    zTestJoinBy2.test_no_postfixc                 C   s`   | j | j }}td||dddd}tjg ddtfdtfdtfd	tfd
tfgd}t|| d S )Nr.   1rC   r   r|  r  r4  r/   rz   r   r$   r6  r   r>   r>   r?   test_no_r2postfix  s    
zTestJoinBy2.test_no_r2postfixc              
   C   s&  t jttt ddgdt t ddt ddt dddtfd	tfd
tfdtfgd}t jttt ddgdt t ddt ddt dddtfd	tfd
tfdtfgd}t jg ddtfd	tfdtfdtfdtfdtfgd}td	dg||dddd}t	|j
|j
 t	|| d S )Nr   r   r,   r   r  r  r   rs  r.   r/   rz   r$   r  r  r   )
)r   r   r  r  r   r   )r   r   r@  r%  r   r   )r   r   rB  r)  r   r   )r   r   rD  r-  rq   ri   )r   r   rF  r1  r   r*   )r   r   r"  rL  r   r,   )r   ri   r$  rM     rn   )r   ri   r(  rN  r   r}   )r   r*   r,  rO     r~   )r   r*   r0  rP     r   r4  r5  Zc1c2r  r{  r   r|  )r3   r4   r  r  Ztilerepeatr   r6   r   r   r%   )r9   r.   r/   rJ   rE   r>   r>   r?   test_two_keys_two_vars  s(    &&
z"TestJoinBy2.test_two_keys_two_varsN)	r   r   r   classmethodr@   r  r  r  r  r>   r>   r>   r?   ry  ~  s   
ry  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  dictr7   )r9   r  r>   r>   r?   r@     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  r   r"   r   r!   r$   r   r   r_   F)r7   r   N)r7   r3   r4   objectr5   r6   r   r   )r9   r  r:   r;   rE   rJ   r>   r>   r?   test_append_to_objects  s    
z*TestAppendFieldsObj.test_append_to_objectsN)r   r   r   __doc__r@   r  r>   r>   r>   r?   r    s   r  ).Zpytestnumpyr3   Znumpy.marj   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_fieldspecrQ   rV   Z
_zip_descrrD   Z
_zip_dtypeZ	zip_dtyper   r   r   r   r   r  ry  r  r>   r>   r>   r?   <module>   s0   D




  K 6 , %A