
    cH	                        d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddZ G d de          ZdS )4Source for INI configuration files via configparser.    )annotations)ConfigParserSectionProxy)Path)Dict)Source)Key)find_config_filedestdict[str, Key]table_to_add	list[str]tabler   returnNonec                   t          |          dk    r|D ]}||         | |<   d S |d         }|                     |i            t          | |         t                    sJ t	          | |         |dd          |           d S )Nr      )len
setdefault
isinstancer   _add_split_to_dict)r   r   r   	table_keyfirsts        8lib/python3.11/site-packages/pytoolconfig/sources/ini.pyr   r      s     <A A 	/ 	/I#I.DOO	/ 	/ Qr"""$u+t,,,,,4;QRR(8%@@@@@    c                  N    e Zd ZU dZded<   ded<   ded<   	 dddZddZddZdS )	IniConfigr   r   _configstrname
str | NonedescriptionNworking_directoryr   filename
base_tablec                    t          ||          | _        || _        || _        || _        t                      | _        dS )a  Initialize the Ini Configuration.

        :param working_directory: the working directory to search.
        :param filename: the filename to search for.
        :param base_table: The table to search for.
            The file will only be used if this is present.
            The base_table will not be included in the parsed output.
        :param description: The description used in documentation.
        N)r   filer&   r!   r#   r   r   )selfr$   r%   r&   r#   s        r   __init__zIniConfig.__init__!   s;      %%6AA	$	&#~~r   r   boolc                    | j         dS | j                            | j                                                    | j        D ]+}|                    d          }|d         | j        k    r dS ,dS )NF.r   T)r(   r   read_string	read_textsplitr&   )r)   r   r0   s      r   _readzIniConfig._read7   s{    9 	5  !4!4!6!6777\ 	 	EKK$$EQx4?* ttur   dict[str, Key] | Nonec                    |                                  sdS i }| j        D ]L}|                    d          }|d         | j        k    r$t	          ||dd         | j        |                    M|S )zParse the INI file.Nr-   r   r   )r1   r   r0   r&   r   )r)   outputr   r0   s       r   parsezIniConfig.parseA   s{    zz|| 	4!#\ 	K 	KEKK$$EQx4?* K"659dl56IJJJr   )N)r$   r   r%   r    r&   r    r#   r"   )r   r+   )r   r2   )__name__
__module____qualname____doc____annotations__r*   r1   r5    r   r   r   r      s         >>III #'& & & & &,   	 	 	 	 	 	r   r   N)r   r   r   r   r   r   r   r   )r9   
__future__r   configparserr   r   pathlibr   typingr   pytoolconfig.sources.sourcer	   pytoolconfig.typesr
   pytoolconfig.utilsr   r   r   r;   r   r   <module>rC      s    : : " " " " " " 3 3 3 3 3 3 3 3             . . . . . . " " " " " " / / / / / /
A 
A 
A 
A0 0 0 0 0 0 0 0 0 0r   