Ë
    ômxiH+  ã                  óº   — d dl mZ d dlmZ d dl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 d d
lmZ d dlmZ erd dlmZ d dlmZ  G d„ de«      Zy)é    )Úannotations)ÚTYPE_CHECKINGN)Úlib)Úimport_optional_dependency)ÚParserErrorÚParserWarning)Úfind_stack_level)Úpandas_dtype)Ú
is_integer)Úarrow_table_to_pandas)Ú
ParserBase)Ú
ReadBuffer)Ú	DataFramec                  óL   ‡ — e Zd ZdZdˆ fd„Zd	d„Zd	d„Zd
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      €ú]/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/io/parsers/arrow_parser_wrapper.pyr   zArrowParserWrapper.__init__   s*   ø€ Ü‰Ñ˜ÔØˆŒ	ØˆŒà×ÑÕó    c                óÞ   — | j                   j                  d«      }|€dn|| _        | j                   d   }t        |t        «      rt        d«      ‚t        | j                   d   «      | _        y)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   zArrowParserWrapper._parse_kwds&   sc   € ð  $Ÿy™yŸ}™}¨ZÓ8ˆØ#+Ð#3™¸ˆŒà—I‘I˜kÑ*ˆ	Ü�i¤Ô&ÜØQóð ô ˜dŸi™i¨Ñ4Ó5ˆ�r   c                ó0  — dddddddœ}|j                  «       D ]X  \  }}|| j                  v sŒ| j                  j                  |«      €Œ1| j                  j                  |«      | j                  |<   ŒZ | j                  }t        |t        «      r|g}nd}|| j                  d	<   | j                  j                  «       D ��ci c]  \  }}|�|d
v r||“Œ c}}| _        | j                  j                  d«      }|�¦t        |«      r|| j                  d<   n‹|t        j                  j                  k(  rd| j                  d<   n^|t        j                  j                  k(  rdd„}|| j                  d<   n-|t        j                  j                  k(  rd„ | j                  d<   | j                  j                  «       D ��ci c]  \  }}|�|dv r||“Œ c}}| _        d| j                  d   v | j                  d<   | j                  €;d| j                  v r-| j                  d   D �	cg c]  }	d|	› �‘Œ	 c}	| j                  d<   | j                  du | j                  �| j                  n| j                  d   | j                   dœ| _        yc c}}w c c}}w c c}	w )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                óš   — t        j                  d| j                  › d| j                  › d| j                  › �t
        t        «       ¬«       y)Nz	Expected z columns, but found z: )Ú
stacklevelÚskip)ÚwarningsÚwarnÚexpected_columnsÚactual_columnsÚtextr   r	   )Úinvalid_rows    r   Úhandle_warningz?ArrowParserWrapper._get_pyarrow_options.<locals>.handle_warninge   sL   € Ü—M‘MØ# K×$@Ñ$@Ð#AÐAUØ&×5Ñ5Ð6°b¸×9IÑ9IÐ8JðLä%Ü#3Ó#5õ	ð "r   c                 ó   — y)Nr7   © )Ú_s    r   ú<lambda>z9ArrowParserWrapper._get_pyarrow_options.<locals>.<lambda>p   s   � r   )r&   r'   Útrue_valuesÚfalse_valuesr*   r1   Ú Ústrings_can_be_nullÚfÚskiprows)Úautogenerate_column_namesÚ	skip_rowsr   )ÚreturnÚstr)Úitemsr   r    ÚpopÚdate_formatr!   rL   Úparse_optionsÚcallabler   ÚBadLineHandleMethodÚERRORÚWARNÚSKIPÚconvert_optionsÚheaderr   Úread_options)
r   ÚmappingÚpandas_nameÚpyarrow_namerO   Úoption_nameÚoption_valuer3   r>   Úns
             r   Ú_get_pyarrow_optionsz'ArrowParserWrapper._get_pyarrow_options4   sœ  € ð
 )Ø&Ø'Ø 4Ø&Ø%ñ
ˆð *1¯©«ò 	EÑ%ˆK˜Ø˜dŸi™iÒ'¨D¯I©I¯M©M¸+Ó,FÑ,RØ*.¯)©)¯-©-¸Ó*D�—	‘	˜,Ò'ð	Eð ×&Ñ&ˆÜ�k¤3Ô'Ø&˜-‰Kð ˆKØ)4ˆ�	‰	Ð%Ñ&ð .2¯Y©Y¯_©_Ó->÷
á)�˜\ØÐ'ØØOñPð ˜Ñ%ó
ˆÔð —y‘y—}‘} ^Ó4ˆØÐ#Ü˜Ô%Ø<H�×"Ñ"Ð#8Ò9Ø¤×!?Ñ!?×!EÑ!EÒEð ð ×"Ñ"Ø)òð ¤×!?Ñ!?×!DÑ!DÒDó"ð =K�×"Ñ"Ð#8Ò9Ø¤×!?Ñ!?×!DÑ!DÒDÙ<L�×"Ñ"Ð#8Ñ9ð .2¯Y©Y¯_©_Ó->÷ 
á)�˜\ØÐ'Øðñð ˜Ñ%ó 
ˆÔð 79¸D¿I¹IÀmÑ<TÐ6Tˆ×ÑÐ2Ñ3à�;‰;ÐÐ#4¸×8LÑ8LÑ#Là!%×!5Ñ!5Ð6GÑ!Hö7Ø�!�A�3’ò7ˆD× Ñ Ð!2Ñ3ð
 *.¯©¸Ð)<à�{‰{Ð&ð Ÿšà—‘˜:Ñ&ØŸ™ñ
ˆÕùói
ùó> 
ùò"7s   ÃJÆ?JÈ$Jc                óX  — t        |j                  «      }d}| j                  €ž| j                  €| j                  €t	        |«      | _        t        | j                  «      |k7  rMt	        |t        | j                  «      z
  «      D �cg c]  }t        |«      ‘Œ }}|| j                  z   | _        d}| j                  |_        | j                  |j                  |«      \  }}| j                  ��l| j                  j                  «       }t        | j                  «      D ]æ  \  }}	t        |	«      r|j                  |	   ||<   n|	|j                  vrt        d|	› d�«      ‚| j                  €ŒN| j                  j                  |	«      �|	| j                  j                  |	«      fn6|j                  |	   | j                  j                  |j                  |	   «      f\  }
}|€ŒÃ||
   j                  |«      ||
<   | j                  |
= Œè |j                  |dd¬«       | j                  €4|s2dgt        |j                   j                  «      z  |j                   _        | j                  ��t#        | j                  t$        «      rK| j                  j'                  «       D ��ci c]  \  }}||j                  v r|t)        |«      “Œ! c}}| _        nt)        | j                  «      | _        	 |j                  | j                  «      }|S |S c c}w 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)ÚlenÚcolumnsrW   ÚnamesÚrangerL   Ú_do_date_conversionsÚ	index_colÚcopyÚ	enumerater   r#   Údtyper    ÚastypeÚ	set_indexÚindexr!   r"   rM   r
   Ú	TypeError)r   ÚframeÚnum_colsÚmulti_index_namedÚxÚcolumns_prefixrA   Úindex_to_setÚiÚitemÚkeyÚ	new_dtypeÚkÚvÚes                  r   Ú_finalize_pandas_outputz*ArrowParserWrapper._finalize_pandas_output�   s¹  € ô �u—}‘}Ó%ˆØ ÐØ�;‰;ÐØ�z‰zÐ!Ø—;‘;Ð&Ü!& x£�D”JÜ�4—:‘:‹ (Ò*ô
 38¸Ä3ÀtÇzÁzÃ?Ñ8RÓ2SÖ!T¨Q¤# a¥&Ð!T�Ð!TØ+¨d¯j©jÑ8�”
Ø$)Ð!Ø ŸJ™JˆEŒMà×,Ñ,¨U¯]©]¸EÓB‰ˆˆ5Ø�>‰>Ñ%ØŸ>™>×.Ñ.Ó0ˆLÜ$ T§^¡^Ó4ò ,‘��4Ü˜dÔ#Ø&+§m¡m°DÑ&9�L ’Oà §¡Ñ.Ü$ v¨d¨V°8Ð%<Ó=Ð=ð —:‘:Ñ)ð  Ÿ:™:Ÿ>™>¨$Ó/Ð;ð ˜tŸz™zŸ~™~¨dÓ3Ñ4à#Ÿm™m¨DÑ1°4·:±:·>±>À%Ç-Á-ÐPTÑBUÓ3VÐWñ #�C˜ð
 !Ñ,Ø%*¨3¡Z×%6Ñ%6°yÓ%A˜˜c™
Ø ŸJ™J s™Oð!,ð$ �O‰O˜L¨t¸TˆOÔBà�{‰{Ð"Ñ+<Ø%) F¬S°·±×1BÑ1BÓ-CÑ$C�—‘Ô!à�:‰:Ð!ô ˜$Ÿ*™*¤dÔ+ð !%§
¡
× 0Ñ 0Ó 2÷á˜˜1Ø˜EŸM™MÑ)ð ”| A“Ñ&ó�•
ô *¨$¯*©*Ó5�”
ð$ØŸ™ T§Z¡ZÓ0�ð ˆˆuˆùò_ "UùóFøô ò $ä  “mÐ#ûð$ús$   ÂLÊ$L
Ë&L Ì	L)ÌL$Ì$L)c                ó”   — t        j                  |«      rt        d„ |D «       «      st        d«      ‚t	        |«      rt        d«      ‚y )Nc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   ©r!   rL   ©Ú.0rs   s     r   ú	<genexpr>z7ArrowParserWrapper._validate_usecols.<locals>.<genexpr>Ú   s   è ø€ Ò0UÈ´¸A¼s×1CÑ0Uùó   ‚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#   rQ   )r   r,   s     r   Ú_validate_usecolsz$ArrowParserWrapper._validate_usecolsÙ   sO   € Ü×Ñ˜GÔ$¬SÑ0UÈWÔ0UÔ-UÜðPóð ô �gÔÜØOóð ð r   c           	     óä  — t        d«      }t        d«      }| j                  «        	  |j                  di | j                  ¤Ž}	 |j                  | j                   |j                  di | j                  ¤Ž |j                  di | j                   ¤Ž|¬«      }| j&                  d	   }|t        j(                  u r |j*                  }	|j-                  «       }
t/        |j*                  j0                  «      D ]Q  \  }}|j0                  j3                  |«      sŒ"|	j                  ||	j5                  |«      j7                  |
«      «      }	ŒS |j9                  |	«      }t;        j<                  «       5  t;        j>                  d
dt@        «       tC        ||d¬«      }ddd«       | jE                  «      S # t        $ r‡ | j                  j                  dd«      }|�| j                  |«       | j                  j                  dt        «       «      }t        j                  |«      rt        d„ |D «       «      st	        d«      ‚‚ w xY w# |j"                  $ r}t%        |«      |‚d}~ww xY w# 1 sw Y   ŒÐxY w)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  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   r€   r�   s     r   rƒ   z*ArrowParserWrapper.read.<locals>.<genexpr>û   s   è ø€ ò 6Ø'(”
˜1œc×"ñ6ùr„   z9The 'pyarrow' engine requires all na_values to be strings)rX   rP   rV   Údtype_backendÚignorezmake_block is deprecatedT)r‹   Únull_to_int64r@   )#r   r_   ÚConvertOptionsrV   ro   r    r‡   Úsetr   r…   r†   Úread_csvr   ÚReadOptionsrX   ÚParseOptionsrP   ÚArrowInvalidr   r   Ú
no_defaultÚschemaÚfloat64rj   ÚtypesÚis_nullÚfieldÚ	with_typeÚcastr8   Úcatch_warningsÚfilterwarningsÚDeprecationWarningr   r}   )r   ÚpaÚpyarrow_csvrV   ÚincludeÚnullsÚtabler|   r‹   Ú
new_schemaÚnew_typerv   Ú
arrow_typerp   s                 r   ÚreadzArrowParserWrapper.readä   sJ  € ô (¨	Ó2ˆÜ0°Ó?ˆØ×!Ñ!Ô#ð	Ø8˜k×8Ñ8ÑP¸4×;OÑ;OÑPˆOð 	(Ø×(Ñ(Ø—‘Ø4˜[×4Ñ4ÑI°t×7HÑ7HÑIØ6˜k×6Ñ6ÑL¸×9KÑ9KÑLØ /ð	 )ó ˆEð Ÿ	™	 /Ñ2ˆð œCŸN™NÑ*ØŸ™ˆJØ—z‘z“|ˆHÜ!*¨5¯<©<×+=Ñ+=Ó!>ò ‘��:Ø—8‘8×#Ñ# JÕ/Ø!+§¡Ø˜:×+Ñ+¨AÓ.×8Ñ8¸ÓBó"‘Jðð —J‘J˜zÓ*ˆEä×$Ñ$Ó&ñ 	Ü×#Ñ#ØØ*Ü"ôô
 *Ø ]À$ôˆE÷	ð ×+Ñ+¨EÓ2Ð2øôe ò 	Ø×*Ñ*×.Ñ.Ð/@À$ÓGˆGØÐ"Ø×&Ñ& wÔ/à×(Ñ(×,Ñ,¨]¼C»EÓBˆEÜ×#Ñ# EÔ*´#ñ 6Ø,1ô6ô 3ô  ØOóð ð ð	ûð, �‰ò 	(Ü˜a“. aÐ'ûð	(ú÷$	ð 	ús1   ¨F0 ÁAI Å-*I&Æ0BI ÉI#ÉIÉI#É&I/)r   zReadBuffer[bytes]rK   ÚNone)rK   r¨   )rp   r   rK   r   )rK   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r_   r}   r‡   r§   Ú__classcell__)r   s   @r   r   r      s+   ø„ ñõó6óY
óvHóT	÷C3r   r   )Ú
__future__r   Útypingr   r8   Ú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   r@   r   r   ú<module>rº      sA   ðÝ "å  Û å Ý >÷õ 5å 2Ý 3å 1Ý 4áÝ)å ôM3˜õ M3r   