
    Owgw7                    2   d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZm Z m!Z! erd dl"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z-  G d de      Z.ddZ/	 	 	 	 ddZ0y)    )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                  j     e Zd ZU ded<   ded<   d fdZddZddZ	 d	 	 	 ddZdd	Zddd
Z	 xZ
S )CParserWrapperbool
low_memoryzparsers.TextReader_readerc                H   t         	|   |       || _        |j                         }|j	                  dd      | _        | j                  du|d<   | j                  |d<   | j                  j                  |d<   dD ]  }|j	                  |d         t        |j                  dd             |d<   d|vs|d   t        j                  u rd	|d<   |d   d
k(  rt        d
       t        j                   |fi || _        | j"                  j$                  | _        | j&                  d u }| j"                  j(                  d | _        nE| j+                  | j"                  j(                  | j,                  |      \  | _        | _        | _        }| j&                  -t1        t3        | j"                  j4                              | _        | j&                  d d  | _        | j                  r| j9                  | j                  | j6                        }| j6                  J | j:                  dk(  r@t=        |      j?                  | j6                        s| jA                  || j6                         tC        | j&                        tC        |      kD  r5tE        | j&                        D cg c]  \  }}||v s||v r| c}}| _        tC        | j&                        tC        |      k  r| jA                  || j&                         | jG                  | j&                         | jI                          | j&                  | _        | jJ                  s| j"                  jL                  dk(  rctO        | j                        rNd| _(        | jS                  | j&                  | j                        \  }| _        | _        | j,                  || _        | j"                  j(                  .|s,| j,                  J d gtC        | j,                        z  | _        | j"                  jL                  dkD  | _*        y c c}}w )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srcr2   keypassed_namesr%   inr?   	__class__s
            Y/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/io/parsers/c_parser_wrapper.pyr1   z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 ,,WdooF 4::W-
 !*$** 5 1WW 
 4::W-,,JJ 	++DJJ7##% **))||((A-,3 (,$ ++JJNN	JN ##+'2D$||""*<''333$(6C0@0@,A#A #||881<_s   Pc                X    	 | j                   j                          y # t        $ r Y y w xY wN)r"   close
ValueError)rS   s    rZ   r]   zCParserWrapper.close   s)    	LL  		s    	))c                :   | j                   J t        | j                         D ci c]  \  }}||
 }}}| j                  D cg c]  }||   	 }}| j                  || j                        }|D ]  }| j                  j                  |        yc c}}w c c}w )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)rD   rK   r<   _set_noconvert_dtype_columnsr"   set_noconvert)rS   rW   x
names_dictcol_indicesnoconvert_columnscols          rZ   rM   z%CParserWrapper._set_noconvert_columns   s     *** (1'ABtq!adB
B.2jj9z!}99 ==JJ
 % 	,CLL&&s+	, C9s   BBc                   	 | j                   r'| j                  j                  |      }t        |      }n| j                  j	                  |      }d| _        | j&                  }| j                  j(                  r| j*                  rt-        d      g }
| j                  re| j                  j(                  t/        | j                        k7  r9t1        dt/        | j                         d| j                  j(                   d      t3        | j                  j(                        D ]c  }| j                  |j5                  |      }n|j5                  | j                  |         }| j7                  ||d      }|
j9                  |       e t;        |
      }| j                  | j!                  |      }t        |t        || j                              }t=        |j#                               }t?        ||      D 	ci c]  \  }\  }}	||	 }}}}	| jA                  ||      \  }}| j                  || j                        }nt=        |j#                               }| j                  J tC        | j                        }t        |t        || j                              }| j                  | j!                  |      }|D cg c]  }|d	   	 }}| j                  | jE                  ||       t?        ||      D 	ci c]  \  }\  }}	||	 }}}}	| jA                  ||      \  }}| jG                  |||      \  }}|||fS # t
        $ r | j                  rd| _        t        | j                  t        | j                  | j                              }| j                  || j                        \  }}}| j                  || j                        }| j                  | j!                  |      }|j#                         D 	ci c]  \  }}	||v s||	 nc c}	}w }}}	|||fcY S | j%                           w xY wc c}	}}w c c}w c c}	}}w )
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   rD   r   r5   _get_empty_metar+   _maybe_make_multi_index_columnsr@   r%   _filter_usecolsitemsr]   r<   rO   rN   NotImplementedErrorrJ   r   rB   r4   _maybe_parse_datesappendr   sortedzip_do_date_conversionsrA   _check_data_length_make_index)rS   nrowschunksdatar<   indexcolumnscol_dictkvarraysrW   values	data_tupscolumn_names	date_datarb   alldatas                     rZ   rl   z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%& 07E||',,U3'?t~~'VWE tzz|,I*-eY*?@@YQAAqD@D@&*&?&?t&L#L)  ??dnnL tzz|,I
 ??...)E'?t~~'VWE||',,U3 &//qt/G/||#''w7*-eY*?@@YQAAqD@D@#88EE9"&"2"29gu"ME<lI--  	  $)!#OO,T__dnnM ,0+?+?** ,@ ,(w >>wW<<+"227;G-5^^-=NTQgAqDNNNgx// 

-	| A0 0 As7   AL= :P2=P99P>=B=P/:PPP/P/c                    | j                  | j                  |      }|=t        |      t        |      k7  r&t        |      D cg c]  \  }}||v s||v s| }}}|S c c}}w r\   )rE   r%   rJ   rK   )rS   r<   r%   rW   names        rZ   rq   zCParserWrapper._filter_usecolsQ  si    ((u=3u:W#=$-e$4 DWPWE  s   AAc                    |r?| j                  |      r.| j                  || j                  | j                  |   nd       }|S )N)rf   )_should_parse_dates
_date_convr?   )rS   r   r~   rh   s       rZ   rt   z!CParserWrapper._maybe_parse_datesZ  sK    t77>__/3/?/?/KD$$U+QU % F     )rT   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~   intrh   r    )__name__
__module____qualname____annotations__r1   r]   rM   rl   rq   rt   __classcell__)rY   s   @rZ   r   r   8   sO    D=L,. !q.q.
q.f r   r   c                   t        | d   j                               }g }i }|D ]  }| D cg c]  }|j                  |       }}|D ch c]  }|j                   }}|D 	ch c]  }	t	        |	t
              r|	 }
}	|j                         }t	        |t
              rt        |d      ||<   t        |      ||<   t        |
      dkD  s||   j                  t        j                  t              k(  s|j                  t        |              |rKdj                  |      }dj                  d| dg      }t        j                  |t         t#               	       |S c c}w c c}w c c}	w )
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_categoriesri   , z	Columns (zK) have mixed types. Specify dtype option on import or set low_memory=False.)
stacklevel)rA   keysr4   r+   
isinstancer   r   r   rJ   npobjectru   strjoinwarningswarnr	   r
   )r|   r<   warning_columnsresultr   chunkarrsadtypesrb   non_cat_dtypesr+   warning_nameswarning_messages                 rZ   rk   rk   c  sM    !"EOF 2-34E		$44#'(a!''((%+S:aAQ3R!SS

e-.-dEJF4L(.F4L>"Q&6$<+=+=&AQ+Q&&s4y12 1((M? +J K
 	o|@P@RSM- 5(Ss   E E%!E*7E*c                D   t        | t              rOt        | j                               t        fd      }| j	                         D ]  }t        | |         ||<    |S t        | t
              r| D ci c]  }|t        | |          c}S | t        |       S | S c c}w )zc
    Ensure we have either None, a dtype object, or a dictionary mapping to
    dtype objects.
    c                      S r\    )default_dtypes   rZ   <lambda>z#ensure_dtype_objs.<locals>.<lambda>  s    = r   )r   r   r   default_factoryr   dict)r+   dtype_convertedrU   r   r   s       @rZ   r7   r7     s     %%$U%:%:%<='23H'I::< 	<C#/c
#;OC 	<	E4	 389a<a))99		E""L :s   5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   rk   r7   r   r   rZ   <module>r      s    " #     ? & 4 2 7 ?    hZ hV	"J5/r   