Releases: frequenz-floss/frequenz-channels-python
v0.14.0
Frequenz Channels Release Notes
Summary
The main change in this release is the revamp of exception handling in general. New exceptions were created and send()
now raises an exception too when it fails.
Hopefully they are now used much more uniformly across the whole library.
Upgrading
-
The
Sender.send()
method nowraise
s aSenderError
instead of returningFalse
. TheSenderError
will typically have aChannelClosedError
and the underlying reason as a chained exception. -
The
Receiver.ready()
method (and relatedreceive()
and__anext__
when used as an async iterator) nowraise
s aReceiverError
and in particular aReceiverStoppedError
when the receiver has no more messages to receive.Receiver.consume()
doesn't raise any exceptions.Receivers raising
EOFError
now raiseReceiverInvalidatedError
instead. -
For channels which senders raise an error when the channel is closed or which receivers stop receiving when the channel is closed, the
SenderError
andReceiverStoppedError
are chained with a__cause__
that is aChannelClosedError
with the channel that was closed. -
ChannelClosedError
now requires the argumentchannel
(before it was optional). -
Now exceptions are not raised in Receiver.ready() but in Receiver.consume() (receive() or the async iterator
anext
).
New Features
-
New exceptions were added:
-
Error
: A base exception from which all exceptions from this library inherit. -
SendError
: Raised for errors when sending messages. -
ReceiverError
: Raised for errors when receiving messages. -
ReceiverClosedError
: Raised when a receiver don't have more messages to receive. -
ReceiverInvalidatedError
: Raised when a receiver was invalidated (for example it was converted into aPeekable
).
-
What's Changed
- Clean release notes by @ela-kotulska-frequenz in #69
- Fix build badge by @leandro-lucarella-frequenz in #71
- Improve and add exceptions by @leandro-lucarella-frequenz in #61
- Make assert msg grammatically correct and less ambiguous by @mathias-baumann-frequenz in #74
- Finish release notes for v0.14.0 by @leandro-lucarella-frequenz in #80
New Contributors
- @mathias-baumann-frequenz made their first contribution in #74
Full Changelog: v0.13.0...v0.14.0
v0.13.0
Frequenz Channels Release Notes
New Features
- Add method to stop
Merge
andMergeNamed
.
What's Changed
- Clean release notes by @ela-kotulska-frequenz in #67
- Add stop method for MergeNamed and Merge channels by @ela-kotulska-frequenz in #68
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Frequenz Channels Release Notes
Summary
Upgrading
New Features
- Add method to stop Select.
Bug Fixes
- Deactivate Broadcast receivers that were transformed to peekable.
What's Changed
- Clear release notes by @leandro-lucarella-frequenz in #58
- Add method to stop Select by @ela-kotulska-frequenz in #63
- Add a private method to deactivate Broadcast receivers by @shsms in #64
- Update release notes by @ela-kotulska-frequenz in #65
New Contributors
- @ela-kotulska-frequenz made their first contribution in #63
Full Changelog: v0.11.0...v0.12.0
v0.11.0
Frequenz Channels Release Notes
Summary
The project has a new home!
https://frequenz-floss.github.io/frequenz-channels-python/
For now the documentation is pretty scarce but we will be improving it with time.
Upgrading (breaking changes)
-
You need to make sure to use timezone-aware
datetime
objects when using the timestamp returned byTimer
, Otherwise you will get an exception. -
Channels methods
get_receiver()
andget_sender()
have been renamed tonew_receiver()
andnew_sender()
respectively. This is to make it more clear that new objects are being created. -
The public API surface has been reduced considerably to make it more clear where to import symbols. You should update your imports. The new symbol locations are:
frequenz.channels.Anycast
frequenz.channels.Broadcast
frequenz.channels.Anycast
frequenz.channels.Bidirectional
frequenz.channels.Broadcast
frequenz.channels.Peekable
frequenz.channels.Receiver
frequenz.channels.Sender
frequenz.channels.util.Merge
frequenz.channels.util.MergeNamed
frequenz.channels.util.FileWatcher
frequenz.channels.util.Select
frequenz.channels.util.Timer
-
The class
BufferedReceiver
was removed because the interface was really intended for channel implementations. Users are not supposed to enqueue messages to receiver but just receive from them. If you used it you can implement it yourself. -
The class
BidirectionalHandle
was moved toBidirectional.Handle
. -
The class
EventType
was moved toFileWatcher.EventType
.
New Features
- Python 3.11 is now supported!
Bug Fixes
-
Broadcast
receivers now get cleaned up once they go out of scope. -
Timer
now returns timezone-awaredatetime
objects using UTC as timezone.
What's Changed
- Fix project URLs by @leandro-lucarella-frequenz in #18
- ci: Test also Python 3.11 pre-releases by @leandro-lucarella-frequenz in #19
- Remove
version:xxx
and addpart:select
andpart:receivers
labels by @leandro-lucarella-frequenz in #28 - Use MkDocs to build the documentation by @leandro-lucarella-frequenz in #25
- ci: Add contents permission to publish-docs by @leandro-lucarella-frequenz in #33
- ci: Update aliases when deploying with mike by @leandro-lucarella-frequenz in #38
- Add PyPI and Docs badges to README by @shsms in #34
- ci: Use the final Python 3.11 version by @leandro-lucarella-frequenz in #39
- docs: Replace the Home with the README by @leandro-lucarella-frequenz in #40
- Fix CONTRIBUTING headings by @leandro-lucarella-frequenz in #41
- Use "aware" datetimes by @leandro-lucarella-frequenz in #48
- Ensure deleted receivers get cleaned up by @shsms in #45
- Avoid dropping of messages after breaking from
Select
blocks by @shsms in #42 - Rename
get_{sender,receiver}
tonew_{sender,receiver}
by @leandro-lucarella-frequenz in #49 - Clean up public API by @leandro-lucarella-frequenz in #55
- FileWatcher: Don't type-check
changes
by @leandro-lucarella-frequenz in #56 - Add Python 3.11 support to RELEASE_NOTES by @leandro-lucarella-frequenz in #57
Full Changelog: v0.10.0...v0.11.0
v0.10.1
frequenz-channels
Release Notes
Summary
This is the first public open source release based on the internal SDK version v0.9.0. There are no breaking changes in this release, only changes to the project structure, metadata, and automation. Packages are also now uploaded to PyPI as frequenz-channels
, so this project now can be installed normally via pip
:
python -m pip install frequenz-channels
The GitHub issues were also improved, adding templates for reporting issues and requesting features. Users are also pointed to the Discussion forums when trying to open an issue if they have questions instead. Also many labels are assigned automatically on issue and pull request creation.
What's Changed
- Backport documentation generation to v0.10.x by @leandro-lucarella-frequenz in #35
Full Changelog: v0.10.0...v0.10.1
v0.10.0
frequenz-channels
Release Notes
Summary
This is the first public open source release based on the internal SDK version v0.9.0. There are no breaking changes in this release, only changes to the project structure, metadata, and automation. Packages are also now uploaded to PyPI as frequenz-channels
, so this project now can be installed normally via pip
:
python -m pip install frequenz-channels
The GitHub issues were also improved, adding templates for reporting issues and requesting features. Users are also pointed to the Discussion forums when trying to open an issue if they have questions instead. Also many labels are assigned automatically on issue and pull request creation.
What's Changed
- Add CODEOWNERS file by @leandro-lucarella-frequenz in #1
- Add issue templates and configure KeywordLabeler app by @leandro-lucarella-frequenz in #2
- Import channel implementations from Python SDK v0.9.0 by @shsms in #3
- ci: Add automatic pull request labeler by @leandro-lucarella-frequenz in #15
New Contributors
- @leandro-lucarella-frequenz made their first contribution in #1
- @shsms made their first contribution in #3
Full Changelog: https://github.com/frequenz-floss/frequenz-channels-python/commits/v0.10.0
v0.10.0-rc0
frequenz-channels
Release Notes
Summary
This is the first public open source release based on the internal SDK version v0.9.0. There are no breaking changes in this release, only changes to the project structure, metadata, and automation. Packages are also now uploaded to PyPI as frequenz-channels
, so this project now can be installed normally via pip
:
python -m pip install frequenz-channels
The GitHub issues were also improved, adding templates for reporting issues and requesting features. Users are also pointed to the Discussion forums when trying to open an issue if they have questions instead. Also many labels are assigned automatically on issue and pull request creation.
What's Changed
- Add CODEOWNERS file by @leandro-lucarella-frequenz in #1
- Add issue templates and configure KeywordLabeler app by @leandro-lucarella-frequenz in #2
- Import channel implementations from Python SDK v0.9.0 by @shsms in #3
- ci: Add automatic pull request labeler by @leandro-lucarella-frequenz in #15
New Contributors
- @leandro-lucarella-frequenz made their first contribution in #1
- @shsms made their first contribution in #3
Full Changelog: https://github.com/frequenz-floss/frequenz-channels-python/commits/v0.10.0-rc0