|
2 | 2 |
|
3 | 3 | ## Summary |
4 | 4 |
|
5 | | -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. |
| 5 | +<!-- Here goes a general summary of what this release is about --> |
6 | 6 |
|
7 | 7 | ## Upgrading |
8 | 8 |
|
9 | | -- The `BatteryPool.power_status` method now streams objects of type `BatteryPoolReport`, replacing the previous `Report` objects. |
10 | | - |
11 | | -- `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). |
12 | | - |
13 | | -- In `BatteryPoolReport.distribution_result`, |
14 | | - * the following fields have been renamed: |
15 | | - + `Result.succeeded_batteries` → `Result.succeeded_components` |
16 | | - + `Result.failed_batteries` → `Result.failed_components` |
17 | | - + `Request.batteries` → `Request.component_ids` |
18 | | - * and the following fields are now type-hinted as `collections.abc.Set`, to clearly indicate that they are read-only: |
19 | | - + `Result.succeeded_components` |
20 | | - + `Result.failed_components` |
21 | | - |
22 | | - |
23 | | -- The `Fuse` class has been moved to the `frequenz.sdk.timeseries` module. |
24 | | - |
25 | | -- `microgrid.grid()` |
26 | | - - A `Grid` object is always instantiated now, even if the microgrid is not connected to the grid (islanded microgrids). |
27 | | - - The rated current of the grid fuse is set to `Current.zero()` in case of islanded microgrids. |
28 | | - - The grid fuse is set to `None` when the grid connection component metadata lacks information about the fuse. |
29 | | - - Grid power and current metrics were moved from `microgrid.logical_meter()` to `microgrid.grid()`. |
30 | | - |
31 | | - Previously, |
32 | | - |
33 | | - ```python |
34 | | - logical_meter = microgrid.logical_meter() |
35 | | - grid_power_recv = logical_meter.grid_power.new_receiver() |
36 | | - grid_current_recv = logical_meter.grid_current.new_receiver() |
37 | | - ``` |
38 | | - |
39 | | - Now, |
40 | | - |
41 | | - ```python |
42 | | - grid = microgrid.grid() |
43 | | - grid_power_recv = grid.power.new_receiver() |
44 | | - grid_current_recv = grid.current.new_receiver() |
45 | | - ``` |
46 | | - |
47 | | -- Consumer and producer power formulas were moved from `microgrid.logical_meter()` to `microgrid.consumer()` and `microgrid.producer()`, respectively. |
48 | | - |
49 | | - Previously, |
50 | | - |
51 | | - ```python |
52 | | - logical_meter = microgrid.logical_meter() |
53 | | - consumer_power_recv = logical_meter.consumer_power.new_receiver() |
54 | | - producer_power_recv = logical_meter.producer_power.new_receiver() |
55 | | - ``` |
56 | | - |
57 | | - Now, |
58 | | - |
59 | | - ```python |
60 | | - consumer_power_recv = microgrid.consumer().power.new_receiver() |
61 | | - producer_power_recv = microgrid.producer().power.new_receiver() |
62 | | - ``` |
63 | | - |
64 | | -- The `ComponentGraph.components()` parameters `component_id` and `component_category` were renamed to `component_ids` and `component_categories`, respectively. |
65 | | - |
66 | | -- The `GridFrequency.component` property was renamed to `GridFrequency.source` |
67 | | - |
68 | | -- The `microgrid.frequency()` method no longer supports passing the `component` parameter. Instead the best component is automatically selected. |
69 | | - |
70 | | -- 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: |
71 | | - |
72 | | - ```python |
73 | | - r = registry.new_receiver(name) |
74 | | - s = registry.new_sender(name) |
75 | | - ``` |
76 | | - |
77 | | - Should be replaced by: |
78 | | - |
79 | | - ```python |
80 | | - r = registry.get_or_create(T, name).new_receiver() |
81 | | - s = registry.get_or_create(T, name).new_sender() |
82 | | - ``` |
83 | | - |
84 | | -- 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`. |
| 9 | +<!-- Here goes notes on how to upgrade from previous versions, including deprecations and what they should be replaced with --> |
85 | 10 |
|
86 | 11 | ## New Features |
87 | 12 |
|
88 | | -- A new method `microgrid.voltage()` was added to allow easy access to the phase-to-neutral 3-phase voltage of the microgrid. |
89 | | - |
90 | | -- The `actor.ChannelRegistry` is now type-aware. |
91 | | - |
92 | | -- A new class method `Quantity.from_string()` has been added to allow the creation of `Quantity` objects from strings. |
| 13 | +<!-- Here goes the main new features and examples or instructions on how to use them --> |
93 | 14 |
|
94 | 15 | ## Bug Fixes |
95 | 16 |
|
96 | | -- 0W power requests are now not adjusted to exclusion bounds by the `PowerManager` and `PowerDistributor`, and are sent over to the microgrid API directly. |
97 | | - |
98 | | -- `microgrid.frequency()` / `GridFrequency`: |
99 | | - |
100 | | - * Fix sent samples to use `Frequency` objects instead of raw `Quantity`. |
101 | | - * Handle `None` values in the received samples properly. |
102 | | - * Convert `nan` values in the received samples to `None`. |
103 | | - |
104 | | -- The resampler now properly handles sending zero values. |
105 | | - |
106 | | - 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. |
107 | | - |
108 | | -- 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. |
109 | | - |
110 | | -- Fix `Quantity.__format__()` sometimes skipping the number for very small values. |
111 | | - |
112 | | -- 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. |
113 | | - |
114 | | - 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. |
| 17 | +<!-- Here goes notable bug fixes that are worth a special mention or explanation --> |
0 commit comments