1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
U
¬ý°dÅã@spddlmZddlmZddlmZddlmZddlZ    ddlm
Z
ddl m Z ddl mZGd    d
„d
eƒZdS) é)Ú annotations)Ú
ReadBuffer)Úimport_optional_dependency)Ú
is_integerN)Ú    DataFrame)Ú_arrow_dtype_mapping)Ú
ParserBasecs\eZdZdZdddœ‡fdd„ Zdd„Zdd    œd
d „Zd d d œdd„Zd d    œdd„Z‡Z    S)ÚArrowParserWrapperz7
    Wrapper for the pyarrow engine for read_csv()
    zReadBuffer[bytes]ÚNone)ÚsrcÚreturnc s$tƒ |¡||_||_| ¡dS)N)ÚsuperÚ__init__Úkwdsr Ú _parse_kwds)Úselfr r©Ú    __class__©ú]d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/io/parsers/arrow_parser_wrapper.pyrs zArrowParserWrapper.__init__cCsf|j d¡}|dkrdn||_| |jd¡\|_|_|jd}t|tƒrRtdƒ‚t    |jdƒ|_
dS)z?
        Validates keywords before passing to pyarrow.
        ÚencodingNzutf-8ÚusecolsÚ    na_valuesz?The pyarrow engine doesn't support passing a dict for na_values) rÚgetrZ_validate_usecols_argrZ usecols_dtypeÚ
isinstanceÚdictÚ
ValueErrorÚlistr)rrrrrrrs ÿ 
 
ÿzArrowParserWrapper._parse_kwds)r cCsªddddddœ}| ¡D]4\}}||jkr|j |¡dk    r|j |¡|j|<qdd    „|j ¡Dƒ|_d
d    „|j ¡Dƒ|_|jdk|jdk    r’|jn|jd |jd œ|_dS) z:
        Rename some arguments to pass to pyarrow
        Úinclude_columnsÚ null_valuesÚ escape_charÚignore_empty_linesÚ decimal_point)rrÚ
escapecharZskip_blank_linesÚdecimalNcSs&i|]\}}|dk    r|dkr||“qS)N)Ú    delimiterÚ
quote_charr r!r©Ú.0Z option_nameZ option_valuerrrÚ
<dictcomp>;sÿýz;ArrowParserWrapper._get_pyarrow_options.<locals>.<dictcomp>cSs&i|]\}}|dk    r|dkr||“qS)N)rrZ true_valuesZ false_valuesr"rr'rrrr)BsÿýZskiprows)Zautogenerate_column_namesZ    skip_rowsr)    ÚitemsrrÚpopÚ parse_optionsÚconvert_optionsÚheaderrÚ read_options)rÚmappingZ pandas_nameZ pyarrow_namerrrÚ_get_pyarrow_options,s*ûþþÿûz'ArrowParserWrapper._get_pyarrow_optionsr)Úframer c
Csjt|jƒ}d}|jdkrn|jdkr6|jdkr6t|ƒ|_t|jƒ|krftt|t|jƒƒƒ|j|_d}|j|_| |j|¡\|_}|jdk    rt|jƒD]<\}}t    |ƒrº|j||j|<q˜||jkr˜t
d|›dƒ‚q˜|j |jddd|jdkr|sdgt|j jƒ|j _|j  d¡dk    rfz| |j  d¡¡}Wn,tk
rd}z t
|ƒ‚W5d}~XYnX|S)z÷
        Processes data read in based on kwargs.
 
        Parameters
        ----------
        frame: DataFrame
            The DataFrame to process.
 
        Returns
        -------
        DataFrame
            The processed DataFrame.
        TNFzIndex z invalid)ZdropZinplaceZdtype)ÚlenÚcolumnsr.ÚnamesÚrangerZ_do_date_conversionsZ    index_colÚ    enumeraterrZ    set_indexÚindexrrZastypeÚ    TypeError)rr2Znum_colsZmulti_index_namedÚiÚitemÚerrrÚ_finalize_pandas_outputWs4
 
 
 
 
 
z*ArrowParserWrapper._finalize_pandas_outputcCs’tdƒ}| ¡|j|j|jf|jŽ|jf|jŽ|jf|j    Žd}|j
ddkr`|j t j d}n(|j
ddkr€|j tƒjd}n|  ¡}| |¡S)zÿ
        Reads the contents of a CSV file into a DataFrame and
        processes it according to the kwargs passed in the
        constructor.
 
        Returns
        -------
        DataFrame
            The DataFrame created from the CSV file.
        z pyarrow.csv)r/r,r-Z dtype_backendZpyarrow)Z types_mapperZnumpy_nullable)rr1Zread_csvr Z ReadOptionsr/Z ParseOptionsr,ZConvertOptionsr-rZ    to_pandasÚpdZ
ArrowDtyperrr=)rZ pyarrow_csvÚtabler2rrrÚreadŠs    üzArrowParserWrapper.read)
Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrr1r=r@Ú __classcell__rrrrr    s +3r    )Ú
__future__rZpandas._typingrZpandas.compat._optionalrZpandas.core.dtypes.inferencerZpandasr>rZpandas.io._utilrZpandas.io.parsers.base_parserrr    rrrrÚ<module>s