a
    %ñ»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 g d¢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!   ú8E:\soccer\ml_env\Lib\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 u rJt| j|d��}| ¡ }W d   ƒ n1 s@0    Y  t | j| d¡¡}i | _i  | _	}|D ]œ\}}}	}
|d u r”t
| j|dƒ‚|| j||	f< |	d u rÒ|| j	v rÈt
| j|d|›�ƒ‚i ||< qr|	| j	| v rôt
| j|d|	›�ƒ‚|
d u�sJ ‚|
|| |	< qrd S )N)rI   Tzno section header definedzduplicate section zduplicate name )ÚosÚfspathrF   ÚopenÚreadr   Zparse_linesÚ
splitlinesÚ_sourcesr8   r   )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 u rd S |d S )Nr   )rO   r-   )r    r?   r   rR   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!   rT   r!   r!   r"   r-   ­   s    r4   c                 C  s   d S r   r!   rT   r!   r!   r"   r-   ³   s    r5   r6   r7   c                 C  sB   z| j | | }W n ty(   | Y S 0 |d ur:||ƒS |S d S r   )r8   ÚKeyError)r    r?   r   r1   r0   rS   r!   r!   r"   r-   ½   s    
r   r%   c                 C  s   || j vrt|ƒ‚t| |ƒS r   )r8   rU   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 v S r   )r8   )r    rW   r!   r!   r"   Ú__contains__×   s    zIniConfig.__contains__)NrG   )N)N)NN)rB   rC   rD   rE   r#   r'   r   r-   r9   r@   rX   r!   r!   r!   r"   r   i   s.   
  ü!	 ÿ  ûr   )Ú__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