a
    Pf"                     @  s,  d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z G dd dZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZejdd Zejdd ZeZeZeZeZegZeegZejeejjdgZg eeeZdgZ ddgZ!dgZ"g e!e e"Z#ejee#ddd Z$ejee!ddd Z%ejee ddd  Z&ejee"dd!d" Z'd#d$ Z(eje( d% e( d& dd'd( Z)g d)Z*g d*Z+d+d,gZ,d-d. e+D Z-eje*d/d0d1 Z.eje-d/d2d3 Z/ejg d4d/d5d6 Z0ejd7d8 Z1ejd9d: Z2dS );    )annotationsN)VERSIONS)read_csv
read_tablec                   @  sr   e Zd ZU dZded< dZg Zded< dd Zd	d
 ZdddddddddZ	dd Z
dddddddZdS )
BaseParserNz
str | NoneengineTzlist[str | None]float_precision_choicesc                 C  s    |  }|| j| jd |S )N)r   
low_memory)copyupdater   r	   )selfkwargs r   X/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/parser/conftest.pyupdate_kwargs   s    zBaseParser.update_kwargsc                 O  s   |  |}t|i |S N)r   r   r   argsr   r   r   r   r      s    
zBaseParser.read_csv)raise_on_extra_warningscheck_stacklevelztype[Warning]strbool)	warn_typewarn_msgr   c                O  sN   |  |}tj||||d t|i |W  d    S 1 s@0    Y  d S )N)matchr   r   )r   tmassert_produces_warningr   )r   r   r   r   r   r   r   r   r   r   read_csv_check_warnings   s    
z"BaseParser.read_csv_check_warningsc                 O  s   |  |}t|i |S r   )r   r   r   r   r   r   r   4   s    
zBaseParser.read_table)r   )r   r   c                O  sL   |  |}tj|||d t|i |W  d    S 1 s>0    Y  d S )N)r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   read_table_check_warnings8   s
    
z$BaseParser.read_table_check_warnings)__name__
__module____qualname__r   __annotations__r	   r   r   r   r   r   r   r   r   r   r   r      s   
		r   c                   @  s   e Zd ZdZg dZdS )CParserc)NhighZ
round_tripNr   r    r!   r   r   r   r   r   r   r#   J   s   r#   c                   @  s   e Zd ZdZdS )CParserHighMemoryFNr   r    r!   r	   r   r   r   r   r'   O   s   r'   c                   @  s   e Zd ZdZdS )CParserLowMemoryTNr(   r   r   r   r   r)   S   s   r)   c                   @  s   e Zd ZdZdgZdS )PythonParserpythonNr&   r   r   r   r   r*   W   s   r*   c                   @  s   e Zd ZdZdgZdS )PyArrowParserpyarrowNr&   r   r   r   r   r,   \   s   r,   c                 C  s   | dddS )zG
    The directory path to the data files needed for parser tests.
    ioparserdatar   datapathr   r   r   csv_dir_patha   s    r3   c                 C  s   t j| ddddS )zH
    The path to the data file "test1.csv" needed for parser tests.
    r.   r0   csvz	test1.csv)ospathjoinr1   r   r   r   csv1i   s    r8   Zmarksr+   Zc_highZc_lowr-   paramsidsc                 C  s8   |   }|jdkr4tdtd  ddl}|d |S )z)
    Fixture all of the CSV parsers.
    r-   r   N   )paramr   pytestZimportorskipr   r-   Zset_cpu_count)requestr/   r-   r   r   r   all_parsers   s    

rA   c                 C  s   |   S )z<
    Fixture all of the CSV parsers using the C engine.
    r>   r@   r   r   r   c_parser_only   s    rD   c                 C  s   |   S )zA
    Fixture all of the CSV parsers using the Python engine.
    rB   rC   r   r   r   python_parser_only   s    rE   c                 C  s   |   S )zB
    Fixture all of the CSV parsers using the Pyarrow engine.
    rB   rC   r   r   r   pyarrow_parser_only   s    rF   c                  C  s   g } g }t ttD ]p\}}t|dr.|jd }|jD ]L}|jdkrJtjj	nd}tj
| |f|d}| | || d|  q4q| |dS )za
    Return all allowable parser and float precision
    combinations and corresponding ids.
    valuesr   r-   r   r9   -r:   )zip_all_parsers_all_parser_idshasattrrG   r   r   r?   mark
single_cpur>   append)r;   r<   r/   Z	parser_id	precisionrM   r>   r   r   r   ,_get_all_parser_float_precision_combinations   s    



rQ   r;   r<   c                 C  s   | j S )zR
    Fixture for all allowable combinations of parser
    and float precision
    rB   rC   r   r   r   all_parsers_all_precisions   s    	rR   )          ) rH   _utfZUTFc                 C  s$   g | ]}t D ]}| | d qqS )z{0})_encoding_prefixes).0sepprefixr   r   r   
<listcomp>   s   r]   )r;   c                 C  s   | j S )zE
    Fixture for all possible integer values for a UTF encoding.
    rB   rC   r   r   r   	utf_value   s    r^   c                 C  s   | j S )zD
    Fixture for all possible string formats of a UTF encoding.
    rB   rC   r   r   r   encoding_fmt   s    r_   )*)z-1,0      )z-1,2e0g333333)z-1e0r`   )z+1e0      ?)z+1e+0ra   )z+1e-1皙?)z+,1e1ra   )z+1,e0ra   )z-,1e1r`   )z-1,e0r`   )z0,1rb   )z1,ra   )z,1rb   )z-,1g)z1_,ra   )z1_234,56
ףp=J@)z
1_234,56e0rc   )rW   rW   )-_rd   )-_1re   )-_1e0rf   )_1rg   )_1,rh   )_1,_ri   )_1e0rj   )1,2e_1rk   )1,2e1_0rl   )1,_2rm   ),1__2rn   ),1ero   )-,1erp   )1_000,000_000rq   )1,e1_2rr   )e11,2rs   )1e11,2rt   )1,2,2ru   )1,2_1rv   )	1,2e-10e1rw   )--1,2rx   )1a_2,1ry   )z1,2E-1gQ?)z1,2E1g      (@c                 C  s   | j S )z
    Fixture for all numeric formats which should get recognized. The first entry
    represents the value to read while the second represents the expected result.
    rB   rC   r   r   r   numeric_decimal   s    4rz   c                 C  sZ   d| j v r| d}nd| j v r0| dd }ndS |jdkrVtjjdd}| | dS )z
    Fixture that xfails a test if the engine is pyarrow.

    Use if failure is do to unsupported keywords or inconsistent results.
    rA   rR   r   Nr-   zpyarrow doesn't support this.reason)fixturenamesgetfixturevaluer   r?   rM   ZxfailZapplymarker)r@   r/   rM   r   r   r   pyarrow_xfail  s    


r   c                 C  sN   d| j v r| d}nd| j v r0| dd }ndS |jdkrJtjdd dS )z
    Fixture that skips a test if the engine is pyarrow.

    Use if failure is do a parsing failure from pyarrow.csv.read_csv
    rA   rR   r   Nr-   z,https://github.com/apache/arrow/issues/38676r{   )r}   r~   r   r?   skip)r@   r/   r   r   r   pyarrow_skip0  s    


r   )3
__future__r   r5   r?   Zpandas.compat._optionalr   Zpandasr   r   Zpandas._testingZ_testingr   r   r#   r'   r)   r*   r,   Zfixturer3   r8   Z_cParserHighMemoryZ_cParserLowMemoryZ_pythonParserZ_pyarrowParserZ_py_parsers_onlyZ_c_parsers_onlyr>   rM   rN   Z_pyarrow_parsers_onlyrJ   Z_py_parser_idsZ_c_parser_idsZ_pyarrow_parsers_idsrK   rA   rD   rE   rF   rQ   rR   Z_utf_valuesZ_encoding_sepsrY   Z_encoding_fmtsr^   r_   rz   r   r   r   r   r   r   <module>   sv   :










/

