o
    Win                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ ddlmZ e	rBd d	lmZ d d
lmZ ddlmZ eeZG dd dZdS )    )annotationsN)ConfigParser)Path)TYPE_CHECKINGClassVar)user_config_dir   )convert)Mapping)Any)TypeDatac                   @  sj   e Zd ZU dZded< ddddZded	< d
Zd d!ddZd"ddZd#ddZ	d$ddZ
ed%ddZdS )&	IniConfigVIRTUALENV_CONFIG_FILEzClassVar[str]VIRTUALENV_CONFIG_FILE_ENV_VARzfailed to parseactivemissing)NTFz ClassVar[dict[bool | None, str]]STATE
virtualenvNenvMapping[str, str] | NonereturnNonec              
   C  s  |d u rt jn|}|| jd }|d u| _|d u r$ttdddd }nt|}|| _i | _d }d | _	z| j
 | _	W n tyO } z|}W Y d }~n5d }~ww | j	r| j | _t | _z|   | j| j| _W n ty } z|}W Y d }~nd }~ww |d urtd|| d S d S )Nr   pypa)appname	appauthorzvirtualenv.iniz(failed to read config file %s because %r)osenvirongetr   
is_env_varr   r   config_file_cachehas_config_fileexistsOSErrorresolver   config_parser_loadhas_sectionsectionhas_virtualenv_section	ExceptionLOGGERerror)selfr   r   	exceptionexc r0   I/home/ubuntu/.local/lib/python3.10/site-packages/virtualenv/config/ini.py__init__   s:   
zIniConfig.__init__c                 C  s@   | j jddd}| j|W  d    S 1 sw   Y  d S )Nrtzutf-8)encoding)r   openr%   	read_file)r-   file_handlerr0   r0   r1   r&   9   s   
$zIniConfig._loadkeystras_typer   tuple[Any, str] | Nonec                 C  sr   ||f}|| j v r| j | S zd}| j| j| }t|||}||f}W n ty1   d }Y nw || j |< |S )Nfile)r    r%   r   r(   lowerr	   r*   )r-   r8   r:   	cache_keysource	raw_valuevalueresultr0   r0   r1   r   =   s   


zIniConfig.getboolc                 C  s   t | jo	t | jS N)rC   r!   r)   r-   r0   r0   r1   __bool__K   s   zIniConfig.__bool__c              	   C  s4   d| j  d| j| j  d| jrdnd d| j d	S )Nz
config file  z (changed z via env var ))r   r   r!   r   r   rE   r0   r0   r1   epilogN   s   zIniConfig.epilogrD   )r   r   r   r   )r   r   )r8   r9   r:   r   r   r;   )r   rC   )r   r9   )__name__
__module____qualname__r   __annotations__r   r(   r2   r&   r   rF   propertyrK   r0   r0   r0   r1   r      s   
 


r   )
__future__r   loggingr   configparserr   pathlibr   typingr   r   platformdirsr   r	   collections.abcr
   r   r   	getLoggerrL   r+   r   r0   r0   r0   r1   <module>   s    
