o
    Zha                     @  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r0d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
Zd+ddZed,ddZed-ddZed.ddZed/d0ddZed1ddZ		d2d3d!dZd4d"d#Zd5d%d&Z	d6d(d)Z
dS )7SectionWrapperzFinal[IniConfig]config
Final[str]namer   strreturnNonec                 C  s   || _ || _d S N)r   r   )selfr   r    r!   I/var/www/html/lang_env/lib/python3.10/site-packages/iniconfig/__init__.py__init__'   s   
zSectionWrapper.__init__
int | Nonec                 C  s   | j | j|S r   r   lineofr   r    r   r!   r!   r"   r&   +      zSectionWrapper.lineofkey
str | Nonec                 C     d S r   r!   r    r)   r!   r!   r"   get.      zSectionWrapper.getconvertCallable[[str], _T]	_T | Nonec                 C  r+   r   r!   )r    r)   r/   r!   r!   r"   r-   2      defaultc                 C  r+   r   r!   r    r)   r3   r/   r!   r!   r"   r-   :      Nr   str | _Dc                 C  r+   r   r!   r4   r!   r!   r"   r-   C   r.   _T | _Dc                 C  r+   r   r!   r4   r!   r!   r"   r-   G   r5   	_D | NoneCallable[[str], _T] | None_D | _T | str | Nonec                 C  s   | j j| j|||dS )N)r/   r3   )r   r-   r   r4   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__Iterator[str]c                 #  s8     j j ji }d fdd}t||dE d H  d S )	Nr)   r   r   intc                   s    j  j| S r   r%   r)   r    r!   r"   r&   _   r(   z'SectionWrapper.__iter__.<locals>.lineofr?   )r)   r   r   r>   )r   r;   r-   r   sorted)r    sectionr&   r!   r@   r"   __iter__\   s   zSectionWrapper.__iter__Iterator[tuple[str, str]]c                 c  s    | D ]	}|| | fV  qd S r   r!   r'   r!   r!   r"   itemsd   s   zSectionWrapper.items)r   r   r   r   r   r   )r   r   r   r$   )r)   r   r   r*   )r)   r   r/   r0   r   r1   )r)   r   r3   r   r/   r0   r   r1   r   )r)   r   r3   r   r/   r   r   r6   )r)   r   r3   r   r/   r0   r   r7   NN)r)   r   r3   r8   r/   r9   r   r:   )r)   r   r   r   )r   r=   )r   rD   )__name__
__module____qualname____annotations__r#   r&   r   r-   r<   rC   rE   r!   r!   r!   r"   r   #   s*   
 



r   c                   @  s   e Zd ZU ded< ded< 		d0d1ddZd2d3ddZed4ddZed5ddZed6ddZe	d2d7ddZed8d!dZ		d9d:d%dZd;d'd(Zd<d*d+Z	d=d.d/Z
dS )>r   r   pathz&Final[Mapping[str, Mapping[str, str]]]r;   Nutf-8str | os.PathLike[str]datar*   encodingr   r   r   c                 C  s  t || _|d u r%t| j|d}| }W d    n1 s w   Y  t| j|d}i | _i  | _	}|D ]M\}}}	}
|d u rJt
| j|d|| j||	f< |	d u ri|| j	v rdt
| j|d|i ||< q9|	| j	| v rzt
| j|d|	|
d usJ |
|| |	< q9d S )N)rO   Tzno section header definedzduplicate section zduplicate name )osfspathrK   openreadr   Zparse_lines
splitlines_sourcesr;   r   )r    rK   rN   rO   fptokensZsections_datalinenorB   r   valuer!   r!   r"   r#   m   s.   



zIniConfig.__init__rB   r   r$   c                 C  s$   | j ||f}|d u rd S |d S )Nr   )rU   r-   )r    rB   r   rX   r!   r!   r"   r&      s   zIniConfig.lineofc                 C  r+   r   r!   )r    rB   r   r!   r!   r"   r-      r2   zIniConfig.getr/   r0   r1   c                 C  r+   r   r!   )r    rB   r   r/   r!   r!   r"   r-      r5   r3   c                 C  r+   r   r!   r    rB   r   r3   r/   r!   r!   r"   r-         r   r6   c                 C  r+   r   r!   rZ   r!   r!   r"   r-      s   r7   c                 C  r+   r   r!   rZ   r!   r!   r"   r-      r[   r8   r9   r:   c                 C  s>   z	| j | | }W n ty   | Y S w |d ur||S |S r   )r;   KeyError)r    rB   r   r3   r/   rY   r!   r!   r"   r-      s   r   c                 C  s   || j vr	t|t| |S r   )r;   r\   r   r'   r!   r!   r"   r<      s   

zIniConfig.__getitem__Iterator[SectionWrapper]c                 c  s(    t | j| jdD ]}t| |V  q	d S )Nr?   )rA   r;   r&   r   r'   r!   r!   r"   rC      s   zIniConfig.__iter__argboolc                 C  s
   || j v S r   )r;   )r    r^   r!   r!   r"   __contains__   s   
zIniConfig.__contains__)NrL   )rK   rM   rN   r*   rO   r   r   r   r   )rB   r   r   r*   r   r$   )rB   r   r   r   r   r*   )rB   r   r   r   r/   r0   r   r1   )
rB   r   r   r   r3   r   r/   r0   r   r1   )
rB   r   r   r   r3   r   r/   r   r   r6   )
rB   r   r   r   r3   r   r/   r0   r   r7   rF   )
rB   r   r   r   r3   r8   r/   r9   r   r:   )r   r   r   r   )r   r]   )r^   r   r   r_   )rG   rH   rI   rJ   r#   r&   r   r-   r<   rC   r`   r!   r!   r!   r"   r   i   s0   
 !	

r   )__doc__
__future__r   typingr   r   r   r   r   r   r	   r
   r   r   r   r   rP   Ztyping_extensionsr   __all__
exceptionsr    r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s    8F