U
    ¸mœdª•  ã                   @   s„  d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	Z
ddlmZ ddlmZmZmZ dd„ Zej d	d
dddg¡dd„ ƒZejdd„ ƒZej dddddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zej d"d#¡d$d%„ ƒZej d"d#¡d&d'„ ƒZej d(d)d*g¡d+d,„ ƒZej d-d.ddd/g¡d0d1„ ƒZ ej d2d3¡d4d5„ ƒZ!d6d7„ Z"ej d8e#e$f¡d9d:„ ƒZ%ejj&e�oŒej'j(d;kd<d=�ej d8e
 )d>¡e
 )d?¡f¡d@dA„ ƒƒZ*dBdC„ Z+dDdE„ Z,dFdG„ Z-dHdI„ Z.ej dJdKdLdMg¡ej dNdKdLdMg¡dOdP„ ƒƒZ/dQdR„ Z0dSdT„ Z1dUdV„ Z2dWdX„ Z3ej d8dY¡dZd[„ ƒZ4ej d\d]e
 )d^¡fd_e
 )d`¡fg¡dadb„ ƒZ5dcdd„ Z6dedf„ Z7ejj&e�o”ej'j(d;kd<d=�ej d8e
j8dg ¡ej 9dh¡didj„ ƒƒƒZ:ejj&e�oÚej'j(d;kd<d=�ej d8e
j8dg ¡ej 9dh¡dkdl„ ƒƒƒZ;ej d8e
j<e
j=f¡ej dmdn¡dodp„ ƒƒZ>dqdr„ Z?dsdt„ Z@dudv„ ZAejj&e dwd=�dxdy„ ƒZBejj&e�o~ej'j(d;kd<d=�dzd{„ ƒZCej d|de#gd}f¡d~d„ ƒZDejj&e�oÂej'j(d;kd<d=�d€d�„ ƒZEej d‚dƒ¡d„d…„ ƒZFd†d‡„ ZGej dˆd‰¡dŠd‹„ ƒZHej dˆd‰¡dŒd�„ ƒZIdŽd�„ ZJejj&e�o:ej'j(d;kd<d=�d�d‘„ ƒZKd’d“„ ZLd”d•„ ZMd–d—„ ZNd˜d™„ ZOdšd›„ ZPej dœd�¡ej dždŸ¡ej d dd¡g¡d¢d£„ ƒƒƒZQej dd¤¡d¥d¦„ ƒZRej d8d§gd¨d©dªd«d¬d­d®d¯d°d±d²eSd³ƒfd´dµeSd¶ƒfd·g¡ej d¸d¹dºg¡d»d¼„ ƒƒZTej d8e
j8dg d½ d¾ ¡d¿dÀ„ ƒZUej d8dÁ¡dÂdÃ„ ƒZVejj&e�ofej'j(d;kd<d=�ej d8dÁ¡ej dÄdÅdÆdÇdÈdÉdÊdËdÌg¡dÍdÎ„ ƒƒƒZWejj&e�o¸ej'j(d;kd<d=�ej d8e
j8dg dÏ d¾ ¡dÐdÑ„ ƒƒZXejj&e�oúej'j(d;kd<d=�ej d8e
j8dg dÏ d¾ ¡dÒdÓ„ ƒƒZYej dœdÔdÕgdÔdÖgg¡d×dØ„ ƒZZej dœdÔdÙgdÔdÚgdÔdÛgdÔdÜgg¡dÝdÞ„ ƒZ[ej dßdàdádâg¡dãdä„ ƒZ\dådæ„ Z]dçdè„ Z^G dédê„ dêƒZ_dëdì„ Z`dídî„ Zadïdð„ Zbdñdò„ Zcej d2d3¡dódô„ ƒZdej dõdö¡d÷dø„ ƒZeej dùdúdûg¡ej düdý¡dþdÿ„ ƒƒZf�d �d„ Zgejj&e�oFej'j(d;kd<d=��d�d„ ƒZh�d�d„ Ziej 9�d¡�d�d„ ƒZjdS (	  z�
Tests specific to `np.loadtxt` added during the move of loadtxt to be backed
by C code.
These tests complement those found in `test_io.py`.
é    N)ÚNamedTemporaryFileÚmkstemp)ÚStringIO)Úassert_equal)Úassert_array_equalÚHAS_REFCOUNTÚIS_PYPYc                  C   sJ   t dƒ} t dddgdddgdd	d
gdddgg¡}ttj| dd�|ƒ dS )z0Test that both 'e' and 'E' are parsed correctly.zE1.0e-1,2.0E1,3.0
4.0e-2,5.0E-1,6.0
7.0e-3,8.0E1,9.0
0.0e-4,1.0E-1,2.0gš™™™™™¹?g      4@ç      @g{®Gáz¤?ç      à?é   gyé&1¬|?g      T@é	   r   é   ú,©Ú	delimiterN)r   ÚnpÚarrayr   Úloadtxt)ÚdataÚexpected© r   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/lib/tests/test_loadtxt.pyÚtest_scientific_notation   s    þ"ÿr   Úcommentz..z//z@-zthis is a comment:c                 C   sD   d}t | d| ¡ƒ}tj|d| d�}t|ddgddgd	d
ggƒ d S )Nz,# IGNORE
1.5, 2.5# ABC
3.0,4.0# XXX
5.5,6.0
ú#r   ©r   Úcommentsç      ø?ç      @r	   ç      @ç      @ç      @)r   Úreplacer   r   r   )r   ÚcontentÚtxtÚar   r   r   Útest_comment_multiple_chars"   s    r&   c                  C   sP   t dƒ} t dtjfdtjfddtjfg¡}tjdddd	d
dg|d�}| ||fS )z|
    Fixture providing hetergeneous input data with a structured dtype, along
    with the associated structured array.
    zo1000;2.4;alpha;-34
2000;3.1;beta;29
3500;9.9;gamma;120
4090;8.1;delta;0
5001;4.4;epsilon;-99
6543;7.8;omega;-1
Úf0Úf1©Úf2ZS7Úf3©iè  g333333@ÚalphaiÞÿÿÿ©iÐ  gÍÌÌÌÌÌ@Úbetaé   ©i¬  gÍÌÌÌÌÌ#@Úgammaéx   ©iú  g333333 @Údeltar   ©i‰  gš™™™™™@Úepsiloni�ÿÿÿ©i�  g333333@Úomegaéÿÿÿÿ©Údtype)r   r   r<   Úuint16Úfloat64Úint8r   )r   r<   r   r   r   r   Úmixed_types_structured*   s"    þ
ÿú÷r@   Úskiprowsé   r   é   c                 C   s2   |\}}}t j||d| d�}t||| d … ƒ d S )Nú;)r<   r   rA   ©r   r   r   )rA   r@   r   r<   r   r%   r   r   r   Ú1test_structured_dtype_and_skiprows_no_empty_linesK   s    
rF   c                 C   s`   | \}}}t j||ddd�\}}}}t||d ƒ t||d ƒ t||d ƒ t||d ƒ d S )NrD   T)r<   r   Úunpackr'   r(   r*   r+   rE   )r@   r   r<   r   r%   ÚbÚcÚdr   r   r   Útest_unpack_structuredS   s    
rK   c                  C   sB   t  ddg¡} tdƒ}t jddg| d�}tt j|d| d�|ƒ d S )	N)r%   Úu1r   )rH   rL   r   z0,1,2,3
6,7,8,9
©©r   rB   ©r   rC   ))r   é   )é   r   r;   r   ©r   r<   ©r   r<   r   r   r   r   ©r<   r   r   r   r   r   Ú test_structured_dtype_with_shape]   s    rU   c                  C   s<   t  dg¡} tdƒ}t jdg| d�}tt j|| d�|ƒ d S )N)r%   rL   )r   r   z0 1 2 3
)rM   r;   rS   rT   r   r   r   Ú&test_structured_dtype_with_multi_shaped   s    rV   c                  C   sr   t  dtfdtfg¡} t  dtfd| dfg¡}tdƒ}t jddd	gfd
ddgfg|d�}tt j||dd�|ƒ d S )NÚxÚyÚcodeZpoints)r   z100,1,2,3,4
200,5,6,7,8
éd   )ç      ð?ç       @)r	   r   éÈ   )ç      @r!   )g      @g       @r;   r   ©r<   r   )r   r<   ÚfloatÚintr   r   r   r   )ÚpointÚdtr   r   r   r   r   Útest_nested_structured_subarrayk   s    

þûrd   c                  C   sB   t jddd�} tdƒ}t jddg| d�}tt j|d| d	�|ƒ d S )
Nzi1, i4, i1, i4, i1, i4T©Úalignz1,2,3,4,5,6
7,8,9,10,11,12
)rB   r   rC   é   é   r   )rP   rQ   r   é
   é   é   r;   r   rR   rS   )rc   r   r   r   r   r   Útest_structured_dtype_offsetsz   s    rl   Úparam)rA   Úmax_rowsc              	   C   s.   t jtdd�� tjd| diŽ W 5 Q R X dS )z;skiprows and max_rows should raise for negative parameters.zargument must be nonnegative©Úmatchúfoo.baréýÿÿÿN)rq   ©ÚpytestÚraisesÚ
ValueErrorr   r   ©rm   r   r   r   Ú"test_exception_negative_row_limits‚   s    rx   c              	   C   s.   t jtdd�� tjd| diŽ W 5 Q R X d S )Nzargument must be an integerro   rq   r[   )rq   ©rt   ru   Ú	TypeErrorr   r   rw   r   r   r   Ú$test_exception_noninteger_row_limits‰   s    r{   zdata, shape)z
1 2 3 4 5
)rB   rh   )z
1
2
3
4
5
)rh   rB   c                 C   sˆ   t  dddddg¡}| |¡}tt jt| ƒtd�|ƒ tt jt| ƒtdd�|ƒ tt jt| ƒtdd�|ƒ tt jt| ƒtdd�|ƒ d S )	NrB   r   rC   rg   rh   r;   r   )r<   Úndmin)r   r   Zreshaper   r   r   ra   )r   ÚshapeZarrZarr2dr   r   r   Útest_ndmin_single_row_or_col�   s    
r~   Úbadvalr:   zplate of shrimpc              	   C   s,   t jtdd�� tjd| d� W 5 Q R X d S )NzIllegal value of ndmin keywordro   rq   )r|   rs   )r   r   r   r   Útest_bad_ndmin    s    r€   Úws)ú ú	u   â€ƒõ   Â u   ã€€c                 C   sn   t d| › d| › d| › d| › d| › d�ƒ}t ddd	gd
ddgdddgdddgg¡}ttj|td dd�|ƒ d S )Nz1 2z30

z
4 5 60z
  z  
7 8 z 90
  # comment
3 2 1rB   r   é   rg   rh   é<   rP   rQ   éZ   rC   r   ©r<   r   r   ©r   r   r   r   r   ra   )r�   r$   r   r   r   r   Útest_blank_lines_spaces_delimit¦   s    "ÿ	* ÿrŠ   c                  C   sN   t dƒ} t dddgdddgdd	d
gdddgg¡}ttj| tddd�|ƒ d S )Nz&1,2,30

4,5,60

7,8,90
# comment
3,2,1rB   r   r…   rg   rh   r†   rP   rQ   r‡   rC   r   r   rˆ   r‰   )r$   r   r   r   r   Ú!test_blank_lines_normal_delimiterÀ   s    * ÿr‹   r<   c                 C   sJ   t dƒ}tj|| ddd�}t|j| ƒ t|tjddgddgg| d	�ƒ d S )
Nz1.5,2.5
3.0,4.0
5.5,6.0r   r   )r<   r   rn   z1.5z2.5z3.0z4.0r;   )r   r   r   r   r<   r   ©r<   r$   Úresr   r   r   Útest_maxrows_no_blank_linesÈ   s    rŽ   )rP   rC   rQ   zPyPy bug in error formatting)ÚreasonZf8Úi2c              	   C   sB   t dƒ}d| › d�}tjt|d�� tj|| dd� W 5 Q R X d S )Nz1,2
3,XXX
5,6z"could not convert string 'XXX' to z at row 1, column 2ro   r   r_   ©r   rt   ru   rv   r   r   )r<   r$   Úmsgr   r   r   Ú!test_exception_message_bad_valuesÐ   s    r“   c                  C   sV   t dƒ} ddd„ i}t ddgdtjgdd	gg¡}tj| tjd
|d d�}t||ƒ d S )Nz1.5,2.5
3.0,XXX
5.5,6.0r:   c                 S   s   | dkrt jS t| ƒS ©NÚXXX©r   Únanr`   ©Úsr   r   r   Ú<lambda>Ü   ó    z2test_converters_negative_indices.<locals>.<lambda>r   r   r	   r    r!   r   )r<   r   Ú
convertersÚencoding)r   r   r   r—   r   r>   r   ©r$   Úconvr   r�   r   r   r   Ú test_converters_negative_indicesÚ   s        ÿr    c                  C   s”   t dƒ} ddd„ i}t ddgdtjgdd	gg¡}tj| tjd
|ddgd d�}t||ƒ tjt dƒd
ddgddd„ id�}t|ddgddggƒ d S )Nz$1.5,2.5,3.5
3.0,4.0,XXX
5.5,6.0,7.5
r:   c                 S   s   | dkrt jS t| ƒS r”   r–   r˜   r   r   r   rš   æ   r›   z?test_converters_negative_indices_with_usecols.<locals>.<lambda>r   g      @r	   r    g      @r   r   )r<   r   rœ   Úusecolsr�   z0,1,2
0,1,2,3,4c                 S   s   dS )Nr:   r   ©rW   r   r   r   rš   ô   r›   )r   r¡   rœ   )r   r   r   r—   r   r>   r   r   rž   r   r   r   Ú-test_converters_negative_indices_with_usecolsä   s"    ú
 
ÿr£   c               	   C   s€   t dƒ} t ddgddgddgg¡}tj| tdddgd�}t||ƒ t dƒ} tjtdd�� tj| tdddgd� W 5 Q R X d S )	Nú$0,0,XXX
0,XXX,0,XXX
0,XXX,XXX,0,XXX
r   r   éþÿÿÿ©r<   r   r¡   z0,0,XXX
0
0,XXX,XXX,0,XXX
z/invalid column index -2 at row 2 with 1 columnsro   )	r   r   r   r   r`   r   rt   ru   rv   ©r$   r   r�   r   r   r   Útest_ragged_usecols÷   s    
ÿr¨   c                  C   sF   t dƒ} tj| t g ¡dg d�}|jdks.t‚|jt g ¡ksBt‚d S )Nr¤   r   r¦   )rC   )r   r   r   r<   r}   ÚAssertionError©r$   r�   r   r   r   Útest_empty_usecols  s    r«   Úc1r%   u   ã�®u   ðŸ«•Úc2c                 C   sn   t d| › d|› d�ƒ}tj|t d¡dd�}tjd| › d� d¡d|› d� d¡gt d¡d	�}t||ƒ d S )
Nza,z	,c,1.0
e,z,2.0,gÚU12r   r_   z,c,1.0ze,r;   )r   r   r   r<   r   Úsplitr   )r¬   r­   r$   r�   r   r   r   r   Útest_large_unicode_characters  s    "þr°   c                  C   sX   t dƒ} ddd„ i}tj| t d¡|dd d�}t dd	gd
dgddgg¡}t||ƒ d S )Nu   cat,dog
Î±Î²Î³,Î´ÎµÎ¶
abc,def
r   c                 S   s   |   ¡ S ©N©Úupperr˜   r   r   r   rš     r›   z-test_unicode_with_converter.<locals>.<lambda>r®   r   )r<   rœ   r   r�   ZCATÚdogu   Î‘Î’Î“u   Î´ÎµÎ¶ÚABCÚdef)r   r   r   r<   r   r   ©r$   rŸ   r�   r   r   r   r   Útest_unicode_with_converter  s    ûr¸   c                  C   sj   t dƒ} t dtjfdtjfdg¡}dd„ dd„ dœ}tj| |d	|d
�}tjdddg|d�}t||ƒ d S )Nz$1.5,2.5,Abc
3.0,4.0,dEf
5.5,6.0,ghI
ÚmÚr)rY   ÚU8c                 S   s   t dt| ƒ ƒS )Nri   )ra   r`   r˜   r   r   r   rš   *  r›   z6test_converter_with_structured_dtype.<locals>.<lambda>c                 S   s   |   ¡ S r±   r²   r˜   r   r   r   rš   *  r›   )r   r:   r   )r<   r   rœ   )é   r   rµ   )r…   r   ÚDEF)é7   r!   ZGHIr;   )r   r   r<   Zint32Úfloat32r   r   r   )r$   rc   rŸ   r�   r   r   r   r   Ú$test_converter_with_structured_dtype'  s     ÿrÀ   c                  C   sJ   t dƒ} tj}tj| t d¡|dd�}t ddgddgg¡}t||ƒ d	S )
aL  
    With the default 'bytes' encoding, tokens are encoded prior to being
    passed to the converter. This means that the output of the converter may
    be bytes instead of unicode as expected by `read_rows`.

    This test checks that outputs from the above scenario are properly decoded
    prior to parsing by `read_rows`.
    zabc,def
rst,xyzZU3r   )r<   rœ   r   rµ   r½   ZRSTZXYZN)r   Úbytesr³   r   r   r<   r   r   r·   r   r   r   Ú!test_converter_with_unicode_dtype2  s    	   ÿrÂ   c                  C   sN   dd } | d d… d } t | d ƒ}tj|dtd�}t|t dd	gd
¡ƒ d S )Nz	1.5, 2.5,éPÃ  r:   Ú
r   r   rR   r   r   )r   rÃ   )r   r   r   r`   r   Ztile)Úrowr$   r�   r   r   r   Útest_read_huge_rowC  s
    rÆ   ZedfgFDGc                 C   s8   d}t  | ¡} t j|g| d�d }||  d¡ks4t‚d S )Naò  0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.123456789r;   r   z0.123456789)r   r<   r   Útyper©   )r<   ÚfieldÚvaluer   r   r   Útest_huge_floatK  s    
rÊ   )Úgiven_dtypeÚexpected_dtypeÚSÚS5ÚUZU5c                 C   sR   t dƒ}tj|| dd�}tjddgddgdd	gg|d
�}t||ƒ t|j|ƒ dS )z­
    The given dtype is just 'S' or 'U' with no length. In these cases, the
    length of the resulting dtype is determined by the longest string found
    in the file.
    zAAA,5-1
BBBBB,0-3
C,4-9
r   r_   ZAAAz5-1ZBBBBBz0-3ÚCz4-9r;   N)r   r   r   r   r   r<   )rË   rÌ   r$   r�   r   r   r   r   Útest_string_no_length_givenT  s     ÿ
rÑ   c                  C   sH   dddddg} t d | ¡ƒ}t |¡}t dd„ | D ƒ¡}t||ƒ d	S )
zá
    Some tests that the conversion to float64 works as accurately as the
    Python built-in `float` function. In a naive version of the float parser,
    these strings resulted in values that were off by an ULP or two.
    z0.9999999999999999z9876543210.123456z5.43215432154321e+300z0.901z0.333rÄ   c                 S   s   g | ]}t |ƒ‘qS r   )r`   )Ú.0r™   r   r   r   Ú
<listcomp>y  s     z)test_float_conversion.<locals>.<listcomp>N)r   Újoinr   r   r   r   )Ústringsr$   r�   r   r   r   r   Útest_float_conversionj  s    û
rÖ   c                  C   s^   t dƒ} tj| tdd�}|jtks&t‚t|ddgddggƒ t| tj¡ddgddggƒ d S )Nz1, 0
10, -1r   r_   TFrB   r   )	r   r   r   Úboolr<   r©   r   ÚviewZuint8rª   r   r   r   Ú	test_bool}  s
    rÙ   Z
AllIntegerz0error:.*integer via a float.*:DeprecationWarningc              
   C   s¦   t  | ¡} t jdg| d�dks"t‚| jdkrTt t¡� t jdg| d� W 5 Q R X nt jdg| d�dkslt‚dD ]0}t t¡� t j|› d	�g| d� W 5 Q R X qpd S )
Nz+2r;   r   Úuz-1
z-2
r¥   )z++z+-z--z-+z2
)r   r<   r   r©   Úkindrt   ru   rv   )r<   Úsignr   r   r   Útest_integer_signs‡  s    

rÝ   c              	   C   s2   t dƒ}t t¡� tj|| dd� W 5 Q R X d S )Nz1.0, 2.1, 3.7
4, 5, 6r   r_   r‘   )r<   r$   r   r   r   Ú%test_implicit_cast_float_to_int_fails™  s    rÞ   Úwith_parens)FTc                 C   s\   d}|s|  dd¡  dd¡}tjt|ƒ| dd�}tjddd	gd
ddgg| d�}t||ƒ d S )Nz*(1.0-2.5j),3.75,(7+-5.0j)
(4),(-19e2j),(0)ú(Ú ú)r   r_   y      ð?      Àg      @y      @      Àr   y       €     °�Àr   r;   )r"   r   r   r   r   r   )r<   rß   r™   r�   r   r   r   r   Útest_complex_parsing¢  s     ÿrã   c                  C   sR   dd„ } t j| ƒ tdd�}t  dddgdddgdddgd	d
dgg¡}t||ƒ d S )Nc                  s   s0   t dƒD ]"} | › dd|  › d| d › �V  qd S )Nrg   r   r   ©Úrange©Úir   r   r   Úgen±  s    z%test_read_from_generator.<locals>.genr   r_   r   rB   r   rg   rC   r   r   )r   r   ra   r   r   ©rè   r�   r   r   r   r   Útest_read_from_generator°  s    *rê   c                  C   s<   dd„ } t j| ƒ ddd�}t jdddgdd	�}t||ƒ d S )
Nc                  s   s&   t dƒD ]} | › d| d › �V  qd S )NrC   r‚   rg   rä   ræ   r   r   r   rè   »  s    z/test_read_from_generator_multitype.<locals>.genzi, dr‚   r_   )r   g        )rB   g      Ð?)r   r
   r;   )r   r   r   r   ré   r   r   r   Ú"test_read_from_generator_multitypeº  s    rë   c               	   C   s8   dd„ } t jtdd�� tj| ƒ ddd� W 5 Q R X d S )Nc                  s   s   dD ]
} | V  qd S )N)z1,2s   3, 5iÂ1  r   )Úentryr   r   r   rè   Å  s    z)test_read_from_bad_generator.<locals>.genú&non-string returned while reading dataro   zi, ir   r_   ry   )rè   r   r   r   Útest_read_from_bad_generatorÄ  s     ÿrî   zPython lacks refcountsc               	      sh   t ƒ ‰d‰ ‡ ‡fdd„} tdd ƒ}tjtdd�� tj|t d| id� W 5 Q R X t ˆ¡d	ksdt	‚d S )
Nr   c                    s   ˆ dkrt dƒ‚ˆ d7 ‰ ˆS )Ni‡  zfailed half-way through!rB   )rv   r¢   ©Zalready_readÚsentinelr   r   rŸ   Ó  s    z/test_object_cleanup_on_read_error.<locals>.convzx
i'  zat row 5000, column 1ro   )r<   rœ   r   )
Úobjectr   rt   ru   rv   r   r   ÚsysÚgetrefcountr©   )rŸ   r$   r   rï   r   Ú!test_object_cleanup_on_read_errorÎ  s    rô   c               	   C   s0   t dƒ} t t¡� tj| dd� W 5 Q R X dS )z9Test exception when a character cannot be encoded as 'S'.u   â€“rÎ   r;   Nr‘   )r   r   r   r   Ú#test_character_not_bytes_compatibleâ  s    rõ   rŸ   rá   c              	   C   s4   d}t jt|d�� tjtdƒ| d� W 5 Q R X d S )Nz\converters must be a dictionary mapping columns to converter functions or a single callable.ro   ú1 2
3 4©rœ   ©rt   ru   rz   r   r   r   )rŸ   r’   r   r   r   Útest_invalid_converterë  s    ÿrù   c                	   C   sf   t jtdd�� tjtdƒdtid� W 5 Q R X t jtdd�� tjtdƒdtidd� W 5 Q R X d S )Nzkeys of the converters dictro   rö   r%   r÷   r   )rœ   r¡   )rt   ru   rz   r   r   r   ra   r   r   r   r   Ú+test_converters_dict_raises_non_integer_keyõ  s     rú   Úbad_col_ind)rC   rr   c              	   C   s8   t dƒ}tjtdd�� tj|| tid� W 5 Q R X d S )Nrö   zconverter specified for columnro   r÷   )r   rt   ru   rv   r   r   ra   )rû   r   r   r   r   Ú'test_converters_dict_raises_non_col_keyþ  s    rü   c                	   C   s4   t jtdd�� tjtdƒddid� W 5 Q R X d S )Nz4values of the converters dictionary must be callablero   rö   r   rB   r÷   rø   r   r   r   r   Ú,test_converters_dict_raises_val_not_callable  s    ÿrý   Úq)ú"ú'ú`c                 C   st   t | › d| › d| › d| › d| › d| › d�ƒ}t ddtjfg¡}tjd	d
dg|d�}tj||d| d�}t||ƒ d S )Núalpha, xz, 2.5
úbeta, yz, 4.5
úgamma, zz, 5.0
©r'   r»   r(   ©r  r   ©r  g      @©r  r^   r;   r   ©r<   r   Ú	quotechar©r   r   r<   r>   r   r   r   ©rþ   r$   r<   r   r�   r   r   r   Útest_quoted_field  s    &ÿ ÿr  c                 C   st   t | › d| › d| › d| › d| › d| › d�ƒ}t ddtjfg¡}tjd	d
dg|d�}tj||d | d�}t||ƒ d S )Nr  z	     2.5
r  z 4.5
r  z   5.0
r  r(   r  r  r  r;   r	  r  r  r   r   r   Ú*test_quoted_field_with_whitepace_delimiter  s    &ÿ ÿr  c               	   C   sˆ   t dƒ} t ddtjfdtjfg¡}tjtdd�� tj| |dd� W 5 Q R X |  d	¡ tj	d
g|d�}tj| |ddd�}t
||ƒ dS )z1Support for quoted fields is disabled by default.z"lat,long", 45, 30
)r'   ZU24r(   r*   zthe number of columns changedro   r   r_   r   )zlat,longg     €F@g      >@r;   rÿ   r	  N)r   r   r<   r>   rt   ru   rv   r   Úseekr   r   )r$   r<   r   r�   r   r   r   Útest_quote_support_default'  s    
r  c               	   C   s:   t dƒ} d}tjt|d�� tj| ddd� W 5 Q R X d S )Nú1,2
3,4z,.*must be a single unicode character or Nonero   r   z''©r   r
  ©r   rt   ru   rz   r   r   )r$   r’   r   r   r   Útest_quotechar_multichar_error7  s    r  c               	   C   s”   t dƒ} d}tjt|d�� tj| dddd� W 5 Q R X tjt|d�� tj| ddd	gdd� W 5 Q R X tj| dd
dd�}t|ddgddggƒ d S )Nr  zWwhen multiple comments or a multi-character comment is given, quotes are not supported.ro   r   Z123rÿ   )r   r   r
  r   ú%)r   r   rB   r   rC   rg   )r   rt   ru   rv   r   r   r   )r$   r’   r�   r   r   r   Ú'test_comment_multichar_error_with_quote@  s    ÿ r  c                  C   sf   t dƒ} t dtjfdtjfddtjfg¡}tjdddd	d
dg|d�}tj| |ddd�}t||ƒ d S )Nz{1000;2.4;'alpha';-34
2000;3.1;'beta';29
3500;9.9;'gamma';120
4090;8.1;'delta';0
5001;4.4;'epsilon';-99
6543;7.8;'omega';-1
r'   r(   r)   r+   r,   r.   r1   r4   r6   r8   r;   rD   r   r	  )	r   r   r<   r=   r>   r?   r   r   r   )r   r<   r   r�   r   r   r   Ú!test_structured_dtype_with_quotesP  s$    þ
ÿú÷r  c                  C   s<   t dƒ} tjdddgdd�}tj| dddd	�}t||ƒ d S )
Nz	1

"4"
""Ú1Ú4rá   ÚU1r;   r   rÿ   ©r   r<   r
  ©r   r   r   r   r   r§   r   r   r   Útest_quoted_field_is_not_emptym  s    r  c                  C   s<   t dƒ} tjdddgdd�}tj| dddd	�}t||ƒ d S )
Nz1

"4"
"r  r  rá   r  r;   r   rÿ   r  r  r§   r   r   r   Ú(test_quoted_field_is_not_empty_nonstricts  s    r  c                  C   s6   t dƒ} tjddd�}tj| dddd�}t||ƒ d S )Nz"Hello, my name is ""Monty""!"zHello, my name is "Monty"!ZU40r;   r   rÿ   r	  r  r§   r   r   r   Ú"test_consecutive_quotechar_escaped{  s    r  r   )rá   z


z# 1 2 3
# 4 5 6
r|   )r   rB   r   r¡   )rB   r   rC   c              
   C   sÆ   |dk	rd}n|dkrd}nd}t | ƒ}tjtdd�� tj|||d�}W 5 Q R X |j|ks`t‚td	d
��R}| 	| ¡ | 
d¡ tjtdd�� tj|||d�}W 5 Q R X |j|ks¸t‚W 5 Q R X dS )zDCheck that a UserWarning is emitted when no data is read from input.N)r   rC   r   rN   )r   úinput contained no dataro   )r|   r¡   Úw)Úmoder   )r   rt   ÚwarnsÚUserWarningr   r   r}   r©   r   Úwriter  )r   r|   r¡   Zexpected_shaper$   r�   Úfhr   r   r   Útest_warn_on_no_data‚  s    

r'  rO   c              	   C   s8   d}t |ƒ}tjtdd�� tj|| d� W 5 Q R X d S )Nz1 2 3
4 5 6r   ro   )rA   )r   rt   r#  r$  r   r   )rA   r   r$   r   r   r   Útest_warn_on_skipped_dataš  s    r(  rÉ   )r�   rB   )Úu2rB   )Úi4é )Zu4r+  )Úi8ì   
 )Úu8r-  )Zfloat16g#È÷{ ?)r¿   g‚Æ.  7)Ú	complex64y‚Æ.  7ü‰³`F$:)r>   g»Ú
complex128ywfUD3":»)Z
longdoubler-  Zclongdoubleyp`P@0 ðB ²B)ZU2u   ð�ˆƒò ¬ŒÚswapTFc                 C   s~   t  | ¡} d|› d�g}|r$|  ¡ } t jdd| fgdd�}|jd d dksPt‚t j||dd dd	�}|d |  |¡kszt‚d S )
Nzx,rÄ   )r%   ZS1rH   Fre   rB   r   )r<   r   r�   rn   )r   r<   ZnewbyteorderÚfieldsr©   r   rÇ   )r<   rÉ   r1  r   Zfull_dtr�   r   r   r   Útest_byteswapping_and_unaligned¢  s    
ÿr3  ZefdFDú?c                 C   s8   t dƒ}tj|| ddd�}t|t ddg¡ | ¡ƒ d S )Nu    3 ,"â€¯2
"r   rÿ   r	  rC   r   )r   r   r   r   r   ZastyperŒ   r   r   r   Ú!test_unicode_whitespace_strippingÂ  s    r5  ZFDc              
   C   sJ   d}||  dd¡g}tj|| dd�}t|t dddd	d
dggd ¡ƒ d S )Nz0 1 , 2+3j , ( 4+5j ), ( 6+-7j )  , 8j , ( 9j ) 
r‚   u   â€¯r   r_   rB   y       @      @y      @      @y      @      Ày               @y              "@r   )r"   r   r   r   r   )r<   Úliner   r�   r   r   r   Ú)test_unicode_whitespace_stripping_complexÎ  s    r7  rÈ   z1 +2jz1+ 2jz1+2 jz1+-+3z(1jz(1z(1+2jz1+2j)c              	   C   s0   t  t¡� tj|d g| dd� W 5 Q R X d S )NrÄ   r   r_   rs   )r<   rÈ   r   r   r   Útest_bad_complexØ  s    r8  ZefgdFDGc              	   C   sD   |   ¡ dkrt d¡ t t¡� tjdg| ddd� W 5 Q R X d S )NÚgz0longdouble/clongdouble assignment may misbehave.ú1 r   rÿ   r	  )Úlowerrt   Úxfailru   rv   r   r   r;   r   r   r   Útest_nul_character_errorâ  s    
r=  c              	   C   s~   | dkrt  d¡ | dkr$t  d¡ tdƒtdƒ  krNtdƒ  krNdksTn t‚t  t¡� t	j
dg| d� W 5 Q R X d S )	NÚez5half assignment currently uses Python float converterZeGz2clongdouble assignment is buggy (uses `complex`?).Z1_1rj   z1_1
r;   )rt   Úskipr<  ra   r`   Úcomplexr©   ru   rv   r   r   r;   r   r   r   Útest_no_thousands_supportï  s    

0rA  z1,2
z2
,3
z2,3
c              	   C   s0   d}t jt|d�� tj| dd� W 5 Q R X d S )Nz7Found an unquoted embedded newline within a single linero   r   r   rs   )r   r’   r   r   r   Útest_bad_newline_in_iterator  s    rB  z2,3
z'2
',3
z'2',3
z'2
',3
c                 C   s*   t j| ddd�}t|ddgddggƒ d S )Nr   r   r  r[   r\   r	   rE   )r   r�   r   r   r   Útest_good_newline_in_iterator  s    rC  ÚnewlinerÄ   úú
c                    sV   dddg}‡ fdd„|D ƒ}t j|tddd�}t|d	d
ˆ › �gddˆ › d	�ggƒ d S )Nz1,"2
"
z3,"4
z1"
c                    s   g | ]}|  d ˆ ¡‘qS )rÄ   )r"   )rÒ   rÅ   ©rD  r   r   rÓ     s     z2test_universal_newlines_quoted.<locals>.<listcomp>r   rÿ   r	  r  Ú2Ú3r  )r   r   rñ   r   )rD  r   r�   r   rG  r   Útest_universal_newlines_quoted  s    
rJ  c                  C   sd   t jddgdd�} t| dddgdd	d
ggƒ t jddgdtd�} |  ¡ dddgdddggks`t‚d S )Nz1 2 3
z4 5 6ú r   rB   r   rC   rg   rh   r   z1 ,2 ,3
z4 ,5 ,6r   rR   r:  z2 rI  z4 z5 Ú6)r   r   r   rñ   Útolistr©   )r�   r   r   r   Útest_null_character$  s    
 ÿrN  c               	   C   s>   G dd„ dƒ} t jtdd�� tj| ƒ tdd� W 5 Q R X d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z:test_iterator_fails_getting_next_line.<locals>.BadSequencec                 S   s   dS )NrZ   r   ©Úselfr   r   r   Ú__len__1  s    zBtest_iterator_fails_getting_next_line.<locals>.BadSequence.__len__c                 S   s"   |dkrt dƒ‚|› d|d › �S )Né2   úBad things happened!z, rB   )ÚRuntimeError)rP  Úitemr   r   r   Ú__getitem__4  s    zFtest_iterator_fails_getting_next_line.<locals>.BadSequence.__getitem__N)Ú__name__Ú
__module__Ú__qualname__rQ  rV  r   r   r   r   ÚBadSequence0  s   rZ  rS  ro   r   r_   )rt   ru   rT  r   r   ra   )rZ  r   r   r   Ú%test_iterator_fails_getting_next_line/  s    	r[  c                   @   sX   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 ddddg¡dd„ ƒZdS )ÚTestCReaderUnitTestsc              	   C   s:   t jtdd��" tjjjtƒ t d¡dd� W 5 Q R X d S )Nz.*readro   rç   T©r<   Úfilelike)	rt   ru   ÚAttributeErrorr   ÚcoreÚ_multiarray_umathÚ_load_from_filelikerñ   r<   rO  r   r   r   Útest_not_an_filelike@  s      ÿz)TestCReaderUnitTests.test_not_an_filelikec              	   C   sH   G dd„ dƒ}t jtdd��" tjjj|ƒ t d¡dd� W 5 Q R X d S )Nc                   @   s   e Zd ZdZdd„ ZdS )zBTestCReaderUnitTests.test_filelike_read_fails.<locals>.BadFileLiker   c                 S   s$   |  j d7  _ | j dkr tdƒ‚dS )NrB   é   úBad bad bad!z1,2,3
)ÚcounterrT  ©rP  Úsizer   r   r   ÚreadL  s    
zGTestCReaderUnitTests.test_filelike_read_fails.<locals>.BadFileLike.readN©rW  rX  rY  rf  ri  r   r   r   r   ÚBadFileLikeI  s   rk  re  ro   rç   Tr]  )rt   ru   rT  r   r`  ra  rb  r<   ©rP  rk  r   r   r   Útest_filelike_read_failsE  s    	  ÿz-TestCReaderUnitTests.test_filelike_read_failsc              	   C   sH   G dd„ dƒ}t jtdd��" tjjj|ƒ t d¡dd� W 5 Q R X d S )Nc                   @   s   e Zd ZdZdd„ ZdS )z@TestCReaderUnitTests.test_filelike_bad_read.<locals>.BadFileLiker   c                 S   s   dS )NiÒ  r   rg  r   r   r   ri  ^  s    zETestCReaderUnitTests.test_filelike_bad_read.<locals>.BadFileLike.readNrj  r   r   r   r   rk  [  s   rk  rí   ro   rç   Tr]  )rt   ru   rz   r   r`  ra  rb  r<   rl  r   r   r   Útest_filelike_bad_readV  s    ÿ  ÿz+TestCReaderUnitTests.test_filelike_bad_readc              	   C   s:   t jtdd��" tjjjtƒ t d¡dd� W 5 Q R X d S )Nz/error reading from object, expected an iterablero   rç   Fr]  ©	rt   ru   rz   r   r`  ra  rb  rñ   r<   rO  r   r   r   Útest_not_an_iterf  s    ÿ  ÿz%TestCReaderUnitTests.test_not_an_iterc              	   C   s4   t jtdd�� tjjjtƒ ddd� W 5 Q R X d S )Nzinternal error: dtype mustro   rç   Fr]  )rt   ru   rz   r   r`  ra  rb  rñ   rO  r   r   r   Útest_bad_typel  s      ÿz"TestCReaderUnitTests.test_bad_typec              	   C   s<   t jtdd��$ tjjjtƒ t d¡ddd� W 5 Q R X d S )Nzencoding must be a unicodero   rç   Fé{   )r<   r^  r�   ro  rO  r   r   r   Útest_bad_encodingq  s       ÿz&TestCReaderUnitTests.test_bad_encodingrD  rE  rÄ   rF  c                 C   s\   t d d|¡dd�}tjjj|t d¡dddd	d
�}t|d d …df dd|› �ddgƒ d S )Nz0
1
"2
"
3
4 #
rÄ   rá   rG  ZU10Trÿ   r   rB   )r<   r^  Úquoter   Z	skiplinesr   r  rH  rI  z4 )r   r"   r   r`  ra  rb  r<   r   )rP  rD  r   r�   r   r   r   Útest_manual_universal_newlinesv  s    ÿ    þz3TestCReaderUnitTests.test_manual_universal_newlinesN)rW  rX  rY  rc  rm  rn  rp  rq  rs  rt   ÚmarkÚparametrizeru  r   r   r   r   r\  =  s   r\  c                	   C   s2   t jtdd�� tjtdƒddd� W 5 Q R X d S )Nú".*control characters.*incompatiblero   ú1, 2, 3r   r   rø   r   r   r   r   Ú'test_delimiter_comment_collision_raises†  s    rz  c                	   C   s2   t jtdd�� tjtdƒddd� W 5 Q R X d S )Nrx  ro   ry  r   r  rø   r   r   r   r   Ú)test_delimiter_quotechar_collision_raises‹  s    r{  c                	   C   s2   t jtdd�� tjtdƒddd� W 5 Q R X d S )Nrx  ro   ú1 2 3r   )r   r
  rø   r   r   r   r   Ú'test_comment_quotechar_collision_raises�  s    r}  c                	   C   s6   t jtdd�� tjtdƒdddgd� W 5 Q R X d S )Nz0Comment characters.*cannot include the delimiterro   ry  r   r   r   rø   r   r   r   r   Ú5test_delimiter_and_multiple_comments_collision_raises•  s
     ÿr~  c                 C   s�   t jtdd��2 tjtd| › d| › d| › d| › d�	ƒ| d� W 5 Q R X t jtdd��2 tjtd| › d| › d| › d| › d�	ƒ| d	� W 5 Q R X d S )
Nrx  ro   r  rH  z3
4Ú5z6
©r   ©r
  rø   )r�   r   r   r   Ú,test_collision_with_default_delimiter_raisesœ  s    6r‚  Únl)rÄ   rE  c                 C   s´   t d| › d| › d| › | › d| › d| › d| › | › �ƒ}d}tjt|d�� tj|| d	� W 5 Q R X tjt|d�� tj|| d
� W 5 Q R X tjt|d�� tj|| d� W 5 Q R X d S )Nr  rH  rI  r  r  rL  z&control character.*cannot be a newlinero   r   r€  r�  r  )rƒ  r$   r’   r   r   r   Ú%test_control_character_newline_raises­  s    4r„  )Úgeneric_dataÚ
long_datumÚunitless_dtyperÌ   )z2012-03z
2013-01-15ZM8zM8[D])ú
spam-a-lotÚtis_but_a_scratchrÏ   ÚU17Únrows)ri   rÃ   é`ê  c              	   C   sÄ   | gd |g }t j||d�}td |¡ƒ}t j||d�}|j|jksJt‚t||ƒ tƒ \}	}
t	 
|	¡ t|
dƒ�}| d |¡¡ W 5 Q R X t j|
|d�}t	 |
¡ |j|jks¶t‚t||ƒ dS )z€Check that the correct unit (e.g. month, day, second) is discovered from
    the data when a user specifies a unitless datetime.rÃ   r;   rÄ   r!  N©r   r   r   rÔ   r   r<   r©   r   r   ÚosÚcloseÚopenr%  Úremove)r…  r†  r‡  rÌ   r‹  r   r   r$   r%   ÚfdÚfnamer&  r   r   r   Útest_parametric_unit_discovery¹  s    



r”  c               	   C   sà   dgd dg } t jdgd dg dd�}dd„ }td	 | ¡ƒ}t j|d
|d d�}|j|jksbt‚t||ƒ tƒ \}}t	 
|¡ t|dƒ�}| d	 | ¡¡ W 5 Q R X t j|d
|d d�}t	 |¡ |j|jksÒt‚t||ƒ d S )Nrˆ  rŒ  ZXXXtis_but_a_scratchr‰  rŠ  r;   c                 S   s
   |   d¡S r”   )Ústripr˜   r   r   r   rš   à  r›   z>test_str_dtype_unit_discovery_with_converter.<locals>.<lambda>rÄ   rÏ   )r<   rœ   r�   r!  r�  )r   r   rŸ   r$   r%   r’  r“  r&  r   r   r   Ú,test_str_dtype_unit_discovery_with_converterÛ  s$     ÿ



r–  c                	   C   s¸   t jtdd�� tjtdƒdd� W 5 Q R X t jtdd�� tjtdƒdd� W 5 Q R X t jtdd�� tjtdƒdd� W 5 Q R X t jtdd�� tjtdƒd	dgd� W 5 Q R X d S )
Nz#Text reading control character mustro   r|  rá   r   r�  z"comments cannot be an empty stringr€  r   )rt   ru   rz   r   r   r   rv   r   r   r   r   Útest_control_character_emptyó  s    r—  c                  C   s(   t jtdƒddd�} t| dddgƒ dS )	z<Byte control characters (comments, delimiter) are supported.z#header
1,2,3ó   #ó   ,)r   r   rB   r   rC   N)r   r   r   r   )r%   r   r   r   Ú test_control_characters_as_bytes   s    rš  zignore::UserWarningc                  C   s`   t jdgdtd�} t| ƒdks"t‚tddƒD ].}t jd| gdtd�} t| ƒ|d ks,t‚q,d S )Nrá   r   rR   r   rB   i   )r   r   rÁ   Úlenr©   rå   )r�   rç   r   r   r   Útest_field_growing_cases  s
    rœ  )kÚ__doc__rò   rŽ  rt   Útempfiler   r   Úior   Únumpyr   Znumpy.ma.testutilsr   Znumpy.testingr   r   r   r   rv  rw  r&   Zfixturer@   rF   rK   rU   rV   rd   rl   rx   r{   r~   r€   rŠ   r‹   r`   rñ   rŽ   ZskipifÚimplementationÚversionr<   r“   r    r£   r¨   r«   r°   r¸   rÀ   rÂ   rÆ   rÊ   rÑ   rÖ   rÙ   Ú	typecodesÚfilterwarningsrÝ   rÞ   r/  r0  rã   rê   rë   rî   rô   rõ   rù   rú   rü   rý   r  r  r  r  r  r  r  r  r  r'  r(  Úreprr3  r5  r7  r8  r=  rA  rB  rC  rJ  rN  r[  r\  rz  r{  r}  r~  r‚  r„  r”  r–  r—  rš  rœ  r   r   r   r   Ú<module>   s¦  

 



þþ


þ


ÿ

þþ

ÿ
ÿ




ÿ

	ÿ



ÿ

    

ðÿ


	ÿÿÿÿ	ÿÿþ
	ü


Iþ


þþÿ