
    Mhw7                    @   S SK Jr  S SKJr  S SKJr  S SKrS SKrS SK	J
r
Jr  S SKJr  S SK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  S SKJrJr  S SKJrJ r J!r!  \(       a  S SK"J#r#J$r$J%r%  S SK&J'r'J(r(J)r)J*r*  S SK+J,r,J-r-   " S S\5      r.SS jr/    SS jr0g)    )annotations)defaultdict)TYPE_CHECKINGN)libparsers)import_optional_dependency)DtypeWarning)find_stack_level)pandas_dtype)concat_compatunion_categoricals)CategoricalDtype)ensure_index_from_sequences)dedup_namesis_potential_multi_index)
ParserBaseParserErroris_index_col)HashableMappingSequence)	ArrayLikeDtypeArgDtypeObjReadCsvBuffer)Index
MultiIndexc                     ^  \ rS rSr% S\S'   S\S'   SU 4S jjrSS jrSS jr S   SS	 jjrSS
 jr	SSS jjr
SrU =r$ )CParserWrapper8   bool
low_memoryzparsers.TextReader_readerc                  > [         T	U ]  U5        X l        UR                  5       nUR	                  SS5      U l        U R                  SLUS'   U R                  US'   U R                  R                  US'   S H  nUR	                  US 5        M     [        UR                  SS 5      5      US'   SU;  d  US   [        R                  L a  S	US'   US   S
:X  a  [        S
5        [        R                   " U40 UD6U l        U R"                  R$                  U l        U R&                  S L nU R"                  R(                  c  S U l        OEU R+                  U R"                  R(                  U R,                  U5      u  U l        U l        U l        nU R&                  c-  [1        [3        U R"                  R4                  5      5      U l        U R&                  S S  U l        U R                  (       Ga$  U R9                  U R                  U R6                  5      nU R6                  c   eU R:                  S:X  aD  [=        U5      R?                  U R6                  5      (       d  U RA                  XPR6                  5        [C        U R&                  5      [C        U5      :  a;  [E        U R&                  5       VVs/ s H  u  pgXe;   d  Xu;   d  M  UPM     snnU l        [C        U R&                  5      [C        U5      :  a  U RA                  UU R&                  5        U RG                  U R&                  5        U RI                  5         U R&                  U l        U RJ                  (       d  U R"                  RL                  S:X  ah  [O        U R                  5      (       aN  SU l(        U RS                  U R&                  U R                  5      u  nU l        U l        U R,                  c  Xl        U R"                  R(                  c4  U(       d-  U R,                  c   eS /[C        U R,                  5      -  U l        U R"                  RL                  S:  U l*        g s  snnf )Nr"   Fallow_leading_colsusecolson_bad_lines)storage_optionsencoding
memory_mapcompressiondtypedtype_backendnumpypyarrowstringr   T)+super__init__kwdscopypopr"   	index_colr&   r'   valueensure_dtype_objsgetr   
no_defaultr   r   
TextReaderr#   unnamed_colsnamesheader_extract_multi_indexer_columnsindex_names	col_nameslistrangetable_width
orig_names_evaluate_usecolsusecols_dtypesetissubset_validate_usecols_nameslen	enumerate_validate_parse_dates_presence_set_noconvert_columns_has_complex_date_colleading_colsr   _name_processed_clean_index_names_implicit_index)
selfsrcr3   keypassed_namesr&   inr@   	__class__s
            T/var/www/html/env/lib/python3.13/site-packages/pandas/io/parsers/c_parser_wrapper.pyr2   CParserWrapper.__init__<   s   	yy{((<7
 NN%' 	!"
 ,,Y  $0066^
C HHS$
 *$((7D*ABW$&$*?3>>*Q$+D! I-&y1))#66 LL55 zzT)<<&DJ 33##  
  ::eDLL$<$<=>DJ **Q-<<<,,T\\4??KG ??...!!X-c'l6K6K7 7 ,,WooF 4::W-
 !*$** 5 !6  5
 4::W-,,JJ 	++DJJ7##% **))||((A-,3 3 (,$ ++JJNN	JN ##+'2$||""*<''333$(6C0@0@,A#A #||881<_s   1QQc                Z     U R                   R                  5         g ! [         a     g f = fN)r#   close
ValueError)rT   s    r[   r_   CParserWrapper.close   s)    	LL  		s    
**c                F   U R                   c   e[        U R                   5       VVs0 s H  u  pX!_M	     nnnU R                   Vs/ s H  o#U   PM	     nnU R                  UU R                  5      nU H  nU R                  R                  U5        M      gs  snnf s  snf )z
Set the columns that should not undergo dtype conversions.

Currently, any column that is involved with date parsing will not
undergo such conversions.
N)rE   rL   r=   _set_noconvert_dtype_columnsr#   set_noconvert)rT   rX   x
names_dictcol_indicesnoconvert_columnscols          r[   rN   %CParserWrapper._set_noconvert_columns   s     *** (1'AB'Atqad'A
B.2jj9j!}j9 ==JJ
 %CLL&&s+ % C9s   BBc                    U R                   (       a'  U R                  R                  U5      n[        U5      nOU R                  R	                  U5      n SU l        U R&                  nU R                  R(                  (       Ga  U R*                  (       a  [-        S5      e/ n
U R                  (       af  U R                  R(                  [/        U R                  5      :w  a9  [1        S[/        U R                  5       SU R                  R(                   S35      e[3        U R                  R(                  5       Ha  nU R                  c  UR5                  U5      nOUR5                  U R                  U   5      nU R7                  XSS9nU
R9                  U5        Mc     [;        U
5      nU R                  b  U R!                  U5      n[        U[        X@R                  5      5      n[=        UR#                  5       5      n[?        XM5       VVV	s0 s H
  u  nu  pX_M     nnnn	U RA                  XC5      u  pU R                  XR                  5      nO[=        UR#                  5       5      nU R                  c   e[C        U R                  5      n[        U[        X@R                  5      5      nU R                  b  U R!                  U5      nU Vs/ s H  nUS	   PM
     nnU R                  c  U RE                  UU5        [?        XM5       VVV	s0 s H
  u  nu  pX_M     nnnn	U RA                  XC5      u  pOU RG                  UUU5      u  p^X^U4$ ! [
         a    U R                  (       a  SU l        [        U R                  [        U R                  U R                  5      5      nU R                  UU R                  S9u  pVnU R                  X`R                  5      nU R                  b  U R!                  U5      nUR#                  5        VV	s0 s H  u  pX;   d  M  X_M     Os  sn	nf nnn	XVU4s $ U R%                  5         e f = fs  sn	nnf s  snf s  sn	nnf )
NF)r,   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_dates   )$r"   r#   read_low_memory_concatenate_chunksreadStopIteration_first_chunkr   rE   r   r6   _get_empty_metar,   _maybe_make_multi_index_columnsrA   r&   _filter_usecolsitemsr_   r=   rP   rO   NotImplementedErrorrK   r   rC   r5   _maybe_parse_datesappendr   sortedzip_do_date_conversionsrB   _check_data_length_make_index)rT   nrowschunksdatar=   indexcolumnscol_dictkvarraysrX   values	data_tupscolumn_names	date_datare   alldatas                     r[   rp   CParserWrapper.read   s   	55e<*62 ||((/4 " 

<<$$$)))*LMM F~~$,,";";s4>>?R"R!B4>>*++C||001B  4<<445>>)!XXa[F!XXdnnQ&78F00D0Qf% 6 07E||',,U3'?~~'VWE tzz|,I*-e*?@*?YQAD*?D@&*&?&?&L#L  ??nnL tzz|,I
 ??...)E'?~~'VWE||',,U3 &//YqtYG/||#''w7*-e*?@*?YQAD*?D@#88EE"&"2"29gu"MEI--  	  $)!#OO,T__dnnM ,0+?+?** ,@ ,( >>wW<<+"227;G-5^^-=N-=TQDAD-=NNx// 

-	| A0 0 As;   7M M Q	QQB?QP%P%$Q4Qc                    U R                  U R                  U5      nUbC  [        U5      [        U5      :w  a+  [        U5       VVs/ s H  u  p4X2;   d  XB;   d  M  UPM     nnnU$ s  snnf r^   )rF   r&   rK   rL   )rT   r=   r&   rX   names        r[   ru   CParserWrapper._filter_usecolsQ  se    ((u=3u:W#=$-e$4$4$4   s   A%A%c                    U(       aB  U R                  U5      (       a,  U R                  UU R                  b  U R                  U   OS S9nU$ )N)ri   )_should_parse_dates
_date_convr@   )rT   r   r   rl   s       r[   rx   !CParserWrapper._maybe_parse_datesZ  sN    t77>>__/3/?/?/KD$$U+QU % F     )rr   rS   rQ   r#   rA   r6   r@   r3   r"   r=   rE   r<   )rU   zReadCsvBuffer[str]returnNone)r   r   r^   )r   z
int | Noner   z_tuple[Index | MultiIndex | None, Sequence[Hashable] | MultiIndex, Mapping[Hashable, ArrayLike]])r=   Sequence[Hashable]r   r   )T)r   intrl   r!   )__name__
__module____qualname____firstlineno____annotations__r2   r_   rN   rp   ru   rx   __static_attributes____classcell__)rZ   s   @r[   r   r   8   sO    D=L,. !q.q.
q.f r   r   c                   [        U S   R                  5       5      n/ n0 nU H  nU  Vs/ s H  oUR                  U5      PM     nnU Vs1 s H  owR                  iM     nnU V	s1 s H  n	[	        U	[
        5      (       a  M  U	iM     n
n	UR                  5       n[	        U[
        5      (       a  [        USS9X4'   M  [        U5      X4'   [        U
5      S:  d  M  X4   R                  [        R                  " [        5      :X  d  M  UR                  [        U5      5        GM     U(       aI  SR                  U5      nSR                  SU S3/5      n[        R                  " U[         [#        5       S	9  U$ s  snf s  snf s  sn	f )
z
Concatenate chunks of data read with low_memory=True.

The tricky part is handling Categoricals, where different chunks
may have different inferred categories.
r   F)sort_categoriesrm   , z	Columns (zK) have mixed types. Specify dtype option on import or set low_memory=False.)
stacklevel)rB   keysr5   r,   
isinstancer   r   r   rK   npobjectry   strjoinwarningswarnr	   r
   )r   r=   warning_columnsresultr   chunkarrsadtypesre   non_cat_dtypesr,   warning_nameswarning_messages                 r[   ro   ro   c  sD    !"EOF-34VE		$V4#'(4a''4(%+SV:aAQ3R!VS

e-..-dEJFL(.FL>"Q&6<+=+=&AQ+Q&&s4y1  1((M? +J K
 	o|@P@RSM- 5(Ss   E8
E=%FFc                ^  ^ [        U [        5      (       aP  [        U R                  5       5      m[        U4S j5      nU R	                  5        H  n[        X   5      X'   M     U$ [        U [
        5      (       a  U  Vs0 s H  o3[        X   5      _M     sn$ U b  [        U 5      $ U $ s  snf )zW
Ensure we have either None, a dtype object, or a dictionary mapping to
dtype objects.
c                    > T $ r^    )default_dtypes   r[   <lambda>#ensure_dtype_objs.<locals>.<lambda>  s    =r   )r   r   r   default_factoryr   dict)r,   dtype_convertedrV   r   r   s       @r[   r8   r8     s     %%%$U%:%:%<='23H'I::<C#/
#;O   	E4	 	 3895a<))599		E""L :s    B*)r   zlist[dict[int, ArrayLike]]r   r   )r,   z*DtypeArg | dict[Hashable, DtypeArg] | Noner   z*DtypeObj | dict[Hashable, DtypeObj] | None)1
__future__r   collectionsr   typingr   r   r.   r   pandas._libsr   r   pandas.compat._optionalr   pandas.errorsr	   pandas.util._exceptionsr
   pandas.core.dtypes.commonr   pandas.core.dtypes.concatr   r   pandas.core.dtypes.dtypesr   pandas.core.indexes.apir   pandas.io.commonr   r   pandas.io.parsers.base_parserr   r   r   collections.abcr   r   r   pandas._typingr   r   r   r   pandasr   r   r   ro   r8   r   r   r[   <module>r      s    " #     ? & 4 2 7 ?    hZ hV	"J5/r   