o
    Vh5                     @  s  U d dl mZ d dlZd dlZd dl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 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lmZ d dlmZ d dlmZ d dlmZ erd dlmZ d dlmZ d dlm Z  d dl!m"Z" d+ddZ#d+ddZ$d,ddZ%d+d d!Z&d-d#d$Z'ej(G d%d& d&Z)e*e+Z,da-d'e.d(< G d)d* d*Z/dS ).    )annotationsN)deepcopy)JSONDecodeError)Path)TYPE_CHECKING)Any)ClassVar)NormalizedName)canonicalize_name)DictConfigSource)FileConfigSource)
CONFIG_DIR)DEFAULT_CACHE_DIR)data_dir)TOMLFile)Callable)Mapping)Sequence)ConfigSourcevalstrreturnboolc                 C  s   | dv S )N>   01truefalse r   r   r   h/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/config/config.pyboolean_validator#      r    c                 C  s   |   dv S )N)r   r   )lowerr   r   r   r   boolean_normalizer'   s   r#   intc                 C  s   t | S N)r$   r   r   r   r   int_normalizer+   r!   r&   c                 C  s   zt | }W n
 ty   Y dS w t|tsdS | D ]%\}}t|ts( dS t|tr.qt|to;tdd |D }|sA dS qdS )NFc                 s  s    | ]}t |tV  qd S r%   )
isinstancer   ).0ir   r   r   	<genexpr>B   s    z1build_config_setting_validator.<locals>.<genexpr>T)build_config_setting_normalizerr   r'   dictitemsr   listall)r   valuekeyitemis_valid_listr   r   r   build_config_setting_validator/   s"   


r4   !Mapping[str, str | Sequence[str]]c                 C  s   t | }|S r%   )jsonloads)r   r0   r   r   r   r+   I   s   
r+   c                   @  sh   e Zd ZU ded< ejddZ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dS )PackageFilterPolicyz+dataclasses.InitVar[str | list[str] | None]policyF)init	list[str]packagesstr | list[str] | Noner   Nonec                 C  s(   |sg }n
t |tr| |}|| _d S r%   )r'   r   	normalizer<   )selfr9   r   r   r   __post_init__S   s
   


z!PackageFilterPolicy.__post_init__package_namer   r   c                 C  s.   d| j v rdS | j  pd| j v pt|| j vS )N:all:F:none:)r<   r
   )r@   rB   r   r   r   allowsZ   s   
zPackageFilterPolicy.allowsnamec                 C  s   t td|S )Nz:(all|none):)r   rematch)clsrF   r   r   r   is_reservedd   s   zPackageFilterPolicy.is_reservedc                   s<   t |rt|rdgS dgS t fdd| dD S )NrC   rD   c                   s*   h | ]}|r  |r| nt|qS r   )rJ   stripr
   )r(   rF   rI   r   r   	<setcomp>q   s    z0PackageFilterPolicy.normalize.<locals>.<setcomp>,)r    r#   r.   rK   split)rI   r9   r   rL   r   r?   h   s   
zPackageFilterPolicy.normalizec                 C  sT   t |rdS | d}|D ]}|r$| |rt|dks$td|r%q dS dS )NTrN      z^[a-zA-Z\d_-]+$F)r    rK   rO   rJ   lenrG   rH   )rI   r9   namesrF   r   r   r   	validatorx   s   
zPackageFilterPolicy.validatorN)r9   r=   r   r>   )rB   r   r   r   )rF   r   r   r   )r9   r   r   r;   )r9   r   r   r   )__name__
__module____qualname____annotations__dataclassesfieldr<   rA   rE   classmethodrJ   r?   rS   r   r   r   r   r8   N   s   
 


r8   zConfig | None_default_configc                   @  s~  e Zd ZU eeee ddejdddddddddd	d
idddddi ddejddiddidddid	Z	de
d< dPdQddZedRddZedSddZedSd d!ZdTd#d$ZdTd%d&ZdUd(d)ZdRd*d+ZdRd,d-ZedVd/d0ZedWd2d3ZedXd5d6ZedXd7d8ZedXd9d:ZedXd;d<ZedYd>d?ZdZd[dDdEZd\dGdHZed]dKdLZe d^d_dNdOZ!dS )`ConfigTNz{cache-dir}virtualenvsF)zalways-copyzsystem-site-packageszno-pipz!{project_name}-py{python_version})createz
in-projectpathoptionszuse-poetry-pythonpromptzmax-retriesr   )z
re-resolveparallelzmax-workersz	no-binaryzonly-binarybuild-config-settingszinstallation-dirz
{data-dir}pythonz
lazy-wheelenabled)		cache-dirdata-dirr]   requests	installerrd   solversystem-git-clientkeyringzClassVar[dict[str, Any]]default_configuse_environmentr   r   r>   c                 C  s&   t | j| _|| _t | _t | _d S r%   )r   rm   _config_use_environmentr   _config_source_auth_config_source)r@   rn   r   r   r   __init__   s   zConfig.__init__dict[str, Any]c                 C     | j S r%   ro   r@   r   r   r   config      zConfig.configr   c                 C  ru   r%   rq   rw   r   r   r   config_source   ry   zConfig.config_sourcec                 C  ru   r%   rr   rw   r   r   r   auth_config_source   ry   zConfig.auth_config_sourcer{   c                 C  
   || _ | S r%   rz   r@   r{   r   r   r   set_config_source      zConfig.set_config_sourcec                 C  r~   r%   r|   r   r   r   r   set_auth_config_source   r   zConfig.set_auth_config_sourcerx   c                 C  s   ddl m} || j| d S )Nr   )merge_dicts)poetry.utils.helpersr   ro   )r@   rx   r   r   r   r   merge   s   zConfig.mergec                   s   d	d
 fdd  j S )N rx   rt   
parent_keyr   r   c                   sf   i }| D ],} || }t|tr,|dkr|| d }n|d } | | |d||< q|||< q|S )Nr   .)r   )getr'   r,   )rx   r   all_r1   r0   current_parent_allr@   r   r   r      s   

zConfig.all.<locals>._all)r   )rx   rt   r   r   r   rt   )rx   rw   r   r   r   r/      s   
z
Config.allc                 C  ru   r%   rv   rw   r   r   r   raw   s   z
Config.rawdict[str, dict[str, str]]c                  C  sP   i } t d}tjD ]}||}|r%dtj| i| |d dd< q
| S )Nz)POETRY_REPOSITORIES_(?P<name>[A-Z_]+)_URLurlrF   _-)rG   compileosenvironrH   groupr"   replace)repositoriespatternenv_keyrH   r   r   r   _get_environment_repositories   s   



z$Config._get_environment_repositories:Mapping[NormalizedName, Mapping[str, str | Sequence[str]]]c                  C  sd   i } t d}tjD ]%}|| }r/ttj| s!td| q
ttj| | t	|
d< q
| S )Nz6POETRY_INSTALLER_BUILD_CONFIG_SETTINGS_(?P<name>[^.]+)z-Invalid value set for environment variable %srF   )rG   r   r   r   rH   r4   loggerdebugr+   r
   r   )build_config_settingsr   r   rH   r   r   r   &_get_environment_build_config_settings   s   

z-Config._get_environment_build_config_settingsr   c                 C  s   t | d d d S )Nrf   cacher   r   r   
expanduserrw   r   r   r   repository_cache_directory  s   z!Config.repository_cache_directoryc                 C  s   t | d d S )Nrf   	artifactsr   rw   r   r   r   artifacts_cache_directory  s   z Config.artifacts_cache_directoryc                 C  0   |  d}|d u rt|  dd }t| S )Nvirtualenvs.pathrf   r]   r   r   r   r@   r_   r   r   r   virtualenvs_path     
zConfig.virtualenvs_pathc                 C  r   )Nzpython.installation-dirrg   rd   r   r   r   r   r   python_installation_dir  r   zConfig.python_installation_dirr$   c                 C  sP   z
t  pdd }W n ty   d}Y nw | d}|d u r!|S t|t|S )NrP         installer.max-workers)r   	cpu_countNotImplementedErrorr   minr$   )r@   default_max_workersdesired_max_workersr   r   r   installer_max_workers%  s   
zConfig.installer_max_workerssetting_namer   defaultr   c                   s
   d}i } jrHdkr  }|r|S d}|ks$| dr)  }ndddd |D  }t|}|durH  	|S  j
}	|D ]}
||
 |	d	 d
 |
< qM|D ]}||	vri |  S |	| }	q\ jrt|	tr fdd|	D S  |	S )z+
        Retrieve a setting value.
        r   r   zinstaller.build-config-settingsPOETRY_r   c                 s  s     | ]}|  d dV  qdS )r   r   N)upperr   r(   kr   r   r   r*   M  s    zConfig.get.<locals>.<genexpr>Nri   rc   c                   s"   i | ]}|   d | qS )r   )r   r   r@   r   r   r   
<dictcomp>c  s   " zConfig.get.<locals>.<dictcomp>)rO   rp   r   
startswithr   joinr   getenvprocess_get_normalizerro   r'   r,   )r@   r   r   keysr   r   build_config_settings_keyenv	env_valuer0   rB   r1   r   r   r   r   5  s8   




z
Config.getr0   c                   s*   t |ts|S d fdd}td||S )	NrH   re.Match[str]r   r   c                   s(   |  d} |}|r|S d| dS )NrP   {})r   r   )rH   r1   config_valuerw   r   r   resolve_from_configk  s
   

z+Config.process.<locals>.resolve_from_configz{(.+?)})rH   r   r   r   )r'   r   rG   sub)r@   r0   r   r   rw   r   r   g  s   

zConfig.processrF   Callable[[str], Any]c                 C  sL   | dv rt S | dkrdd S | dv rtS | dv rtjS | dr"tS dd S )	N>   keyring.enabledsolver.lazy-wheelinstaller.parallelvirtualenvs.createinstaller.re-resolvevirtualenvs.in-projectvirtualenvs.options.no-pipvirtualenvs.use-poetry-pythonvirtualenvs.options.always-copy(virtualenvs.options.system-site-packagesrk   r   c                 S  s   t t| S r%   )r   r   r   r   r   r   <lambda>  s    z(Config._get_normalizer.<locals>.<lambda>>   requests.max-retriesr   )zinstaller.no-binaryzinstaller.only-binaryz installer.build-config-settings.c                 S  s   | S r%   r   r   r   r   r   r     s    )r#   r&   r8   r?   r   r+   )rF   r   r   r   r   w  s   
zConfig._get_normalizerreloadc                 C  s   t d u s|rG|  a ttd }| r!td|j t |  t 	t
| ttd }| r@td|j t |  t t
| t S )Nzconfig.tomlzLoading configuration file %sz	auth.toml)r[   r   r   existsr   r   r_   r   readr   r   r   )rI   r   config_fileauth_config_filer   r   r   r^     s   zConfig.create)T)rn   r   r   r>   )r   rt   )r   r   )r{   r   r   r\   )rx   rt   r   r>   )r   r   )r   r   )r   r   )r   r$   r%   )r   r   r   r   r   r   )r0   r   r   r   )rF   r   r   r   )F)r   r   r   r\   )"rT   rU   rV   r   r   r   r   r_   r   rm   rW   rs   propertyrx   r{   r}   r   r   r   r/   r   staticmethodr   r   r   r   r   r   r   r   r   r   rZ   r^   r   r   r   r   r\      sz   
 $





2!r\   )r   r   r   r   )r   r   r   r$   )r   r   r   r5   )0
__future__r   rX   r6   loggingr   rG   copyr   r   pathlibr   typingr   r   r   packaging.utilsr	   r
    poetry.config.dict_config_sourcer    poetry.config.file_config_sourcer   poetry.locationsr   r   r   poetry.tomlr   collections.abcr   r   r   poetry.config.config_sourcer   r    r#   r&   r4   r+   	dataclassr8   	getLoggerrT   r   r[   rW   r\   r   r   r   r   <module>   sF    





<