Name | psygnal JSON |
Version |
0.12.0
JSON |
| download |
home_page | None |
Summary | Fast python callback/event system modeled after Qt Signals |
upload_time | 2025-02-03 15:53:24 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | BSD 3-Clause License |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# psygnal
[](https://github.com/pyapp-kit/psygnal/raw/master/LICENSE)
[](https://pypi.org/project/psygnal)
[](https://github.com/conda-forge/psygnal-feedstock)
[](https://python.org)
[](https://github.com/pyapp-kit/psygnal/actions/workflows/test.yml)
[](https://codecov.io/gh/pyapp-kit/psygnal)
[](https://psygnal.readthedocs.io/en/latest/?badge=latest)
[](https://codspeed.io/pyapp-kit/psygnal)
Psygnal (pronounced "signal") is a pure python implementation of the [observer
pattern](https://en.wikipedia.org/wiki/Observer_pattern), with the API of
[Qt-style Signals](https://doc.qt.io/qt-5/signalsandslots.html) with (optional)
signature and type checking, and support for threading. It has no dependencies.
> This library does ***not*** require or use Qt in any way, It simply implements
> a similar observer pattern API.
## Documentation
https://psygnal.readthedocs.io/
### Install
```sh
pip install psygnal
```
```sh
conda install -c conda-forge psygnal
```
## Usage
The [observer pattern](https://en.wikipedia.org/wiki/Observer_pattern) is a software design pattern in which an object maintains a list of its dependents ("**observers**"), and notifies them of any state changes – usually by calling a **callback function** provided by the observer.
Here is a simple example of using psygnal:
```python
from psygnal import Signal
class MyObject:
# define one or more signals as class attributes
value_changed = Signal(str)
# create an instance
my_obj = MyObject()
# You (or others) can connect callbacks to your signals
@my_obj.value_changed.connect
def on_change(new_value: str):
print(f"The value changed to {new_value}!")
# The object may now emit signals when appropriate,
# (for example in a setter method)
my_obj.value_changed.emit('hi') # prints "The value changed to hi!"
```
Much more detail available in the [documentation](https://psygnal.readthedocs.io/)!
### Evented Dataclasses
A particularly nice usage of the signal pattern is to emit signals whenever a
field of a dataclass changes. Psygnal provides an `@evented` decorator that will
emit a signal whenever a field changes. It is compatible with `dataclasses`
from [the standard library](https://docs.python.org/3/library/dataclasses.html),
as well as [attrs](https://www.attrs.org/en/stable/), and
[pydantic](https://pydantic-docs.helpmanual.io):
```python
from psygnal import evented
from dataclasses import dataclass
@evented
@dataclass
class Person:
name: str
age: int = 0
person = Person('John', age=30)
# connect callbacks
@person.events.age.connect
def _on_age_change(new_age: str):
print(f"Age changed to {new_age}")
person.age = 31 # prints: Age changed to 31
```
See the [dataclass documentation](https://psygnal.readthedocs.io/en/latest/dataclasses/) for more details.
### Evented Containers
`psygnal.containers` provides evented versions of mutable data structures
(`dict`, `list`, `set`), for cases when you need to monitor mutation:
```python
from psygnal.containers import EventedList
my_list = EventedList([1, 2, 3, 4, 5])
my_list.events.inserted.connect(lambda i, val: print(f"Inserted {val} at index {i}"))
my_list.events.removed.connect(lambda i, val: print(f"Removed {val} at index {i}"))
my_list.append(6) # Output: Inserted 6 at index 5
my_list.pop() # Output: Removed 6 at index 5
```
See the
[evented containers documentation](https://psygnal.readthedocs.io/en/latest/API/containers/)
for more details.
## Benchmark history
https://pyapp-kit.github.io/psygnal/
and
https://codspeed.io/pyapp-kit/psygnal
## Developers
### Compiling
While `psygnal` is a pure python package, it is compiled with mypyc to increase
performance. To test the compiled version locally, you can run:
```bash
make build
```
(which is just an alias for `HATCH_BUILD_HOOKS_ENABLE=1 pip install -e .`)
### Debugging
To disable all compiled files and run the pure python version,
you may run:
```bash
python -c "import psygnal.utils; psygnal.utils.decompile()"
```
To return the compiled version, run:
```bash
python -c "import psygnal.utils; psygnal.utils.recompile()"
```
The `psygnal._compiled` variable will tell you if you're using the compiled
version or not.
Raw data
{
"_id": null,
"home_page": null,
"name": "psygnal",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Talley Lambert <talley.lambert@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/34/7f/ef01fa880529b0cbdf33a02e690cbca7868ee0ee291bcb2ebce53f3b3043/psygnal-0.12.0.tar.gz",
"platform": null,
"description": "# psygnal\n\n[](https://github.com/pyapp-kit/psygnal/raw/master/LICENSE)\n[](https://pypi.org/project/psygnal)\n[](https://github.com/conda-forge/psygnal-feedstock)\n[](https://python.org)\n[](https://github.com/pyapp-kit/psygnal/actions/workflows/test.yml)\n[](https://codecov.io/gh/pyapp-kit/psygnal)\n[](https://psygnal.readthedocs.io/en/latest/?badge=latest)\n[](https://codspeed.io/pyapp-kit/psygnal)\n\nPsygnal (pronounced \"signal\") is a pure python implementation of the [observer\npattern](https://en.wikipedia.org/wiki/Observer_pattern), with the API of\n[Qt-style Signals](https://doc.qt.io/qt-5/signalsandslots.html) with (optional)\nsignature and type checking, and support for threading. It has no dependencies.\n\n> This library does ***not*** require or use Qt in any way, It simply implements\n> a similar observer pattern API.\n\n## Documentation\n\nhttps://psygnal.readthedocs.io/\n\n### Install\n\n```sh\npip install psygnal\n```\n\n```sh\nconda install -c conda-forge psygnal\n```\n\n## Usage\n\nThe [observer pattern](https://en.wikipedia.org/wiki/Observer_pattern) is a software design pattern in which an object maintains a list of its dependents (\"**observers**\"), and notifies them of any state changes \u2013 usually by calling a **callback function** provided by the observer.\n\nHere is a simple example of using psygnal:\n\n```python\nfrom psygnal import Signal\n\nclass MyObject:\n # define one or more signals as class attributes\n value_changed = Signal(str)\n\n# create an instance\nmy_obj = MyObject()\n\n# You (or others) can connect callbacks to your signals\n@my_obj.value_changed.connect\ndef on_change(new_value: str):\n print(f\"The value changed to {new_value}!\")\n\n# The object may now emit signals when appropriate,\n# (for example in a setter method)\nmy_obj.value_changed.emit('hi') # prints \"The value changed to hi!\"\n```\n\nMuch more detail available in the [documentation](https://psygnal.readthedocs.io/)!\n\n### Evented Dataclasses\n\nA particularly nice usage of the signal pattern is to emit signals whenever a\nfield of a dataclass changes. Psygnal provides an `@evented` decorator that will\nemit a signal whenever a field changes. It is compatible with `dataclasses`\nfrom [the standard library](https://docs.python.org/3/library/dataclasses.html),\nas well as [attrs](https://www.attrs.org/en/stable/), and\n[pydantic](https://pydantic-docs.helpmanual.io):\n\n```python\nfrom psygnal import evented\nfrom dataclasses import dataclass\n\n@evented\n@dataclass\nclass Person:\n name: str\n age: int = 0\n\nperson = Person('John', age=30)\n\n# connect callbacks\n@person.events.age.connect\ndef _on_age_change(new_age: str):\n print(f\"Age changed to {new_age}\")\n\nperson.age = 31 # prints: Age changed to 31\n```\n\nSee the [dataclass documentation](https://psygnal.readthedocs.io/en/latest/dataclasses/) for more details.\n\n### Evented Containers\n\n`psygnal.containers` provides evented versions of mutable data structures\n(`dict`, `list`, `set`), for cases when you need to monitor mutation:\n\n```python\nfrom psygnal.containers import EventedList\n\nmy_list = EventedList([1, 2, 3, 4, 5])\n\nmy_list.events.inserted.connect(lambda i, val: print(f\"Inserted {val} at index {i}\"))\nmy_list.events.removed.connect(lambda i, val: print(f\"Removed {val} at index {i}\"))\n\nmy_list.append(6) # Output: Inserted 6 at index 5\nmy_list.pop() # Output: Removed 6 at index 5\n```\n\nSee the\n[evented containers documentation](https://psygnal.readthedocs.io/en/latest/API/containers/)\nfor more details.\n\n## Benchmark history\n\nhttps://pyapp-kit.github.io/psygnal/\n\nand\n\nhttps://codspeed.io/pyapp-kit/psygnal\n\n## Developers\n\n### Compiling\n\nWhile `psygnal` is a pure python package, it is compiled with mypyc to increase\nperformance. To test the compiled version locally, you can run:\n\n```bash\nmake build\n```\n\n(which is just an alias for `HATCH_BUILD_HOOKS_ENABLE=1 pip install -e .`)\n\n### Debugging\n\n To disable all compiled files and run the pure python version,\nyou may run:\n\n```bash\npython -c \"import psygnal.utils; psygnal.utils.decompile()\"\n```\n\nTo return the compiled version, run:\n\n```bash\npython -c \"import psygnal.utils; psygnal.utils.recompile()\"\n```\n\nThe `psygnal._compiled` variable will tell you if you're using the compiled\nversion or not.\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License",
"summary": "Fast python callback/event system modeled after Qt Signals",
"version": "0.12.0",
"project_urls": {
"documentation": "https://psygnal.readthedocs.io",
"homepage": "https://github.com/pyapp-kit/psygnal",
"repository": "https://github.com/pyapp-kit/psygnal"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "acd336d8b6f84db1d97c6861351f299550bb5406fb9f9d1a368f8ec8a83c80da",
"md5": "a29a04a65e5305808e469c97aeacf995",
"sha256": "e5e6c338e9ccb712f27bf74ae3bbfcf276308b8b01c293342255d69b7eeba61f"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a29a04a65e5305808e469c97aeacf995",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 467290,
"upload_time": "2025-02-03T15:52:24",
"upload_time_iso_8601": "2025-02-03T15:52:24.997516Z",
"url": "https://files.pythonhosted.org/packages/ac/d3/36d8b6f84db1d97c6861351f299550bb5406fb9f9d1a368f8ec8a83c80da/psygnal-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8b3286588490a746bb5be7f7cea395af8d640851650d197a948ae4136ff84c41",
"md5": "6eb4e9739ed383d0b69defaa3516d491",
"sha256": "df404cfaedff3e58e81407371e596a1a0f0f81e8e5b16e85ea420e030ff558b6"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6eb4e9739ed383d0b69defaa3516d491",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 437900,
"upload_time": "2025-02-03T15:52:32",
"upload_time_iso_8601": "2025-02-03T15:52:32.383006Z",
"url": "https://files.pythonhosted.org/packages/8b/32/86588490a746bb5be7f7cea395af8d640851650d197a948ae4136ff84c41/psygnal-0.12.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7416fec37482a0ed5338a90f4cef0f00b66136c9bcfd1b6f9f56955632f74561",
"md5": "76a7a5b74df93bae6b53cea927c14ba7",
"sha256": "c455c972071bc06403795f802623b54b0ba3217b7399520aee5e1e4ca71908e0"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "76a7a5b74df93bae6b53cea927c14ba7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 774911,
"upload_time": "2025-02-03T15:52:39",
"upload_time_iso_8601": "2025-02-03T15:52:39.880800Z",
"url": "https://files.pythonhosted.org/packages/74/16/fec37482a0ed5338a90f4cef0f00b66136c9bcfd1b6f9f56955632f74561/psygnal-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "aef4cf3fc283191b68440977258f97219e2f79b5cec3976307903a9cbc684280",
"md5": "d0e4db79eeaadb3b772ee314fa67748a",
"sha256": "2998e59d12f113ed961e11b30ade9a37b3e0263157cac99d7ab11f5730d4febb"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "d0e4db79eeaadb3b772ee314fa67748a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 763048,
"upload_time": "2025-02-03T15:52:42",
"upload_time_iso_8601": "2025-02-03T15:52:42.991291Z",
"url": "https://files.pythonhosted.org/packages/ae/f4/cf3fc283191b68440977258f97219e2f79b5cec3976307903a9cbc684280/psygnal-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f3d97e55fe5931cf8acbc35f2216e7797af48b3b462989903bf8b6a5caed3861",
"md5": "16aa3efe2f6643796350f0f6e5d585a7",
"sha256": "a708d8af50b11d55c58bb36cc7e042f02561011398b869b749a62832a656706c"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "16aa3efe2f6643796350f0f6e5d585a7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 372212,
"upload_time": "2025-02-03T15:52:47",
"upload_time_iso_8601": "2025-02-03T15:52:47.215259Z",
"url": "https://files.pythonhosted.org/packages/f3/d9/7e55fe5931cf8acbc35f2216e7797af48b3b462989903bf8b6a5caed3861/psygnal-0.12.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4857d6b488dac03f65e731843c984e4677a30c48dd4c5dae3c04df7993ce3168",
"md5": "4356e4638a9e75e605d3b4af6d5bdd24",
"sha256": "2a9ee1e6c441074fe71765b0a96c75b19d72c8198ec5bdea7e97e06a6fe9bd41"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "4356e4638a9e75e605d3b4af6d5bdd24",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 458923,
"upload_time": "2025-02-03T15:52:49",
"upload_time_iso_8601": "2025-02-03T15:52:49.335403Z",
"url": "https://files.pythonhosted.org/packages/48/57/d6b488dac03f65e731843c984e4677a30c48dd4c5dae3c04df7993ce3168/psygnal-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7afabab2170fc8b47a4c591e7ab821fc1fe3d4b10292753f47acba7323eb3d66",
"md5": "ec13435da67168aa42c2607c7fe74364",
"sha256": "0cdb387d1d6f00649c970a8084e4ae3fcd3e38ac12b5c51d086fc9e01d8f7530"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ec13435da67168aa42c2607c7fe74364",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 430113,
"upload_time": "2025-02-03T15:52:50",
"upload_time_iso_8601": "2025-02-03T15:52:50.698139Z",
"url": "https://files.pythonhosted.org/packages/7a/fa/bab2170fc8b47a4c591e7ab821fc1fe3d4b10292753f47acba7323eb3d66/psygnal-0.12.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2e5891359b72fe0413626be8857122897bb9238fa7b1dd53a3ed299183a17cb6",
"md5": "b14e917b46181e8ab43a88349e55cd66",
"sha256": "b410dab639353320044856cef68bd9aa940f8e1399da2f57522356b42bc4cf5d"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b14e917b46181e8ab43a88349e55cd66",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 765465,
"upload_time": "2025-02-03T15:52:52",
"upload_time_iso_8601": "2025-02-03T15:52:52.114894Z",
"url": "https://files.pythonhosted.org/packages/2e/58/91359b72fe0413626be8857122897bb9238fa7b1dd53a3ed299183a17cb6/psygnal-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9cee869a2d6741ba3848d6cadf35a1f08535115eab67b7b1c41b2d45f467da7a",
"md5": "d5e782c3e9d90ee60217187893ff6ac1",
"sha256": "cd075d7bbe82f0615cfef953ed19ca54feba08f1686b42655c02d6ade0b0beb5"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "d5e782c3e9d90ee60217187893ff6ac1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 751927,
"upload_time": "2025-02-03T15:52:53",
"upload_time_iso_8601": "2025-02-03T15:52:53.631448Z",
"url": "https://files.pythonhosted.org/packages/9c/ee/869a2d6741ba3848d6cadf35a1f08535115eab67b7b1c41b2d45f467da7a/psygnal-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "68ebc59c13a6da8263f3119a3d9faa7790e58d4fe541458197de4b2370927d52",
"md5": "fea148790508c8e533ca620fdcf03185",
"sha256": "cc763dbab05fb75f4517c8bd31ede6a4f27e68c59adca55b81a9d7bc875156e0"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "fea148790508c8e533ca620fdcf03185",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 377665,
"upload_time": "2025-02-03T15:52:55",
"upload_time_iso_8601": "2025-02-03T15:52:55.284714Z",
"url": "https://files.pythonhosted.org/packages/68/eb/c59c13a6da8263f3119a3d9faa7790e58d4fe541458197de4b2370927d52/psygnal-0.12.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9b2e6cff528f8f5dc7f60221fddca85ed52131a90b606a72c5a4085606d5217d",
"md5": "63651ba432137db822c66ce0fded67e3",
"sha256": "dac134c8890e3d0e413ab701fcb56a882f9b151a6a9d625080736c36833b26ed"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "63651ba432137db822c66ce0fded67e3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 469384,
"upload_time": "2025-02-03T15:52:56",
"upload_time_iso_8601": "2025-02-03T15:52:56.885697Z",
"url": "https://files.pythonhosted.org/packages/9b/2e/6cff528f8f5dc7f60221fddca85ed52131a90b606a72c5a4085606d5217d/psygnal-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "559d774d547ed1fcb079de7fc41b1e3103b261eebae7f34da5cf05909a040470",
"md5": "584127723194b9fc8b1e6aeb776a7724",
"sha256": "bc2324cef7ba3f4d30d32895f8cb7d5cf9ad7bcfdb7955aa92a0fbfe7537ec3f"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "584127723194b9fc8b1e6aeb776a7724",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 426617,
"upload_time": "2025-02-03T15:52:58",
"upload_time_iso_8601": "2025-02-03T15:52:58.217743Z",
"url": "https://files.pythonhosted.org/packages/55/9d/774d547ed1fcb079de7fc41b1e3103b261eebae7f34da5cf05909a040470/psygnal-0.12.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b489300991108d86c00e6aa84ea85e9c998e27eed59fdcb1abd3e69b9f4d62f5",
"md5": "62fa253aaeab02eed6a4e6690e01b8bb",
"sha256": "ae2bd6edcf911fbff34ed75150e8f8dfb246ebf203514c7c1e4397cabbb1368a"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "62fa253aaeab02eed6a4e6690e01b8bb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 787401,
"upload_time": "2025-02-03T15:53:00",
"upload_time_iso_8601": "2025-02-03T15:53:00.990601Z",
"url": "https://files.pythonhosted.org/packages/b4/89/300991108d86c00e6aa84ea85e9c998e27eed59fdcb1abd3e69b9f4d62f5/psygnal-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9eae8cc64c0f1eebbc4be74a953e76e431431c770a30f28b71b48edc7f6b8288",
"md5": "cc52f0da526aa63bcfc1328dc1fcdd37",
"sha256": "d6fbeee192beab90ca23d9d3ee3bf1eb7ef5f00e815fa53e23e402feee617242"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "cc52f0da526aa63bcfc1328dc1fcdd37",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 781293,
"upload_time": "2025-02-03T15:53:03",
"upload_time_iso_8601": "2025-02-03T15:53:03.273131Z",
"url": "https://files.pythonhosted.org/packages/9e/ae/8cc64c0f1eebbc4be74a953e76e431431c770a30f28b71b48edc7f6b8288/psygnal-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8409f00841834b7ae543bd232c22e557914d63d0d0430d32980883421d5981bb",
"md5": "10a78de3db2cd3a21131e5a6160b3cdd",
"sha256": "25a9f2db710a6cd2566b3e0e03cf6e04d56276f36ac86b42fa22d81f9a4ac0f2"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "10a78de3db2cd3a21131e5a6160b3cdd",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 381816,
"upload_time": "2025-02-03T15:53:06",
"upload_time_iso_8601": "2025-02-03T15:53:06.968130Z",
"url": "https://files.pythonhosted.org/packages/84/09/f00841834b7ae543bd232c22e557914d63d0d0430d32980883421d5981bb/psygnal-0.12.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cbb464a06b1d9b7628c84c9ea68a6cdc9d54378bae04695e7173addb9cf46607",
"md5": "c107654539f4b50b376b9c65b5931225",
"sha256": "2f4c1fed9337f57778109c397b6b9591961123ce4bbeb068115c0468964fc2b4"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "c107654539f4b50b376b9c65b5931225",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 468346,
"upload_time": "2025-02-03T15:53:08",
"upload_time_iso_8601": "2025-02-03T15:53:08.417027Z",
"url": "https://files.pythonhosted.org/packages/cb/b4/64a06b1d9b7628c84c9ea68a6cdc9d54378bae04695e7173addb9cf46607/psygnal-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "78beb3df7dac845f5f6b9897e60d19c3eaed27b56b024099588db92c3b76bb21",
"md5": "c21fe8df3537d8e0eb7685cddda28469",
"sha256": "2d5a953a50fc8263bb23bc558b926cf691f70c9c781c68c64c983fb8cbead910"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c21fe8df3537d8e0eb7685cddda28469",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 426482,
"upload_time": "2025-02-03T15:53:09",
"upload_time_iso_8601": "2025-02-03T15:53:09.694238Z",
"url": "https://files.pythonhosted.org/packages/78/be/b3df7dac845f5f6b9897e60d19c3eaed27b56b024099588db92c3b76bb21/psygnal-0.12.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "df360017e838d3c63081a64e6d2252c8dda368a6d0898c7ecf689ba678fe4127",
"md5": "cdfbbe88c354aa32b94301d547be8ff2",
"sha256": "7a67ec8e0c8a6553dd56ed653f87c46ef652b0c512bb8c8f8c5adcff3907751f"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "cdfbbe88c354aa32b94301d547be8ff2",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 785239,
"upload_time": "2025-02-03T15:53:11",
"upload_time_iso_8601": "2025-02-03T15:53:11.674141Z",
"url": "https://files.pythonhosted.org/packages/df/36/0017e838d3c63081a64e6d2252c8dda368a6d0898c7ecf689ba678fe4127/psygnal-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "67d07057151debcd5c7d8ce7789d276e18681d5c141c9222c9cf99ce3a418680",
"md5": "5d2a8eb81fe68b0c23626883c9cadd23",
"sha256": "742abb2d0e230521b208161eeab06abb682a19239e734e543a269214c84a54d2"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "5d2a8eb81fe68b0c23626883c9cadd23",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 779690,
"upload_time": "2025-02-03T15:53:13",
"upload_time_iso_8601": "2025-02-03T15:53:13.971444Z",
"url": "https://files.pythonhosted.org/packages/67/d0/7057151debcd5c7d8ce7789d276e18681d5c141c9222c9cf99ce3a418680/psygnal-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5eaea3d6815db583b6d05878b3647ea0e2aa21ce6941d03c9d2c6caad1afbcf6",
"md5": "9096c185e8b4f59db628601746a8055a",
"sha256": "d779f20c6977ec9d5b9fece23b4b28bbcf0a7773539a4a176b5527aea5da27c7"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "9096c185e8b4f59db628601746a8055a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 382622,
"upload_time": "2025-02-03T15:53:15",
"upload_time_iso_8601": "2025-02-03T15:53:15.377808Z",
"url": "https://files.pythonhosted.org/packages/5e/ae/a3d6815db583b6d05878b3647ea0e2aa21ce6941d03c9d2c6caad1afbcf6/psygnal-0.12.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d5bc5f352439baa6ea20771e3bc8114464eac0574b2299725bf32cf87373b6ff",
"md5": "1d0664f7a10adaef7ca468b00070a124",
"sha256": "aa1ce36ff7872d32f281ca6aab027c6d64abdef19ed269bc73a82e80f2a4fbb0"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1d0664f7a10adaef7ca468b00070a124",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 467130,
"upload_time": "2025-02-03T15:53:16",
"upload_time_iso_8601": "2025-02-03T15:53:16.675311Z",
"url": "https://files.pythonhosted.org/packages/d5/bc/5f352439baa6ea20771e3bc8114464eac0574b2299725bf32cf87373b6ff/psygnal-0.12.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "316b75c62b404ab5e63e5c03dd1a4a082c29e5d0de246bc3f3b023259e437cf2",
"md5": "a5593d1f29e5d95d72b9c82ec7291f03",
"sha256": "33946be4b9b4efe9e5ced2800b040314c113e898e1310a02751c840af02674d5"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a5593d1f29e5d95d72b9c82ec7291f03",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 437703,
"upload_time": "2025-02-03T15:53:18",
"upload_time_iso_8601": "2025-02-03T15:53:18.787789Z",
"url": "https://files.pythonhosted.org/packages/31/6b/75c62b404ab5e63e5c03dd1a4a082c29e5d0de246bc3f3b023259e437cf2/psygnal-0.12.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e3ff209975c42d05445e884b59ebea44a86b42a7d8ad8b831c930d06bc3a5fc6",
"md5": "17f9ef3e000c4356bd7839520f14f50b",
"sha256": "e69d74edb336e5e959ef5680c5393f8f6c7b7561fdcb9014dc2535c6ef3ea194"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "17f9ef3e000c4356bd7839520f14f50b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 770509,
"upload_time": "2025-02-03T15:53:20",
"upload_time_iso_8601": "2025-02-03T15:53:20.370448Z",
"url": "https://files.pythonhosted.org/packages/e3/ff/209975c42d05445e884b59ebea44a86b42a7d8ad8b831c930d06bc3a5fc6/psygnal-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c027a60b0328267709a30274df55c358cedad596b09cc97f687cd01303d17fa3",
"md5": "1b7caeb4b9da00b93f5865edbe6b9947",
"sha256": "7986828b57861b3341803e519e09189cd93800adede9cfc450e72e1c4ea93f35"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "1b7caeb4b9da00b93f5865edbe6b9947",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 759198,
"upload_time": "2025-02-03T15:53:21",
"upload_time_iso_8601": "2025-02-03T15:53:21.771674Z",
"url": "https://files.pythonhosted.org/packages/c0/27/a60b0328267709a30274df55c358cedad596b09cc97f687cd01303d17fa3/psygnal-0.12.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ef49cd7ee6a1d4e8fd37e6040f937232c4a32ebd164c2cdea489d7f2493d7ae2",
"md5": "a782ccd2c3139fe2a239a21a21e271e8",
"sha256": "ef3cae9af7a22f3c855cbc5b2cb219c5410b1076eaa6541f48cdb2c901a06ad7"
},
"downloads": -1,
"filename": "psygnal-0.12.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "a782ccd2c3139fe2a239a21a21e271e8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 372115,
"upload_time": "2025-02-03T15:53:23",
"upload_time_iso_8601": "2025-02-03T15:53:23.162879Z",
"url": "https://files.pythonhosted.org/packages/ef/49/cd7ee6a1d4e8fd37e6040f937232c4a32ebd164c2cdea489d7f2493d7ae2/psygnal-0.12.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "347fef01fa880529b0cbdf33a02e690cbca7868ee0ee291bcb2ebce53f3b3043",
"md5": "d53e2eb182aea19d505415faa38840bc",
"sha256": "8d2a99803f3152c469d3642d36c04d680213a20e114245558e026695adf9a9c2"
},
"downloads": -1,
"filename": "psygnal-0.12.0.tar.gz",
"has_sig": false,
"md5_digest": "d53e2eb182aea19d505415faa38840bc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 104400,
"upload_time": "2025-02-03T15:53:24",
"upload_time_iso_8601": "2025-02-03T15:53:24.444649Z",
"url": "https://files.pythonhosted.org/packages/34/7f/ef01fa880529b0cbdf33a02e690cbca7868ee0ee291bcb2ebce53f3b3043/psygnal-0.12.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-03 15:53:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pyapp-kit",
"github_project": "psygnal",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "psygnal"
}