Frequenz-sdk

Latest version: v0.25.2

Safety actively analyzes 687918 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 6 of 8

0.20.0

Release Notes

Summary

The main feature in the release is the high-level interface. Now all base pipeline actors are created automatically when the SDK is initialized, and the wrapper classes can be accessed directly via `frequenz.sdk.microgrid`: `logical_meter()`, `battery_pool()` and `ev_charger_pool()`.

Upgrading

* Battery power is no longer available through the `LogicalMeter`, but through the `BatteryPool` (338)

python
battery_power_receiver = microgrid.battery_pool().power.new_receiver()


* Formulas composition has changed (327)
* Receivers from formulas are no longer composable.
* Formula composition is now done by composing FormulaEngine instances.
* Automatic formulas from the logical meter and \*pools, are now properties, and return `FormulaEngine` instances, which can be composed further, or can provide a receiver to fetch values.

python
grid_power_receiver = microgrid.logical_meter().grid_power.new_receiver()

self._inverter_power = (
microgrid.logical_meter().pv_power
+ microgrid.battery_pool().power
).build("inverter_power")

inverter_power_receiver = self._inverter_power.new_receiver()


* Update `BatteryStatus` to mark battery with unknown capacity as not working (263)

* The channels dependency was updated to v0.14.0 (292)

* Some properties for `PowerDistributingActor` results were renamed to be more consistent between `Success` and `PartialFailure`:

* The `Success.used_batteries` property was renamed to `succeeded_batteries`.
* The `PartialFailure.success_batteries` property was renamed to `succeeded_batteries`.
* The `succeed_power` property was renamed to `succeeded_power` for both `Success` and `PartialFailure`.

* `MovingWindow`

* The class is now publicly available in the `frequenz.sdk.timeseries` package.

* Accept the `size` parameter as `timedelta` instead of `int` (269).

This change allows users to define the time span of the moving window more intuitively, representing the duration over which samples will be stored.

* The input data will be resampled if a `resampler_config` is passed (269).

This allows controlling the granularity of the samples to be stored in the underlying buffer.

Note that the parameter `sampling_period` has been renamed to `input_sampling_period` to better distinguish it from the sampling period parameter in the `resampler_config`.

* Rename the constructor argument `window_alignment` to `align_to` and change the default to `UNIX_EPOCH`. This is to make it more consistent with the `ResamplerConfig`.

* `Resampler`

* The `ResamplerConfig` class is now publicly available in the `frequenz.sdk.timeseries` package.

* The `ResamplerConfig` now takes the resampling period as a `timedelta`. The configuration was renamed from `resampling_period_s` to `resampling_period` accordingly.

* The `SourceProperties` of the resampler now uses a `timedelta` for the input sampling period. The attribute was renamed from `sampling_period_s` to `sampling_period` accordingly.

* The periods are now aligned to the `UNIX_EPOCH` by default.

To use the old behaviour (aligning to the time the resampler was created), pass `align_to=None` to the `ResamplerConfig`.

New Features

* The core data-pipeline actors are now created automatically (270).

This eliminates a lot of boiler plate code and makes it much simpler to deploy apps.

For example:

python
async def run():
await microgrid.initialize(
host=HOST, port=PORT, resampler_config=ResamplerConfig(resampling_period_s=1.0)
)
grid_power = microgrid.logical_meter().grid_power()


* The `Result` class (and subclasses) for the `PowerDistributingActor` are now `dataclass`es, so logging them will produce a more detailed output.

* The `Resampler` can now can align the resampling period to an arbitrary `datetime`.

This can be configured via the new `align_to` option in the `ResamplerConfig`. By default the resampling period is aligned to the `UNIX_EPOCH`.

Bug Fixes

* Change `PowerDistributor` to use all batteries when none are working (258)

* Update the ordered ring buffer used by the `MovingWindow` to fix the `len()` function so that it returns a value equal to or greater than zero, as expected (274)


What's Changed
* Power Distributing: Documentation enhancements by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/257
* Clean release notes by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/271
* Check battery capacity in BatteryStatus by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/263
* Use all batteries when none are working in PowerDistributor by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/258
* Configure dependabot to automated version updates by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/268
* Bump pylint from 2.17.0 to 2.17.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/288
* Bump mypy from 1.0.1 to 1.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/286
* Bump actions/labeler from 4.0.1 to 4.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/279
* Bump pytest from 7.2.1 to 7.2.2 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/287
* Bump black from 23.1.0 to 23.3.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/284
* Update channels dependency to v0.14.0 by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/295
* Various small fixes by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/277
* Fix len() of the OrderedRingBuffer by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/274
* Bump pytest-asyncio from 0.20.3 to 0.21.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/281
* Bump mkdocstrings[python] from 0.19.1 to 0.20.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/283
* Update networkx requirement from <3,>=2.8 to >=2.8,<4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/282
* Bump mkdocs-material from 8.5.11 to 9.1.5 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/298
* Add a `DataPipeline` implementation by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/270
* Bump pylint from 2.17.1 to 2.17.2 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/300
* Use a bigger request receiver buffer size in data pipeline actors by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/302
* Refactor power distributor's `Result`s by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/305
* Bump mkdocstrings[python] from 0.20.0 to 0.21.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/308
* Add `component_data` method to EVChargerPool by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/266
* benchmark data sourcing actor by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/211
* Add ringbuffer memory benchmark by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/278
* Update MovingWindow to add resampler by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/272
* Bump mkdocs-material from 9.1.5 to 9.1.6 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/312
* Add a `EVChargerPool.set_bounds` method for setting current bounds by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/297
* Bump mkdocstrings[python] from 0.21.1 to 0.21.2 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/309
* Bump pytest from 7.2.2 to 7.3.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/313
* Bump mypy from 1.1.1 to 1.2.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/310
* Add BatteryPool and PowerDistributingActor to the DataPipeline by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/317
* Expose BatteryPool and PowerDistributingHandle from `sdk.microgrid` by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/323
* Fix ring buffer benchmarks by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/324
* Make interface for serializing a ringbuffer more flexible. by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/326
* Ringbuffer: Moved files into a package by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/329
* Update `BatteryPool` tests, examples to use `microgrid.battery_pool()` by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/336
* Bump pytest from 7.3.0 to 7.3.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/339
* Make the resampler use timedelta for periods by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/334
* Bump frequenz-floss/setup-git-user from 1 to 2 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/345
* Make FormulaEngine instances composable, instead of FormulaReceivers by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/327
* Add `power` formula to `BatteryPool` by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/338
* Add an option to align resampling windows by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/335
* Increase sample_rate in some formula tests to reduce flakiness by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/351
* Bump mkdocs-material from 9.1.6 to 9.1.7 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/353
* Bump nox from 2022.11.21 to 2023.4.22 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/354
* Rename custom loggers to `_logger` by sahas-subramanian-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/347
* Rename alignment arguments to `align_to` and make them default to `UNIX_EPOCH` by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/349
* Make the `MovingWindow` public and remove public mentions to the `RingBuffer` by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/355
* Bump mkdocs-material from 9.1.7 to 9.1.8 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/357
* Bump pylint from 2.17.2 to 2.17.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/356

New Contributors
* dependabot made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/288

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.19.0...v0.20.0

0.19.0

Release Notes

Summary

Upgrading

* Remove `_soc` formula from the LogicalMeter. This feature has been moved to the BatteryPool.
* Upgrade PowerDistributingActor to handle components with the NaN metrics (247):
* if power bounds are NaN, then it tries to replace them with corresponding power bounds from adjacent component. If these components are also NaN, then it ignores battery.
* if other metrics metrics are NaN then it ignores battery.
* BatteryStatus to track that a component stopped sending messages. If the battery or its adjacent inverter stopped sending messages, then the battery would be considered as not working. (207)
* PowerDistributing to send battery status to subscribed users (205)
* Rename microgrid.Microgrid to microgrid.ConnectionManager (208)
* Change few resampler logs from info to debug, because they were polluting startup logs (238)

New Features

* A new class `SerializableRingbuffer` is now available, extending the `OrderedRingBuffer` class with the ability to load & dump the data to disk.
* Add the `run(*actors)` function for running and synchronizing the execution of actors. This new function simplifies the way actors are managed on the client side, allowing for a cleaner and more streamlined approach. Users/apps can now run actors simply by calling run(actor1, actor2, actor3...) without the need to manually call join() and deal with linting errors.
* The datasourcing actor now automatically closes all sending channels when the input channel closes.
* BatteryPool implementation for aggregating battery-inverter metrics into higher level metrics. (205)
* Add EV power and current streams to `EVChargerPool` (201)

Bug Fixes

* The resampler now correctly produces resampling windows of exact *resampling period* size, which only include samples emitted during the resampling window (see 170)

Removing

* Deprecated code (232):
* frequenz.sdk._data_ingestion
* frequenz.sdk._data_handling
* The pandas(-stubs) and pytz dependencies are no longer needed (261).


What's Changed
* Serializing Ringbuffer by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/167
* Rename microgrid.Microgrid to microgrid.ConnectionManager and its Insecure-companion by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/208
* Add EV power and current streams to `EVChargerPool` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/201
* Change battery status when component stopped sending data by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/207
* Remove deprecated code by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/232
* Fix mypy invocation in noxfile by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/219
* Add wrappers for the component data in unit tests by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/231
* Fix flaky LogicalMeter test_soc by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/235
* Update MockMicrogrid for use with datasourcing benchmark by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/224
* Change few resampler logs from info to debug by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/238
* Add a run() method to run/wait for actors completion by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/200
* Add & use close channel method in the registry by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/225
* Add BatteryPool implementation for aggregating battery-inverter data by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/205
* Remove `_soc` formula from the LogicalMeter by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/248
* Increase sampling rate in the flaky formula test by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/251
* Make resampling window size constant by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/236
* Change PowerDistributor to ignore components with NaN metrics by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/247
* Update release notes by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/252
* Pin dev/test dependencies by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/256
* Fix resampler behaviour when resampling is to late by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/255
* Change BatteryPool to send metrics only when they change by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/254
* Remove pandas(-stubs) dependencies by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/261

New Contributors
* christianparpart made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/208

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.18.0...v0.19.0

0.18.0

Release Notes

Summary

Upgrading

New Features

* A new class `OrderedRingBuffer` is now available, providing a sorted ring buffer of datetime-value pairs with tracking of any values that have not yet been written.
* Add logical meter formula for EV power.
* A `MovingWindow` class has been added that consumes a data stream from a logical meter and updates an `OrderedRingBuffer`.
* Add EVChargerPool implementation. It has only streaming state changes for ev chargers, now.
* Add 3-phase current formulas: `3-phase grid_current` and `3-phase ev_charger_current` to the LogicalMeter.


Bug Fixes

* Add COMPONENT_STATE_DISCHARGING as valid state for the inverter. DISCHARGING state was missing by mistake and this caused the power distributor to error out if the inverter is already discharging.


What's Changed
* Clean release notes by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/179
* Add 3-phase current formulas by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/164
* Sorted Ringbuffer by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/139
* Use MockMicrogridClient instead of a MockMicrogridServer in LogicalMeter tests by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/180
* Battery status with channel communication by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/171
* Update code to pass newly-released `black v23.1.0` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/192
* Update to work with newly-release `pylint v2.16` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/193
* Use `Sample` type with the RingBuffer by mathias-baumann-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/186
* Add logical meter formula generator for EV power by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/185
* Add an `EVChargerPool` implementation by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/194
* Add 3.11 to the supported Python versions by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/195
* Add a Moving Window Class by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/190
* Move dev dependencies to pyproject.toml by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/199
* Add COMPONENT_STATE_DISCHARGING to valid inverter states by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/202

New Contributors
* matthias-wende-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/190

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.17.0...v0.18.0

0.17.0

Broken version

**This version has a major bug in the power distributor, and it is recommended not to be used. Please upgrade to v0.18.0, there are no breaking changes so updating should be trivial.**

----

Release Notes

Summary

Upgrading

* The resampler now takes a `name` argument for `add_timeseries()`. This is only used for logging purposes.

* The resampler and resampling actor now takes a `ResamplerConfig` object in the constructor instead of the individual values.

* The resampler and resampling actor can emit errors or warnings if the buffer needed to resample is too big. If it is bigger than `ResamplingConfig.max_buffer_len`, the buffer will be truncated to that length, so the resampling can lose accuracy.

* The `ResamplingFunction` now takes different arguments:

* `resampling_period_s` was removed.
* `resampler_config` is the configuration of the resampler calling the resampling function.
* `source_properties` is the properties of the source being resampled.

* Update frequenz-channel-python dependency to the latest release v0.12.0

* The `MetricFetcher` now propagates *NaN* to handle None values when `None` are not treated from the stream as `0`s. Then any `FormulaStep` can compute the results without checking for None on each value involved. However the final result is written as `None` rather than NaN/INF in the `FormulaEngine`.

New Features

* The resampler and resampling actor can now take a few new options via the new `ResamplerConfig` object:

* `warn_buffer_len`: The minimum length of the resampling buffer that will emit a warning.
* `max_buffer_len`: The maximum length of the resampling buffer.

* The resampler now infers the input sampling rate of sources and use a buffer size according to it.

This information can be consulted via `resampler.get_source_properties(source)`. The buffer size is now calculated so it can store all the needed samples requested via the combination of `resampling_period_s`, `max_data_age_in_periods` and the calculated `input_sampling_period_s`.

If we are upsampling, one sample could be enough for back-filling, but we store `max_data_age_in_periods` using `input_sampling_period_s` as period, so the resampling functions can do more complex inter/extrapolation if they need to.

If we are downsampling, we want a buffer that can hold `max_data_age_in_periods * resampling_period_s` seconds of data, and we have one sample every `input_sampling_period_s`, so we use a buffer length of: `max_data_age_in_periods * resampling_period_s / input_sampling_period_s`

Bug Fixes

* Fixed logger creationg for some modules.

Some modules didn't create the logger properly so there was no way to configure them using the standard logger configuration system. Because of this, it might have happened that some log messages were never showed, or some message that the user didn't want to get were emitted anyway.

* When automatically generating formulas for calculating grid power, include measurements from EV chargers if any are directly connected to the grid.


What's Changed
* Clear release notes by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/158
* Make resampler infer the input sampling period and buffer length by leandro-lucarella-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/136
* Handle `NaN` values in FormulaEngine by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/99
* Use stricter typing for `eval_stack` used by the FormulaEngine by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/162
* Fix minimum requirements test by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/163
* Add documentation and usage instructions for noxfile by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/166
* Move code in `util` package to `_internal` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/168
* Add mock microgrid implementation by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/169
* Define way to create object with async constructor by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/145
* Use measurements from EV chargers when calculating grid power by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/172
* Update frequenz-channel-python to the latest release v0.12.0 by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/173
* Add missing entry to the current release notes by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/174
* Update RELEASE NOTES about logical meter bugfix by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/176
* Update release notes before release by ela-kotulska-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/178

New Contributors
* daniel-zullo-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/99

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.16.0...v0.17.0

0.16.4

Release Notes

Bug Fixes

- Hold on to a reference to all streaming tasks in the microgrid API client, so they don't get garbage collected.


What's Changed
* Remove broken CI steps that are not needed for v0.16.x by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/619


**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.16.3...v0.16.4

0.16.2

Release Notes

Bug Fixes

- Ping `pypantic` version to `< 2`.


What's Changed
* Limit pydantic to v1 by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/475


**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.16.1...v0.16.2

Page 6 of 8

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.