o
    z¨ÊhKš  ã                   @   sp  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.dDdE„ Z/ej dFg dG¢¡ej dHg dG¢¡dIdJ„ ƒƒZ0dKdL„ Z1dMdN„ Z2dOdP„ Z3dQdR„ Z4ej d2dS¡dTdU„ ƒZ5ej dVdWe
 )dX¡fdYe
 )dZ¡fg¡d[d\„ ƒZ6d]d^„ Z7d_d`„ Z8ejj&e�oEej'j(d5kd6d7�ej d2e
j9da ¡ej :db¡dcdd„ ƒƒƒZ;ejj&e�ohej'j(d5kd6d7�ej d2e
j9da ¡ej :db¡dedf„ ƒƒƒZ<ej d2e
j=e
j>f¡ej dgdh¡didj„ ƒƒZ?dkdl„ Z@dmdn„ ZAdodp„ ZBejj&e dqd7�drds„ ƒZCejj&e�oºej'j(d5kd6d7�dtdu„ ƒZDej dvde#gdwf¡dxdy„ ƒZEejj&e�oÜej'j(d5kd6d7�dzd{„ ƒZFej d|d}¡d~d„ ƒZGd€d�„ ZHej d‚dƒ¡d„d…„ ƒZIej d‚dƒ¡d†d‡„ ƒZJdˆd‰„ ZKejj&e�oej'j(d5kd6d7�dŠd‹„ ƒZLdŒd�„ ZMdŽd�„ ZNd�d‘„ ZOd’d“„ ZPd”d•„ ZQej d–d—¡ej d˜d™¡ej dšdd›g¡dœd�„ ƒƒƒZRej ddž¡dŸd „ ƒZSej d2d¡gd¢d£d¤d¥d¦d§d¨d©dªd«d¬eTd­ƒfd®d¯eTd°ƒfd±g¡ej d²d³d´g¡dµd¶„ ƒƒZUej d2e
j9da d· d¸ ¡d¹dº„ ƒZVej d2d»¡d¼d½„ ƒZWejj&e�o®ej'j(d5kd6d7�ej d2d»¡ej d¾g d¿¢¡dÀdÁ„ ƒƒƒZXejj&e�oÑej'j(d5kd6d7�ej d2e
j9da dÂ d¸ ¡dÃdÄ„ ƒƒZYejj&e�oòej'j(d5kd6d7�ej d2e
j9da dÂ d¸ ¡dÅdÆ„ ƒƒZZej d–dÇdÈgdÇdÉgg¡dÊdË„ ƒZ[ej d–dÇdÌgdÇdÍgdÇdÎgdÇdÏgg¡dÐdÑ„ ƒZ\ej dÒg dÓ¢¡dÔdÕ„ ƒZ]dÖd×„ Z^dØdÙ„ Z_G dÚdÛ„ dÛƒZ`dÜdÝ„ ZadÞdß„ Zbdàdá„ Zcdâdã„ Zdej d,d-¡dädå„ ƒZeej dædç¡dèdé„ ƒZfej dêdëdìg¡ej dídî¡dïdð„ ƒƒZgdñdò„ Zhejj&e�o•ej'j(d5kd6d7�dódô„ ƒZidõdö„ Zjej :d÷¡dødù„ ƒZkej dúdû¡düdý„ ƒZld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   úN/var/www/html/env/lib/python3.10/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©Úf2ÚS7Úf3©)iè  g333333@ÚalphaiÞÿÿÿ)iÐ  gÍÌÌÌÌÌ@Úbetaé   )i¬  gÍÌÌÌÌÌ#@Úgammaéx   )iú  g333333 @Údeltar   )i‰  gš™™™™™@Úepsiloni�ÿÿÿ)i�  g333333@Úomegaéÿÿÿÿ©Údtype)r   r   r9   Úuint16Úfloat64Úint8r   )r   r9   r   r   r   r   Úmixed_types_structured*   s   þ
ÿ÷
r=   Úskiprows)r   é   r   é   c                 C   s2   |\}}}t j||d| d�}t||| d … ƒ d S )Nú;)r9   r   r>   ©r   r   r   )r>   r=   r   r9   r   r&   r   r   r   Ú1test_structured_dtype_and_skiprows_no_empty_linesK   s   
rC   c                 C   s`   | \}}}t j||ddd�\}}}}t||d ƒ t||d ƒ t||d ƒ t||d ƒ d S )NrA   T)r9   r   Úunpackr(   r)   r+   r-   rB   )r=   r   r9   r   r&   ÚbÚcÚdr   r   r   Útest_unpack_structuredS   s   
rH   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   )rE   rI   r   z0,1,2,3
6,7,8,9
©©r   r?   ©r   r@   ))r   é   )é   r   r8   r   ©r   r9   ©r   r9   r   r   r   r   ©r9   r   r   r   r   r   Ú test_structured_dtype_with_shape]   s   rR   c                  C   s<   t  dg¡} tdƒ}t jdg| d�}tt j|| d�|ƒ d S )N)r&   rI   )r   r   z0 1 2 3
)rJ   r8   rP   rQ   r   r   r   Ú&test_structured_dtype_with_multi_shaped   s   rS   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ÚcodeÚpoints)r   z100,1,2,3,4
200,5,6,7,8
éd   )ç      ð?ç       @)r
   r    éÈ   )ç      @r"   )g      @g       @r8   r   ©r9   r   )r   r9   ÚfloatÚintr   r   r   r   )ÚpointÚdtr   r   r   r   r   Útest_nested_structured_subarrayk   s   

þûrb   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
)r?   r   r@   é   é   r   )rM   rN   r   é
   é   é   r8   r   rO   rP   )ra   r   r   r   r   r   Útest_structured_dtype_offsetsz   s   rj   Úparam)r>   Úmax_rowsc                 C   sH   t jtdd�� tjdi | di¤Ž W d  ƒ dS 1 sw   Y  dS )z;skiprows and max_rows should raise for negative parameters.zargument must be nonnegative©Úmatchúfoo.baréýÿÿÿN©ro   ©ÚpytestÚraisesÚ
ValueErrorr   r   ©rk   r   r   r   Ú"test_exception_negative_row_limits‚   s   "ÿrw   c                 C   sH   t jtdd�� tjdi | di¤Ž W d   ƒ d S 1 sw   Y  d S )Nzargument must be an integerrm   ro   rY   rq   ©rs   rt   Ú	TypeErrorr   r   rv   r   r   r   Ú$test_exception_noninteger_row_limits‰   s   "ÿrz   zdata, shape)z
1 2 3 4 5
)r?   rf   )z
1
2
3
4
5
)rf   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@   re   rf   r8   r   )r9   Úndminr?   r   )r   r   Úreshaper   r   r   r_   )r   ÚshapeÚarrÚarr2dr   r   r   Útest_ndmin_single_row_or_col�   s   
r€   Úbadval)r7   r@   Nzplate of shrimpc                 C   sB   t jtdd�� tjd| d� W d   ƒ d S 1 sw   Y  d S )NzIllegal value of ndmin keywordrm   ro   )r{   rr   )r�   r   r   r   Útest_bad_ndmin    s   "ÿr‚   Ú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   é   ©re   rf   é<   ©rM   rN   éZ   ©r@   r   r?   r   ©r9   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‘   r9   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   ©r9   r   rl   z1.5z2.5z3.0z4.0r8   )r   r   r   r   r9   r   ©r9   r%   Úresr   r   r   Útest_maxrows_no_blank_linesÈ   s   $r•   )rM   r@   rN   zPyPy bug in error formatting)ÚreasonÚf8Úi2c                 C   sX   t dƒ}d| › d�}tjt|d�� tj|| dd� W d   ƒ d S 1 s%w   Y  d S )Nz1,2
3,XXX
5,6z"could not convert string 'XXX' to z at row 1, column 2rm   r   r]   ©r   rs   rt   ru   r   r   )r9   r%   Úmsgr   r   r   Ú!test_exception_message_bad_valuesÐ   s
   "ÿr›   c                  C   sT   t dƒ} ddd„ i}t ddgdtjgdd	gg¡}tj| tjd
|d�}t||ƒ d S )Nz1.5,2.5
3.0,XXX
5.5,6.0r7   c                 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   ©r9   r   Ú
converters)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�}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
r7   c                 S   rœ   r�   rŸ   r¡   r   r   r   r£   ä   r¤   z?test_converters_negative_indices_with_usecols.<locals>.<lambda>r   g      @r
   r!   g      @r   r   )r9   r   r¦   Úusecolsz0,1,2
0,1,2,3,4c                 S   ó   dS )Nr7   r   ©rT   r   r   r   r£   ñ   s    )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   sJ   g d¢} t jtdd�� tj| dd� W d   ƒ d S 1 sw   Y  d S )N)ú1,2,3r®   z4,3,2,1z2the number of columns changed from 3 to 4 at row 3rm   r   r   rr   )Úrowsr   r   r   Útest_ragged_errorõ   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   ƒ d S 1 sDw   Y  d S )	Nú$0,0,XXX
0,XXX,0,XXX
0,XXX,XXX,0,XXX
r   r   éþÿÿÿ©r9   r   rª   z0,0,XXX
0
0,XXX,XXX,0,XXX
z/invalid column index -2 at row 2 with 1 columnsrm   )	r   r   r   r   r^   r   rs   rt   ru   ©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s!J ‚d S )Nr±   r   r³   )r@   )r   r   r   r9   r}   ©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,r8   )r   r   r   r9   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 ©N©Úupperr¡   r   r   r   r£      ó    z-test_unicode_with_converter.<locals>.<lambda>rº   r   ©r9   r¦   r   ÚencodingÚCATÚdogu   Î‘Î’Î“u   Î´ÎµÎ¶ÚABCÚdef)r   r   r   r9   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)rV   ÚU8c                 S   s   t dt| ƒ ƒS )Nrg   )r_   r^   r¡   r   r   r   r£   /  s    z6test_converter_with_structured_dtype.<locals>.<lambda>c                 S   r½   r¾   r¿   r¡   r   r   r   r£   /  rÁ   )r   r7   r   r¥   ))é   r   rÆ   )rˆ   r    ÚDEF)é7   r"   ÚGHIr8   )r   r   r9   Úint32Úfloat32r   r   r   )r%   ra   r¨   r”   r   r   r   r   Ú$test_converter_with_structured_dtype,  s   ÿrÓ   c                  C   sL   t dƒ} tj}tj| t d¡|ddd�}t ddgdd	gg¡}t||ƒ d
S )aD  
    With the '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,xyzÚU3r   ÚbytesrÂ   rÆ   rÎ   ÚRSTÚXYZN)r   rÕ   rÀ   r   r   r9   r   r   rÈ   r   r   r   Ú!test_converter_with_unicode_dtype7  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Ã  r7   Ú
r   r   rO   r   r   )r   rÙ   )r   r   r   r^   r   Útile)Úrowr%   r”   r   r   r   Útest_read_huge_rowI  s
   rÝ   ÚedfgFDGc                 C   s8   d}t  | ¡} t j|g| d�d }||  d¡ksJ ‚d S )Naò  0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.123456789r8   r   z0.123456789)r   r9   r   Útype)r9   ÚfieldÚvaluer   r   r   Útest_huge_floatQ  s   
râ   )Úgiven_dtypeÚexpected_dtypeÚSÚS5ÚUÚ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]   ÚAAAz5-1ÚBBBBBz0-3ÚCz4-9r8   N)r   r   r   r   r   r9   )rã   rä   r%   r”   r   r   r   r   Útest_string_no_length_givenZ  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>  s    z)test_float_conversion.<locals>.<listcomp>N)r   Újoinr   r   r   r   )Ústringsr%   r”   r   r   r   r   Útest_float_conversionp  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   Úboolr9   r   ÚviewÚuint8r¶   r   r   r   Ú	test_boolƒ  s
   "rõ   Ú
AllIntegerz0error:.*integer via a float.*:DeprecationWarningc              	   C   sÎ   t  | ¡} t jdg| d�dksJ ‚| jdkr4t t¡� t jdg| d� W d   ƒ n1 s.w   Y  nt jdg| d�dks@J ‚dD ]"}t t¡� t j|› d	�g| d� W d   ƒ n1 s_w   Y  qBd S )
Nz+2r8   r   Úuz-1
z-2
r²   )z++z+-z--z-+z2
)r   r9   r   Úkindrs   rt   ru   )r9   Úsignr   r   r   Útest_integer_signs�  s   

ÿ€ÿ€ÿrú   c                 C   sH   t dƒ}t t¡� tj|| dd� W d   ƒ d S 1 sw   Y  d S )Nz1.0, 2.1, 3.7
4, 5, 6r   r]   r™   )r9   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   r8   )r#   r   r   r   r   r   )r9   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   s2   � t dƒD ]} | › dd|  › d| d › �V  qd S )Nre   r   r   ©Úrange©Úir   r   r   Úgen·  s   € ÿz%test_read_from_generator.<locals>.genr   r]   )r   r   r   )r?   r   r?   )r   re   re   )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„   re   r  r  r   r   r   r  Á  s   €ÿz/test_read_from_generator_multitype.<locals>.genzi, dr„   r]   ))r   g        )r?   g      Ð?)r   r   r8   )r   r   r   r   r  r   r   r   Ú"test_read_from_generator_multitypeÀ  s   r  c                  C   sN   dd„ } t jtdd�� tj| ƒ ddd� W d   ƒ d S 1 s w   Y  d S )Nc                   s   s   � g d¢E d H  d S )N)z1,2s   3, 5iÂ1  r   r   r   r   r   r  Ë  s   €z)test_read_from_bad_generator.<locals>.genú&non-string returned while reading datarm   zi, ir   r]   rx   )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.w   Y  t ˆ¡d	ks<J ‚d S )
Nr   c                    s   ˆ dkrt dƒ‚ˆ d7 ‰ ˆS )Ni‡  zfailed half-way through!r?   )ru   r¬   ©Úalready_readÚsentinelr   r   r¨   Ø  s   z/test_object_cleanup_on_read_error.<locals>.convzx
é'  zat row 5000, column 1rm   ©r9   r¦   r   )	Úobjectr   rs   rt   ru   r   r   ÚsysÚgetrefcount)r¨   r%   r   r  r   Ú!test_object_cleanup_on_read_errorÓ  s   ÿr  c                  C   sF   t dƒ} t t¡� tj| dd� W d  ƒ dS 1 sw   Y  dS )z9Test exception when a character cannot be encoded as 'S'.u   â€“ræ   r8   Nr™   )r   r   r   r   Ú#test_character_not_bytes_compatibleç  s   "ÿr  r¨   rþ   c                 C   sJ   d}t jt|d�� tjtdƒ| d� W d   ƒ d S 1 sw   Y  d S )Nz\converters must be a dictionary mapping columns to converter functions or a single callable.rm   ú1 2
3 4©r¦   ©rs   rt   ry   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w   Y  t jtdd�� tjtdƒdtidd� W d   ƒ d S 1 sAw   Y  d S )Nzkeys of the converters dictrm   r  r&   r  r   )r¦   rª   )rs   rt   ry   r   r   r   r_   r   r   r   r   Ú+test_converters_dict_raises_non_integer_keyú  s   ÿ"ÿr  Úbad_col_ind)r@   rp   c                 C   sN   t dƒ}tjtdd�� tj|| tid� W d   ƒ d S 1 s w   Y  d S )Nr  zconverter specified for columnrm   r  )r   rs   rt   ru   r   r   r_   )r  r   r   r   r   Ú'test_converters_dict_raises_non_col_key  s   "ÿr  c                   C   sJ   t jtdd�� tjtdƒddid� W d   ƒ d S 1 sw   Y  d S )Nz4values of the converters dictionary must be callablerm   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#  r\   r8   r   ©r9   r   Ú	quotechar©r   r   r9   r;   r   r   r   ©r  r%   r9   r   r”   r   r   r   Útest_quoted_field  ó   &ÿÿr*  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 )Nr!  z	     2.5
r"  z 4.5
r#  z   5.0
r$  r)   r%  r8   r&  r(  r)  r   r   r   Ú*test_quoted_field_with_whitepace_delimiter  r+  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 s,w   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(   ÚU24r)   r+   z.the dtype passed requires 3 columns but 4 wererm   r   r]   Nr   )zlat,longg     €F@g      >@r8   r  r&  )r   r   r9   r;   rs   rt   ru   r   Úseekr   r   )r%   r9   r   r”   r   r   r   Útest_quote_support_default,  s   ÿþ
r/  c                  C   sP   t dƒ} d}tjt|d�� tj| ddd� W d   ƒ d S 1 s!w   Y  d S )Nú1,2
3,4z,.*must be a single unicode character or Nonerm   r   z''©r   r'  ©r   rs   rt   ry   r   r   )r%   rš   r   r   r   Útest_quotechar_multichar_error=  s
   "ÿr3  c                  C   s¼   t dƒ} d}tjt|d�� tj| dddd� W d   ƒ n1 s!w   Y  tjt|d�� tj| ddd	gdd� W d   ƒ n1 sCw   Y  tj| dd
dd�}t|ddgddggƒ d S )Nr0  zWwhen multiple comments or a multi-character comment is given, quotes are not supported.rm   r   Ú123r  )r   r   r'  r   ú%)r   r  r?   r   r@   re   )r   rs   rt   ru   r   r   r   )r%   rš   r”   r   r   r   Ú'test_comment_multichar_error_with_quoteF  s   ÿÿÿr6  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.   r8   rA   r  r&  )	r   r   r9   r:   r;   r<   r   r   r   )r   r9   r   r”   r   r   r   Ú!test_structured_dtype_with_quotesV  s   þ
ÿ÷r7  c                  C   ó:   t dƒ} tjg d¢dd�}tj| dddd�}t||ƒ d S )Nz	1

"4"
""©Ú1Ú4rþ   ÚU1r8   r   r  ©r   r9   r'  ©r   r   r   r   r   r´   r   r   r   Útest_quoted_field_is_not_emptys  s   r?  c                  C   r8  )Nz1

"4"
"r9  r<  r8   r   r  r=  r>  r´   r   r   r   Ú(test_quoted_field_is_not_empty_nonstricty  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"!ÚU40r8   r   r  r&  r>  r´   r   r   r   Ú"test_consecutive_quotechar_escaped�  s   rB  r   )rþ   z


z# 1 2 3
# 4 5 6
r{   )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.w   Y  |j|ks:J ‚td	d
��9}| | ¡ | 	d¡ tjtdd�� tj|||d�}W d  ƒ n1 sdw   Y  |j|kspJ ‚W d  ƒ dS 1 s{w   Y  dS )zDCheck that a UserWarning is emitted when no data is read from input.N)r   r@   r   rK   )r   úinput contained no datarm   )r{   rª   Úw)Úmoder   )
r   rs   ÚwarnsÚUserWarningr   r   r}   r   Úwriter.  )r   r{   rª   Úexpected_shaper%   r”   Úfhr   r   r   Útest_warn_on_no_dataˆ  s$   ÿ

ÿ"ûrL  rL   c                 C   sN   d}t |ƒ}tjtdd�� tj|| d� W d   ƒ d S 1 s w   Y  d S )Nz1 2 3
4 5 6rD  rm   )r>   )r   rs   rG  rH  r   r   )r>   r   r%   r   r   r   Útest_warn_on_skipped_data   s
   "ÿrM  rá   )r˜   r?   )Úu2r?   )Úi4é )Úu4rP  )Úi8ì   
 )Úu8rS  )Úfloat16g#È÷{ ?)rÒ   g‚Æ.  7)Ú	complex64y‚Æ.  7ü‰³`F$:)r;   g»Ú
complex128ywfUD3":»)Ú
longdoublerS  Úclongdoubleyp`P@0 ðB ²B)ÚU2u   ð�ˆƒò ¬ŒÚswapTFc                 C   s|   t  | ¡} d|› d�g}|r|  ¡ } t jdd| fgdd�}|jd d dks(J ‚t j||ddd	�}|d |  |¡ks<J ‚d S )
Nzx,rÚ   )r&   ÚS1rE   Frc   r?   r   r’   )r   r9   ÚnewbyteorderÚfieldsr   rß   )r9   rá   r[  r   Úfull_dtr”   r   r   r   Útest_byteswapping_and_unaligned¨  s   

ÿr`  Ú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   Úastyper“   r   r   r   Ú!test_unicode_whitespace_strippingÈ  s   rd  Ú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   )r9   Úliner   r”   r   r   r   Ú)test_unicode_whitespace_stripping_complexÔ  s   rg  rà   )z1 +2jz1+ 2jz1+2 jz1+-+3z(1jz(1z(1+2jz1+2j)c                 C   sF   t  t¡� tj|d g| dd� W d   ƒ d S 1 sw   Y  d S )NrÚ   r   r]   rr   )r9   rà   r   r   r   Útest_bad_complexÞ  s   "ÿrh  ÚefgdFDGc                 C   sZ   |   ¡ dkrt d¡ t t¡� tjdg| ddd� W d   ƒ d S 1 s&w   Y  d S )NÚgz0longdouble/clongdouble assignment may misbehave.ú1 r   r  r&  )Úlowerrs   Úxfailrt   ru   r   r   r8   r   r   r   Útest_nul_character_errorè  s
   
"ÿrn  c                 C   s–   | dkr	t  d¡ | dv rt  d¡ tdƒtdƒ  kr(tdƒ  kr(dks+J ‚ J ‚t  t¡� tj	dg| d� W d   ƒ d S 1 sDw   Y  d S )	NÚez5half assignment currently uses Python float converterÚeGz2clongdouble assignment is buggy (uses `complex`?).Ú1_1rh   z1_1
r8   )
rs   Úskiprm  r_   r^   Úcomplexrt   ru   r   r   r8   r   r   r   Útest_no_thousands_supportõ  s   

2"ÿrt  z1,2
z2
,3
z2,3
c                 C   sF   d}t jt|d�� tj| dd� W d   ƒ d S 1 sw   Y  d S )Nz7Found an unquoted embedded newline within a single linerm   r   r   rr   )r   rš   r   r   r   Útest_bad_newline_in_iterator  s   "ÿru  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  r1  rY   rZ   r
   rB   )r   r”   r   r   r   Útest_good_newline_in_iterator  s   rv  Ú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Ü   ©rw  r   r   rî   %  s    z2test_universal_newlines_quoted.<locals>.<listcomp>r   r  r&  r:  Ú2Ú3r;  )r   r   r  r   )rw  r   r”   r   rz  r   Útest_universal_newlines_quoted  s   (r}  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s,J ‚d S )Nz1 2 3
z4 5 6ú r   rC  )re   rf   r   z1 ,2 ,3
z4 ,5 ,6r   rO   )rk  z2 r|  )z4 z5 Ú6)r   r   r   r  Útolist)r”   r   r   r   Útest_null_character*  s   
ÿ r�  c                  C   sT   G dd„ dƒ} t jtdd�� tj| ƒ tdd� W d   ƒ d S 1 s#w   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   r«   )NrX   r   ©Úselfr   r   r   Ú__len__7  ó   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)rƒ  Úitemr   r   r   Ú__getitem__:  s   zFtest_iterator_fails_getting_next_line.<locals>.BadSequence.__getitem__N)Ú__name__Ú
__module__Ú__qualname__r„  rŠ  r   r   r   r   ÚBadSequence6  s    rŽ  r‡  rm   r   r]   )rs   rt   rˆ  r   r   r_   )rŽ  r   r   r   Ú%test_iterator_fails_getting_next_line5  s   	"ÿr�  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   óP   t jtdd�� tjjjtƒ t d¡dd� W d   ƒ d S 1 s!w   Y  d S )Nz.*readrm   r  T©r9   Úfilelike)	rs   rt   ÚAttributeErrorr   Ú_coreÚ_multiarray_umathÚ_load_from_fileliker  r9   r‚  r   r   r   Útest_not_an_filelikeF  s
   ÿ"ÿz)TestCReaderUnitTests.test_not_an_filelikec                 C   ó^   G dd„ dƒ}t jtdd�� tjjj|ƒ t d¡dd� W d   ƒ d S 1 s(w   Y  d S )Nc                   @   ó   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
)Úcounterrˆ  ©rƒ  Úsizer   r   r   ÚreadR  s   
zGTestCReaderUnitTests.test_filelike_read_fails.<locals>.BadFileLike.readN©r‹  rŒ  r�  r�  r   r   r   r   r   ÚBadFileLikeO  ó    r¢  rœ  rm   r  Tr’  )rs   rt   rˆ  r   r•  r–  r—  r9   ©rƒ  r¢  r   r   r   Útest_filelike_read_failsK  s   	ÿ"ÿz-TestCReaderUnitTests.test_filelike_read_failsc                 C   r™  )Nc                   @   rš  )z@TestCReaderUnitTests.test_filelike_bad_read.<locals>.BadFileLiker   c                 S   r«   )NiÒ  r   rž  r   r   r   r   d  r…  zETestCReaderUnitTests.test_filelike_bad_read.<locals>.BadFileLike.readNr¡  r   r   r   r   r¢  a  r£  r¢  r	  rm   r  Tr’  )rs   rt   ry   r   r•  r–  r—  r9   r¤  r   r   r   Útest_filelike_bad_read\  s   ÿÿ"þz+TestCReaderUnitTests.test_filelike_bad_readc                 C   r‘  )Nz/error reading from object, expected an iterablerm   r  Fr’  ©	rs   rt   ry   r   r•  r–  r—  r  r9   r‚  r   r   r   Útest_not_an_iterl  s   ÿÿ"þz%TestCReaderUnitTests.test_not_an_iterc                 C   sJ   t jtdd�� tjjjtƒ ddd� W d   ƒ d S 1 sw   Y  d S )Nzinternal error: dtype mustrm   r  Fr’  )rs   rt   ry   r   r•  r–  r—  r  r‚  r   r   r   Útest_bad_typer  s
   ÿ"ÿz"TestCReaderUnitTests.test_bad_typec                 C   sR   t jtdd�� tjjjtƒ t d¡ddd� W d   ƒ d S 1 s"w   Y  d S )Nzencoding must be a unicoderm   r  Fé{   )r9   r“  rÃ   r§  r‚  r   r   r   Útest_bad_encodingw  s
   ÿ"ÿz&TestCReaderUnitTests.test_bad_encodingrw  )rx  rÚ   ry  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þ   rz  ÚU10Tr  r   r?   )r9   r“  Úquoter   Ú	skiplinesr   r:  r{  r|  z4 )r   r#   r   r•  r–  r—  r9   r   )rƒ  rw  r   r”   r   r   r   Útest_manual_universal_newlines|  s   ÿþ(z3TestCReaderUnitTests.test_manual_universal_newlinesN)r‹  rŒ  r�  r˜  r¥  r¦  r¨  r©  r«  rs   ÚmarkÚparametrizer¯  r   r   r   r   r�  C  s    r�  c                   C   óH   t jtdd�� tjtdƒddd� W d   ƒ d S 1 sw   Y  d S )Nú".*control characters.*incompatiblerm   ú1, 2, 3r   r   r  r   r   r   r   Ú'test_delimiter_comment_collision_raisesŒ  ó   "ÿrµ  c                   C   r²  )Nr³  rm   r´  r   r1  r  r   r   r   r   Ú)test_delimiter_quotechar_collision_raises‘  r¶  r·  c                   C   r²  )Nr³  rm   ú1 2 3r   )r   r'  r  r   r   r   r   Ú'test_comment_quotechar_collision_raises–  r¶  r¹  c                   C   sL   t jtdd�� tjtdƒdddgd� W d   ƒ d S 1 sw   Y  d S )Nz0Comment characters.*cannot include the delimiterrm   r´  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�� tjtd| › d| › d| › d| › d�	ƒ| d� W d   ƒ n1 s(w   Y  t jtdd�� tjtd| › d| › d| › d| › d�	ƒ| d	� W d   ƒ d S 1 sVw   Y  d S )
Nr³  rm   r:  r{  z3
4Ú5z6
©r   ©r'  r  )rƒ   r   r   r   Ú,test_collision_with_default_delimiter_raises¢  s   .ÿ."ÿr¾  Únl)rÚ   rx  c                 C   sò   t d| › d| › d| › | › d| › d| › d| › | › �ƒ}d}tjt|d�� tj|| d	� W d   ƒ n1 s5w   Y  tjt|d�� tj|| d
� W d   ƒ n1 sSw   Y  tjt|d�� tj|| d� W d   ƒ d S 1 srw   Y  d S )Nr:  r{  r|  r;  r»  r  z&control character.*cannot be a newlinerm   r   r¼  r½  r2  )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-15ÚM8zM8[D])ú
spam-a-lotÚtis_but_a_scratchrç   ÚU17Únrows)rg   rÙ   é`ê  c                 C   sv  | g| |g }t j||d�}t|ƒ|d ksJ ‚t|ƒt|ƒks#J ‚td |¡ƒ}t j||d�}t|ƒt|ƒks;J ‚|j|jksCJ ‚t||ƒ tƒ \}	}
t	 
|	¡ t|
dƒ�}| d |¡d ¡ W d  ƒ n1 slw   Y  t j|
|d�}t|ƒt|ƒks‚J ‚|j|jksŠJ ‚t||ƒ t j|
|t|d ƒd�}t	 |
¡ t|ƒt|d ƒks¬J ‚t||dt|d ƒ… ƒ 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.r8   r?   rÚ   rE  Nr   )r9   rl   )r   r   Úlenr   rï   r   r9   r   r   ÚosÚcloseÚopenrI  r_   Úremove)rÁ  rÂ  rÃ  rä   rÈ  r   r   r%   r&   ÚfdÚfnamerK  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�}|j|jks0J ‚t||ƒ tƒ \}}t 	|¡ t
|dƒ�}| d	 | ¡¡ W d   ƒ n1 sWw   Y  t j|d
|d�}t |¡ |j|jksqJ ‚t||ƒ d S )NrÅ  rÉ  ÚXXXtis_but_a_scratchrÆ  rÇ  r8   c                 S   s
   |   d¡S r�   )Úremoveprefixr¡   r   r   r   r£   ï  s   
 z>test_str_dtype_unit_discovery_with_converter.<locals>.<lambda>rÚ   rç   r  rE  )r   r   r   rï   r   r9   r   r   rË  rÌ  rÍ  rI  rÎ  )r   r   r¨   r%   r&   rÏ  rÐ  rK  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 sw   Y  t jtdd�� tjtdƒdd� W d   ƒ n1 s;w   Y  t jtdd�� tjtdƒdd� W d   ƒ n1 s[w   Y  t jtdd�� tjtdƒd	dgd� W d   ƒ d S 1 s~w   Y  d S )
Nz#Text reading control character mustrm   r¸  rþ   r   r½  z"comments cannot be an empty stringr¼  r   )rs   rt   ry   r   r   r   ru   r   r   r   r   Útest_control_character_empty  s   ÿÿÿ"ÿ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   rC  N)r   r   r   r   )r&   r   r   r   Ú test_control_characters_as_bytes  s   rØ  zignore::UserWarningc                  C   sb   t jdgdtd�} t| ƒdksJ ‚tddƒD ]}t jd| gdtdd�} t| ƒ|d ks.J ‚qd S )	Nrþ   r   rO   r   r?   i   rg   )r   r9   rl   )r   r   rÕ   rÊ  r  )r”   r  r   r   r   Útest_field_growing_cases  s   þrÙ  Únmax)r  rÙ   iØÖ  rÉ  c                 C   s¼   d}dg| }t d |¡ƒ}tj|td| d�}t|ƒ| ksJ ‚tƒ \}}t |¡ t	|dƒ�}| 
d |¡¡ W d   ƒ n1 sAw   Y  tj|td| d�}t |¡ t|ƒ| ks\J ‚d S )NrÉ  za 0.5 1rÚ   r„   r’   rE  )r   rï   r   r   ÚstrrÊ  r   rË  rÌ  rÍ  rI  rÎ  )rÚ  Úfile_lengthr   r%   r”   rÏ  rÐ  rK  r   r   r   Ú test_maxrows_exceeding_chunksize   s   


ÿ
rÝ  )mÚ__doc__r  rË  rs   Útempfiler   r   Úior   Únumpyr   Únumpy.ma.testutilsr   Únumpy.testingr   r   r   r   r°  r±  r'   Úfixturer=   rC   rH   rR   rS   rb   rj   rw   rz   r€   r‚   r�   r‘   r^   r  r•   ÚskipifÚimplementationÚversionr9   r›   r©   r­   r°   rµ   r·   r¼   rÉ   rÓ   rØ   rÝ   râ   rì   rñ   rõ   Ú	typecodesÚfilterwarningsrú   rû   rV  rW  r   r  r  r
  r  r  r  r  r  r  r*  r,  r/  r3  r6  r7  r?  r@  rB  rL  rM  Úreprr`  rd  rg  rh  rn  rt  ru  rv  r}  r�  r�  r�  rµ  r·  r¹  rº  r¾  rÀ  rÑ  rÔ  rÕ  rØ  rÙ  rÝ  r   r   r   r   Ú<module>   s¦   

 



þþ


þ

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

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


þþ#ÿ



