o
    hJ                     @   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oe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oej'j(d5kd6d7dtdu ZDejdvde#gdwfdxdy ZEejj&eoej'j(d5kd6d7dzd{ ZFejd|d}d~d ZGdd ZHejdddd ZIejdddd ZJdd ZKejj&eoej'j(d5kd6d7dd ZLdd ZMdd ZNdd ZOdd ZPdd ZQejddejddejdddgdd ZRejdddd ZSejd2dgdddddddddddeTdfddeTdfdgejdddgdd ZUejd2e
j9da d d dd ZVejd2ddd ZWejj&eoej'j(d5kd6d7ejd2dejdg ddd ZXejj&eoej'j(d5kd6d7ejd2e
j9da d d ddĄ ZYejj&eoej'j(d5kd6d7ejd2e
j9da d d ddƄ ZZejdddgddggdd˄ Z[ejdddgddgddgddggddф Z\ejdg dӢddՄ Z]ddׄ Z^ddل Z_G ddۄ dۃZ`dd݄ Zadd߄ Zbdd Zcdd Zdejd,d-dd Zeejdddd Zfejdddgejdddd Zgdd Zhejj&eoej'j(d5kd6d7dd Zidd Zjej:ddd Zkejdddd Zlejddd d Zmd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{Gz?      ?   )gy&1|?g      T@	   )r   r	      ,	delimiterN)r   nparrayr   loadtxt)dataexpected r   p/var/www/html/construction_image-detection-poc/venv/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 heterogeneous 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#@gammax   )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.barN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, 5i1  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 )N2   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sJ |j|jksJ t|| t j|
|t|d d}t	|
 t|t|d ksJ t||dt|d   dS )zCheck 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  nskip)r   r  i90  r   i3	 i c           
      C   s   d}d dd td|d D }td|| }t|d |d | t}t|}tj|dd|dd	}t	||ks=J t
||d d d
f  | d }|| t|}	tj|	dd|dd	}t	||ksgJ t
||d d d
f  d S )Ni r   c                 s   s    | ]}| d V  qdS )z a 0.5 1Nr   )r   r  r   r   r   	<genexpr>:  s    zEtest_skiprow_exceeding_maxrows_exceeding_chunksize.<locals>.<genexpr>r?   r  r  r   )r9   r   r>   rl   r   ztest_data.txt)r   r  minr   arangerc  r  r   r   r  r   rI  )
tmpdirr  r  r   expected_lengthr   r%   r   tmp_filer  r   r   r   2test_skiprow_exceeding_maxrows_exceeding_chunksize5  s   
r  )n__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   r   <module>   s   

 








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

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


#




