U
    f/e                  +   @  s  d dl mZ d dlZd dlZd dlmZ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ejdd Zejdd Ze	 Ze
 Ze ZegZeegZeeZdgZddgZ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dd Zeje d e d dd d! Zd"d#d$gZd%d&d'gZd(d)gZd*d+ eD Z ejed,d-d. Z!eje d,d/d0 Z"ejd1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZg*d,d[d\ Z#dS )]    )annotationsN)read_csv
read_tablec                   @  sB   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 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   C/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/parser/conftest.pyupdate_kwargs   s    zBaseParser.update_kwargsc                 O  s   |  |}t||S N)r   r   r   argsr   r   r   r   r      s    
zBaseParser.read_csvc                 O  s   |  |}t||S r   )r   r   r   r   r   r   r      s    
zBaseParser.read_table)
__name__
__module____qualname__r   __annotations__r   r   r   r   r   r   r   r   r   r      s   
r   c                   @  s   e Zd ZdZdddgZdS )CParsercNhighZ
round_tripr   r   r   r   r   r   r   r   r   r   !   s   r   c                   @  s   e Zd ZdZdS )CParserHighMemoryFNr   r   r   r   r   r   r   r   r   &   s   r   c                   @  s   e Zd ZdZdS )CParserLowMemoryTNr   r   r   r   r   r   *   s   r   c                   @  s   e Zd ZdZdgZdS )PythonParserpythonNr   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_path3   s    r%   c                 C  s   t j| ddddS )zH
    The path to the data file "test1.csv" needed for parser tests.
    r    r"   csvz	test1.csv)ospathjoinr#   r   r   r   csv1;   s    r*   r   Zc_highZc_lowparamsidsc                 C  s   | j S )z)
    Fixture all of the CSV parsers.
    paramrequestr   r   r   all_parsersP   s    r2   c                 C  s   | j S )z<
    Fixture all of the CSV parsers using the C engine.
    r.   r0   r   r   r   c_parser_onlyX   s    r3   c                 C  s   | j S )zA
    Fixture all of the CSV parsers using the Python engine.
    r.   r0   r   r   r   python_parser_only`   s    r4   c                  C  sT   g } g }t ttD ]6\}}|jD ]&}| ||f || d|  q q| |dS )za
    Return all allowable parser and float precision
    combinations and corresponding ids.
    -r+   )zip_all_parsers_all_parser_idsr   append)r,   r-   r!   Z	parser_idZ	precisionr   r   r   ,_get_all_parser_float_precision_combinationsh   s    
r:   r,   r-   c                 C  s   | j S )zR
    Fixture for all allowable combinations of parser
    and float precision
    r.   r0   r   r   r   all_parsers_all_precisionsw   s    	r;              r5   _utfZUTFc                 C  s&   g | ]}t D ]}| | d  qqS )z{0})_encoding_prefixes).0sepprefixr   r   r   
<listcomp>   s      rF   )r,   c                 C  s   | j S )zE
    Fixture for all possible integer values for a UTF encoding.
    r.   r0   r   r   r   	utf_value   s    rG   c                 C  s   | j S )zD
    Fixture for all possible string formats of a UTF encoding.
    r.   r0   r   r   r   encoding_fmt   s    rH   )z-1,0      )z-1,2e0g333333)z-1e0rI   )z+1e0      ?)z+1e+0rJ   )z+1e-1皙?)z+,1e1rJ   )z+1,e0rJ   )z-,1e1rI   )z-1,e0rI   )z0,1rK   )z1,rJ   )z,1rK   )z-,1g)z1_,rJ   )z1_234,56
ףp=J@)z
1_234,56e0rL   )r@   r@   )-_rM   )-_1rN   )-_1e0rO   )_1rP   )_1,rQ   )_1,_rR   )_1e0rS   )1,2e_1rT   )1,2e1_0rU   )1,_2rV   ),1__2rW   ),1erX   )-,1erY   )1_000,000_000rZ   )1,e1_2r[   )e11,2r\   )1e11,2r]   )1,2,2r^   )1,2_1r_   )	1,2e-10e1r`   )--1,2ra   )1a_2,1rb   )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.
    r.   r0   r   r   r   numeric_decimal   s    4rc   )$
__future__r   r'   ZpytestZpandasr   r   r   r   r   r   r   Zfixturer%   r*   Z_cParserHighMemoryZ_cParserLowMemoryZ_pythonParserZ_py_parsers_onlyZ_c_parsers_onlyr7   Z_py_parser_idsZ_c_parser_idsr8   r2   r3   r4   r:   r;   Z_utf_valuesZ_encoding_sepsrB   Z_encoding_fmtsrG   rH   rc   r   r   r   r   <module>   s   











/