Skip to content

Config

config

Handling the configuration

PYTANIS_CFG_PATH: str = '.pytanis/config.toml' module-attribute

Path within $HOME to the configuration file of Pytanis

PYTANIS_ENV: str = 'PYTANIS_CONFIG' module-attribute

Name of the environment variable to look up the path for the config

Config

Main configuration object

Google: GoogleCfg instance-attribute

HelpDesk: HelpDeskCfg instance-attribute

Pretalx: PretalxCfg instance-attribute

cfg_path: FilePath instance-attribute

convert_json_path(v: GoogleCfg, info: ValidationInfo) -> GoogleCfg classmethod

Source code in src/pytanis/config.py
@field_validator('Google')
@classmethod
def convert_json_path(cls, v: GoogleCfg, info: ValidationInfo) -> GoogleCfg:
    def make_rel_path_abs(entry):
        if entry is not None and not entry.is_absolute():
            entry = info.data['cfg_path'].parent / entry
        return entry

    v.client_secret_json = make_rel_path_abs(v.client_secret_json)
    v.token_json = make_rel_path_abs(v.token_json)

    return v

GoogleCfg

Configuration related to the Google API

client_secret_json: Path | None = None class-attribute instance-attribute

service_user_authentication: bool = False class-attribute instance-attribute

token_json: Path | None = None class-attribute instance-attribute

HelpDeskCfg

Configuration related to the HelpDesk API

account: str | None = None class-attribute instance-attribute

entity_id: str | None = None class-attribute instance-attribute

token: str | None = None class-attribute instance-attribute

PretalxCfg

Configuration related to the Pretalx API

api_token: str | None = None class-attribute instance-attribute

get_cfg() -> Config

Returns the configuration as an object

Source code in src/pytanis/config.py
def get_cfg() -> Config:
    """Returns the configuration as an object"""
    cfg_path = get_cfg_file()
    with open(cfg_path, 'rb') as fh:
        cfg_dict = tomli.load(fh)
    # add config path to later resolve relative paths of config values
    cfg_dict['cfg_path'] = cfg_path
    return Config.model_validate(cfg_dict)

get_cfg_file() -> Path

Determines the path of the config file

Source code in src/pytanis/config.py
def get_cfg_file() -> Path:
    """Determines the path of the config file"""
    path_str = os.environ.get(PYTANIS_ENV, None)
    path = Path.home() / Path(PYTANIS_CFG_PATH) if path_str is None else Path(path_str)
    return path