o
    Û­j¸#  ã                   @  sJ  d dl mZ d dlZd dlZd dlm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ejj e dd�g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/d0d1„ e.D ƒZ0eje-d2�d3d4„ ƒZ1eje0d2�d5d6„ ƒZ2ejg d7¢d2�d8d9„ ƒZ3ejd:d;„ ƒZ4ejd<d=„ ƒZ5dS )>é    )ÚannotationsN)ÚHAS_PYARROW)ÚVERSIONS)Úread_csvÚ
read_tablec                   @  sd   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„Z	dd„ Z
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   ú\/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/io/parser/conftest.pyÚupdate_kwargs   s   zBaseParser.update_kwargsc                 O  ó   |   |¡}t|i |¤ŽS ©N)r   r   ©r   Úargsr   r   r   r   r      ó   
zBaseParser.read_csv)Úraise_on_extra_warningsÚcheck_stacklevelÚ	warn_typeútype[Warning]Úwarn_msgÚstrr   Úboolc                O  sN   |   |¡}tj||||d�� t|i |¤ŽW  d   ƒ S 1 s w   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  r   r   )r   r   r   r   r   r   r   5   r   zBaseParser.read_table)r   c                O  sL   |   |¡}tj|||d�� t|i |¤ŽW  d   ƒ S 1 sw   Y  d S )N)r   r   )r   r   r    r   )r   r   r   r   r   r   r   r   r   Úread_table_check_warnings9   s   
ÿ$ýz$BaseParser.read_table_check_warnings)r   r   r   r   r   r   )r   r   r   r   )Ú__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ÚhighÚ
round_tripN©r#   r$   r%   r   r	   r   r   r   r   r'   K   s    r'   c                   @  ó   e Zd ZdZdS )ÚCParserHighMemoryFN©r#   r$   r%   r
   r   r   r   r   r-   P   ó    r-   c                   @  r,   )ÚCParserLowMemoryTNr.   r   r   r   r   r0   T   r/   r0   c                   @  ó   e Zd ZdZdgZdS )ÚPythonParserÚpythonNr+   r   r   r   r   r2   X   ó    
r2   c                   @  r1   )ÚPyArrowParserÚpyarrowNr+   r   r   r   r   r5   ]   r4   r5   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_pathb   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.
    r7   r9   Úcsvz	test1.csv)ÚosÚpathÚjoinr:   r   r   r   Úcsv1j   s   rA   úpyarrow is not installed©Úreason©Úmarksr3   Úc_highÚc_lowr6   ©ÚparamsÚidsc                 C  s8   |   ¡ }|jdkrt dtd ¡ ddl}| d¡ |S )z)
    Fixture all of the CSV parsers.
    r6   r   Né   )Úparamr   ÚpytestÚimportorskipr   r6   Úset_cpu_count)Úrequestr8   r6   r   r   r   Úall_parsersŒ   s   

rR   c                 C  ó   |   ¡ S )z<
    Fixture all of the CSV parsers using the C engine.
    ©rM   ©rQ   r   r   r   Úc_parser_onlyœ   ó   rV   c                 C  rS   )zA
    Fixture all of the CSV parsers using the Python engine.
    rT   rU   r   r   r   Úpython_parser_only¤   rW   rX   c                 C  rS   )zB
    Fixture all of the CSV parsers using the Pyarrow engine.
    rT   rU   r   r   r   Úpyarrow_parser_only¬   rW   rY   c                  C  s    g } g }t ttƒD ]A\}}t|dƒr|jd }|jD ]/}|jdkr.tjj	tjj
t dd�gnd}tj|ƒ |f|d�}|  |¡ | |› d|› �¡ qq	| |d	œS )
za
    Return all allowable parser and float precision
    combinations and corresponding ids.
    Úvaluesr   r6   rB   rC   r   rE   ú-rI   )ÚzipÚ_all_parsersÚ_all_parser_idsÚhasattrrZ   r	   r   rN   ÚmarkÚ
single_cpuÚskipifr   rM   Úappend)rJ   rK   r8   Ú	parser_idÚ	precisionr`   rM   r   r   r   Ú,_get_all_parser_float_precision_combinations´   s&   



	ûÿþø

ò
rf   rJ   rK   c                 C  ó   | j S )zR
    Fixture for all allowable combinations of parser
    and float precision
    rT   rU   r   r   r   Úall_parsers_all_precisionsÒ   s   	rh   )é   é   é    )Ú r[   Ú_ÚutfÚUTFc                 C  s$   g | ]}t D ]	}|› |› d �‘qqS )z{0})Ú_encoding_prefixes)Ú.0ÚsepÚprefixr   r   r   Ú
<listcomp>ã   s
    ÿÿrt   )rJ   c                 C  rg   )zE
    Fixture for all possible integer values for a UTF encoding.
    rT   rU   r   r   r   Ú	utf_valueè   ó   ru   c                 C  rg   )zD
    Fixture for all possible string formats of a UTF encoding.
    rT   rU   r   r   r   Úencoding_fmtð   rv   rw   )*)z-1,0ç      ð¿)z-1,2e0g333333ó¿)z-1e0rx   )z+1e0ç      ð?)z+1e+0ry   )z+1e-1çš™™™™™¹?)z+,1e1ry   )z+1,e0ry   )z-,1e1rx   )z-1,e0rx   )z0,1rz   )z1,ry   )z,1rz   )z-,1gš™™™™™¹¿)z1_,ry   )z1_234,56ç
×£p=J“@)z
1_234,56e0r{   )rm   rm   )ú-_r|   )ú-_1r}   )ú-_1e0r~   )Ú_1r   )ú_1,r€   )ú_1,_r�   )Ú_1e0r‚   )ú1,2e_1rƒ   )ú1,2e1_0r„   )ú1,_2r…   )ú,1__2r†   )ú,1er‡   )ú-,1erˆ   )ú1_000,000_000r‰   )ú1,e1_2rŠ   )úe11,2r‹   )ú1e11,2rŒ   )ú1,2,2r�   )ú1,2_1rŽ   )ú	1,2e-10e1r�   )ú--1,2r�   )ú1a_2,1r‘   )z1,2E-1g¸…ëQ¸¾?)z1,2E1g      (@c                 C  rg   )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.
    rT   rU   r   r   r   Únumeric_decimalø   s   4r’   c                 C  s^   d| j v r|  d¡}nd| j v r|  d¡d }ndS |jdkr-tjjdd�}|  |¡ dS dS )z‰
    Fixture that xfails a test if the engine is pyarrow.

    Use if failure is do to unsupported keywords or inconsistent results.
    rR   rh   r   Nr6   zpyarrow doesn't support this.rC   )ÚfixturenamesÚgetfixturevaluer   rN   r`   ÚxfailÚapplymarker)rQ   r8   r`   r   r   r   Úpyarrow_xfail/  s   


þr—   c                 C  sR   d| j v r|  d¡}nd| j v r|  d¡d }ndS |jdkr'tjdd� dS 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
    rR   rh   r   Nr6   z,https://github.com/apache/arrow/issues/38676rC   )r“   r”   r   rN   Úskip)rQ   r8   r   r   r   Úpyarrow_skipB  s   


ÿr™   )6Ú
__future__r   r>   rN   Úpandas.compatr   Úpandas.compat._optionalr   Úpandasr   r   Úpandas._testingÚ_testingr   r   r'   r-   r0   r2   r5   Úfixturer<   rA   Ú_cParserHighMemoryÚ_cParserLowMemoryÚ_pythonParserÚ_pyarrowParserÚ_py_parsers_onlyÚ_c_parsers_onlyrM   r`   ra   rb   Ú_pyarrow_parsers_onlyr]   Ú_py_parser_idsÚ_c_parser_idsÚ_pyarrow_parsers_idsr^   rR   rV   rX   rY   rf   rh   Ú_utf_valuesÚ_encoding_sepsrp   Ú_encoding_fmtsru   rw   r’   r—   r™   r   r   r   r   Ú<module>   s†    :

þþÿ




þ
ÿ



ÿ
/
