Releases: frequenz-floss/frequenz-channels-python
v1.10.0
Frequenz channels Release Notes
Summary
This release introduces the experimental GroupingLatestValueCache
and includes a couple of bug fixes.
New Features
- This release introduces the experimental
GroupingLatestValueCache
. It is similar to theLatestValueCache
, but accepts an additional key-function as an argument, which takes each incoming message and returns a key for that message. The latest value received for each unique key gets cached and is available to look up on-demand through acollections.abc.Mapping
interface.
Bug Fixes
-
Any open calls to
NopReceiver.ready()
now return as soon as the receiver is closed. -
The
__str__
representation of broadcast receivers now include the receiver's name.
What's Changed
- Clear release notes by @shsms in #421
- Bump the minor group with 3 updates by @dependabot in #423
- Bump the patch group with 6 updates by @dependabot in #422
- Support grouping by keys in
LatestValueCache
by @shsms in #424 - LatestValueCache: Expose keys for which messages have been received by @shsms in #425
- Implement the experimental
GroupingLatestValueCache
by @shsms in #428 - Fix NopReceiver.ready() to properly terminate when receiver is closed. by @ela-kotulska-frequenz in #427
- Use asyncio.Event instead of asyncio.Future in NopReceiver by @ela-kotulska-frequenz in #429
- Implement the
Mapping
interface forGroupingLatestValueCache
by @shsms in #430 - Improve
GroupingLatestValueCache
by @llucax in #433 - Bump pytest-asyncio from 0.26.0 to 1.0.0 by @dependabot in #436
- Update watchfiles requirement from <1.1.0,>=0.15.0 to >=0.15.0,<1.2.0 by @dependabot in #437
- Bump the patch group with 7 updates by @dependabot in #434
- Include receiver name in its string representation by @shsms in #439
- Prepare for release of v1.10 by @shsms in #440
Full Changelog: v1.9.0...v1.10.0
v1.9.0
Frequenz channels Release Notes
New Features
-
An experimental
NopReceiver
implementation has been added, which can be used as a place-holder receiver that never receives a message. -
The experimental
OptionalReceiver
has been deprecated. It will be removed with the next major release. It can be replaced with aNopReceiver
as follows:opt_recv: Receiver[T] | None recv: Receiver[T] = NopReceiver[T]() if opt_recv is None else opt_recv
What's Changed
- Reset release notes by @ela-kotulska-frequenz in #413
- Bump pydoclint from 0.6.5 to 0.6.6 by @dependabot in #416
- Bump setuptools from 78.1.0 to 80.1.0 by @dependabot in #417
- Bump the patch group with 3 updates by @dependabot in #414
- Bump the minor group across 1 directory with 6 updates by @dependabot in #418
- Implement a
NopReceiver
by @shsms in #419 - Prepare release notes for v1.9.0 by @shsms in #420
Full Changelog: v1.8.0...v1.9.0
v1.8.0
Frequenz channels Release Notes
Summary
This release focuses on improving async
patterns and flexibility in the channel's library.
Upgrading
-
Some minimal dependencies have been bumped, so you might need to adjust your dependencies accordingly.
-
Broadcast
andAnycast
channels methodclose()
was renamed toaclose()
to follow Python's convention. With this change now channels can be used with theaclosing()
context manager for example.The name
close()
is still available for backwards compatibility, but it will be removed in the next major release, so it is recommended to switch toaclose()
.
New Features
- Add a new
OptionalReceiver
class that wraps an optional underlying receiver, allowing for indefinite waiting when no receiver is set. - Improve documentation of the
frequenz.channels.experimental.Pipe
What's Changed
- Clear release notes by @shsms in #404
- Bump the patch group with 2 updates by @dependabot in #400
- Bump flake8 from 7.1.2 to 7.2.0 in the minor group by @dependabot in #401
- Bump pydoclint from 0.6.0 to 0.6.4 by @dependabot in #402
- Update to repo-config v0.13 by @llucax in #398
- Bump the repo-config group with 2 updates by @dependabot in #392
- Bump the mkdocstrings group with 2 updates by @dependabot in #393
- Bump hypothesis from 6.130.6 to 6.130.10 in the patch group by @dependabot in #406
- Rename
close()
toaclose()
inBroadcast
andAnycast
by @llucax in #408 - Update docs and add link to experimental package guidelines by @llucax in #410
- Add OptionalReceiver for handling unset receivers by @ela-kotulska-frequenz in #409
- Improve documentation of the
frequenz.channels.experimental.Pipe
by @ela-kotulska-frequenz in #407 - Prepare release notes for the release by @ela-kotulska-frequenz in #412
Full Changelog: v1.7.0...v1.8.0
v1.7.0
Frequenz channels Release Notes
New Features
- An optional
tick_at_start
parameter has been added toTimer
. WhenTrue
, the timer will trigger immediately after starting, and then wait for the interval before triggering again.
Bug Fixes
- Fix unterminated code block in a documentation example for
WithPrevious
.
What's Changed
- Bump black from 24.10.0 to 25.1.0 by @dependabot in #371
- Bump the required group with 6 updates by @dependabot in #369
- Bump isort from 5.13.2 to 6.0.0 by @dependabot in #370
- An optional
tick_at_start
parameter has been added toTimer
by @shsms in #372 - Bump nox from 2024.10.9 to 2025.2.9 by @dependabot in #376
- Exclude repo-config from dependabot grouping by @llucax in #383
- Use a wildcard to exclude repo-config from dependabot groups by @llucax in #385
- Use a new grouping strategy for dependabot updates by @llucax in #389
- Bump the patch group with 7 updates by @dependabot in #390
- Bump types-markdown from 3.7.0.20241204 to 3.7.0.20250322 by @dependabot in #395
- Bump setuptools from 75.8.0 to 78.1.0 by @dependabot in #396
- Bump the minor group with 4 updates by @dependabot in #391
- Fix unterminated code block in a documentation example by @llucax in #399
- Prepare for v1.7.0 by @shsms in #403
Full Changelog: v1.6.1...v1.7.0
v1.6.1
v1.6.0
Frequenz channels Release Notes
New Features
- Added a
Receiver.close()
method for closing just a receiver. Also implemented it for all theReceiver
implementations in this library.
What's Changed
- Clear release notes by @shsms in #364
- Add a
Receiver.close()
method by @shsms in #348 - Prepare for release v1.6.0 by @shsms in #366
Full Changelog: v1.5.0...v1.6.0
v1.5.0
Frequenz channels Release Notes
New Features
- Added support for disabling the overflow-warning log messagess in broadcast receivers, through the
warn_on_overflow
parameter onBroadcast.new_receiver()
calls.
What's Changed
- Clear release notes by @llucax in #360
- Support for disabling overflow-warning logs in broadcast receivers by @shsms in #329
- Bump the required group with 7 updates by @dependabot in #362
- Prepare for release v1.5.0 by @shsms in #363
Full Changelog: v1.4.0...v1.5.0
v1.4.0
Frequenz channels Release Notes
New Features
Experimental
- A new composable predicate,
WithPrevious
, to filter messages based on the previous message.
What's Changed
- Clear release notes by @llucax in #338
- Bump the required group across 1 directory with 9 updates by @dependabot in #337
- Add useful predicates to filter based on the previous value by @llucax in #341
- Prepare release notes for v1.4.0 by @llucax in #346
- Use a
float
for the tolerance in the timer tests by @llucax in #347 - Update watchfiles requirement from <0.25.0,>=0.15.0 to >=0.15.0,<1.1.0 by @dependabot in #352
- Bump setuptools from 68.1.0 to 75.6.0 by @dependabot in #351
- Bump the required group with 7 updates by @dependabot in #349
- Bump setuptools-scm[toml] from 7.1.0 to 8.1.0 by @dependabot in #350
- Fix documentation Broadcast -> Anycast by @Marenz in #358
- Rename
OnlyIfPrevious
toWithPrevious
by @llucax in #357 - Update files using repo-config-0.11 by @llucax in #353
- Bump types-markdown from 3.7.0.20240822 to 3.7.0.20241204 by @dependabot in #359
Full Changelog: v1.3.0...v1.4.0
v1.3.0
Frequenz channels Release Notes
New Features
-
There is a new
Receiver.triggered
method that can be used instead ofselected_from
:async for selected in select(recv1, recv2): if recv1.triggered(selected): print('Received from recv1:', selected.message) if recv2.triggered(selected): print('Received from recv2:', selected.message)
Receiver.filter()
can now properly handleTypeGuard
s. The resulting receiver will now have the narrowed type when aTypeGuard
is used.
Bug Fixes
- Fixed a memory leak in the timer.
What's Changed
- Clear release notes by @llucax in #325
- Fix file watcher integration tests by @llucax in #326
- Bump the required group with 8 updates by @dependabot in #327
- Bump mkdocs-include-markdown-plugin from 6.2.2 to 7.0.0 by @dependabot in #331
- Add a
Receiver.triggered
method by @shsms in #328 - Handle type guards properly in
Receiver.filter()
by @llucax in #332 - Prepare release notes for v1.3.0 by @llucax in #333
- Fix memory leak in the timer by @shsms in #334
- Prepare for v1.2.1 by @shsms in #335
- Merge v1.2.1 into v1.x.x by @llucax in #336
Full Changelog: v1.2.0...v1.3.0