
    m*iH+                        S SK Jr  S SKJr  S SK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  S S
KJr  S SKJr  \(       a  S SKJr  S SKJr   " S S\5      rg)    )annotations)TYPE_CHECKINGN)lib)import_optional_dependency)ParserErrorParserWarning)find_stack_level)pandas_dtype)
is_integer)arrow_table_to_pandas)
ParserBase)
ReadBuffer)	DataFramec                  b   ^  \ rS rSrSrS
U 4S jjrSS jrSS jrSS jrSS jr	SS jr
S	rU =r$ )ArrowParserWrapper   z/
Wrapper for the pyarrow engine for read_csv()
c                \   > [         TU ]  U5        X l        Xl        U R	                  5         g N)super__init__kwdssrc_parse_kwds)selfr   r   	__class__s      f/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pandas/io/parsers/arrow_parser_wrapper.pyr   ArrowParserWrapper.__init__   s&    	    c                    U R                   R                  S5      nUc  SOUU l        U R                   S   n[        U[        5      (       a  [        S5      e[        U R                   S   5      U l        g)z/
Validates keywords before passing to pyarrow.
encodingNzutf-8	na_valuesz?The pyarrow engine doesn't support passing a dict for na_values)r   getr    
isinstancedict
ValueErrorlistr!   )r   r    r!   s      r   r   ArrowParserWrapper._parse_kwds&   sf      $yy}}Z8#+#3IIk*	i&&Q  dii45r   c                   SSSSSSS.nUR                  5        H\  u  p#X R                  ;   d  M  U R                  R                  U5      c  M4  U R                  R                  U5      U R                  U'   M^     U R                  n[        U[        5      (       a  U/nOSnX@R                  S	'   U R                  R                  5        VVs0 s H  u  pVUc  M
  US
;   d  M  XV_M     snnU l        U R                  R                  S5      nUb  [        U5      (       a  XpR                  S'   OU[        R                  R                  :X  a  SU R                  S'   O`U[        R                  R                  :X  a  SS jnXR                  S'   O.U[        R                  R                  :X  a  S U R                  S'   U R                  R                  5        VVs0 s H  u  pVUc  M
  US;   d  M  XV_M     snnU l        SU R                  S   ;   U R                  S'   U R                  c@  SU R                  ;   a0  U R                  S    V	s/ s H  n	SU	 3PM
     sn	U R                  S'   U R                  SL U R                  b  U R                  OU R                  S   U R                   S.U l        gs  snnf s  snnf s  sn	f )z*
Rename some arguments to pass to pyarrow
include_columnsnull_valuesescape_charignore_empty_linesdecimal_point
quote_char)usecolsr!   
escapecharskip_blank_linesdecimal	quotecharNtimestamp_parsers)	delimiterr.   r+   r,   on_bad_linesinvalid_row_handlerc                    [         R                  " SU R                   SU R                   SU R                   3[
        [        5       S9  g)Nz	Expected z columns, but found z: )
stacklevelskip)warningswarnexpected_columnsactual_columnstextr   r	   )invalid_rows    r   handle_warning?ArrowParserWrapper._get_pyarrow_options.<locals>.handle_warninge   sL    MM#K$@$@#AAU&556b9I9I8JL%#3#5	 "r   c                    g)Nr:    )_s    r   <lambda>9ArrowParserWrapper._get_pyarrow_options.<locals>.<lambda>p   s    fr   )r)   r*   true_valuesfalse_valuesr-   r4    strings_can_be_nullfskiprows)autogenerate_column_names	skip_rowsr    )returnstr)itemsr   r"   popdate_formatr#   rQ   parse_optionscallabler   BadLineHandleMethodERRORWARNSKIPconvert_optionsheaderr    read_options)
r   mappingpandas_namepyarrow_namerT   option_nameoption_valuer6   rA   ns
             r   _get_pyarrow_options'ArrowParserWrapper._get_pyarrow_options4   s   
 )&' 4&%
 *1%Kii'DIIMM+,F,R*.))--*D		,' *9 &&k3''&-K K)4		%& .2YY__->
->) & OP &K%->
 yy}}^4#%%<H""#89!?!?!E!EE  "") !?!?!D!DD" =K""#89!?!?!D!DD<L""#89 .2YY__-> 
->) &  &K%-> 
 79DIIm<T6T23;;#48L8L#L!%!5!56G!H7!HA!A3!H7D  !23
 *.)<{{& :&
i
> 
"7s*   	J0J0!J0	J6%J6-J6	J<c                   [        UR                  5      nSnU R                  c  U R                  c  U R                  c  [	        U5      U l        [        U R                  5      U:w  aO  [	        U[        U R                  5      -
  5       Vs/ s H  n[        U5      PM     nnXPR                  -   U l        SnU R                  Ul        U R                  UR                  U5      u  paU R                  Gbv  U R                  R                  5       n[        U R                  5       H  u  p[        U	5      (       a  UR                  U	   Xx'   OXR                  ;  a  [        SU	 S35      eU R                  c  MT  U R                  R                  U	5      b  XR                  R                  U	5      4O6UR                  U	   U R                  R                  UR                  U	   5      4u  pUc  M  X   R                  U5      X'   U R                  U
	 M     UR                  USSS9  U R                  c9  U(       d2  S/[        UR                   R                  5      -  UR                   l        U R                  b  [#        U R                  [$        5      (       aP  U R                  R'                  5        VVs0 s H"  u  pXR                  ;   d  M  U[)        U5      _M$     snnU l        O[)        U R                  5      U l         UR                  U R                  5      nU$ U$ s  snf s  snnf ! [*         a  n[        U5      eSnAff = f)z
Processes data read in based on kwargs.

Parameters
----------
frame: DataFrame
    The DataFrame to process.

Returns
-------
DataFrame
    The processed DataFrame.
TNFzIndex z invalid)dropinplace)lencolumnsr\   namesrangerQ   _do_date_conversions	index_colcopy	enumerater   r%   dtyper"   astype	set_indexindexr#   r$   rR   r
   	TypeError)r   framenum_colsmulti_index_namedxcolumns_prefixrE   index_to_setiitemkey	new_dtypekves                  r   _finalize_pandas_output*ArrowParserWrapper._finalize_pandas_output   s    u}}% ;;zz!;;&!&xDJ4::(*
 383tzz?8R2S!T2SQ#a&2S!T+jj8
$)! JJEM,,U]]EB>>%>>..0L$T^^4d##&+mmD&9LO.$vdV8%<== ::)  ::>>$/; zz~~d34#mmD14::>>%--PTBU3VW #C
 !,%*Z%6%6y%A
 JJsO! 5$ OOLtTOB{{"+<%)FS1B1B-C$C!::! $**d++ !%

 0 0 2 2MM) 'A|A& 2
 *$**5
$TZZ0 u_ "UF  $ m#$s*   L 3L%L%L+ +
M5M  Mc                    [         R                  " U5      (       a"  [        S U 5       5      (       d  [        S5      e[	        U5      (       a  [        S5      eg )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   r#   rQ   .0ry   s     r   	<genexpr>7ArrowParserWrapper._validate_usecols.<locals>.<genexpr>   s     0UWAs1C1CW   zwThe pyarrow engine does not allow 'usecols' to be integer column positions. Pass a list of string column names instead.z=The pyarrow engine does not allow 'usecols' to be a callable.)r   is_list_likeallr%   rV   )r   r/   s     r   _validate_usecols$ArrowParserWrapper._validate_usecols   sX    G$$S0UW0U-U-UP  gO  r   c           	        [        S5      n[        S5      nU R                  5          UR                  " S0 U R                  D6n UR                  U R                  UR                  " S0 U R                  D6UR                  " S0 U R                   D6US9nU R&                  S	   nU[        R(                  L a  UR*                  n	UR-                  5       n
[/        UR*                  R0                  5       HV  u  pUR0                  R3                  U5      (       d  M'  U	R                  XR5                  U5      R7                  U
5      5      n	MX     UR9                  U	5      n[:        R<                  " 5          [:        R>                  " S
S[@        5        [C        XhSS9nSSS5        U RE                  W5      $ ! [         a    U R                  R                  SS5      nUb  U R                  U5        U R                  R                  S[        5       5      n[        R                  " U5      (       a  [        S U 5       5      (       d  [	        S5      ee f = f! UR"                   a  n[%        U5      UeSnAff = f! , (       d  f       N= f)z
Reads the contents of a CSV file into a DataFrame and
processes it according to the kwargs passed in the
constructor.

Returns
-------
DataFrame
    The DataFrame created from the CSV file.
pyarrowzpyarrow.csvr)   Nr*   c              3  B   #    U  H  n[        U[        5      v   M     g 7fr   r   r   s     r   r   *ArrowParserWrapper.read.<locals>.<genexpr>   s      6,1q
1c""Er   z9The 'pyarrow' engine requires all na_values to be strings)r]   rU   r[   dtype_backendignorezmake_block is deprecatedT)r   null_to_int64rD   )#r   rd   ConvertOptionsr[   ru   r"   r   setr   r   r   read_csvr   ReadOptionsr]   ParseOptionsrU   ArrowInvalidr   r   
no_defaultschemafloat64rp   typesis_nullfield	with_typecastr;   catch_warningsfilterwarningsDeprecationWarningr   r   )r   papyarrow_csvr[   includenullstabler   r   
new_schemanew_typer|   
arrow_typerv   s                 r   readArrowParserWrapper.read   s=    (	20?!!#	)88P4;O;OPO 	((((44It7H7HI)66L9K9KL /	 ) E 		/2 CNN*Jzz|H!*5<<+=+=!>88##J//!+++A.88B"J "? JJz*E$$&##*"
 *$E ' ++E22e  	**../@$GG"&&w/((,,]CEBE##E**# 6,16 3 3  O  	,  	(a.a'	($ '&s1   F2 AI 2'I62BII3"I..I36
J)	r[   rq   r    r   r!   rk   rU   r]   r   )r   zReadBuffer[bytes]rP   None)rP   r   )rv   r   rP   r   )rP   r   )__name__
__module____qualname____firstlineno____doc__r   r   rd   r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s1    6Y
vHT	C3 C3r   r   )
__future__r   typingr   r;   pandas._libsr   pandas.compat._optionalr   pandas.errorsr   r   pandas.util._exceptionsr	   pandas.core.dtypes.commonr
   pandas.core.dtypes.inferencer   pandas.io._utilr   pandas.io.parsers.base_parserr   pandas._typingr   pandasr   r   rD   r   r   <module>r      sA    "     > 5 2 3 1 4) M3 M3r   