noether.core.schemas.lib

Functions

resolve_config_class(kind, base_cls)

Resolve a config class from a dotted kind string.

Discriminated(registry_cls)

Returns a BeforeValidator that instantiates components based on their registry keys.

ConfiguredBy(config_class)

Decorator to mark a class as being configured by a specific config class.

Module Contents

noether.core.schemas.lib.resolve_config_class(kind, base_cls)

Resolve a config class from a dotted kind string.

Resolution order:
  1. If the imported class is already a base_cls subclass, return it directly.

  2. Check for a _config_class attribute (set by @ConfiguredBy).

  3. Inspect __init__ type hints for the first parameter that is a base_cls subclass.

Parameters:
  • kind (str) – fully qualified dotted path (e.g., "noether.training.trainers.WeightedLossTrainer").

  • base_cls (type[pydantic.BaseModel]) – the base config class to resolve against.

Raises:

ValueError – if the config class cannot be determined.

Return type:

type[pydantic.BaseModel]

noether.core.schemas.lib.Discriminated(registry_cls)

Returns a BeforeValidator that instantiates components based on their registry keys. Usage: field: Annotated[Any, Discriminated(MyComponent)]

Parameters:

registry_cls (type[_RegistryBase])

noether.core.schemas.lib.ConfiguredBy(config_class)

Decorator to mark a class as being configured by a specific config class. Usage:

@ConfiguredBy(MyConfig) class MyClass:

Parameters:

config_class (type[pydantic.BaseModel])