a
    ³ÐOc’  ã                   @   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	g d
¢¡dd„ ƒZejdd„ ƒZej dg d¢¡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(g d)¢¡d*d+„ ƒZ ej d,d-¡d.d/„ ƒZ!d0d1„ Z"ej d2e#e$f¡d3d4„ ƒZ%ejj&e�o€ej'j(d5kd6d7�ej d2e
 )d8¡e
 )d9¡f¡d:d;„ ƒƒZ*d<d=„ Z+d>d?„ Z,d@dA„ Z-dBdC„ Z.ej dDg dE¢¡ej dFg dE¢¡dGdH„ ƒƒZ/dIdJ„ Z0dKdL„ Z1dMdN„ Z2dOdP„ Z3ej d2dQ¡dRdS„ ƒZ4ej dTdUe
 )dV¡fdWe
 )dX¡fg¡dYdZ„ ƒZ5d[d\„ Z6d]d^„ Z7ejj&e�o„ej'j(d5kd6d7�ej d2e
j8d_ ¡ej 9d`¡dadb„ ƒƒƒZ:ejj&e�oÊej'j(d5kd6d7�ej d2e
j8d_ ¡ej 9d`¡dcdd„ ƒƒƒZ;ej d2e
j<e
j=f¡ej dedf¡dgdh„ ƒƒZ>didj„ Z?dkdl„ Z@dmdn„ ZAejj&e dod7�dpdq„ ƒZBejj&e�onej'j(d5kd6d7�drds„ ƒZCej dtde#gduf¡dvdw„ ƒZDejj&e�o²ej'j(d5kd6d7�dxdy„ ƒZEej dzd{¡d|d}„ ƒZFd~d„ ZGej d€d�¡d‚dƒ„ ƒZHd„d…„ ZIejj&e�oej'j(d5kd6d7�d†d‡„ ƒZJdˆd‰„ ZKdŠd‹„ ZLdŒd�„ ZMdŽd�„ ZNd�d‘„ ZOej d’d“¡ej d”d•¡ej d–dd—g¡d˜d™„ ƒƒƒZPej ddš¡d›dœ„ ƒZQej d2d�gdždŸd d¡d¢d£d¤d¥d¦d§d¨eRd©ƒfdªd«eRd¬ƒfd­g¡ej d®d¯d°g¡d±d²„ ƒƒZSej d2e
j8d_ d³ d´ ¡dµd¶„ ƒZTej d2d·¡d¸d¹„ ƒZUejj&e�o@ej'j(d5kd6d7�ej d2d·¡ej dºg d»¢¡d¼d½„ ƒƒƒZVejj&e�o†ej'j(d5kd6d7�ej d2e
j8d_ d¾ d´ ¡d¿dÀ„ ƒƒZWejj&e�oÈej'j(d5kd6d7�ej d2e
j8d_ d¾ d´ ¡dÁdÂ„ ƒƒZXej d’dÃdÄgdÃdÅgg¡dÆdÇ„ ƒZYej d’dÃdÈgdÃdÉgdÃdÊgdÃdËgg¡dÌdÍ„ ƒZZej dÎg dÏ¢¡dÐdÑ„ ƒZ[dÒdÓ„ Z\dÔdÕ„ Z]G dÖd×„ d×ƒZ^dØdÙ„ Z_dÚdÛ„ Z`dÜdÝ„ ZadÞdß„ Zbej d,d-¡dàdá„ ƒZcej dâdã¡dädå„ ƒZdej dædçdèg¡ej dédê¡dëdì„ ƒƒZedídî„ Zfejj&e�oej'j(d5kd6d7�dïdð„ ƒZgdñdò„ Zhd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   sB   t dƒ} t g d¢g d¢g d¢g d¢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.0)çš™™™™™¹?g      4@ç      @)g{®Gáz¤?ç      à?é   )gyé&1¬|?g      T@é	   )r   r	   é   ú,©Ú	delimiterN)r   ÚnpÚarrayr   Úloadtxt)ÚdataÚexpected© r   úS/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/lib/tests/test_loadtxt.pyÚtest_scientific_notation   s    þÿr   Úcomment)z..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   sH   t dƒ} t dtjfdtjfddtjfg¡}tjg d¢|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   r8   Úuint16Úfloat64Úint8r   )r   r8   r   r   r   r   Úmixed_types_structured*   s    þ
ÿ÷r<   Úskiprows)r   é   r   é   c                 C   s2   |\}}}t j||d| d�}t||| d … ƒ d S )Nú;)r8   r   r=   ©r   r   r   )r=   r<   r   r8   r   r&   r   r   r   Ú1test_structured_dtype_and_skiprows_no_empty_linesK   s    
rB   c                 C   s`   | \}}}t j||ddd�\}}}}t||d ƒ t||d ƒ t||d ƒ t||d ƒ d S )Nr@   T)r8   r   Úunpackr(   r)   r+   r,   rA   )r<   r   r8   r   r&   ÚbÚcÚdr   r   r   Útest_unpack_structuredS   s    
rG   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   )rD   rH   r   z0,1,2,3
6,7,8,9
©©r   r>   ©r   r?   ))r   é   )é   r   r7   r   ©r   r8   ©r   r8   r   r   r   r   ©r8   r   r   r   r   r   Ú test_structured_dtype_with_shape]   s    rQ   c                  C   s<   t  dg¡} tdƒ}t jdg| d�}tt j|| d�|ƒ d S )N)r&   rH   )r   r   z0 1 2 3
)rI   r7   rO   rP   r   r   r   Ú&test_structured_dtype_with_multi_shaped   s    rR   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       @r7   r   ©r8   r   )r   r8   ÚfloatÚintr   r   r   r   )ZpointÚdtr   r   r   r   r   Útest_nested_structured_subarrayk   s    

þûr_   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©Zalignz1,2,3,4,5,6
7,8,9,10,11,12
)r>   r   r?   é   é   r   )rL   rM   r   é
   é   é   r7   r   rN   rO   )r^   r   r   r   r   r   Útest_structured_dtype_offsetsz   s    rf   Úparam)r=   Úmax_rowsc                 C   sF   t jtdd��$ tjdi | di¤Ž W d  ƒ n1 s80    Y  dS )z;skiprows and max_rows should raise for negative parameters.zargument must be nonnegative©Úmatchúfoo.baréýÿÿÿN)rk   ©ÚpytestÚraisesÚ
ValueErrorr   r   ©rg   r   r   r   Ú"test_exception_negative_row_limits‚   s    rr   c                 C   sF   t jtdd��$ tjdi | di¤Ž W d   ƒ n1 s80    Y  d S )Nzargument must be an integerri   rk   rW   )rk   ©rn   ro   Ú	TypeErrorr   r   rq   r   r   r   Ú$test_exception_noninteger_row_limits‰   s    ru   zdata, shape)z
1 2 3 4 5
)r>   rb   )z
1
2
3
4
5
)rb   r>   c                 C   s‚   t  g d¢¡}| |¡}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 )N)r>   r   r?   ra   rb   r7   r   )r8   Úndminr>   r   )r   r   Zreshaper   r   r   r]   )r   ÚshapeZarrZarr2dr   r   r   Útest_ndmin_single_row_or_col�   s    
rx   Úbadval)r6   r?   Nzplate of shrimpc                 C   s@   t jtdd�� tjd| d� W d   ƒ n1 s20    Y  d S )NzIllegal value of ndmin keywordri   rk   )rv   rm   )ry   r   r   r   Útest_bad_ndmin    s    rz   Úws)ú ú	u   â€ƒõ   Â u   ã€€c                 C   sf   t d| › d| › d| › d| › d| › d�ƒ}t g d¢g d¢g d	¢g d
¢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 1©r>   r   é   ©ra   rb   é<   ©rL   rM   éZ   ©r?   r   r>   r   ©r8   r   r   ©r   r   r   r   r   r]   )r{   r%   r   r   r   r   Útest_blank_lines_spaces_delimit¦   s    ÿÿþÿ	"ÿrˆ   c                  C   sF   t dƒ} t g d¢g d¢g d¢g d¢g¡}ttj| tddd�|ƒ d S )	Nz&1,2,30

4,5,60

7,8,90
# comment
3,2,1r   r�   rƒ   r…   r   r   r†   r‡   )r%   r   r   r   r   Ú!test_blank_lines_normal_delimiterÀ   s
    "ÿr‰   r8   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   )r8   r   rh   z1.5z2.5z3.0z4.0r7   )r   r   r   r   r8   r   ©r8   r%   Úresr   r   r   Útest_maxrows_no_blank_linesÈ   s    rŒ   )rL   r?   rM   zPyPy bug in error formatting)ÚreasonZf8Úi2c                 C   sV   t dƒ}d| › d�}tjt|d��  tj|| dd� W d   ƒ n1 sH0    Y  d S )Nz1,2
3,XXX
5,6z"could not convert string 'XXX' to z at row 1, column 2ri   r   r[   ©r   rn   ro   rp   r   r   )r8   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.0r6   c                 S   s   | dkrt jS t| ƒS ©NZXXX©r   Únanr\   ©Úsr   r   r   Ú<lambda>Ü   ó    z2test_converters_negative_indices.<locals>.<lambda>r   r   r
   r!   r"   r   )r8   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
r6   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   )r8   r   r™   Úusecolsrš   z0,1,2
0,1,2,3,4c                 S   s   dS )Nr6   r   ©rS   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 d   ƒ n1 s†0    Y  d S )	Nú$0,0,XXX
0,XXX,0,XXX
0,XXX,XXX,0,XXX
r   r   éþÿÿÿ©r8   r   rž   z0,0,XXX
0
0,XXX,XXX,0,XXX
z/invalid column index -2 at row 2 with 1 columnsri   )	r   r   r   r   r\   r   rn   ro   rp   ©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.J ‚|jt g ¡ksBJ ‚d S )Nr¡   r   r£   )r?   )r   r   r   r8   rw   ©r%   r‹   r   r   r   Útest_empty_usecols  s    r§   Úc1)r&   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,r7   )r   r   r   r8   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   )r8   r™   r   rš   ZCATZdogu   Î‘Î’Î“u   Î´ÎµÎ¶ÚABCÚdef)r   r   r   r8   r   r   ©r%   rœ   r‹   r   r   r   r   Útest_unicode_with_converter  s    ûr³   c                  C   sh   t dƒ} t dtjfdtjfdg¡}dd„ dd„ dœ}tj| |d	|d
�}tjg d¢|d�}t||ƒ d S )Nz$1.5,2.5,Abc
3.0,4.0,dEf
5.5,6.0,ghI
ÚmÚr)rU   ÚU8c                 S   s   t dt| ƒ ƒS )Nrc   )r]   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   r6   r   )r8   r   r™   ))é   r   r°   )r€   r    ÚDEF)é7   r"   ZGHIr7   )r   r   r8   Úint32Úfloat32r   r   r   )r%   r^   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   )r8   r™   r   r°   r¸   ZRSTZXYZN)r   Úbytesr¯   r   r   r8   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Ã  r6   Ú
r   r   rN   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s4J ‚d S )Naò  0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.123456789r7   r   z0.123456789)r   r8   r   Útype)r8   Ú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-9r7   N)r   r   r   r   r   r8   )rÇ   rÈ   r%   r‹   r   r   r   r   Útest_string_no_length_givenT  s    ÿ
rÍ   c                  C   sB   g d¢} 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  r˜   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&J ‚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[   TFr>   r   )r   r   r   Úboolr8   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"J ‚| jdkrht t¡�  t jdg| d� W d   ƒ q€1 s\0    Y  nt jdg| d�dks€J ‚dD ]D}t t¡�& t j|› d	�g| d� W d   ƒ q„1 s¾0    Y  q„d S )
Nz+2r7   r   Úuz-1
z-2
r¢   )z++z+-z--z-+z2
)r   r8   r   Úkindrn   ro   rp   )r8   Úsignr   r   r   Útest_integer_signs‡  s    

0rÙ   c                 C   sF   t dƒ}t t¡�  tj|| dd� W d   ƒ n1 s80    Y  d S )Nz1.0, 2.1, 3.7
4, 5, 6r   r[   r�   )r8   r%   r   r   r   Ú%test_implicit_cast_float_to_int_fails™  s    rÚ   Úwith_parens)FTc                 C   sX   d}|s|  dd¡  dd¡}tjt|ƒ| dd�}tjg d¢g d¢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   r7   )r#   r   r   r   r   r   )r8   rÛ   r–   r‹   r   r   r   r   Útest_complex_parsing¢  s    ÿrß   c                  C   sJ   dd„ } t j| ƒ tdd�}t  g d¢g d¢g d¢g d¢g¡}t||ƒ d S )	Nc                  s   s0   t dƒD ]"} | › dd|  › d| d › �V  qd S )Nra   r   r   ©Úrange©Úir   r   r   Úgen±  s    z%test_read_from_generator.<locals>.genr   r[   )r   r   r   )r>   r   r>   )r   ra   ra   )r?   r   r   )r   r   r]   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g d¢dd�}t||ƒ d S )Nc                  s   s&   t dƒD ]} | › d| d › �V  qd S )Nr?   r|   ra   rà   râ   r   r   r   rä   »  s    z/test_read_from_generator_multitype.<locals>.genzi, dr|   r[   ))r   g        )r>   g      Ð?)r   r   r7   )r   r   r   r   rå   r   r   r   Ú"test_read_from_generator_multitypeº  s    rç   c                  C   sL   dd„ } t jtdd��" tj| ƒ ddd� W d   ƒ n1 s>0    Y  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 datari   zi, ir   r[   rs   )rä   r   r   r   Útest_read_from_bad_generatorÄ  s
    ÿrê   zPython lacks refcountsc                     s|   t ƒ ‰d‰ ‡ ‡fdd„} tdd ƒ}tjtdd��$ tj|t d| id� W d   ƒ n1 s\0    Y  t ˆ¡d	ksxJ ‚d S )
Nr   c                    s   ˆ dkrt dƒ‚ˆ d7 ‰ ˆS )Ni‡  zfailed half-way through!r>   )rp   rŸ   ©Zalready_readÚsentinelr   r   rœ   Ó  s    z/test_object_cleanup_on_read_error.<locals>.convzx
i'  zat row 5000, column 1ri   )r8   r™   r   )	Úobjectr   rn   ro   rp   r   r   ÚsysÚgetrefcount)rœ   r%   r   rë   r   Ú!test_object_cleanup_on_read_errorÎ  s    2rð   c                  C   sD   t dƒ} t t¡� tj| dd� W d  ƒ n1 s60    Y  dS )z9Test exception when a character cannot be encoded as 'S'.u   â€“rÊ   r7   Nr�   )r   r   r   r   Ú#test_character_not_bytes_compatibleâ  s    rñ   rœ   rÝ   c                 C   sH   d}t jt|d��" tjtdƒ| d� W d   ƒ n1 s:0    Y  d S )Nz\converters must be a dictionary mapping columns to converter functions or a single callable.ri   ú1 2
3 4©r™   ©rn   ro   rt   r   r   r   )rœ   r�   r   r   r   Útest_invalid_converterë  s    ÿrõ   c                   C   sŽ   t jtdd��& tjtdƒdtid� W d   ƒ n1 s:0    Y  t jtdd��( tjtdƒdtidd� W d   ƒ n1 s€0    Y  d S )Nzkeys of the converters dictri   rò   r&   ró   r   )r™   rž   )rn   ro   rt   r   r   r   r]   r   r   r   r   Ú+test_converters_dict_raises_non_integer_keyõ  s    4rö   Úbad_col_ind)r?   rl   c                 C   sL   t dƒ}tjtdd��" tj|| tid� W d   ƒ n1 s>0    Y  d S )Nrò   zconverter specified for columnri   ró   )r   rn   ro   rp   r   r   r]   )r÷   r   r   r   r   Ú'test_converters_dict_raises_non_col_keyþ  s    rø   c                   C   sH   t jtdd��& tjtdƒddid� W d   ƒ n1 s:0    Y  d S )Nz4values of the converters dictionary must be callableri   rò   r   r>   ró   rô   r   r   r   r   Ú,test_converters_dict_raises_val_not_callable  s    ÿrù   Úq)ú"ú'ú`c                 C   sr   t | › d| › d| › d| › d| › d| › d�ƒ}t ddtjfg¡}tjg d	¢|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   rZ   r7   r   ©r8   r   Ú	quotechar)r   r   r8   r:   r   r   r   )rú   r%   r8   r   r‹   r   r   r   Útest_quoted_field  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 d	  ƒ n1 sX0    Y  |  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 changedri   r   r[   Nr   )zlat,longg     €F@g      >@r7   rû   r  )r   r   r8   r:   rn   ro   rp   r   Úseekr   r   )r%   r8   r   r‹   r   r   r   Útest_quote_support_default  s    .
r  c                  C   sN   t dƒ} d}tjt|d��  tj| ddd� W d   ƒ n1 s@0    Y  d S )Nú1,2
3,4z,.*must be a single unicode character or Noneri   r   z''©r   r  ©r   rn   ro   rt   r   r   )r%   r�   r   r   r   Útest_quotechar_multichar_error)  s    r	  c                  C   s¼   t dƒ} d}tjt|d��" tj| dddd� W d   ƒ n1 sB0    Y  tjt|d��& tj| ddd	gdd� W d   ƒ n1 s†0    Y  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.ri   r   Z123rû   )r   r   r  r   ú%)r   rü   r>   r   r?   ra   )r   rn   ro   rp   r   r   r   )r%   r�   r‹   r   r   r   Ú'test_comment_multichar_error_with_quote2  s    ÿ04r  c                  C   s^   t dƒ} t dtjfdtjfddtjfg¡}tjg d¢|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-   r7   r@   rü   r  )	r   r   r8   r9   r:   r;   r   r   r   )r   r8   r   r‹   r   r   r   Ú!test_structured_dtype_with_quotesB  s    þ
ÿ÷r  c                  C   s:   t dƒ} tjg d¢dd�}tj| dddd�}t||ƒ d S )Nz	1

"4"
""©Ú1Ú4rÝ   ÚU1r7   r   rû   ©r   r8   r  ©r   r   r   r   r   r¤   r   r   r   Útest_quoted_field_is_not_empty_  s    r  c                  C   s:   t dƒ} tjg d¢dd�}tj| dddd�}t||ƒ d S )Nz1

"4"
"r  r  r7   r   rû   r  r  r¤   r   r   r   Ú(test_quoted_field_is_not_empty_nonstricte  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U40r7   r   rû   r  r  r¤   r   r   r   Ú"test_consecutive_quotechar_escapedm  s    r  r   )rÝ   z


z# 1 2 3
# 4 5 6
rv   )r   r>   r   rž   ©r>   r   r?   c              	   C   s  |durd}n|dkrd}nd}t | ƒ}tjtdd��  tj|||d�}W d  ƒ n1 s\0    Y  |j|kstJ ‚td	d
��p}| | ¡ | 	d¡ tjtdd��  tj|||d�}W d  ƒ n1 sÈ0    Y  |j|ksàJ ‚W d  ƒ n1 sô0    Y  dS )zDCheck that a UserWarning is emitted when no data is read from input.N)r   r?   r   rJ   )r   úinput contained no datari   )rv   rž   Úw)Úmoder   )
r   rn   ÚwarnsÚUserWarningr   r   rw   r   Úwriter  )r   rv   rž   Zexpected_shaper%   r‹   Úfhr   r   r   Útest_warn_on_no_datat  s    .

.r  rK   c                 C   sL   d}t |ƒ}tjtdd�� tj|| d� W d   ƒ n1 s>0    Y  d S )Nz1 2 3
4 5 6r  ri   )r=   )r   rn   r  r  r   r   )r=   r   r%   r   r   r   Útest_warn_on_skipped_dataŒ  s    r  rÅ   )rŽ   r>   )Úu2r>   )Úi4é )Zu4r"  )Úi8ì   
 )Úu8r$  )Ú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sPJ ‚t j||dd dd	�}|d |  |¡kszJ ‚d S )
Nzx,rÀ   )r&   ZS1rD   Fr`   r>   r   )r8   r   rš   rh   )r   r8   ZnewbyteorderÚfieldsr   rÃ   )r8   rÅ   r)  r   Zfull_dtr‹   r   r   r   Útest_byteswapping_and_unaligned”  s    
ÿr+  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  r?   r   )r   r   r   r   r   ZastyperŠ   r   r   r   Ú!test_unicode_whitespace_stripping´  s    r-  ZFDc                 C   sB   d}||  dd¡g}tj|| dd�}t|t g d¢gd ¡ƒ d S )Nz0 1 , 2+3j , ( 4+5j ), ( 6+-7j )  , 8j , ( 9j ) 
r|   u   â€¯r   r[   )r>   y       @      @y      @      @y      @      Ày               @y              "@r   )r#   r   r   r   r   )r8   Úliner   r‹   r   r   r   Ú)test_unicode_whitespace_stripping_complexÀ  s    r/  rÄ   )z1 +2jz1+ 2jz1+2 jz1+-+3z(1jz(1z(1+2jz1+2j)c                 C   sD   t  t¡�& tj|d g| dd� W d   ƒ n1 s60    Y  d S )NrÀ   r   r[   rm   )r8   rÄ   r   r   r   Útest_bad_complexÊ  s    r0  ZefgdFDGc                 C   sX   |   ¡ dkrt d¡ t t¡�$ tjdg| ddd� W d   ƒ n1 sJ0    Y  d S )NÚgz0longdouble/clongdouble assignment may misbehave.ú1 r   rû   r  )Úlowerrn   Úxfailro   rp   r   r   r7   r   r   r   Útest_nul_character_errorÔ  s    
r5  c                 C   s’   | dkrt  d¡ | dv r$t  d¡ tdƒtdƒ  krNtdƒ  krNdksTn J ‚t  t¡�  tj	dg| d� W d   ƒ n1 s„0    Y  d S )	NÚez5half assignment currently uses Python float converterZeGz2clongdouble assignment is buggy (uses `complex`?).Z1_1rd   z1_1
r7   )
rn   Úskipr4  r]   r\   Úcomplexro   rp   r   r   r7   r   r   r   Útest_no_thousands_supportá  s    

0r9  z1,2
z2
,3
z2,3
c                 C   sD   d}t jt|d�� tj| dd� W d   ƒ n1 s60    Y  d S )Nz7Found an unquoted embedded newline within a single lineri   r   r   rm   )r   r�   r   r   r   Útest_bad_newline_in_iteratoró  s    r:  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  rW   rX   r
   rA   )r   r‹   r   r   r   Útest_good_newline_in_iteratorÿ  s    r;  Únewline)rÀ   úú
c                    sT   g d¢}‡ fdd„|D ƒ}t j|tddd�}t|ddˆ › �gd	d
ˆ › d�ggƒ d S )N)z1,"2
"
z3,"4
z1"
c                    s   g | ]}|  d ˆ ¡‘qS )rÀ   )r#   )rÎ   rÁ   ©r<  r   r   rÏ     r˜   z2test_universal_newlines_quoted.<locals>.<listcomp>r   rû   r  r  Ú2Ú3r  )r   r   rí   r   )r<  r   r‹   r   r?  r   Útest_universal_newlines_quoted  s    rB  c                  C   s\   t jddgdd�} t| g d¢g d¢gƒ t jddgd	td
�} |  ¡ g d¢g d¢gksXJ ‚d S )Nz1 2 3
z4 5 6ú r   r  )ra   rb   r   z1 ,2 ,3
z4 ,5 ,6r   rN   )r2  z2 rA  )z4 z5 Ú6)r   r   r   rí   Útolist)r‹   r   r   r   Útest_null_character  s    
ÿrF  c                  C   sR   G dd„ dƒ} t jtdd��" tj| ƒ tdd� W d   ƒ n1 sD0    Y  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 )NrV   r   ©Úselfr   r   r   Ú__len__#  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, r>   )ÚRuntimeError)rH  Úitemr   r   r   Ú__getitem__&  s    zFtest_iterator_fails_getting_next_line.<locals>.BadSequence.__getitem__N)Ú__name__Ú
__module__Ú__qualname__rI  rN  r   r   r   r   ÚBadSequence"  s   rR  rK  ri   r   r[   )rn   ro   rL  r   r   r]   )rR  r   r   r   Ú%test_iterator_fails_getting_next_line!  s    	rS  c                   @   sV   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g d¢¡dd„ ƒZdS )ÚTestCReaderUnitTestsc                 C   sN   t jtdd��, tjjjtƒ t d¡dd� W d   ƒ n1 s@0    Y  d S )Nz.*readri   rã   T©r8   Úfilelike)	rn   ro   ÚAttributeErrorr   ÚcoreÚ_multiarray_umathÚ_load_from_filelikerí   r8   rG  r   r   r   Útest_not_an_filelike2  s    ÿz)TestCReaderUnitTests.test_not_an_filelikec                 C   s\   G dd„ dƒ}t jtdd��, tjjj|ƒ t d¡dd� W d   ƒ n1 sN0    Y  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 )Nr>   é   úBad bad bad!z1,2,3
)ÚcounterrL  ©rH  Úsizer   r   r   Úread>  s    
zGTestCReaderUnitTests.test_filelike_read_fails.<locals>.BadFileLike.readN©rO  rP  rQ  r^  ra  r   r   r   r   ÚBadFileLike;  s   rc  r]  ri   rã   TrU  )rn   ro   rL  r   rX  rY  rZ  r8   ©rH  rc  r   r   r   Útest_filelike_read_fails7  s
    	ÿz-TestCReaderUnitTests.test_filelike_read_failsc                 C   s\   G dd„ dƒ}t jtdd��, tjjj|ƒ t d¡dd� W d   ƒ n1 sN0    Y  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   r_  r   r   r   ra  P  s    zETestCReaderUnitTests.test_filelike_bad_read.<locals>.BadFileLike.readNrb  r   r   r   r   rc  M  s   rc  ré   ri   rã   TrU  )rn   ro   rt   r   rX  rY  rZ  r8   rd  r   r   r   Útest_filelike_bad_readH  s    ÿÿz+TestCReaderUnitTests.test_filelike_bad_readc                 C   sN   t jtdd��, tjjjtƒ t d¡dd� W d   ƒ n1 s@0    Y  d S )Nz/error reading from object, expected an iterableri   rã   FrU  ©	rn   ro   rt   r   rX  rY  rZ  rí   r8   rG  r   r   r   Útest_not_an_iterX  s    ÿÿz%TestCReaderUnitTests.test_not_an_iterc                 C   sH   t jtdd��& tjjjtƒ ddd� W d   ƒ n1 s:0    Y  d S )Nzinternal error: dtype mustri   rã   FrU  )rn   ro   rt   r   rX  rY  rZ  rí   rG  r   r   r   Útest_bad_type^  s    ÿz"TestCReaderUnitTests.test_bad_typec                 C   sP   t jtdd��. tjjjtƒ t d¡ddd� W d   ƒ n1 sB0    Y  d S )Nzencoding must be a unicoderi   rã   Fé{   )r8   rV  rš   rg  rG  r   r   r   Útest_bad_encodingc  s    ÿz&TestCReaderUnitTests.test_bad_encodingr<  )r=  rÀ   r>  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Ý   r?  ZU10Trû   r   r>   )r8   rV  Úquoter   Z	skiplinesr   r  r@  rA  z4 )r   r#   r   rX  rY  rZ  r8   r   )rH  r<  r   r‹   r   r   r   Útest_manual_universal_newlinesh  s    ÿþz3TestCReaderUnitTests.test_manual_universal_newlinesN)rO  rP  rQ  r[  re  rf  rh  ri  rk  rn   ÚmarkÚparametrizerm  r   r   r   r   rT  /  s   rT  c                   C   sF   t jtdd��$ tjtdƒddd� W d   ƒ n1 s80    Y  d S )Nú".*control characters.*incompatibleri   ú1, 2, 3r   r   rô   r   r   r   r   Ú'test_delimiter_comment_collision_raisesx  s    rr  c                   C   sF   t jtdd��$ tjtdƒddd� W d   ƒ n1 s80    Y  d S )Nrp  ri   rq  r   r  rô   r   r   r   r   Ú)test_delimiter_quotechar_collision_raises}  s    rs  c                   C   sF   t jtdd��$ tjtdƒddd� W d   ƒ n1 s80    Y  d S )Nrp  ri   ú1 2 3r   )r   r  rô   r   r   r   r   Ú'test_comment_quotechar_collision_raises‚  s    ru  c                   C   sJ   t jtdd��( tjtdƒdddgd� W d   ƒ n1 s<0    Y  d S )Nz0Comment characters.*cannot include the delimiterri   rq  r   r   r   rô   r   r   r   r   Ú5test_delimiter_and_multiple_comments_collision_raises‡  s    ÿrv  c                 C   s¸   t jtdd��< tjtd| › d| › d| › d| › d�	ƒ| d� W d   ƒ n1 sP0    Y  t jtdd��< tjtd| › d| › d| › d| › d�	ƒ| d	� W d   ƒ n1 sª0    Y  d S )
Nrp  ri   r  r@  z3
4Ú5z6
©r   ©r  rô   )r{   r   r   r   Ú,test_collision_with_default_delimiter_raisesŽ  s    Jrz  Únl)rÀ   r=  c                 C   sð   t d| › d| › d| › | › d| › d| › d| › | › �ƒ}d}tjt|d�� tj|| d	� W d   ƒ n1 sj0    Y  tjt|d�� tj|| d
� W d   ƒ n1 s¦0    Y  tjt|d�� tj|| d� W d   ƒ n1 sâ0    Y  d S )Nr  r@  rA  r  rw  rD  z&control character.*cannot be a newlineri   r   rx  ry  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)rc   r¿   é`ê  c                 C   sØ   | gd |g }t j||d�}td |¡ƒ}t j||d�}|j|jksJJ ‚t||ƒ tƒ \}	}
t 	|	¡ t
|
dƒ� }| d |¡¡ W d  ƒ n1 s˜0    Y  t j|
|d�}t |
¡ |j|jksÊJ ‚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¿   r7   rÀ   r  N©r   r   r   rÐ   r   r8   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sbJ ‚t||ƒ tƒ \}}t 	|¡ t
|dƒ� }| d	 | ¡¡ W d   ƒ n1 s°0    Y  t j|d
|d d�}t |¡ |j|jksæJ ‚t||ƒ d S )Nr€  r„  ZXXXtis_but_a_scratchr�  r‚  r7   c                 S   s
   |   d¡S r’   )Ústripr•   r   r   r   r—   Ò  r˜   z>test_str_dtype_unit_discovery_with_converter.<locals>.<lambda>rÀ   rË   )r8   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 d   ƒ n1 s60    Y  t jtdd��" tjtdƒdd� W d   ƒ n1 sv0    Y  t jtdd��" tjtdƒdd� W d   ƒ n1 s¶0    Y  t jtdd��& tjtdƒd	dgd� W d   ƒ n1 sú0    Y  d S )
Nz#Text reading control character mustri   rt  rÝ   r   ry  z"comments cannot be an empty stringrx  r   )rn   ro   rt   r   r   r   rp   r   r   r   r   Útest_control_character_emptyå  s    000r�  c                  C   s&   t jtdƒddd�} t| g d¢ƒ dS )z<Byte control characters (comments, delimiter) are supported.z#header
1,2,3ó   #ó   ,)r   r   r  N)r   r   r   r   )r&   r   r   r   Ú test_control_characters_as_bytesò  s    r’  )iÚ__doc__rî   r†  rn   Útempfiler   r   Úior   Únumpyr   Znumpy.ma.testutilsr   Znumpy.testingr   r   r   r   rn  ro  r'   Zfixturer<   rB   rG   rQ   rR   r_   rf   rr   ru   rx   rz   rˆ   r‰   r\   rí   rŒ   ZskipifÚimplementationÚversionr8   r‘   r�   r    r¥   r§   r¬   r³   r¼   r¾   rÂ   rÆ   rÍ   rÒ   rÕ   Ú	typecodesÚfilterwarningsrÙ   rÚ   r'  r(  rß   ræ   rç   rê   rð   rñ   rõ   rö   rø   rù   r  r  r	  r  r  r  r  r  r  r  Úreprr+  r-  r/  r0  r5  r9  r:  r;  rB  rF  rS  rT  rr  rs  ru  rv  rz  r|  rŒ  rŽ  r�  r’  r   r   r   r   Ú<module>   s–  

 



þþ


þ

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

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

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

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