Skip to main content

Develop reliable distributed systems with Dispatch.

Project description

dispatch logo

dispatch-py

Docs PyPI Test PyPI version Reference

Python package to develop applications with Dispatch.

What is Dispatch?

Dispatch is a cloud service for developing scalable and reliable applications in Python, including:

  • Event-Driven Architectures
  • Background Jobs
  • Transactional Workflows
  • Multi-Tenant Data Pipelines

Dispatch differs from alternative solutions by allowing developers to write simple Python code: it has a minimal API footprint, which usually only requires using a function decorator (no complex framework to learn), failure recovery is built-in by default for transient errors like rate limits or timeouts, with a zero-configuration model.

To get started, follow the instructions to sign up for Dispatch 🚀.

Installation

Installing the Dispatch CLI

As a pre-requisite, we recommend installing the Dispatch CLI to simplify the configuration and execution of applications that use Dispatch. On macOS, this can be done easily using Homebrew:

brew tap dispatchrun/dispatch
brew install dispatch

Alternatively, you can download the latest dispatch binary from the Releases page.

Note that this step is optional, applications that use Dispatch can run without the CLI, passing configuration through environment variables or directly in the code. However, the CLI automates the onboarding flow and simplifies the configuration, so we recommend starting with it.

Installing the Dispatch SDK

:warning: The Dispatch SDK requires Python 3.8 or higher.

The Python package is published on PyPI as dispatch-py, to install:

pip install dispatch-py

:bulb: The Python SDK has integrations with FastAPI, Flask, or the standard http.server package.

For requests to integrate other frameworks, open an issue on [GitHub](https://github.com/dispatchrun/dispatch-py/issues/new

Usage

Writing Dispatch Applications

The following snippet shows how to write a very simple Dispatch application that does the following:

  1. declare a dispatch function named greet which can run asynchronously
  2. schedule a call to greet with the argument World
  3. run until all dispatched calls have completed
# main.py
import dispatch

@dispatch.function
def greet(msg: str):
    print(f"Hello, ${msg}!")

dispatch.run(greet('World'))

Obviously, this is just an example, a real application would perform much more interesting work, but it's a good start to get a sense of how to use Dispatch.

Running Dispatch Applications

The simplest way to run a Dispatch application is to use the Dispatch CLI, first we need to login:

dispatch login

Then we are ready to run the example program we wrote above:

dispatch run -- python3 main.py

Writing Transactional Applications with Dispatch

The @dispatch.function decorator can also be applied to Python coroutines (a.k.a. async functions), in which case each await point becomes a durability step in the execution. If the awaited operation fails, it is automatically retried, and the parent function is paused until the result are available or a permanent error is raised.

@dispatch.function
async def pipeline(msg):
    # Each await point is a durability step, the functions can be run across the
    # fleet of service instances and retried as needed without losing track of
    # progress through the function execution.
    msg = await transform1(msg)
    msg = await transform2(msg)
    await publish(msg)

@dispatch.function
async def publish(msg):
    # Each dispatch function runs concurrently to the others, even if it does
    # blocking operations like this POST request, it does not prevent other
    # concurrent operations from carrying on in the program.
    r = requests.post("https://somewhere.com/", data=msg)
    r.raise_for_status()

@dispatch.function
async def transform1(msg):
    ...

@dispatch.function
async def transform2(msg):
    ...

This model is composable and can be used to create fan-out/fan-in control flows. gather can be used to wait on multiple concurrent calls:

from dispatch import gather

@dispatch.function
async def process(msgs):
    concurrent_calls = [transform(msg) for msg in msgs]
    return await gather(*concurrent_calls)

@dispatch.function
async def transform(msg):
    ...

Dispatch converts Python coroutines to Distributed Coroutines, which can be suspended and resumed on any instance of a service across a fleet. For a deep dive on these concepts, read our blog post on Distributed Coroutines with a Native Python Extension and Dispatch.

Integration with FastAPI

Many web applications written in Python are developed using FastAPI. Dispatch can integrate with these applications by instantiating a dispatch.fastapi.Dispatch object. When doing so, the Dispatch functions declared by the program can be invoked remotely over the same HTTP interface used for the FastAPI handlers.

The following code snippet is a complete example showing how to install a Dispatch instance on a FastAPI server:

from fastapi import FastAPI
from dispatch.fastapi import Dispatch
import requests

app = FastAPI()
dispatch = Dispatch(app)

@dispatch.function
def publish(url, payload):
    r = requests.post(url, data=payload)
    r.raise_for_status()

@app.get('/')
def root():
    publish.dispatch('https://httpstat.us/200', {'hello': 'world'})
    return {'answer': 42}

In this example, GET requests on the HTTP server dispatch calls to the publish function. The function runs concurrently to the rest of the program, driven by the Dispatch SDK.

Integration with Flask

Dispatch can also be integrated with web applications built on Flask.

The API is nearly identical to FastAPI above, instead use:

from flask import Flask
from dispatch.flask import Dispatch

app = Flask(__name__)
dispatch = Dispatch(app)

Configuration

The Dispatch CLI automatically configures the SDK, so manual configuration is usually not required when running Dispatch applications. However, in some advanced cases, it might be useful to explicitly set configuration options.

In order for Dispatch to interact with functions remotely, the SDK needs to be configured with the address at which the server can be reached. The Dispatch API Key must also be set, and optionally, a public signing key should be configured to verify that requests originated from Dispatch. These configuration options can be passed as arguments to the the Dispatch constructor, but by default they will be loaded from environment variables:

Environment Variable Value Example
DISPATCH_API_KEY d4caSl21a5wdx5AxMjdaMeWehaIyXVnN
DISPATCH_ENDPOINT_URL https://service.domain.com
DISPATCH_VERIFICATION_KEY -----BEGIN PUBLIC KEY-----...

Serialization

Dispatch uses the pickle library to serialize coroutines.

Serialization of coroutines is enabled by a CPython extension.

The user must ensure that the contents of their stack frames are serializable. That is, users should avoid using variables inside coroutines that cannot be pickled.

If a pickle error is encountered, serialization tracing can be enabled with the DISPATCH_TRACE=1 environment variable to debug the issue. The stacks of coroutines and generators will be printed to stdout before the pickle library attempts serialization.

For help with a serialization issues, please submit a GitHub issue.

Examples

Check out the examples directory for code samples to help you get started with the SDK.

Contributing

Contributions are always welcome! Would you spot a typo or anything that needs to be improved, feel free to send a pull request.

Pull requests need to pass all CI checks before getting merged. Anything that isn't a straightforward change would benefit from being discussed in an issue before submitting a change.

Remember to be respectful and open minded!

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

dispatch_py-0.8.0.tar.gz (86.2 kB view details)

Uploaded Source

Built Distributions

dispatch_py-0.8.0-cp312-cp312-win_amd64.whl (115.8 kB view details)

Uploaded CPython 3.12 Windows x86-64

dispatch_py-0.8.0-cp312-cp312-win32.whl (115.1 kB view details)

Uploaded CPython 3.12 Windows x86

dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_x86_64.whl (141.0 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_s390x.whl (140.6 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ s390x

dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_ppc64le.whl (142.3 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ ppc64le

dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_i686.whl (139.3 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_aarch64.whl (141.2 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (137.4 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (138.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (138.2 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

dispatch_py-0.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

dispatch_py-0.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (135.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dispatch_py-0.8.0-cp312-cp312-macosx_11_0_arm64.whl (113.7 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

dispatch_py-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl (113.3 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

dispatch_py-0.8.0-cp311-cp311-win_amd64.whl (115.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

dispatch_py-0.8.0-cp311-cp311-win32.whl (115.0 kB view details)

Uploaded CPython 3.11 Windows x86

dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_x86_64.whl (140.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_s390x.whl (139.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ s390x

dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_ppc64le.whl (142.0 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ppc64le

dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_i686.whl (138.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_aarch64.whl (140.4 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (136.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (138.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (137.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

dispatch_py-0.8.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (136.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

dispatch_py-0.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (135.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dispatch_py-0.8.0-cp311-cp311-macosx_11_0_arm64.whl (113.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

dispatch_py-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl (113.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

File details

Details for the file dispatch_py-0.8.0.tar.gz.

File metadata

  • Download URL: dispatch_py-0.8.0.tar.gz
  • Upload date:
  • Size: 86.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for dispatch_py-0.8.0.tar.gz
Algorithm Hash digest
SHA256 0be51268edac03f68dcd18e93a1f690cd780541fd4ea2c443015909efa2786c4
MD5 fdf8891274619b482ffdbea7418000b1
BLAKE2b-256 5c4daa1c6278e035ea7e2f8f9829c950fa09ddcbc875b3a2cecd853277129ce2

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 50365bafb08a6c76ec7d1e33554523edf5410f284fe1b7db1320f4fb1ba7eb8a
MD5 9979299f7aacb657d74650bdeac05d35
BLAKE2b-256 830face3af052e4214fa064afb33f621ac73ce719a9afd8fdf4c1ffd3a0144fc

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: dispatch_py-0.8.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 115.1 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a0a23a75c151633aedbade4431961e98ffab4f30cba4ccfe46d500087cfa156d
MD5 6fe7ba444c99c746314c9cb752a0064c
BLAKE2b-256 aea6d7615943f292572d81f872c78267a8a56101721cca84fc11d7fcaf10222d

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d6b80f4f8110bbd90b0d3be2d66f311434c06edfc850cd5bb873301cc5fbc004
MD5 6d92683af6c88d4f96e04bf6acfc72fc
BLAKE2b-256 c9f65b2cbc3ee579bdfb91b6d67a083614f5f82b3eb34487a71aaf0697d2a254

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 40f2d50c58e49a9a3fb14acb240b5f058a91e21bd578cc270d52d532f8adcfd9
MD5 4daf072f1974522846b0be7bb4511a4e
BLAKE2b-256 a3f4ae7771f2a6dcd07fc9103d3b32a7725f0ea12c38cbf01ec039d1426c38e7

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 4b7020c3676baffc992d43dc5ce7f616048b8effef8866fcdf8f0d6bdc51cee2
MD5 fdbeb901afb78a89871329acf8bf7525
BLAKE2b-256 72ce0a6ab08e98897f135d6eecf9baec581feac1b6219ec7b648d34a88f69afb

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 fdc714e1c22b0edf475c4edc821d72f34daf2c6701ea6262dc25158de47b273d
MD5 6cecb5059dafcaef2ef033a1e0389a2d
BLAKE2b-256 321b6fedd0f34eb7bc92526827f0439b8f177124cdcc17f0d98bf2f0693316e4

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b2faacde3fd9b2af6a4ff96365242ad03efcb07e3efd56e464092026bbc06ec3
MD5 82be0a19cabe84d0ee66f98a32da2f37
BLAKE2b-256 ec32c66cd159ea8897f20e9fe607cfbf4f409ad4f0010cae2e1e6f10cae1bdc4

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a31adc2bb3f4bafb54fc0e2290527e9ef29646e31d880842ce8d383379988a7e
MD5 db5c75ac20b4c4a5e7fdd2679345e6b9
BLAKE2b-256 762be9ec1564823c73b4cd5bd73133a4cae6bc7cc4d19a335309b9f638bf5a61

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 79412093828c666633e90aab1c39105b1bfe2fdd50a904f2813009d8a1762791
MD5 17983c040daff22fd26ef87db47ed4e2
BLAKE2b-256 84e61e539d1625f756eb80083ace73114113e1b14f1542b113962da6b7c746df

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8609691a2db78e3634afecd9e9e372b85641a11b2ee61462d41910112c564814
MD5 d54426f6e6ce8074dfc79c9b4fe23e8e
BLAKE2b-256 9a506d1ce9586cf9650c28a8b3d0280ff116e09cfcac57f7c546f86356ba1206

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0852c4a6b823a00e8e1231e439aad85fd7ea77117457b686ff9bf4d323827173
MD5 2194aec9929336b7f54cc648432b5e31
BLAKE2b-256 9552ffcf6528e443f7cb917cec7c77c5e0b6f4d3f0f1fd4b6d12937db9f07d7a

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6861dc404e6099992b76bc54cacc44e7b0415a0cf31613493d05cb6ee6f0908f
MD5 8f81f1bdf51730800f6fd1db34e4eaa6
BLAKE2b-256 97a2d7c12cc93de2a4b4b9db34943c007a2f74035421afc1802e0f216adfd3d0

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24348d2a0e4512cf7c3cdea021695b37af185be3a9cc236932528694f8eb04a0
MD5 d827bb34c2f222ea690b9914054fc005
BLAKE2b-256 53224ceace0fdaa4e13ac99dc279f8407b01b552d857b185a101b95b6cef8748

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2bcebafb78429f3c15c6d2f4929ea428a329d7848691ac64c6bd87cd04a1c511
MD5 adad3f981614257bb9fe979031fddba3
BLAKE2b-256 379256b09f9f5cdd7ff3df0fa329551db19c13067a35f58ddf8a8514cd7845cb

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4c4cdd9d92a4f9397bb6fbc501fb782e45df42228dcf423005f353ed4f996b1f
MD5 d2caac841991dc7cd9148c6e5664b166
BLAKE2b-256 d7e3cd2c2649e9bfb555acaefdb99677e53a7769b2005e49e7efbd2d3ad1fc82

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: dispatch_py-0.8.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 115.0 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 3b2febc024e9e8bb95f92f5103f07f9340febc8d6b63f4d2a85b93f5af8933ea
MD5 53e911b4230f91a37f451a392d6f807b
BLAKE2b-256 9bf211c45bb9586be5bdf525e6ed0b1b86a9e9b5bd702920f5812df3c0d0a45e

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5bc46efa48b359ec79eea84b276068b89b9c473cd5a340539a93af320ca912fb
MD5 1f55365cc19602bd577af76b52d4aa45
BLAKE2b-256 027e05e6e022e3db00e49f4502d82a6759afa82a677bab4df1cac3fdf2e72e30

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 c83173e23dbb9ffe7888e866769978a75a7c03b19a4b290b9dcda17424cfb309
MD5 5d625ba8a1e6a91085bbfe6b91ac3fb1
BLAKE2b-256 9ae95ae903801703adc91451aa1dec989812563548a972da96ecba8c6ae63a8b

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 0d52b2c6e2907e76490a0cf5dff3ace63ab053f432926f8811d608d27d48a32a
MD5 d3db1484ba7c482e91abbc0ff8ccca29
BLAKE2b-256 0aaec788d9282ec849bfa748d33cc6ca7fe9fb515c522c2144de3b48db98a934

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 8cac39af650a833531033b2d9b1cb7634f32d32cca2537ec6ea78b3b245d0ac5
MD5 301e7087aafb49d87192e478836613f0
BLAKE2b-256 4f761824c6d802069eea3c9bea2d2bc925023f3090339e9f3fcc42fccda0126b

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 7743d8b33760eaea243302e758fb01e60cec06a225d5c108f85e309f957c33df
MD5 773841694fc5418352b2892cccdd8681
BLAKE2b-256 785b9e82c2c3cb6c17e12e5d850ad60beebba07b7b51d1913b02c01d6e073142

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e22e5729c30f816d9c4f49dd87f563296aab67387df8d3ac150c9590e3452d47
MD5 6e62a5d61dd9429a7246a1bf6937ee3b
BLAKE2b-256 4535afc3a1d2934b6a4db2f184bb738109ecdca94fee48f6f5d6cedf8458085f

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9c28169b7e861cc4ef723a253ac2f4af60563d15d30bc9b3c3ad333e914281ed
MD5 463d328b2a51e1c46b941c78c9801b09
BLAKE2b-256 fcf1969fca236218ef122d6d4c97a64ae37ac2ce5cd8b7541ca7af32a44918b7

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b91c22c4803c7b8102a07f5f2ff891b1f67e66512bc85b3049ab85b0474ac43
MD5 dd858309a5ec69a6c48ff556dfeca355
BLAKE2b-256 29dc691ae0e9799e6cee13c0109ce0af6c742b4d949558386de04bce1db68708

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74d133a7950d0bc2923b5379c0a2d0a6db37915eeb0ff1d50b8b723308afb5a0
MD5 6ab1c355ca0b3c33a7fd4eaaaa97b5d3
BLAKE2b-256 6be5afd7ef9e5a11aabb00ddce5065b3ca1ffbbdac8a461ae4c1ea2ed6e13565

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c1972f35481ed62622d8f621dc86fedcba86fd29bb9a7f2cbf0642e6f7894034
MD5 97c696c41ea1ecc3f931dc3628f6f9a3
BLAKE2b-256 72b6e5b5865f503125ad0e2f212f2998e66655b82450cab6b5f2a997e8190a26

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0e4e5b6f06e2b39dba70adbf872df5c720fd0bae0724ccb7b4bffe231c94699
MD5 0b2eb6beaa72b4eb5fd9cada4d30c45e
BLAKE2b-256 b500ed552533d4d6001b5d7d0f3a9c8e31370052a5129cc63f387b7edf98d9a8

See more details on using hashes here.

File details

Details for the file dispatch_py-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dispatch_py-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5f30d04a041704c1eb4a7abf7cf55117507898481853996b34f04711074b1156
MD5 602966fe225898597734a9e1d6987905
BLAKE2b-256 80243394aaad19a0980b326e78aaf6ae9ad9a058c7e026b2bf40e4eec897b38a

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