|
2 | 2 |
|
3 | 3 | ## Summary |
4 | 4 |
|
5 | | -New `Quantity` types! These types can have units (power, current, voltage, etc.) and are *type- and unit-safe* in the sense that users can't accidentally sum a power with a voltage, or a power in kW with a power in W. |
| 5 | +<!-- Here goes a general summary of what this release is about --> |
6 | 6 |
|
7 | 7 | ## Upgrading |
8 | 8 |
|
9 | | -- `Sample` objects no longer hold `float`s, but rather `Quantity` or one of its subclasses, like `Power`, `Current`, `Energy`, etc. based on the type of values being streamed. |
10 | | - |
11 | | - ```python |
12 | | - sample: Sample[Power] = await battery_pool.power.new_receiver().receive() |
13 | | - power: float = sample.value.as_watts() |
14 | | - ``` |
15 | | - |
16 | | -- `BatteryPool.soc` now streams values of type `Sample[Quantity]`, and `BatteryPool.capacity` now streams values of type `Sample[Energy]`. |
17 | | - |
18 | | - ```python |
19 | | - battery_pool = microgrid.battery_pool() |
20 | | - soc_sample: Sample[Quantity] = await battery_pool.soc.new_receiver().receive() |
21 | | - soc: float = soc_sample.value.base_value |
22 | | - |
23 | | - capacity_sample: Sample[Energy] = await battery_pool.capacity.new_receiver().receive() |
24 | | - capacity: float = soc_sample.value.as_watt_hours() |
25 | | - ``` |
26 | | - |
27 | | -- `MicrogridApiClient.set_power` no longer returns a `protobuf.Empty` result, but a `None`. This won't affect you unless you are using the low level APIs of the SDK. |
| 9 | +<!-- Here goes notes on how to upgrade from previous versions, including deprecations and what they should be replaced with --> |
28 | 10 |
|
29 | 11 | ## New Features |
30 | 12 |
|
31 | | -- The logical meter has a new method that returns producer power, that is the sum of all energy producers. |
32 | | - |
33 | | -- `Quantity` types (`Power`, `Current`, `Energy`, `Voltage`) for providing type- and unit-safety when dealing with physical quantities. |
| 13 | +<!-- Here goes the main new features and examples or instructions on how to use them --> |
34 | 14 |
|
35 | 15 | ## Bug Fixes |
36 | 16 |
|
37 | | -- Two bugs in the ring buffer which is used by the `MovingWindow` class were fixed: |
38 | | - - `len(buffer)` was not considering potentially existing gaps (areas without elements) in the buffer. |
39 | | - - A off-by-one error in the gap calculation logic was fixed that recorded a gap when there was none if an element with a future timestamp was added that would create a gap of exactly 1. |
40 | | - |
41 | | -- A formula engine lifetime issue, when creating higher order formula receivers without holding on to a reference to the engine, was fixed. |
| 17 | +<!-- Here goes notable bug fixes that are worth a special mention or explanation --> |
0 commit comments