Releases: frequenz-floss/frequenz-sdk-python
v0.16.0
Release Notes
Summary
The Frequenz SDK now supports Python 3.11.
New Features
-
Upgrade PowerDistributingActor to track if batteries are working
#117 -
Simplify
Resampler
by moving configuration to its own classResamplerConfig
#131 -
Add
initial_buffer_len
to the ResamplerConfig. This means thatResampler
will store at least this number of arguments. OtherResampler
behaviour won't change
#131 -
Ability to compose formula outputs into higher-order formulas:
#133 -
Add a formula generator for SoC in the LogicalMeter
#137
Bug Fixes
-
Formulas with repeated operators like
#1 - #2 - #3
were getting
calculated incorrectly as#1 - (#2 - #3)
. This has been fixed in
#141 -
Remove
microgrid_api
andcomponent_graph
arguments from PowerDistributingActor constructor
#156
What's Changed
- Clear release notes by @ela-kotulska-frequenz in #129
- Improve resampler buffer and config by @leandro-lucarella-frequenz in #131
- README: Fix build status badge by @leandro-lucarella-frequenz in #134
- Add a formula generator for SoC in the LogicalMeter by @shsms in #137
- Track status of the batteries by @ela-kotulska-frequenz in #117
- Fix formula precedence bug in the
FormulaEngine
by @shsms in #141 - Add
FormulaChannel
s for composing formula outputs by @shsms in #133 - Update release notes by @ela-kotulska-frequenz in #146
- Add a delay for the mock server to start, before creating a client by @shsms in #150
- Wait for a short time after starting the test actors by @shsms in #153
- Send 0 values from power formulas for non-existant component types by @shsms in #151
- Update power distributor to use frequenz.sdk.microgrid by @ela-kotulska-frequenz in #156
- Support python 3.11 by @shsms in #157
Full Changelog: v0.15.0...v0.16.0
v0.15.0
Release Notes
Summary
Upgrading
- Add fine-grained Result types for the PowerDistributingActor. Previously Result was one class with many fields. Now each type of the result has its own class that derives from Result parent class.
New Features
- Add inverter type to the Component data. Inverter type tells what kind of inverter it is (Battery, Solar etc).
- Add
FormulaGenerator
class for generating formulas from the component graph. - Add formulas for:
grid_power
,battery_power
,PV power
.
Bug Fixes
- Fix ComponentMetricResamplingActor, to not subscribe twice to the same source.
What's Changed
- Clear release notes by @leandro-lucarella-frequenz in #111
- Add missing dependencies in documentation by @mathias-baumann-frequenz in #114
- Add fine-grained
Result
types for thePowerDistributingActor
by @ela-kotulska-frequenz in #104 - Generate formulas automatically from the component graph by @shsms in #103
- resampling: Don't subscribe twice to the same source by @leandro-lucarella-frequenz in #123
- Fix warnings in unit tests by @ela-kotulska-frequenz in #125
- Update release notes by @ela-kotulska-frequenz in #127
New Contributors
- @mathias-baumann-frequenz made their first contribution in #114
Full Changelog: v0.14.0...v0.15.0
v0.14.0
Release Notes
Summary
This release improves the performance of the ComponentMetricsResamplingActor
, and fixes a bug in the LogicalMeter
that was causing it to crash.
Upgrading
frequenz.sdk.timseries
:- The resample classes (
GroupResampler
,Resampler
,ResamplingFunction
) where removed and the replacement classes are hidden for now, as they are going through a rewrite.
- The resample classes (
Bug Fixes
- The Resampling actor sends None values out when there is no data from a component. The logical meter used to raise an exception if it saw a
None
value from any of its streams. The logical meter is now able to handleNone
values by propagating theNone
values, or treating them as0
s.
What's Changed
- Support handling
None
values in LogicalMeter/FormulaEngine by @shsms in #95 - Clear release notes by @leandro-lucarella-frequenz in #98
- Fix the disable_actor_auto_restart fixture by @leandro-lucarella-frequenz in #97
- Split the formula execution logic from the formula building logic by @shsms in #96
- Prevent LogicalMeter from crashing on formula application failure by @shsms in #105
- Handle
asyncio.CancelledError
separately in theLogicalMeter
by @shsms in #106 - Rewrite the resampler class to be more reusable by @leandro-lucarella-frequenz in #101
- Update release notes for v0.14.0 by @leandro-lucarella-frequenz in #109
Full Changelog: v0.13.0...v0.14.0
v0.13.0
Release Notes
Summary
This release mainly introduces the LogicalMeter
. There should be no breaking
changes.
New Features
-
A logical meter implementation that can apply formulas on resampled component
data streams. -
The
ComponentGraph
now supports dangling inverters, i.e. inverters
without a successor. This is mainly to support PVs inverters. In the future
dangling inverters will be forbidden again but only for batteries.
Bug Fixes
- The component graph expected inverters to always have successors, and so
wasn't able to support PV inverters, which don't have component successors.
This is resolved by temporarily removing the requirement for inverters to have
successors. This will be partially reverted later by expecting just battery
inverters to have graph successors.
What's Changed
- Clean RELEASE_NOTES by @leandro-lucarella-frequenz in #79
- Add a logical meter implementation by @shsms in #66
- Improve examples by @leandro-lucarella-frequenz in #85
- ci: Label changes in examples with part:docs by @leandro-lucarella-frequenz in #87
- Remove requirement for inverters to have successors by @shsms in #88
- PowerDistributor should not block user command. by @ela-kotulska-frequenz in #92
- Update release notes for v0.13.0 by @leandro-lucarella-frequenz in #93
New Contributors
- @ela-kotulska-frequenz made their first contribution in #92
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Release Notes
Summary
The project has a new home!
https://frequenz-floss.github.io/frequenz-sdk-python/
For now the documentation is pretty scarce but we will be improving it with time.
The most prominent changes in this release is the cleanup of the public API, which is much more concise and clear now and the addition of classes implementing the new data flow design, in particular the DataSourcingActor
and the ComponentMetricsResamplingActor
.
Upgrading
-
EVChargerData
'sactive_power_consumption
has been renamed toactive_power
-
PowerDistributor
- type ofRequest
'srequest_timeout_sec
has been changed fromint
tofloat
-
ComponentCategory.LOAD
has been added -
The
frequenz-channels
was upgraded to v0.11.0 which includes a bunch of breaking changes you should be aware of. -
The public API has been cleaned up, several symbols were moved or exposed in a single module, and some symbols were hidden because they are either schedule for deprecation or not yet stabilized.
-
frequenz.sdk.actor
: Thedecorator
sub-module was hidden and now the@actor
decorator is exposed directly only in the main module. -
frequenz.sdk.configs
: was renamed tofrequenz.sdk.config
,Config
is only exposed in the main module and theConfigManager
was moved tofrequenz.sdk.actor.ConfigManagingActor
. -
The modules
frequenz.sdk.data_handling
andfrequenz.sdk.data_ingestion
were hidden from the public interface and will probably be removed in the future. They are still available asfrequenz.sdk._data_handling
andfrequenz.sdk._data_ingestion
for users still needing them. -
The module
frequenz.sdk.power_distribution
was renamed tofrequenz.sdk.power
and thePowerDistributor
was moved to
frequenz.sdk.actor.power_distributing.PowerDistributingActor
(with the utility classesRequest
andResult
). -
The module
frequenz.sdk.microgrid
was simplified.-
All component-related symbols (
.component
,.component_data
,.component_states
) were moved to the sub-module
frequenz.sdk.microgrid.component
. -
All API client-related symbols (
.client
,.connection
,.retry
) were moved to the sub-modulefrequenz.sdk.microgrid.client
. -
The
ComponentGraph
is exposed directly in the main module (and only there). -
The
microgrid_api
module is now exposed via the main module directly (and thus indirectly renamed tomicrogrid
, so instead of usingfrom frequenz.sdk.microgrid import microgrid_api; microgrid_api.initialize()
(for example) you should usefrom frequenz.sdk.microgrid import microgridi; microgrid.initialize()
. -
The
MicrogridApi
class was renamed toMicrogrid
to make it clear it is not exclusively about the API. -
The
Microgrid.microgrid_api_client
attribute was renamed toMicrogrid.api_client
to avoid the redundancy.
-
-
New Features
-
MeterData
objects now expose the ACfrequency
measured by the meter. -
BatteryData
objects now expose the temperature of the hottest block in the battery astemperature_max
-
A new
frequenz.sdk.actor.DataSourcingActor
was added. -
A new
frequenz.sdk.actor.ComponentMetricsResamplingActor
was added. -
A new
frequenz.sdk.actor.ChannelRegistry
was added. -
A new module
frequenz.sdk.timeseries
was added.
What's Changed
- Clear RELEASE_NOTES.md by @leandro-lucarella-frequenz in #23
- Change the type of Request's request_timeout_sec to float by @jkozlowicz in #13
- Rename active_power_consumption to active_power in context of EVCharger by @jkozlowicz in #17
- Add LOAD component category by @jkozlowicz in #26
- Implement ChannelRegistry by @sahas-subramanian-frequenz in #25
- Change component data wrappers to be data classes by @jkozlowicz in #4
- Remove timeout for receiving from client handle to prevent flakiness by @jkozlowicz in #18
- ChannelRegistry improvements by @shsms in #29
- Fix EVChargerData's from_proto method by @sahas-subramanian-frequenz in #35
- Add new labels to the CI and issue templates by @leandro-lucarella-frequenz in #46
- Add timeout to all gRPC calls and set a default timeout by @jkozlowicz in #50
- Add DataSourcingActor by @shsms in #52
- Update noxfile.py to run darglint in verbose-mode by @sahas-subramanian-frequenz in #51
- Add a resampling actor by @jkozlowicz in #32
- Indent multi-line return value descriptions in docstrings by @shsms in #54
- Clean ups and improvements to the resampler (mostly) by @leandro-lucarella-frequenz in #68
- Generate and publish API docs by @leandro-lucarella-frequenz in #72
- Update the SDK codebase to work with the latest channel version by @shsms in #76
- Expose additional fields from
ComponentData
streams by @shsms in #75 - Upgrade dependency to frequenz-channels v0.11.0 by @leandro-lucarella-frequenz in #77
- Cleanup public interface by @leandro-lucarella-frequenz in #78
New Contributors
- @jkozlowicz made their first contribution in #13
- @sahas-subramanian-frequenz made their first contribution in #25
- @shsms made their first contribution in #29
Full Changelog: v0.11.0...v0.12.0
v0.11.0
frequenz-sdk
Release Notes
Summary
This is the first public open source release based on the internal SDK version v0.10.0. There are no breaking changes in this release, only changes to the project structure, metadata, and automation. Packages are also now uploaded to PyPI as frequenz-sdk
, so this project now can be installed normally via pip
:
python -m pip install frequenz-sdk
The GitHub issues were also improved, adding templates for reporting issues and requesting features. Users are also pointed to the Discussion forums when trying to open an issue if they have questions instead. Also many labels are assigned automatically on issue and pull request creation.
Upgrading
Even if there are no breaking changes, you might see this error in your local
environment when upgrading:
ERROR: Project file:///home/luca/devel/frequenz-sdk-python has
a 'pyproject.toml' and its build backend is missing the 'build_editable'
hook. Since it does not have a 'setup.py' nor a 'setup.cfg', it cannot be
installed in editable mode. Consider using a build backend that supports PEP
660.
If so, you should probably update the dependencies in you virtual environment
(for example python -m pip install -U -e .
)
What's Changed
- Add KeywordLabeler app configuration by @leandro-lucarella-frequenz in #11
- Add GitHub issue templates by @leandro-lucarella-frequenz in #10
- Add CODEOWNERS file by @leandro-lucarella-frequenz in #9
- ci: Add automatic pull request labeler by @leandro-lucarella-frequenz in #12
- Upload Packages to PyPI by @leandro-lucarella-frequenz in #16
New Contributors
- @leandro-lucarella-frequenz made their first contribution in #11
Full Changelog: https://github.com/frequenz-floss/frequenz-sdk-python/commits/v0.11.0
v0.11.0-rc1
frequenz-sdk
Release Notes
Summary
This is the first public open source release based on the internal SDK version v0.10.0. There are no breaking changes in this release, only changes to the project structure, metadata, and automation. Packages are also now uploaded to PyPI as frequenz-sdk
, so this project now can be installed normally via pip
:
python -m pip install frequenz-sdk
The GitHub issues were also improved, adding templates for reporting issues and requesting features. Users are also pointed to the Discussion forums when trying to open an issue if they have questions instead. Also many labels are assigned automatically on issue and pull request creation.
Upgrading
Even if there are no breaking changes, you might see this error in your local
environment when upgrading:
ERROR: Project file:///home/luca/devel/frequenz-sdk-python has
a 'pyproject.toml' and its build backend is missing the 'build_editable'
hook. Since it does not have a 'setup.py' nor a 'setup.cfg', it cannot be
installed in editable mode. Consider using a build backend that supports PEP
660.
If so, you should probably update the dependencies in you virtual environment
(for example python -m pip install -U -e .
)
What's Changed
- Add KeywordLabeler app configuration by @leandro-lucarella-frequenz in #11
- Add GitHub issue templates by @leandro-lucarella-frequenz in #10
- Add CODEOWNERS file by @leandro-lucarella-frequenz in #9
- ci: Add automatic pull request labeler by @leandro-lucarella-frequenz in #12
- Upload Packages to PyPI by @leandro-lucarella-frequenz in #16
New Contributors
- @leandro-lucarella-frequenz made their first contribution in #11
Full Changelog: https://github.com/frequenz-floss/frequenz-sdk-python/commits/v0.11.0-rc1