Skip to content

Releases: frequenz-floss/frequenz-sdk-python

v1.0.0-rc1700

28 Feb 09:45
v1.0.0-rc1700
fe7321c
Compare
Choose a tag to compare

Frequenz Python SDK Release Notes

Summary

New Features

  • Add a stop() method to the FormulaEngine. Now it is possible to stop custom formulas.

  • Stop fallback formulas when primary formula starts working again.

Bug Fixes

  • Fixed a bug with formulas raising exception when stopped.

  • Fixed a bug that raised CancelledError when actor was started with frequenz.sdk.actor.run and stopped.

  • Stop catching BaseException in frequenz.sdk.actor.run. Only CancelledError and Exception are caught now.

What's Changed

Full Changelog: v1.0.0-rc1600...v1.0.0-rc1700

v1.0.0-rc1600

13 Feb 14:35
v1.0.0-rc1600
38c91e5
Compare
Choose a tag to compare
v1.0.0-rc1600 Pre-release
Pre-release

Frequenz Python SDK Release Notes

New Features

  • The MovingWindow now has an async wait_for_samples method that waits for a given number of samples to become available in the moving window and then returns.

Bug Fixes

  • Fixed a bug that was preventing power proposals to go through if there once existed some proposals with overlapping component IDs, even if the old proposals have expired.

  • Fixed a bug that was causing formulas to fallback to CHPs, when the CHP meters didn't have data. CHPs are not supported in the data sourcing actor and in the client, so we can't fallback to CHPs.

What's Changed

Full Changelog: v1.0.0-rc1500...v1.0.0-rc1600

v1.0.0-rc1500

23 Jan 14:39
v1.0.0-rc1500
60a8286
Compare
Choose a tag to compare
v1.0.0-rc1500 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

This release includes a new ConfigManager class to simplify managing the configuration, and ships other improvements and fixes to the config system in general.

Upgrading

  • frequenz.sdk.config

    • LoggingConfigUpdater

      • Renamed to LoggingConfigUpdatingActor to follow the actor naming convention.
      • The actor must now be constructed using a ConfigManager instead of a receiver.
      • Make all arguments to the constructor keyword-only, except for the config_manager argument.
      • If the configuration is removed, the actor will now load back the default configuration.
    • LoggingConfig

      • The load() method was removed. Please use frequenz.sdk.config.load_config() instead.
      • The class is now a standard dataclass instead of a marshmallow_dataclass.
      • The class is now immutable.
      • The constructor now accepts only keyword arguments.
    • LoggerConfig

      • The class is now a standard dataclass instead of a marshmallow_dataclass.
      • The class is now immutable.
      • The constructor now accepts only keyword arguments.
    • load_config():

      • The base_schema argument is now keyword-only and defaults to BaseConfigSchema (and because of this, it uses unknown=EXCLUDE by default).
      • The arguments forwarded to marshmallow.Schema.load() now must be passed explicitly via the marshmallow_load_kwargs argument, as a dict, to improve the type-checking.
      • Will now raise a ValueError if unknown is set to INCLUDE in marshmallow_load_kwargs.
    • ConfigManagingActor: Raise a ValueError if the config_files argument an empty sequence.

New Features

  • frequenz.sdk.config

    • Logging was improved in general.

    • Added documentation and user guide.

    • LoggingConfigUpdatingActor

      • Added a new name argument to the constructor to be able to override the actor's name.
    • ConfigManager: Added a class to simplify managing the configuration. It takes care of instantiating the config actors and provides a convenient method for creating receivers with a lot of common functionality.

    • BaseConfigSchema: Added a marshmallow base Schema that includes custom fields for frequenz-quantities. In the futute more commonly used fields might be added.

    • wait_for_first(): Added a function to make it easy to wait for the first configuration to be received with a timeout.

    • ConfigManagingActor: Allow passing a single configuration file.

Bug Fixes

  • Fix a bug in BackgroundService where it won't try to self.cancel() and await self.wait() if there are no internal tasks. This prevented to properly implement custom stop logic without having to redefine the stop() method too.

  • Fix a bug where if a string was passed to the ConfigManagingActor it would be interpreted as a sequence of 1 character strings.

  • Remove a confusing log message in the power distributing actor.

  • Close all receivers owned by a *pool when stopping the pool.

What's Changed

Full Changelog: v1.0.0-rc1400...v1.0.0-rc1500

v1.0.0-rc1400

29 Nov 11:04
v1.0.0-rc1400
ecd5580
Compare
Choose a tag to compare
v1.0.0-rc1400 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

This is a minor release with just a few bug fixes but also one breaking change in the ConfigManagingActor.

Upgrading

  • The ConfigManagingActor now only reacts to CREATE and MODIFY events. DELETE is not supported anymore and are ignored.
  • Remove the event_types argument from the ConfigManagingActor constructor.

Bug Fixes

  • Fix bugs with ConfigManagingActor:
    • Raising unhandled exceptions when any file in config directory was deleted.
    • Raising unhandled exception if not all config files exist.
    • Eliminate recursive actor crashes when all config files were missing.

What's Changed

Full Changelog: v1.0.0-rc1302...v1.0.0-rc1400

v1.0.0-rc1302

29 Nov 09:09
v1.0.0-rc1302
5d337b6
Compare
Choose a tag to compare
v1.0.0-rc1302 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Improvements

  • Many tasks, senders and receivers now have proper names for easier debugging.
  • The resample log was improved to show more details.
  • The Sample class now has a nice __str__ representation.

Bug Fixes

  • Fix a bug in the resampler that could end up with an IndexError: list index out of range exception when a new resampler was added while awaiting the existing resampler to finish resampling.

What's Changed

  • Fix IndexError: list index out of range in resampler by @llucax in #1117
  • Small debugging enhancements by @Marenz in #1119

Full Changelog: v1.0.0-rc1301...v1.0.0-rc1302

v1.0.0-rc1301

22 Nov 11:22
v1.0.0-rc1301
dd7c65f
Compare
Choose a tag to compare
v1.0.0-rc1301 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Bug Fixes

  • Fix bug with LoggingConfigUpdater not updating root logger level.
  • The frequenz-quantities dependency requirement was widened to allow any v1.x version (it was pinned to 1.0.0rc3 before).

What's Changed

Full Changelog: v1.0.0-rc1300...v1.0.0-rc1301

v1.0.0-rc1300

19 Nov 14:08
v1.0.0-rc1300
53792f2
Compare
Choose a tag to compare
v1.0.0-rc1300 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

Upgrading

New Features

  • The MicrogridApiClient was updated to the latest version.

Bug Fixes

What's Changed

Full Changelog: v1.0.0-rc1200...v1.0.0-rc1300

v1.0.0-rc1200

18 Nov 10:21
v1.0.0-rc1200
cd289a1
Compare
Choose a tag to compare
v1.0.0-rc1200 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Upgrading

New Features

  • frequenz.sdk.config.load_config() can now use a base schema to customize even further how data is loaded.

What's Changed

Full Changelog: v1.0.0-rc1100...v1.0.0-rc1200

v1.0.0-rc1100

11 Nov 11:29
v1.0.0-rc1100
5b54cf4
Compare
Choose a tag to compare
v1.0.0-rc1100 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

This release focus on improving the config management, but also introduces other minor improvements and fixes an important bug.

Upgrading

  • The ConfigManagingActor now takes multiple configuration files as input, and the argument was renamed from config_file to config_files. If you are using this actor, please update your code. For example:

    # Old
    actor = ConfigManagingActor(config_file="config.toml")
    # New
    actor = ConfigManagingActor(config_files=["config.toml"])
  • The MovingWindow now take all arguments as keyword-only to avoid mistakes.

  • The frequenz-quantities dependency was bumped to 1.0.0rc3.

  • The ComponentMetricsRequest now produces a channel name without the start_date if the start_date is None. If you are somehow relying on the old behavior, please update your code.

New Features

  • The ConfigManagingActor can now take multiple configuration files as input, allowing to override default configurations with custom configurations.
  • A new frequenz.sdk.config.load_config() function is available to load configurations using marshmallow_dataclasses with correct type hints.
  • Implement and standardize logging configuration with the following changes:
    • Add LoggerConfig and LoggingConfig to standardize logging configuration.
    • Create LoggingConfigUpdater to handle runtime config updates.
    • Support individual log level settings for each module.

Bug Fixes

  • Fixes an issue where PV and EV system bounds were not available to the Power Manager sometimes when requested after startup.

What's Changed

Full Changelog: v1.0.0-rc1000...v1.0.0-rc1100

v1.0.0-rc1000

18 Oct 15:52
v1.0.0-rc1000
2f62b64
Compare
Choose a tag to compare
v1.0.0-rc1000 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

The SDK starts using the frequenz-quantities package with this release.

A new method for streaming reactive power at the grid connection point has been added, and the ConfigManagingActor has been improved.

Upgrading

  • Replace Quantity and its sub-classes (Power, Current, etc.) in the frequenz.sdk.timeseries module with the external frequenz-quantities package. Please add the new library as a dependency and adapt your imports if you are using these types.
  • The QuantityT has been moved to the frequenz.sdk.timeseries._base_types module.
  • The QuantityT doesn't include itself (QuantityT) anymore.

New Features

  • ConfigManagingActor: The file polling mechanism is now forced by default. Two new parameters have been added:

    • force_polling: Whether to force file polling to check for changes. Default is True.
    • polling_interval: The interval to check for changes. Only relevant if polling is enabled. Default is 1 second.
  • Add a new method microgrid.grid().reactive_power to stream reactive power at the grid connection point.

Bug Fixes

  • Many long running async tasks including metric streamers in the BatteryPool now have automatic recovery in case of exceptions.

What's Changed

Full Changelog: v1.0.0-rc901...v1.0.0-rc1000