Skip to main content

Develop reliable distributed systems on the Dispatch platform.

Project description

dispatch-py

Docs PyPI Test PyPI version Reference

Python package to develop applications with the Dispatch platform.

What is Dispatch?

Dispatch is a platform for developing reliable distributed systems. Dispatch provides a simple programming model based on durable coroutines to manage the scheduling of function calls across a fleet of service instances. Orchestration of function calls is managed by Dispatch, providing fair scheduling, transparent retry of failed operations, and durability.

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

Installation

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

pip install dispatch-py

Usage

The SDK allows Python applications to declare Stateful Functions that the Dispatch scheduler can orchestrate. This is the bare minimum structure used to declare stateful functions:

@dispatch.function
def action(msg):
    ...

The @dispatch.function decorator declares a function that can be run by the Dispatch scheduler. The call has durable execution semantics; if the function fails with a temporary error, it is automatically retried, even if the program is restarted, or if multiple instances are deployed.

In this example, the decorator adds a method to the action object, allowing the program to dispatch an asynchronous invocation of the function; for example:

action.dispatch('hello')

Configuration

To interact with stateful functions, 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 received by the stateful functions originated from the Dispatch scheduler. 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-----...

Finally, the Dispatch instance needs to mount a route on a HTTP server in to receive requests from the scheduler. At this time, the SDK integrates with FastAPI; adapters for other popular Python frameworks will be added in the future.

Integration with FastAPI

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 stateful function. The function runs concurrently to the rest of the program, driven by the Dispatch scheduler.

The instantiation of the Dispatch object on the FastAPI application automatically installs the HTTP route needed for the scheduler to run stateful functions.

Local testing with ngrok

To enable local testing, a common approach consists of using ngrok to setup a public endpoint that forwards to the server running on localhost.

For example, assuming the server is running on port 8000 (which is the default with FastAPI), the command to create a ngrok tunnel is:

ngrok http http://localhost:8000

Running this command opens a terminal interface that looks like this:

ngrok

Build better APIs with ngrok. Early access: ngrok.com/early-access

Session Status                online
Account                       Alice (Plan: Free)
Version                       3.6.0
Region                        United States (California) (us-cal-1)
Latency                       -
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://f441-2600-1700-2802-e01f-6861-dbc9-d551-ecfb.ngrok-free.app -> http://localhost:8000

To configure the Dispatch SDK, set the endpoint URL to the endpoint for the Forwarding parameter; each ngrok instance is unique, so you would have a different value, but in this example it would be:

export DISPATCH_ENDPOINT_URL="https://f441-2600-1700-2802-e01f-6861-dbc9-d551-ecfb.ngrok-free.app"

Durable coroutines for Python

The @dispatch.function decorator can also be applied to Python coroutines (a.k.a. async functions), in which case each await point on another stateful function 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 becomes 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 to stateful functions, for example:

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):
    ...

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

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dispatch_py-0.1.0-cp312-cp312-win_amd64.whl (89.9 kB view details)

Uploaded CPython 3.12Windows x86-64

dispatch_py-0.1.0-cp312-cp312-win32.whl (89.3 kB view details)

Uploaded CPython 3.12Windows x86

dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_x86_64.whl (110.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_s390x.whl (109.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ s390x

dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl (111.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ppc64le

dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_i686.whl (108.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ i686

dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_aarch64.whl (110.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

dispatch_py-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (105.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

dispatch_py-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (106.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

dispatch_py-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (106.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dispatch_py-0.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (105.8 kB view details)

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

dispatch_py-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (104.3 kB view details)

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

dispatch_py-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (87.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dispatch_py-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl (87.5 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

dispatch_py-0.1.0-cp311-cp311-win_amd64.whl (89.9 kB view details)

Uploaded CPython 3.11Windows x86-64

dispatch_py-0.1.0-cp311-cp311-win32.whl (89.3 kB view details)

Uploaded CPython 3.11Windows x86

dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl (108.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_s390x.whl (108.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ s390x

dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl (110.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ppc64le

dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_i686.whl (107.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ i686

dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_aarch64.whl (108.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

dispatch_py-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (104.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

dispatch_py-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (105.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

dispatch_py-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (104.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dispatch_py-0.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (104.3 kB view details)

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

dispatch_py-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (103.0 kB view details)

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

dispatch_py-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (87.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dispatch_py-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (87.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file dispatch-py-0.1.0.tar.gz.

File metadata

  • Download URL: dispatch-py-0.1.0.tar.gz
  • Upload date:
  • Size: 69.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for dispatch-py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c4833d33be00b7fb5f905564a5387dda3a89498826d216f807c551570753bda4
MD5 9e23f32949628219b13376401eadbd9b
BLAKE2b-256 e5d43bf3988b5671c7ee6d492e03d0aec52fed5066e817dd4d3a283f3b215cd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4791386761509b56bf6637d8a89d3311e807e4f3c7027765b057f1dc2c12740c
MD5 63cda17f0b97f4835ee5576bfb834e4b
BLAKE2b-256 44fd81e804164fbc95e99522046b1043fedadbf1ec270bc8f463f2fb4ca70aa9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dispatch_py-0.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 89.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 3f457550ccc73fc3fbe54d43d8c8e0e2cdc92e60e0f893f9386259502acc52fa
MD5 3d55d1d244657a4b13cbb14109c21b58
BLAKE2b-256 c1a98f87af5a9cf4f437c5ef879e8fa4f5d40904037a87f7c1eb7b9a9a7a3ee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 674e0e2ee70a83ec1c59bbbdcf2bba29e423bc111a113aeadf3dac9160a34bcc
MD5 671ed054ed12dde9ccb61f4655dcb6b7
BLAKE2b-256 63c5c24277e92f642d881d79adb161fc2d2b8838d6a176fb6941e5f3a2275df3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 52168ea0107159ee89da5a2cfafeed0c7c3176acf7ab1062f6faef252c7476ce
MD5 cdaeb619b4b38ef17066b9eca0abae56
BLAKE2b-256 308da54f0b1c09f65d92ac394ccd36881484ec45428d7ab74f24b293039c5a66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 166b05df98ceafe870a5154f82a30905f9f69833707ac895d66d6d8bc0fa2288
MD5 4d74df95cdc889a182157cb52adc28ba
BLAKE2b-256 640dbd790faa2ee3abe346f86beba0e7e3e9112aa5d01890d59812e84f8717df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 5776ea8f5cdc72b30261df290c6ed09d4865997d2fcaea34cd6a7236e2c3c84c
MD5 c2a81bfaece8ba421ec3b18b871951fd
BLAKE2b-256 205b57235256edde95246397799fed426b6f3e7ed03c33744f25a98b63a33255

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b545c4ada336be7b18bccab2e759768b8b2e192c0bbb2528460e6439e02e3e7c
MD5 0d78d20e35a06efe5cc85f920e745e85
BLAKE2b-256 0c9e33e34aae34845767a24491a842f68d23e25dc66e0ab590d166a165ed835c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 152db28672d56caad75f00b07cfc021f16d9bf52494611e80bb3c730c7371f94
MD5 cbc5b96043d48642b637b7683c84aea7
BLAKE2b-256 7437f50d94f4ede278b78a0aee5ce13928d636a25f94242ac4163e0f39472620

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 17d9ab410f75b8b58f6eedffcbf0c3b6ae9bd5add3862e5778a7f7fdd05830ee
MD5 86fe0091641b055fbeeb7a1f0ee3da85
BLAKE2b-256 ebad6c3087f56ce800c637b16dd7b067eb0d91bb18c776a82501487aeac3b695

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 be467bc936f78de7d5021c1133f4265f064b5c6b412de6514890d6161732b657
MD5 2a3aee7d3534630a62770cbb9ed70690
BLAKE2b-256 9ed8607b323a97f538d4a8cff9f239b9d35a26948523e6733c95cb93e4b10564

See more details on using hashes here.

File details

Details for the file dispatch_py-0.1.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.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 976a89ed44e7ff889de776e1ac66e76f0901b2409535339d758a1dd91892e476
MD5 44f266fc9532e401329c5f3e845a9fec
BLAKE2b-256 1600257445ea643f0cc20b1d5bbb2552031009a753880702fda12220a4ad5796

See more details on using hashes here.

File details

Details for the file dispatch_py-0.1.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.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 83f94c3d7c4a18c9f5a0ea68f08a0b4730e9e55cdec2e07e70cce180e2d79f62
MD5 4573a64dc3f302572aebdfc183a987d7
BLAKE2b-256 4eda752de062efb646b0d9fbcffbf67590ed28ea7050324e65308e5fcacb2713

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18a05d4fa74edbb97305958e28485f79d9b483cb9b54750b0a7c4c3c9714f338
MD5 8320b517872b807419f3031c4e0292bb
BLAKE2b-256 92dcca8e05d0432ee357a2b87e92efe1ac6a5a34179764bc7383b33a9ddd8a9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d2c09873e8b9b1c551f4b96a5f2966ab8f7fda6d2e922e54772a76279482b93
MD5 38de6e7e32f840035f36f4f03b3fb999
BLAKE2b-256 d57fd0b5318409cd0983e29d9626c6ca1773798b6932eb150a7370f4f9396a96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fa74f98d81fdfbd5a146aa1ccbe1ab4b476df574ad58516948fdbda21d3e0935
MD5 145cc7e4dbaa67a93cde5b4d964b151e
BLAKE2b-256 a6742151980a2740561abd7285aaccd52ffa0ab94237ae811a2878f4fca60e55

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dispatch_py-0.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 89.3 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f28ca1ed73cf963914a850143a5c22f75a06a816203726eaa88068ac7b146866
MD5 8391fdcd8e6e6dfa61827dc4e39e56f7
BLAKE2b-256 2ee94a3f01d57e7a0b1226f02070b1f9cf506e15c03dc3eab3e73ce84c119775

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0b0338107e14e3a4ace6492629dee2f1cb218ca16d8cbdb27c1c4695294822e2
MD5 95786512a1f6fddfa0b364ceda90c700
BLAKE2b-256 d34f1f14cef09f91acffb2a4b713ade604da24689cb1c32402bba9af823f9d73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 5136cb3cd72f4a7b370f9d3f39e77bcb06005df4e72dcd12e0b830edd9b39939
MD5 9c4bea4edc4c702ce14a2d1582303e2b
BLAKE2b-256 1c860fa71f42e22e749540be0f323599b1e6278d2c98b05a846c87ed899cae23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 b65e5130b9953671b0951f1c7cc8196118f212f39192ead9b136fffcf59ebd5d
MD5 b194b88e30ebcd5ccf3c2e9426b765f4
BLAKE2b-256 2360858ebd251c01d9a6c31abfefad41046b56215481ce085f710032a0a70694

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 a2fbbdd52d37d8e1a0e4c43974e79808cd2133687cd77bc878f48eb1198913e9
MD5 318927d5a8ef71cd197ddedcfdaa7937
BLAKE2b-256 5fac6112bfb531db8e94a98c0bc2274d2841a2d5486d7afb269d9c520651b05f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8731ea7ab96bba3f2d867bf431af2043ba58f83a2aecbaa5a003164e702e5e61
MD5 85bf6fbc001633a92c482c2132d1be13
BLAKE2b-256 15bb8bc3aa53568c7e4465b9d464c2bd34ff0bd422d580141df1cfde1cb34457

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 7faea0a8b1e3160abfc6ac7fc037f894f2f6e95c2d919b3b3e16a8620a0c29ac
MD5 53293d1489f4a2e84dccfb22478c3ab1
BLAKE2b-256 8ee15f1a537e02b435422d675bd0c89b01548c3a7024475d8aaf3a9e2b588af2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 756d9e423548e9da8f4137c985c3d91009d088eb039851e6d695a2d5bb9a8ad1
MD5 44fd7883c2ace88520107190da1ae06c
BLAKE2b-256 85af8c86f0da792e1b79ba9b33df0e586ff1fa6d14b0868d6dd974bd64d6620d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 07f31fe9aada00dc6876af9ec44150073c7a26912fef65537f8ec8c1fe529fcc
MD5 745efa77d81a10f9f2bcb38e5a86ae00
BLAKE2b-256 beb51701bd1a16fc83b80850ff2fd5dd2cdfc5cbc6678aec7085fbaa8ed16dc8

See more details on using hashes here.

File details

Details for the file dispatch_py-0.1.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.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e00db13b2ae9fa6733ab2377c8c4a6c8c8e609f564fe154767a76173eee388f0
MD5 7420a2a70e4f7b759487e62ea0cf9e3b
BLAKE2b-256 7febc03e567ccb355f133fdcea3c88c64fd5ffa7f330072219d119097f5731bc

See more details on using hashes here.

File details

Details for the file dispatch_py-0.1.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.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e6ea60f6eae7d7f0bef4bb6e732b762b0033d35bdebf9a827f7fd4f677b73b06
MD5 43e71c22c3a431dd40c363f1c125cfa6
BLAKE2b-256 27336fd7389f9960773995f393a27bba90f65dd48e9708ef1c7f16b784107319

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ddbf1d712b46ad09d83be7c2e290586fc2fd021ce957fa6607270551e33e4068
MD5 4355161cef675c3676e89767dee9484f
BLAKE2b-256 059ae00f1e169db002cd73ae6d82cca678e0efbcd6143bb519af3f4868fd02b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dispatch_py-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1f87bc07ea78683f56cc6f292e33589eaa36c0772fb06c56e6ee38b84e6b9dd4
MD5 64e3217ffa9e18d2fd6010f4b3aaed16
BLAKE2b-256 b44622c30f19d68966425bd13af8638f34f01a0c580d4d8eb01c80d284e67008

See more details on using hashes here.

Supported by

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