a
    ²<b  ã                   @  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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.d/d0„ ƒZ+eje*d.d1d2„ ƒZ,ejg d3¢d.d4d5„ ƒZ-ejd6d7„ ƒZ.ejd8d9„ ƒZ/d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„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   úo/Users/vegardjervell/Documents/master/model/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_csvztype[Warning]Ústr)Ú	warn_typeÚwarn_msgc                 O  sJ   |   |¡}tj||d t|i |¤ŽW  d   ƒ S 1 s<0    Y  d S )N)Úmatch)r   ÚtmZassert_produces_warningr   )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   )   s    
zBaseParser.read_table)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__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   .   s   r   c                   @  s   e Zd ZdZdS )ÚCParserHighMemoryFN©r   r   r   r	   r   r   r   r   r"   3   s   r"   c                   @  s   e Zd ZdZdS )ÚCParserLowMemoryTNr#   r   r   r   r   r$   7   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                   @  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_pathE   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   Úcsv1M   s    r3   r&   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_parsersg   s    

r;   c                 C  s   |   ¡ S )z<
    Fixture all of the CSV parsers using the C engine.
    ©r8   ©r:   r   r   r   Úc_parser_onlyx   s    r>   c                 C  s   |   ¡ S )zA
    Fixture all of the CSV parsers using the Python engine.
    r<   r=   r   r   r   Úpython_parser_only€   s    r?   c                 C  s   |   ¡ S )zB
    Fixture all of the CSV parsers using the Pyarrow engine.
    r<   r=   r   r   r   Úpyarrow_parser_onlyˆ   s    r@   c                  C  sV   g } g }t ttƒD ]8\}}|jD ](}|  |ƒ |f¡ | |› d|› ¡ q q| |dœS )za
    Return all allowable parser and float precision
    combinations and corresponding ids.
    ú-r4   )ÚzipÚ_all_parsersÚ_all_parser_idsr   Úappend)r5   r6   r*   Z	parser_idZ	precisionr   r   r   Ú,_get_all_parser_float_precision_combinations   s    
rF   r5   r6   c                 C  s   | j S )zR
    Fixture for all allowable combinations of parser
    and float precision
    r<   r=   r   r   r   Úall_parsers_all_precisionsŸ   s    	rG   )é   é   é    )Ú rA   Ú_ÚutfZUTFc                 C  s&   g | ]}t D ]}|› |› d  ‘qqS )z{0})Ú_encoding_prefixes)Ú.0ÚsepÚprefixr   r   r   Ú
<listcomp>°   s   rR   )r5   c                 C  s   | j S )zE
    Fixture for all possible integer values for a UTF encoding.
    r<   r=   r   r   r   Ú	utf_valueµ   s    rS   c                 C  s   | j S )zD
    Fixture for all possible string formats of a UTF encoding.
    r<   r=   r   r   r   Úencoding_fmt½   s    rT   )*)z-1,0ç      ð¿)z-1,2e0g333333ó¿)z-1e0rU   )z+1e0ç      ð?)z+1e+0rV   )z+1e-1çš™™™™™¹?)z+,1e1rV   )z+1,e0rV   )z-,1e1rU   )z-1,e0rU   )z0,1rW   )z1,rV   )z,1rW   )z-,1gš™™™™™¹¿)z1_,rV   )z1_234,56ç
×£p=J“@)z
1_234,56e0rX   )rL   rL   )ú-_rY   )ú-_1rZ   )ú-_1e0r[   )Ú_1r\   )ú_1,r]   )ú_1,_r^   )Ú_1e0r_   )ú1,2e_1r`   )ú1,2e1_0ra   )ú1,_2rb   )ú,1__2rc   )ú,1erd   )ú-,1ere   )ú1_000,000_000rf   )ú1,e1_2rg   )úe11,2rh   )ú1e11,2ri   )ú1,2,2rj   )ú1,2_1rk   )ú	1,2e-10e1rl   )ú--1,2rm   )ú1a_2,1rn   )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<   r=   r   r   r   Únumeric_decimalÅ   s    4ro   c                 C  s\   d| j v r|  d¡}nd| j v r0|  d¡d }ndS |jdkrXtjjdd}| j |¡ dS )z>
    Fixture that xfails a test if the engine is pyarrow.
    r;   rG   r   Nr(   úpyarrow doesn't support this.)Úreason)ÚfixturenamesÚgetfixturevaluer   r9   ÚmarkZxfailÚnodeZ
add_marker)r:   r*   rt   r   r   r   Úpyarrow_xfailü   s    


rv   c                 C  sL   d| j v r|  d¡}nd| j v r0|  d¡d }ndS |jdkrHt d¡ dS )z=
    Fixture that skips a test if the engine is pyarrow.
    r;   rG   r   Nr(   rp   )rr   rs   r   r9   Úskip)r:   r*   r   r   r   Úpyarrow_skip  s    


rx   )0Ú
__future__r   r0   r9   Zpandas.compat._optionalr   Zpandasr   r   Zpandas._testingZ_testingr   r   r   r"   r$   r%   r'   Zfixturer.   r3   Z_cParserHighMemoryZ_cParserLowMemoryZ_pythonParserZ_pyarrowParserZ_py_parsers_onlyZ_c_parsers_onlyZ_pyarrow_parsers_onlyrC   Z_py_parser_idsZ_c_parser_idsZ_pyarrow_parsers_idsrD   r;   r>   r?   r@   rF   rG   Z_utf_valuesZ_encoding_sepsrN   Z_encoding_fmtsrS   rT   ro   rv   rx   r   r   r   r   Ú<module>   sv   





þ
ÿ



ÿ/

