B
    `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	   Z/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/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 )N)configname)r   r   r   r	   r	   r
   r      s    zSectionWrapper.__init__c             C   s   | j | j|S )N)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 )N)r   sectionsr   )r   r   r	   r	   r
   __getitem__    s    zSectionWrapper.__getitem__c             #   s>    j j jg } fdd}xt||dD ]
}|V  q,W d S )Nc                s    j  j| S )N)r   r   r   )r   )r   r	   r
   r   &   s    z'SectionWrapper.__iter__.<locals>.lineof)r   )r   r   r   r   sorted)r   sectionr   r   r	   )r   r
   __iter__#   s    zSectionWrapper.__iter__c             c   s    x| D ]}|| | fV  qW d S )Nr	   )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 kr<t| j}z| t|}W d |  X n| |d}i | _i | _x|D ]\}}}}|d kr~| 	|d || j||f< |d kr|| jkr| 	|d|f  i | j|< q^|| j| kr| 	|d|f  || j| |< q^W d 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 )N)r   r   )r   r   r   r	   r	   r
   r%   L   s    zIniConfig._raisec             C   s  g }d }xt |D ]\}}| ||\}}|d k	rN|d k	rN|||||f q|d k	r|d kr|sn| |d |}|||d d f q|d kr|d k	r|s| |d | }|dd  \}	}
|	d kr| |d |
rd|
|f }||d d |f  qW |S )Nzempty section namezunexpected value continuationz%s
%s)	enumerate
_parselineappendr%   pop)r   Z	line_iterresultr   r   liner   r&   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rv|}xtD ]}||d  }q4W |d dkrj|dd d fS d | fS |d  sy"|dd\}}d	|krt W nN tk
r   y|d	d\}}W n$ tk
r   | |d
|  Y nX Y nX | | fS d | fS d S )N )NN    [r+   ]r   =:zunexpected line: %r)iscommentlinerstripCOMMENTCHARSsplitstripisspace
ValueErrorr%   )r   r1   r   Zreallinecr   r)   r	   r	   r
   r-   k   s0    

zIniConfig._parselinec             C   s$   | j ||f}|d k	r |d S d S )Nr   )r$   r   )r   r   r   r   r	   r	   r
   r      s    zIniConfig.lineofc             C   s,   y|| j | | S  tk
r&   |S X d S )N)r   KeyError)r   r   r   r   r   r	   r	   r
   r      s    zIniConfig.getc             C   s   || j krt|t| |S )N)r   rB   r   )r   r   r	   r	   r
   r      s    
zIniConfig.__getitem__c             c   s*   x$t | j| jdD ]}t| |V  qW d S )N)r   )r   r   r   r   )r   r   r	   r	   r
   r      s    zIniConfig.__iter__c             C   s
   || j kS )N)r   )r   argr	   r	   r
   __contains__   s    zIniConfig.__contains__)N)N)r   r   r   r   r%   r    r-   r   r   r   r   r   rD   r	   r	   r	   r
   r   0   s   
 
c             C   s   |   d d }|tkS )Nr   )lstripr<   )r1   rA   r	   r	   r
   r:      s    r:   N)	__doc____all__r<   r   r   objectr   r   r:   r	   r	   r	   r
   <module>   s   s