Releases: frequenz-floss/frequenz-sdk-python
v1.0.0-rc1301
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 to1.0.0rc3
before).
What's Changed
- Widen the quantities version requirement by @llucax in #1110
- Update to repo-config v0.11.0 by @llucax in #1111
- Bump types-setuptools from 74.0.0.20240831 to 75.5.0.20241122 by @dependabot in #1114
- Fix ConfigLoggingUpdater not changing root logging level by @ela-kotulska-frequenz in #1112
- Bump the required group with 3 updates by @dependabot in #1113
- Update release notes for release 1.0.0-rc1301 by @llucax in #1115
Full Changelog: v1.0.0-rc1300...v1.0.0-rc1301
v1.0.0-rc1300
Frequenz Python SDK Release Notes
Summary
Upgrading
New Features
- The
MicrogridApiClient
was updated to the latest version.
Bug Fixes
What's Changed
- Reset release notes by @ela-kotulska-frequenz in #1108
- Update microgrid client to latest version by @Marenz in #1109
Full Changelog: v1.0.0-rc1200...v1.0.0-rc1300
v1.0.0-rc1200
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
- Clear release notes by @llucax in #1100
- Check that load_config raises ValidationError if config is None by @ela-kotulska-frequenz in #1102
- Allow passing a
base_schema
toload_config()
by @llucax in #1103 - Restore support for marshmallow_dataclass by @ela-kotulska-frequenz in #1106
- Prepare release notes for next release by @ela-kotulska-frequenz in #1107
Full Changelog: v1.0.0-rc1100...v1.0.0-rc1200
v1.0.0-rc1100
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 fromconfig_file
toconfig_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 to1.0.0rc3
. -
The
ComponentMetricsRequest
now produces a channel name without thestart_date
if thestart_date
isNone
. 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 usingmarshmallow_dataclass
es with correct type hints. - Implement and standardize logging configuration with the following changes:
- Add
LoggerConfig
andLoggingConfig
to standardize logging configuration. - Create
LoggingConfigUpdater
to handle runtime config updates. - Support individual log level settings for each module.
- Add
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
- Clear release notes by @shsms in #1090
- config: Allow reading from multiple files by @llucax in #1091
- Store the original
Component
andConnection
in the component graph by @llucax in #1093 - Bump the required group across 1 directory with 12 updates by @dependabot in #1094
- Implement and standardize logging configuration via config file by @ela-kotulska-frequenz in #1095
- Bump dependency to 1.0.0rc3 by @ela-kotulska-frequenz in #1096
- Add a function to load configurations with correct type hints by @llucax in #1097
- Improve
ComponentMetricsRequest
documentation by @llucax in #1092 - Update bound-streaming channels to resend latest to new receivers by @shsms in #1098
- Prepare release notes for rc1100 by @llucax in #1099
Full Changelog: v1.0.0-rc1000...v1.0.0-rc1100
v1.0.0-rc1000
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 thefrequenz.sdk.timeseries
module with the externalfrequenz-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 thefrequenz.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 isTrue
.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
- Prepare release notes for rc901 by @llucax in #1076
- Clear release notes by @llucax in #1077
- Add polling parameters to ConfigManagingActor by @daniel-zullo-frequenz in #1082
- Remove redundant check in BatteryPool tests by @ela-kotulska-frequenz in #1085
- Improve resiliency of long-running async tasks by @shsms in #1081
- Clean some duplicated and unused code by @llucax in #1088
- Use frequenz-quantities library by @ela-kotulska-frequenz in #1087
- Implement GridReactivePowerFormula by @ela-kotulska-frequenz in #1086
- Prepare for v1.0.0-rc1000 by @shsms in #1089
Full Changelog: v1.0.0-rc901...v1.0.0-rc1000
v1.0.0-rc901
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
- Clear release notes by @llucax in #1069
- Create FileWatcher when ConfigManagingActor runs by @daniel-zullo-frequenz in #1074
Full Changelog: v1.0.0-rc900...v1.0.0-rc901
v1.0.0-rc900
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 to0.5.0
. This can cause dependency issues if you are using other API clients and thefrequenz-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
inmicrogrid.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
- Force
grpclib
to be at least 0.4.8rc2 by @llucax in #1012 - Clear release notes by @shsms in #1047
- Merge v1.0.0-rc7xx into v1.x.x by @shsms in #1049
- Allow setting
api_power_request_timeout
inmicrogrid.initialize()
by @shsms in #1050 - Distinguish between grid meters and other meters by @shsms in #1052
- Fallback components in generated formulas by @ela-kotulska-frequenz in #1037
- Bump frequenz-repo-config to 0.10.0 by @llucax in #1059
- Make dependabot do minor updates for the microgrid client separately by @llucax in #1060
- Revert "Change receiver limit in mock_resampler" by @ela-kotulska-frequenz in #1061
- Bump the
frequenz-client-microgrid
dependency to0.5.0
by @llucax in #1057 - Remove the redundant
--platform=${TARGETPLATFORM}
inDockerfile
by @llucax in #1062 - Bump the required group across 1 directory with 14 updates by @dependabot in #1064
- Bump the required group with 3 updates by @dependabot in #1065
- Unpin mkdocs-autorefs and fix multple URLs for warnings by @llucax in #1051
- Bump
frequenz-client-microgrid
to 0.5.1 by @llucax in #1068 - Bump types-setuptools from 71.1.0.20240726 to 74.0.0.20240831 by @dependabot in #1066
Full Changelog: v1.0.0-rc800...v1.0.0-rc900
v1.0.0-rc801
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
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 tonew_*_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 optionalapi_power_request_timeout
parameter in themicrogrid.initialize()
method. -
Power distribution results are no longer available through the
power_status
streams in the*Pool
s. They can now be accessed as a stream from a separate propertypower_distribution_results
, which is available from all the*Pool
s. -
The
ConfigManagingActor
now usescollections.abc.Mapping
as the output sender type. This change indicates that the broadcasted configuration is intended to be read-only. -
The
ConfigManagingActor
has moved fromfrequenz.sdk.actor
tofrequenz.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 thefrequenz.sdk.microgrid.battery_pool
module.
New Features
- Classes
Bounds
andSystemBounds
now implement the__contains__
method, allowing the use of thein
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
- Clear release notes by @llucax in #978
- Update glossary by @cwasicki in #952
- Rename
microgrid.*_pool
constructors tonew_*_pool
by @shsms in #979 - Fix typing for composing constants with formula builders by @shsms in #980
- Filter out irrelevant logs when checking for expected logs by @llucax in #983
- Properly keep references and await for concurrent tasks by @llucax in #984
- Add contains function to Bounds and SystemBounds by @0o111 in #962
- Cleanup
*Report
classes as simple protocols with only methods by @shsms in #981 - Improve naming for per-phase component metric streams by @shsms in #987
- Fix battery manager string representation by @llucax in #989
- Update logical meter documentation by @matthias-wende-frequenz in #986
- Remove dependency to polars by @llucax in #991
- Bump brettcannon/check-for-changed-files from 1.2.0 to 1.2.1 by @dependabot in #994
- Bump docker/build-push-action from 5 to 6 by @dependabot in #993
- Bump the required group with 9 updates by @dependabot in #995
- Remove
request_timeout
parameter frompropose_power
methods by @shsms in #1000 - Remove power distribution results from
Report
objects by @shsms in #998 - Remove extra comma from tutorial docs by @shsms in #1004
- Switch to the
LatestValueCache
from the channels package by @shsms in #1002 - Fix ConfigManagingActor to handle relative paths by @daniel-zullo-frequenz in #1005
- Fix microgrid API URL in example by @llucax in #1006
- Use a more descriptive channel name for the resampler by @llucax in #1007
- Update sender type in ConfigManagingActor by @daniel-zullo-frequenz in #1010
- Expose
ComponentMetricId
in the public API by @llucax in #990 - Fix FormulaEngine typing by @shsms in #1011
- Use solipsism, time-machine in
*Pool
tests by @shsms in #1013 - Fix PV power distribution by @daniel-zullo-frequenz in #1015
- Bump types-setuptools from 70.1.0.20240627 to 71.1.0.20240726 by @dependabot in #1019
- Fixes to the PowerDistributingActor by @shsms in #1020
- Make actor example loop forever by @llucax in #1029
- Handle
CancelledError
s properly by @llucax in #1027 - Fix PV inverters power distribution by @daniel-zullo-frequenz in #1028
- Prevent stacking of power requests by @daniel-zullo-frequenz in #1023
- Fix gap in ring buffer when updating missing values by @cwasicki in #1034
- Fix exit-on-timeout issue in PowerDistributor by @shsms in #1035
- Fix typo and improve formatting by @llucax in #1033
- Cleanup the
actor
package by @shsms in #1031 - Fix grammar in release notes by @shsms in #1040
- Fix glossary links and restrict
mkdocs-autorefs
updates by @llucax in #1043 - Merge v1.0.0-rc6xx into v1.x.x by @llucax in #1042
- Prepare release notes for v1.0.0-rc800 by @shsms in #1046
Full Changelog: v1.0.0rc700...v1.0.0-rc800
v1.0.0-rc603
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