Skip to main content

Pure python implementation of Qt Signals

Project description

psygnal

License PyPI Python Version CI codecov

Pure python implementation of Qt-style Signals, with (optional) signature and type checking, and support for threading.

Usage

install

pip install psygnal

basic usage

If you are familiar with the Qt Signals & Slots API as implemented in PySide and PyQt5, then you should be good to go! psygnal aims to be a superset of those APIs (some functions do accept additional arguments, like check_nargs and check_types).

Note, the name Signal is used here instead of pyqtSignal, following the qtpy and PySide convention.

from psygnal import Signal

# create an object with class attribute Signals
class MyObj:

    # this signal will emit a single string
    value_changed = Signal(str)

    def __init__(self, value=0):
        self._value = value

    def set_value(self, value):
        if value != self._value:
            self._value = str(value)
            # emit the signal
            self.value_changed.emit(self._value)

def on_value_changed(new_value):
    print(f"The new value is {new_value!r}")

# instantiate the object with Signals
obj = MyObj()

# connect one or more callbacks with `connect`
obj.value_changed.connect(on_value_changed)

# callbacks are called when value changes
obj.set_value('hello!')  # prints: 'The new value is 'hello!'

# disconnect callbacks with `disconnect`
obj.value_changed.disconnect(on_value_changed)

as a decorator

.connect() returns the object that it is passed, and so can be used as a decorator.

@obj.value_changed.connect
def some_other_callback(value):
    print(f"I also received: {value!r}")

obj.set_value('world!')
# prints:
# I also received: 'world!'

connection safety (number of arguments)

psygnal prevents you from connecting a callback function that is guaranteed to fail due to an incompatible number of positional arguments. For example, the following callback has too many arguments for our Signal (which we declared above as emitting a single argument: Signal(str))

def i_require_two_arguments(first, second):
    print(first, second)

obj.value_changed.connect(i_require_two_arguments)

raises:

ValueError: Cannot connect slot 'i_require_two_arguments' with signature: (first, second):
- Slot requires at least 2 positional arguments, but spec only provides 1

Accepted signature: (p0: str, /)

Note: Positional argument checking can be disabled with connect(..., check_nargs=False)

extra positional arguments ignored

While a callback may not require more positional arguments than the signature of the Signal to which it is connecting, it may accept less. Extra arguments will be discarded when emitting the signal (so it isn't necessary to create a lambda to swallow unnecessary arguments):

obj = MyObj()

@obj.value_changed.connect
def no_args_please():
    print(locals())

# otherwise one might need
# obj.value_changed.connect(lambda a: no_args_please())

obj.value_changed.emit('hi')  # prints: "{}"

connection safety (types)

For type safety when connecting slots, use check_types=True when connecting a callback. Recall that our signal was declared as accepting a string Signal(str). The following function has an incompatible type annotation: x: int.

# this would fail because you cannot concatenate a string and int
def i_expect_an_integer(x: int):
    print(f'{x} + 4 = {x + 4}')

# psygnal won't let you connect it
obj.value_changed.connect(i_expect_an_integer, check_types=True)

raises:

ValueError: Cannot connect slot 'i_expect_an_integer' with signature: (x: int):
- Slot types (x: int) do not match types in signal.

Accepted signature: (p0: str, /)

Note: unlike Qt, psygnal does not perform any type coercion when emitting a value.

query the sender

Similar to Qt's QObject.sender() method, a callback can query the sender using the Signal.sender() class method. (The implementation is of course different than Qt, since the receiver is not a QObject.)

obj = MyObj()

def curious():
    print("Sent by", Signal.sender())
    assert Signal.sender() == obj

obj.value_changed.connect(curious)
obj.value_changed.emit(10)

# prints (and does not raise):
# Sent by <__main__.MyObj object at 0x1046a30d0>

If you want the actual signal instance that is emitting the signal (obj.value_changed in the above example), use Signal.current_emitter().

emitting signals asynchronously (threading)

There is experimental support for calling all connected slots in another thread, using emit(..., asynchronous=True)

obj = MyObj()

def slow_callback(arg):
    import time
    time.sleep(0.5)
    print(f"Hi {arg!r}, from another thread")

obj.value_changed.connect(slow_callback)

This one is called synchronously

obj.value_changed.emit('friend')
print("Hi, from main thread.")

# after 0.5 seconds, prints:
# Hi 'friend', from another thread
# Hi, from main thread.

This one is called asynchronously

thread = obj.value_changed.emit('friend', asynchronous=True)
print("Hi, from main thread.")

# immediately prints
# Hi, from main thread.

# then after 0.5 seconds this will print:
# Hi 'friend', from another thread

Note: The user is responsible for joining and managing the threading.Thread instance returned when calling .emit(..., asynchronous=True).

Experimental: While thread-safety is the goal, (RLocks are used during important state mutations) it is not guaranteed. Please use at your own risk. Issues/PRs welcome.

Other similar libraries

There are other libraries that implement similar event-based signals, they may server your purposes better depending on what you are doing.

PySignal (deprecated)

This package borrows inspiration from – and is most similar to – the now deprecated PySignal project, with a few notable new features in psygnal regarding signature and type checking, sender querying, and threading.

similarities with PySignal

  • still a "Qt-style" signal implementation that doesn't depend on Qt
  • supports class methods, functions, lambdas and partials

differences with PySignal

  • the class attribute pysignal.ClassSignal is called simply Signal in psygnal (to more closely match the PyQt/Pyside syntax). Correspondingly pysignal.Signal is similar to psygnal.SignalInstance.
  • Whereas PySignal refrained from doing any signature and/or type checking either at slot-connection time, or at signal emission time, psygnal offers signature declaration similar to Qt with , for example, Signal(int, int). along with opt-in signature compatibility (with check_nargs=True) and type checking (with check_types=True). .connect(..., check_nargs=True) in particular ensures that any slot to connected to a signal will at least be compatible with the emitted arguments.
  • You can query the sender in psygnal by using the Signal.sender() or Signal.current_emitter() class methods. (The former returns the instance emitting the signal, similar to Qt's QObject.sender() method, whereas the latter returns the currently emitting SignalInstance.)
  • There is basic threading support (calling all slots in another thread), using emit(..., asynchronous=True). This is experimental, and while thread-safety is the goal, it is not guaranteed.
  • There are no SignalFactory classes here.

The following two libraries implement django-inspired signals, they do not attempt to mimic the Qt API, but they have their own advantages.

Blinker

Blinker provides a fast dispatching system that allows any number of interested parties to subscribe to events, or "signals".

SmokeSignal

(This appears to be unmaintained)

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

psygnal-0.1.0rc2.tar.gz (22.3 kB view details)

Uploaded Source

Built Distributions

psygnal-0.1.0rc2-py2.py3-none-any.whl (12.7 kB view details)

Uploaded Python 2 Python 3

psygnal-0.1.0rc2-cp39-cp39-win_amd64.whl (126.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

psygnal-0.1.0rc2-cp39-cp39-manylinux2014_x86_64.whl (652.4 kB view details)

Uploaded CPython 3.9

psygnal-0.1.0rc2-cp39-cp39-manylinux2014_i686.whl (623.1 kB view details)

Uploaded CPython 3.9

psygnal-0.1.0rc2-cp39-cp39-manylinux1_i686.whl (623.1 kB view details)

Uploaded CPython 3.9

psygnal-0.1.0rc2-cp39-cp39-macosx_10_9_x86_64.whl (154.3 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

psygnal-0.1.0rc2-cp38-cp38-win_amd64.whl (127.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

psygnal-0.1.0rc2-cp38-cp38-manylinux2014_x86_64.whl (746.6 kB view details)

Uploaded CPython 3.8

psygnal-0.1.0rc2-cp38-cp38-manylinux2014_i686.whl (701.2 kB view details)

Uploaded CPython 3.8

psygnal-0.1.0rc2-cp38-cp38-manylinux1_i686.whl (701.2 kB view details)

Uploaded CPython 3.8

psygnal-0.1.0rc2-cp38-cp38-macosx_10_9_x86_64.whl (153.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

psygnal-0.1.0rc2-cp37-cp37m-win_amd64.whl (124.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_x86_64.whl (585.9 kB view details)

Uploaded CPython 3.7m

psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_i686.whl (560.4 kB view details)

Uploaded CPython 3.7m

psygnal-0.1.0rc2-cp37-cp37m-manylinux1_i686.whl (560.4 kB view details)

Uploaded CPython 3.7m

psygnal-0.1.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl (150.4 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file psygnal-0.1.0rc2.tar.gz.

File metadata

  • Download URL: psygnal-0.1.0rc2.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2.tar.gz
Algorithm Hash digest
SHA256 fc94445167e4504985598387bd5b23705899d8dbfcd6b4e7cadbadba0ba9d458
MD5 23b1c921ceb17057e30f36319432492f
BLAKE2b-256 1ca336cc6552a82a9c5714e830c97640149e08e1a8b8e87800c73cd970af10a6

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-py2.py3-none-any.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 789cef48374ac861d0566b662155097a5a33f40a3966e2fb095368a2e7ebf6e3
MD5 fb041c793a2c2f6a8fd48a26d6455f93
BLAKE2b-256 d79252ef8d4cbe4061d9ff617a2fc9dee7ff71417cbb6aaa094ded068dc20076

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 126.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 789bf414b8dfaf43c2278cf502759166484e8a05920d80538b6397f6995c9a68
MD5 ad5d1b04dba58f2ae7af0090d8867ef2
BLAKE2b-256 ba0214b3a22cb176515f36cb579d73c418f4b2aa4f1c90f75a2f7a707ea0db4c

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 652.4 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c07cf02fc1cf7fbeedb2dcc4f08cd733704efa5858f1030f7100e9405ef6d336
MD5 03779e57f0ad5960dab1f995bc388903
BLAKE2b-256 eb6fb498b6ff525babac04af9962560bf162c41f25333b30872bcb603f795e4d

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp39-cp39-manylinux2014_i686.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp39-cp39-manylinux2014_i686.whl
  • Upload date:
  • Size: 623.1 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp39-cp39-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8f8ebae88cb1483b6ca29f338ec567fd184949bb4fe7c223c2a1e6221ca63c91
MD5 39306b000abaad5ebe577589f209ae56
BLAKE2b-256 d8528a0cd651ad22b14aa85ea0c667de89f4de7982d90c024ad90ac43ff30aff

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp39-cp39-manylinux1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp39-cp39-manylinux1_i686.whl
  • Upload date:
  • Size: 623.1 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp39-cp39-manylinux1_i686.whl
Algorithm Hash digest
SHA256 5236569bd98f3ec8dc8608b13cb5ca1c188e49e0a8cf9fb5f8ab3638b569780a
MD5 53da2a796e69650526c501cc8683a2d9
BLAKE2b-256 52893a3dada11c7fe66f1b0c096471974080ff02648f9dbacc8d97b2bb165a9e

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 154.3 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 87eb8759358f4a620bdbf36523e9b8d8593c85f1ec0459d2feec53dbb7d06f53
MD5 2adf2b7b7dcdf1a5f0f6a0c01366a3e5
BLAKE2b-256 d6dbb8a52c7f0de5040bea73c6adae60088ef96ebb403e0f2b0e6c52ab2bd099

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 127.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 aa352e3bfd590bad301402367805639fe281df7d283cd5f43fe2b65f10c2ba1c
MD5 63f13a53e71c17bc1035c79e8815f389
BLAKE2b-256 6cc35e9c7e196a3525ced74cd697d6d9ec0cb99bf1d0b71c0d383090f44bc87e

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 746.6 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 13cb745aa38220b776e066f32894642526c4d78f373a377eb751c47f6ca21cd5
MD5 f321459311d34dc0ee4b8c11f0de8ab5
BLAKE2b-256 d070660f07d7ea91c9e07f3ba67e9729351726e38a27d2970e7444c8edbbb5e6

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp38-cp38-manylinux2014_i686.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp38-cp38-manylinux2014_i686.whl
  • Upload date:
  • Size: 701.2 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp38-cp38-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1e428ab4df15641f9077c0291d3ab530c30e05568f81804a7fd67ea5409b24e2
MD5 e4128f8944e7cafb55c662664e0bbb56
BLAKE2b-256 7116949925905c559f9a952386d43ec0bd354a926234e80adff6a502189b0674

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp38-cp38-manylinux1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp38-cp38-manylinux1_i686.whl
  • Upload date:
  • Size: 701.2 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp38-cp38-manylinux1_i686.whl
Algorithm Hash digest
SHA256 a05bfd6502a18a199f87b245421c540bdb095158baa172b4b45681503947c0e2
MD5 2be910443ad8c83cef5017a65ce42eb0
BLAKE2b-256 b22ade15165e928090238636796f925c46ee922e6d8511dfd69bb93914ab59f7

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 153.4 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cd694fec316a1eb48276d9e58cc03e669723f1d18655a614884e5e24a5208fa7
MD5 e23dfaae84c5dbf8a2a64811d4bee0b9
BLAKE2b-256 52f69d4b30d7437bfa824461a310e2d903cc908e84670ebe96cea95f3ccb9b12

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 124.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 83bc85067db6dfc9e47446e3b54180bdf767536cd3942e80c8fb16143dc68759
MD5 5bdb390d1ff729cd253a7c9d9d3908fd
BLAKE2b-256 5e01f7093a2a852ade7f3209b9681ba541ef279a4220345bff89aaffba618338

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 585.9 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a84ee24be29e9d5e0e617b69c2abc66cf6add85da2307a086b5f93100b05cfb
MD5 ff4f96bd6fc3e8da21aad191c3dfeaaa
BLAKE2b-256 7b3fbd2fd6576177a1fb0930d0775c2ed775b5f25f40708c810b443484a7823a

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_i686.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_i686.whl
  • Upload date:
  • Size: 560.4 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp37-cp37m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1fb6f42b64b108b99cd552b1f67b5eaf9cd183d6129d1765b1a0ba2ee6f5a61f
MD5 dfcb37821d7f06106c526cc85b97bd49
BLAKE2b-256 e0588b7ec372c29c70c97d5a663b9d5a628093e10f029b556ebc10ba6daf9c95

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 560.4 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 d28355e26e50c6a599886dc9c28cac4ab9dde64f016087c84637a9e572bf0ca5
MD5 2732d828e20192605046e3389864e240
BLAKE2b-256 fe2ca4d1d156dfdef0e77d2787701be4faf447d4242f36b85a3951fb8ce5150b

See more details on using hashes here.

File details

Details for the file psygnal-0.1.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 150.4 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for psygnal-0.1.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64c4d01afbb96719b06aa8cf32ffe6935bf4c8359a2769a7eb227168d252ed6d
MD5 8ac6e7f954011e1109400e99698ea3b0
BLAKE2b-256 1773e9ddead31388b09acc79a7eaac473cc598b72786d018a516b8437435b441

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page