a
    q`X                     @   sL   d Z ddgZdZG dd deZG dd deZG dd deZdd	 Zd
S )ze brain-dead simple parser for ini-style files.
(C) Ronny Pfannschmidt, Holger Krekel -- MIT licensed
	IniConfig
ParseErrorz#;c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s&   t | ||| || _|| _|| _d S N)	Exception__init__pathlinenomsg)selfr   r   r    r
   1lib/python3.9/site-packages/iniconfig/__init__.pyr   
   s    zParseError.__init__c                 C   s   d| j | jd | jf S )Nz	%s:%s: %s   )r   r   r   r	   r
   r
   r   __str__   s    zParseError.__str__N)__name__
__module____qualname__r   r   r
   r
   r
   r   r   	   s   c                   @   sB   e Zd Zdd Zdd ZdefddZdd	 Zd
d Zdd Z	dS )SectionWrapperc                 C   s   || _ || _d S r   )configname)r	   r   r   r
   r
   r   r      s    zSectionWrapper.__init__c                 C   s   | j | j|S r   r   lineofr   r	   r   r
   r
   r   r      s    zSectionWrapper.lineofNc                 C   s   | j j| j|||dS )N)convertdefault)r   getr   )r	   keyr   r   r
   r
   r   r      s    zSectionWrapper.getc                 C   s   | j j| j | S r   )r   sectionsr   )r	   r   r
   r
   r   __getitem__    s    zSectionWrapper.__getitem__c                 #   s:    j j jg } fdd}t||dD ]
}|V  q*d S )Nc                    s    j  j| S r   r   r   r   r
   r   r   &   s    z'SectionWrapper.__iter__.<locals>.lineofr   )r   r   r   r   sorted)r	   sectionr   r   r
   r   r   __iter__#   s    zSectionWrapper.__iter__c                 c   s   | D ]}|| | fV  qd S r   r
   r   r
   r
   r   items+   s    zSectionWrapper.items)
r   r   r   r   r   strr   r   r!   r"   r
   r
   r
   r   r      s   r   c                   @   s^   e Zd ZdddZdd Zdd Zdd	 Zdd
dZdefddZ	dd Z
dd Zdd ZdS )r   Nc           	      C   s   t || _|d u rDt| j}z| t|}W |  qT|  0 n| |d}i | _i | _|D ]\}}}}|d u r| 	|d || j||f< |d u r|| jv r| 	|d|f  i | j|< qd|| j| v r| 	|d|f  || j| |< qdd S )NTzno section header definedzduplicate section %rzduplicate name %r)
r#   r   open_parseiterclose
splitlines_sourcesr   _raise)	r	   r   dataftokensr   r    r   valuer
   r
   r   r   1   s(    


zIniConfig.__init__c                 C   s   t | j||d S r   )r   r   )r	   r   r   r
   r
   r   r*   L   s    zIniConfig._raisec                 C   s   g }d }t |D ]\}}| ||\}}|d urL|d urL|||||f q|d ur|d u r|sl| |d |}|||d d f q|d u r|d ur|s| |d | }|dd  \}	}
|	d u r| |d |
rd|
|f }||d d |f  q|S )Nzempty section namezunexpected value continuationz%s
%s)	enumerate
_parselineappendr*   pop)r	   Z	line_iterresultr    r   liner   r+   Zlast	last_nameZ	last_datar
   r
   r   r%   O   s,    zIniConfig._parsec                 C   s  t |rd}n| }|sdS |d dkrr|}tD ]}||d  }q2|d dkrf|dd d fS d | fS |d   sz"|dd\}}d	|v rt W nJ ty   z|d	d\}}W n" ty   | |d
|  Y n0 Y n0 | | fS d | fS d S )N )NN    [r0   ]r   =:zunexpected line: %r)iscommentlinerstripCOMMENTCHARSsplitstripisspace
ValueErrorr*   )r	   r6   r   Zreallinecr   r.   r
   r
   r   r2   k   s0    
zIniConfig._parselinec                 C   s$   | j ||f}|d ur |d S d S Nr   )r)   r   )r	   r    r   r   r
   r
   r   r      s    zIniConfig.lineofc                 C   s0   z|| j | | W S  ty*   | Y S 0 d S r   )r   KeyError)r	   r    r   r   r   r
   r
   r   r      s    zIniConfig.getc                 C   s   || j vrt|t| |S r   )r   rG   r   r   r
   r
   r   r      s    
zIniConfig.__getitem__c                 c   s&   t | j| jdD ]}t| |V  qd S )Nr   )r   r   r   r   r   r
   r
   r   r!      s    zIniConfig.__iter__c                 C   s
   || j v S r   )r   )r	   argr
   r
   r   __contains__   s    zIniConfig.__contains__)N)N)r   r   r   r   r*   r%   r2   r   r#   r   r   r!   rI   r
   r
   r
   r   r   0   s   
 
c                 C   s   |   d d }|tv S rF   )lstripr@   )r6   rE   r
   r
   r   r>      s    r>   N)	__doc____all__r@   r   r   objectr   r   r>   r
   r
   r
   r   <module>   s   s