Skip to content

Releases: frequenz-floss/frequenz-channels-python

v0.14.0

29 Mar 10:59
v0.14.0
6c164c4
Compare
Choose a tag to compare

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 now raises a SenderError instead of returning False. The SenderError will typically have a ChannelClosedError and the underlying reason as a chained exception.

  • The Receiver.ready() method (and related receive() and __anext__ when used as an async iterator) now raises a ReceiverError and in particular a ReceiverStoppedError when the receiver has no more messages to receive.

    Receiver.consume() doesn't raise any exceptions.

    Receivers raising EOFError now raise ReceiverInvalidatedError 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 and ReceiverStoppedError are chained with a __cause__ that is a ChannelClosedError with the channel that was closed.

  • ChannelClosedError now requires the argument channel (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 a Peekable).

What's Changed

New Contributors

Full Changelog: v0.13.0...v0.14.0

v0.13.0

27 Jan 14:25
v0.13.0
d6d717b
Compare
Choose a tag to compare

Frequenz Channels Release Notes

New Features

  • Add method to stop Merge and MergeNamed.

What's Changed

Full Changelog: v0.12.0...v0.13.0

v0.12.0

23 Jan 14:19
v0.12.0
921a3a2
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v0.11.0...v0.12.0

v0.11.0

23 Nov 14:36
v0.11.0
61754af
Compare
Choose a tag to compare

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 by Timer, Otherwise you will get an exception.

  • Channels methods get_receiver() and get_sender() have been renamed to new_receiver() and new_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 to Bidirectional.Handle.

  • The class EventType was moved to FileWatcher.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-aware datetime objects using UTC as timezone.

What's Changed

Full Changelog: v0.10.0...v0.11.0

v0.10.1

04 Nov 10:35
v0.10.1
a9e3d63
Compare
Choose a tag to compare

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

Full Changelog: v0.10.0...v0.10.1

v0.10.0

23 Sep 13:04
v0.10.0
2f38f34
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: https://github.com/frequenz-floss/frequenz-channels-python/commits/v0.10.0

v0.10.0-rc0

23 Sep 13:01
v0.10.0-rc0
2f38f34
Compare
Choose a tag to compare
v0.10.0-rc0 Pre-release
Pre-release

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

New Contributors

Full Changelog: https://github.com/frequenz-floss/frequenz-channels-python/commits/v0.10.0-rc0