gL i<ddlmZddlmZddlmZddlZddlZddlmZddl Z ddl m Z m Z m Z mZmZmZddlZddlZddlmZmZddlmcmZddlmZdd lmZdd lm Z dd l!m"Z"m#Z#dd l$m%Z%dd l&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4ddl5m6Z6m7Z7ddl8m9Z9ddl:m;Z;mZ>m?Z?ddl@mAZAddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZIddlJmKZKddlLmMZMmNZNmOZOmPZPddlQmRZRddlSmTZUddlVmWZWe rddlXmYZYmZZZm[Z[m\Z\ddl]m^Z^m_Z_m`Z`maZaGddZbejdddf dLd"Zdid#dd$dd%d&d'ejd(dd)dd*dd+d,d-dd.dd/dd0dd1dd2dd3dd4dd5did6dd7dd dd8dd9dd:d;dejd!dd?dd@ddAddBddCddDddEebjjejdFZhdejf dMdGZi dN dOdHZjdPdIZkdJZldQdKZmy)R) annotations) defaultdictcopyN)Enum) TYPE_CHECKINGAnyCallablecastfinaloverload)libparsers) STR_NA_VALUES)parsing)import_optional_dependency) ParserError ParserWarning)find_stack_level) astype_array) ensure_object is_bool_dtype is_dict_likeis_extension_array_dtypeis_float_dtype is_integeris_integer_dtype is_list_likeis_object_dtype is_scalaris_string_dtype pandas_dtype)CategoricalDtypeExtensionDtype)isna) ArrowDtype DataFrame DatetimeIndex StringDtypeconcat) algorithms)ArrowExtensionArrayBaseMaskedArray BooleanArray CategoricalExtensionArray FloatingArray IntegerArray) BooleanDtype)Index MultiIndex default_indexensure_index_from_sequences)Series) datetimes)is_potential_multi_index)HashableIterableMappingSequence) ArrayLikeDtypeArgDtypeObjScalarceZdZUGddeZded<ded<ded<ded<ded<ded <d ed <d(d Zd)d Zd(dZe e d*dZ e d+dZ e d, d-dZ e d. d/dZe d. d0dZe dZe dZe dZe d1d2dZe d3 d4dZe d5dZe d1 d6dZe d7dZe d8dZe d9dZe d:dZe d;d Ze dd#Ze d?d$Ze d%Ze d@d&Ze d.dAd'Zy)B ParserBaseceZdZdZdZdZy)ParserBase.BadLineHandleMethodrN)__name__ __module__ __qualname__ERRORWARNSKIPc/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/io/parsers/base_parser.pyBadLineHandleMethodrFfsrPrRbool_implicit_index _first_chunkkeep_default_nadayfirst cache_dates keep_date_col str | None usecols_dtypecd|_|jd|_d|_|jdd|_t |_d|_d|_t|jdd|_ g|_ |jdtj|_|jdd|_|jdd|_|jdd|_|jd |_|jd |_|jd d|_|jd d |_t/|jdd|_|jd|_|jd|_|jd|_|jd|_|jdd |_t=|j|j |j"|j:|_|jd|_ tC|j@dr|jdr tEd|jdr tEd|jtG|jr|jg|_n_tC|jdr#tItKtF|js tEdtM|j|_d|_'d |_(|jS|d\|_*|_+|jd|jXjZ|_.y)NFnames index_col parse_dates date_parser date_formatrWrY na_values na_fvalues na_filterrVTdtype converters dtype_backend true_values false_valuesrX)r`rarWrXheader) allow_setsusecolsz;cannot specify usecols when specifying a multi-index headerz9cannot specify names when specifying a multi-index headerzLindex_col must only contain row numbers when specifying a multi-index header on_bad_lines)/rTgetr] orig_namesr^set unnamed_cols index_names col_names_validate_parse_dates_argpopr__parse_date_colsr no_defaultr`rarWrYrbrcrdrVrrerfrgrhrirX_make_date_converter _date_convrjr ValueErrorrallmaplist_name_processedrU_validate_usecols_argrlr[rRrLrm)selfkwdss rQ__init__zParserBase.__init__ss$XXg& 59+t4!$6:484TXXmU5ST*,88M3>>B88M48U3 !XXou=+.((<0+u5#xx(94@$((7D12 ((<0!XXo688M2 HH^488M48.((((]]((  hhx(   6xx " Qxx  O ~~)dnn-&*nn%5DN EBC DNN;<$? &*$..%9DN$ +/+E+Ed9o+V( d(!HH^T5M5M5S5STrPc (t|jr+tj|jj }nHt |jr1tjj d|jD}ng}t|}djt|Dchc]}t|tr||vr|c}}|rtd|d|Dcgc]}t|ts||vr|n||c}Scc}wcc}w)a Check if parse_dates are in columns. If user has provided names for parse_dates, check if those columns are available. Parameters ---------- columns : list List of names of the dataframe. Returns ------- The names of the columns which will get parsed later if a dict or list is given as specification. Raises ------ ValueError If column to parse_date is not in dataframe. c3\K|]$}t|rt|ts|n|g&ywN)r isinstancetuple).0cols rQ z.s/8$C(C1GcUR8s*,z, z+Missing column provided to 'parse_dates': '') rr_ itertoolschainvaluesr from_iterabler}joinsortedrstrrz)rcolumns cols_neededr missing_colss rQ_validate_parse_dates_presencez)ParserBase._validate_parse_dates_presences0 (( )#//4+;+;+B+B+DEK $** + $//778++8K K;' yy  +!#s+70B   =l^1M  # sC(C7NC M   s (D %"DcyrrOrs rQclosezParserBase.closes rPct|jtxsSt|jtxr7t |jdkDxrt|jdtS)Nr)rr_dictr}lenrs rQ_has_complex_date_colz ParserBase._has_complex_date_cols`$**D1 t'' . 6D$$%) 64++A.5 rPc(tj|jrt|jS|j|j|}nd}|j |n|j |}||jvxs|duxr||jvSr)ris_boolr_rSrrr^)rinamejs rQ_should_parse_dateszParserBase._should_parse_datess ;;t'' ((() )+''*^^+1BA)))D =TT-=-=%= rPc t|dkr |d|d|fS|j}|g}t|ttt j fs|g}t| |jd}|j||j\}}}t|d t fd|ddDs td fd tt fd |D}|j}t|D]}|j||t|r4|D cgc](} | |d| |d|j vr| |dnd*} } ndgt|z} d }||| |fScc} w) a Extract and return the names, index_names, col_names if the column names are a MultiIndex. Parameters ---------- header: list of lists The header rows index_names: list, optional The names of the future index passed_names: bool, default False A flag specifying if names where passed rHrNc3:K|]}t|k(ywr)r)r header_iter field_counts rQrz.DsQ{3{#{2QsrGz1Header rows must have an equal number of columns.cBtfdtDS)Nc32K|]}|vs|ywrrO)rrrsics rQrzMParserBase._extract_multi_indexer_columns..extract..HsJ!Qc\1Js  )rrange)rrrs`rQextractz:ParserBase._extract_multi_indexer_columns..extractGsJu['9JJ JrPc3.K|] }|ywrrO)rrrs rQrz.Js8AWQZ8T)rr^rr}rnpndarrayrpru_clean_index_namesr{rziprrinsertrq)rrjrr passed_namesic_rr] single_icrrsrrrs @@@rQ_extract_multi_indexer_columnsz)ParserBase._extract_multi_indexer_columnss. v;?!9k4= = ^^ :B"tUBJJ78B"gjjn  33KP Q&)n QfQRjQQQR R Ks889:  /I LLI . / r7  r!uX)qAxt?P?P/P"Q%IV,I k9l::s -E'Ncxt|r.ttt|}t j ||S|S)N)r])r:r r}rr5 from_tuples)rrrs list_columnss rQ_maybe_make_multi_index_columnsz*ParserBase._maybe_make_multi_index_columns^s4 $G ,U W5L)),iH HrPc:t|jr |jsd}n|js$|j||}|j |}nw|jrk|j s:|j t||j\|_}|_d|_|j||}|j |d}|r/t|t|z } J|j|d| }|j||j}|fS)NTF)try_parse_dates) is_index_colr^r_get_simple_index _agg_indexr~rr}rr_get_complex_date_indexr set_namesrrs) rdataalldatar indexnamerowindex simple_indexr date_indexcoffsets rQ _make_indexzParserBase._make_indexjs DNN+4>>E++11'7CLOOL1E  ' '''8<8O8OM4>>95!1dn(,$55dGDJOOJOFE ,'#g,6G$ $$OOL'$:;E66wOg~rPcd}g}g}|jD]/}||}|j||j||1t|dD]1}|j||jr!|j|3|S)NcDt|ts|Std|d)NzIndex z invalid)rrrzrs rQixz(ParserBase._get_simple_index..ixs%c3' vcU(34 4rPTreverse)r^appendrrurT)rrrr to_removeridxrs rQrzParserBase._get_simple_indexs 5  >> "C3A   Q  LLa ! " 40 A HHQK'' A   rPcfd}g}g}|jD]/}||}|j||j||1t|dD]$}|j|j |&|S)Nct|tr|Std|dtD]\}}||k(s |cSy)Nz Must supply column order to use z as index)rrrz enumerate)icolrcrss rQ _get_namez5ParserBase._get_complex_date_index.._get_namesQ$$   #CD89!UVV!), 19H rPTr)r^rrruremove) rrrsrrrrrrs ` rQrz"ParserBase._get_complex_date_indexs  >> %CS>D   T " LLd $ % 40 A HHQK   Q   rPct|ts|Si}|jJ|jD]7\}}t|tr||jvr|j|}|||<9t|t rRt |jt |jz }|j|Dcic]}||| c}|Scc}w)zconverts col numbers to names) rrroitemsintrrpkeysupdate)rmappingcleanrvremaining_colss rQ_clean_mappingzParserBase._clean_mappings'4(N***mmo FC#s#4??(Booc*E#J  g{ + 1C 4EEN LL~F#ws|+F G Gs; Ccg}|j|j}|j |j}ntjdg}t t ||D]\}\}}|r?|j|r.|j||j|j|nd}|jr|j} |j} nt} t} t|jtrN|jJ|j|} | /t| |j|j|j \} } |j|j"} d} d}|j_t| tr| j%|j|d} t|tr |j%|j|du}| xr t'| xs| }|j)|| | z| du|\}}| t+||| }nt-|g|g}|j/|t1|dk(r|dSt3j4|S)NrFrrerGr)rrfrrrcyclerrrryrdrbrcrprr_get_na_valuesrVrernr! _infer_typesr4r7rrr5 from_arrays)rrrarraysrfr]rarrr col_na_valuescol_na_fvaluescol_name clean_dtypes cast_typeindex_converter try_num_boolrrs rQrzParserBase._agg_indexsI((9    '"..EOOTF+E'E5(9:- NA{T4#;#;A#>oo/3/?/?/K((+QU& ~~ $ !% # !$$..$/''333++A.'4B $..$//4CWCW51M> ..tzz:LI#O+lD1 , 0 01A1A!1Dd KIj$/&0nnT5E5Ea5H&IQU&UO8oi8KOL&&]^3Y$5F FC$Cd)<13%$@ MM# [- ^ v;! !9 ))&1 1rPci}|jD]\}} |dn|j|d} t|tr|j|d} n|} |jrt ||||j \} } ntt} } ||jvrMtj| t| | z}tj| |tj| ||<| h| (tjd|dt t# t%j&| | } |j3| t| | z| dud\}}nt5| }|xs t7| }| xr| }|j3| t| | z| du|\}}| t9| } | rD|j:| k7s|r3|s|dkDrt=| rt)d||j?|| |}|||<|s|stAd|d ||S#t($rWtj| t+|j-tj.}t%j0| | |} YBwxYw) Nz5Both a converter and dtype were specified for column z# - only the converter will be used. stacklevelF)rrz$Bool column has NA values in column zFilled z NA values in column )!rrnrrrdrrVrprvr+isinrputmasknanwarningswarnrrr map_inferrzr}viewuint8map_infer_maskrrr!r"rer _cast_typesprint)rdctrbrcverboserfdtypesresultrrconv_frrrmaskcvalsna_countis_eais_str_or_ea_dtypers rQ_convert_to_ndarrayszParserBase._convert_to_ndarrays sI FIAv'/TZ^^At5LF&$'"JJq$/ # ~~0>y*d.B.B1- ~14su~ D)))"vs=/AN/RS 640"q !(MM**+,OQ#5 F ]]66:F #'"3"3 &7%!& #4#x1;%*%Hoi.H"%.$D2DE #'"3"3 &7% #x( ,Y 7I%++":e X\(3",/STUSV-W"XX ,,UIqAEF1I8z)>qeDESI FT K"F%??64 ?CHHRD //EFFsHAI21I2ct}|jdk(rt|jn(t |js|jdvrnddfd }t |j trY|j D]H}t |tr|D]}|j||2|j||J|St |j trg|j jD]H}t |tr|D]}|j||2|j||J|S|j rqt |jtr*|jD]}|j|||S|j!|j||j|S)a Set the columns that should not undergo dtype conversions. Currently, any column that is involved with date parsing will not undergo such conversions. If usecols is specified, the positions of the columns not to cast is relative to the usecols not to all columns. Parameters ---------- col_indices: The indices specifying order and positions of the columns names: The column names which order is corresponding with the order of col_indices Returns ------- A set of integers containing the positions of the columns not to convert. integer)emptyNNcjt|r|}t|sj|}|Sr)rr)x col_indicesr]rls rQ_setz5ParserBase._set_noconvert_dtype_columns.._sets6"z!}AJa= A/HrP)returnr) rpr[rrlcallablerr_r}addrrr^)rrr]noconvert_columnsrvalkrls `` @rQ_set_noconvert_dtype_columnsz'ParserBase._set_noconvert_dtype_columnsbs, E    *T\\*G dll #t'9'9'P"GG  d&& -'' 5c4( 7)--d1g67&))$s)4  5,! (($ /''..0 5c4( 7)--d1g67&))$s)4  5!   $..$/3A%))$q'23 ! +!%%d4>>&:;  rPc  d}t|jjtjtj frtj |Dcgc]}t|tr|c}}tj||}|jddj}|dkDrOt|r|jtj}tj||tj ||fS|j"}|xr|t$j&u} |r"t)|jr t%j*||d| \} } | r| /tj,| j.tj } | j1r:t3tj4| j.tj6| } nGt| r t3| | } n/t9| r t;| | } nt=| r t?| | } | j}nOtA| j}n5|} |jtjJk(rtGjH||}| jtjJk(r|rtMjNtjP||jR|jT| \} } | jtj k(r@| r>| /tj,| j.tj } t;| | } nc| jtjJk(rF| rDt%jV| d s-tY} | j[}|j]|| } |d k(rt_d }t| tj`r tc|j | d } | |fSt| tdry| jfj1r+tc|j dgti| z} | |fStc|j | jj| jf } | |fStc|j | jmd } | |fScc}w#tBtDf$rtGjH||}|} YTwxYw)a Infer types of values, possibly casting Parameters ---------- values : ndarray na_values : set no_dtype_specified: Specifies if we want to cast explicitly try_num_bool : bool, default try try to cast values to numeric (first preference) or boolean Returns ------- converted : ndarray or ExtensionArray na_count : int rrFr)convert_to_masked_nullableNre)rhrirTskipnapyarrow) from_pandas)r )7 issubclassretypernumberbool_arrayrrr+rastypesumrfloat64rrrgrrwrmaybe_convert_numericzerosshaper{r2onesint64rr.rr1r%rz TypeErrorrsanitize_objectsobject_libopsmaybe_convert_boolasarrayrhriis_datetime_arrayr)construct_array_type_from_sequencerrr,r-_maskr_datato_numpy)rrrbno_dtype_specifiedrr rr rgnon_default_dtype_backendr result_mask bool_maskreclspas rQrzParserBase._infer_typess( fll''"))RXX)> ?!W#*SRUBV#!WXI??695D{{7{7;;=H!|#F+#]]2::6F 6408# #**  F=#F " OFLL9 2&)&?&?/H '# -"*&(hhv||288&L "(!-GGK$5$5RXXF "*&1!-fk!B&v.!-fk!B'/!.v{!C*0H#F|//1HF||rzz)"33FIF <<2:: %, & 9 9 6" ,,!..+D ! FI ||rxx',E$ "RXX FI%fi8+0I,,VDA'ME446C //e/DF I %+I6B&"**-,RXXf$X-OPxFO4<<##%04&3v;:N1OPFx1FLLAFx -HHV__.DHAxq"X0 * #33FIF  sR%*R%R**'SSct|tr|jdu}t|js|st j |dd}t|jj}tj||j|||j}|St|tr]|j} t|t r)|j#|||j|j$S|j#||St|t(r|j+|d }|St-|j.t0rt j |d d}|S t3||d }|S#t&$r}t'd|d|d}~wwxYw#t4$r}t5d |d ||d}~wwxYw) ar Cast values to specified type Parameters ---------- values : ndarray or ExtensionArray cast_type : np.dtype or ExtensionDtype dtype to cast values to column : string column name - used only for error reporting Returns ------- converted : ndarray or ExtensionArray NF)r"convert_na_value)rh)rerhrir zExtension Array: zO must implement _from_sequence_of_strings in order to be used in parser methodsrTzUnable to convert column z to type )rr# categoriesrrerensure_string_arrayr4uniquedropnar/_from_inferred_categories get_indexerrhr$r9r3_from_sequence_of_stringsriNotImplementedErrorr0r*r%r&rrrz)rrrcolumn known_catscats array_typeerrs rQrzParserBase._cast_typess" i!1 2"--T9J"6<<00055='')002D ::d&&v. tGWGWFR I > 2"779J i6&??'$($4$4%)%6%6 @&??i?XX /]]95]9F   ,,,teF  %fidC  -' )' |4VV $  /xy L s6 8FF0F! F FF! G*F<<GcyrrOrr]rs rQ_do_date_conversionszParserBase._do_date_conversions` rPcyrrOrTs rQrUzParserBase._do_date_conversionshrVrPc |jRt||j|j|j|j||j |j \}}||fS)N)rYrg)r__process_date_conversionryr^rrrYrgrTs rQrUzParserBase._do_date_conversionspsb    '2    "00"00 KD%d{rPcN|jst|t|k7r|r~t|dxr|ddk(}|t|dz}t|t|dz k(rt j |ryt jdttyyyy)aeChecks if length of data is equal to length of column names. One set of trailing commas is allowed. self.index_col not False results in a ParserError previously when lengths do not match. Parameters ---------- columns: list of column names data: list of array-likes containing the data column-wise. rrGNzkLength of header or names does not match length of data. This leads to a loss of data with index_col=False.r) r^rrr%rr{rrrr)rrr empty_strempty_str_or_nas rQ_check_data_lengthzParserBase._check_data_lengths ~~#g,#d)";'R1Dd2h"nI($tBx.8O7|s4y1},1H MM:+-  AH";~rPcyrrOrrlr]s rQ_evaluate_usecolszParserBase._evaluate_usecolsrVrPcyrrOr`s rQrazParserBase._evaluate_usecolss rPcvt|r't|Dchc]\}}||s|c}}S|Scc}}w)a  Check whether or not the 'usecols' parameter is a callable. If so, enumerates the 'names' parameter and returns a set of indices for each entry in 'names' that evaluates to True. If not a callable, returns 'usecols'. )rr)rrlr]rrs rQrazParserBase._evaluate_usecolss7 G %.u%5G'!TAG GHs55cp|Dcgc] }||vs| }}t|dkDrtd||Scc}w)ai Validates that all usecols are present in a given list of names. If not, raise a ValueError that shows what usecols are missing. Parameters ---------- usecols : iterable of usecols The columns to validate are present in names. names : iterable of names The column names to check against. Returns ------- usecols : iterable of usecols The `usecols` parameter if the validation succeeds. Raises ------ ValueError : Columns were missing. Error message will list them. rz>Usecols do not match columns, columns expected but not found: )rrz)rrlr]rmissings rQ_validate_usecols_namesz"ParserBase._validate_usecols_namessO.&8%188 w >w-.0 O i( )DAq!S!""1%(1GAtqy'( ! t,  qzt$""4( )!- &GAt$$1B1B)B!% A &GY..rPc t|}|j}|j}tst fd}nOt t t djDcic]\}}t|r||n||c}}}||dus| td}n~|D cgc]} tg| || } } t| dk(r| d}ntj| }|jt|D]\} } |j!| | z |D cic]} | t#g|| }} |||fScc}}wcc} wcc} w)NcSrrOr srQz,ParserBase._get_empty_meta..HsUrPcyrrOrOrPrQroz,ParserBase._get_empty_meta..LsrPFrrrGr )r}r^rrrrr rrrr6r4rr5rsortrrur8)rrrer^rr dtype_dictrrrrrrnrcol_dicts ` rQ_get_empty_metazParserBase._get_empty_meta;sgw-NN && E"$]3Ju%E$CH;;=Q41az!}!Q6QJ  e!3 8K!!$EJUAEbt:d+;<D4yA~Q"..t4 NN !), #1 AE" #NU AIHfRz(';< <  gx''CR" s)E &E $E)rNone)rSequence[Hashable]rr<rrS)rrrrS)F)rrSequence[Hashable] | NonerrSrzUtuple[Sequence[Hashable], Sequence[Hashable] | None, Sequence[Hashable] | None, bool]r)rrwrsryrzSequence[Hashable] | MultiIndex)rzlist[Scalar] | Nonerz4tuple[Index | None, Sequence[Hashable] | MultiIndex])T)rrSrr4)FNN)rr=rrS)rz list[int]r]rwrset[int])rrSrztuple[ArrayLike, int])rr?rrArr?)r]r4rr'rz,tuple[Sequence[Hashable] | Index, DataFrame])r]rwrzMapping[Hashable, ArrayLike]rz7tuple[Sequence[Hashable], Mapping[Hashable, ArrayLike]])r]zSequence[Hashable] | Indexrz(Mapping[Hashable, ArrayLike] | DataFramerzKtuple[Sequence[Hashable] | Index, Mapping[Hashable, ArrayLike] | DataFrame])rrwrzSequence[ArrayLike]rrv)rlz'set[int] | Callable[[Hashable], object]r]rwrrz)rlset[str]r]rwrr{)rlz2Callable[[Hashable], object] | set[str] | set[int]r]rwrzset[str] | set[int])r]r>)rztuple[list | None, list, list])rezDtypeArg | None) rIrJrKrrR__annotations__rrrr propertyrrrrrrrrrrrrrr rUr^rarfrrrurOrPrQrDrDesd NJUX; z           # D;/D; D;   D; D;L 04 # -  )    JN4G = <  ,  6  " :2 :2x T T  T Tl B!$B!-?B! B! B!H JNn CGn n  n ` E EN    6    ! +  A    )7 U  * #"   : 8 "       (:    C"      > / /b #/ #/J 2( 2(rPrDFTrWrXractjur$tjdtt tjur  t dddfd }|S)NzThe argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.rz/Cannot use both 'date_parser' and 'date_format'c~t|tjr"|jdk(rt |dk(r|dS|S)NrGr)rrrndimr)args rQunpack_if_single_elementz6_make_date_converter..unpack_if_single_elements2 c2:: &388q=SX]q6M rPcNt|dk(r |djjdvr|dS tjurt j |}t tr j|n }tj5tjddtt|} tj ||d } dddtt&r#|j)}d |j*_|S|j.S tj5tjddt fd |D} tj | }dddtt0j0r t3d |S#t"t$f$r|cYcdddSwxYw#1swYxYw#t"t$f$r|}YnwxYw#1swYsxYw#t2$rtj5tjddtt j4t j | } tj |cdddcYS#t"t$f$r|cYcdddcYSwxYw#1swYYyxYwwxYw)NrGrMmignorez=.*parsing datetimes with mixed time zones will raise an error)categoryF)formatutcrWcacheTc3.K|] }|ywrrO)rrrs rQrz:_make_date_converter..converter..sMC237Mr)rz scalar parser)parser)rrekindrrwrconcat_date_colsrrrnrcatch_warningsfilterwarnings FutureWarningrtools to_datetimerzr2r(r=flags writeable_valuesdatetime Exceptionr) r date_colsstrsdate_fmtstr_objsrr pre_parsedrXrar`rWrs rQ converterz'_make_date_converter..converters y>Q 9Q<#5#5#:#:d#BQ<  #.. (++I6D(2;(E $; ((* $''S* ). $".. '!!)) F $&&-0oo'&* # >> !' *,,.,++ .!.  "-M9M"J,!&!2!2&"-",$fh&7&78#O44 ?#I.$#O# $ $$ $ $R' 2,!+,,,* *,,.*++ .!.  ")!8!800;*"J*$00<**' 2*))***** *s(G7F G/.+G#G 1.G/ F=1G<F==GG  G G#G  G##G,(G//J$ AJI4( J$4JJ J$JJJ J$ J$)rr;)rrwrrrrr2)r`rWrXrarrs```` @rQrxrxqsf #..(  + ')  #..([-DIJJ J*J*X rP delimiter escapechar quotechar"quoting doublequoteskipinitialspacelineterminatorrjinferr^r]skiprows skipfooternrowsrbrVrhrirfre thousandscommentdecimal.r_rYr`rl chunksizerencoding compressionskip_blank_linesstrict)encoding_errorsrmrgcfd}g} i} |} t|}t} |t|tr||fSt|tr)|D]"} t | st| t rt| t r | |vr| | } || rA|dk(rnddl}|| j}t|trK|jj|js%|jj|jr|tj|| | || <t!|| || \}}}||vrt#d||| |<| j%|| j'|%nt|t(r||j+D]i\}} ||vrt#d|dt!|| || |\}}}|| |<t-| d k(r|| | d<| j%|| j'|kt|t.rt1t/| |gd d }n|j'| | j3||s2t| D]$}|j5|| j7|&|| fS) Nc`ttxr|vxsttxr|vSr)rr})colspecr^rrs rQ_isindexz*_process_date_conversion.._isindex s59d+D90D {D ) Dg.D rPr#rrz New date column already in dict z Date column z already in dict) target_namerGF)axisr)r}rprrSr rrr#rer&types is_timestamp pyarrow_dtypeis_daterr7_try_convert_datesrzrrrrrr'r*extendrur) data_dictr parse_specr^rrrrYrgrnew_colsnew_datarorrrCrenew_namer old_namesrrs `` rQrYrYs HHJ7mGIZ D9'!!*d#! ,G!Z%?gs+y0H(1GG$"i/(%g.44E!%4--e.A.AB88++E,?,?@ &/JJy12& '",>w :,(#yy($'Gz%RSS%(")  +; ,> J %!+!1!1!3 ( Hg9$ <z9I!JKK 2$ ! AsI"%HX 7|q '*$ OOH %   Y ') (,)Y'Ih/;!%P " OOG i A MM!  OOA   h rPct|}g}|D]R}||vr|j|t|tr||vr|j||B|j|Tt d|Dr&t t djt|}n(dj|D cgc] } t| c} }|Dcgc]}||vstj||!} }|| d||n|i} || |fScc} wcc}w)Nc3<K|]}t|tywr)rr)rrs rQrz%_try_convert_dates..ss 2A:a  2srr) rprrrr{rr|rrrrr7) rrrrrcolsetcolnamesrrrto_parsenew_cols rQrrds\FH  ; OOA  3 AW$4 OOGAJ ' OOA   2 22SXXsH~6788X6SV672:MQa9n 9Q<(MHMhU 0CHUG Wh && 7Ms,D DDct|tr4||vr ||||fS|rttfSttfS||fS)a Get the NaN values for a given column. Parameters ---------- col : str The name of the column. na_values : array-like, dict The object listing the NaN values as strings. na_fvalues : array-like, dict The object listing the NaN values as floats. keep_default_na : bool If `na_values` is a dict, and the column is not mapped in the dictionary, whether to return the default NaN values or the empty set. Returns ------- nan_tuple : A length-two tuple composed of 1) na_values : the string NaN values for that column. 2) na_fvalues : the float NaN values for that column. )rrrrp)rrbrcrVs rQrr}sR.)T" ) S>:c?2 2$ce++5#%< *$$rPczd}|6tj|s!t|ttfs t ||S)z Check whether or not the 'parse_dates' parameter is a non-boolean scalar. Raises a ValueError if that is the case. zSOnly booleans, lists, and dictionaries are accepted for the 'parse_dates' parameter)rrrr}rr2)r_rjs rQrtrts> *  ;;{ # kD$< 0n rPc|duxr|duS)NFrOrs rQrrs d? /s%//rP)rWrSrXrSraz dict[Hashable, str] | str | None)rr rYrSr)rr rrZ)rVrSrx)n __future__r collectionsrrcsvrenumrrtypingrr r r r r rnumpyr pandas._libsrrpandas._libs.ops_libsopsr5pandas._libs.parsersrpandas._libs.tslibsrpandas.compat._optionalr pandas.errorsrrpandas.util._exceptionsrpandas.core.dtypes.astyperpandas.core.dtypes.commonrrrrrrrrrr r!r"pandas.core.dtypes.dtypesr#r$pandas.core.dtypes.missingr%pandasr&r'r(r)r* pandas.corer+pandas.core.arraysr,r-r.r/r0r1r2pandas.core.arrays.booleanr3pandas.core.indexes.apir4r5r6r7pandas.core.seriesr8pandas.core.toolsr9rpandas.io.commonr:collections.abcr;r<r=r>pandas._typingr?r@rArBrDrwrx QUOTE_MINIMALrRrLparser_defaultsrYrrrtrrOrPrQrs&"# "!.'>52    ,#4 &05I(I(Z 48 ddd2 dN(($((s  ( 4 (  (d( g(( T((!( T((t( 4!("D#($$%(& T'((4)(*+(,t-(.s/(253(4U5(67(83>>9(:4;(<t=(@A(BuC(DE(F4G(HI(J 2288^^O(d ..^^^DNR' '@J'2 %F*0rP