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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
U
¬ý°d\:ã@s$ddlmZddlmZddlmZmZmZmZddl    Z    ddl
Z ddl m Z mZddlmZmZmZmZddlmZddlmZdd    lmZdd
lmZmZdd lmZmZdd l m!Z!dd l"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(erðddl)m*Z*m+Z+Gdd„de&ƒZ,dddœdd„Z-dddœdd„Z.dS)é)Ú annotations)Ú defaultdict)Ú TYPE_CHECKINGÚHashableÚMappingÚSequenceN)ÚlibÚparsers)Ú    ArrayLikeÚDtypeArgÚDtypeObjÚ ReadCsvBuffer)Úimport_optional_dependency)Ú DtypeWarning)Úfind_stack_level)Úis_categorical_dtypeÚ pandas_dtype)Ú concat_compatÚunion_categoricals)Úensure_index_from_sequences)Ú dedup_namesÚis_potential_multi_index)Ú
ParserBaseÚ ParserErrorÚ is_index_col)ÚIndexÚ
MultiIndexcsŽeZdZUded<ded<dddœ‡fdd    „ Zdd
œd d „Zdd
œd d„Zd dddœdd„Zdddœdd„Zdd„Z    d!dddœdd„Z
‡Z S)"ÚCParserWrapperÚboolÚ
low_memoryzparsers.TextReaderÚ_readerzReadCsvBuffer[str]ÚNone)ÚsrcÚreturnc sŒtƒ |¡||_| ¡}| dd¡|_|jdk    |d<|j|d<|jj    |d<dD]}| |d¡qPt
|  dd¡ƒ|d<d|ksŒ|dt j kr”d    |d<|dd
kr¨td
ƒtj|f|Ž|_|jj|_|jdk}|jjdkràd|_n"| |jj|j|¡\|_|_|_}|jdkr tt|jjƒƒ|_|jdd…|_|jrÔ| |j|j¡‰|jdk    sXt‚|jd kr„tˆƒ  |j¡s„| !ˆ|j¡t"|jƒt"ˆƒkr²‡fd d „t#|jƒDƒ|_t"|jƒt"ˆƒkrÔ| !ˆ|j¡| $|j¡| %¡|j|_|j&sz|jj'dkrDt(|jƒrDd|_)| *|j|j¡\}|_|_|jdkrD||_|jjdkrz|sz|jdk    sht‚dgt"|jƒ|_|jj'dk|_+dS)NrFZallow_leading_colsÚusecolsÚ on_bad_lines)Zstorage_optionsÚencodingZ
memory_mapÚ compressionÚdtypeZ dtype_backendÚnumpyZpyarrowÚstringcs$g|]\}}|ˆks|ˆkr|‘qS©r+)Ú.0ÚiÚn©r$r+úYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/io/parsers/c_parser_wrapper.pyÚ
<listcomp>‘sýz+CParserWrapper.__init__.<locals>.<listcomp>rT),ÚsuperÚ__init__ÚkwdsÚcopyÚpoprÚ    index_colr$r%ÚvalueÚensure_dtype_objsÚgetrZ
no_defaultrr    Z
TextReaderr Z unnamed_colsÚnamesÚheaderZ_extract_multi_indexer_columnsÚ index_namesÚ    col_namesÚlistÚrangeZ table_widthÚ
orig_namesÚ_evaluate_usecolsÚAssertionErrorZ usecols_dtypeÚsetÚissubsetZ_validate_usecols_namesÚlenÚ    enumerateZ_validate_parse_dates_presenceÚ_set_noconvert_columnsÚ_has_complex_date_colÚ leading_colsrZ_name_processedÚ_clean_index_namesZ_implicit_index)Úselfr"r4ÚkeyZ passed_namesr=©Ú    __class__r/r0r3<sŽ ÿ
 
 
     ýû  ÿ
ýþ ÿüû zCParserWrapper.__init__)r#cCs(z|j ¡Wntk
r"YnXdS©N)r ÚcloseÚ
ValueError)rLr+r+r0rQÂszCParserWrapper.closecs^|jdk    st‚dd„t|jƒDƒ‰‡fdd„|jDƒ}| ||j¡}|D]}|j |¡qHdS)z¹
        Set the columns that should not undergo dtype conversions.
 
        Currently, any column that is involved with date parsing will not
        undergo such conversions.
        NcSsi|]\}}||“qSr+r+)r,r-Úxr+r+r0Ú
<dictcomp>Ôsz9CParserWrapper._set_noconvert_columns.<locals>.<dictcomp>csg|] }ˆ|‘qSr+r+©r,rS©Z
names_dictr+r0r1Õsz9CParserWrapper._set_noconvert_columns.<locals>.<listcomp>)rArCrGr;Z_set_noconvert_dtype_columnsr Z set_noconvert)rLZ col_indicesZnoconvert_columnsÚcolr+rVr0rHÉsþz%CParserWrapper._set_noconvert_columnsNz
int | Nonez_tuple[Index | MultiIndex | None, Sequence[Hashable] | MultiIndex, Mapping[Hashable, ArrayLike]])Únrowsr#c
s¶z,|jr|j |¡}t|ƒ}n |j |¡}Wnªtk
rÖ|jrÈd|_t|jt    |j|j
ƒƒ}|j ||j
|j |j  d¡d\}‰}| ˆ|j¡‰|jdk    r¤| ˆ¡‰‡fdd„| ¡Dƒ}|ˆ|fYS| ¡‚YnXd|_|j}|jjr|jrütdƒ‚g}|j
r<|jjt|j
ƒkr<tdt|j
ƒ›d|jj›d    ƒ‚t|jjƒD]H}|j
dkrd| |¡}    n| |j
|¡}    |j|    |d
d }    | |    ¡qHt|ƒ}|jdk    r°| |¡}t|t    ||j
ƒƒ}t | ¡ƒ}
d d„t!||
ƒDƒ}| "||¡\} } | | |j¡} nªt | ¡ƒ}
|jdk    st#‚t$|jƒ}t|t    ||j
ƒƒ}|jdk    rP| |¡}d d„|
Dƒ} |jdkrv| %|| ¡dd„t!||
ƒDƒ}| "||¡\}} | &| | |¡\}} || | fS)NFr(©r(csi|]\}}|ˆkr||“qSr+r+)r,ÚkÚv©Úcolumnsr+r0rTsz'CParserWrapper.read.<locals>.<dictcomp>z file structure not yet supportedz,Could not construct index. Requested to use z number of columns, but z left to parse.T)Útry_parse_datescSsi|]\}\}}||“qSr+r+©r,rZr-r[r+r+r0rT0s
cSsg|] }|d‘qS)ér+rUr+r+r0r1Hsz'CParserWrapper.read.<locals>.<listcomp>cSsi|]\}\}}||“qSr+r+r_r+r+r0rTLs
)'rr Zread_low_memoryÚ_concatenate_chunksÚreadÚ StopIterationZ _first_chunkrrArr7Z_get_empty_metar=r4r:Z_maybe_make_multi_index_columnsr>r$Ú_filter_usecolsÚitemsrQr;rJrIÚNotImplementedErrorrFrr@r6Ú_maybe_parse_datesÚappendrÚsortedÚzipZ_do_date_conversionsrCr?Z_check_data_lengthZ _make_index)rLrXÚchunksÚdatar;ÚindexZcol_dictZarraysr-ÚvaluesZ    data_tupsZ column_namesZ    date_dataZalldatar+r\r0rbÞs‚
 
 þ
ü 
 
 
ÿ   
 ÿ 
 
  zCParserWrapper.readzSequence[Hashable])r;r#cs@| |j|¡‰ˆdk    r<t|ƒtˆƒkr<‡fdd„t|ƒDƒ}|S)Ncs$g|]\}}|ˆks|ˆkr|‘qSr+r+)r,r-Únamer/r+r0r1Wsz2CParserWrapper._filter_usecols.<locals>.<listcomp>)rBr$rFrG)rLr;r+r/r0rdSs 
ÿzCParserWrapper._filter_usecolscCsHt|jjdƒ}d}|jjdkr@|jdk    r@| ||j¡\}}|_||fS)Nr)r?r r<rJr7rK)rLr;Z    idx_namesr+r+r0Ú_get_index_names\sÿ zCParserWrapper._get_index_namesTÚint)rmr^cCs4|r0| |¡r0|j||jdk    r(|j|ndd}|S)N)rW)Z_should_parse_datesZ
_date_convr=)rLrnrmr^r+r+r0rggs þz!CParserWrapper._maybe_parse_dates)N)T) Ú__name__Ú
__module__Ú __qualname__Ú__annotations__r3rQrHrbrdrprgÚ __classcell__r+r+rNr0r8s
þu     rzlist[dict[int, ArrayLike]]Údict)rkr#c
sät|d ¡ƒ}g}i}|D]މ‡fdd„|Dƒ}dd„|Dƒ}dd„|Dƒ}| ¡}t|ƒrpt|dd|ˆ<qt|ƒ|ˆ<t|ƒd    kr|ˆjt t    ¡kr| 
t ˆƒ¡q|ràd
  |¡}d   d |›d g¡}    t j|    ttƒd|S)z±
    Concatenate chunks of data read with low_memory=True.
 
    The tricky part is handling Categoricals, where different chunks
    may have different inferred categories.
    rcsg|]}| ˆ¡‘qSr+)r6)r,Úchunk©ror+r0r1|sz'_concatenate_chunks.<locals>.<listcomp>cSsh|]
}|j’qSr+rY)r,Úar+r+r0Ú    <setcomp>~sz&_concatenate_chunks.<locals>.<setcomp>cSsh|]}t|ƒs|’qSr+)rrUr+r+r0r{sF)Zsort_categoriesr`ú,ú z    Columns (zK) have mixed types. Specify dtype option on import or set low_memory=False.)Ú
stacklevel)r?Úkeysr6rrrrFr(ÚnpÚobjectrhÚstrÚjoinÚwarningsÚwarnrr)
rkr;Zwarning_columnsÚresultZarrsZdtypesZnon_cat_dtypesr(Z warning_namesZwarning_messager+ryr0raps*  
 
ÿÿraz*DtypeArg | dict[Hashable, DtypeArg] | Nonez*DtypeObj | dict[Hashable, DtypeObj] | None)r(r#csxtˆtƒrHtˆ ¡ƒ‰t‡fdd„ƒ}ˆ ¡D]}tˆ|ƒ||<q.|Stˆtƒrd‡fdd„ˆDƒSˆdk    rttˆƒSˆS)zc
    Ensure we have either None, a dtype object, or a dictionary mapping to
    dtype objects.
    csˆSrPr+r+)Ú default_dtyper+r0Ú<lambda>Ÿóz#ensure_dtype_objs.<locals>.<lambda>csi|]}|tˆ|ƒ“qSr+)r)r,rZrYr+r0rT¤sz%ensure_dtype_objs.<locals>.<dictcomp>N)Ú
isinstancerrÚdefault_factoryrrw)r(Zdtype_convertedrMr+)r‡r(r0r9•s
 
r9)/Ú
__future__rÚ collectionsrÚtypingrrrrr„r)r€Z pandas._libsrr    Zpandas._typingr
r r r Zpandas.compat._optionalrZ pandas.errorsrZpandas.util._exceptionsrZpandas.core.dtypes.commonrrZpandas.core.dtypes.concatrrZpandas.core.indexes.apirZpandas.io.commonrrZpandas.io.parsers.base_parserrrrZpandasrrrrar9r+r+r+r0Ú<module>s*      :%