U
    |em
                     @  sj   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	 d dl
mZ ddlmZ G d	d
 d
ZdS )    )annotationsN)ConfigParser)Path)ClassVar)user_config_dir   )convertc                   @  sl   e Zd ZU dZded< ddddZded	< d
ZdddddZdd Zdd Z	ddddZ
edd ZdS )	IniConfigZVIRTUALENV_CONFIG_FILEzClassVar[str]VIRTUALENV_CONFIG_FILE_ENV_VARzfailed to parseactivemissing)NTFz ClassVar[dict[bool | None, str]]STATE
virtualenvNNone)returnc              
   C  s  |d krt jn|}|| jd }|d k	| _|d krHttdddd }nt|}|| _i | _d }d | _	z| j
 | _	W n& tk
r } z|}W 5 d }~X Y n`X | j	r| j | _t | _z|   | j| j| _W n& tk
r } z|}W 5 d }~X Y nX |d k	rtd|| d S )Nr   Z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loggingerror)selfenvr   	exceptionexc r)   9/tmp/pip-unpacked-wheel-tuxcr54r/virtualenv/config/ini.py__init__   s0    

zIniConfig.__init__c              
   C  s4   | j jddd}| j|W  5 Q R  S Q R X d S )Nrtzutf-8)encoding)r   openr   	read_file)r%   Zfile_handlerr)   r)   r*   r   1   s    zIniConfig._loadc                 C  st   ||f}|| j kr| j | S z0d}| j| j| }t|||}||f}W n tk
rd   d }Y nX || j |< |S )Nfile)r   r   r   r    lowerr   r"   )r%   keyZas_type	cache_keysourceZ	raw_valuevalueresultr)   r)   r*   r   5   s    



zIniConfig.getboolc                 C  s   t | jot | jS )N)r7   r   r!   r%   r)   r)   r*   __bool__C   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
   r8   r)   r)   r*   epilogF   s    2zIniConfig.epilog)N)__name__
__module____qualname__r
   __annotations__r   r    r+   r   r   r9   propertyr>   r)   r)   r)   r*   r	      s   
r	   )
__future__r   r#   r   configparserr   pathlibr   typingr   Zplatformdirsr   r   r	   r)   r)   r)   r*   <module>   s   