flexmeasures.data.schemas.sensors
Classes
- class flexmeasures.data.schemas.sensors.JSON(*, load_default: typing.Any = <marshmallow.missing>, missing: typing.Any = <marshmallow.missing>, dump_default: typing.Any = <marshmallow.missing>, default: typing.Any = <marshmallow.missing>, data_key: str | None = None, attribute: str | None = None, validate: None | typing.Callable[[typing.Any], typing.Any] | typing.Iterable[typing.Callable[[typing.Any], typing.Any]] = None, required: bool = False, allow_none: bool | None = None, load_only: bool = False, dump_only: bool = False, error_messages: dict[str, str] | None = None, metadata: typing.Mapping[str, typing.Any] | None = None, **additional_metadata)
- _deserialize(value, attr, data, **kwargs) dict
Deserialize value. Concrete
Field
classes should implement this method.- Parameters:
value – The value to be deserialized.
attr – The attribute/key in data to be deserialized.
data – The raw input data passed to the Schema.load.
kwargs – Field-specific keyword arguments.
- Raises:
ValidationError – In case of formatting or validation failure.
- Returns:
The deserialized value.
Changed in version 2.0.0: Added
attr
anddata
parameters.Changed in version 3.0.0: Added
**kwargs
to signature.
- class flexmeasures.data.schemas.sensors.QuantityOrSensor(to_unit: str, default_src_unit: str | None = None, *args, **kwargs)
- __init__(to_unit: str, default_src_unit: str | None = None, *args, **kwargs)
Field for validating, serializing and deserializing a Quantity or a Sensor.
NB any validators passed are only applied to Quantities. For example, validate=validate.Range(min=0) will raise a ValidationError in case of negative quantities, but will let pass any sensor that has recorded negative values.
- Parameters:
to_unit – unit in which the sensor or quantity should be convertible to
default_src_unit – what unit to use in case of getting a numeric value
- _deserialize(value: str | dict[str, int], attr, obj, **kwargs) ur.Quantity | Sensor
Deserialize value. Concrete
Field
classes should implement this method.- Parameters:
value – The value to be deserialized.
attr – The attribute/key in data to be deserialized.
data – The raw input data passed to the Schema.load.
kwargs – Field-specific keyword arguments.
- Raises:
ValidationError – In case of formatting or validation failure.
- Returns:
The deserialized value.
Changed in version 2.0.0: Added
attr
anddata
parameters.Changed in version 3.0.0: Added
**kwargs
to signature.
- _serialize(value: ur.Quantity | dict[str, Sensor], attr, data, **kwargs) str | dict[str, int]
Serializes
value
to a basic Python datatype. Noop by default. ConcreteField
classes should implement this method.Example:
class TitleCase(Field): def _serialize(self, value, attr, obj, **kwargs): if not value: return '' return str(value).title()
- convert(value, param, ctx, **kwargs)
Convert the value to the correct type. This is not called if the value is
None
(the missing value).This must accept string values from the command line, as well as values that are already the correct type. It may also convert other compatible types.
The
param
andctx
arguments may beNone
in certain situations, such as when converting prompt input.If the value cannot be converted, call
fail()
with a descriptive message.- Parameters:
value – The value to convert.
param – The parameter that is using this type to convert its value. May be
None
.ctx – The current context that arrived at this value. May be
None
.
- class flexmeasures.data.schemas.sensors.RepurposeValidatorToIgnoreSensors(original_validator, *, error: str | None = None)
Validator that executes another validator (the one you initialize it with) only on non-Sensor values.
- class flexmeasures.data.schemas.sensors.SensorIdField(*args, unit: str | ur.Quantity | None = None, **kwargs)
Field that deserializes to a Sensor and serializes back to an integer.
- class flexmeasures.data.schemas.sensors.SensorSchema(*args, **kwargs)
Sensor schema, with validations.
- opts: SchemaOpts = <flask_marshmallow.sqla.SQLAlchemySchemaOpts object>
- class flexmeasures.data.schemas.sensors.SensorSchemaMixin(*, only: types.StrSequenceOrSet | None = None, exclude: types.StrSequenceOrSet = (), many: bool = False, context: dict | None = None, load_only: types.StrSequenceOrSet = (), dump_only: types.StrSequenceOrSet = (), partial: bool | types.StrSequenceOrSet | None = None, unknown: str | None = None)
Base sensor schema.
Here we include all fields which are implemented by timely_beliefs.SensorDBMixin All classes inheriting from timely beliefs sensor don’t need to repeat these. In a while, this schema can represent our unified Sensor class.
When subclassing, also subclass from ma.SQLAlchemySchema and add your own DB model class, e.g.:
- class Meta:
model = Asset
- class flexmeasures.data.schemas.sensors.TimeSeriesOrSensor(unit, *args, timezone: str | None = None, value_validator: Validator | None = None, **kwargs)
- __init__(unit, *args, timezone: str | None = None, value_validator: Validator | None = None, **kwargs)
The timezone is only used in case a time series is specified and one of the timed events in the time series uses a nominal duration, such as “P1D”.
- _deserialize(value: str | dict[str, int], attr, obj, **kwargs) list[dict] | Sensor
Deserialize value. Concrete
Field
classes should implement this method.- Parameters:
value – The value to be deserialized.
attr – The attribute/key in data to be deserialized.
data – The raw input data passed to the Schema.load.
kwargs – Field-specific keyword arguments.
- Raises:
ValidationError – In case of formatting or validation failure.
- Returns:
The deserialized value.
Changed in version 2.0.0: Added
attr
anddata
parameters.Changed in version 3.0.0: Added
**kwargs
to signature.
- class flexmeasures.data.schemas.sensors.TimedEventSchema(timezone: str | None = None, value_validator: Validator | None = None, *args, **kwargs)