fmn.core.config module

class fmn.core.config.CacheArgsModel(*, ttl: int | float | str | timedelta | None = None, lock_ttl: int | float | str | timedelta | None = None, early_ttl: int | float | str | timedelta | None = None)[source]

Bases: BaseModel

early_ttl: int | float | str | timedelta | None
lock_ttl: int | float | str | timedelta | None
ttl: int | float | str | timedelta | None
class fmn.core.config.CacheModel(*, url: UrlValue = 'mem://', setup_args: dict[str, Any] | None = None, default_args: CacheArgsModel = CacheArgsModel(ttl='1h', lock_ttl=None, early_ttl=None), scoped_args: CacheScopedArgsModel = CacheScopedArgsModel(tracked=CacheArgsModel(ttl='1d', lock_ttl='1h', early_ttl='20h'), rules=CacheArgsModel(ttl='1d', lock_ttl='5m', early_ttl='20h'), pagure=None, fasjson=None))[source]

Bases: BaseModel

default_args: CacheArgsModel
scoped_args: CacheScopedArgsModel
setup_args: dict[str, Any] | None
url: UrlValue
class fmn.core.config.CacheScopedArgsModel(*, tracked: CacheArgsModel = CacheArgsModel(ttl='1d', lock_ttl='1h', early_ttl='20h'), rules: CacheArgsModel = CacheArgsModel(ttl='1d', lock_ttl='5m', early_ttl='20h'), pagure: CacheArgsModel | None = None, fasjson: CacheArgsModel | None = None)[source]

Bases: BaseModel

fasjson: CacheArgsModel | None
pagure: CacheArgsModel | None
rules: CacheArgsModel
tracked: CacheArgsModel
class fmn.core.config.DBModel(*, sqlalchemy: SQLAlchemyModel = SQLAlchemyModel(url='sqlite:///:memory:', echo=False))[source]

Bases: BaseModel

sqlalchemy: SQLAlchemyModel
class fmn.core.config.SQLAlchemyModel(*, url: UrlValue = 'sqlite:///:memory:', echo: bool = False, **extra_data: Any)[source]

Bases: BaseModel

class Config[source]

Bases: object

extra = 'allow'
echo: bool
url: UrlValue
class fmn.core.config.ServicesModel(*, fasjson_url: UrlValue = 'https://fasjson.fedoraproject.org', distgit_url: UrlValue = 'https://src.fedoraproject.org')[source]

Bases: BaseModel

distgit_url: UrlValue
fasjson_url: UrlValue
class fmn.core.config.Settings(_env_file: str | PathLike | List[str | PathLike] | Tuple[str | PathLike, ...] | None = '<object object>', _env_file_encoding: str | None = None, _env_nested_delimiter: str | None = None, _secrets_dir: str | PathLike | None = None, *, cors_origins: str = 'https://notifications.fedoraproject.org', oidc_provider_url: str = 'https://id.fedoraproject.org/openidc', oidc_conf_endpoint: str = '/.well-known/openid-configuration', oidc_token_info_endpoint: str = '/TokenInfo', oidc_user_info_endpoint: str = '/UserInfo', oidc_client_id: str = '0123456789abcdef0123456789abcdef', oidc_client_secret: str = '0123456789abcdef0123456789abcdef', admin_groups: list[str] = ['sysadmin-main'], oidc_conf_url: str | None = None, oidc_token_info_url: str | None = None, id_cache_gc_interval: int = 300, database: DBModel = DBModel(sqlalchemy=SQLAlchemyModel(url='sqlite:///:memory:', echo=False)), cache: CacheModel = CacheModel(url='mem://', setup_args=None, default_args=CacheArgsModel(ttl='1h', lock_ttl=None, early_ttl=None), scoped_args=CacheScopedArgsModel(tracked=CacheArgsModel(ttl='1d', lock_ttl='1h', early_ttl='20h'), rules=CacheArgsModel(ttl='1d', lock_ttl='5m', early_ttl='20h'), pagure=None, fasjson=None)), services: ServicesModel = ServicesModel(fasjson_url='https://fasjson.fedoraproject.org', distgit_url='https://src.fedoraproject.org'))[source]

Bases: BaseSettings

class Config[source]

Bases: object

env_file = 'fmn.cfg'
env_nested_delimiter = '__'
admin_groups: list[str]
cache: CacheModel
classmethod compute_compound_fields(values) dict[source]
cors_origins: str
database: DBModel
id_cache_gc_interval: int
oidc_client_id: str
oidc_client_secret: str
oidc_conf_endpoint: str
oidc_conf_url: str | None
oidc_provider_url: str
oidc_token_info_endpoint: str
oidc_token_info_url: str | None
oidc_user_info_endpoint: str
services: ServicesModel
fmn.core.config.get_settings() Settings[source]
fmn.core.config.set_settings_file(path: str) None[source]