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)

connect 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()

def no_args_please():
    print(locals())

obj.value_changed.connect(no_args_please)

# 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 (note the order of print statements):

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, and immediately returns to the caller. A threading.Thread object is returned.

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.

Blocking a signal

To temporarily block a signal, use the signal.blocked() context context manager:

obj = MyObj()

with obj.value_changed.blocked():
    # do stuff without obj.value_changed getting emitted
    ...

To block/unblock permanently (outside of a context manager), use signal.block() and signal.unblock().

Pausing a signal

To temporarily block a signal, use the signal.paused() context context manager.

To pause/resume permanently (outside of a context manager), use signal.pause() and signal.resume().

If a function is passed to signal.paused(func) (or signal.resume(func)) it will be passed to functools.reduce to combine all of the emitted values collected during the paused period, and a single combined value will be emitted.

obj = MyObj()
obj.value_changed.connect(print)

# note that signal.paused() and signal.resume() accept a reducer function
with obj.value_changed.paused(lambda a,b: (f'{a[0]}_{b[0]}',), ('',)):
    obj.value_changed('a')
    obj.value_changed('b')
    obj.value_changed('c')
# prints '_a_b_c'

NOTE: args passed to emit are collected as tuples, so the two arguments passed to reducer will always be tuples. reducer must handle that and return an args tuple. For example, the three emit() events above would be collected as

[('a',), ('b',), ('c',)]

and would be reduced and re-emitted as follows:

obj.emit(*functools.reduce(reducer, [('a',), ('b',), ('c',)]))

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.

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.4.tar.gz (27.3 kB view details)

Uploaded Source

Built Distributions

psygnal-0.1.4-cp310-cp310-win_amd64.whl (150.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

psygnal-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl (796.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

psygnal-0.1.4-cp310-cp310-musllinux_1_1_i686.whl (767.3 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

psygnal-0.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (729.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

psygnal-0.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (702.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

psygnal-0.1.4-cp310-cp310-macosx_11_0_arm64.whl (166.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

psygnal-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl (195.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

psygnal-0.1.4-cp39-cp39-win_amd64.whl (149.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

psygnal-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl (793.1 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

psygnal-0.1.4-cp39-cp39-musllinux_1_1_i686.whl (763.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

psygnal-0.1.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (727.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

psygnal-0.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (700.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

psygnal-0.1.4-cp39-cp39-macosx_11_0_arm64.whl (166.2 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

psygnal-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl (195.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

psygnal-0.1.4-cp38-cp38-win_amd64.whl (151.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

psygnal-0.1.4-cp38-cp38-musllinux_1_1_x86_64.whl (961.6 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

psygnal-0.1.4-cp38-cp38-musllinux_1_1_i686.whl (895.2 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

psygnal-0.1.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (888.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

psygnal-0.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (830.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

psygnal-0.1.4-cp38-cp38-macosx_11_0_arm64.whl (161.4 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

psygnal-0.1.4-cp38-cp38-macosx_10_9_x86_64.whl (188.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

psygnal-0.1.4-cp37-cp37m-win_amd64.whl (145.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

psygnal-0.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl (709.8 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

psygnal-0.1.4-cp37-cp37m-musllinux_1_1_i686.whl (683.2 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

psygnal-0.1.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (647.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

psygnal-0.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (620.4 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

psygnal-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl (184.6 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file psygnal-0.1.4.tar.gz.

File metadata

  • Download URL: psygnal-0.1.4.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4.tar.gz
Algorithm Hash digest
SHA256 fafcb5dcc856c1d12adc6046fa5a9fb22e19ffb01f3b9500bc97a20cbc74c20b
MD5 bbdc57d9cfc5785a1621b4c7351bd04c
BLAKE2b-256 3b42f77a5e7303381a5d67b2068a90f2e7c67c025ab3b54fd63570fef5bc078b

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 150.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 eef5a83b509ac08d414de0f0ea3dce214b34146e2bbe92b04404b0fb5a1a0ed4
MD5 a600447d61023a128346f0e192e9b9c1
BLAKE2b-256 cd35cbc724886770b0a1b448e4d3f40bfc0f6ece2e32f3b0fe64ed4ca812a07e

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 796.4 kB
  • Tags: CPython 3.10, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 40454649ec838adc7d3b4c97cd415d4548f7bd9f210fe1052208abb2211251f0
MD5 3c2cd2182f97457a51fb98da164e841f
BLAKE2b-256 186674f7285e74f7bfe3eac18fe6cf664529cc4f5cbda9ca86a051033537429c

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp310-cp310-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 767.3 kB
  • Tags: CPython 3.10, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 739d85fc9631ed4bc2fef028284839a1d364fd45a7e146de6041e7cff5cc97ee
MD5 dfb327e1dd2ebf4be7aec52259b64749
BLAKE2b-256 ef8a5fb4a4b35509b77adb19ba68bb7b597d7447c9db7d1f56e436b1b809dae3

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 5f067dba648e3f3130358d2f3a58d68882454c51bc42582580ae32715140a686
MD5 8391efecc94c65ef3f2499b4608df213
BLAKE2b-256 f53bf098cefd8a073331dee1dd5a2e41d53218b2fc84a2f3a24595d555931b0c

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 e8a1991a803ca5dff1646baf5e192dc7b8a5c2518e2574c4a0430847f73ef806
MD5 3b7ee586bcf0ab0ed419a52b9bd14f8c
BLAKE2b-256 ad308bf9ea0fbe975a80bf0f941e7010ad4f1595b91999677bc332091e1b4e09

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 166.3 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4964aabce72762caebe422da5d0b84e8a97844ae3f5a5629c2cd10acf8f6371
MD5 9ef48bbb96568cae2a746b14d97e9d34
BLAKE2b-256 47af6e6cd31fb7e3ab6d443abf2d0123b5388fd50dfe5f24bcaa2c0dc79dc8c1

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 195.6 kB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 82ef4edc3d98fb6f201eb976c61820e707bb64ac7e1de9051b07e10e67391198
MD5 960d5bea764dd5879366598c0eca6f57
BLAKE2b-256 0a1ea7d7480afff995a2aaeeadf21deb81c7d888f0c5af264e72cd2807a08e54

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 149.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1737e90520f3dc4c4f3965c69f2d5ff36bfa7ab99040b8901a7230a088e312d8
MD5 7c8e43e009c7336c348fe9012e0dc4bd
BLAKE2b-256 7bef6fa1d584369cc48a45290305a14afd55ada99509482d06dcbf44f5bd97a0

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 793.1 kB
  • Tags: CPython 3.9, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 196717dce57094a1d62b5154cfe534a5b7834ea566291cc9600233ef61134428
MD5 20229c47f691682b28e4dc4055327d2e
BLAKE2b-256 e35a9c377a678e8717206f3fbc9dd5df67d968ab3ea0741d5630530faa11ac3f

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp39-cp39-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 763.0 kB
  • Tags: CPython 3.9, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 11044ee46052ea1dfdba915d0514faf4c33b13deb6b19a3e9cbe14cfae5d4b87
MD5 a8fab5f04e8a2ac041320a0f609b0f32
BLAKE2b-256 508adc344d0ef40cc915625a8704e6f5d176a9f8bab7ae4fd38d112c1d8a4463

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 2739960f3cbc7b71f6e6734252b55ebfc0249d9858d143c1c2a743147eade2ab
MD5 cf8e12533a8e7e303371cdd4e6f136f9
BLAKE2b-256 eddd283f634f9daa910bddf953d72397566630728aebc204271290399cd3b66d

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 9961fe4df20eee7f8e7141c659ca105a60f367ac25bca533d3373fe73c06fd21
MD5 3956ca9a0d6578c409bd14c58da23096
BLAKE2b-256 5387f82bf3528e8beaf5fc5220507b3664a4df2ee657f4f56d89186b6e787329

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 166.2 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 feb1bdcf24502d56925c44d95be568db803096d6f7775e0c227c943102b1b6ed
MD5 6abe98371b28a2a130b1e5537f8c4885
BLAKE2b-256 0343cc09a55154db7092f7d6ed3c2593b8c39ad9f5390783e5239f2d3577661e

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 195.4 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2f5c9607407d999159e0707ea87fadb0a2b552547b67e39c831828e2033c4238
MD5 24e6b233393e931c37b9e95c3d2c667a
BLAKE2b-256 0c7af7605cfbf67aa47939e66c6ee0669730c55262c4da5414099a25304d3eff

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 151.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1f846838ea897beec6650bfde217bc4c45648909473e24ac02da247e59c172dd
MD5 a77c5906ffb37c6bfec632a780bb52f2
BLAKE2b-256 1dc3c752fbb9a7710a3273f5f205a805ed150c51b36b65ca94b85ed393aa4d1c

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp38-cp38-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 961.6 kB
  • Tags: CPython 3.8, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 71bf2428583719a994dfe45d9076a92151e53236ea108094907e1c472fbe40c1
MD5 708d435fbe750d5c883b17f988b6fea9
BLAKE2b-256 610e2423192e85c3e0ea117d98aacfd4ec90c74e7c3343f47fbf1015d8fbe1ba

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp38-cp38-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 895.2 kB
  • Tags: CPython 3.8, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 bce11a30236b773f0c12e7638d43c469cbce1f4a6b92f3bbdb349c43d00a690c
MD5 8fbb8c96e285269f3611d06de5c11114
BLAKE2b-256 2f19b2c8683f7a7d1b22d7d67c519502945234d78d53c5baec4f7a4429a26d85

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 341d0ed11f48a3f1ea5e7de9f1e98ae4f453c08a8ce831c867dc4c6dfca4b17e
MD5 4feaba268e1aafe924f881b05a6c10ac
BLAKE2b-256 e73d25786ded755ec0d249bd20f30c27968c1129799f6f96524c94e9a61529c2

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 634ac086bfaae6f3663fe43b804189897f5db0b304dd858e81483b3af6297871
MD5 c8e6458bac296a7af36cc9d79afa6cc3
BLAKE2b-256 0603ad2f664b8e4eb6f6235bd56774950a79235834b07daf24efbf59c00d3e86

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 161.4 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc8d363acebc549df5c9cfff732d9425ae7933df67732e542c438f8ea45cc537
MD5 4b3243710e4c3ba7a2a2e2aa6dc2a7bd
BLAKE2b-256 4932ee7796b4222c7acd36fbe94ddff79a04252442930fdf7c744dcf8d838a34

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 188.3 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f563aaa986917215c387a6c3caa08d89a8efd8d6668a5310245df2e167e772bd
MD5 3a15179a232f0530f9a12645f771eaed
BLAKE2b-256 67224d27b2bdf3eed9da2232d3a6485d9dbcf8343172761c45217d06e3c2c602

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 145.1 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ed8be793e7a17510b462b8d130a22468016c7fecd45c5aa1aebdbc7968f420cf
MD5 066d36a4317fc5ae3ed179aa9a27445a
BLAKE2b-256 c5829e53b1d8d254b5e10a262f7381f3be5643df919118721b5b7174c30b4879

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 709.8 kB
  • Tags: CPython 3.7m, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1b7a39d922cb5b41ebe299ac056b1b7174ea405a40b0267a0f6d07c3d86156fa
MD5 6c84398c440b301ef1d3b6889bb379b6
BLAKE2b-256 43ed7f4a1f263077a73d0b44c3977834b729ca573b3bbaa9dd6049666c6d3b2d

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp37-cp37m-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 683.2 kB
  • Tags: CPython 3.7m, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 340b8f68e4e0c08176deb067fa4d12b794e53d4ba16c19b2b546b8b26f9152b2
MD5 52a5736ce01f9b4eaefe98673b0ff673
BLAKE2b-256 f16f7a49156056b972ec45b30f1d73fc5ae1c85c6b19320a3fe5485a9355c95d

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b6f6cdaa8177bfb5dfb6c553ad2f607c809824bdad004719ada6fe3855ccdbfc
MD5 c94e1a577627d0b4f3a6508094cee043
BLAKE2b-256 e5abf3cd74277614774876298baf540a273f0f9f39dfcf98cd7814a0c18e2369

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psygnal-0.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 e756bad9c01a8894074bd670ed72568ab664182de191e1e1eb6ca59546a59ade
MD5 426fb0da92f79f25cc25cfadcbacc655
BLAKE2b-256 47455fc1a95db4ce48ad21dd6e6380908151990f92d5fb33924fe1dba45d68b9

See more details on using hashes here.

File details

Details for the file psygnal-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: psygnal-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 184.6 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for psygnal-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 84b681d4a2c8399e25c8a3602bca371d1ab2fb6f91e67004cfcddbd3c4fcb5fc
MD5 aaff125dd32737a0e67f62bad155169b
BLAKE2b-256 28e5dc1686677ac48b0b574ca674857e925d8ab86eb537e5d63581235a8d0304

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