forked from frequenz-floss/frequenz-channels-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path__init__.py
More file actions
148 lines (120 loc) · 4.33 KB
/
Copy path__init__.py
File metadata and controls
148 lines (120 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# License: MIT
# Copyright © 2022 Frequenz Energy-as-a-Service GmbH
"""Frequenz Channels.
This package contains
[channel](https://en.wikipedia.org/wiki/Channel_(programming)) implementations.
<!-- For the full documentation and user guide please visit the [project's
website](https://frequenz-floss.github.io/frequenz-channels-python/) -->
Base classes:
* [Receiver][frequenz.channels.Receiver]: An object that can wait for and
consume messages from a channel.
* [Sender][frequenz.channels.Sender]: An object that can send messages to
a channel.
Channels:
* [Anycast][frequenz.channels.Anycast]: A channel that supports multiple
senders and multiple receivers. A message sent through a sender will be
received by exactly one receiver.
* [Broadcast][frequenz.channels.Broadcast]: A channel to broadcast messages
from multiple senders to multiple receivers. Each message sent through any of
the senders is received by all of the receivers.
Utilities to work with channels:
* [merge][frequenz.channels.merge]: Merge messages coming from multiple receivers into
a single stream.
* [select][frequenz.channels.select]: Iterate over the messages of all
[receivers][frequenz.channels.Receiver] as new messages become available.
* [LatestValueCache][frequenz.channels.LatestValueCache]: A cache that stores
the latest value in a receiver, providing a way to look up the latest value in
a stream, without having to wait, as long as there has been one value
received.
Exception classes:
* [Error][frequenz.channels.Error]: Base class for all errors in this
library.
* [ChannelError][frequenz.channels.ChannelError]: Base class for all errors
related to channels.
* [ChannelClosedError][frequenz.channels.ChannelClosedError]: Error raised when
trying to operate (send, receive, etc.) through a closed channel.
* [SenderError][frequenz.channels.SenderError]: Base class for all errors
related to senders.
* [ReceiverError][frequenz.channels.ReceiverError]: Base class for all errors
related to receivers.
* [ReceiverStoppedError][frequenz.channels.ReceiverStoppedError]: A receiver
stopped producing messages.
* [SelectError][frequenz.channels.SelectError]: Base class for all errors
related to [select][frequenz.channels.select].
* [UnhandledSelectedError][frequenz.channels.UnhandledSelectedError]: An error
raised by [select][frequenz.channels.select] that was not handled by the
user.
Extra utility receivers:
* [Event][frequenz.channels.event.Event]: A receiver that generates a message when
an event is set.
* [FileWatcher][frequenz.channels.file_watcher.FileWatcher]: A receiver that
generates a message when a file is added, modified or deleted.
* [Timer][frequenz.channels.timer.Timer]: A receiver that generates a message after a
given amount of time.
"""
from ._anycast import Anycast
from ._broadcast import Broadcast, BroadcastChannel, BroadcastReceiver, BroadcastSender
from ._exceptions import ChannelClosedError, ChannelError, Error
from ._generic import (
ChannelMessageT,
ErroredChannelT_co,
MappedMessageT_co,
ReceiverMessageT_co,
SenderMessageT_co,
SenderMessageT_contra,
)
from ._latest_value_cache import LatestValueCache
from ._merge import Merger, merge
from ._oneshot import OneshotChannel, OneshotReceiver, OneshotSender
from ._receiver import Receiver, ReceiverError, ReceiverStoppedError
from ._select import (
Selected,
SelectError,
UnhandledSelectedError,
select,
selected_from,
)
from ._sender import (
CloneableSender,
CloneableSubscribableSender,
Sender,
SenderClosedError,
SenderError,
SubscribableSender,
)
__all__ = [
"Anycast",
"Broadcast",
"BroadcastChannel",
"BroadcastReceiver",
"BroadcastSender",
"ChannelClosedError",
"ChannelError",
"ChannelMessageT",
"CloneableSender",
"CloneableSubscribableSender",
"Error",
"ErroredChannelT_co",
"LatestValueCache",
"MappedMessageT_co",
"Merger",
"OneshotChannel",
"OneshotReceiver",
"OneshotSender",
"Receiver",
"ReceiverError",
"ReceiverMessageT_co",
"ReceiverStoppedError",
"SelectError",
"Selected",
"Sender",
"SenderClosedError",
"SenderError",
"SenderMessageT_co",
"SenderMessageT_contra",
"SubscribableSender",
"UnhandledSelectedError",
"merge",
"select",
"selected_from",
]