Frequenz-sdk

Latest version: v0.25.2

Safety actively analyzes 641872 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

1.0.0rc700

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


**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v1.0.0-rc601...v1.0.0rc700

1.0.0rc601

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](https://peps.python.org/pep-0440/#public-version-identifiers). 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
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/617
* Initialize a `Grid` object with a given `Fuse` limit by tiyash-basu-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/610
* Upgrade to repo-config v0.6.1 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/620
* Bump polars from 0.18.15 to 0.19.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/626
* Bump the optional group with 4 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/634
* Bump types-setuptools from 68.1.0.0 to 68.1.0.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/635
* Don't return `None` from battery pool methods by stefan-brus-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/612
* Clarify documentation of BatteryPool soc and capacity methods by stefan-brus-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/637
* Document class and module attributes by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/618
* Add microgrid.frequency() by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/579
* Treat NaN as gap in ring buffer by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/641
* Replace obsolete types by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/644
* Move "fake_time" fixture to conftest.py by stefan-brus-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/639
* Improve formula formatting to use infix notation by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/613
* Merge v0.25.1 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/652
* Add a glossary to the documentation by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/647
* Add capacity, oldest and newest timestamp to moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/598
* [ci] Add tests for non-native architectures by tiyash-basu-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/622
* Bump actions/checkout from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/655
* ci: Fix publishing of documentation on push by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/657
* Add a job to join the `nox` matrix jobs by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/661
* Add more formula tests for min and max functions by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/623
* Fixes on copy behavior in ring buffer window method by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/638
* Drop formula step Averager by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/645
* Refactor power distribution Result by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/659
* Adjust the glossary to 80 columns by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/666
* Replace len magic with count_valid method in ring buffer and moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/664
* Prepare release notes for the 1.0.0-rc1 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/674
* Clear the release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/675
* Bump the optional group with 9 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/683
* Bump docker/setup-buildx-action from 2 to 3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/680
* Bump docker/setup-qemu-action from 2 to 3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/681
* Bump docker/build-push-action from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/682
* Add mkdocs-macros plugin by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/667
* docs: Add an introduction to actors by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/679
* mkdocs: Fix numbered code annotations by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/684
* Add getting started tutorial and tutorial section by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/656
* Remove setitem magic from ring buffer by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/670
* Allow using macros in docstrings by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/687
* Rename datetime_to_index to to_internal_index by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/686
* Fix mermaid diagrams custom renderer by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/690
* Update obsolete comment about networkx-stubs by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/685
* Move Actors documentation to the `actor` module by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/688
* Don't use generics unnecessarily by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/698
* Improve Actors documentation by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/689
* Increment port in microgrid API client tests by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/699
* Support int indices and slice index behavior in ring buffer and moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/668
* Fix single element access for moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/672
* Rename `Introduction` to `User Guide` and move `Tutorials` next to it by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/701
* Bump types-pytz from 2023.3.1.0 to 2023.3.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/695
* Bump types-protobuf from 4.24.0.1 to 4.24.0.2 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/696
* Bump types-pyyaml from 6.0.12.11 to 6.0.12.12 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/694
* PowerDistributing: Add support for n:m relations in invs:bats by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/660
* Fix bug in how failed batteries are tracked in PowerDistributor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/705
* Update pydantic to v2.3 by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/703
* Add option to impute missing values in window method for moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/669
* Bump pydoclint from 0.3.2 to 0.3.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/710
* Implement the PowerManagingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/692
* Prepare release notes for v1.0.0-rc2 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/723
* Remove support for `include_broken_batteries` in control commands by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/713
* Improve code reusability/modularity in PowerDistributor by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/717
* Document microgrid concepts from an SDK perspective by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/722
* Documentation for the FormulaEngine by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/731
* Bump types-protobuf from 4.24.0.2 to 4.24.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/734
* Expose `ComponentGraph` from its own module by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/738
* Document methods for creating data pipeline interface objects by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/739
* Add a restart delay to actors to avoid spam-restarting of buggy actors by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/741
* Rename datetime to timestamp variables by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/742
* Redesign access to migrogrid.grid() by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/707
* Set `resent_latest=True` for `BatteryPool.power_status`'s channels by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/743
* Clean warnings in tests by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/744
* Add consumtion and production operations to Formula Engine by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/746
* Use exclusion bounds while calculating target powers in PowerManager by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/755
* Remove the consumption and production power formulas by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/697
* Change internal presense of the Grid, eliminating `_grid` by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/747
* Update DataSourcingActor to accept current requests for inverters by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/759
* Remove unused paranthesis in formula generators by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/761
* Fix bug in inverter current data extractor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/762
* Rename nitrogen to Microgrid service by andrew-stevenson-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/760
* Add try/finally to decorated context managers yield statement by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/757
* Fix power failure report by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/763
* Update to repo-config v0.7.4 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/752
* Make the SDK's representation of bounds data internal by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/756
* Bump mike from 1.1.2 to 2.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/766
* Use a custom logger in the data sourcing actor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/769
* Fetch and expose microgrid ID and location by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/708
* Prepare release notes for the v1.0.0-rc3 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/775
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/777
* Make `PowerManagingActor` more modular and generic by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/773
* Fix type hint errors in microgrid client by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/778
* Use custom loggers for each module by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/780
* Bump types-protobuf from 4.24.0.3 to 4.24.0.4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/749
* Modularize status tracking for pools of components in the power distributing actor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/779
* Generalize PowerDistributingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/786
* Move Fuse to timeseries module by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/781
* Move grid power and current metrics to Grid by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/758
* Bump frequenz-channels from 0.16 to 1.0.0b2 by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/764
* Rename `ComponentGraph.components()` parameters to be plural by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/791
* Update some tests to use time machine by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/798
* Un-Peekable-ification of the PowerDistributingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/800
* Pass through 0W requests to the microgrid API independent of exclusion bounds by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/801
* Update `frequency()` to no longer have parameters by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/788
* Fix frequency sending `Quantity` by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/804
* Fix the resampler handling of output zeros by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/811
* Fetch and stream 3-phase voltage by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/815
* Speedup tests by lowering the actors restart delay by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/828
* Bump actions/setup-python from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/834
* Add missing type hints to instance members by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/809
* Fix bug in `GridFrequency` quantity conversion by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/807
* Improve (and fix some) test finalization by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/838
* Make the registry type-aware by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/830
* Improve BatteryPool's SoC accuracy at the edges by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/843
* Some component status cleanup by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/839
* Drop old propsals from the PowerManager by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/845
* Improvements to EVChargerData coming from the microgrid API by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/848
* Use a sentinel in `LatestValueCache` to denote if the cache is empty by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/846
* Move consumer and producer formulas out from logical meter by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/799
* Parse Quantity Strings by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/824
* Bump frequenz-api-microgrid to 0.15.3 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/855
* Bump the optional group with 14 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/837
* Bump types-protobuf from 4.24.0.4 to 4.24.0.20240129 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/867
* Bump flake8 from 6.1.0 to 7.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/860
* Bump setuptools related dependencies by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/863
* Bump actions/cache from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/858
* Bump pylint from 2.17.5 to 3.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/866
* Bump black from 23.12.1 to 24.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/865
* Remove unused type stubs by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/869
* Add release notes summary for the release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/870
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/871
* Fetch and stream 3-phase power by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/847
* Remove remaining traces of darglint by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/873
* Make sure `base_value` is always `float` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/874
* Remove the last reference to darglint by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/877
* Mock resampler: Improve variable names by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/879
* Allow multiplying `Quantity` by `float` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/875
* Remove unnecessary send adapter by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/878
* Bump actions/{up,down}load-artifact from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/833
* Allow all quantities division by `float | Self` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/876
* Cleanup and modularization of Power Manager, Power Distributor and DataPipeline by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/881
* More updates for n:m support - battery pool's power formula by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/730
* Prepare release notes for 1.0.0-rc5 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/884
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/886
* Bump types-markdown from 3.5.0.3 to 3.5.0.20240129 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/889
* Bump actions/labeler from 4.3.0 to 5.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/836
* Replace the internal microgrid API client with `frequenz-client-microgrid` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/892
* Upgrade channel version to `1.0.0-rc1` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/893
* Improve consistency between `*Pool`s by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/894
* Remove support for per-component interaction in EVChargerPool by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/895
* Add a `ComponentCategory` parameter to the `PowerDistributingActor` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/896
* Bug fixes in the PowerManager and the BatteryPool by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/898
* Widen the channels dependency to allow for the final 1.0.0 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/909
* Amend actor documentation by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/883
* Control methods for `EVChargerPool` using `PowerManager` and `PowerDistributor` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/900
* Warn if duplicate `*pool` instances are being created by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/904
* Some EV charger pool cleanup and fixes by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/919
* Add a `PVPool` implementation by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/914
* Bump the optional group with 17 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/911
* Prepare release notes for the v1.0.0-rc6 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/924
* Log when no relevant samples are found for resampling by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/923
* Update microgrid client to v0.3 by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/925
* Fix reactive power retrieval by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/927
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/926
* Ignore pylint check to be able to release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/930
* dependabot: Ignore time-machine >=2.13.0 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/939
* dependabot: Ignore frequenz-api-microgrid >=0.16.0 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/941
* Fix references to EV charger in PV inverter modules and tests by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/932
* Bump the required group across 1 directory with 11 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/942
* Update release notes for rc6.post1 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/943
* Bump nox from 2023.4.22 to 2024.4.15 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/935
* Don't recursively scan for pyproject.toml when calculating the cache key by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/945

New Contributors
* stefan-brus-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/612
* andrew-stevenson-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/760

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.25.2...v1.0.0-rc601

1.0.0rc6

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](https://github.com/frequenz-floss/frequenz-client-microgrid-python/).

Upgrading

- The SDK is now using the microgrid API client from [`frequenz-client-microgrid`](https://github.com/frequenz-floss/frequenz-client-microgrid-python/). 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`](https://github.com/frequenz-floss/frequenz-channels-python/releases/tag/v1.0.0-rc.1).

- 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 `*Pool`s.

- 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 `*Pool`s 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
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/617
* Initialize a `Grid` object with a given `Fuse` limit by tiyash-basu-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/610
* Upgrade to repo-config v0.6.1 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/620
* Bump polars from 0.18.15 to 0.19.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/626
* Bump the optional group with 4 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/634
* Bump types-setuptools from 68.1.0.0 to 68.1.0.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/635
* Don't return `None` from battery pool methods by stefan-brus-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/612
* Clarify documentation of BatteryPool soc and capacity methods by stefan-brus-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/637
* Document class and module attributes by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/618
* Add microgrid.frequency() by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/579
* Treat NaN as gap in ring buffer by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/641
* Replace obsolete types by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/644
* Move "fake_time" fixture to conftest.py by stefan-brus-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/639
* Improve formula formatting to use infix notation by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/613
* Merge v0.25.1 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/652
* Add a glossary to the documentation by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/647
* Add capacity, oldest and newest timestamp to moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/598
* [ci] Add tests for non-native architectures by tiyash-basu-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/622
* Bump actions/checkout from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/655
* ci: Fix publishing of documentation on push by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/657
* Add a job to join the `nox` matrix jobs by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/661
* Add more formula tests for min and max functions by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/623
* Fixes on copy behavior in ring buffer window method by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/638
* Drop formula step Averager by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/645
* Refactor power distribution Result by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/659
* Adjust the glossary to 80 columns by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/666
* Replace len magic with count_valid method in ring buffer and moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/664
* Prepare release notes for the 1.0.0-rc1 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/674
* Clear the release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/675
* Bump the optional group with 9 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/683
* Bump docker/setup-buildx-action from 2 to 3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/680
* Bump docker/setup-qemu-action from 2 to 3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/681
* Bump docker/build-push-action from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/682
* Add mkdocs-macros plugin by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/667
* docs: Add an introduction to actors by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/679
* mkdocs: Fix numbered code annotations by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/684
* Add getting started tutorial and tutorial section by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/656
* Remove setitem magic from ring buffer by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/670
* Allow using macros in docstrings by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/687
* Rename datetime_to_index to to_internal_index by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/686
* Fix mermaid diagrams custom renderer by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/690
* Update obsolete comment about networkx-stubs by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/685
* Move Actors documentation to the `actor` module by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/688
* Don't use generics unnecessarily by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/698
* Improve Actors documentation by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/689
* Increment port in microgrid API client tests by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/699
* Support int indices and slice index behavior in ring buffer and moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/668
* Fix single element access for moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/672
* Rename `Introduction` to `User Guide` and move `Tutorials` next to it by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/701
* Bump types-pytz from 2023.3.1.0 to 2023.3.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/695
* Bump types-protobuf from 4.24.0.1 to 4.24.0.2 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/696
* Bump types-pyyaml from 6.0.12.11 to 6.0.12.12 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/694
* PowerDistributing: Add support for n:m relations in invs:bats by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/660
* Fix bug in how failed batteries are tracked in PowerDistributor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/705
* Update pydantic to v2.3 by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/703
* Add option to impute missing values in window method for moving window by cwasicki in https://github.com/frequenz-floss/frequenz-sdk-python/pull/669
* Bump pydoclint from 0.3.2 to 0.3.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/710
* Implement the PowerManagingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/692
* Prepare release notes for v1.0.0-rc2 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/723
* Remove support for `include_broken_batteries` in control commands by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/713
* Improve code reusability/modularity in PowerDistributor by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/717
* Document microgrid concepts from an SDK perspective by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/722
* Documentation for the FormulaEngine by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/731
* Bump types-protobuf from 4.24.0.2 to 4.24.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/734
* Expose `ComponentGraph` from its own module by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/738
* Document methods for creating data pipeline interface objects by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/739
* Add a restart delay to actors to avoid spam-restarting of buggy actors by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/741
* Rename datetime to timestamp variables by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/742
* Redesign access to migrogrid.grid() by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/707
* Set `resent_latest=True` for `BatteryPool.power_status`'s channels by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/743
* Clean warnings in tests by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/744
* Add consumtion and production operations to Formula Engine by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/746
* Use exclusion bounds while calculating target powers in PowerManager by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/755
* Remove the consumption and production power formulas by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/697
* Change internal presense of the Grid, eliminating `_grid` by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/747
* Update DataSourcingActor to accept current requests for inverters by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/759
* Remove unused paranthesis in formula generators by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/761
* Fix bug in inverter current data extractor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/762
* Rename nitrogen to Microgrid service by andrew-stevenson-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/760
* Add try/finally to decorated context managers yield statement by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/757
* Fix power failure report by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/763
* Update to repo-config v0.7.4 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/752
* Make the SDK's representation of bounds data internal by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/756
* Bump mike from 1.1.2 to 2.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/766
* Use a custom logger in the data sourcing actor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/769
* Fetch and expose microgrid ID and location by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/708
* Prepare release notes for the v1.0.0-rc3 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/775
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/777
* Make `PowerManagingActor` more modular and generic by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/773
* Fix type hint errors in microgrid client by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/778
* Use custom loggers for each module by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/780
* Bump types-protobuf from 4.24.0.3 to 4.24.0.4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/749
* Modularize status tracking for pools of components in the power distributing actor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/779
* Generalize PowerDistributingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/786
* Move Fuse to timeseries module by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/781
* Move grid power and current metrics to Grid by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/758
* Bump frequenz-channels from 0.16 to 1.0.0b2 by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/764
* Rename `ComponentGraph.components()` parameters to be plural by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/791
* Update some tests to use time machine by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/798
* Un-Peekable-ification of the PowerDistributingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/800
* Pass through 0W requests to the microgrid API independent of exclusion bounds by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/801
* Update `frequency()` to no longer have parameters by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/788
* Fix frequency sending `Quantity` by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/804
* Fix the resampler handling of output zeros by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/811
* Fetch and stream 3-phase voltage by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/815
* Speedup tests by lowering the actors restart delay by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/828
* Bump actions/setup-python from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/834
* Add missing type hints to instance members by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/809
* Fix bug in `GridFrequency` quantity conversion by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/807
* Improve (and fix some) test finalization by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/838
* Make the registry type-aware by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/830
* Improve BatteryPool's SoC accuracy at the edges by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/843
* Some component status cleanup by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/839
* Drop old propsals from the PowerManager by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/845
* Improvements to EVChargerData coming from the microgrid API by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/848
* Use a sentinel in `LatestValueCache` to denote if the cache is empty by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/846
* Move consumer and producer formulas out from logical meter by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/799
* Parse Quantity Strings by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/824
* Bump frequenz-api-microgrid to 0.15.3 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/855
* Bump the optional group with 14 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/837
* Bump types-protobuf from 4.24.0.4 to 4.24.0.20240129 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/867
* Bump flake8 from 6.1.0 to 7.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/860
* Bump setuptools related dependencies by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/863
* Bump actions/cache from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/858
* Bump pylint from 2.17.5 to 3.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/866
* Bump black from 23.12.1 to 24.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/865
* Remove unused type stubs by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/869
* Add release notes summary for the release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/870
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/871
* Fetch and stream 3-phase power by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/847
* Remove remaining traces of darglint by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/873
* Make sure `base_value` is always `float` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/874
* Remove the last reference to darglint by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/877
* Mock resampler: Improve variable names by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/879
* Allow multiplying `Quantity` by `float` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/875
* Remove unnecessary send adapter by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/878
* Bump actions/{up,down}load-artifact from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/833
* Allow all quantities division by `float | Self` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/876
* Cleanup and modularization of Power Manager, Power Distributor and DataPipeline by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/881
* More updates for n:m support - battery pool's power formula by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/730
* Prepare release notes for 1.0.0-rc5 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/884
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/886
* Bump types-markdown from 3.5.0.3 to 3.5.0.20240129 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/889
* Bump actions/labeler from 4.3.0 to 5.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/836
* Replace the internal microgrid API client with `frequenz-client-microgrid` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/892
* Upgrade channel version to `1.0.0-rc1` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/893
* Improve consistency between `*Pool`s by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/894
* Remove support for per-component interaction in EVChargerPool by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/895
* Add a `ComponentCategory` parameter to the `PowerDistributingActor` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/896
* Bug fixes in the PowerManager and the BatteryPool by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/898
* Widen the channels dependency to allow for the final 1.0.0 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/909
* Amend actor documentation by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/883
* Control methods for `EVChargerPool` using `PowerManager` and `PowerDistributor` by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/900
* Warn if duplicate `*pool` instances are being created by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/904
* Some EV charger pool cleanup and fixes by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/919
* Add a `PVPool` implementation by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/914
* Bump the optional group with 17 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/911
* Prepare release notes for the v1.0.0-rc6 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/924
* Log when no relevant samples are found for resampling by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/923
* Update microgrid client to v0.3 by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/925

New Contributors
* stefan-brus-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/612
* andrew-stevenson-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/760

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v0.25.2...v1.0.0-rc6

1.0.0rc5

Frequenz Python SDK Release Notes

Summary

This is a minor non-breaking release that adds new features and fixes a few bug.

New Features

- Allow multiplying and dividing any `Quantity` by a `float`. This just scales the `Quantity` value.
- Allow dividing any `Quantity` by another quaintity of the same type. This just returns a ration between both quantities.
- The battery pool `power` method now supports scenarios where one or more inverters can have multiple batteries connected to it and one or more batteries can have multiple inverters connected to it.

Bug Fixes

- Fix grid current formula generator to add the operator `+` to the engine only when the component category is handled.
- Fix bug where sometimes the `base_value` of a `Quantity` could be of a different type than `float`.


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/871
* Fetch and stream 3-phase power by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/847
* Remove remaining traces of darglint by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/873
* Make sure `base_value` is always `float` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/874
* Remove the last reference to darglint by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/877
* Mock resampler: Improve variable names by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/879
* Allow multiplying `Quantity` by `float` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/875
* Remove unnecessary send adapter by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/878
* Bump actions/{up,down}load-artifact from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/833
* Allow all quantities division by `float | Self` by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/876
* Cleanup and modularization of Power Manager, Power Distributor and DataPipeline by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/881
* More updates for n:m support - battery pool's power formula by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/730
* Prepare release notes for 1.0.0-rc5 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/884


**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v1.0.0-rc4...v1.0.0-rc5

1.0.0rc4

Frequenz Python SDK Release Notes

Summary

This release represents 3 months of work so it includes a lot of changes. Most of them are (breaking) API changes, in the hopes to make a more consistent and easier to use SDK 1.0. There are also quite a few bug fixes and a couple of new features.

Upgrading

- The `BatteryPool.power_status` method now streams objects of type `BatteryPoolReport`, replacing the previous `Report` objects.

- `Channels` has been upgraded to version 1.0.0b2, for information on how to upgrade please read [Channels release notes](https://github.com/frequenz-floss/frequenz-channels-python/releases/tag/v1.0.0-beta.2).

- In `BatteryPoolReport.distribution_result`,
* the following fields have been renamed:
+ `Result.succeeded_batteries` → `Result.succeeded_components`
+ `Result.failed_batteries` → `Result.failed_components`
+ `Request.batteries` → `Request.component_ids`
* and the following fields are now type-hinted as `collections.abc.Set`, to clearly indicate that they are read-only:
+ `Result.succeeded_components`
+ `Result.failed_components`


- The `Fuse` class has been moved to the `frequenz.sdk.timeseries` module.

- `microgrid.grid()`
- A `Grid` object is always instantiated now, even if the microgrid is not connected to the grid (islanded microgrids).
- The rated current of the grid fuse is set to `Current.zero()` in case of islanded microgrids.
- The grid fuse is set to `None` when the grid connection component metadata lacks information about the fuse.
- Grid power and current metrics were moved from `microgrid.logical_meter()` to `microgrid.grid()`.

Previously,

python
logical_meter = microgrid.logical_meter()
grid_power_recv = logical_meter.grid_power.new_receiver()
grid_current_recv = logical_meter.grid_current.new_receiver()


Now,

python
grid = microgrid.grid()
grid_power_recv = grid.power.new_receiver()
grid_current_recv = grid.current.new_receiver()


- Consumer and producer power formulas were moved from `microgrid.logical_meter()` to `microgrid.consumer()` and `microgrid.producer()`, respectively.

Previously,

python
logical_meter = microgrid.logical_meter()
consumer_power_recv = logical_meter.consumer_power.new_receiver()
producer_power_recv = logical_meter.producer_power.new_receiver()


Now,

python
consumer_power_recv = microgrid.consumer().power.new_receiver()
producer_power_recv = microgrid.producer().power.new_receiver()


- The `ComponentGraph.components()` parameters `component_id` and `component_category` were renamed to `component_ids` and `component_categories`, respectively.

- The `GridFrequency.component` property was renamed to `GridFrequency.source`

- The `microgrid.frequency()` method no longer supports passing the `component` parameter. Instead the best component is automatically selected.

- The `actor.ChannelRegistry` was rewritten to be type-aware and just a container of channels. You now need to provide the type of message that will be contained by the channel and use the `get_or_create()` method to get a channel and the `stop_and_remove()` method to stop and remove a channel. Once you get a channel you can create new senders and receivers, or set channel options, as usual. Please read the docs for a full description, but in general this:

python
r = registry.new_receiver(name)
s = registry.new_sender(name)


Should be replaced by:

python
r = registry.get_or_create(T, name).new_receiver()
s = registry.get_or_create(T, name).new_sender()


- The `ReceiverFetcher` interface was slightly changed to make `maxsize` a keyword-only argument. This is to make it compatible with the `Broadcast` channel, so it can be considered a `ReceiverFetcher`.

New Features

- A new method `microgrid.voltage()` was added to allow easy access to the phase-to-neutral 3-phase voltage of the microgrid.

- The `actor.ChannelRegistry` is now type-aware.

- A new class method `Quantity.from_string()` has been added to allow the creation of `Quantity` objects from strings.

Bug Fixes

- 0W power requests are now not adjusted to exclusion bounds by the `PowerManager` and `PowerDistributor`, and are sent over to the microgrid API directly.

- `microgrid.frequency()` / `GridFrequency`:

* Fix sent samples to use `Frequency` objects instead of raw `Quantity`.
* Handle `None` values in the received samples properly.
* Convert `nan` values in the received samples to `None`.

- The resampler now properly handles sending zero values.

A bug made the resampler interpret zero values as `None` when generating new samples, so if the result of the resampling is zero, the resampler would just produce `None` values.

- The PowerManager no longer holds on to proposals from dead actors forever. If an actor hasn't sent a new proposal in 60 seconds, the available proposal from that actor is dropped.

- Fix `Quantity.__format__()` sometimes skipping the number for very small values.

- Not strictly a bug fix, but the microgrid API version was bumped to v0.15.3, which indirectly bumps the common API dependency to v0.5.x, so the SDK can be compatible with other APIs using a newer version of the common API.

Downstream projects that require a `frequenz-api-common` v0.5.x and want to ensure proper dependency resolution should update their minimum SDK version to this release.


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/777
* Make `PowerManagingActor` more modular and generic by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/773
* Fix type hint errors in microgrid client by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/778
* Use custom loggers for each module by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/780
* Bump types-protobuf from 4.24.0.3 to 4.24.0.4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/749
* Modularize status tracking for pools of components in the power distributing actor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/779
* Generalize PowerDistributingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/786
* Move Fuse to timeseries module by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/781
* Move grid power and current metrics to Grid by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/758
* Bump frequenz-channels from 0.16 to 1.0.0b2 by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/764
* Rename `ComponentGraph.components()` parameters to be plural by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/791
* Update some tests to use time machine by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/798
* Un-Peekable-ification of the PowerDistributingActor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/800
* Pass through 0W requests to the microgrid API independent of exclusion bounds by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/801
* Update `frequency()` to no longer have parameters by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/788
* Fix frequency sending `Quantity` by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/804
* Fix the resampler handling of output zeros by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/811
* Fetch and stream 3-phase voltage by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/815
* Speedup tests by lowering the actors restart delay by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/828
* Bump actions/setup-python from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/834
* Add missing type hints to instance members by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/809
* Fix bug in `GridFrequency` quantity conversion by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/807
* Improve (and fix some) test finalization by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/838
* Make the registry type-aware by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/830
* Improve BatteryPool's SoC accuracy at the edges by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/843
* Some component status cleanup by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/839
* Drop old propsals from the PowerManager by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/845
* Improvements to EVChargerData coming from the microgrid API by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/848
* Use a sentinel in `LatestValueCache` to denote if the cache is empty by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/846
* Move consumer and producer formulas out from logical meter by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/799
* Parse Quantity Strings by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/824
* Bump frequenz-api-microgrid to 0.15.3 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/855
* Bump the optional group with 14 updates by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/837
* Bump types-protobuf from 4.24.0.4 to 4.24.0.20240129 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/867
* Bump flake8 from 6.1.0 to 7.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/860
* Bump setuptools related dependencies by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/863
* Bump actions/cache from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/858
* Bump pylint from 2.17.5 to 3.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/866
* Bump black from 23.12.1 to 24.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/865
* Remove unused type stubs by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/869
* Add release notes summary for the release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/870


**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v1.0.0-rc3...v1.0.0-rc4

1.0.0rc3

Frequenz Python SDK Release Notes

Summary

The `microgrid` package now exposes grid connections uniformly and introduces formula operators for `consumption` and `production`, replacing the `logical_meter.*_{production,consumption}()` formulas. The `actor` package restarts crashed actors with a delay, and the `ConnectionManager` exposes the `microgrid_id` and `location` details.

There are also a few bug fixes, documentation improvements and other minor breaking changes.

Upgrading

- `actor` package

* Actors are now restarted after a small delay when they crash to avoid a busy loop and spamming the logs if the actor keeps failing to start.

* The `include_broken_batteries` argument was removed from the `PowerDistributingActor`'s `Request`. This option is no longer supported.

- `microgrid` package

* `grid`: The grid connection is now exposed as `microgrid.grid()`. This is more consistent with other objects exposed in the `microgrid` module, such as `microgrid.battery_pool()` and `microgrid.logical_meter()`.

* `battery_pool()`: The `include_broken_batteries` argument was removed from the `propose_*()` methods (it was also removed from the underlying type, `timeseries.BatteryPool`). This option is no longer supported.

* `ComponentGraph`: The component graph is now exposed as `microgrid.component_graph.ComponentGraph`.

* `logical_meter()`: The `*_consumption()` and `*_production()` methods were removed. You should use the new `consumption` and `production` formula operators instead.

For example:

python
Old:
pv_consumption = logical_meter.pv_consumption_power()
production = (logical_meter.pv_production_power() + logical_meter.chp_production_power()).build()
New:
pv_consumption = logical_meter.pv_power().consumption().build()
production = (logical_meter.pv_power().production() + logical_meter.chp_power().production()).build()


New Features

- The configuration flag `resend_latest` can now be changed for channels owned by the `ChannelRegistry`.

- New formula operators for calculating `consumption()` and `production()` were added.

- The `ConnectionManager` now fetches microgrid metadata when connecting to the microgrid and exposes `microgrid_id` and `location` properties of the connected microgrid.

Users can access this information using `microgrid.connection_manager.get().microgrid_id` and `microgrid.connection_manager.get().location`.

- The documentation has been improved to:

* Display signatures with types.
* Show inherited members.
* Publish documentation for pre-releases.
* Present the full tag name as the documentation version.
* Ensure all development branches have their documentation published (the `next` version has been removed).
* Fix the order of the documentation versions.

Bug Fixes

- Fixed incorrect grid current calculations in locations where the calculations depended on current measurements from an inverter.

- Corrected the power failure report to exclude any failed power calculations from the successful ones.


What's Changed
* Remove support for `include_broken_batteries` in control commands by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/713
* Improve code reusability/modularity in PowerDistributor by Marenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/717
* Document microgrid concepts from an SDK perspective by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/722
* Documentation for the FormulaEngine by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/731
* Bump types-protobuf from 4.24.0.2 to 4.24.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/734
* Expose `ComponentGraph` from its own module by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/738
* Document methods for creating data pipeline interface objects by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/739
* Add a restart delay to actors to avoid spam-restarting of buggy actors by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/741
* Rename datetime to timestamp variables by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/742
* Redesign access to migrogrid.grid() by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/707
* Set `resent_latest=True` for `BatteryPool.power_status`'s channels by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/743
* Clean warnings in tests by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/744
* Add consumtion and production operations to Formula Engine by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/746
* Use exclusion bounds while calculating target powers in PowerManager by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/755
* Remove the consumption and production power formulas by matthias-wende-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/697
* Change internal presense of the Grid, eliminating `_grid` by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/747
* Update DataSourcingActor to accept current requests for inverters by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/759
* Remove unused paranthesis in formula generators by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/761
* Fix bug in inverter current data extractor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/762
* Rename nitrogen to Microgrid service by andrew-stevenson-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/760
* Add try/finally to decorated context managers yield statement by christianparpart in https://github.com/frequenz-floss/frequenz-sdk-python/pull/757
* Fix power failure report by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/763
* Update to repo-config v0.7.4 by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/752
* Make the SDK's representation of bounds data internal by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/756
* Bump mike from 1.1.2 to 2.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-sdk-python/pull/766
* Use a custom logger in the data sourcing actor by shsms in https://github.com/frequenz-floss/frequenz-sdk-python/pull/769
* Fetch and expose microgrid ID and location by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-sdk-python/pull/708
* Prepare release notes for the v1.0.0-rc3 release by llucax in https://github.com/frequenz-floss/frequenz-sdk-python/pull/775

New Contributors
* andrew-stevenson-frequenz made their first contribution in https://github.com/frequenz-floss/frequenz-sdk-python/pull/760

**Full Changelog**: https://github.com/frequenz-floss/frequenz-sdk-python/compare/v1.0.0-rc2...v1.0.0-rc3

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.