Frequenz-channels

Latest version: v1.0.1

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

Scan your dependencies

Page 1 of 3

1.0.1

Frequenz channels Release Notes

Enhancements

- The API documentation now shows the type of symbol in the table of contents.

Bug Fixes

- Fix logger for the `Broadcast` channel (the log messages were missing the level, timestamp, etc.).


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/291
* Update project status classifier by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/292
* Bump the required group with 7 updates by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/293
* Bump the required group with 4 updates by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/294
* Fix the logger for the `Broadcast` channel by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/295
* Fix the CI and add the symbol type to the docs ToC by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/298


**Full Changelog**: https://github.com/frequenz-floss/frequenz-channels-python/compare/v1.0.0...v1.0.1

1.0.0

Frequenz channels Release Notes

Summary

This is the first stable release of the Frequenz channels library.

If you are **upgrading from the previous 1.0.0 pre-releases**, please look into the release notes for those versions to see the changes and upgrade instructions:

1.0.0rc.1

Frequenz channels Release Notes

Summary

This is the first release candidate for version 1.0. It includes few new features and a lot of cleanups and API improvements and polishing. Because of this, there are a lot of breaking changes too, but they should be easy to fix, as they ae mostly renames and reorganizations.

We hope this is the final pre-release before the final 1.0 release, and we don't expect to introduce any further breaking changes. Because of this we encourage you to test it and report any issues you find. You can also use a version constraint like `>= 1.0.0-rc.1, < 2.0.0` as the final version should be compatible.

Upgrading

* `Anycast`

- `__init__`: The `maxsize` argument was renamed to `limit` and made keyword-only and a new keyword-only `name` argument was added.

You should instantiate using `Anycast(name=..., limit=...)` (or `Anycast(name=...)` if the default `limit` is enough) instead of `Anycast(...)` or `Anycast(maxsize=...)`.

- `new_sender` and `new_receiver`: They now return a base `Sender` and `Receiver` class (respectively) instead of a channel-specific `Sender` or `Receiver` subclass.

This means users now don't have access to the internals to the channel-specific `Sender` and `Receiver` subclasses.

* `Broadcast`

- `__init__`: The `name` argument was made optional and keyword-only; `resend_latest` was also made keyword-only. If a `name` is not specified, it will be generated from the `id()` of the instance.

You should instantiate using `Broadcast(name=name, resend_latest=resend_latest)` (or `Broadcast()` if the defaults are enough) instead of `Broadcast(name)` or `Broadcast(name, resend_latest)`.

- `new_receiver`: The `maxsize` argument was renamed to `limit` and made keyword-only; the `name` argument was also made keyword-only. If a `name` is not specified, it will be generated from the `id()` of the instance instead of a random UUID.

You should use `.new_receiver(name=name, limit=limit)` (or `.new_receiver()` if the defaults are enough) instead of `.new_receiver(name)` or `.new_receiver(name, maxsize)`.

- `new_sender` and `new_receiver` now return a base `Sender` and `Receiver` class (respectively) instead of a channel-specific `Sender` or `Receiver` subclass.

This means users now don't have access to the internals to the channel-specific `Sender` and `Receiver` subclasses.

* `Event`

- `__init__`: The `name` argument was made keyword-only. The default was changed to a more readable version of `id(self)`.

You should instantiate using `Event(name=...)` instead of `Event(...)`.

- Moved from `frequenz.channels.util` to `frequenz.channels.event`.

* `FileWatcher`

- Moved from `frequenz.channels.util` to `frequenz.channels.file_watcher`.

- Support classes are no longer nested inside `FileWatcher`. They are now top-level classes within the new `frequenz.channels.file_watcher` module (e.g., `frequenz.channels.util.FileWatcher.EventType` -> `frequenz.channels.file_watcher.EventType`, `frequenz.channels.util.FileWatcher.Event` -> `frequenz.channels.file_watcher.Event`).

* `Receiver`

- The `map()` function now takes a positional-only argument, if you were using `receiver.map(call=fun)` you should replace it with `receiver.map(func)`.

* `SelectError` now inherits from `channels.Error` instead of `BaseException`, so you should be able to catch it with `except Exception:` or `except channels.Error:`.

* `Selected`

- The `value` property was renamed to `message`.
- `was_stopped` is now a property, you need to replace `selected.was_stopped()` with `selected.was_stopped`.

* `Sender`

- The `send` method now takes a positional-only argument, if you were using `sender.send(msg=message)` you should replace it with `sender.send(message)`.

* `Timer` and support classes

- Moved from `frequenz.channels.util` to `frequenz.channels.timer`.

* All exceptions that took `Any` as the `message` argument now take `str` instead.

If you were passing a non-`str` value to an exception, you should convert it using `str(value)` before passing it to the exception.

* The following symbols were moved to the top-level `frequenz.channels` package:

- `Selected`
- `SelectError`
- `UnhandledSelectedError`
- `select`
- `selected_from`

Removals

* `Bidirectional`

This channel was removed as it is not recommended practice and was a niche use case. If you need to use it, you can set up two channels or copy the `Bidirectional` class from the previous version to your project.

* `Merge`

Replaced by the new `merge()` function. When replacing `Merge` with `merge()` please keep in mind that this new function will raise a `ValueError` if no receivers are passed to it.

Please note that the old `Merge` class is still also available but it was renamed to `Merger` to avoid confusion with the new `merge()` function, but it is only present for typing reasons and should not be used directly.

* `MergeNamed`

This class was redundant, use either the new `merge()` function or `select()` instead.

* `Peekable`

This class was removed because it was merely a shortcut to a receiver that caches the last message received. It did not fit the channel abstraction well and was infrequently used.

You can replace it with a task that receives and retains the last message.

* `Broadcast.new_peekable()`

This was removed alongside `Peekable`.

* `Receiver.into_peekable()`

This was removed alongside `Peekable`.

* `ReceiverInvalidatedError`

This was removed alongside `Peekable` (it was only raised when using a `Receiver` that was converted into a `Peekable`).

* `SelectErrorGroup` was removed, a Python built-in `BaseExceptionGroup` is raised instead in case of unexpected errors while finalizing a `select()` loop, which will be automatically converted to a simple `ExceptionGroup` when no exception in the groups is a `BaseException`.

- `Timer`:

- `periodic()` and `timeout()`: The names proved to be too confusing, please use `Timer()` and pass a missing ticks policy explicitly instead. In general you can update your code by doing:

* `Timer.periodic(interval)` / `Timer.periodic(interval, skip_missed_ticks=True)` -> `Timer(interval, TriggerAllMissed())`
* `Timer.periodic(interval, skip_missed_ticks=False)` -> `Timer(interval, SkipMissedAndResync())`
* `Timer.timeout(interval)` -> `Timer(interval, SkipMissedAndDrift())`

* `util`

The entire `util` package was removed and its symbols were either moved to the top-level package or to their own public modules (as noted above).

New Features

* A new User's Guide was added to the documentation and the documentation was greately improved in general.

* A new `merge()` function was added to replace `Merge`.

* `Anycast`

- The following new read-only properties were added:

- `name`: The name of the channel.
- `limit`: The maximum number of messages that can be sent to the channel.
- `is_closed`: Whether the channel is closed.

- A more useful implementation of `__str__ and `__repr__` were added for the channel and its senders and receivers.

- A warning will be logged if senders are blocked because the channel buffer is full.

* `Bidirectional`

- The following new read-only properties were added:

- `name`: The name of the channel (read-only).
- `is_closed`: Whether the channel is closed (read-only).

- A more useful implementation of `__str__ and `__repr__` were added for the channel and the client and service handles.

* `Broadcast`

- The following new read-only properties were added:

- `name`: The name of the channel.
- `is_closed`: Whether the channel is closed.

- A more useful implementation of `__str__ and `__repr__` were added for the channel and the client and service handles.

* `FileWatcher`

- A more useful implementation of `__str__ and `__repr__` were added.

* `Peekable`

- A more useful implementation of `__str__ and `__repr__` were added.

* `Receiver`

- `map()`: The returned map object now has a more useful implementation of `__str__ and `__repr__`.

Improvements

* `Receiver`, `merge`/`Merger`, `Error` and its derived classes now use a covariant generic type, which allows the generic type to be broader than the actual type.

* `Sender` now uses a contravariant generic type, which allows the generic type to be narrower than the required type.

* `ChannelError` is now generic, so when accessing the `channel` attribute, the type of the channel is preserved.

* The generated documentation / website was greatly improved, both in content and looks.

Bug Fixes

* `Timer`: Fix bug that was causing calls to `reset()` to not reset the timer, if the timer was already being awaited.


What's Changed
* Update to repo-config v0.7.2 by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/230
* Bump the optional group with 5 updates by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/229
* Clean up and improve the code and public interface by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/231
* Revamp modules structure by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/235
* Replace `Merge` and `MergeNamed` with `merge()` by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/238
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/240
* Fix timer `reset()` while it is being waited on by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/241
* Fix typo in comment by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/247
* Make `Merge` public again and rename it to `Merger` by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/243
* Add some useful mkdocs extensions by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/244
* dependabot/pip/optional 62c46a5f26 by Marenz in https://github.com/frequenz-floss/frequenz-channels-python/pull/255
* Add a User Guide by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/245
* Bump actions/setup-python from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/257
* Bump the optional group with 10 updates by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/261
* Support broadening or narrowing of types in `Receiver`s and `Sender`s by shsms in https://github.com/frequenz-floss/frequenz-channels-python/pull/262
* `Timer`: Remove `periodic()` and `timeout()` by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/264
* Bump actions/cache from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/270
* Bump black from 23.12.1 to 24.1.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/269
* Bump flake8 from 6.1.0 to 7.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/267
* Bump types-markdown from 3.5.0.3 to 3.5.0.20240129 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/266
* Bump the optional group with 5 updates by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/265
* Bump actions/labeler from 4.3.0 to 5.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/259
* Add a tip about the returned receiver type for `map()` by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/271
* Remove boilerplate from examples in the user guide by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/276
* Bump the optional group with 9 updates by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/277
* Bump actions/upload-artifact from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/258
* Bump pytest from 7.4.4 to 8.1.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/278
* Use the new set of labels by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/274
* Enable and use GitHub Alert syntax for admonitions by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/275
* Improve documentation by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/279
* Rename "value" to "message" and other minor breaking changes by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/281
* Improve `select()`-related exceptions by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/283
* Improve generics usage by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/282
* Prepare release notes for 1.0.0-rc.1 by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/284


**Full Changelog**: https://github.com/frequenz-floss/frequenz-channels-python/compare/v1.0.0-beta.1...v1.0.0-rc.1

1.0.0beta.2

Frequenz channels Release Notes

Summary

This release only have a CI fix that prevented `v1.0.0-beta.1` to be automatically published. There are no user-visible changes.

What's Changed

* Update to repo-config v0.7.2 by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/230

**Full Changelog**: https://github.com/frequenz-floss/frequenz-channels-python/compare/v1.0.0-beta.1...v1.0.0-beta.2

1.0.0beta.1

Frequenz channels Release Notes

Summary

The `Timer` now can be started with a delay and some channel attributes were made private.

Upgrading

* `Anycast`

- The following public properties were removed (made private): `limit`, `closed`, `deque`, `send_cv`, `recv_cv`.

* `Broadcast`

- The following public properties were removed (made private): `name`, `closed`, `recv_cv`, `receivers`.

New Features

* The arm64 architecture is now officially supported.

* The documentation was improved to:

- Show signatures with types.
- Show the inherited members.
- Documentation for pre-releases are now published.
- Show the full tag name as the documentation version.
- All development branches now have their documentation published (there is no `next` version anymore).
- Fix the order of the documentation versions.

* `Broadcast`

- Added a `resend_latest` read-write property to get/set whether the latest message should be resent to new receivers.

* `Timer`

- `Timer()`, `Timer.timeout()`, `Timer.periodic()` and `Timer.reset()` now take an optional `start_delay` option to make the timer start after some delay.

This can be useful, for example, if the timer needs to be *aligned* to a particular time. The alternative to this would be to `sleep()` for the time needed to align the timer, but if the `sleep()` call gets delayed because the event loop is busy, then a re-alignment is needed and this could go on for a while. The only way to guarantee a certain alignment (with a reasonable precision) is to delay the timer start.

What's Changed
* Migrate to use repo-config by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/124
* Bump pylint from 2.17.3 to 2.17.4 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/125
* Bump pytest-mock from 3.10.0 to 3.11.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/126
* Bump mkdocs-material from 9.1.17 to 9.1.18 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/128
* Bump pytest from 7.3.1 to 7.4.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/127
* Bump mypy from 1.2.0 to 1.4.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/129
* Bump hypothesis from 6.80.0 to 6.80.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/130
* Bump actions/labeler from 4.2.0 to 4.3.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/131
* Bump black from 23.3.0 to 23.7.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/132
* Bump hypothesis from 6.80.1 to 6.81.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/133
* Bump pytest-asyncio from 0.21.0 to 0.21.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/135
* Improve documentation by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/136
* Bump sybil from 5.0.2 to 5.0.3 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/137
* Bump hypothesis from 6.81.1 to 6.81.2 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/138
* Bump mkdocs-material from 9.1.18 to 9.1.19 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/140
* Fix typo recever -> receiver by Marenz in https://github.com/frequenz-floss/frequenz-channels-python/pull/139
* Bump hypothesis from 6.81.2 to 6.82.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/141
* Bump pylint from 2.17.4 to 2.17.5 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/143
* Bump mkdocs-material from 9.1.19 to 9.1.21 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/144
* Update to repo-config 0.4.0 by Marenz in https://github.com/frequenz-floss/frequenz-channels-python/pull/142
* Bump hypothesis from 6.82.0 to 6.82.2 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/147
* Add optional start delay to `Timer` by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/145
* Bump hypothesis from 6.82.2 to 6.82.3 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/148
* Bump mypy from 1.4.1 to 1.5.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/149
* Bump hypothesis from 6.82.3 to 6.82.4 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/150
* Bump mypy from 1.5.0 to 1.5.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/152
* Bump hypothesis from 6.82.4 to 6.82.5 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/155
* Bump hypothesis from 6.82.5 to 6.82.6 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/157
* Bump mkdocs-material from 9.1.21 to 9.2.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/158
* Bump mkdocs-material from 9.2.1 to 9.2.3 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/159
* Update watchfiles requirement from <0.20.0,>=0.15.0 to >=0.15.0,<0.21.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/160
* Bump mkdocs-material from 9.2.3 to 9.2.5 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/161
* Bump hypothesis from 6.82.6 to 6.84.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/171
* Bump mkdocstrings[python] from 0.22.0 to 0.23.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/167
* Bump mkdocs-material from 9.2.5 to 9.2.8 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/172
* Bump hypothesis from 6.84.0 to 6.84.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/173
* Bump mkdocs-section-index from 0.3.5 to 0.3.6 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/174
* Bump actions/checkout from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/170
* Bump pytest from 7.4.0 to 7.4.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/169
* Bump hypothesis from 6.84.1 to 6.84.2 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/175
* Replace obsolete types by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-channels-python/pull/176
* Upgrade to repo-config v0.5.2 by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/153
* Bump mkdocs-literate-nav from 0.6.0 to 0.6.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/179
* Bump pytest from 7.4.1 to 7.4.2 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/178
* Bump mkdocs-material from 9.2.8 to 9.3.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/183
* Bump hypothesis from 6.84.2 to 6.84.3 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/181
* Bump black from 23.7.0 to 23.9.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/180
* Bump mkdocs-section-index from 0.3.6 to 0.3.7 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/184
* docs: Improve README and intro by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/189
* Document class and module attributes by daniel-zullo-frequenz in https://github.com/frequenz-floss/frequenz-channels-python/pull/185
* Bump hypothesis from 6.84.3 to 6.86.2 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/192
* Bump mkdocs-material from 9.3.1 to 9.3.2 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/191
* Bump hypothesis from 6.86.2 to 6.87.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/200
* Bump pylint from 2.17.5 to 2.17.7 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/201
* Bump hypothesis from 6.87.1 to 6.87.3 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/206
* Make internal variable names private by shsms in https://github.com/frequenz-floss/frequenz-channels-python/pull/213
* Bump hypothesis from 6.87.3 to 6.88.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/210
* Update watchfiles requirement from <0.21.0,>=0.15.0 to >=0.15.0,<0.22.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/211
* Bump mypy from 1.5.1 to 1.6.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/208
* Bump mypy from 1.6.0 to 1.6.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/216
* Bump pytest from 7.4.2 to 7.4.3 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/220
* Bump hypothesis from 6.88.0 to 6.88.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/214
* Bump pytest-mock from 3.11.1 to 3.12.0 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/217
* Bump mkdocs-section-index from 0.3.7 to 0.3.8 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/196
* Bump black from 23.9.1 to 23.10.1 by dependabot in https://github.com/frequenz-floss/frequenz-channels-python/pull/219
* Make `resend_latest` a public attribute for `Broadcast` channels by shsms in https://github.com/frequenz-floss/frequenz-channels-python/pull/221
* Update to repo-config v0.7.1 by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/223


**Full Changelog**: https://github.com/frequenz-floss/frequenz-channels-python/compare/v0.16.0...v1.0.0-beta.1

0.16.1

Frequenz Channels Release Notes

Bug Fixes

* `Timer`: Fix bug that was causing calls to `reset()` to not reset the timer, if the timer was already being awaited.


What's Changed
* Backport timer `reset()` fix by llucax in https://github.com/frequenz-floss/frequenz-channels-python/pull/246


**Full Changelog**: https://github.com/frequenz-floss/frequenz-channels-python/compare/v0.16.0...v0.16.1

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.