Ë
    æØjjI  ã                   óØ   — d Z ddl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 ddlm	Z	 g d	¢Z
d
dlmZ d
dlmZ d
dlmZ d
dlmZ  ed«      Z ed«      Z G d„ d«      Z G d„ d«      Zy)zdbrain-dead simple parser for ini-style files.
(C) Ronny Pfannschmidt, Holger Krekel -- MIT licensed
é    N)ÚCallable)ÚIterator)ÚMapping)ÚFinal)ÚTypeVar)Úoverload)Ú	IniConfigÚ
ParseErrorÚCOMMENTCHARSÚiscommentlineé   )Ú_parse)r   )r   )r
   Ú_DÚ_Tc                   óÀ  — e Zd ZU ed   ed<   ee   ed<   dddeddfd„Zdededz  fd„Ze	dededz  fd	„«       Z
e	ded
eegef   dedz  fd„«       Z
e	deddd
eegef   dedz  fd„«       Z
e	ddeded
ddeez  fd„«       Z
e	deded
eegef   deez  fd„«       Z
	 	 ddededz  d
eegef   dz  deez  ez  dz  fd„Z
dedefd„Zdee   fd„Zdeeeef      fd„Zy)ÚSectionWrapperr	   ÚconfigÚnameÚreturnNc                 ó    — || _         || _        y ©N)r   r   )Úselfr   r   s      úT/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/iniconfig/__init__.pyÚ__init__zSectionWrapper.__init__   s   € ØˆŒØˆ�	ó    c                 óN   — | j                   j                  | j                  |«      S r   ©r   Úlineofr   ©r   r   s     r   r   zSectionWrapper.lineof    s   € Ø�{‰{×!Ñ! $§)¡)¨TÓ2Ð2r   Úkeyc                  ó   — y r   © ©r   r    s     r   ÚgetzSectionWrapper.get#   s   € Ø+.r   Úconvertc                  ó   — y r   r"   )r   r    r%   s      r   r$   zSectionWrapper.get&   s   € ð
 r   Údefaultc                  ó   — y r   r"   ©r   r    r'   r%   s       r   r$   zSectionWrapper.get-   ó   € ð r   c                  ó   — y r   r"   r)   s       r   r$   zSectionWrapper.get5   s   € ØLOr   c                  ó   — y r   r"   r)   s       r   r$   zSectionWrapper.get8   s   € ð r   c                 óT   — | j                   j                  | j                  |||¬«      S )N)r%   r'   )r   r$   r   r)   s       r   r$   zSectionWrapper.getA   s#   € ð �{‰{�‰˜tŸy™y¨#°wÈˆÓPÐPr   c                 óN   — | j                   j                  | j                     |   S r   )r   Úsectionsr   r#   s     r   Ú__getitem__zSectionWrapper.__getitem__I   s    € Ø�{‰{×#Ñ# D§I¡IÑ.¨sÑ3Ð3r   c              #   óÀ   ‡ K  — ‰ j                   j                  j                  ‰ j                  i «      }dt        dt
        fˆ fd„}t        ||¬«      E d {  –—†  y 7 Œ­w)Nr    r   c                 óP   •— ‰j                   j                  ‰j                  | «      S r   r   )r    r   s    €r   r   z'SectionWrapper.__iter__.<locals>.lineofO   s   ø€ Ø—;‘;×%Ñ% d§i¡i°Ó5Ð5r   ©r    )r   r/   r$   r   ÚstrÚintÚsorted)r   Úsectionr   s   `  r   Ú__iter__zSectionWrapper.__iter__L   sL   øè ø€ Ø%)§[¡[×%9Ñ%9×%=Ñ%=¸d¿i¹iÈÓ%Lˆð	6œð 	6¤õ 	6ô ˜' vÔ.×.Ò.ús   ƒAAÁAÁAc              #   ó,   K  — | D ]  }|| |   f–— Œ y ­wr   r"   r   s     r   ÚitemszSectionWrapper.itemsT   s$   è ø€ Øò 	#ˆDØ˜˜T™
Ð"Ó"ñ	#ùs   ‚r   ©NN)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r4   r   r5   r   r   r$   r   r   r   r0   r   r8   Útupler:   r"   r   r   r   r      sð  … Ø�+ÑÓØ
�‰*Óð˜{ð °#ð ¸$ó ð3˜3ð 3 3¨¡:ó 3ð Ø.�sÐ.˜s T™zÒ.ó Ø.àðàðð ˜3˜% ˜)Ñ$ðð 
ˆd‰ò	ó ðð ðàðð ðð ˜3˜% ˜)Ñ$ð	ð
 
ˆd‰òó ðð ÙO�sÐO RÐO°$ÐOÀ#ÈÁ(ÒOó ØOàðàðð ðð ˜3˜% ˜)Ñ$ð	ð
 
ˆb‰òó ðð "Ø.2ñ	QàðQð �d‘ðQð ˜3˜% ˜)Ñ$ tÑ+ð	Qð
 
ˆb‰�3‰˜Ñ	óQð4˜sð 4 só 4ð/˜( 3™-ó /ð#�x  c¨3 h¡Ñ0ô #r   r   c                   óð  — e Zd ZU ee   ed<   eeeeeef   f      ed<   eeeeedz  f   ef      ed<   	 	 d dddœdee	j                  e   z  dedz  dedeeeeef   f   dz  deeeedz  f   ef   dz  d	dfd
„Ze	 	 d dddœdee	j                  e   z  dedz  dededed	d fd„«       Zd!dededz  d	edz  fd„Zededed	edz  fd„«       Zedededeegef   d	edz  fd„«       Zedededddeegef   d	edz  f
d„«       Ze	 d!dedededdd	eez  f
d„«       Zededededeegef   d	eez  f
d„«       Z	 	 d"dedededz  deegef   dz  d	eez  ez  dz  f
d„Zded	efd„Zd	ee   fd„Zded	efd„Zy)#r	   Úpathr/   NÚ_sources)Ú	_sectionsrC   ÚdataÚencodingrD   r   c                ó,  — t        j                  |«      | _        |�|�|}|}nW|€0t        | j                  |¬«      5 }|j	                  «       }d d d «       t        j                  | j                  |d¬«      \  }}|| _        || _        y # 1 sw Y   Œ=xY w)N©rF   F)Ústrip_inline_comments)	ÚosÚfspathrB   ÚopenÚreadr   Úparse_ini_datarC   r/   )	r   rB   rE   rF   rD   rC   Úsections_dataÚsourcesÚfps	            r   r   zIniConfig.__init__^   s“   € ô —I‘I˜d“OˆŒ	ð Ð  XÐ%9à%ˆMØ‰Gð ˆ|Ü˜$Ÿ)™)¨hÔ7ð %¸2ØŸ7™7›9�D÷%ô &,×%:Ñ%:Ø—	‘	˜4°uô&Ñ"ˆM˜7ð
  ˆŒØ%ˆ�÷%ð %ús   ½B
Â
BTF©rI   Ústrip_section_whitespacerI   rS   c                óâ   — t        j                  |«      }|€&t        ||¬«      5 }|j                  «       }ddd«       t	        j
                  ||||¬«      \  }}	 | |||	¬«      S # 1 sw Y   Œ0xY w)a™  Parse an INI file.

        Args:
            path: Path to the INI file (used for error messages)
            data: Optional INI content as string. If None, reads from path.
            encoding: Encoding to use when reading the file (default: utf-8)
            strip_inline_comments: Whether to strip inline comments from values
                (default: True). When True, comments starting with # or ; are
                removed from values, matching the behavior for section comments.
            strip_section_whitespace: Whether to strip whitespace from section and key names
                (default: False). When True, strips Unicode whitespace from section and key names,
                addressing issue #4. When False, preserves existing behavior for backward compatibility.

        Returns:
            IniConfig instance with parsed configuration

        Example:
            # With comment stripping (default):
            config = IniConfig.parse("setup.cfg")
            # value = "foo" instead of "foo # comment"

            # Without comment stripping (old behavior):
            config = IniConfig.parse("setup.cfg", strip_inline_comments=False)
            # value = "foo # comment"

            # With section name stripping (opt-in for issue #4):
            config = IniConfig.parse("setup.cfg", strip_section_whitespace=True)
            # section names and keys have Unicode whitespace stripped
        NrH   rR   )rB   rD   rC   )rJ   rK   rL   rM   r   rN   )
ÚclsrB   rE   rF   rI   rS   rK   rQ   rO   rP   s
             r   ÚparsezIniConfig.parse}   sw   € ôN —‘˜4“ˆàˆ<Ü�f xÔ0ð !°BØ—w‘w“y�÷!ô "(×!6Ñ!6ØØØ"7Ø%=ô	"
Ñˆ�wñ ˜¨-À'ÔJÐJ÷!ð !ús   ¥A%Á%A.r7   r   c                 óN   — | j                   j                  ||f«      }|€d S |dz   S )Nr   )rC   r$   )r   r7   r   Úlinenos       r   r   zIniConfig.lineof´   s-   € Ø—‘×"Ñ" G¨T ?Ó3ˆØ�~ˆtÐ5¨6°A©:Ð5r   c                  ó   — y r   r"   )r   r7   r   s      r   r$   zIniConfig.get¸   s   € ð
 r   r%   c                  ó   — y r   r"   )r   r7   r   r%   s       r   r$   zIniConfig.get¿   r*   r   r'   c                  ó   — y r   r"   ©r   r7   r   r'   r%   s        r   r$   zIniConfig.getÇ   s   € ð r   c                  ó   — y r   r"   r\   s        r   r$   zIniConfig.getÐ   s   € ð r   c                  ó   — y r   r"   r\   s        r   r$   zIniConfig.getÕ   s   € ð r   c                 ób   — 	 | j                   |   |   }|� ||«      S |S # t        $ r |cY S w xY wr   )r/   ÚKeyError)r   r7   r   r'   r%   Úvalues         r   r$   zIniConfig.getÞ   sG   € ð	ØŸ™ wÑ/°Ñ5ˆEð Ð"Ù˜u“~Ð%à�øô ò 	ØŠNð	ús   ‚   .­.c                 óL   — || j                   vrt        |«      ‚t        | |«      S r   )r/   r`   r   r   s     r   r0   zIniConfig.__getitem__ï   s%   € Ø�t—}‘}Ñ$Ü˜4“.Ð Ü˜d DÓ)Ð)r   c              #   ót   K  — t        | j                  | j                  ¬«      D ]  }t        | |«      –— Œ y ­w)Nr3   )r6   r/   r   r   r   s     r   r8   zIniConfig.__iter__ô   s1   è ø€ Ü˜4Ÿ=™=¨d¯k©kÔ:ò 	-ˆDÜ   tÓ,Ó,ñ	-ùs   ‚68Úargc                 ó   — || j                   v S r   )r/   )r   rd   s     r   Ú__contains__zIniConfig.__contains__ø   s   € Ø�d—m‘mÐ#Ð#r   )Nzutf-8r   r;   )r<   r=   r>   r   r4   r?   r   r@   r5   rJ   ÚPathLiker   ÚclassmethodÚboolrV   r   r   r$   r   r   r   r   r0   r   r8   rf   r"   r   r   r	   r	   Y   sƒ  … Ø
�‰*ÓØ�G˜C ¨¨c¨Ñ!2Ð2Ñ3Ñ4Ó4Ø�G˜E # s¨T¡z /Ñ2°CÐ7Ñ8Ñ9Ó9ð
  Øð	&ð =AØ@Dò&à�B—K‘K Ñ$Ñ$ð&ð �D‰jð&ð ð	&ð ˜3 ¨¨S¨Ñ 1Ð1Ñ2°TÑ9ð&ð ˜%  S¨4¡Z Ñ0°#Ð5Ñ6¸Ñ=ð&ð 
ó&ð> ð  Øð	4Kð '+Ø).ò4Kà�B—K‘K Ñ$Ñ$ð4Kð �D‰jð4Kð ð	4Kð  $ð4Kð #'ð4Kð 
ò4Kó ð4Kñl6˜cð 6¨¨t©ð 6¸sÀT¹zó 6ð ðàðð ðð 
ˆt‰ò	ó ðð ðàðð ðð ˜3˜% ˜)Ñ$ð	ð
 
ˆd‰òó ðð ðàðð ðð ð	ð
 ˜3˜% ˜)Ñ$ðð 
ˆd‰òó ðð àDHñØðØ"%ðØ02ðØ=Aðà	ˆr‰òó ðð ðàðð ðð ð	ð
 ˜3˜% ˜)Ñ$ðð 
ˆb‰òó ðð "Ø.2ñàðð ðð �d‘ð	ð
 ˜3˜% ˜)Ñ$ tÑ+ðð 
ˆb‰�3‰˜Ñ	óð"* ð *¨ó *ð
-˜( >Ñ2ó -ð$ ð $¨ô $r   r	   )Ú__doc__rJ   Úcollections.abcr   r   r   Útypingr   r   r   Ú__all__Ú r   r   r   Ú
exceptionsr
   r   r   r   r	   r"   r   r   ú<module>rp      s[   ðñó 
Ý $Ý $Ý #Ý Ý Ý â
F€å Ý  Ý !Ý "áˆTƒ]€ÙˆTƒ]€÷>#ñ >#÷B`$ò `$r   