Skip to content

Releases: frequenz-floss/frequenz-sdk-python

v1.0.0-rc901

16 Sep 09:41
v1.0.0-rc901
ec96e90
Compare
Choose a tag to compare
v1.0.0-rc901 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Bug Fixes

  • ConfigManagingActor: Fixed an issue where the actor was unable to process events after being restarted.

What's Changed

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

v1.0.0-rc900

02 Sep 10:06
v1.0.0-rc900
bba0b5b
Compare
Choose a tag to compare
v1.0.0-rc900 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

This release mainly introduces a new feature that allows fallback components to be used in generated formulas, but it also fixes a few bugs and gets rid of betterproto/grpclib and goes back to Google's implementation.

Upgrading

  • The frequenz-client-microgrid dependency was bumped to 0.5.0. This can cause dependency issues if you are using other API clients and the frequenz-client-base dependencies don't match.

New Features

  • Fallback components are used in generated formulas. If primary components is unavailable, formula will generate metric from fallback components. Fallback formulas are implemented for:
    • PVPowerFormula
    • ProducerPowerFormula
    • BatteryPowerFormula
    • ConsumerPowerFormula
    • GridPowerFormula

Bug Fixes

  • Allow setting api_power_request_timeout in microgrid.initialize().

  • Fix an issue where in grid meters could be identified as {pv/ev/battery/chp} meters in some component graph configurations.

What's Changed

Full Changelog: v1.0.0-rc800...v1.0.0-rc900

v1.0.0-rc801

22 Aug 11:00
v1.0.0-rc801
7f0a3b7
Compare
Choose a tag to compare
v1.0.0-rc801 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Bug Fixes

  • Bump the grpclib dependency to pull a fix for using IPv6 addresses.

What's Changed

  • Force grpclib to be at least 0.4.8rc2 by @llucax in #1012
  • Merge v1.0.0-rc7xx into v1.0.0-rc8xx by @shsms in #1048

Full Changelog: v1.0.0-rc800...v1.0.0-rc801

v1.0.0-rc800

22 Aug 08:54
v1.0.0-rc800
9b36f97
Compare
Choose a tag to compare
v1.0.0-rc800 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

This release makes some breaking changes to the SDK's public interface aimed at improving clarity and correctness. It also includes several bug fixes in core components like the resampler, the power distributor, and the moving window.

Upgrading

  • The frequenz.sdk.microgrid.*_pool methods have been renamed to new_*_pool, to make it explicit that they create new instances of the pool classes.

    • battery_pool -> new_battery_pool
    • ev_charger_pool -> new_ev_charger_pool
    • pv_pool -> new_pv_pool
  • The following component metric streams have been renamed to clarify that they stream per-phase values:

    • frequenz.sdk.microgrid.
      • voltage -> voltage_per_phase
      • grid.current -> grid.current_per_phase
      • ev_charger_pool.current -> ev_charger_pool.current_per_phase
  • Passing a request_timeout in calls to *_pool.propose_power is no longer supported. It may be specified at application startup, through the new optional api_power_request_timeout parameter in the microgrid.initialize() method.

  • Power distribution results are no longer available through the power_status streams in the *Pools. They can now be accessed as a stream from a separate property power_distribution_results, which is available from all the *Pools.

  • The ConfigManagingActor now uses collections.abc.Mapping as the output sender type. This change indicates that the broadcasted configuration is intended to be read-only.

  • The ConfigManagingActor has moved from frequenz.sdk.actor to frequenz.sdk.config.

  • The following core actors are no longer part of the public API:

    • PowerDistributingActor
    • ComponentMetricsResamplingActor
    • DataSourcingActor
  • The following two types which are used for communicating with the data sourcing and resampling actors are also no longer part of the public API:

    • ComponentMetricId
    • ComponentMetricRequest
  • The ChannelRegistry is no longer part of the public API.

  • The Result types for the power distribution results are now exposed through the frequenz.sdk.microgrid.battery_pool module.

New Features

  • Classes Bounds and SystemBounds now implement the __contains__ method, allowing the use of the in operator to check whether a value falls within the bounds or not.

Enhancements

  • The resampler now shows an error message where it is easier to identify the component and metric when it can't find relevant data for the current resampling window.

Bug Fixes

  • Fixed a typing issue that occurs in some cases when composing formulas with constants.
  • Fixed a bug where sending tasks in the data sourcing actor might not have been awaited.
  • Updated the logical meter documentation to reflect the latest changes.
  • Fixed a bug in the code examples in the getting-started tutorial.
  • Fixed a bug in ConfigManagingActor that was not properly comparing the event path to the config file path when the config file is a relative path.
  • Re-expose ComponentMetricId to the docs.
  • Fixed typing ambiguities when building composite formulas on streaming data.
  • Fixed a bug that was causing the PowerDistributor to exit if power requests to PV inverters or EV chargers timeout.
  • Fix the handling of canceled tasks in the data sourcing and resampling actor.
  • Fix a bug in PV power distribution by excluding inverters that haven't sent any data since startup.
  • Prevent stacking of power requests to avoid delays in processing when the power request frequency exceeds the processing time.
  • Fixes a bug in the ring buffer in case the updated value is missing and creates a gap in time.

What's Changed

Full Changelog: v1.0.0rc700...v1.0.0-rc800

v1.0.0-rc603

09 Aug 15:51
v1.0.0-rc603
956823f
Compare
Choose a tag to compare
v1.0.0-rc603 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Bug Fixes

  • Fixes a bug in the ring buffer in case the updated value is missing and creates a gap in time.

  • Fixed a bug that was causing the PowerDistributor to exit if power requests to PV inverters or EV chargers timeout.

What's Changed

  • Fix gap in ring buffer when updating missing values by @cwasicki in #1034
  • Fix exit-on-timeout issue in PowerDistributor by @shsms in #1035

Full Changelog: v1.0.0-rc602...v1.0.0-rc603

v1.0.0-rc602

31 Jul 21:18
v1.0.0-rc602
c9115e0
Compare
Choose a tag to compare
v1.0.0-rc602 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Bug Fixes

  • Fix PV power distribution excluding inverters that haven't sent any data since the application started.

What's Changed

Full Changelog: v1.0.0-rc601...v1.0.0-rc602

v1.0.0rc701

25 Jul 10:13
v1.0.0rc701
a385257
Compare
Choose a tag to compare
v1.0.0rc701 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Bug Fixes

  • Bump the grpclib dependency to pull a fix for using IPv6 addresses.

What's Changed

Full Changelog: v1.0.0rc700...v1.0.0rc701

v1.0.0rc700

21 Jun 12:02
v1.0.0rc700
7563587
Compare
Choose a tag to compare
v1.0.0rc700 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Upgrading

  • The frequenz-client-microgrid dependency was bumped to v0.4.0. If you are using the client directly in your code, you will need to upgrade too.

  • Calls to microgrid.*_pool methods now always need to specified a priority value, corresponding to the requirements/priority of the actor making the call.

  • The microgrid.*_pool methods would only accept keyword arguments from now on.

  • The microgrid.initialize() method now takes a server_url instead of a host and port.

    The following format is expected: grpc://hostname{:port}{?ssl=ssl}, where the port should be an int between 0 and 65535 (defaulting to 9090) and ssl should be a boolean (defaulting to false). For example: grpc://localhost or grpc://localhost:1090?ssl=true.

    The default was also removed, so you always need to specify the server URL.

    This applies to the ConnectionManager as well, which also now doesn't expose the host and port attributes, only the server_url. If you need to extract the host or port from the server_url, you can use the standard Python urllib.parse.urlparse() function.

  • The Config class was removed and the ConfigManagingActor now sends a plain dictionary rather than a Config object.

New Features

  • Calls to microgrid.*_pool methods now accept an optional set_operating_point parameter, for setting an operating point for the other actors. This would shift the target power by the operating point before actually applying it to the components.

Bug Fixes

  • When the PowerDistributor receives a zero power request for PV inverters, it now correctly sets zero power to the inverters, and no longer crashes.

What's Changed

  • Clear release notes by @llucax in #931
  • Always require a priority argument in calls to microgrid.*_pool methods by @shsms in #944
  • Set zero power for PV inverters not neccessary to reach target power by @shsms in #946
  • Update protobuf requirement from <5,>=4.21.6 to >=4.21.6,<6 by @dependabot in #936
  • Code quality improvements in the DataPipeline and *Pool classes by @shsms in #948
  • Bump types-protobuf from 4.24.0.20240129 to 5.26.0.20240422 by @dependabot in #937
  • Add support for Python 3.12 by @daniel-zullo-frequenz in #947
  • Miscelaneous improvements and fixes by @llucax in #953
  • Bump types-setuptools from 69.5.0.20240423 to 70.0.0.20240524 by @dependabot in #959
  • Improve code comment in power distribution to PV inverters by @shsms in #960
  • Support power requests from shifting actors in the PowerManager by @shsms in #957
  • Upgrade to microgrid client v0.4.0 by @llucax in #955
  • Bump the required group across 1 directory with 8 updates by @dependabot in #964
  • Update ConfigManagingActor to send a dictionary by @daniel-zullo-frequenz in #969
  • Don't sleep on PowerDistributor startup by @shsms in #971
  • Stop using a deprecated way to replace the event loop in tests by @llucax in #976
  • Rename parameter in_shifting_groupset_operating_point by @shsms in #970
  • Make some minor improvements for LastValueCache by @llucax in #974
  • Prepare release notes for v1.0.0rc700 by @llucax in #977

Full Changelog: v1.0.0-rc601...v1.0.0rc700

v1.0.0-rc601

02 May 12:58
v1.0.0-rc601
9c54f8d
Compare
Choose a tag to compare
v1.0.0-rc601 Pre-release
Pre-release

Frequenz Python SDK Release Notes

In this release we have changed the versioning scheme for pre-releases. rc601 means rc6.1, which we can't use due to limitations on the Python version specification. From now on rc versions will have 3 digits, so next rc will be rc700, and then rc800 etc, so we have some room to make patch releases in case it is necessary (which will be named rc701, rc702, etc.).

Bug Fixes

  • Fix getting reactive power from meters, inverters and EV chargers.

What's Changed

Read more

v1.0.0-rc6

12 Apr 14:25
v1.0.0-rc6
57337df
Compare
Choose a tag to compare
v1.0.0-rc6 Pre-release
Pre-release

Frequenz Python SDK Release Notes

Summary

The most notable features for this release is the addition of the PVPool (exposed via microgrid.pv_pool()), which can be used to manage PV arrays as a single entity and the EVChargerPool (microgrid.ev_charger_pool()) learning to manage power for the whole pool (before it could only be used to control chargers individually).

Another notable change is the microgrid API client being moved to its own repository.

Upgrading

  • The SDK is now using the microgrid API client from frequenz-client-microgrid. You should update your code if you are using the microgrid API client directly.

  • The minimum required frequenz-channels version is now v1.0.0-rc1.

  • The set of battery IDs managed by a battery pool are now available through BatteryPool.component_ids, and no longer through BatteryPool.battery_ids. This is done to have a consistent interface with other *Pools.

  • The maxsize parameter in calls to BatteryPool.{soc/capacity/temperature}.new_receiver() methods have now been renamed to limit, to be consistent with the channels repository.

  • Support for per-component interaction in EVChargerPool has been removed. Please use the new propose_power() method to manage power for the whole pool. If you still need to manage power of chargers individually, you can create one pool per charger.

  • PV power is now available from microgrid.pv_pool().power, and no longer from microgrid.logical_meter().pv_power.

New Features

  • EVChargerPool/microgrid.ev_charger_pool(): New propose_power and power_status methods have been added, similar to the BatteryPool. These method interface with the PowerManager and PowerDistributor, which currently uses a first-come-first-serve algorithm to distribute power to EVs.

  • A PV pool (PVPool/microgrid.pv_pool()) was added, with propose_power, power_status and power methods similar to Battery and EV pools.

  • The microgrid API client now exposes the reactive power for inverters, meters and EV chargers.

Enhancements

  • Warning messages are logged when multiple instances of *Pools are created for the same set of batteries, with the same priority values.

  • A warning message will now be logged if no relevant samples are found in a component for resampling.

Bug Fixes

  • A bug was fixed where the grid fuse was not created properly and would end up with a max_current with type float instead of Current.

  • BatteryPool.propose_discharge now converts power values to the passive-sign convention. Earlier it was not doing this and that was causing it to charge instead of discharge.

  • Fix a bug that was causing the power managing actor to crash and restart when cleaning up old proposals.

What's Changed

Read more