skeydula.server.config.schema.base module

Base classes and helper functions for defining configuration schemas.

Here is a complete example of defining your own schema module putting the pieces together in this module:

from attrs import define
from skeydula.server.config.schema.base import Config, Defaults, resolve_missing_config

class ThingDefaults(Defaults):
    pass
DEFAULTS = ThingDefaults()

@define
class ThingConfig(Config):

    @classmethod
    def from_env_config(cls, env_config: EnvConfig) -> "ThingConfig":

        # and then the most basic implementation is like:
        unvalidated_env_config = {"foo": env_config["MY_FOO"]}
        return cls(**resolve_missing_config(unvalidated_env_config, DEFAULTS))
skeydula.server.config.schema.base.resolve_missing_config(unvalidated_env_config, defaults)
Parameters:
Return type:

dict[str, Any]

class skeydula.server.config.schema.base.Defaults

Bases: object

Base class for identifying default schema definitions.

If you do not want to define a default for a configuration variable simply do not include it in the class attributes.

See the full example in the moduel docstring for an example.

class skeydula.server.config.schema.base.Config

Bases: object

Base class for configuration schemas.

See the full example in the moduel docstring for an example.

__init__()
Return type:

None

classmethod from_env_config(env_config)
Parameters:

env_config (EnvConfig) –

Return type:

Config