a
    |fa                     @  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!   LD:\Projects\storyit_web\backend\venv\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 rt
| j|d|| j||	f< |	d u r|| j	v rt
| j|d|i ||< qr|	| j	| v rt
| 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   typing_extensionsr   __all__
exceptionsr    r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s   8F