Releases: frequenz-floss/frequenz-sdk-python
v1.0.0-rc901
Frequenz Python SDK Release Notes
Bug Fixes
ConfigManagingActor
: Fixed an issue where the actor was unable to process events after being restarted.
What's Changed
- Clear release notes by @llucax in #1069
- Create FileWatcher when ConfigManagingActor runs by @daniel-zullo-frequenz in #1074
Full Changelog: v1.0.0-rc900...v1.0.0-rc901
v1.0.0-rc900
Frequenz Python SDK Release Notes
Summary
This release mainly introduces a new feature that allows fallback components to be used in generated formulas, but it also fixes a few bugs and gets rid of betterproto
/grpclib
and goes back to Google's implementation.
Upgrading
- The
frequenz-client-microgrid
dependency was bumped to0.5.0
. This can cause dependency issues if you are using other API clients and thefrequenz-client-base
dependencies don't match.
New Features
- Fallback components are used in generated formulas. If primary components is unavailable, formula will generate metric from fallback components. Fallback formulas are implemented for:
- PVPowerFormula
- ProducerPowerFormula
- BatteryPowerFormula
- ConsumerPowerFormula
- GridPowerFormula
Bug Fixes
-
Allow setting
api_power_request_timeout
inmicrogrid.initialize()
. -
Fix an issue where in grid meters could be identified as {pv/ev/battery/chp} meters in some component graph configurations.
What's Changed
- Force
grpclib
to be at least 0.4.8rc2 by @llucax in #1012 - Clear release notes by @shsms in #1047
- Merge v1.0.0-rc7xx into v1.x.x by @shsms in #1049
- Allow setting
api_power_request_timeout
inmicrogrid.initialize()
by @shsms in #1050 - Distinguish between grid meters and other meters by @shsms in #1052
- Fallback components in generated formulas by @ela-kotulska-frequenz in #1037
- Bump frequenz-repo-config to 0.10.0 by @llucax in #1059
- Make dependabot do minor updates for the microgrid client separately by @llucax in #1060
- Revert "Change receiver limit in mock_resampler" by @ela-kotulska-frequenz in #1061
- Bump the
frequenz-client-microgrid
dependency to0.5.0
by @llucax in #1057 - Remove the redundant
--platform=${TARGETPLATFORM}
inDockerfile
by @llucax in #1062 - Bump the required group across 1 directory with 14 updates by @dependabot in #1064
- Bump the required group with 3 updates by @dependabot in #1065
- Unpin mkdocs-autorefs and fix multple URLs for warnings by @llucax in #1051
- Bump
frequenz-client-microgrid
to 0.5.1 by @llucax in #1068 - Bump types-setuptools from 71.1.0.20240726 to 74.0.0.20240831 by @dependabot in #1066
Full Changelog: v1.0.0-rc800...v1.0.0-rc900
v1.0.0-rc801
Frequenz Python SDK Release Notes
Bug Fixes
- Bump the
grpclib
dependency to pull a fix for using IPv6 addresses.
What's Changed
- Force
grpclib
to be at least 0.4.8rc2 by @llucax in #1012 - Merge v1.0.0-rc7xx into v1.0.0-rc8xx by @shsms in #1048
Full Changelog: v1.0.0-rc800...v1.0.0-rc801
v1.0.0-rc800
Frequenz Python SDK Release Notes
Summary
This release makes some breaking changes to the SDK's public interface aimed at improving clarity and correctness. It also includes several bug fixes in core components like the resampler, the power distributor, and the moving window.
Upgrading
-
The
frequenz.sdk.microgrid.*_pool
methods have been renamed tonew_*_pool
, to make it explicit that they create new instances of the pool classes.battery_pool
->new_battery_pool
ev_charger_pool
->new_ev_charger_pool
pv_pool
->new_pv_pool
-
The following component metric streams have been renamed to clarify that they stream per-phase values:
frequenz.sdk.microgrid.
voltage
->voltage_per_phase
grid.current
->grid.current_per_phase
ev_charger_pool.current
->ev_charger_pool.current_per_phase
-
Passing a
request_timeout
in calls to*_pool.propose_power
is no longer supported. It may be specified at application startup, through the new optionalapi_power_request_timeout
parameter in themicrogrid.initialize()
method. -
Power distribution results are no longer available through the
power_status
streams in the*Pool
s. They can now be accessed as a stream from a separate propertypower_distribution_results
, which is available from all the*Pool
s. -
The
ConfigManagingActor
now usescollections.abc.Mapping
as the output sender type. This change indicates that the broadcasted configuration is intended to be read-only. -
The
ConfigManagingActor
has moved fromfrequenz.sdk.actor
tofrequenz.sdk.config
. -
The following core actors are no longer part of the public API:
PowerDistributingActor
ComponentMetricsResamplingActor
DataSourcingActor
-
The following two types which are used for communicating with the data sourcing and resampling actors are also no longer part of the public API:
ComponentMetricId
ComponentMetricRequest
-
The
ChannelRegistry
is no longer part of the public API. -
The
Result
types for the power distribution results are now exposed through thefrequenz.sdk.microgrid.battery_pool
module.
New Features
- Classes
Bounds
andSystemBounds
now implement the__contains__
method, allowing the use of thein
operator to check whether a value falls within the bounds or not.
Enhancements
- The resampler now shows an error message where it is easier to identify the component and metric when it can't find relevant data for the current resampling window.
Bug Fixes
- Fixed a typing issue that occurs in some cases when composing formulas with constants.
- Fixed a bug where sending tasks in the data sourcing actor might not have been awaited.
- Updated the logical meter documentation to reflect the latest changes.
- Fixed a bug in the code examples in the getting-started tutorial.
- Fixed a bug in
ConfigManagingActor
that was not properly comparing the event path to the config file path when the config file is a relative path. - Re-expose
ComponentMetricId
to the docs. - Fixed typing ambiguities when building composite formulas on streaming data.
- Fixed a bug that was causing the
PowerDistributor
to exit if power requests to PV inverters or EV chargers timeout. - Fix the handling of canceled tasks in the data sourcing and resampling actor.
- Fix a bug in PV power distribution by excluding inverters that haven't sent any data since startup.
- Prevent stacking of power requests to avoid delays in processing when the power request frequency exceeds the processing time.
- Fixes a bug in the ring buffer in case the updated value is missing and creates a gap in time.
What's Changed
- Clear release notes by @llucax in #978
- Update glossary by @cwasicki in #952
- Rename
microgrid.*_pool
constructors tonew_*_pool
by @shsms in #979 - Fix typing for composing constants with formula builders by @shsms in #980
- Filter out irrelevant logs when checking for expected logs by @llucax in #983
- Properly keep references and await for concurrent tasks by @llucax in #984
- Add contains function to Bounds and SystemBounds by @0o111 in #962
- Cleanup
*Report
classes as simple protocols with only methods by @shsms in #981 - Improve naming for per-phase component metric streams by @shsms in #987
- Fix battery manager string representation by @llucax in #989
- Update logical meter documentation by @matthias-wende-frequenz in #986
- Remove dependency to polars by @llucax in #991
- Bump brettcannon/check-for-changed-files from 1.2.0 to 1.2.1 by @dependabot in #994
- Bump docker/build-push-action from 5 to 6 by @dependabot in #993
- Bump the required group with 9 updates by @dependabot in #995
- Remove
request_timeout
parameter frompropose_power
methods by @shsms in #1000 - Remove power distribution results from
Report
objects by @shsms in #998 - Remove extra comma from tutorial docs by @shsms in #1004
- Switch to the
LatestValueCache
from the channels package by @shsms in #1002 - Fix ConfigManagingActor to handle relative paths by @daniel-zullo-frequenz in #1005
- Fix microgrid API URL in example by @llucax in #1006
- Use a more descriptive channel name for the resampler by @llucax in #1007
- Update sender type in ConfigManagingActor by @daniel-zullo-frequenz in #1010
- Expose
ComponentMetricId
in the public API by @llucax in #990 - Fix FormulaEngine typing by @shsms in #1011
- Use solipsism, time-machine in
*Pool
tests by @shsms in #1013 - Fix PV power distribution by @daniel-zullo-frequenz in #1015
- Bump types-setuptools from 70.1.0.20240627 to 71.1.0.20240726 by @dependabot in #1019
- Fixes to the PowerDistributingActor by @shsms in #1020
- Make actor example loop forever by @llucax in #1029
- Handle
CancelledError
s properly by @llucax in #1027 - Fix PV inverters power distribution by @daniel-zullo-frequenz in #1028
- Prevent stacking of power requests by @daniel-zullo-frequenz in #1023
- Fix gap in ring buffer when updating missing values by @cwasicki in #1034
- Fix exit-on-timeout issue in PowerDistributor by @shsms in #1035
- Fix typo and improve formatting by @llucax in #1033
- Cleanup the
actor
package by @shsms in #1031 - Fix grammar in release notes by @shsms in #1040
- Fix glossary links and restrict
mkdocs-autorefs
updates by @llucax in #1043 - Merge v1.0.0-rc6xx into v1.x.x by @llucax in #1042
- Prepare release notes for v1.0.0-rc800 by @shsms in #1046
Full Changelog: v1.0.0rc700...v1.0.0-rc800
v1.0.0-rc603
Frequenz Python SDK Release Notes
Bug Fixes
-
Fixes a bug in the ring buffer in case the updated value is missing and creates a gap in time.
-
Fixed a bug that was causing the
PowerDistributor
to exit if power requests to PV inverters or EV chargers timeout.
What's Changed
- Fix gap in ring buffer when updating missing values by @cwasicki in #1034
- Fix exit-on-timeout issue in PowerDistributor by @shsms in #1035
Full Changelog: v1.0.0-rc602...v1.0.0-rc603
v1.0.0-rc602
Frequenz Python SDK Release Notes
Bug Fixes
- Fix PV power distribution excluding inverters that haven't sent any data since the application started.
What's Changed
- Fix PV power distribution by @daniel-zullo-frequenz in #1015
Full Changelog: v1.0.0-rc601...v1.0.0-rc602
v1.0.0rc701
Frequenz Python SDK Release Notes
Bug Fixes
- Bump the
grpclib
dependency to pull a fix for using IPv6 addresses.
What's Changed
Full Changelog: v1.0.0rc700...v1.0.0rc701
v1.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 aserver_url
instead of ahost
andport
.The following format is expected:
grpc://hostname{:port}{?ssl=ssl}
, where the port should be an int between0
and65535
(defaulting to9090
) andssl
should be a boolean (defaulting tofalse
). For example:grpc://localhost
orgrpc://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 thehost
andport
attributes, only theserver_url
. If you need to extract the host or port from theserver_url
, you can use the standard Pythonurllib.parse.urlparse()
function. -
The
Config
class was removed and theConfigManagingActor
now sends a plain dictionary rather than aConfig
object.
New Features
- Calls to
microgrid.*_pool
methods now accept an optionalset_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 #931
- Always require a priority argument in calls to
microgrid.*_pool
methods by @shsms in #944 - Set zero power for PV inverters not neccessary to reach target power by @shsms in #946
- Update protobuf requirement from <5,>=4.21.6 to >=4.21.6,<6 by @dependabot in #936
- Code quality improvements in the
DataPipeline
and*Pool
classes by @shsms in #948 - Bump types-protobuf from 4.24.0.20240129 to 5.26.0.20240422 by @dependabot in #937
- Add support for Python 3.12 by @daniel-zullo-frequenz in #947
- Miscelaneous improvements and fixes by @llucax in #953
- Bump types-setuptools from 69.5.0.20240423 to 70.0.0.20240524 by @dependabot in #959
- Improve code comment in power distribution to PV inverters by @shsms in #960
- Support power requests from shifting actors in the PowerManager by @shsms in #957
- Upgrade to microgrid client v0.4.0 by @llucax in #955
- Bump the required group across 1 directory with 8 updates by @dependabot in #964
- Update ConfigManagingActor to send a dictionary by @daniel-zullo-frequenz in #969
- Don't sleep on PowerDistributor startup by @shsms in #971
- Stop using a deprecated way to replace the event loop in tests by @llucax in #976
- Rename parameter
in_shifting_group
→set_operating_point
by @shsms in #970 - Make some minor improvements for LastValueCache by @llucax in #974
- Prepare release notes for v1.0.0rc700 by @llucax in #977
Full Changelog: v1.0.0-rc601...v1.0.0rc700
v1.0.0-rc601
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. 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 #617
- Initialize a
Grid
object with a givenFuse
limit by @tiyash-basu-frequenz in #610 - Upgrade to repo-config v0.6.1 by @llucax in #620
- Bump polars from 0.18.15 to 0.19.1 by @dependabot in #626
- Bump the optional group with 4 updates by @dependabot in #634
- Bump types-setuptools from 68.1.0.0 to 68.1.0.1 by @dependabot in #635
- Don't return
None
from battery pool methods by @stefan-brus-frequenz in #612 - Clarify documentation of BatteryPool soc and capacity methods by @stefan-brus-frequenz in #637
- Document class and module attributes by @daniel-zullo-frequenz in #618
- Add microgrid.frequency() by @Marenz in #579
- Treat NaN as gap in ring buffer by @cwasicki in #641
- Replace obsolete types by @daniel-zullo-frequenz in #644
- Move "fake_time" fixture to conftest.py by @stefan-brus-frequenz in #639
- Improve formula formatting to use infix notation by @christianparpart in #613
- Merge v0.25.1 by @llucax in #652
- Add a glossary to the documentation by @llucax in #647
- Add capacity, oldest and newest timestamp to moving window by @cwasicki in #598
- [ci] Add tests for non-native architectures by @tiyash-basu-frequenz in #622
- Bump actions/checkout from 3 to 4 by @dependabot in #655
- ci: Fix publishing of documentation on push by @llucax in #657
- Add a job to join the
nox
matrix jobs by @llucax in #661 - Add more formula tests for min and max functions by @matthias-wende-frequenz in #623
- Fixes on copy behavior in ring buffer window method by @cwasicki in #638
- Drop formula step Averager by @christianparpart in #645
- Refactor power distribution Result by @daniel-zullo-frequenz in #659
- Adjust the glossary to 80 columns by @llucax in #666
- Replace len magic with count_valid method in ring buffer and moving window by @cwasicki in #664
- Prepare release notes for the 1.0.0-rc1 release by @llucax in #674
- Clear the release notes by @llucax in #675
- Bump the optional group with 9 updates by @dependabot in #683
- Bump docker/setup-buildx-action from 2 to 3 by @dependabot in #680
- Bump docker/setup-qemu-action from 2 to 3 by @dependabot in #681
- Bump docker/build-push-action from 4 to 5 by @dependabot in #682
- Add mkdocs-macros plugin by @llucax in #667
- docs: Add an introduction to actors by @llucax in #679
- mkdocs: Fix numbered code annotations by @llucax in #684
- Add getting started tutorial and tutorial section by @matthias-wende-frequenz in #656
- Remove setitem magic from ring buffer by @cwasicki in #670
- Allow using macros in docstrings by @llucax in #687
- Rename datetime_to_index to to_internal_index by @cwasicki in #686
- Fix mermaid diagrams custom renderer by @llucax in #690
- Update obsolete comment about networkx-stubs by @daniel-zullo-frequenz in #685
- Move Actors documentation to the
actor
module by @llucax in #688 - Don't use generics unnecessarily by @llucax in #698
- Improve Actors documentation by @llucax in #689
- Increment port in microgrid API client tests by @llucax in #699
- Support int indices and slice index behavior in ring buffer and moving window by @cwasicki in #668
- Fix single element access for moving window by @cwasicki in #672
- Rename
Introduction
toUser Guide
and moveTutorials
next to it by @llucax in #701 - Bump types-pytz from 2023.3.1.0 to 2023.3.1.1 by @dependabot in #695
- Bump types-protobuf from 4.24.0.1 to 4.24.0.2 by @dependabot in #696
- Bump types-pyyaml from 6.0.12.11 to 6.0.12.12 by @dependabot in #694
- PowerDistributing: Add support for n:m relations in invs:bats by @Marenz in #660
- Fix bug in how failed batteries are tracked in PowerDistributor by @shsms in #705
- Update pydantic to v2.3 by @daniel-zullo-frequenz in #703
- Add option to impute missing values in window method for moving window by @cwasicki in #669
- Bump pydoclint from 0.3.2 to 0.3.3 by @dependabot in #710
- Implement the PowerManagingActor by @shsms in #692
- Prepare release notes for v1.0.0-rc2 by @llucax in #723
- Remove support for
include_broken_batteries
in control commands by @shsms in #713 - Improve code reusability/modularity in PowerDistributor by @Marenz in #717
- Document microgrid concepts from an SDK perspective by @shsms in #722
- Documentation for the FormulaEngine by @shsms in #731
- Bump types-protobuf from 4.24.0.2 to 4.24.0.3 by @dependabot in #734
- Expose
ComponentGraph
from its own module by @shsms in #738 - Document methods for creating data pipeline interface objects by @shsms in #739
- Add a restart delay to actors to avoid spam-restarting of buggy actors by @christianparpart in #741
- Rename datetime to timestamp variables by @daniel-zullo-frequenz in #742
- Redesign access to migrogrid.grid() by @christianparpart in #707
- Set
resent_latest=True
forBatteryPool.power_status
's channels by @shsms in #743 - Clean warnings in tests by @daniel-zullo-frequenz in #744
- Add consumtion and production operations to Formula Engine by @matthias-wende-frequenz in #746
- Use exclusion bounds while calculating target powers in PowerManager by @shsms in #755
- Remove the consumption and ...
v1.0.0-rc6
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.
Upgrading
-
The SDK is now using the microgrid API client from
frequenz-client-microgrid
. You should update your code if you are using the microgrid API client directly. -
The minimum required
frequenz-channels
version is nowv1.0.0-rc1
. -
The set of battery IDs managed by a battery pool are now available through
BatteryPool.component_ids
, and no longer throughBatteryPool.battery_ids
. This is done to have a consistent interface with other*Pool
s. -
The
maxsize
parameter in calls toBatteryPool.{soc/capacity/temperature}.new_receiver()
methods have now been renamed tolimit
, to be consistent with the channels repository. -
Support for per-component interaction in
EVChargerPool
has been removed. Please use the newpropose_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 frommicrogrid.logical_meter().pv_power
.
New Features
-
EVChargerPool
/microgrid.ev_charger_pool()
: Newpropose_power
andpower_status
methods have been added, similar to theBatteryPool
. These method interface with thePowerManager
andPowerDistributor
, which currently uses a first-come-first-serve algorithm to distribute power to EVs. -
A PV pool (
PVPool
/microgrid.pv_pool()
) was added, withpropose_power
,power_status
andpower
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 typefloat
instead ofCurrent
. -
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 #617
- Initialize a
Grid
object with a givenFuse
limit by @tiyash-basu-frequenz in #610 - Upgrade to repo-config v0.6.1 by @llucax in #620
- Bump polars from 0.18.15 to 0.19.1 by @dependabot in #626
- Bump the optional group with 4 updates by @dependabot in #634
- Bump types-setuptools from 68.1.0.0 to 68.1.0.1 by @dependabot in #635
- Don't return
None
from battery pool methods by @stefan-brus-frequenz in #612 - Clarify documentation of BatteryPool soc and capacity methods by @stefan-brus-frequenz in #637
- Document class and module attributes by @daniel-zullo-frequenz in #618
- Add microgrid.frequency() by @Marenz in #579
- Treat NaN as gap in ring buffer by @cwasicki in #641
- Replace obsolete types by @daniel-zullo-frequenz in #644
- Move "fake_time" fixture to conftest.py by @stefan-brus-frequenz in #639
- Improve formula formatting to use infix notation by @christianparpart in #613
- Merge v0.25.1 by @llucax in #652
- Add a glossary to the documentation by @llucax in #647
- Add capacity, oldest and newest timestamp to moving window by @cwasicki in #598
- [ci] Add tests for non-native architectures by @tiyash-basu-frequenz in #622
- Bump actions/checkout from 3 to 4 by @dependabot in #655
- ci: Fix publishing of documentation on push by @llucax in #657
- Add a job to join the
nox
matrix jobs by @llucax in #661 - Add more formula tests for min and max functions by @matthias-wende-frequenz in #623
- Fixes on copy behavior in ring buffer window method by @cwasicki in #638
- Drop formula step Averager by @christianparpart in #645
- Refactor power distribution Result by @daniel-zullo-frequenz in #659
- Adjust the glossary to 80 columns by @llucax in #666
- Replace len magic with count_valid method in ring buffer and moving window by @cwasicki in #664
- Prepare release notes for the 1.0.0-rc1 release by @llucax in #674
- Clear the release notes by @llucax in #675
- Bump the optional group with 9 updates by @dependabot in #683
- Bump docker/setup-buildx-action from 2 to 3 by @dependabot in #680
- Bump docker/setup-qemu-action from 2 to 3 by @dependabot in #681
- Bump docker/build-push-action from 4 to 5 by @dependabot in #682
- Add mkdocs-macros plugin by @llucax in #667
- docs: Add an introduction to actors by @llucax in #679
- mkdocs: Fix numbered code annotations by @llucax in #684
- Add getting started tutorial and tutorial section by @matthias-wende-frequenz in #656
- Remove setitem magic from ring buffer by @cwasicki in #670
- Allow using macros in docstrings by @llucax in #687
- Rename datetime_to_index to to_internal_index by @cwasicki in #686
- Fix mermaid diagrams custom renderer by @llucax in #690
- Update obsolete comment about networkx-stubs by @daniel-zullo-frequenz in #685
- Move Actors documentation to the
actor
module by @llucax in #688 - Don't use generics unnecessarily by @llucax in #698
- Improve Actors documentation by @llucax in #689
- Increment port in microgrid API client tests by @llucax in #699
- Support int indices and slice index behavior in ring buffer and moving window by @cwasicki in #668
- Fix single element access for moving window by @cwasicki in #672
- Rename
Introduction
toUser Guide
and moveTutorials
next to it by @llucax in #701 - Bump types-pytz from 2023.3.1.0 to 2023.3.1.1 by @dependabot in #695
- Bump types-protobuf from 4.24.0.1 to 4.24.0.2 by @dependabot in #696
- Bump types-pyyaml from 6.0.12.11 to 6.0.12.12 by @dependabot in #694
- PowerDistributing: Add support for n:m relations in invs:bats by @Marenz in #660
- Fix bug in how failed batteries are tracked in PowerDistributor by @shsms in #705
- Update pydantic to v2.3 by @daniel-zullo-frequenz in #703
- Add option to impute missing values in window method for moving windo...