3 Ú¯aå+ ã @ s¢ d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddl m Z ddl mZ dd lm Z dd lmZ ddlmZ G dd „ d ƒZeddœdd„ZdS )z$Certbot user-supplied configuration.é N)ÚAny)ÚList)ÚOptional)Úparse)Úerrors)Úutil)Ú constants)Úmisc)Úosc @ s e Zd ZdZejddœdd„Zeedœdd„Z eedd œd d„Z eedœd d„ƒZej eddœdd„ƒZeee dœdd„ƒZej eddœdd„ƒZeedœdd„ƒZej eddœdd„ƒZeedœdd„ƒZej eddœdd„ƒZeedœdd„ƒZej eddœd d„ƒZeedœd!d"„ƒZeedœd#d$„ƒZeedœd%d&„ƒZeedœd'd(„ƒZeedœd)d*„ƒZeedœd+d,„ƒZeedœd-d.„ƒZeedœd/d0„ƒZeedœd1d2„ƒZeedœd3d4„ƒZeedœd5d6„ƒZeedœd7d8„ƒZ eedœd9d:„ƒZ!ee"e dœd;d<„ƒZ#eedœd=d>„ƒZ$eedœd?d@„ƒZ%eedœdAdB„ƒZ&eee dœdCdD„ƒZ'eedœdEdF„ƒZ(eedGœdHdI„Z)eedœdJdK„ƒZ*eedœdLdM„ƒZ+eedœdNdO„ƒZ,eedœdPdQ„ƒZ-eedœdRdS„ƒZ.eedœdTdU„ƒZ/eedœdVdW„ƒZ0eedœdXdY„ƒZ1ed dZœd[d\„Z2dS )]ÚNamespaceConfiga4 Configuration wrapper around :class:`argparse.Namespace`. Please note that the following attributes are dynamically resolved using :attr:`~certbot.configuration.NamespaceConfig.work_dir` and relative paths defined in :py:mod:`certbot._internal.constants`: - `accounts_dir` - `csr_dir` - `in_progress_dir` - `key_dir` - `temp_checkpoint_dir` And the following paths are dynamically resolved using :attr:`~certbot.configuration.NamespaceConfig.config_dir` and relative paths defined in :py:mod:`certbot._internal.constants`: - `default_archive_dir` - `live_dir` - `renewal_configs_dir` :ivar namespace: Namespace typically produced by :meth:`argparse.ArgumentParser.parse_args`. :type namespace: :class:`argparse.Namespace` N)Ú namespaceÚreturnc C sZ | t j| d|ƒ tjj| jjƒ| j_tjj| jjƒ| j_tjj| jjƒ| j_t | ƒ d S )Nr ) ÚobjectÚ__setattr__r ÚpathÚabspathr Ú config_dirÚwork_dirZlogs_dirÚ_check_config_sanity)Úselfr © r ú#/usr/lib/python3.6/configuration.pyÚ__init__+ s zNamespaceConfig.__init__)Únamer c C s t | j|ƒS )N)Úgetattrr )r r r r r Ú__getattr__9 s zNamespaceConfig.__getattr__)r Úvaluer c C s t | j||ƒ d S )N)Úsetattrr )r r r r r r r <