Skip to content

settings

Generic strategy for adding configurations to the session.

JSONSerialisable = Union[dict, list, str, int, float, bool, NoneType] module-attribute

NoneType = type(None) module-attribute

SettingsConfig

Bases: AttrDict

Configuration for a generic "settings" filter.

This strategy stores settings in the session such that they are available for other strategies. For this to work, this strategy should be added to the end of the pipeline (since it uses the initiate() method).

The settings are stored as a JSON string which can be accessed by its label.

Source code in oteapi_dlite/strategies/settings.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class SettingsConfig(AttrDict):
    """Configuration for a generic "settings" filter.

    This strategy stores settings in the session such that they are
    available for other strategies.  For this to work, this strategy
    should be added to the end of the pipeline (since it uses the
    `initiate()` method).

    The settings are stored as a JSON string which can be accessed
    by its label.

    """

    label: Annotated[
        str,
        Field(
            description=(
                "Label for accessing this configuration.  "
                "It should be unique."
            ),
        ),
    ]
    settings: Annotated[
        JSONSerialisable,
        Field(
            description=(
                "The configurations to be stored, represented as a Python "
                "object that can be serialised to JSON."
            ),
        ),
    ]

label: Annotated[str, Field(description='Label for accessing this configuration. It should be unique.')] instance-attribute

settings: Annotated[JSONSerialisable, Field(description='The configurations to be stored, represented as a Python object that can be serialised to JSON.')] instance-attribute

SettingsFilterConfig

Bases: FilterConfig

Settings strategy config.

Source code in oteapi_dlite/strategies/settings.py
58
59
60
61
62
63
64
class SettingsFilterConfig(FilterConfig):
    """Settings strategy config."""

    configuration: Annotated[
        SettingsConfig,
        Field(description="Settings strategy-specific configuration."),
    ]

configuration: Annotated[SettingsConfig, Field(description='Settings strategy-specific configuration.')] instance-attribute

SettingsStrategy

Generic settings strategy for storing settings for other strategies.

Registers strategies:

  • ("mediaType", "application/vnd.dlite-settings")
Source code in oteapi_dlite/strategies/settings.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
@dataclass
class SettingsStrategy:
    """Generic settings strategy for storing settings for other
    strategies.

    **Registers strategies**:

    - `("mediaType", "application/vnd.dlite-settings")`

    """

    settings_config: SettingsFilterConfig

    def initialize(
        self,
        session: Optional[dict[str, Any]] = None,
    ) -> SessionUpdate:
        """Store settings."""
        config = self.settings_config.configuration
        return add_settings(session, config.label, config.settings)

    def get(
        self, session: Optional[dict[str, Any]] = None  # noqa: ARG002
    ) -> SessionUpdate:
        """Do nothing."""
        return SessionUpdate()

settings_config: SettingsFilterConfig instance-attribute

get(session=None)

Do nothing.

Source code in oteapi_dlite/strategies/settings.py
88
89
90
91
92
def get(
    self, session: Optional[dict[str, Any]] = None  # noqa: ARG002
) -> SessionUpdate:
    """Do nothing."""
    return SessionUpdate()

initialize(session=None)

Store settings.

Source code in oteapi_dlite/strategies/settings.py
80
81
82
83
84
85
86
def initialize(
    self,
    session: Optional[dict[str, Any]] = None,
) -> SessionUpdate:
    """Store settings."""
    config = self.settings_config.configuration
    return add_settings(session, config.label, config.settings)