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
- 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¶
- 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
- 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
- cache: CacheModel¶
- services: ServicesModel¶