
    4i                       S SK Jr  S SKJr  S SKJr  S SKrS SKJr  S SKrS SK	J
r
JrJrJrJr  S SKrS SKrS SKJrJr  S SKJs  Jr  S SKJr  S S	KJr  S S
KJrJr  S SK J!r!  S SK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  S SK+J,r,  S SK-J.r.J/r/J0r0  S SK1J2r2  S SK3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:J;r;J<r<J=r=  S SK>J?r?  S SK@JArB  S SKCJDrD  \
(       a  S SKEJFrFJGrGJHrHJIrI  S SKJJKrKJLrLJMrMJNrNJOrOJPrP   " S S5      rQ   SI       SJS jjrR0 SS_S S_S!S"_S#\R                  _S$S_S%S_S&S_S'S(_S)S_S*S_S+S_S,S _S-S_S.S_S/S_S0S_S1S_0 S2S_S3S_SS_S4S_S5S_S6S7_S8S_SS_SS_S9S_S:S_S;S_S<S_S=S_S>S?_S@\QR                  R                  _SA\R                  _ErWSKSB jrXSLSC jrY      SMSD jrZSE r[\      SNSF j5       r\\      SOSG j5       r\      SPSH jr\g)Q    )annotations)defaultdictcopyN)Enum)TYPE_CHECKINGAnycastfinaloverload)libparsers)STR_NA_VALUES)import_optional_dependency)ParserErrorParserWarning)find_stack_level)is_bool_dtypeis_dict_likeis_float_dtype
is_integeris_integer_dtypeis_list_likeis_object_dtypeis_string_dtype)isna)	DataFrameDatetimeIndexStringDtype)
algorithms)ArrowExtensionArrayBaseMaskedArrayBooleanArrayFloatingArrayIntegerArray)Index
MultiIndexdefault_indexensure_index_from_sequences)Series)	datetimes)is_potential_multi_index)CallableIterableMappingSequence)	ArrayLikeDtypeArgHashable	HashableTScalar	SequenceTc                  (   \ rS rSr%  " S S\5      rS\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   SS jrSS jr\	S S j5       r
\	 S!     S"S jj5       r\	 S#     S$S jj5       r\	 S#   S%S jj5       r\	S 5       r\	S&S j5       r\	      S'S j5       r\	 S(   S)S jj5       r\      S*S j5       r\      S+S j5       r\	      S,S j5       r\	      S-S j5       r\	S.S j5       r\	S/S j5       r\	 S#     S0S jj5       rSrg)1
ParserBaseV   c                       \ rS rSrSrSrSrSrg)ParserBase.BadLineHandleMethodW   r          N)__name__
__module____qualname____firstlineno__ERRORWARNSKIP__static_attributes__r?       _/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/io/parsers/base_parser.pyBadLineHandleMethodr;   W   s    rH   rJ   bool_implicit_index_first_chunkkeep_default_nadayfirstcache_datesz
str | Noneusecols_dtypec                   SU l         UR                  S5      U l        S U l        UR                  SS 5      U l        [        5       U l        S U l        S U l        UR                  SS5      nUb  [        R                  " U5      (       a  [        U5      nO [        U[        5      (       d  [        S5      eX l        UR                  S[        R"                  5      U l        UR                  SS 5      U l        UR                  SS5      U l        UR                  S	5      U l        UR                  S
5      U l        UR                  SS5      U l        UR                  SS5      U l        [3        UR                  SS 5      5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  SS5      U l        UR                  S5      U l         [C        U R@                  SS9(       a  UR                  S5      (       a  [E        S5      eUR                  S5      (       a  [E        S5      eU R                  b  [G        U R                  5      (       a  U R                  /U l        Of[C        U R                  SS9(       a(  [I        [K        [F        U R                  5      5      (       d  [E        S5      e[        U R                  5      U l        SU l&        [O        US   5      u  U l(        U l)        UR                  SU RT                  RV                  5      U l,        g )NFnames	index_colparse_dateszDOnly booleans and lists are accepted for the 'parse_dates' parameterdate_parserdate_formatrO   	na_values
na_fvalues	na_filterrN   Tdtype
convertersdtype_backendtrue_valuesfalse_valuesrP   header)
allow_setsusecolsz;cannot specify usecols when specifying a multi-index headerz9cannot specify names when specifying a multi-index headerz]index_col must only contain integers of column positions when specifying a multi-index headeron_bad_lines)-rL   getrS   
orig_namesrT   setunnamed_colsindex_names	col_namespopr   is_boolrK   
isinstancelist	TypeErrorrU   
no_defaultrV   rW   rO   rX   rY   rZ   rN   r   r[   r\   r]   r^   r_   rP   r`   r   
ValueErrorr   allmaprM   _validate_usecols_argrb   rQ   rJ   rD   rc   )selfkwdsrU   s      rI   __init__ParserBase.__init__c   s   $XXg&
59+t4!$6:48hh}e4#++k":":{+KK..V  )488M3>>B88M48U3+.((<0+u5#xx(94@$((7D12
((<0!XXo688M2 HH^488M48 hhx(6xx	"" Q  xx   O 
 ~~)dnn--&*nn%5DN EBC
DNN;<<$? 
 &*$..%9DN +@i+Q(d( !HH^T5M5M5S5STrH   c                    g Nr?   )rt   s    rI   closeParserBase.close   s    rH   c                .   [        U R                  [        5      (       a  U R                  $ U R                  b  U R                  U   nOS nU R                  c  UOU R                  U   nX0R                  ;   =(       d    US L=(       a    X R                  ;   $ ry   )rl   rU   rK   rh   rT   )rt   inamejs       rI   _should_parse_datesParserBase._should_parse_dates   s    d&&--###+''*^^+1BA))) D =T-=-=%=rH   c                  ^^^ [        U5      S:  a	  US   USU4$ U R                  nUc  / n[        U[        [        [
        R                  45      (       d  U/n[        U5      mUR                  S5      nU R                  X R                  5      u  n  n[        US   5      m[        U4S jUSS  5       5      (       d  [        S5      eUU4S jm[        [        U4S	 jU 5       S
S065      nUR                  5       n[        U5       H  nUR                  X5        M     U(       a7  U V	s/ s H)  n	XS      b  XS      U R                   ;  a  XS      OSPM+     n
n	OS/[        U5      -  n
SnXrX4$ s  sn	f )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

r>   r   Nc              3  @   >#    U  H  n[        U5      T:H  v   M     g 7fry   )len).0header_iterfield_counts     rI   	<genexpr><ParserBase._extract_multi_indexer_columns.<locals>.<genexpr>   s     Qj{3{#{2js   r=   z1Header rows must have an equal number of columns.c                D   >^  [        U U4S j[        T5       5       5      $ )Nc              3  <   >#    U  H  oT;  d  M
  TU   v   M     g 7fry   r?   )r   r}   rsics     rI   r   MParserBase._extract_multi_indexer_columns.<locals>.extract.<locals>.<genexpr>   s     J'9!c\1'9s   	)tuplerange)r   r   r   s   `rI   extract:ParserBase._extract_multi_indexer_columns.<locals>.extract   s    Ju['9JJJrH   c              3  4   >#    U  H  nT" U5      v   M     g 7fry   r?   )r   r   r   s     rI   r   r      s     8AWQZZs   strictT)r   rT   rl   rm   r   npndarrayrf   rj   _clean_index_namesrq   r   zipr   sortedinsertrg   )rt   r`   rh   passed_namesic_columnsrS   	single_icr   ri   r   r   r   s              @@@rI   _extract_multi_indexer_columns)ParserBase._extract_multi_indexer_columns   s   . v;?!9k4==
 ^^:B"tUBJJ788B"g jjn 33KPQ &)n QfQRjQQQQRR	K s88FFGILL. $ 
  	  A !uX)qAxt?P?P/P Q%  	  I V,I9::s   .0E6Nc                f    [        U5      (       a   [        SU5      n[        R                  " X2S9$ U$ )NzSequence[tuple[Hashable, ...]])rS   )r,   r
   r'   from_tuples)rt   r   ri   
columns_mis       rI   _maybe_make_multi_index_columns*ParserBase._maybe_make_multi_index_columns  s2     $G,,>HJ))*FFrH   c                   [        U R                  [        5      (       Ga  [        U R                  5      (       a  / n/ nU R                   HK  n[        U[        5      (       a  [        SU S35      eUR                  U5        UR                  X   5        MM     [        USS9 H8  nUR                  U5        U R                  (       a  M'  UR                  U5        M:     U R                  U5      nU(       a+  [        U5      [        U5      -
  n	UR                  US U	 5      nOS nU R                  X R                  5      nX4$ )NzIndex z invalidT)reverse)rl   rT   rm   r   strrp   appendr   rj   rL   
_agg_index	set_namesr   ri   )
rt   alldatar   indexnamerow	to_removeindexesidxr}   indexcoffsets
             rI   _make_indexParserBase._make_index  s   
 dnnd++DNN0C0CIG~~c3''$vcU(%;<<  %w|,	 & It4A+++KKN 5 OOG,E l+c'l:Xg(>?E 66wO~rH   c                   [        U[        5      (       d  U$ 0 nU R                  c   eUR                  5        H<  u  p4[        U[        5      (       a  X0R                  ;  a  U R                  U   nXBU'   M>     [        U[
        5      (       aS  [        U R                  5      [        UR                  5       5      -
  nUR                  U Vs0 s H  o3X   _M	     sn5        U$ s  snf )zconverts col numbers to names)	rl   dictre   itemsintr   rf   keysupdate)rt   mappingcleancolvremaining_colss         rI   _clean_mappingParserBase._clean_mapping1  s     '4((N***mmoFC#s##??(Booc*#J & g{++ 1C

4EENLL~F~w|+~FG Gs   C#c           	     t   / nU R                  U R                  5      nU R                  U R                  5      nU R                  b  U R                  nSnO[        R
                  " S /5      nSn[        [        XUS95       GH
  u  nu  pU R                  U5      (       aG  [        UU R                  b  U R                  U   OS U R                  U R                  U R                  S9nU R                  (       a  U R                  n
U R                  nO[!        5       n
[!        5       n[#        U R                  [$        5      (       ab  U R                  c   eU R                  U   nUb.  ['        XR                  U R                  U R(                  5      u  pO[!        5       [!        5       pS nSnU R                  bi  [#        U[$        5      (       a  UR+                  U R                  U   S 5      n[#        U[$        5      (       a   UR+                  U R                  U   5      S LnU=(       a    [-        U5      =(       d    U(       + nU R/                  XU-  US L U5      u  nnUb  [1        XUSS9nO[3        U/U	/5      nUR5                  U5        GM     [7        U5      S:X  a  US   $ [8        R:                  " U5      $ )NTF)r   r   rO   rP   rW   )r~   r[   r   r=   r   )r   r\   r[   rh   	itertoolscycle	enumerater   r   date_converterrO   rP   rW   rZ   rX   rY   rf   rl   r   get_na_valuesrN   rd   r   _infer_typesr&   r)   r   r   r'   from_arrays)rt   r   arraysr\   clean_dtypesrS   
zip_strictr}   arrr~   col_na_valuescol_na_fvaluescol_name	cast_typeindex_convertertry_num_boolr   r   s                     rI   r   ParserBase._agg_indexC  sn   ((9
**4::6'"..EJOOTF+EJ'E(LMNA{''**$/3/?/?/K((+QU!]] $ 0 0 $ 0 0 ~~ $!% #!$$..$//''333++A.'4A ..$//4CWCW51M> 58E35>I#O+lD11 , 0 01A1A!1Dd KIj$//&0nnT5E5Ea5H&IQU&UO 9y9MoL &&^3Y$5FFC $C)%H13%$@MM#a Nd v;!!9))&11rH   c                  ^^^ [        5       nU R                  S:X  a  [        U R                  5      mO/[	        U R                  5      (       d  U R                  S;  a  TmOSmSUUU4S jjn[        U R                  [        5      (       aB  [        U R                  T5        U R                   H  nUR                  U" U5      5        M     U$ U R                  (       ay  [        U R                  [        5      (       a,  U R                   H  nUR                  U" U5      5        M     U$ U R                  b!  UR                  U" U R                  5      5        U$ )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)emptyNNc                   > Tb  [        U 5      (       a  TU    n [        U 5      (       d  TTR                  U 5         n U $ ry   )r   r   )xcol_indicesrS   rb   s    rI   _set5ParserBase._set_noconvert_dtype_columns.<locals>._set  s:    "z!}}AJa==A/HrH   )returnr   )rf   rQ   r   rb   callablerl   rU   rm   validate_parse_dates_presenceaddrT   )rt   r   rS   noconvert_columnsr   valkrb   s    ``    @rI   _set_noconvert_dtype_columns'ParserBase._set_noconvert_dtype_columns  s   ,  E* T\\*Gdll##t'9'9'P "G G	 	 d&&--)$*:*:EB''!%%d3i0 ( !  $..$//A%))$q'2 (
 !  +!%%d4>>&:;  rH   c           	     
   Sn[        UR                  R                  [        R                  [        R
                  45      (       a  [        R                  " U Vs/ s H  n[        U[        5      (       a  M  UPM     sn5      n[        R                  " X5      nUR                  SSS9R                  5       nUS:  aT  [        U5      (       a  UR                  [        R                  5      n[        R                  " X[        R                   5        X4$ U R"                  nU=(       a    U[$        R&                  Ln	U(       Ga7  [)        UR                  5      (       Ga   [$        R*                  " UUSU	S9u  pU	(       a  Uc-  [        R,                  " U
R.                  [        R
                  S9nUR1                  5       (       a8  [3        [        R4                  " UR.                  [        R6                  S9U5      n
OS[        U
5      (       a  [3        X5      n
O7[9        U
5      (       a  [;        X5      n
O[=        U
5      (       a  [?        X5      n
UR                  5       nOP[A        U
5      R                  5       nO6Un
UR                  [        RJ                  :X  a  [F        RH                  " X5      nU
R                  [        RJ                  :X  Ga:  U(       Ga2  [M        U
5      S:X  d  [        U
S   [N        5      (       Gd
  [P        RR                  " [        RT                  " U5      U RV                  U RX                  U	S9u  pU
R                  [        R
                  :X  aC  U	(       a<  Uc-  [        R,                  " U
R.                  [        R
                  S9n[;        X5      n
OhU
R                  [        RJ                  :X  aJ  U	(       aC  [$        RZ                  " U
S	S
9(       d)  []        5       nUR_                  5       nURa                  XS9n
US:X  a  [c        S5      n[        U
[        Rd                  5      (       a  [g        UR                  U
S	S95      n
X4$ [        U
[h        5      (       az  U
Rj                  R1                  5       (       a*  [g        UR                  S/[M        U
5      -  5      5      n
X4$ [g        UR                  U
Rl                  U
Rj                  S95      n
 X4$ [g        UR                  U
Ro                  5       S	S95      n
X4$ s  snf ! [B        [D        4 a    [F        RH                  " X5      nUn
 GNf = f)aC  
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
r   uint8Fr   )convert_to_masked_nullableNr[   )r^   r_   r   Tskipnapyarrow)from_pandas)mask)8
issubclassr[   typer   numberbool_arrayrl   r   r    isinastypesumr   float64putmasknanr]   r   ro   r   maybe_convert_numericzerosshaperq   r%   onesint64r   r#   r   r$   r   rp   rn   r   sanitize_objectsobject_r   r   libopsmaybe_convert_boolasarrayr^   r_   is_datetime_arrayr   construct_array_type_from_sequencer   r   r!   r"   _mask_datato_numpy)rt   valuesrX   no_dtype_specifiedr   na_countr   r   r]   non_default_dtype_backendresultresult_mask	bool_maskr[   clspas                   rI   r   ParserBase._infer_types  s   ( fll''"))RXX)>??!W#*SRUBV#!WXI??65D{{7{7;;=H!|#F++#]]2::6F

60##**F=#F 	"
 OFLL992&)&?&?/H	'# -"*&(hhv||288&L"((!-GGK$5$5RXXF" *&11!-f!B&v..!-f!B'//!.v!C*0H#F|//1HF||rzz)"33FF LLBJJ&V!F1Is)C)C & 9 9

6" ,,!..+D	!F ||rxx',E$ "RXX FI%f8+0I,,VDA'ME446C ///DFI%+I6B&"**--,RXXf$X-OP  FO44<<##%%04&3v;:N1OPF  1FLLAF 	 -HHV__.DHA y "X0 	*   #33FF	 s   T7T T (U ?U c                    g ry   r?   rt   rS   datas      rI   _do_date_conversionsParserBase._do_date_conversions5  s    
 rH   c                    g ry   r?   r  s      rI   r  r  <  s    
 (+rH   c           	        [        U R                  [        5      (       d  U$ U R                   H  n[        U[        5      (       a	  X2;  a  X   n[        U R                  [        5      (       a  X0R                  ;   d.  [        U R
                  [        5      (       a  X0R
                  ;   a  M  [        X#   UU R                  U R                  U R                  S9nXBU'   M     U$ )Nr   )
rl   rU   rm   r   rT   rh   r   rO   rP   rW   )rt   rS   r  colspecr  s        rI   r  r  C  s     $**D11K''G'3''G,?.4>>400W5N4++T22wBRBR7R# ,, ,,F #M! ($ rH   c                x   U R                   (       d  [        U5      [        U5      :w  a  U(       a  [        US   5      =(       a    US   S:H  nU[        US   5      -  n[        U5      [        U5      S-
  :X  a  [        R
                  " U5      (       a  g[        R                  " S[        [        5       S9  gggg)a-  Checks 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.
r    r=   NzkLength of header or names does not match length of data. This leads to a loss of data with index_col=False.)
stacklevel)
rT   r   r   r   r   rq   warningswarnr   r   )rt   r   r  	empty_strempty_str_or_nas        rI   _check_data_lengthParserBase._check_data_length_  s      ~~#g,#d)";'R1Dd2h"nI ($tBx.8O7|s4y1},1H1HMM:+-	 AH";~rH   c                |    U Vs/ s H  o3U;  d  M
  UPM     nn[        U5      S:  a  [        SU 35      eU$ s  snf )a  
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.
r   z>Usecols do not match columns, columns expected but not found: )r   rp   )rt   rb   rS   cmissings        rI   _validate_usecols_names"ParserBase._validate_usecols_names}  sN    . &8g%1g8w<!P) 
  9s   	99c                N   [        U5      (       d  S X4$ [        U5      nU(       d  S /[        U5      -  X4$ [        U5      n/ n[        U5      n[        U5       H  u  pV[	        U[
        5      (       aD  UR                  U5        [        U5       H"  u  pxX:X  d  M  XrU'   UR                  U5          MZ     M^  X6   nUR                  U5        UR                  U5        M     [        U5       H1  u  pX[	        U[
        5      (       d  M  XR                  ;   d  M-  S XE'   M3     XAU4$ ry   )	is_index_colrm   r   r   rl   r   r   removerg   )	rt   r   rT   cp_colsrh   r}   r)  r   r~   s	            rI   r   ParserBase._clean_index_names  s   I&&++w- 6C	N*G>>w-.0 O	i(DA!S!!""1%(1GAy'(!t,	  2 zt$""4( ) !-GA$$$1B1B)B!% . Y..rH   c           
       ^ [        U5      nU R                  nU R                  n[        T5      (       d  [	        U4S j5      nOU[        [        T5      m[	        S TR                  5        VVs0 s H  u  pg[        U5      (       a  X   OUU_M     snn5      nUb  USL d  Uc  [        S5      nOU V	s/ s H  n	[        / XU	   S9PM     n
n	[        U
5      S:X  a  U
S   nO[        R                  " U
5      nUR                  5         [        U5       H  u  pUR!                  X-
  5        M     U Vs0 s H  o[#        / X]   S9_M     nnXU4$ s  snnf s  sn	f s  snf )Nc                    > T $ ry   r?   r   s   rI   <lambda>,ParserBase._get_empty_meta.<locals>.<lambda>  s    UrH   c                     g ry   r?   r?   rH   rI   r4  r5    s    rH   Fr   )r~   r[   r=   r   )rm   rT   rh   r   r   r
   r   r   r   r(   r&   r   r'   r   sortr   rj   r*   )rt   r   r[   rT   rh   
dtype_dictr   r   r   r~   r  r}   nr   col_dicts     `            rI   _get_empty_metaParserBase._get_empty_meta  sa    w-NN	&& E""$]3Ju%E$CH;;=Q=41z!}}!Q6=QJ e!38K!!$E JUITbtd+;<   4yA~Q"..t4NN!),AE" - NU
MTfRz';<<W 	 
 x''C R"
s   /#E5E4E)rM   rL   rP   ri   r\   rW   rV   rO   r[   r]   r_   r`   rT   rh   rN   rZ   rY   rX   rS   rc   re   rU   r^   rg   rb   rQ   )r   None)r}   r   r   rK   )F)rh   Sequence[Hashable] | Noner   rK   r   zUtuple[Sequence[Hashable], Sequence[Hashable] | None, Sequence[Hashable] | None, bool]ry   )r   r6   ri   r>  r   zSequenceT | MultiIndex)r   zlist[Scalar] | Noner   z4tuple[Index | None, Sequence[Hashable] | MultiIndex])r   r&   )r   z	list[int]rS   Sequence[Hashable]r   set[int])T)r   rK   r   ztuple[ArrayLike, int])rS   r&   r  r   r   r   )rS   r?  r  Mapping[Hashable, ArrayLike]r   rA  )rS   zSequence[Hashable] | Indexr  (Mapping[Hashable, ArrayLike] | DataFramer   rB  )r   r?  r  zSequence[ArrayLike]r   r=  )rb   r6   rS   r0   r   r6   )r   ztuple[list | None, list, list])r   zSequence[HashableT]r[   zDtypeArg | Noner   z6tuple[Index, list[HashableT], dict[HashableT, Series]])r@   rA   rB   rC   r   rJ   __annotations__rv   rz   r   r   r   r   r   r   r   r   r   r   r  r&  r+  r   r;  rG   r?   rH   rI   r8   r8   V   s   d 
 NFUP   
 #	D; /D; 	D;

D; D;L  04		 -	 
 		 	 DH.A	= @  " @2 @2D 7!$7!-?7!	7! 7!r JNr CGr 	r  r h   
	  +!+ ++ 
&	+ + ) 7 
2	 6 # " 
	 :  > #/ #/J EI4(*4(3B4(	?4( 4(rH   r8   FTrO   rP   rW   c                   U R                   R                  S;   a  U $ [        U[        5      (       a  UR	                  U5      OUn[
        R                  " [        R                  " U 5      5      n [        R                  " UUSUUS9n[        U[        5      (       a#  UR                  5       nSUR                  l        U$ UR"                  $ ! [        [        4 a    Us $ f = f)NMmF)formatutcrO   cacheT)r[   kindrl   r   rd   r   ensure_string_arrayr   r  toolsto_datetimerp   rn   r   r  flags	writeable_values)	date_colr   rO   rP   rW   date_fmtstr_objsr  r   s	            rI   r   r     s     ~~d"'1+t'D'D{s#+H&&rzz(';<H""
 &-((oo"		
>> 	"  s   0C C! C!	delimiter
escapechar	quotechar"quotingdoublequoteskipinitialspacelineterminatorr`   inferrT   rS   skiprows
skipfooternrowsrX   rN   r^   r_   r\   r[   	thousandscommentdecimal.rU   rb   	chunksizeencodingcompressionskip_blank_linesencoding_errorsr   rc   r]   c                    [        U[        5      (       a8  X;   a  X   X    4$ U(       a  [        [        5       4$ [        5       [        5       4$ X4$ )aX  
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.
)rl   r   r   rf   )r   rX   rY   rN   s       rI   r   r   D  sM    . )T"">:?22$ce++5#%<$$rH   c                     U S L=(       a    U SL$ )NFr?   )r   s    rI   r.  r.  g  s    d?/s%//rH   c                   [        U [        5      (       d
  [        5       $ [        5       n[        5       nU  Hn  n[        U[        5      (       a+  XA;  a  UR	                  U5        M0  UR	                  U5        MC  XA;   a  UR	                  U5        M[  UR	                  X   5        Mp     U(       a)  SR                  [        U5      5      n[        SU S35      eU$ )az  
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 list
is given as specification.

Raises
------
ValueError
    If column to parse_date is not in dataframe.

z, z+Missing column provided to 'parse_dates': '')rl   rm   rf   r   r   joinr   rp   )rU   r   r*  unique_colsr   missing_colss         rI   r   r   k  s    2 k4((ueG%Kc3!C $^OOC OOGL)  yy1F|nTUVWWrH   c                    SnU bc  [        U 5      (       a  U S4$ [        U 5      (       d  [        U5      e[        R                  " U SS9nUS;  a  [        U5      e[        U 5      n X4$ U S4$ )a  
Validate the 'usecols' parameter.

Checks whether or not the 'usecols' parameter contains all integers
(column selection by index), strings (column by name) or is a callable.
Raises a ValueError if that is not the case.

Parameters
----------
usecols : list-like, callable, or None
    List of columns to use when parsing or a callable that can be used
    to filter a list of table columns.

Returns
-------
usecols_tuple : tuple
    A tuple of (verified_usecols, usecols_dtype).

    'verified_usecols' is either a set if an array-like is passed in or
    'usecols' if a callable or None is passed in.

    'usecols_dtype` is the inferred dtype of 'usecols' if an array-like
    is passed in or None if a callable or None is passed in.
z['usecols' must either be list-like of all strings, all unicode, all integers or a callable.NFr   )r   r   string)r   r   rp   r   infer_dtyperf   )rb   msgrQ   s      rI   rs   rs     s    4	&  GD= G$$ S/!> >>S/!g,%%D=rH   c                    g ry   r?   rb   rS   s     rI   evaluate_callable_usecolsru    s     rH   c                    g ry   r?   rt  s     rI   ru  ru    s     rH   c                    [        U 5      (       a/  [        U5       VVs1 s H  u  p#U " U5      (       d  M  UiM     snn$ U $ s  snnf )z
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'.
)r   r   )rb   rS   r}   r~   s       rI   ru  ru    s>     !*5!1C!1gaWT]!1CCN Ds
   AA)FTN)r   r3   rO   rK   rP   rK   rW   z dict[Hashable, str] | str | None)rN   rK   )r   rK   )rU   zbool | listr   r?  r   rf   )rb   zCallable[[Hashable], object]rS   Iterable[Hashable]r   r@  )rb   r6   rS   rx  r   r6   )rb   z(Callable[[Hashable], object] | SequenceTrS   rx  r   zSequenceT | set[int])]
__future__r   collectionsr   r   csvenumr   r   typingr   r	   r
   r   r   r"  numpyr   pandas._libsr   r   pandas._libs.ops_libsopsr  pandas._libs.parsersr   pandas.compat._optionalr   pandas.errorsr   r   pandas.util._exceptionsr   pandas.core.dtypes.commonr   r   r   r   r   r   r   r   pandas.core.dtypes.missingr   pandasr   r   r   pandas.corer    pandas.core.arraysr!   r"   r#   r$   r%   pandas.core.indexes.apir&   r'   r(   r)   pandas.core.seriesr*   pandas.core.toolsr+   rK  pandas.io.commonr,   collections.abcr-   r.   r/   r0   pandas._typingr1   r2   r3   r4   r5   r6   r8   r   QUOTE_MINIMALrJ   rD   ro   parser_defaultsr   r.  r   rs   ru  r?   rH   rI   <module>r     sG   " #  
      " ! . > 5	 	 	 , 
 #   & 0 5  b
( b
(P 48	  	
 2B%%$% % s  	%
 4% % d% g% % T% % !% T% % t%  4!%" D#%$ $%%& T'%( 4)%* +%, t-%. s/%2 53%4 5%6 47%8 t9%< =%> ?%@ 4A%B C%D xE%F J2288G%H S^^I%P %F0++'9++\/d 
)  
 
1 

5 rH   