
    ziI                         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dS )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dS )SectionWrapperr	   confignamereturnNc                 "    || _         || _        d S N)r   r   )selfr   r   s      ]/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/iniconfig/__init__.py__init__zSectionWrapper.__init__   s    			    c                 B    | j                             | j        |          S r   r   lineofr   r   r   s     r   r   zSectionWrapper.lineof    s    {!!$)T222r   keyc                     d S r    r   r    s     r   getzSectionWrapper.get#   s    +.3r   convertc                     d S r   r"   )r   r    r%   s      r   r$   zSectionWrapper.get&   s	    
 Cr   defaultc                     d S r   r"   r   r    r'   r%   s       r   r$   zSectionWrapper.get-   	     Cr   c                     d S r   r"   r)   s       r   r$   zSectionWrapper.get5   s    LOCr   c                     d S r   r"   r)   s       r   r$   zSectionWrapper.get8   s	     #r   c                 H    | j                             | j        |||          S )N)r%   r'   )r   r$   r   r)   s       r   r$   zSectionWrapper.getA   s"     {ty#wPPPr   c                 <    | j         j        | j                 |         S r   )r   sectionsr   r#   s     r   __getitem__zSectionWrapper.__getitem__I   s    {#DI.s33r   c              #       K    j         j                             j        i           }dt          dt
          f fd}t          ||          E d {V  d S )Nr    r   c                 D    j                             j        |           S r   r   )r    r   s    r   r   z'SectionWrapper.__iter__.<locals>.lineofO   s    ;%%di555r   r    )r   r/   r$   r   strintsorted)r   sectionr   s   `  r   __iter__zSectionWrapper.__iter__L   s|      %)[%9%=%=di%L%L	6 	6 	6 	6 	6 	6 	6 	6 'v............r   c              #   ,   K   | D ]}|| |         fV  d S r   r"   r   s     r   itemszSectionWrapper.itemsT   s7       	# 	#DT
"""""	# 	#r   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        +
*{ # $    33 33: 3 3 3 3 .s.sTz... X. 3%)$ 
d	   X   3%)$	
 
d   X OOsORO$O#(OOO XO  3%)$	
 
b   X ".2	Q QQ dQ 3%)$t+	Q
 
b3	Q Q Q Q4s 4s 4 4 4 4/(3- / / / /#xc3h0 # # # # # #r   r   c                   n   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dS )$r	   pathr/   N_sourcesutf-8)	_sectionsrC   dataencodingrE   r   c                ,   t          j        |          | _        |||}|}nc|Bt          | j        |          5 }|                                }d d d            n# 1 swxY w Y   t          j        | j        |d          \  }}|| _        || _        d S )NrG   F)strip_inline_comments)	osfspathrB   openreadr   parse_ini_datarC   r/   )	r   rB   rF   rG   rE   rC   sections_datasourcesfps	            r   r   zIniConfig.__init__^   s     IdOO	  X%9%MGG |$)h777 %27799D% % % % % % % % % % % % % % % &,%:	4u& & &"M7
  %s   AA #A TFrJ   strip_section_whitespacerJ   rT   c                    t          j        |          }|=t          ||          5 }|                                }ddd           n# 1 swxY w Y   t	          j        ||||          \  }}	 | |||	          S )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
        NrI   rS   )rB   rE   rC   )rK   rL   rM   rN   r   rO   )
clsrB   rF   rG   rJ   rT   rL   rR   rP   rQ   s
             r   parsezIniConfig.parse}   s    N 4<fx000 !Bwwyy! ! ! ! ! ! ! ! ! ! ! ! ! ! ! "(!6"7%=	"
 "
 "
w s-'JJJJs   A		AAr7   r   c                 L    | j                             ||f          }|d n|dz   S )Nr   )rC   r$   )r   r7   r   linenos       r   r   zIniConfig.lineof   s-    ""GT?33~tt6A:5r   c                     d S r   r"   )r   r7   r   s      r   r$   zIniConfig.get   s	    
 Sr   r%   c                     d S r   r"   )r   r7   r   r%   s       r   r$   zIniConfig.get   r*   r   r'   c                     d S r   r"   r   r7   r   r'   r%   s        r   r$   zIniConfig.get   s	     Cr   c                     d S r   r"   r]   s        r   r$   zIniConfig.get   s	     3r   c                     d S r   r"   r]   s        r   r$   zIniConfig.get   s	     #r   c                 l    	 | 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   sY    	w/5E "wu~~%  	 	 	NNN	s   $ 33c                 R    || j         vrt          |          t          | |          S r   )r/   ra   r   r   s     r   r0   zIniConfig.__getitem__   s+    t}$$4.. dD)))r   c              #   j   K   t          | j        | j                  D ]}t          | |          V  d S )Nr3   )r6   r/   r   r   r   s     r   r8   zIniConfig.__iter__   sI      4=dk::: 	- 	-D t,,,,,,	- 	-r   argc                     || j         v S r   )r/   )r   re   s     r   __contains__zIniConfig.__contains__   s    dm##r   )NrD   r   r;   )r<   r=   r>   r   r4   r?   r   r@   r5   rK   PathLiker   classmethodboolrW   r   r   r$   r   r   r   r   r0   r   r8   rg   r"   r   r   r	   r	   Y   sn        
*GCc!2234444GE#sTz/2C789999
  	& =A@D& & &BK$$& Dj& 	& 3S 112T9& %S4Z0#56=& 
& & & &>   	4K '+).4K 4K 4KBK$$4K Dj4K 	4K  $4K #'4K 
4K 4K 4K [4Kl6 6c 6t 6sTz 6 6 6 6   
t	   X   3%)$	
 
d   X   	
 3%)$ 
d   X DH "%02=A	r   X   	
 3%)$ 
b   X ".2   d	
 3%)$t+ 
b3	   "* * * * * *
-(>2 - - - -$ $ $ $ $ $ $ $r   r	   )__doc__rK   collections.abcr   r   r   typingr   r   r   __all__ r   r   r   
exceptionsr
   r   r   r   r	   r"   r   r   <module>rq      sX    
			 $ $ $ $ $ $ $ $ $ $ $ $ # # # # # #                  
F
F
F                   ! ! ! ! ! ! " " " " " "WT]]WT]]># ># ># ># ># ># ># >#B`$ `$ `$ `$ `$ `$ `$ `$ `$ `$r   