Releases: frequenz-floss/frequenz-sdk-python
v1.0.0-rc1500
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
LoggingConfigUpdatingActorto follow the actor naming convention. - The actor must now be constructed using a
ConfigManagerinstead of a receiver. - Make all arguments to the constructor keyword-only, except for the
config_managerargument. - If the configuration is removed, the actor will now load back the default configuration.
- Renamed to
-
LoggingConfig- The
load()method was removed. Please usefrequenz.sdk.config.load_config()instead. - The class is now a standard
dataclassinstead of amarshmallow_dataclass. - The class is now immutable.
- The constructor now accepts only keyword arguments.
- The
-
LoggerConfig- The class is now a standard
dataclassinstead of amarshmallow_dataclass. - The class is now immutable.
- The constructor now accepts only keyword arguments.
- The class is now a standard
-
load_config():- The
base_schemaargument is now keyword-only and defaults toBaseConfigSchema(and because of this, it usesunknown=EXCLUDEby default). - The arguments forwarded to
marshmallow.Schema.load()now must be passed explicitly via themarshmallow_load_kwargsargument, as adict, to improve the type-checking. - Will now raise a
ValueErrorifunknownis set toINCLUDEinmarshmallow_load_kwargs.
- The
-
ConfigManagingActor: Raise aValueErrorif theconfig_filesargument an empty sequence.
-
New Features
-
frequenz.sdk.config-
Logging was improved in general.
-
Added documentation and user guide.
-
LoggingConfigUpdatingActor- Added a new
nameargument to the constructor to be able to override the actor's name.
- Added a new
-
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 amarshmallowbaseSchemathat includes custom fields forfrequenz-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
BackgroundServicewhere it won't try toself.cancel()andawait self.wait()if there are no internal tasks. This prevented to properly implement custom stop logic without having to redefine thestop()method too. -
Fix a bug where if a string was passed to the
ConfigManagingActorit 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
- Bump the required group with 4 updates by @dependabot in #1123
- Clear release notes by @llucax in #1122
- Reorganize the
configmodule by @llucax in #1126 - Improve the logging config actor by @llucax in #1127
- Make
LoggerConfigandLoggingConfigfrozen and keyword-only by @llucax in #1128 - Add load_shedding example by @Marenz in #1131
- Improve logging and API of the
configmodule by @llucax in #1133 - Fix cross-arch CI tests by @llucax in #1141
- Bump types-markdown from 3.7.0.20240822 to 3.7.0.20241204 by @dependabot in #1138
- Bump types-setuptools from 75.6.0.20241126 to 75.6.0.20241223 by @dependabot in #1139
- Don't allow checking if
Noneis within the bounds by @llucax in #1140 - Revamp config management by @llucax in #1134
- Bump the required group across 1 directory with 8 updates by @dependabot in #1143
- Move default
unknown=EXCLUDEtoBaseConfigSchemaby @llucax in #1149 - Remove "Checking battery" log message by @shsms in #1151
- Disable warn on overflow in config channel receivers by @llucax in #1152
- Close all *pool's receivers when stopping the pool by @shsms in #1150
Full Changelog: v1.0.0-rc1400...v1.0.0-rc1500
v1.0.0-rc1400
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
ConfigManagingActornow only reacts toCREATEandMODIFYevents.DELETEis not supported anymore and are ignored. - Remove the
event_typesargument from theConfigManagingActorconstructor.
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
- Fix
ConfigManagingActorraising unhandled exceptions when file doesn't exist by @ela-kotulska-frequenz in #1116 - Prepare release notes for v1.0.0-rc1400 by @llucax in #1121
Full Changelog: v1.0.0-rc1302...v1.0.0-rc1400
v1.0.0-rc1302
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
Sampleclass 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
Frequenz Python SDK Release Notes
Bug Fixes
- Fix bug with
LoggingConfigUpdaternot updating root logger level. - The
frequenz-quantitiesdependency requirement was widened to allow any v1.x version (it was pinned to1.0.0rc3before).
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
MicrogridApiClientwas 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_schematoload_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
ConfigManagingActornow takes multiple configuration files as input, and the argument was renamed fromconfig_filetoconfig_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
MovingWindownow take all arguments as keyword-only to avoid mistakes. -
The
frequenz-quantitiesdependency was bumped to1.0.0rc3. -
The
ComponentMetricsRequestnow produces a channel name without thestart_dateif thestart_dateisNone. If you are somehow relying on the old behavior, please update your code.
New Features
- The
ConfigManagingActorcan 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_dataclasses with correct type hints. - Implement and standardize logging configuration with the following changes:
- Add
LoggerConfigandLoggingConfigto standardize logging configuration. - Create
LoggingConfigUpdaterto 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
ComponentandConnectionin 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
ComponentMetricsRequestdocumentation 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
Quantityand its sub-classes (Power,Current, etc.) in thefrequenz.sdk.timeseriesmodule with the externalfrequenz-quantitiespackage. Please add the new library as a dependency and adapt your imports if you are using these types. - The
QuantityThas been moved to thefrequenz.sdk.timeseries._base_typesmodule. - The
QuantityTdoesn'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_powerto 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-microgriddependency was bumped to0.5.0. This can cause dependency issues if you are using other API clients and thefrequenz-client-basedependencies 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_timeoutinmicrogrid.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
grpclibto 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_timeoutinmicrogrid.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-microgriddependency to0.5.0by @llucax in #1057 - Remove the redundant
--platform=${TARGETPLATFORM}inDockerfileby @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-microgridto 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