Skip to main content

Python actor framework for heterogeneous computing.

Project description


Python actor framework for heterogeneous computing.

PyPI Latest Release Coverage Build Status License

What is actor

Writing parallel and distributed programs is often challenging and requires a lot of time to deal with concurrency issues. Actor model provides a high-level, scalable and robust abstraction for building distributed applications. It provides several benefits:

  • Scalability: Actors easily scale across nodes. The asynchronous, non-blocking nature of actors allows them to handle huge volumes of concurrent tasks efficiently.
  • Concurrency: The actor model abstracts over concurrency, allowing developers to avoid raw threads and locks.
  • Modularity: An actor system decomposes naturally into a collection of actors that can be understood independently. Actor logic is encapsulated within the actor itself.

Why Xoscar

Xoscar implements the actor model in Python and provides user-friendly APIs that offer significant benefits for building applications on heterogeneous hardware:

  • Abstraction over low-level communication details: Xoscar handles all communication between actors transparently, whether on CPUs, GPUs, or across nodes. Developers focus on application logic rather than managing hardware resources and optimizing data transfer.
  • Flexible actor models: Xoscar supports both stateful and stateless actors. Stateful actors ensure thread safety for concurrent systems while stateless actors can handle massive volumes of concurrent messages. Developers choose the appropriate actor model for their needs.
  • Batch method: Xoscar provides a batch interface to significantly improve call efficiency when an actor interface is invoked a large number of times.
  • Advanced debugging support: Xoscar can detect potential issues like deadlocks, long-running calls, and performance bottlenecks that would otherwise be nearly impossible to troubleshoot in a heterogeneous environment.
  • Automated recovery: If an actor fails for any reason, Xoscar will automatically restart it if you want. It can monitor actors and restart them upon failure, enabling fault-tolerant systems.

Overview

architecture.png Xoscar allows you to create multiple actor pools on each worker node, typically binding an actor pool to a CPU core or a GPU card. Xoscar provides allocation policies so that whenever an actor is created, it will be instantiated in the appropriate pool based on the specified policy.

When actors communicate, Xoscar will choose the optimal communication mechanism based on which pools the actors belong to. This allows Xoscar to optimize communication in heterogeneous environments with multiple processing units and accelerators.

Where to get it

PyPI

Binary installers for the latest released version are available at the Python Package Index (PyPI).

# PyPI
pip install xoscar

Build from source

The source code is currently hosted on GitHub at: https://github.com/xorbitsai/xoscar .

Building from source requires that you have cmake and gcc installed on your system.

  • cmake >= 3.11
  • gcc >= 8
# If you have never cloned xoscar before
git clone --recursive https://github.com/xorbitsai/xoscar.git
cd xoscar/python
pip install -e .

# If you have already cloned xoscar before
cd xoscar
git submodule init
git submodule update
cd python && pip install -e .

APIs

Here are basic APIs for Xoscar.

Define an actor

import xoscar as xo

# stateful actor, for stateless actor, inherit from xo.StatelessActor
class MyActor(xo.Actor):
    def __init__(self, *args, **kwargs):
        pass

    async def __post_create__(self):
        # called after created
        pass

    async def __pre_destroy__(self):
        # called before destroy
        pass

    def method_a(self, arg_1, arg_2, **kw_1):  # user-defined function
        pass

    async def method_b(self, arg_1, arg_2, **kw_1):  # user-defined async function
        pass

Create an actor

import xoscar as xo

actor_ref = await xo.create_actor(
    MyActor, 1, 2, a=1, b=2,
    address='<ip>:<port>', uid='UniqueActorName')

Get an actor reference

import xoscar as xo

actor_ref = await xo.actor_ref(address, actor_id)

Invoke a method

# send
await actor_ref.method_a.send(1, 2, a=1, b=2)
# equivalent to actor_ref.method_a.send
await actor_ref.method_a(1, 2, a=1, b=2)
# tell, it sends a message asynchronously and does not wait for a response.
await actor_ref.method_a.tell(1, 2, a=1, b=2)

Batch method

Xoscar provides a set of APIs to write batch methods. You can simply add a @extensible decorator to your actor method and create a batch version. All calls wrapped in a batch will be sent together, reducing possible RPC cost.

Define a batch method

import xoscar as xo

class ExampleActor(xo.Actor):
    @xo.extensible
    async def batch_method(self, a, b=None):
        pass

Xoscar also supports creating a batch version of the method:

class ExampleActor(xo.Actor):
    @xo.extensible
    async def batch_method(self, a, b=None):
        raise NotImplementedError  # this will redirect all requests to the batch version

    @batch_method.batch
    async def batch_method(self, args_list, kwargs_list):
        results = []
        for args, kwargs in zip(args_list, kwargs_list):
            a, b = self.batch_method.bind(*args, **kwargs)
            # process the request
            results.append(result)
        return results  # return a list of results

In a batch method, users can define how to more efficiently process a batch of requests.

Invoke a batch method

Calling batch methods is easy. You can use <method_name>.delay to make a batched call and use <method_name>.batch to send them:

ref = await xo.actor_ref(uid='ExampleActor', address='127.0.0.1:13425')
results = await ref.batch_method.batch(
    ref.batch_method.delay(10, b=20),
    ref.batch_method.delay(20),
)

License

Apache 2

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

xoscar-0.4.6.tar.gz (128.3 kB view details)

Uploaded Source

Built Distributions

xoscar-0.4.6-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12 Windows x86-64

xoscar-0.4.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

xoscar-0.4.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

xoscar-0.4.6-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

xoscar-0.4.6-cp312-cp312-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

xoscar-0.4.6-cp312-cp312-macosx_10_9_universal2.whl (2.0 MB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

xoscar-0.4.6-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

xoscar-0.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

xoscar-0.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

xoscar-0.4.6-cp311-cp311-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

xoscar-0.4.6-cp311-cp311-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

xoscar-0.4.6-cp311-cp311-macosx_10_9_universal2.whl (2.0 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

xoscar-0.4.6-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

xoscar-0.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

xoscar-0.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

xoscar-0.4.6-cp310-cp310-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

xoscar-0.4.6-cp310-cp310-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

xoscar-0.4.6-cp310-cp310-macosx_10_9_universal2.whl (2.0 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

xoscar-0.4.6-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

xoscar-0.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

xoscar-0.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

xoscar-0.4.6-cp39-cp39-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

xoscar-0.4.6-cp39-cp39-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

xoscar-0.4.6-cp39-cp39-macosx_10_9_universal2.whl (2.0 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file xoscar-0.4.6.tar.gz.

File metadata

  • Download URL: xoscar-0.4.6.tar.gz
  • Upload date:
  • Size: 128.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for xoscar-0.4.6.tar.gz
Algorithm Hash digest
SHA256 d81429979d052d444ecc2b7e054edab92dfb8c17c0860512e3acbec40e6f9886
MD5 5a128bce1e472d9e079724c09035418a
BLAKE2b-256 9210bf763c5367b73536bcac15de0af795a10bdbe87aae657e12cc157260a298

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: xoscar-0.4.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for xoscar-0.4.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fd6bd09cd8834eecdb53993208dee2636dacb756453784432e00d8299fbd3222
MD5 a72f31644295123d4c75bd9cf3837cea
BLAKE2b-256 6b1f18607d2c24ba5ffc2595a5afe3e05c44c7b7a04f02e7136a5f6d06780571

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58c8355b3f6b8921c648bb283ab31cb0870ac1c215167ca3c394f8cbf9376316
MD5 e5d47f0afb9df2980ec5104b5db81183
BLAKE2b-256 42e988bf169182e9a391347152ac135fa1610da8a9f71e548345656a048a1be7

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cdeb070b8a593e8f59a067f0fb3989ee76e69e48550b2fadb23284222f53c97e
MD5 ce9cca1f834e8813b2dc79c5d1e89103
BLAKE2b-256 39961d9944861115f3a40478176d4c5b41bc83a9be3ecd023626aad9cf9c6bd0

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 114a2b62a99e619c29d21a39f7a0304a42c344297ab05ce3c9d2f607b6fc9f46
MD5 a2a010be751fad897c8a899bf880b27e
BLAKE2b-256 70a897d44f467516f11ba8de94fc68aa005633ed292da33a052188634a25e909

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6bb3d95056ae4b4e5f66bbe93441d2eb5d810434ec944a573e2a50b287ab34c2
MD5 d739bab89ad6228551534df7ac579b33
BLAKE2b-256 d85c46ee404e42eedfd78f2bc896aebf68f3afa3e91a8948fb95c14ce1f2df53

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 402aacc03c4821508c69f29d314c98e9d0c5ffbdad0bc7d7ad1cbd45fffe237d
MD5 b495a83cb35843547d75a890dbc0505e
BLAKE2b-256 2b6b6600ae14307b172255abed318fb9e940b2073ef7584b7bcb43ad7bda940e

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: xoscar-0.4.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for xoscar-0.4.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 84fb051b3caa9da5c5db4dab0aea48b3776e751507d11b02b09b3f4a6a812b26
MD5 31e867fa0f16305657e5f46e0f4a8a81
BLAKE2b-256 74cac2246c7c223319fcf14e2818ac0912292b8f2b8e537d5ff5cf6e40668718

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1f04873df993633f7bb316b3dd7dac92a33b565a04cf400f2c307f316136196
MD5 dc4a23ee0301d6d25dd8899327510356
BLAKE2b-256 a6a10d37992510a8c6011c453845cf74a41220e391516281ea300761d236baa8

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ebd7bcb777a0fcba6aa97e4cbf7bb727d3741c8cb569b61873fee37841a925b9
MD5 18bc8f4447e6b545d55cde9b09671911
BLAKE2b-256 7a8983d5d369e99784ba6d426d5c903f90f38062f1bbd2050c61f5742967aed2

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb3f8b5dd1e8654340c8b70ef71a387e7fbeb795e15986d05cf56d0138bb0172
MD5 d3b010e80aa49060d87a683033340e77
BLAKE2b-256 a77349807ff742a69581ce3074c6625be950cc3298fbdb65e9e67990c252c200

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 796c66cb03737955a2c3f40a643b35b6673b28f225a683701db7d40b18961efd
MD5 d7ae869181195aa3dc9e50a49457aee5
BLAKE2b-256 bf2ea37b1018a178413193a560b116e9e02f3635b6e79cc2bbae506803475260

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3159d452a97bd61d549ceaaf0a212c85c62cc7edacfac570b3b07ff4aa1391d2
MD5 a075c35ef207f6299801908d53ed4a9f
BLAKE2b-256 96fe9a3585f9ed5cefb071b1002904e5aba221daa24d09042e23f9631ec8782c

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: xoscar-0.4.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for xoscar-0.4.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 696a827e8483ba6c875744fe220986a98f88c5dff42a5eb102b218821ecbdd64
MD5 16867817352f50ca6aa543cc6c801f03
BLAKE2b-256 2448437ed704e140495ebabe100365d8d940df85bd75ce11e01473d67b7514fd

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bb9391c9be61b922900f61a93ca70f7c9ca3471065a0d1eb60dfffd8afb9d2b
MD5 4156f888ed85aeb73d0e2b24b24c65e7
BLAKE2b-256 03e87d105959db5023b57b5d1138edb2a97dcf7a510eae1ec992655768d2a226

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6b101927c73f7c73e1b4c1f9234acefd06f2507954ffb7a93c16b586fd6799df
MD5 36d1d3c802f7f514ecaf5980e76265ab
BLAKE2b-256 a8c1167b2097460f486d1700c98dc29a1e0504dd1cc8405dcf2c4850e7041510

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb66f0182d593fd82f4cfbc7a44dd73e5ed6a1a4bd20e803b086a184e6f95447
MD5 cd66e2ea817ae4ef55f0b7a60fb8eb4e
BLAKE2b-256 3776652adbec46272c9e956677554974356a2f99589718720539a5a092f39e52

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2ce1b6e4149f6b2e0d0fdfceb105299cbb4ffaae5cb02ccf9f04419b0896560d
MD5 274be1a8b5eae5191348b1d6954afba4
BLAKE2b-256 570f65dc37ee492f47f0e7b8dcb3b41d289e6b13ab70ca27904ae5518338fac8

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e6c635ffab4dcf824787d70c820230c324e2cf4dd81360c48537b8863e192b11
MD5 d76f16b2de022c1e0d2d83159f04c6ad
BLAKE2b-256 ee05d75ed409eff2a073df7431e6972b442847078bedfaf713e18a8764563dab

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: xoscar-0.4.6-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for xoscar-0.4.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2e00e6049b3fad4d6be79851d2347b617e9a9f7d28d856524830dcb596462cf4
MD5 064fcbeab185c3d287897039d813859e
BLAKE2b-256 9f1636d80718be119fbc39c62e9dbbcf13ca48eff694e99aa7adb7389ab8162c

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4c32c3847626fefdd34d4ba49d0c29b0a746ac828bb5a05ae3c18ee1608305c
MD5 4f4c99d7d16b72f34c948619462f6beb
BLAKE2b-256 193618899c1e2f09130d7c3bb94f3def7b422b24ada6bde3f8703935953ba213

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a3c1c318897ae1982f13b8b87b904fd24a5fb0f3e2a01a3edcb91c798903c686
MD5 ac78b436fadad11a8631aaf40e2b1b2b
BLAKE2b-256 c8e4e388c2b83a5838bb4acab72498959c20e5f6d810c095941373ff0fab8c38

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c65d36fd224c2b07dc002dada7bbac8152c42854548e266d2b48537b65391acc
MD5 5122ed8bd58ee7f049ab89d2e692565b
BLAKE2b-256 52cb216dea72d8f6bbc72d5b6f0c86fea9ea4def1c08cb81f4042184cee121f2

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8e1b38aab96e5dd5760ea6c504751ab3006e09e5f3b26c34f583da8701c14eaf
MD5 edfc41b6901fc02ada9df0a0b67d0745
BLAKE2b-256 9e5b0f4bccdd6caa555c8f009c0fe114afa2a239e8538478c546aa11d2ebcd29

See more details on using hashes here.

File details

Details for the file xoscar-0.4.6-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for xoscar-0.4.6-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d207b7333da1f8d06d6f2d6c88131c020e9e65c83224d5eb4afc80fea5737eeb
MD5 6d21a5d038a3909c0f65156c5097ef1c
BLAKE2b-256 11cd0049e767732e611d43988a2491eab261a680ba6dd5af1a0e3565c0de7181

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 Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page