ó
    Ñ]j°.  ã                  óÐ   • 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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rS SKJr  S SKJr   " S S\5      rg)é    )Úannotations)ÚTYPE_CHECKINGN)Úlib)Úimport_optional_dependency)ÚPandas4WarningÚParserErrorÚParserWarning)Úfind_stack_level)Úpandas_dtype)Ú
is_integer)Úarrow_table_to_pandas)Ú
ParserBase)Ú
ReadBuffer)Ú	DataFramec                  ó’   ^ • \ rS rSrSrSU 4S jjrSS jrSS jrS rSS 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      €Úc/home/mande/repo/quber/.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   € ð  $Ÿy™yŸ}™}¨ZÓ8ˆØ#+Ñ#3™¸ˆŒà—I‘I˜kÑ*ˆ	Ü�i¤×&Ñ&ÜØQóð ô ˜dŸi™i¨Ñ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'   OŽU[        R                  R                  :X  a  SU R                  S'   O`U[        R                  R                  :X  a  SS jnX€R                  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_warningl   sL   € Ü—M’MØ# K×$@Ñ$@Ð#AÐAUØ&×5Ñ5Ð6°b¸×9IÑ9IÐ8JðLä%Ü#3Ó#5ò	ð "r   c                ó   • g)Nr;   © )Ú_s    r   Ú<lambda>Ú9ArrowParserWrapper._get_pyarrow_options.<locals>.<lambda>w   s   € Àfr   )r*   r+   Útrue_valuesÚfalse_valuesr.   r5   Ú Ústrings_can_be_nullÚfÚskiprows)Úautogenerate_column_namesÚ	skip_rowsr!   )ÚreturnÚstr)Úitemsr   r#   ÚpopÚdate_formatr$   rR   Úparse_optionsÚcallabler   ÚBadLineHandleMethodÚERRORÚWARNÚSKIPÚconvert_optionsÚheaderr!   Úread_options)
r   ÚmappingÚpandas_nameÚpyarrow_namerU   Úoption_nameÚoption_valuer7   rB   Úns
             r   Ú_get_pyarrow_optionsÚ'ArrowParserWrapper._get_pyarrow_options;   s¢  € ð
 )Ø&Ø'Ø 4Ø&Ø%ñ
ˆð *1¯©®Ñ%ˆKØŸi™iÕ'¨D¯I©I¯M©M¸+Ó,FÓ,RØ*.¯)©)¯-©-¸Ó*D�—	‘	˜,Ó'ñ *9ð ×&Ñ&ˆÜ�k¤3×'Ñ'Ø&˜-‰Kð ˆKØ)4�	‰	Ð%Ñ&ð .2¯Y©Y¯_©_Ô->ô
â->Ñ)�Øó &ð ØOñPó &ˆKÒ%Ù->ò
ˆÔð —y‘y—}‘} ^Ó4ˆØÑ#Ü˜×%Ñ%Ø<H×"Ñ"Ð#8Ò9Ø¤×!?Ñ!?×!EÑ!EÓEàð ×"Ñ"Ð#8Ò9ð ¤×!?Ñ!?×!DÑ!DÓDô"ð =K×"Ñ"Ð#8Ò9Ø¤×!?Ñ!?×!DÑ!DÓDÙ<L�×"Ñ"Ð#8Ñ9ð .2¯Y©Y¯_©_Ô->ô 
â->Ñ)�Øó &ð ðñó &ˆKÒ%Ù->ò 
ˆÔð 79¸D¿I¹IÀmÑ<TÑ6Tˆ×ÑÐ2Ñ3à�;‰;ÑÐ#4¸×8LÑ8LÓ#Là!%×!5Ñ!5Ð6GÒ!Hó7Ú!H˜A�!�A�3“Ñ!Hñ7ˆD× Ñ Ð!2Ñ3ð
 *.¯©¸Ð)<à�{‰{Ñ&ð Ÿšà—‘˜:Ñ&ØŸ™ñ
ˆÕùói
ùó> 
ùò"7s*   Ã	J0ÃJ0Ã!J0Ç	J6Ç%J6Ç-J6É	J<c                ó   • [        S5      n UR                  " S0 U R                  D6nU$ ! [         a˜  n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      Uee S nAff = f)Núpyarrow.csvr*   r+   c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr   ©r$   rR   ©Ú.0Úxs     r   Ú	<genexpr>Ú:ArrowParserWrapper._get_convert_options.<locals>.<genexpr>¡   s   é € ð 6Ú,1 q”
˜1œc×"Ð"ªEùó   ‚z9The 'pyarrow' engine requires all na_values to be stringsrE   )
r   ÚConvertOptionsr\   Ú	TypeErrorr#   Ú_validate_usecolsÚsetr   Úis_list_likeÚall)r   Úpyarrow_csvr\   ÚerrÚincludeÚnullss         r   Ú_get_convert_optionsÚ'ArrowParserWrapper._get_convert_options–   sÏ   € Ü0°Ó?ˆð	Ø)×8Ò8ÑP¸4×;OÑ;OÑPˆOð  Ðøô ó 	Ø×*Ñ*×.Ñ.Ð/@À$ÓGˆGØÑ"Ø×&Ñ& wÔ/à×(Ñ(×,Ñ,¨]¼C»EÓBˆEÜ×#Ò# E×*Ñ*´#ñ 6Ù,1ó6÷ 3ñ 3ô  ØOóàðð ûð	ús   �+ «
CµBCÃCc                ób  • [        UR                  5      nSn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$ s  snf )NTF)ÚlenÚcolumnsr]   ÚnamesÚrangerR   )r   ÚtableÚnum_colsÚmulti_index_namedrm   Úcolumns_prefixs         r   Ú_adjust_column_namesÚ'ArrowParserWrapper._adjust_column_names¬   s“   € Ü�u—}‘}Ó%ˆØ ÐØ�;‰;ÑØ�z‰zÑ!Ü" 8›_�”
Ü�4—:‘:‹ (Ó*ô
 38¸Ä3ÀtÇzÁzÃ?Ñ8RÔ2SÓ!TÒ2S¨Q¤# a¦&Ñ2S�Ð!TØ+¯j©jÑ8�”
Ø$)Ð!Ø Ð ùò "Us   Á>B,c                ó  • U R                   Gbv  U R                   R                  5       n[        U R                   5       Hì  u  pE[        U5      (       a  UR                  U   X4'   OXQR                  ;  a  [        SU S35      eU R                  c  MT  U R                  R                  U5      b  XPR                  R                  U5      4O6UR                  U   U R                  R                  UR                  U   5      4u  pgU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$ )NzIndex z invalidT)ÚdropÚinplace)Ú	index_colÚcopyÚ	enumerater   r   r&   Údtyper#   ÚastypeÚ	set_indexr]   r~   Úindexr€   )r   Úframer„   Úindex_to_setÚiÚitemÚkeyÚ	new_dtypes           r   Ú_finalize_indexÚ"ArrowParserWrapper._finalize_index¼   s@  € Ø�>‰>Ò%ØŸ>™>×.Ñ.Ó0ˆLÜ$ T§^¡^Ö4‘�Ü˜d×#Ñ#Ø&+§m¡m°DÑ&9�L’Oà§¡Ó.Ü$ v¨d¨V°8Ð%<Ó=Ð=ð —:‘:Ó)ð  Ÿ:™:Ÿ>™>¨$Ó/Ñ;ð Ÿz™zŸ~™~¨dÓ3Ñ4à#Ÿm™m¨DÑ1°4·:±:·>±>À%Ç-Á-ÐPTÑBUÓ3VÐWñ #�Cð
 !Ó,Ø%*¡Z×%6Ñ%6°yÓ%A˜™
Ø ŸJ™J sšOñ! 5ð$ �O‰O˜L¨t¸TˆOÑBà�{‰{Ñ"Ö+<Ø%) F¬S°·±×1BÑ1BÓ-CÑ$C�—‘Ô!àˆr   c                óÈ  • U R                   b§  [        U R                   [        5      (       aP  U R                   R                  5        VVs0 s H"  u  p#X!R                  ;   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nf ! [         a  n[        [        U5      5      UeS nAff = fr   )
rŽ   r$   r%   rS   r   r   r�   rr   r&   rR   )r   r’   ÚkÚvrx   s        r   Ú_finalize_dtypeÚ"ArrowParserWrapper._finalize_dtypeØ   sÀ   € Ø�:‰:Ñ!ô ˜$Ÿ*™*¤d×+Ñ+ð !%§
¡
× 0Ñ 0Ô 2ôâ 2™˜ØŸM™MÑ)ó '�A”| A“Ò&Ù 2ò�•
ô *¨$¯*©*Ó5�”
ð4ØŸ™ T§Z¡ZÓ0�ð ˆˆuˆùóøô ó 4ä ¤ S£Ó*°Ð3ûð4ús$   Á
B7Á#B7ÂB= Â=
C!ÃCÃC!c                ó‚   • U R                  UR                  U5      nU R                  X5      nU R                  U5      nU$ )zÁ
Processes data read in based on kwargs.

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

Returns
-------
DataFrame
    The processed DataFrame.
)Ú_do_date_conversionsr   r˜   r�   )r   r’   r„   s      r   Ú_finalize_pandas_outputÚ*ArrowParserWrapper._finalize_pandas_outputë   s?   € ð" ×)Ñ)¨%¯-©-¸Ó?ˆØ×$Ñ$ UÓ>ˆØ×$Ñ$ UÓ+ˆØˆr   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   rj   rk   s     r   rn   Ú7ArrowParserWrapper._validate_usecols.<locals>.<genexpr>  s   é € Ð0UÊWÈ´¸A¼s×1CÐ1CÊWùrp   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   ru   rv   r&   rW   )r   r0   s     r   rs   Ú$ArrowParserWrapper._validate_usecols  sX   € Ü×Ò˜G×$Ñ$¬SÑ0UÉWÓ0U×-UÑ-UÜðPóð ô �g×ÑÜØOóð ð r   c           	     óD  • [        S5      n[        S5      nU R                  5         U R                  5       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                  R"                  5       HV  u  pšUR"                  R%                  U
5      (       d  M'  UR'                  X—R)                  U	5      R+                  U5      5      nMX     UR-                  U5      nU R/                  U5      n[0        R2                  " 5          [0        R4                  " SS[6        5        [9        UUSU R:                  U R<                  S	9nSSS5        U R>                  c  U R<                  Wl         U RC                  WU5      $ ! UR                   a  n[        U5      UeSnAff = f! , (       d  f       Nb= 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.
Úpyarrowrh   )r^   rV   r\   NÚdtype_backendÚignorezmake_block is deprecatedT)r©   Únull_to_int64rŽ   r€   rE   )"r   re   r{   Úread_csvr   ÚReadOptionsr^   ÚParseOptionsrV   ÚArrowInvalidr   r   r   Ú
no_defaultÚschemaÚfloat64r�   ÚtypesÚis_nullrt   ÚfieldÚ	with_typeÚcastr†   r<   Úcatch_warningsÚfilterwarningsr   r   rŽ   r€   r]   r   r¡   )r   Úparw   r\   r‚   Úer©   Ú
new_schemaÚnew_typer”   Ú
arrow_typer„   r’   s                r   ÚreadÚArrowParserWrapper.read  sÐ  € ô (¨	Ó2ˆÜ0°Ó?ˆØ×!Ñ!Ô#Ø×3Ñ3Ó5ˆð	(Ø×(Ñ(Ø—‘Ø(×4Ò4ÑI°t×7HÑ7HÑIØ)×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à ×5Ñ5°eÓ<Ðä×$Ò$Õ&Ü×#Ò#ØØ*Üôô
 *ØØ+Ø"Ø—j‘jØ—j‘jñˆE÷ 'ð �;‰;ÑØ ŸJ™JˆEŒMà×+Ñ+¨EÐ3DÓEÐEøðK �‰ó 	(Ü˜a“. aÐ'ûð	(ú÷( 'Õ&ús$   ¸AG- Å7>HÇ-HÇ=H	È	HÈ
H)	r\   rŽ   r!   r   r"   r€   rV   r^   r   )r   zReadBuffer[bytes]rQ   ÚNone)rQ   rÁ   )r‚   zpa.TablerQ   Úbool)r’   r   r„   rÂ   rQ   r   )r’   r   rQ   r   )rQ   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   re   r{   r†   r˜   r�   r¡   rs   r¿   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   !   s[   ø† ñ÷ô6ôY
òvô,!ô ô8ð&ØðØ37ðà	ôô,	÷<Fò <Fr   r   )Ú
__future__r   Útypingr   r<   Úpandas._libsr   Úpandas.compat._optionalr   Úpandas.errorsr   r   r	   Úpandas.util._exceptionsr
   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.inferencer   Úpandas.io._utilr   Úpandas.io.parsers.base_parserr   r¨   rº   Úpandas._typingr   Úpandasr   r   rE   r   r   Ú<module>rÖ      sO   ðÝ "å  Û å Ý >÷ñ õ
õõ 4å 1Ý 4æÛå)å ôgF˜õ gFr   