+
    NV-jz×  ã                  ó  € ^ RI Ht ^ RIHtHt ^ RIt^ RIHt ^ RIt^ RI	H
t
HtHtHtHtHtHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHt ^ RI H!t! ^ RI"H#t#H$t$H%t%H&t&H't'H(t(H)t) ^ RI*H+t+H,t, ^ RI-H.t. ^ RI/H0t0 ^ RI1H2t2H3t3 ^ RI4H5t5 ^ RI6H7t7 ^ RI8H9t9H:t: ^ RI;H<t<H=t=H>t>H?t?H@t@ ]'       d!   ^ RIAHBtBHCtCHDtDHEtE ^ RIHFtFHGtGHHtHHItI ^ RIJHKtKHLtL RtM ! R R]<4      tN ! R R]P†                  4      tO ! R R]N4      tPR R  ltQR# )!é    )Úannotations)ÚabcÚdefaultdictN)ÚStringIO)ÚIOÚTYPE_CHECKINGÚAnyÚDefaultDictÚLiteralÚcastÚfinal)Úlib)ÚScalar)ÚEmptyDataErrorÚParserErrorÚParserWarning)Úcache_readonly)Úfind_stack_level)Úastype_array)Úis_bool_dtypeÚis_extension_array_dtypeÚ
is_integerÚis_numeric_dtypeÚis_object_dtypeÚis_string_dtypeÚpandas_dtype)ÚCategoricalDtypeÚExtensionDtype)Úis_dict_like)Ú
algorithms)ÚCategoricalÚExtensionArray)ÚBooleanDtype)ÚIndex)Údedup_namesÚis_potential_multi_index)Ú
ParserBaseÚevaluate_callable_usecolsÚget_na_valuesÚparser_defaultsÚvalidate_parse_dates_presence)ÚHashableÚIteratorÚMappingÚSequence)Ú	ArrayLikeÚDtypeObjÚReadCsvBufferÚT)Ú
MultiIndexÚSeriesu   ï»¿c                  óÆ  a € ] tR t^`t$ R]R&   R V 3R llt]R R l4       tR R ltR=R	 R
 llt	R R lt
R=R R lltR R lt]R>R R ll4       t]R R l4       t]R R l4       tR R lt]R 4       tR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 lt R=R6 R7 llt!R8 R9 lt"R: R; lt#R<t$V ;t%# )?ÚPythonParserúset[int]Ú_no_thousands_columnsc               ó    € V ^8„  d   QhRRRR/# )é   ÚfzReadCsvBuffer[str] | listÚreturnÚNone© )Úformats   "Úp/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pandas/io/parsers/python_parser.pyÚ__annotate__ÚPythonParser.__annotate__c   s#   € ÷ UHñ UHÐ3ð UHÀñ UHó    c                ó¬  <a € \         SS `  V4       . S n        . S n        ^ S n        ^ S n        VR,          S n        \        S P                  4      '       d   S P                  S n        MV 3R lS n        \        VR,          4      S n
        VR,          S n        VR,          S n        \        S P                  \        4      '       d   \        S P                  4      S n        VR,          S n        VR,          S n        VR,          S n        VR	,          S n        VR
,          S n        VR,          S n        VP+                  RR4      S n        VR,          S n        VR,          S n        VR,          S n        \        V\4        4      '       d	   VS n        M*\7        VR4      '       g   Q hS P9                  V4      S n        RS n        S P=                  4       w  pS n        S n         S PC                  VS PD                  4      w  S n#        S n"        S n$        p\5        S PF                  4      S n%        S PM                  4       w  pS n%        S n#        S PD                  f   VS n"        S P:                  f-   \5        \O        \Q        S PF                  4      4      4      S n        S PS                  4       S n*        \Q        S P0                  4      ^8w  d   \W        R4      hR# )z>
Workhorse function for processing nested list into DataFrame
Úskiprowsc                ó"   <€ V SP                   9   # ©N)rF   )ÚxÚselfs   &€rA   Ú<lambda>Ú'PythonParser.__init__.<locals>.<lambda>s   s   ø€  a¨4¯=©=Ò&8rD   Ú
skipfooterÚ	delimiterÚ	quotecharÚ
escapecharÚdoublequoteÚskipinitialspaceÚlineterminatorÚquotingÚskip_blank_linesÚhas_index_namesFÚ	thousandsÚdecimalÚcommentÚreadlineNz'Only length-1 decimal markers supported),ÚsuperÚ__init__ÚdataÚbufÚposÚline_posrF   ÚcallableÚskipfuncÚ_validate_skipfooter_argrM   rN   rO   Ú
isinstanceÚstrrP   rQ   rR   rS   rT   rU   ÚgetrV   rW   rX   rY   ÚlistÚhasattrÚ_make_readerÚ_col_indicesÚ_infer_columnsÚnum_original_columnsÚunnamed_colsÚ_extract_multi_indexer_columnsÚindex_namesÚcolumnsÚ	col_namesÚ
orig_namesÚ_get_index_nameÚrangeÚlenÚ_set_no_thousand_columnsr9   Ú
ValueError)rJ   r<   Úkwdsrp   Ú_ro   Ú	__class__s   f&,   €rA   r\   ÚPythonParser.__init__c   s_  ù€ ô 	‰Ñ˜Ôà>@ˆŒ	ØˆŒØˆŒØˆŒà˜ZÕ(ˆŒä�D—M‘M×"Ò"Ø ŸM™MˆD�Mä8ˆDŒMä2°4¸Õ3EÓFˆŒØ˜kÕ*ˆŒà˜kÕ*ˆŒÜ�d—n‘n¤c×*Ò*Ü  §¡Ó0ˆDŒNà˜|Õ,ˆŒØ Õ.ˆÔØ $Ð%7Õ 8ˆÔØ"Ð#3Õ4ˆÔØ˜I•ˆŒØ $Ð%7Õ 8ˆÔð  $Ÿx™xÐ(9¸5ÓAˆÔà˜kÕ*ˆŒØ˜I•ˆŒà˜I•ˆŒô �aœ×ÒàˆD�Iä˜1˜j×)Ò)Ð)Ð)à×)Ñ)¨!Ó,ˆDŒIð /3ˆÔð ×ÑÓ!ñ		
ØØÔ%ØÔð ×/Ñ/ØØ×Ñó
ñ	
ØŒLØÔØŒNØô +/¨t¯|©|Ó*<ˆŒà59×5IÑ5IÓ5KÑ2ˆ�T”_ d¤lØ×ÑÒ#Ø*ˆDÔà×ÑÒ$Ü $¤U¬3¨t¯|©|Ó+<Ó%=Ó >ˆDÔà%)×%BÑ%BÓ%DˆÔ"äˆt�|‰|Ó Ô!ÜÐFÓGÐGñ "rD   c               ó   € V ^8„  d   QhRR/# )r;   r=   z
re.Patternr?   )r@   s   "rA   rB   rC   »   s   € ÷ 
!ñ 
!�Zñ 
!rD   c                	óê   € \         P                  ! V P                  4      pV P                  f   RV R2pM)\         P                  ! V P                  4      pRV RV R2p\         P                  ! V4      # )Nz^[\-\+]?[0-9]*(z [0-9]*)?([0-9]?(E|e)\-?[0-9]+)?$z^[\-\+]?([0-9]+z	|[0-9])*()ÚreÚescaperX   rW   Úcompile)rJ   rX   ÚregexrW   s   &   rA   ÚnumÚPythonParser.numº   sm   € ä—)’)˜DŸL™LÓ)ˆØ�>‰>Ò!Ø& w iÐ/OÐP‰EäŸ	š	 $§.¡.Ó1ˆIà" 9 +¨Y°w°ið @,ð -ð ô �zŠz˜%Ó Ð rD   c               ó    € V ^8„  d   QhRRRR/# )r;   r<   úIO[str] | ReadCsvBuffer[str]r=   zIterator[list[str]]r?   )r@   s   "rA   rB   rC   Ç   s    € ÷ Fñ FÐ:ð FÐ?Rñ FrD   c                	óÈ  a aa€ S P                   oSe   \        S4      ^8X  Ed0   S P                  '       d   \        R4      h ! V 3R lR\        P
                  4      pTpSen   SVn         S P                  eW   S P                  S P                  4      '       d6   SP                  4       pV'       g   EM…S ;P                  ^,          un        KV  EMhSP                  4       pS P                  V..4      ^ ,          pS P                  S P                  4      '       g	   V'       gF   S ;P                  ^,          un        SP                  4       pS P                  V..4      ^ ,          pKn  \        \        \        ,          V4      pV^ ,          pS ;P                  ^,          un        S ;P                  ^,          un        \        P                  ! 4       P!                  V4      pVP                   Vn         \        P"                  ! \%        V4      VR7      pS P&                  P)                  \        V4      4       \        P"                  ! SVRR7      p	V	# VV3R lp
V
! 4       p	V	# )Nz<Custom line terminators not supported in python parser (yet)c                  ó¸   <€ ] tR t^Ðt Z P                  t Z P
                  t Z P                  t Z P                  t Z P                  t Z P                  t	Rt
RtR# )Ú,PythonParser._make_reader.<locals>.MyDialectÚ
r?   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rN   rO   rP   rQ   rR   rT   rS   Ú__static_attributes__©rJ   s   €rA   Ú	MyDialectrˆ   Ð   sC   ø† Ù ŸN™N�	Ù ŸN™N�	Ù!Ÿ_™_�
Ù"×.Ñ.�Ù#'×#8Ñ#8Ð ÙŸ,™,�Ø!%”rD   r�   )ÚdialectT)r‘   Ústrictc               3  óò   <"  € SP                  4       p \        P                  ! S4      pVP                  V P	                  4       4      x € S F$  p VP                  V P	                  4       4      x € K&  	  R # 5irH   )rZ   r~   r€   ÚsplitÚstrip)ÚlineÚpatr<   Úseps     €€rA   Ú_readÚ(PythonParser._make_reader.<locals>._read  sR   øé € Ø—z‘z“|�Ü—j’j “o�à—i‘i §
¡
£Ó-Ò-ã�DØŸ)™) D§J¡J£LÓ1Ô1ó ùs   ƒA4A7)rN   ru   rS   rw   ÚcsvÚDialectrF   rb   r_   rZ   Ú_check_commentsr   rg   re   r`   ÚSnifferÚsniffÚreaderr   r^   Úextend)rJ   r<   r�   Údiar–   ÚlinesÚ	lines_strÚsniffedÚline_rdrr    r™   r˜   s   ff         @rA   ri   ÚPythonParser._make_readerÇ   sµ  ú€ Ø�n‰nˆàŠ;œ#˜c›( a�-Ø×"×"Ð"Ü ØRóð ÷&œCŸK™Kô &ð ˆCàŠØ #�”ð —=‘=Ò,ØŸ-™-¨¯©×1Ò1Ø Ÿz™z›|˜ß#Ù!ØŸš A�Ÿùð —z‘z“|�Ø×,Ñ,¨t¨f¨XÓ6°qÕ9�Ø—m‘m D§H¡H×-Ò-·UØ—H’H •M•HØŸ:™:›<�DØ ×0Ñ0°4°&°Ó:¸1Õ=’EÜ ¤¤c¥¨EÓ2�	ð ! •|�à—’˜A••Ø—’ Õ"•ÜŸ+š+›-×-Ñ-¨dÓ3�Ø '× 1Ñ 1�”ô Ÿ:š:¤h¨t£n¸cÔB�Ø—‘—‘¤ X£Ô/ô —Z’Z ¨3°tÔ<ˆFð ˆö2ñ “WˆFàˆrD   c               ó    € V ^8„  d   QhRRRR/# )r;   Úrowsú
int | Noner=   ú[tuple[Index | None, Sequence[Hashable] | MultiIndex, Mapping[Hashable, ArrayLike | Series]]r?   )r@   s   "rA   rB   rC     s   € ÷ 60ñ 60Øð60ð
ñ60rD   c                	ó  €  V P                  V4      pR T n        \	        T P
                  4      pT'       gs   \        T P
                  \        T P
                  T P                  4      4      pT P                  TT P                  4      w  rSpT P                  Y0P                  4      pYWT3# RpT P                  '       d:   \        R T^ ,           4       4      \        T4      8X  d   T^ ,          pTR,          pT P!                  T4      p	T P#                  T	4      w  r£T P%                  T
4      pT P'                  Y;4      pT P)                  Y“T4      w  r\Y\T3#   \         d*    T P                  '       d   . p ELcT P                  4        h i ; i)FNc              3  óV   "  € T F  p\        VR 8H  ;'       g    VRJ 4      x € K!  	  R# 5i)Ú N)Úint)Ú.0Úvs   & rA   Ú	<genexpr>Ú$PythonParser.read.<locals>.<genexpr>7  s+   é € ð (
Ù/9¨!ŒC��R‘×$Ð$˜1 ˜9×%Ð%«zùs   ‚)˜)ºé   NN)Ú
_get_linesÚStopIterationÚ_first_chunkÚcloserg   rr   r%   r&   Ú	index_colÚ_get_empty_metaÚdtypeÚ_maybe_make_multi_index_columnsrq   rV   Úsumru   Ú_rows_to_colsÚ_exclude_implicit_indexÚ_convert_dataÚ_do_date_conversionsÚ_make_index)rJ   r©   Úcontentrp   ÚnamesÚindexÚcol_dictÚconv_columnsÚindexnamerowÚalldatar]   Ú	conv_dataÚresult_columnss   &&           rA   ÚreadÚPythonParser.read  sy  € ð	Ø—o‘o dÓ+ˆGð "ˆÔô '+¨4¯?©?Ó&;ˆßô  Ø—‘Ü(Ø—O‘OØ—N‘NóóˆEð (,×';Ñ';ØØ—
‘
ó(Ñ$ˆE˜Hð  ×?Ñ?ÀÏÉÓXˆLØ¨Ð0Ð0ð ˆØ××Ð¤Cñ (
Ø/6°q®zó(
ó %
ä�‹\ô%ð # 1�:ˆLØ˜b•kˆGà×$Ñ$ WÓ-ˆØ×4Ñ4°WÓ=‰ˆà×&Ñ& tÓ,ˆ	Ø×-Ñ-¨gÓAˆ	à $× 0Ñ 0°À<Ó PÑˆà iÐ/Ð/øô[ ô 	Ø× × Ð Ø“à—
‘
”Øð	ús   ‚E ÅFÅ1FÅ6Fc               ó    € V ^8„  d   QhRRRR/# )r;   rÊ   úlist[np.ndarray]r=   z8tuple[Mapping[Hashable, np.ndarray], Sequence[Hashable]]r?   )r@   s   "rA   rB   rC   G  s   € ÷ ñ à!ðð 
BñrD   c                	ól  € \        V P                  \        V P                  V P                  4      4      p^ pV P                  '       d   \        V P                  4      p\        V4      pV P                  W!4       \        V4       UUu/ uF  w  rVWT8  g   K  WaWS,           ,          bK  	  uppV3# u uppi )r   )r%   rr   r&   rº   Ú_implicit_indexru   Ú_check_data_lengthÚ	enumerate)rJ   rÊ   rÅ   ÚoffsetÚlen_alldataÚiÚnames   &&     rA   rÀ   Ú$PythonParser._exclude_implicit_indexG  s§   € ô
 Ø�O‰OÜ$Ø—‘Ø—‘óó
ˆð ˆØ××ÐÜ˜Ÿ™Ó(ˆFä˜'“lˆØ×Ñ Ô/ô 6?¸uÔ5Eô
Ù5E©'¨!ÈÉÔ%ˆD˜!�*Õ%Ò%Ñ5Eò
àðð 	ùó 
s   Â
B0ÂB0c               ó    € V ^8„  d   QhRRRR/# )r;   Úsizerª   r=   r«   r?   )r@   s   "rA   rB   rC   `  s   € ÷ 
$ñ 
$Øð
$ð
ñ
$rD   c                	óF   € Vf   V P                   pV P                  VR7      # )N)r©   )Ú	chunksizerÍ   )rJ   rÛ   s   &&rA   Ú	get_chunkÚPythonParser.get_chunk`  s#   € ð Š<à—>‘>ˆDØ�y‰y˜dˆyÓ#Ð#rD   c               ó    € V ^8„  d   QhRRRR/# )r;   r]   zMapping[Hashable, np.ndarray]r=   zMapping[Hashable, ArrayLike]r?   )r@   s   "rA   rB   rC   l  s   € ÷ !
ñ !
à+ð!
ð 
&ñ!
rD   c                	ó  € V P                  V P                  4      pV P                  V P                  4      p/ p/ p\        V P                  \
        4      '       d‚   V P                   Fp  pVf   K	  V P                  V,          pV P                  V,          p\        V\        4      '       d$   W`P                  9  d   V P                  V,          pWtV&   W…V&   Kr  	  MV P                  pV P                  pV P                  VVVVV4      # rH   )
Ú_clean_mappingÚ
convertersr¼   rd   Ú	na_valuesÚdictÚ
na_fvaluesr¯   rr   Ú_convert_to_ndarrays)	rJ   r]   Ú
clean_convÚclean_dtypesÚclean_na_valuesÚclean_na_fvaluesÚcolÚna_valueÚ	na_fvalues	   &&       rA   rÁ   ÚPythonParser._convert_datal  sä   € ð
 ×(Ñ(¨¯©Ó9ˆ
Ø×*Ñ*¨4¯:©:Ó6ˆð ˆØÐä�d—n‘n¤d×+Ò+Ø—~”~�Ø”?Ø#Ÿ~™~¨cÕ2�HØ $§¡°Õ 4�Iä! #¤s×+Ò+°¿?¹?Ô0JØ"Ÿo™o¨cÕ2˜à+3 CÑ(Ø,5 SÓ)ò &ð #Ÿn™nˆOØ#Ÿ™Ðà×(Ñ(ØØØØØó
ð 	
rD   c               ó    € V ^8„  d   QhRRRR/# )r;   Údctr.   r=   zdict[Any, np.ndarray]r?   )r@   s   "rA   rB   rC   �  s"   € ÷ Rñ RàðRð 
ñRrD   c                	ó€  € / p\        V P                  V P                  4      pVP                  4        EF   w  r‰Vf   R MVP	                  VR 4      p
\        V\        4      '       d   VP	                  VR 4      pMTpV P                  '       d   \        W‚W0P                  4      w  rÍM\        4       \        4       rÜW‡9   dS   \        P                  ! V	\        V4      V,          4      p\        P                  ! Wž\        P                  4       W–V&   Kß  V
ep   Ve*   \         P"                  ! RV R2\$        \'        4       R7        \(        P*                  ! Wš4      p	V P7                  V	\        V4      V,          VR J RR7      w  ppMÊ\9        V4      pT;'       g    \;        V4      pT;'       d    T'       * pV P7                  V	\        V4      V,          VR J V4      w  ppVe   \=        V4      pV'       dZ   VP>                  V8w  g	   V'       dA   V'       g'   V^ 8”  d    \A        V4      '       d   \-        RV 24      hV PC                  WûV4      pWöV&   EK#  	  V#   \,         dY    \        P                  ! T	\/        T4      4      P1                  \        P2                  4      p\(        P4                  ! YšT4      p	 ELbi ; i)Nz5Both a converter and dtype were specified for column z# - only the converter will be used.©Ú
stacklevelF)Útry_num_boolz$Bool column has NA values in column )"r+   Úparse_datesrp   Úitemsrf   rd   rå   Ú	na_filterr)   Úkeep_default_naÚsetr    ÚisinÚnpÚputmaskÚnanÚwarningsÚwarnr   r   r   Ú	map_inferrw   rg   ÚviewÚuint8Úmap_infer_maskÚ_infer_typesr   r   r   r¼   r   Ú_cast_types)rJ   rñ   rä   ræ   rã   ÚdtypesÚresultÚparse_date_colsÚcÚvaluesÚconv_fÚ	cast_typeÚcol_na_valuesÚcol_na_fvaluesÚmaskÚcvalsÚna_countÚis_eaÚis_str_or_ea_dtyperõ   s   &&&&&&              rA   rç   Ú!PythonParser._convert_to_ndarrays�  ss  € ð ˆÜ7¸×8HÑ8HÈ$Ï,É,ÓWˆØŸ™Ÿ‰IˆAØ'Ò/‘T°Z·^±^ÀAÀtÓ5LˆFÜ˜&¤$×'Ò'Ø"ŸJ™J q¨$Ó/‘	ð #�	à�~�~ˆ~Ü0=Ø *×.BÑ.Bó1Ñ-�˜~ô 14³´s³u˜~àÔ#ô "—’ v¬s°=Ó/AÀNÕ/RÓS�Ü—
’
˜6¬¯©Ô0Ø"�q‘	ÙàÒ!àÒ(Ü—M’Mð*Ø*+¨Ð,OðQô &Ü#3Ó#5õðFÜ Ÿ]š]¨6Ó:�Fð
 #'×"3Ñ"3ØÜ˜Ó&¨Õ7Ø Ð%Ø!&ð	 #4ó #‘�‘xô 1°Ó;�Ø%*×%HÐ%H¬o¸iÓ.HÐ"ð %.×$DÐ$DÐ2DÔE�ð #'×"3Ñ"3ØÜ˜Ó&¨Õ7Ø Ð%Ø ó	#‘��xð Ò(Ü ,¨YÓ 7�Iß %§+¡+°Ô":¿eß  X°¤\Ü(¨×3Ò3Ü",Ð/SÐTUÐSVÐ-WÓ"XÐXØ ×,Ñ,¨U¸qÓA�Eà�1ŒIñO %ðP ˆøôG "ô FÜ%Ÿ?š?¨6´4¸	³?ÓC×HÑHÌÏÉÓR�DÜ ×/Ò/°ÀÓE“FðFús   ÅIÉAJ=Ê<J=c               ó$   € V ^8„  d   QhRRRRRR/# )r;   r  r0   r  r1   r=   r?   )r@   s   "rA   rB   rC   å  s&   € ÷ Gñ G )ð G¸ð GÈYñ GrD   c                ó:  € \        V\        4      '       d§   VP                  RJp\        VP                  4      '       g"   V'       g   \
        P                  ! VRRR7      p\        VRR7      P                  4       P                  4       p\        P                  ! WUP                  V4      W P                  R7      pV# \        V\        4      '       dˆ   VP                  4       p \        V\         4      '       dO   V Uu. uF  p\#        V4      NK  	  ppVP%                  VVV P                  V P&                  V P(                  R7      # VP%                  WR7      # \        V\,        4      '       d   VP/                  VRR7      pV# \1        VP2                  \"        4      '       d   \
        P                  ! VR
RR7      pV#  \5        WR
R7      pV# u upi   \*         d   p	\+        RT R	24      T	hRp	?	ii ; i  \6         d   p	\7        RT RT 24      T	hRp	?	ii ; i)a  
Cast values to specified type

Parameters
----------
values : ndarray or ExtensionArray
cast_type : np.dtype or ExtensionDtype
   dtype to cast values to
column : string
    column name - used only for error reporting

Returns
-------
converted : ndarray or ExtensionArray
NF)ÚskipnaÚconvert_na_value)Úcopy)Útrue_values)r¼   r  Úfalse_valuesÚnone_values©r¼   zExtension Array: zO must implement _from_sequence_of_strings in order to be used in parser methodsTzUnable to convert column z	 to type )rd   r   Ú
categoriesr   r¼   r   Úensure_string_arrayr$   ÚuniqueÚdropnar!   Ú_from_inferred_categoriesÚget_indexerr  r   Úconstruct_array_typer#   re   Ú_from_sequence_of_stringsr  rä   ÚNotImplementedErrorr"   ÚastypeÚ
issubclassÚtyper   rw   )
rJ   r  r  ÚcolumnÚ
known_catsÚcatsÚ
array_typeÚvalÚ
values_strÚerrs
   &&&&      rA   r  ÚPythonParser._cast_typesä  s  € ô" �iÔ!1×2Ò2Ø"×-Ñ-°TÐ9ˆJä" 6§<¡<×0Ò0¿ô ×0Ò0Ø 5¸5ô�ô ˜ eÔ,×3Ñ3Ó5×<Ñ<Ó>ˆDÜ ×:Ò:Ø×&Ñ& vÓ.°	×GWÑGWôˆFðV ˆôM ˜	¤>×2Ò2Ø"×7Ñ7Ó9ˆJðÜ˜i¬×6Ò6ñ 7=Ó!=±f¨s¤# c¦(±f�JÐ!=Ø%×?Ñ?Ø"Ø'Ø$(×$4Ñ$4Ø%)×%6Ñ%6Ø$(§N¡Nð @ó ð ð &×?Ñ?ÀÐ?ÓXÐXô ˜¤×/Ò/Ø—]‘] 9°5�]Ó9ˆFð ˆô ˜	Ÿ™¬×,Ò,ô ×,Ò,Ø˜t°eôˆFð ˆðÜ% f¸dÔC�ð
 ˆùòA ">øô 'ô Ü)Ø'¨
 |ð 4Vð Vóð ðûðûô$ ô Ü Ø/°¨x°yÀÀÐLóàðûðúsH   Ã$G Ã>GÄ5G ÅG ÇG8 ÇG ÇG5Ç G0Ç0G5Ç8HÈHÈHc               ó   € V ^8„  d   QhRR/# )r;   r=   Úboolr?   )r@   s   "rA   rB   rC   /  s   € ÷ ñ  $ñ rD   c                	ó°   € V P                   f   R# V P                   p\        V\        \        \        P
                  34      '       d   \        V4      ^8„  # R# )NF)Úheaderrd   rg   Útuplerü   Úndarrayru   )rJ   r6  s   & rA   Ú_have_mi_columnsÚPythonParser._have_mi_columns.  sA   € à�;‰;ÒÙà—‘ˆÜ�fœt¤U¬B¯J©JÐ7×8Ò8Ü�v“; ‘?Ð"árD   c               ó   € V ^8„  d   QhRR/# )r;   r=   z9tuple[list[list[Scalar | None]], int, set[Scalar | None]]r?   )r@   s   "rA   rB   rC   9  s   € ÷ u;ñ u;à	Bñu;rD   c           
     	óR  € V P                   p^ pRp\        4       pV P                  Ee£   V P                  pV P                  p\	        V\
        \        \        P                  34      '       d'   V'       d   . \        V4      OVR,          ^,           NpMV.p. p\        V4       EFÚ  w  r‰ V P                  4       p
V P                  V	8:  d   V P                  4       p
K#   . p. p\        V
4       FX  w  ppVR8X  d;   V'       d
   RV RV 2pMRV 2pVP+                  V4       VP+                  V4       KG  VP+                  V4       KZ  	  V'       EgL   \/        \0        4      p\3        \#        V4      4       Uu. uF  pVV9  g   K  VNK  	  upV,           pV EF   pVV,          pTpVV,          pV^ 8”  dÑ   V^ 8”  d1   V^,           VV&   V RV 2pVV9   d   V^,          pK,  VV,          pK7  V P4                  eŒ   \7        V P4                  4      '       dq   V P4                  P9                  V4      eT   V P4                  P9                  V4      f7   V P4                  P;                  VV P4                  P9                  V4      /4       VVV&   V^,           VV&   EK  	  M‰V'       d‚   W•R,          8X  du   \#        V4      pV P<                  pVe   \#        V4      M^ p\#        V4      pVV8w  d   VV,
          V8”  g   V^ 8X  d&   RpR.V,          pV P&                  R,          .V n        VP+                  V4       TP;                  V Uu0 uF  pVV,          kK  	  up4       \#        V4      ^8X  g   EKÏ  \#        V4      pEKÝ  	  V'       d   V P&                  P)                  4        VEe
    V P                  4       pVf   ^ M
\#        V4      p\#        V4      \#        V^ ,          4      8”  d   \#        V4      V8”  d   \%        R4      h\#        V4      ^8”  d   \?        R4      hV P@                  e   V PC                  WqV4       M\#        V4      pV PD                  eS   \#        V4      \#        V PD                  4      8w  d0   \G        V PD                  4       Uu. uF  pVV,          NK  	  up.pEMV.pEMV PC                  Ww^ ,          V4      pMñ\#        V PH                  4      pTpV'       g0   \        \3        V4      4      .pV PC                  Ww^ ,          V4      pM£V P@                  e   \#        V4      V8¼  d!   V PC                  V.VV4      p\#        V4      pMe\K        V P@                  4      '       g/   \#        V4      \#        V P@                  4      8w  d   \%        R4      hV.pV PC                  Ww^ ,          V4       WrV3#   \         Ed7   p^ T P                  u;8  d   T	8:  d}   M MyT'       d   Y•R,          8w  de   \        \        \        T'       d   TRR MT4      4      pRRP!                  T4       R\#        T4       R2p\%        RT RT P                   R	24      ThT'       d^   T	^ 8”  dW   T'       d   T P&                  P)                  4        TP+                  R.\#        TR,          4      ,          4       YrT3u Rp?u # T P                   '       g   \-        R
4      ThT P                   R,          p
 Rp?EL Rp?ii ; iu upi u upi   \         d    Rp ELfi ; iu upi )r   TNÚ[Ú,z
], len of z, zPassed header=z	but only z lines in fileúNo columns to parse from fileºNNNr®   z	Unnamed: Ú_level_Ú.FzHNumber of passed names did not match number of header fields in the filez*Cannot pass names with multi-index columnséÿÿÿÿ)&rÅ   rú   r6  r9  rd   rg   r7  rü   r8  rÔ   Ú_buffered_liner`   Ú
_next_liner·   Úmapre   Újoinru   rw   r^   ÚclearÚappendr   r   r¯   rt   r¼   r   rf   Úupdaterº   Ú	TypeErrorÚusecolsÚ_handle_usecolsrj   ÚsortedÚ_header_linera   )rJ   rÅ   rl   Úclear_bufferrm   r6  Úhave_mi_columnsrp   ÚlevelÚhrr–   r1  ÚjoiÚmsgÚthis_columnsÚthis_unnamed_colsr×   r
  Úcol_nameÚcountsÚcol_loop_orderrì   Úold_colÚ	cur_countÚlcÚsicÚicÚunnamed_countÚ
first_lineÚlen_first_data_rowÚncolss   &                              rA   rk   ÚPythonParser._infer_columns9  sI  € ð —
‘
ˆØ ÐØˆÜ+.«5ˆà�;‰;Ó"Ø—[‘[ˆFØ"×3Ñ3ˆOä˜&¤4¬´·
±
Ð";×<Ò<ç"Ø<œt F›|Ð<¨V°B­Z¸!­^Ð<�Føà ˜�à13ˆGÜ& v×.‘	�ð)Ø×.Ñ.Ó0�DàŸ-™-¨2Ô-Ø#Ÿ™Ó0šð .ð: 57�Ø$&Ð!ä% džO‘D�A�qØ˜B”wß*Ø)2°1°#°W¸U¸GÐ'D™Hà)2°1°# ˜Hà)×0Ñ0°Ô3Ø$×+Ñ+¨HÖ5à$×+Ñ+¨AÖ.ñ ,÷ '�Ü*5´cÓ*:�Fô
 "'¤s¨<Ó'8Ô!9ó&á!9˜AØÐ$5Ñ5÷ ˜Ù!9ñ&ð *õ	&*�Nô ,˜Ø*¨1�o˜Ø"%˜Ø$*¨3¥K˜	à$ qœ=Ø"+¨a¤-Ø2;¸aµ-  w¡Ø)0¨	°°9°+Ð&> Ø#&¨,Ô#6Ø$-°¥N¢Ià06°sµ¢Ið !%§
¡
Ò 6Ü$0°·±×$<Ò$<Ø$(§J¡J§N¡N°7Ó$;Ò$GØ$(§J¡J§N¡N°3Ó$7Ò$?à $§
¡
× 1Ñ 1°3¸¿
¹
¿¹ÀwÓ8OÐ2PÔ QØ*-˜ Q™Ø&/°!¥m˜˜sœò- ,÷. %ð  B�ZÔ'Ü  Ó.˜Ø"Ÿn™n˜Ø),ªœS œX¸a˜Ü(+Ð,=Ó(>˜ð  -Ô/°B¸µG¸mÔ4KÐPRÐVWÔPWØ+0˜LØ,0¨6°B­;˜LØ(,¯©°­ ~˜DœHà—‘˜|Ô,Ø×#Ñ#Ñ>OÓ$PÑ>O¸ \°!§_ _Ñ>OÑ$PÔQä�w“< 1×$Ü+.¨|Ó+<Ó(ñM /÷P Ø—‘—‘Ô ð Ó ð&Ø!%§¡Ó!2�Jð +5Ò*<¡QÄ#ÀjÃ/Ð"ä�u“:¤ G¨A¥J£Ô/´C¸³JÐASÔ4SÜ$ð>óð ô �w“< !Ô#Ü#Ð$PÓQÐQà—<‘<Ò+ð ×(Ñ(¨Ð9MÕNä+.¨u«:Ð(Ø×$Ñ$Ò0´S¸³ZÄ3Ø×%Ñ%óDô 6ô 39¸×9JÑ9JÔ2KÓLÑ2K¨Q  a§ Ñ2KÑLÐM’Gà$˜g’Gà×.Ñ.Ø Q�ZÐ)=ó‘ô ˜×)Ñ)Ó*ˆEØ#(Ð çÜ¤ e£Ó-Ð.�Ø×.Ñ.¨wÀ½
ÀEÓJ‘Ø—‘Ò%¬¨U«°uÔ)<Ø×.Ñ.°¨w¸¸uÓE�Ü'*¨5£zÑ$Ü˜dŸl™l×+Ò+´°E³
¼cÀ$Ç,Á,Ó>OÔ0OÜ ð0óð ð !˜'�Ø×$Ñ$ W°a­j¸%Ô@à¨lÐ:Ð:øôu %õ )Ø˜4Ÿ=™=Ö.¨B×.ß+¨r¸BµZÔ/?ô #¤3¤s¿?¨F°3°B©KÐPVÓ#WÓX˜Ø ! #§(¡(¨3£- °
¼3¸s»8¸*ÀBÐG˜Ü(Ø,¨S¨E°¸4¿=¹=¸/ÈÐXóà"ð#÷ '¨2°¬6ß'Ø ŸH™HŸN™NÔ,ØŸ™¨ v´°G¸BµKÓ0@Õ'@ÔAØ&¸lÐJ×JàŸ:Ÿ:˜:Ü,Ð-LÓMÐSVÐVàŸ:™: a�=–Dûð1)üòZ&ùò^ %Qøô %ô &Ø!%“Jð&üò,  Msh   Â*3WÅ7	\Æ\Í\
Î*\ Ò\$×\×#[>×1A8[>Ù*[>Ù9A[>Ú?\Û[>Û[>Û>\Ü\!Ü \!c                	óÜ   € V P                   e   R #  V P                  4       pV#   \         d=   pT P                  '       g   \	        R4      ThT P                  R,          p R p?T# R p?ii ; i)Nr?  r@  )r6  rD  r·   rÅ   r   )rJ   r–   r1  s   &  rA   rO  ÚPythonParser._header_lineð  sf   € ð �;‰;Ò"Ùð	!Ø×&Ñ&Ó(ˆDð ˆøô ô 	!Ø—:—:�:Ü$Ð%DÓEÈ3ÐNà—:‘:˜a•=ŒDØˆûð	!ús   ’$ ¤A+¯1A&Á&A+c               ó(   € V ^8„  d   QhRRRRRRRR/# )r;   rp   zlist[list[Scalar | None]]Úusecols_keyzlist[Scalar | None]rl   r¯   r=   r?   )r@   s   "rA   rB   rC   ÿ  s2   € ÷ .ñ .à*ð.ð )ð.ð "ð	.ð
 
#ñ.rD   c                ó¾  € V P                   Ee�   \        V P                   4      '       d   \        V P                   V4      pEM\        ;QJ d&    R V P                    4       F  '       g   K   RM	  RM! R V P                    4       4      '       d|   \	        V4      ^8”  d   \        R4      h. pV P                    FM  p\        V\        4      '       d$    VP                  VP                  V4      4       K<  VP                  V4       KO  	  MFV P                    Uu. uF  qUV8¼  g   K  VNK  	  ppV'       d   \        RV R24      hV P                   pV UUU	u. uF*  p\        V4       UU	u. uF  w  r‰W„9   g   K  V	NK  	  up	pNK,  	  pppp	\        V4      V n        V#   \
         d"    T P                  T P                   T4        EK  i ; iu upi u up	pi u up	ppi )zJ
Sets self._col_indices

usecols_key is used if there are string usecols.
c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5irH   )rd   re   )r°   Úus   & rA   r²   Ú/PythonParser._handle_usecols.<locals>.<genexpr>  s   é € Ð>±¨A”Z ¤3×'Ð'³ùs   ‚TFz4If using multiple headers, usecols must be integers.z<Defining usecols with out-of-bounds indices is not allowed. z are out-of-bounds.)rL  ra   r(   Úanyru   rw   rd   re   rI  rÆ   Ú_validate_usecols_namesr   rÔ   rN  rj   )
rJ   rp   rh  rl   Úcol_indicesrì   Úmissing_usecolsr+  r×   Úns
   &&&&      rA   rM  ÚPythonParser._handle_usecolsÿ  sª  € ð �<‰<Ó#Ü˜Ÿ™×%Ò%Ü7¸¿¹ÀkÓR’ß“Ñ>°·²Ó>——’Ñ>°·²Ó>×>Ò>Ü�w“< !Ô#Ü$ØNóð ð !�àŸ<œ<�CÜ! #¤s×+Ò+ðTØ'×.Ñ.¨{×/@Ñ/@ÀÓ/EÖFð $×*Ñ*¨3Ö/ò (ð $(§<¢<ó#Ù#/˜CÐ:NÑ3N—C�C¡<ð  ð #÷ #Ü%ØVØ*Ð+Ð+>ð@óð ð #Ÿl™l�ñ &õá%�Fô  )¨Ô0ÔEÑ0‘t�q°AÑ4D—�Ñ0ÕEÙ%ð ò ô !' {Ó 3ˆDÔØˆøô)  *ô TØ ×8Ñ8¸¿¹À{×SÐSðTüò
#ùó Fùôs<   Ã FÄGÄ'GÅGÅ+
GÅ:GÆ GÆ'G
Ç	G
ÇGc               ó   € V ^8„  d   QhRR/# ©r;   r=   úlist[Scalar]r?   )r@   s   "rA   rB   rC   /  s   € ÷ %ñ % ñ %rD   c                ó|   € \        V P                  4      ^ 8”  d   V P                  ^ ,          # V P                  4       # )z8
Return a line from buffer, filling buffer if required.
)ru   r^   rE  r�   s   &rA   rD  ÚPythonParser._buffered_line/  s/   € ô ˆt�x‰x‹=˜1ÔØ—8‘8˜A•;Ðà—?‘?Ó$Ð$rD   c               ó    € V ^8„  d   QhRRRR/# )r;   Ú	first_rowru  r=   r?   )r@   s   "rA   rB   rC   8  s   € ÷ 3,ñ 3,¨ð 3,¸ñ 3,rD   c                óø  € V'       g   V# \        V^ ,          \        4      '       g   V# V^ ,          '       g   V# V^ ,          ^ ,          pV\        8w  d   V# V^ ,          p\        V4      ^8”  dq   V^,          V P                  8X  dY   ^pV^,          pVR,          P                  V4      ^,           pW4V p\        V4      V^,           8”  d   WsV^,           R ,          pM	VR,          pV.pW�R,          ,           # )zý
Checks whether the file begins with the BOM character.
If it does, remove it. In addition, if there is quoting
in the field subsequent to the BOM, remove it as well
because it technically takes place at the beginning of
the name, not the middle of it.
:r;   NNNr´   )rd   re   Ú_BOMru   rO   rÆ   )	rJ   ry  Ú	first_eltÚfirst_row_bomÚstartÚquoteÚendÚnew_rowÚnew_row_lists	   &&       rA   Ú_check_for_bomÚPythonParser._check_for_bom8  sø   € ÷ ØÐô
 ˜) A�,¬×,Ò,ØÐð ˜�|Œ|ØÐð ˜a•L •Oˆ	ØœÔØÐà! !�ˆô ˆ}Ó Ô! m°AÕ&6¸$¿.¹.Ô&HØˆEØ! !Õ$ˆEØ Õ#×)Ñ)¨%Ó0°1Õ4ˆCð $¨#Ð.ˆGô �=Ó! C¨!¥GÔ+Ø¨¨q­¨Ð3Õ3�øð $ BÕ'ˆGà&- YˆØ¨�mÕ+Ð+rD   c               ó    € V ^8„  d   QhRRRR/# )r;   r–   zSequence[Scalar]r=   r4  r?   )r@   s   "rA   rB   rC   m  s   € ÷ 4ñ 4Ð#3ð 4¸ñ 4rD   c                óˆ   € V'       * ;'       g5    \         ;QJ d    R V 4       F  '       d   K   R# 	  R# ! R V 4       4      # )z¬
Check if a line is empty or not.

Parameters
----------
line : str, array-like
    The line of data to check.

Returns
-------
boolean : Whether or not the line is empty.
c              3  ó.   "  € T F  q'       * x € K  	  R # 5irH   r?   )r°   rI   s   & rA   r²   Ú.PythonParser._is_line_empty.<locals>.<genexpr>z  s   é € Ð3©d¨Ÿu™u«dùs   ‚FT)Úall)rJ   r–   s   &&rA   Ú_is_line_emptyÚPythonParser._is_line_emptym  s7   € ð Œx×3Ð3Ÿ3›3Ñ3©dÓ3Ÿ3œ3Ð3š3Ð3˜3Ñ3©dÓ3Ó3Ð3rD   c               ó   € V ^8„  d   QhRR/# rt  r?   )r@   s   "rA   rB   rC   |  s   € ÷ 4ñ 4˜Lñ 4rD   c                	ó¶  € \        V P                  \        4      '       EdA   V P                  V P                  4      '       dA   V P                  \        V P                  4      8¼  d   MV ;P                  ^,          un        Ka    V P                  V P                  V P                  ,          .4      ^ ,          pV ;P                  ^,          un        V P                  '       gD   V P                  V P                  V P                  ^,
          ,          4      '       g	   V'       d   EMBV P                  '       d(   V P                  V.4      pV'       d   V^ ,          pEMKÝ  Kß  V P                  V P                  4      '       d1   V ;P                  ^,          un        \        V P                  4       KQ   V P                  V P                  ^,           R7      pV ;P                  ^,          un        Vf   KC  V P                  V.4      ^ ,          pV P                  '       d'   V P                  V.4      pV'       d   V^ ,          pM$K”  V P                  V4      '       g   V'       g   Kµ   V P                  ^8X  d   V P                  V4      pV ;P                  ^,          un        V P                   P#                  V4       V#   \         d   p\        ThRp?ii ; i)rµ   N©Úrow_num)rd   r]   rg   rb   r_   ru   r�   rU   rŠ  Ú_remove_empty_linesÚ
IndexErrorr·   ÚnextÚ_next_iter_linerƒ  r`   r^   rI  )rJ   r–   Úretr1  Ú	orig_lines   &    rA   rE  ÚPythonParser._next_line|  s	  € Ü�d—i‘i¤×&Ó&Ø—-‘- §¡×)Ò)Ø—8‘8œs 4§9¡9›~Ô-ØØ—’˜A•—àð1Ø×/Ñ/°·±¸4¿8¹8Õ1DÐ0EÓFÀqÕI�DØ—H’H •M•Hà×0×0Ð0Ø×+Ñ+¨D¯I©I°d·h±hÀµlÕ,C×DÒDÏáØ×,×,Ð,Ø"×6Ñ6¸°vÓ>˜ßØ#& q¥6˜DÙ!ñ ñ -ð —-‘- §¡×)Ò)Ø—’˜A••Ü�T—Y‘Y–àØ ×0Ñ0¸¿¹ÀA½Ð0ÓF�	Ø—’˜A••àÔ(Ø×/Ñ/°°Ó<¸QÕ?�Dà×,×,Ð,Ø"×6Ñ6¸°vÓ>˜çØ#& q¥6˜DØ!ñ ð ×,Ñ,¨Y×7Ò7¿4¹4Øð
 �8‰8�qŒ=Ø×&Ñ& tÓ,ˆDà�Š˜Õ�Ø�‰�‰˜ÔØˆøô? "ô 1Ü'¨SÐ0ûð1ús7   ÂAK Ã$8K ÄK Ä'K Ä9K Å	K ËKËKËKc               ó$   € V ^8„  d   QhRRRRRR/# )r;   rU  re   r�  r¯   r=   r>   r?   )r@   s   "rA   rB   rC   ²  s!   € ÷ ñ  Cð °#ð ¸$ñ rD   c                óB  € V P                   V P                  P                  8X  d   \        V4      hV P                   V P                  P                  8X  g   \        V P                   4      '       d/   \        P                  ! RV RV R2\        \        4       R7       R# R# )a¸  
Alert a user about a malformed row, depending on value of
`self.on_bad_lines` enum.

If `self.on_bad_lines` is ERROR, the alert will be `ParserError`.
If `self.on_bad_lines` is WARN, the alert will be printed out.

Parameters
----------
msg: str
    The error message to display.
row_num: int
    The row number where the parsing error occurred.
    Because this row number is displayed, we 1-index,
    even though we 0-index internally.
zSkipping line z: r‰   ró   N)
Úon_bad_linesÚBadLineHandleMethodÚERRORr   ÚWARNra   rÿ   r   r   r   )rJ   rU  r�  s   &&&rA   Ú_alert_malformedÚPythonParser._alert_malformed²  s‰   € ð" ×Ñ × 8Ñ 8× >Ñ >Ô>Ü˜cÓ"Ð"Ø×Ñ × 8Ñ 8× =Ñ =Ô=ÄØ×Ñ÷B
ò B
ô �MŠMØ   	¨¨C¨5°Ð3ÜÜ+Ó-÷ñB
rD   c               ó    € V ^8„  d   QhRRRR/# )r;   r�  r¯   r=   zlist[Scalar] | Noner?   )r@   s   "rA   rB   rC   Î  s   € ÷ ,ñ , sð ,Ð/Bñ ,rD   c                óÐ  €  \        V P                  \        4      '       d   Q h\        V P                  4      pV#   \        P
                   d–   pT P                  T P                  P                  T P                  P                  39   dP   \        T4      pRT9   g   RT9   d   RpT P                  ^ 8”  d   RpTRT,           ,          pT P                  YA4        Rp?R# Rp?ii ; i)a  
Wrapper around iterating through `self.data` (CSV source).

When a CSV error is raised, we check for specific
error messages that allow us to customize the
error message displayed to the user.

Parameters
----------
row_num: int
    The row number of the line being parsed.
z	NULL bytezline contains NULz„NULL byte detected. This byte cannot be processed in Python's native csv library at the moment, so please pass in engine='c' insteadz¡Error could possibly be due to parsing errors in the skipped footer rows (the skipfooter keyword is only applied after Python's csv library has parsed all rows).ú. N)rd   r]   rg   r’  r›   ÚErrorr™  rš  r›  rœ  re   rM   r�  )rJ   r�  r–   ÚerU  Úreasons   &&    rA   r“  ÚPythonParser._next_iter_lineÎ  sÓ   € ð	Ü! $§)¡)¬T×2Ò2Ð2Ð2Ü˜Ÿ	™	“?ˆDàˆKøÜ�y‰yô 	Ø× Ñ Ø×(Ñ(×.Ñ.Ø×(Ñ(×-Ñ-ð%ô ô ˜!“f�à #Ô%Ð)<ÀÔ)Cð?ð ð —?‘? QÔ&ð%ð ð ˜4 &�=Õ(�Cà×%Ñ% cÔ3Ýûð5	ús   ‚8; »C%ÁB
C Ã C%c               ó    € V ^8„  d   QhRRRR/# ©r;   r£   úlist[list[Scalar]]r=   r?   )r@   s   "rA   rB   rC   ü  s   € ÷ ñ Ð%7ð Ð<Nñ rD   c                	ó†  € V P                   f   V# . pV F¨  p. pV FŒ  p\        V\        4      '       d"   V P                   V9  g   WPP                  9   d   VP	                  V4       KM  VR VP                  V P                   4       p\        V4      ^ 8”  d   VP	                  V4        M	  VP	                  V4       Kª  	  V# rH   )rY   rd   re   rä   rI  Úfindru   )rJ   r£   r”  r–   ÚrlrI   s   &&    rA   r�   ÚPythonParser._check_commentsü  s¤   € Ø�<‰<ÒØˆLØˆÛˆDØˆBÛ�ä" 1¤c×*Ò*Ø—|‘|¨1Ô,ØŸN™NÔ*à—I‘I˜a–LàÐ0˜AŸF™F 4§<¡<Ó0Ð1�AÜ˜1“v ”zØŸ	™	 !œÙñ ð �J‰J�rŽNñ ð ˆ
rD   c               ó    € V ^8„  d   QhRRRR/# ©r;   r£   zlist[list[T]]r=   r?   )r@   s   "rA   rB   rC     s   € ÷ ñ ¨ð ¸=ñ rD   c                óî   € V Uu. uFc  p\        V4      ^8”  gO   \        V4      ^8X  g   K%  \        V^ ,          \        4      '       d    V^ ,          P                  4       '       g   Ka  VNKe  	  ppV# u upi )a?  
Iterate through the lines and remove any that are
either empty or contain only one whitespace value

Parameters
----------
lines : list of list of Scalars
    The array of lines that we are to filter.

Returns
-------
filtered_lines : list of list of Scalars
    The same array of lines with the "empty" ones removed.
)ru   rd   re   r•   )rJ   r£   r–   r”  s   &&  rA   r�  Ú PythonParser._remove_empty_lines  sl   € ñ$ ó	
á�ä�D“	˜A”ä˜“I ‘Nô ô
 -7°t¸AµwÄ×,DÒ,DÈÈQÍÏÉÏ÷ ˆDÙð 	ð 	
ð ˆ
ùò	
s   …"A2¬7A2Á(A2c               ó    € V ^8„  d   QhRRRR/# r§  r?   )r@   s   "rA   rB   rC   -  s   € ÷ 
ñ 
Ð&8ð 
Ð=Oñ 
rD   c                	ó\   € V P                   f   V# V P                  WP                   RR7      # )Nr®   ©r£   ÚsearchÚreplace)rW   Ú_search_replace_num_columns©rJ   r£   s   &&rA   Ú_check_thousandsÚPythonParser._check_thousands-  s2   € Ø�>‰>Ò!ØˆLà×/Ñ/Ø§¡¸ð 0ó 
ð 	
rD   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r;   r£   r¨  r´  re   rµ  r=   r?   )r@   s   "rA   rB   rC   5  s,   € ÷ ñ Ø'ðØ14ðØ?Bðà	ñrD   c                	ó†  € . pV F¸  p. p\        V4       F“  w  rx\        V\        4      '       dF   W(9  g@   WpP                  9   g0   V P                  P                  VP                  4       4      '       g   VP                  V4       Ks  VP                  VP                  W#4      4       K•  	  VP                  V4       Kº  	  V# rH   )	rÔ   rd   re   r9   r‚   r´  r•   rI  rµ  )	rJ   r£   r´  rµ  r”  r–   r«  r×   rI   s	   &&&&     rA   r¶  Ú(PythonParser._search_replace_num_columns5  s“   € ð ˆÛˆDØˆBÜ! $ž‘�ä" 1¤c×*Ò*Ø”Ø×6Ñ6Ô6ØŸ8™8Ÿ?™?¨1¯7©7«9×5Ò5à—I‘I˜a–Là—I‘I˜aŸi™i¨Ó8Ö9ñ (ð �J‰J�rŽNñ ð ˆ
rD   c               ó    € V ^8„  d   QhRRRR/# r§  r?   )r@   s   "rA   rB   rC   H  s   € ÷ 
ñ 
Ð$6ð 
Ð;Mñ 
rD   c                	óx   € V P                   \        R ,          8X  d   V# V P                  WP                   RR7      # )rX   rB  r³  )rX   r*   r¶  r·  s   &&rA   Ú_check_decimalÚPythonParser._check_decimalH  s9   € Ø�<‰<œ?¨9Õ5Ô5ØˆLà×/Ñ/Ø§¡°cð 0ó 
ð 	
rD   c               ó   € V ^8„  d   QhRR/# )r;   r=   z@tuple[Sequence[Hashable] | None, list[Hashable], list[Hashable]]r?   )r@   s   "rA   rB   rC   P  s   € ÷ K/ñ K/à	IñK/rD   c                ó´  € V P                   p\        V4      p\        V4      pV P                  e   V P                  pM V P                  4       p V P                  4       p^ pVeî   V P
                  pVRJd   \        V4      V P                  ,
          pVe¼   V P                  e®   VRJd¨   \        V4      \        V4      V P                  ,           8X  d~   \        \        \        V4      4      4      V n        V P                  R,          V n
        \        V4       F  pVP                  ^ V4       K  	  \        V4      p\        V4      V n        W2V3# V^ 8”  d2   RV n        V P
                  f   \        \        V4      4      V n        RpM#V P                  WP
                  4      w  r‰V n        W‚V3#   \         d    Rp ELsi ; i  \         d    Rp ELvi ; i)aˆ  
Try several cases to get lines:

0) There are headers on row 0 and row 1 and their
total summed lengths equals the length of the next line.
Treat row 0 as columns and row 1 as indices
1) Look for implicit index: there are more columns
on row 1 than row 0. If this is true, assume that row
1 lists index columns and row 0 lists normal columns.
2) Get index from the columns if it was listed.
NFr´   T)rr   rg   rO  rE  r·   rº   ru   rl   r6  rt   r^   ÚreversedÚinsertrÒ   Ú_clean_index_names)
rJ   rp   rr   r–   Ú	next_lineÚimplicit_first_colsrº   r
  Ú
index_namery   s
   &         rA   rs   ÚPythonParser._get_index_nameP  s±  € ð '+§o¡oˆÜ˜'“]ˆ
Ü�w“-ˆð ×ÑÒ(Ø×$Ñ$‰DðØ—‘Ó(�ð
	ØŸ™Ó)ˆIð
  ÐØÒð Ÿ™ˆIØ Ó%Ü&)¨$£i°$×2KÑ2KÕ&KÐ#ð Ò%Ø—K‘KÒ+Ø UÓ*ä�y“>¤S¨£Y°×1JÑ1JÕ%JÔJä%)¬%´°D³	Ó*:Ó%;�D”NØ#Ÿx™x¨�|�D”Hä% dž^˜ØŸ™ q¨!Ö,ñ ,ô "& g£�JÜ03°G³�DÔ-Ø¨WÐ4Ð4à Ô"à#'ˆDÔ Ø�~‰~Ò%Ü!%¤eÐ,?Ó&@Ó!A�”à‰Jð /3×.EÑ.EØŸ™ó/Ñ+ˆZ˜DœNð  wÐ.Ð.øôg !ô Ø“ðûô ô 	Ø‹Ið	ús#   ¿F2 ÁG Æ2GÇGÇGÇGc               ó    € V ^8„  d   QhRRRR/# )r;   rÄ   r¨  r=   rÐ   r?   )r@   s   "rA   rB   rC   �  s    € ÷ Sñ SÐ%7ð SÐ<Lñ SrD   c                	óš  € V P                   pV P                  '       d   V\        V P                  4      ,          p\	        R  V 4       4      pW28”  Ed|   V P                  RJEdk   V P
                  Ef\   V P                  '       d   V P                  M^ p. p\        V4      p\        V4      p. pV EFv  w  r‰\        V	4      p
W¢8”  EdN   \        V P                  4      '       d˜   V P                  V	4      pVe�   \        \        \        ,          V4      p\        V4      V8”  dC   V P                  Wx,
          V,           ,
          pVP                  V\        V4      R34       VRV pVP                  V4       KÈ  KÊ  V P                  V P                  P                   V P                  P"                  39   d^   V P                  Wx,
          V,           ,
          pVP                  WÊR34       V P                  V P                  P                   8X  d    MEKb  EKe  VP                  V	4       EKy  	  V Fž  w  rÊpRV RV^,            RV
 2pVR8X  d   VR,          pM]V P$                  '       dL   \        V P$                  4      ^8”  d2   V P&                  \(        P*                  8w  d   R	pVR
V,           ,          pV P-                  Wì^,           4       K   	  \        \.        P0                  ! WR7      P2                  4      pV P
                  '       dµ   V P4                  f   Q hV P4                  pV P                  '       d_   \        V4       UUu. uFE  w  ppV\        V P                  4      8  g$   V\        V P                  4      ,
          V9   g   KC  VNKG  	  pppV# \        V4       UUu. uF  w  ppVV9   g   K  VNK  	  pppV# u uppi u uppi )c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irH   )ru   )r°   Úrows   & rA   r²   Ú-PythonParser._rows_to_cols.<locals>.<genexpr>£  s   é € Ð2©' 3”c˜#—h�h«'ùs   ‚FNra   Únormalz	Expected z fields in line z, saw z from bad_lines callablezXError could possibly be due to quotes being ignored when a multi-char delimiter is used.r¡  )Ú	min_width)rl   rÒ   ru   rº   ÚmaxrL  rM   rÔ   ra   r™  r   rg   r   r_   rI  rš  r›  rœ  rN   rT   r›   Ú
QUOTE_NONEr�  r   Úto_object_arrayr3   rj   )rJ   rÄ   Úcol_lenÚmax_lenÚfootersÚ	bad_linesÚiter_contentÚcontent_lenr×   Ú_contentÚ
actual_lenÚnew_lr�  ÚsourcerU  r¤  Úzipped_contentro  Úas   &&                 rA   r¿   ÚPythonParser._rows_to_cols�  sN  € Ø×+Ñ+ˆà××ÐØ”s˜4Ÿ>™>Ó*Õ*ˆGäÑ2©'Ó2Ó2ˆð
 Õ §¡°uÔ!<ÀÇÁÓAUØ)-¯¯¨�d—o’o¸aˆGØˆIä$ WÓ-ˆLÜ˜g›,ˆKØˆGä+‘�Ü  ›]�
ØÕ'Ü × 1Ñ 1×2Ò2Ø $× 1Ñ 1°(Ó ;˜Ø Ò,Ü$(¬¬f­°uÓ$=˜EÜ" 5›z¨GÔ3Ø*.¯(©(°kµoÈÕ6OÕ*P Ø )× 0Ñ 0°'¼3¸u»:ÀzÐ1RÔ SØ(-¨h¨w¨ Ø#ŸN™N¨5Ö1ñ -ð ×*Ñ*Ø×0Ñ0×6Ñ6Ø×0Ñ0×5Ñ5ð/ô ð #'§(¡(¨k­oÀÕ.GÕ"H˜Ø!×(Ñ(¨'¸xÐ)HÔIØ×,Ñ,°×0HÑ0H×0NÑ0NÔNÙ!ò Oòð —N‘N 8×,ñ-  ,ó0 09Ñ+� Và ˜yÐ(8¸À1½¸ÀVÈJÈ<ÐXð ð ˜ZÔ'ØÐ5Õ5‘Cà—N—N�NÜ˜DŸN™NÓ+¨aÔ/ØŸ™¬¯©Ô6ðGð ð ˜4 &�=Õ(�Cà×%Ñ% c°Q­;Ö7ñ% 09ô* œc×1Ò1°'ÔM×OÑOÓPˆà�<�<ˆ<Ø×$Ñ$Ò0Ð0Ð0Ø×+Ñ+ˆKà×#×#Ð#ô !*¨.Ô 9ô"á 9™˜˜1àœC §¡Ó/Ô/Øœs 4§>¡>Ó2Õ2°kÑA÷	 �AÙ 9ð ñ "ð Ðô #,¨NÔ";ô"Ù";™$˜!˜Q¸qÀKÑ?O—A�AÑ";ð ñ "ð Ðùó"ùó"s   ÍA OÎOÎ%OÎ6Oc               ó    € V ^8„  d   QhRRRR/# )r;   r©   rª   r=   r¨  r?   )r@   s   "rA   rB   rC   ò  s   € ÷ L*ñ L*˜zð L*Ð5Gñ L*rD   c                	ó‚  € V P                   pR pVe[   \        V P                   4      V8¼  d%   V P                   R V V P                   VR  uq0n         MV\        V P                   4      ,          pVEf   \        V P                  \        4      '       dÅ   V P
                  \        V P                  4      8”  d   \        hVf0   V P                  V P
                  R  p\        V P                  4      pM=V P                  V P
                  V P
                  V,            pV P
                  V,           pV P                  V4      pVP                  V4       W@n        EM. p Ve¬   ^ p^ pV P
                  e   V P
                  M^ pWa8  dX   \        V P                  4      pV P                  Wu,           4      '       g
   V^,          pV^,          pVP                  V4       K]  \        V4      p	V P                  V4      pVP                  V4       MO^ p V P                  V P
                  V,           ^,           R7      p
V^,          pV
f   K:  VP                  V
4       KM  V ;P
                  V	,          un        . V n         MTpV P                  '       d   VR V P                  )  pV P                  V4      pV P                  '       d   V P!                  V4      pV P#                  V4      pV P%                  V4      #   \         dB    \        T4      p	T P                  T4      pTP                  T4       \        T4      ^ 8X  d   h  Læi ; i)NrŽ  )r^   ru   rd   r]   rg   r_   r·   Ú_remove_skipped_rowsr¡   r’  rb   rI  r“  rM   r�   rU   r�  r¸  r¿  )rJ   r©   r£   Únew_rowsÚnew_posÚ	row_indexÚrow_ctrÕ   r�  Úlen_new_rowsÚnext_rows   &&         rA   r¶   ÚPythonParser._get_linesò  s§  € Ø—‘ˆØˆð Òä�4—8‘8‹} Ô$Ø%)§X¡X¨e¨t _°d·h±h¸t¸u°oÐ"��(ð œ˜DŸH™H›Õ%�àÓÜ˜$Ÿ)™)¤T×*Ò*Ø—8‘8œc $§)¡)›nÔ,Ü'Ð'Ø’<Ø#Ÿy™y¨¯©¨Ð4�HÜ! $§)¡)›n‘Gà#Ÿy™y¨¯©°D·H±H¸tµOÐD�HØ"Ÿh™h¨�o�Gà×4Ñ4°XÓ>�Ø—‘˜XÔ&Ø"–ð �ðØÒ'Ø$%˜	Ø!"˜Ø-1¯X©XÒ-A §¢Àq˜Ø$œmÜ&*¨4¯9©9£o˜GØ#'§=¡=°Õ1C×#DÒ#DØ &¨!¥ Ø%¨�N˜IØ$ŸO™O¨GÖ4ä'*¨8£}˜Ø#'×#<Ñ#<¸XÓ#F˜ØŸ™ XÕ.à ˜à"Ø'+×';Ñ';ÀDÇHÁHÈtÅOÐVWÕDWÐ';Ó'X˜HØ  A�I˜Dà'Ô3Ø (§¡°Ö 9ð —’˜LÕ(•àˆD�HàˆEà�?�?ˆ?ØÐ,˜TŸ_™_Ð,Ð-ˆEà×$Ñ$ UÓ+ˆØ× × Ð Ø×,Ñ,¨UÓ3ˆEØ×%Ñ% eÓ,ˆØ×"Ñ" 5Ó)Ð)øô' %ô Ü#& x£=�LØ#×8Ñ8¸ÓB�HØ—L‘L Ô*Ü˜5“z Q”Øñ 'ð	ús    ÅB.K2 È7K2 ÉK2 Ë2A	L>Ì=L>c               ó    € V ^8„  d   QhRRRR/# )r;   rä  r¨  r=   r?   )r@   s   "rA   rB   rC   @  s   € ÷ ñ Ð-?ð ÐDVñ rD   c                	óÆ   € V P                   '       dI   \        V4       UUu. uF0  w  r#V P                  W P                  ,           4      '       d   K.  VNK2  	  upp# V# u uppi rH   )rF   rÔ   rb   r_   )rJ   rä  r×   rÍ  s   &&  rA   rã  Ú!PythonParser._remove_skipped_rows@  sN   € Ø�=�=ˆ=ä"+¨HÔ"5ôÙ"5™˜¸T¿]¹]È1ÏxÉxÍ<×=X—�Ñ"5òð ð ˆùós   ¡+AÁAc               ó   € V ^8„  d   QhRR/# )r;   r=   r8   r?   )r@   s   "rA   rB   rC   G  s   € ÷ $ñ $¨(ñ $rD   c                	ó>  € \        4       pV P                  '       dI   V P                  '       d7   V P                  f   Q hV P	                  V P                  V P                  4      pV P                  '       Ed&   V P
                  '       Ed   V P                  f   Q h\        V P                  V P                  RR7       FÜ  w  r#\        V P
                  \        4      '       g-   \        V P
                  4      '       g   VP                  V4       \        V P
                  \        4      '       g   Ks  W0P
                  9   g   K…  \        V P
                  V,          4      '       d%   \        V P
                  V,          4      '       g   KË  VP                  V4       KÞ  	  V# )NT©r’   )rú   rp   rö   rj   Ú_set_noconvert_dtype_columnsr¼   Úziprd   rå   r   Úaddr   )rJ   Úno_thousands_columnsr×   rì   s   &   rA   rv   Ú%PythonParser._set_no_thousand_columnsG  s#  € Ü),«ÐØ�<�<ˆ<˜D×,×,Ð,Ø×$Ñ$Ò0Ð0Ð0Ø#'×#DÑ#DØ×!Ñ! 4§<¡<ó$Ð ð �<�<‰<˜DŸJŸJ™JØ×$Ñ$Ò0Ð0Ð0Ü˜d×/Ñ/°·±Àd×K‘�Ü! $§*¡*¬d×3Ò3Ô<LØ—J‘J÷=ò =ð )×,Ñ,¨QÔ/ä˜tŸz™z¬4×0Ô0ØŸz™zÖ)ä,¨T¯Z©Z¸­_×=Ò=Ü(¨¯©°C­×9Ô9ð )×,Ñ,¨QÖ/ñ Lð $Ð#rD   )rj   r¸   rÒ   r9   r^   rq   rp   rY   r]   rX   rN   rQ   rP   rV   rº   ro   r`   rS   rl   rr   r_   rO   rT   rU   rM   rb   rR   rF   rW   rm   rH   )NN)&rŠ   r‹   rŒ   r�   Ú__annotations__r\   r   r‚   ri   rÍ   rÀ   rÞ   rÁ   r   rç   r  r9  rk   rO  rM  rD  rƒ  rŠ  rE  r�  r“  r�   r�  r¸  r¶  r¿  rs   r¿   r¶   rã  rv   rŽ   Ú__classcell__)rz   s   @rA   r7   r7   `   s
  ø‡ Ø#Ó#÷UHð UHðn ô
!ó ð
!õF÷P60õp÷2
$õ!
ðF öRó ðRðh ôGó ðGðR ôó ðõu;ðn ñó ðõ.õ`%õ3,õj4õ4õlõ8,õ\õ*õ8
õõ&
õK/õZS÷jL*õ\÷$ó $rD   r7   c                  óV   € ] tR tRtRtRR R lltRR R lltRR R	 lltR
 R ltRt	R# )ÚFixedWidthReaderia  z 
A reader of fixed-width lines.
Nc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
RRR/# )r;   r<   r…   Úcolspecsz(list[tuple[int, int]] | Literal['infer']rN   z
str | NonerY   rF   úset[int] | NoneÚinfer_nrowsr¯   r=   r>   r?   )r@   s   "rA   rB   ÚFixedWidthReader.__annotate__f  sP   € ÷ $ñ $à'ð$ð ;ð$ð ð	$ð
 ð$ð "ð$ð ð$ð 
ñ$rD   c           	     	ó¤  € Wn         R V n        V'       d
   RV,           MRV n        W@n        VR8X  d   V P	                  WeR7      V n        MW n        \        V P
                  \        \        34      '       g"   \        R\        V4      P                   24      hV P
                   F¨  p\        V\        \        34      '       d�   \        V4      ^8X  dq   \        V^ ,          \        \        P                  \        R 4      34      '       d:   \        V^,          \        \        P                  \        R 4      34      '       d   KŸ  \        R4      h	  R # )Nz
z
	 Úinfer)rý  rF   z;column specifications must be a list or tuple, input was a zEEach column specification must be 2 element tuple or list of integers)r<   ÚbufferrN   rY   Údetect_colspecsrû  rd   r7  rg   rK  r*  rŠ   ru   r¯   rü   Úinteger)rJ   r<   rû  rN   rY   rF   rý  Úcolspecs   &&&&&&& rA   r\   ÚFixedWidthReader.__init__f  s	  € ð ŒØ'+ˆŒß/8˜ )Ö+¸iˆŒØŒØ�wÔØ ×0Ñ0Ø'ð 1ó ˆD�Mð %ŒMä˜$Ÿ-™-¬%´¨×7Ò7ÜðÜ# H›~×6Ñ6Ð7ð9óð ð
 —}”}ˆGä˜7¤U¬D M×2Ò2Ü˜“L AÔ%Ü˜w q�z¬C´·±¼TÀ$»ZÐ+H×IÒIÜ˜w q�z¬C´·±¼TÀ$»ZÐ+H×IÔIäð:óð ó %rD   c               ó$   € V ^8„  d   QhRRRRRR/# )r;   rý  r¯   rF   rü  r=   ú	list[str]r?   )r@   s   "rA   rB   rþ  Œ  s!   € ÷ $ñ $ Cð $°?ð $Èiñ $rD   c                óú   € Vf   \        4       p. p. p\        V P                  4       F?  w  rVWR9  d   VP                  V4       VP                  V4       \	        V4      V8¼  g   K?   M	  \        V4      V n        V# )a1  
Read rows from self.f, skipping as specified.

We distinguish buffer_rows (the first <= infer_nrows
lines) from the rows returned to detect_colspecs
because it's simpler to leave the other locations
with skiprows logic alone than to modify them to
deal with the fact we skipped some rows here as
well.

Parameters
----------
infer_nrows : int
    Number of rows to read from self.f, not counting
    rows that are skipped.
skiprows: set, optional
    Indices of rows to skip.

Returns
-------
detect_rows : list of str
    A list containing the rows to read.

)rú   rÔ   r<   rI  ru   Úiterr  )rJ   rý  rF   Úbuffer_rowsÚdetect_rowsr×   rÍ  s   &&&    rA   Úget_rowsÚFixedWidthReader.get_rowsŒ  sv   € ð2 ÒÜ“uˆHØˆØˆÜ §¡Ö'‰FˆAØÔ Ø×"Ñ" 3Ô'Ø×Ñ˜sÔ#Ü�;Ó ;Ö.Ùñ (ô ˜;Ó'ˆŒØÐrD   c               ó$   € V ^8„  d   QhRRRRRR/# )r;   rý  r¯   rF   rü  r=   zlist[tuple[int, int]]r?   )r@   s   "rA   rB   rþ  ²  s$   € ÷ ñ ØðØ0?ðà	ñrD   c                	ó6  € R P                  V P                   Uu. uF  pRV 2NK
  	  up4      p\        P                  ! RV R24      pV P	                  W4      pV'       g   \        R4      h\        \        \        V4      4      p\        P                  ! V^,           \        R7      pV P                  e1   V U	u. uF$  q™P                  V P                  4      ^ ,          NK&  	  pp	V F;  p	VP                  V	4       F#  p
^WŠP                  4       V
P!                  4       % K%  	  K=  	  \        P"                  ! V^4      p^ V^ &   \        P$                  ! W‹,          ^8H  4      ^ ,          p\'        \)        VR,          VR,          RR	7      4      pV# u upi u up	i )
r®   Ú\z([^z]+)z(No rows from which to infer column widthr  :NNr;   :rµ   Nr;   Trð  )rG  rN   r~   r€   r  r   rÑ  rF  ru   rü   Úzerosr¯   rY   Ú	partitionÚfinditerr~  r€  ÚrollÚwhererg   rò  )rJ   rý  rF   rI   Ú
delimitersÚpatternr©   rÕ  r  rÍ  ÚmÚshiftedÚedgesÚ
edge_pairss   &&&           rA   r  Ú FixedWidthReader.detect_colspecs²  sK  € ð —W‘W°·²Ó?±¨1  1 #›h±Ñ?Ó@ˆ
Ü—*’*˜s : ,¨cÐ2Ó3ˆØ�}‰}˜[Ó3ˆßÜ Ð!KÓLÐLÜ”cœ#˜t“nÓ%ˆÜ�xŠx˜ !�¬3Ô/ˆØ�<‰<Ò#Ù>BÓC¹d°s—M‘M $§,¡,Ó/°×2Ð2¹dˆDÐCÛˆCØ×%Ñ% cÖ*�Ø,-�—W‘W“Y §¡£Ò)ó +ñ ô —'’'˜$ Ó"ˆØˆ�‰
Ü—’˜$�.¨QÑ.Ó/°Õ2ˆÜœ#˜e C�j¨%°­+¸dÔCÓDˆ
ØÐùò! @ùò Ds   šFÂ;*Fc               ó   € V ^8„  d   QhRR/# )r;   r=   r  r?   )r@   s   "rA   rB   rþ  È  s   € ÷ 
Wñ 
W˜)ñ 
WrD   c                	óR  € V P                   e    \        V P                   4      pM\        V P                  4      pV P                   UUu. uF"  w  r#WV P                  V P                  4      NK$  	  upp#   \         d     R T n         \        T P                  4      p Ldi ; iu uppi rH   )r  r’  r·   r<   rû  r•   rN   )rJ   r–   Úfrom_Útos   &   rA   Ú__next__ÚFixedWidthReader.__next__È  s†   € Ø�;‰;Ò"ð$Ü˜DŸK™KÓ(‘ô
 ˜Ÿ™“<ˆDàHLÏÊÔVÉ¹¸%�˜2�×$Ñ$ T§^¡^Ö4ÉÒVÐVøô !ô $Ø"�”Ü˜DŸF™F“|’ð$üó Ws   �A6 Á
(B#Á6'B ÂB )r  rû  rY   rN   r<   )Néd   rH   )r#  N)
rŠ   r‹   rŒ   r�   Ú__doc__r\   r  r  r!  rŽ   r?   rD   rA   rù  rù  a  s$   † ñ÷$÷L$÷L÷,
Wñ 
WrD   rù  c                  ó>   € ] tR tRtRtR R ltR R ltR R ltR	tR
# )ÚFixedWidthFieldParseriÕ  z`
Specialization that Converts fixed-width fields into DataFrames.
See PythonParser for details.
c               ó    € V ^8„  d   QhRRRR/# )r;   r<   zReadCsvBuffer[str]r=   r>   r?   )r@   s   "rA   rB   Ú"FixedWidthFieldParser.__annotate__Û  s   € ÷ /ñ /Ð,ð /¸ñ /rD   c                	óŒ   € VP                  R 4      V n        VP                  R4      V n        \        P                  ! W3/ VB  R# )rû  rý  N)Úpoprû  rý  r7   r\   )rJ   r<   rx   s   &&,rA   r\   ÚFixedWidthFieldParser.__init__Û  s6   € àŸ™ Ó,ˆŒØŸ8™8 MÓ2ˆÔÜ×Ò˜dÑ.¨Ô.rD   c               ó    € V ^8„  d   QhRRRR/# )r;   r<   r…   r=   rù  r?   )r@   s   "rA   rB   r(  á  s   € ÷ 
ñ 
Ð:ð 
Ð?Oñ 
rD   c                	ó†   € \        VV P                  V P                  V P                  V P                  V P
                  4      # rH   )rù  rû  rN   rY   rF   rý  )rJ   r<   s   &&rA   ri   Ú"FixedWidthFieldParser._make_readerá  s7   € ÜØØ�M‰MØ�N‰NØ�L‰LØ�M‰MØ×Ñó
ð 	
rD   c               ó    € V ^8„  d   QhRRRR/# r®  r?   )r@   s   "rA   rB   r(  ë  s   € ÷ 
ñ 
¨ð 
¸=ñ 
rD   c                ó¨   € V Uu. uFA  p\         ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   K?  VNKC  	  up# u upi )zŸ
Returns the list of lines without the empty ones. With fixed-width
fields, empty lines become arrays of empty strings.

See PythonParser._remove_empty_lines.
c              3  ó|   "  € T F2  p\        V\        4      '       * ;'       g    VP                  4       x € K4  	  R # 5irH   )rd   re   r•   )r°   r£  s   & rA   r²   Ú<FixedWidthFieldParser._remove_empty_lines.<locals>.<genexpr>õ  s+   é € ÐEÁ¸1”z !¤SÓ)Ô)×6Ð6¨Q¯W©W«YÔ6Ãùs   ‚ <£<TF)rm  )rJ   r£   r–   s   && rA   r�  Ú)FixedWidthFieldParser._remove_empty_linesë  sI   € ñ ó
á�ß‹sÑEÁÓE�s�sŠsÑEÁÓE×E÷ ˆDÙñ
ð 	
ùò 
s   …A•A©AÁA)rû  rý  N)	rŠ   r‹   rŒ   r�   r$  r\   ri   r�  rŽ   r?   rD   rA   r&  r&  Õ  s   † ñõ
/õ
÷
ñ 
rD   r&  c               ó    € V ^8„  d   QhRRRR/# )r;   rM   r¯   r=   r?   )r@   s   "rA   rB   rB   ù  s   € ÷ ñ ¨ð °ñ rD   c                ób   € \        V 4      '       g   \        R4      hV ^ 8  d   \        R4      hV # )a´  
Validate the 'skipfooter' parameter.

Checks whether 'skipfooter' is a non-negative integer.
Raises a ValueError if that is not the case.

Parameters
----------
skipfooter : non-negative integer
    The number of rows to skip at the end of the file.

Returns
-------
validated_skipfooter : non-negative integer
    The original input if the validation succeeds.

Raises
------
ValueError : 'skipfooter' was not a non-negative integer.
zskipfooter must be an integerzskipfooter cannot be negative)r   rw   )rM   s   &rA   rc   rc   ù  s6   € ô* �j×!Ò!ÜÐ8Ó9Ð9à�A„~ÜÐ8Ó9Ð9ð ÐrD   )RÚ
__future__r   Úcollectionsr   r   r›   Úior   r~   Útypingr   r   r	   r
   r   r   r   rÿ   Únumpyrü   Úpandas._libsr   Úpandas._typingr   Úpandas.errorsr   r   r   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr   Úpandas.core.dtypes.astyper   Úpandas.core.dtypes.commonr   r   r   r   r   r   r   Úpandas.core.dtypes.dtypesr   r   Úpandas.core.dtypes.inferencer   Úpandas.corer    Úpandas.core.arraysr!   r"   Úpandas.core.arrays.booleanr#   Úpandas.core.indexes.apir$   Úpandas.io.commonr%   r&   Úpandas.io.parsers.base_parserr'   r(   r)   r*   r+   Úcollections.abcr,   r-   r.   r/   r0   r1   r2   r3   Úpandasr4   r5   r{  r7   rù  r&  rc   r?   rD   rA   Ú<module>rL     sÝ   ðÝ "÷ó Ý Û 	÷÷ ñ ó ã å Ý !÷ñ õ
 3Ý 4å 2÷÷ ñ ÷õ 6å "÷õ 4Ý )÷÷õ ÷ ÷ó ÷ó ÷ð €ô~$�:ô ~$ôB(qW�s—|‘|ô qWôh!
˜Lô !
÷HrD   