U
    P»{jV  ã                   @  sÄ   d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlZer`ddlmZ dddd	gZd
dlmZ d
dlmZ d
dlmZmZ e	dƒZe	dƒZG dd„ dƒZG dd„ dƒZdS )ze brain-dead simple parser for ini-style files.
(C) Ronny Pfannschmidt, Holger Krekel -- MIT licensed
é    )Úannotations)ÚCallableÚIteratorÚMappingÚOptionalÚTupleÚTypeVarÚUnionÚTYPE_CHECKINGÚNoReturnÚ
NamedTupleÚoverloadÚcastN)ÚFinalÚ	IniConfigÚ
ParseErrorÚCOMMENTCHARSÚiscommentlineé   )r   )Ú_parse)r   r   Ú_DÚ_Tc                   @  sö   e Zd ZU ded< ded< ddddœd	d
„Zdddœdd„Zedddœdd„ƒZeddddœdd„ƒZedddddœdd„ƒZed,dddddœdd„ƒZedddddœdd„ƒZd-ddd d!dœd"d„Zdddœd#d$„Zd%d&œd'd(„Z	d)d&œd*d+„Z
dS ).ÚSectionWrapperzFinal[IniConfig]Úconfigú
Final[str]Únamer   ÚstrÚNone)r   r   Úreturnc                 C  s   || _ || _d S ©N)r   r   )Úselfr   r   © r!   úQ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/iniconfig/__init__.pyÚ__init__'   s    zSectionWrapper.__init__ú
int | None©r   r   c                 C  s   | j  | j|¡S r   ©r   Úlineofr   ©r    r   r!   r!   r"   r'   +   s    zSectionWrapper.lineofú
str | None©Úkeyr   c                 C  s   d S r   r!   ©r    r+   r!   r!   r"   Úget.   s    zSectionWrapper.getúCallable[[str], _T]ú	_T | None)r+   Úconvertr   c                 C  s   d S r   r!   )r    r+   r0   r!   r!   r"   r-   2   s    )r+   Údefaultr0   r   c                 C  s   d S r   r!   ©r    r+   r1   r0   r!   r!   r"   r-   :   s    Nr   ústr | _Dc                 C  s   d S r   r!   r2   r!   r!   r"   r-   C   s    ú_T | _Dc                 C  s   d S r   r!   r2   r!   r!   r"   r-   G   s    ú	_D | NoneúCallable[[str], _T] | Noneú_D | _T | str | Nonec                 C  s   | j j| j|||d�S )N)r0   r1   )r   r-   r   r2   r!   r!   r"   r-   Q   s    c                 C  s   | j j| j | S r   )r   Úsectionsr   r,   r!   r!   r"   Ú__getitem__Y   s    zSectionWrapper.__getitem__zIterator[str]©r   c                 #  s<   ˆ j j ˆ ji ¡}dddœ‡ fdd„}t||d�E d H  d S )Nr   Úintr*   c                   s   ˆ j  ˆ j| ¡S r   r&   ©r+   ©r    r!   r"   r'   _   s    z'SectionWrapper.__iter__.<locals>.lineofr<   )r   r8   r-   r   Úsorted)r    Úsectionr'   r!   r=   r"   Ú__iter__\   s    zSectionWrapper.__iter__zIterator[tuple[str, str]]c                 c  s   | D ]}|| | fV  qd S r   r!   r(   r!   r!   r"   Úitemsd   s    zSectionWrapper.items)N)NN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r#   r'   r   r-   r9   r@   rA   r!   r!   r!   r"   r   #   s(   
  ür   c                   @  s  e Zd ZU ded< ded< d/ddd	d
dœdd„Zd0d	dddœdd„Zed	d	ddœdd„ƒZed	d	dddœdd„ƒZed	d	d
dddœdd„ƒZed1d	d	dd
ddœdd„ƒZed	d	ddddœdd„ƒZd2d	d	dd d!dœd"d„Zd	d#d$œd%d&„Zd'd(œd)d*„Z	d	d+d,œd-d.„Z
dS )3r   r   Úpathz&Final[Mapping[str, Mapping[str, str]]]r8   Núutf-8zstr | os.PathLike[str]r)   r   r   )rF   ÚdataÚencodingr   c              	   C  sþ   t  |¡| _|d kr6t| j|d��}| ¡ }W 5 Q R X t | j| d¡¡}i | _i  | _	}|D ]š\}}}	}
|d kr€t
| j|dƒ‚|| j||	f< |	d kr¾|| j	kr´t
| j|d|›�ƒ‚i ||< q^|	| j	| kràt
| j|d|	›�ƒ‚|
d k	sìt‚|
|| |	< q^d S )N)rI   Tzno section header definedzduplicate section zduplicate name )ÚosÚfspathrF   ÚopenÚreadr   Zparse_linesÚ
splitlinesÚ_sourcesr8   r   ÚAssertionError)r    rF   rH   rI   ÚfpÚtokensZsections_dataÚlinenor?   r   Úvaluer!   r!   r"   r#   m   s.    

  ÿ
zIniConfig.__init__r$   )r?   r   r   c                 C  s$   | j  ||f¡}|d krd S |d S )Nr   )rO   r-   )r    r?   r   rS   r!   r!   r"   r'   Ž   s    zIniConfig.lineofc                 C  s   d S r   r!   )r    r?   r   r!   r!   r"   r-   ’   s    zIniConfig.getr.   r/   )r?   r   r0   r   c                 C  s   d S r   r!   )r    r?   r   r0   r!   r!   r"   r-   š   s    )r?   r   r1   r0   r   c                 C  s   d S r   r!   ©r    r?   r   r1   r0   r!   r!   r"   r-   £   s    r   r3   c                 C  s   d S r   r!   rU   r!   r!   r"   r-   ­   s    r4   c                 C  s   d S r   r!   rU   r!   r!   r"   r-   ³   s    r5   r6   r7   c                 C  sD   z| j | | }W n tk
r*   | Y S X |d k	r<||ƒS |S d S r   )r8   ÚKeyError)r    r?   r   r1   r0   rT   r!   r!   r"   r-   ½   s    
r   r%   c                 C  s   || j krt|ƒ‚t| |ƒS r   )r8   rV   r   r(   r!   r!   r"   r9   Î   s    
zIniConfig.__getitem__zIterator[SectionWrapper]r:   c                 c  s&   t | j| jd�D ]}t| |ƒV  qd S )Nr<   )r>   r8   r'   r   r(   r!   r!   r"   r@   Ó   s    zIniConfig.__iter__Úbool)Úargr   c                 C  s
   || j kS r   )r8   )r    rX   r!   r!   r"   Ú__contains__×   s    zIniConfig.__contains__)NrG   )N)N)NN)rB   rC   rD   rE   r#   r'   r   r-   r9   r@   rY   r!   r!   r!   r"   r   i   s.   
  ü!	 ÿ  û)Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r   r	   r
   r   r   r   r   rJ   r   Ú__all__Ú
exceptionsr   Ú r   r   r   r   r   r   r   r!   r!   r!   r"   Ú<module>   s   8F