
    aVg                    r    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	 d dl
mZ erd dlmZ  G d d	e      Zy
)    )annotations)TYPE_CHECKING)
ReadBuffer)import_optional_dependency)
is_integer)
ParserBase)	DataFramec                  @     e Zd ZdZd fdZd Zd ZddZd	dZ xZ	S )
ArrowParserWrapperz7
    Wrapper for the pyarrow engine for read_csv()
    c                `    t         |   |       || _        || _        | j	                          y )N)super__init__kwdssrc_parse_kwds)selfr   r   	__class__s      g/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/io/parsers/arrow_parser_wrapper.pyr   zArrowParserWrapper.__init__   s*    	    c                4   | j                   j                  d      }|dn|| _        | j                  | j                   d         \  | _        | _        | j                   d   }t        |t              rt        d      t        | j                   d         | _
        y)z?
        Validates keywords before passing to pyarrow.
        encodingNzutf-8usecols	na_valuesz?The pyarrow engine doesn't support passing a dict for na_values)r   getr   _validate_usecols_argr   usecols_dtype
isinstancedict
ValueErrorlistr   )r   r   r   s      r   r   zArrowParserWrapper._parse_kwds   s      $yy}}Z8#+#3+/+E+EIIi ,
(d( IIk*	i&Q  dii45r   c                Z   ddddd}|j                         D ]X  \  }}|| j                  v s| j                  j                  |      1| j                  j                  |      | j                  |<   Z | j                  j                         D ci c]  \  }}||dv r|| c}}| _        | j                  j                         D ci c]  \  }}||dv r|| c}}| _        | j                  du | j                  | j                  n| j                  d	   d
| _        yc c}}w c c}}w )z:
        Rename some arguments to pass to pyarrow
        include_columnsnull_valuesescape_charignore_empty_lines)r   r   
escapecharskip_blank_linesN)	delimiter
quote_charr$   r%   )r"   r#   true_valuesfalse_valuesskiprows)autogenerate_column_names	skip_rows)itemsr   r   popparse_optionsconvert_optionsheaderread_options)r   mappingpandas_namepyarrow_nameoption_nameoption_values         r   _get_pyarrow_optionsz'ArrowParserWrapper._get_pyarrow_options-   s5   
 )&' 4	
 *1 	E%Kdii'DIIMM+,F,R*.))--*D		,'	E .2YY__->
)\'OP %
 .2YY__-> 
)\'PQ % 
 *.)<{{& :&	

 
s   D!	D'c                   t        |j                        }d}| j                  | j                  U| j                  -t        |      D cg c]  }| j                   |  c}| _        n| j                  t        |      | _        t        | j                        |k7  r>t        t        |t        | j                        z
              | j                  z   | _        d}| j                  |_        | j                  |j                  |      \  |_        }| j                  t        | j                        D ]J  \  }}t        |      r|j                  |   | j                  |<   .||j                  vs=t        d| d       |j                  | j                  dd       | j                  4|s2dgt        |j                  j                        z  |j                  _        | j                  j                  d      -	 |j!                  | j                  j                  d            }|S |S c c}w # t"        $ r}t        |      d}~ww xY w)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dtype)lencolumnsr3   namesprefixranger    _do_date_conversions	index_col	enumerater   r   	set_indexindexr   r   astype	TypeError)r   framenum_colsmulti_index_namediitemes          r   _finalize_outputz#ArrowParserWrapper._finalize_outputP   s    u}}% ;;zz!;;*?DX!O!T[[M!"5!ODJ[[(!&xDJ4::(*
 "%3tzz?(B"CDtzzQ
$)! JJEM#88Nu>>%$T^^4 B4d#(-d(;DNN1% 5==0(6$x)@AAB OODNNtOD{{"+<%)FS1B1B-C$C!99==!-$TYY]]7%;< uA "P:  $ m#$s   	H&8*H+ +	I4H??Ic           
     T   t        d      }| j                          |j                  | j                   |j                  di | j
                   |j                  di | j                   |j                  di | j                        }|j                         }| j                  |      S )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.
        zpyarrow.csv)r4   r1   r2    )r   r:   read_csvr   ReadOptionsr4   ParseOptionsr1   ConvertOptionsr2   	to_pandasrQ   )r   pyarrow_csvtablerK   s       r   readzArrowParserWrapper.read   s     1?!!#$$HH000E43D3DE2+22HT5G5GH6K66N9M9MN	 % 
 !$$U++r   )r   zReadBuffer[bytes]returnNone)rK   r	   r\   r	   )r\   r	   )
__name__
__module____qualname____doc__r   r   r:   rQ   r[   __classcell__)r   s   @r   r   r      s#    6"!
F3j,r   r   N)
__future__r   typingr   pandas._typingr   pandas.compat._optionalr   pandas.core.dtypes.inferencer   pandas.io.parsers.base_parserr   pandasr	   r   rS   r   r   <module>rj      s+    "   % > 3 4 K, K,r   