Source code for qblox_scheduler.analysis.types
# Repository: https://gitlab.com/qblox/packages/software/qblox-scheduler
# Licensed according to the LICENSE file on the main branch
#
# Copyright 2020-2025, Quantify Consortium
# Copyright 2025, Qblox B.V.
"""Module containing the types for use with the analysis classes."""
from collections import UserDict
from typing import Any, ClassVar
from jsonschema import validate
from quantify_core.utilities.general import load_json_schema
# WARNING! Do not inherit from dict! if you do, `AnalysisSettings.update will skip the
# validation done in `__setitem__`.
[docs]
class AnalysisSettings(UserDict):
    """
    Analysis settings with built-in schema validations.
    .. jsonschema:: ../../../../../../src/qblox_scheduler/analysis/schemas/analysis_settings.json#/configurations
    """  # noqa: E501
[docs]
    schema = load_json_schema(__file__, "analysis_settings.json")["configurations"] 
[docs]
    schema_individual: ClassVar[dict[str, Any]] = dict(schema) 
    schema_individual.pop("required")
    def __init__(self, settings: dict = None):
        """Initializes and validates the passed settings."""
        super().__init__()
        if settings:
            validate(settings, self.schema)
            for key, value in settings.items():
                super().__setitem__(key, value)
    def __setitem__(self, key, value):
        """Items are validated before assigning."""
        validate({key: value}, self.schema_individual)
        super().__setitem__(key, value)