一款简约的信号系统。
Project description
CheeseSignal
一款简单的信号系统。
安装
系统要求:Linux。
Python要求:目前仅保证支持3.11及以上版本的Python,新版本会优先支持Python的最新稳定版本。
pip install CheeseSignal
使用
使用方式较为简单,通过函数或装饰件连接至某个信号,随后等待信号发送。
import time
from CheeseSignal import signal
signal = Signal()
def receiver1(*args, **kwargs):
print(arg, kwargs)
signal.connect(receiver1)
@signal.connect()
def receiver2(*args, **kwargs):
return args, kwargs
while True:
print(signal.send('Hello', 'World', {
'Cheese': 'Signal'
}))
time.sleep(1)
接口文档
class Signal
from CheeseSignal import Signal
signal = Signal()
self.receivers: List[Receiver]
【只读】 接收器的列表,按注册顺序排序。
self.total_send_num: int
【只读】 总计信号发送次数。
def connect(self, fn: Callable, *, expected_receive_num: int = 0, auto_remove: bool = False)
通过函数注册响应函数。
-
参数
-
expected_receive_num: 期望接受信号的次数,超过该次数则不再响应信号;0为无限次。 -
auto_remove: 是否自动删除响应次数超出期望次数的接收器。
-
-
报错
ValueError: 已有重复的函数接收器。
def connect(self, *, expected_receive_num: int = 0, auto_remove: bool = False)
通过装饰器注册响应函数。
-
参数
-
expected_receive_num: 期望接受信号的次数,超过该次数则不再响应信号;0为无限次。 -
auto_remove: 是否自动删除响应次数超出期望次数的接收器。
-
-
报错
ValueError: 已有重复的函数接收器。
def send(self, *args, **kwargs) -> List[Any]
发送信号。
async def async_send(self, *args, **kwargs) -> List[Any]
在协程环境中发送信号,并请保证所有接收函数都是协程函数。
import asyncio
from CheeseSignal import Signal
async def run_asyncio():
signal = Signal()
await signal.async_send('data1', 'data2', **{
'key1': 'value1',
'key2': 'value2'
})
asyncio.run(run_asyncio())
def disconnect(self, fn: Callable)
断开接收器。
from CheeseSignal import Signal
def receiver(*args, **kwargs):
...
signal = Signal()
signal.connect(receiver)
signal.disconnect(receiver)
-
报错
ValueError: 未找到该函数的接收器。
def reset(self)
重置统计数据;所有的接收器的统计数据也会同步清空。
def disconnect_all(self)
断开所有接收器。
def get_receiver(self, fn: Callable) -> Receiver
获取接收器。
from CheeseSignal import Signal
def receiver(*args, **kwargs):
...
signal = Signal()
signal.connect(receiver)
print(signal.get_receiver(receiver))
-
报错
ValueError: 未找到该函数的接收器。
def index(self, fn: Callable) -> index
获取接收器的顺序位置。
from CheeseSignal import Signal
def receiver(*args, **kwargs):
...
signal = Signal()
signal.connect(receiver)
print(signal.index(receiver))
-
报错
ValueError: 未找到该函数的接收器。
class Receiver
正常使用并不需要手动创建该类。
from CheeseSignal import Receiver
def __init__(self, fn: Callable, *, expected_receive_num: int, auto_remove: bool)
-
参数
-
expected_receive_num: 期望接受信号的次数,超过该次数则不再响应信号;0为无限次。 -
auto_remove: 是否自动删除响应次数超出期望次数的接收器。
-
self.expected_receive_num: int
期望接受信号的次数,超过该次数则不再响应信号;0为无限次。
self.auto_remove: bool
是否自动删除响应次数超出期望次数的接收器。
self.total_receive_num: int
【只读】 总计信号接受次数。
self.remaining_receive_num: int
【只读】 剩余的期望信号接受次数;返回为-1代表无期望信号接受次数。
self.receivable: bool
【只读】 当前Receiver是否处于可接收信号状态。
self.unreceivable: bool
【只读】 当前Receiver是否处于不可接收信号状态。
def reset(self)
重统计置数据。
在有期望信号接受次数的情况下,auto_remove is False的接收器会重新开始计数并接收信号。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cheesesignal-1.0.0.tar.gz.
File metadata
- Download URL: cheesesignal-1.0.0.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f1c582d01fb8518ac5e165f095856059e7fac1eb49a02aedaa244ccc1035406
|
|
| MD5 |
92c9309adf29df909486f96b4b223088
|
|
| BLAKE2b-256 |
38cab2bd7bf4ccfc03e380cac01fbceae3f88eb3c7b6c9835c719d3c7c6e1f75
|
File details
Details for the file cheesesignal-1.0.0-py2.py3-none-any.whl.
File metadata
- Download URL: cheesesignal-1.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50a6d32540f68ca9c7e5bfb737b7f14a754a9978ab4b20259b51b66a7539c756
|
|
| MD5 |
e941f6aace331a32c14ab488dc412862
|
|
| BLAKE2b-256 |
e9716a150c7f0319bfde9f536c19d2b3aa5ce97a450bd7f6d69a472f9eac69ae
|