Skip to main content

C-Two is a resource-RPC framework that enables resource-oriented classes to be remotely invoked across different processes or machines.

Project description

C-Two

A resource-oriented RPC framework for Python — turn stateful classes into location-transparent distributed resources.

PyPI Free-threading License

中文版


Basic Idea

  • Resources, not services — C-Two doesn't expose RPC endpoints. It makes Python classes remotely accessible while preserving their stateful, object-oriented nature.

  • Zero-copy when local, transparent when remote — Same-process calls skip serialization entirely. Cross-process calls use shared memory. Cross-machine calls go over HTTP. Your code doesn't change.

  • Built for scientific Python — Native support for Apache Arrow, NumPy arrays, and large payloads (chunked streaming for data beyond 256 MB). Designed for computational workloads, not microservices.

  • Rust-powered transport — The IPC layer uses a Rust buddy allocator for shared memory and a Rust HTTP relay for high-throughput networking.


Quick Start

pip install c-two

Define a resource interface and its implementation

import c_two as cc

# Interface — declares which methods are remotely accessible
@cc.icrm(namespace='demo.counter', version='0.1.0')
class ICounter:
    def increment(self, amount: int) -> int: ...

    @cc.read
    def value(self) -> int: ...

    def reset(self) -> int: ...


# Implementation — a plain Python class holding state
class Counter:
    def __init__(self, initial: int = 0):
        self._value = initial

    def increment(self, amount: int) -> int:
        self._value += amount
        return self._value

    def value(self) -> int:
        return self._value

    def reset(self) -> int:
        old = self._value
        self._value = 0
        return old

Use it locally (zero serialization)

cc.register(ICounter, Counter(initial=100), name='counter')
counter = cc.connect(ICounter, name='counter')

counter.increment(10)    # → 110
counter.value()          # → 110
counter.reset()          # → 110 (returns old value)
counter.value()          # → 0

cc.close(counter)

Or remotely — same API, different address

# Server process
cc.set_address('ipc:///tmp/my_server')
cc.register(ICounter, Counter(), name='counter')

# Client process (separate terminal)
counter = cc.connect(ICounter, name='counter', address='ipc:///tmp/my_server')
counter.increment(5)     # works identically
cc.close(counter)

See examples/ for complete runnable demos.


Core Concepts

ICRM — Interface

An ICRM (Interface of Core Resource Model) declares which CRM methods are remotely accessible. Decorated with @cc.icrm(), method bodies are ... (pure interface — no implementation).

@cc.icrm(namespace='demo.greeter', version='0.1.0')
class IGreeter:
    @cc.read                              # concurrent reads allowed
    def greet(self, name: str) -> str: ...

    @cc.read
    def language(self) -> str: ...

Methods can be annotated with @cc.read (concurrent access allowed) or left as default write (exclusive access).

CRM — Core Resource Model

A CRM is a plain Python class that holds state and implements domain logic. It is not decorated — the framework discovers its methods through the ICRM interface.

class Greeter:
    def __init__(self, lang: str = 'en'):
        self._lang = lang
        self._templates = {'en': 'Hello, {}!', 'zh': '你好, {}!'}

    def greet(self, name: str) -> str:
        return self._templates.get(self._lang, 'Hi, {}!').format(name)

    def language(self) -> str:
        return self._lang

Component — Consumer

Components consume CRM resources through ICRM proxies. The proxy is location-transparent — it works the same whether the CRM is in the same process or on a remote machine.

greeter = cc.connect(IGreeter, name='greeter')
greeter.greet('World')     # → 'Hello, World!'
cc.close(greeter)

@transferable — Custom Serialization

For custom data types that need to cross the wire, use @cc.transferable. Without it, pickle is used as fallback.

@cc.transferable
class GridAttribute:
    level: int
    global_id: int
    elevation: float

    def serialize(data: 'GridAttribute') -> bytes:
        # Custom serialization (e.g., Apache Arrow)
        ...

    def deserialize(raw: bytes) -> 'GridAttribute':
        ...

serialize and deserialize are written as instance-style methods but are automatically converted to @staticmethod by the framework.


Examples

Single Process — Thread Preference

When cc.connect() targets a CRM registered in the same process, the proxy calls methods directly with zero serialization overhead.

import c_two as cc

# Register two CRMs in the same process
cc.register(IGreeter, Greeter(lang='en'), name='greeter')
cc.register(ICounter, Counter(initial=100), name='counter')

# Connect — zero-serde thread-local proxies
greeter = cc.connect(IGreeter, name='greeter')
counter = cc.connect(ICounter, name='counter')

print(greeter.greet('World'))    # → Hello, World!
print(counter.value())           # → 100
counter.increment(10)

# Cleanup
cc.close(greeter)
cc.close(counter)
cc.shutdown()

Best for: local prototyping, testing, single-machine computation.

Multi-Process — IPC

Separate server and client processes communicating over Unix domain sockets with shared memory.

Server (server.py):

import c_two as cc

cc.set_address('ipc://my_server')
cc.register(IGrid, grid_instance, name='grid')
print(f'Listening at {cc.server_address()}')

cc.serve()  # blocks until interrupted

Client (client.py):

import c_two as cc

grid = cc.connect(IGrid, name='grid', address='ipc://my_server')
infos = grid.get_grid_infos(1, [0, 1, 2])
keys = grid.subdivide_grids([1], [0])

cc.close(grid)
cc.shutdown()

Best for: multi-process on same host, worker isolation, high-throughput local IPC.

Cross-Machine — HTTP Relay

An HTTP relay bridges network requests to CRM processes running on IPC.

CRM Server (resource.py):

import c_two as cc

cc.set_address('ipc://grid_server')
cc.register(IGrid, grid_instance, name='grid')
# Auto-registers with relay when C2_RELAY_ADDRESS is set
cc.serve()

Relay (relay.py):

from c_two.transport.relay import Relay

relay = Relay(bind='127.0.0.1:8080')
relay.start(blocking=True)

Client (client.py):

import c_two as cc

# Same API — just change the address
grid = cc.connect(IGrid, name='grid', address='http://127.0.0.1:8080')
grid.get_grid_infos(1, [0])

cc.close(grid)

Best for: network-accessible services, web integration, cross-machine deployment.


Architecture

The design philosophy of C-Two is not to define services, but to empower resources.

In scientific computation, resources encapsulating complex state and domain-specific operations need to be organized into cohesive units. We call these Core Resource Models (CRMs). Applications care more about how to interact with resources than where they are located. We call resource consumers Components. C-Two provides location transparency and uniform resource access, allowing components to interact with CRMs as if they were local objects.

graph LR
    subgraph Component Layer
        C1[Component] -->|cc.connect| P1[ICRM Proxy]
        C2[Component] -->|cc.connect| P2[ICRM Proxy]
    end

    subgraph Transport Layer
        P1 --> T{Protocol<br/>Auto-detect}
        P2 --> T
        T -->|thread://| TH[Thread<br/>Direct Call]
        T -->|ipc://| IPC[IPC<br/>UDS + SHM]
        T -->|http://| HTTP[HTTP<br/>Relay]
    end

    subgraph CRM Layer
        TH --> CRM1[CRM Instance]
        IPC --> CRM1
        HTTP --> CRM1
    end

Component Layer

Client-side consumers that access remote resources through ICRM proxies. The proxy provides full type safety and location transparency — components don't know (or care) where the CRM is running.

  • Script-based: cc.connect(ICRMClass, name='...', address='...') returns a typed ICRM proxy
  • Function-based: @cc.runtime.connect decorator injects the ICRM proxy as the first parameter

CRM Layer

Server-side stateful resources exposed through standardized ICRM interfaces.

  • CRM: Plain Python class — state + domain logic. Not decorated.
  • ICRM: Interface class decorated with @cc.icrm(). Only methods declared here are remotely accessible.
  • @transferable: Custom serialization for domain data types (e.g., Apache Arrow for scientific data).
  • @cc.read / @cc.write: Concurrency annotations — parallel reads, exclusive writes.

Transport Layer

Protocol-agnostic communication with automatic protocol detection based on address scheme:

Scheme Transport Use case
thread:// In-process direct call Zero serialization, testing
ipc:///path Unix domain socket + shared memory Multi-process, same host
http://host:port HTTP relay Cross-machine, web-compatible

The IPC transport uses a control-plane / data-plane separation: method routing flows through UDS inline frames while payload bytes are exchanged via shared memory — zero-copy on the data path.

Rust Native Layer

Performance-critical components are implemented in Rust and compiled as a Python extension via PyO3 + maturin:

  • Buddy Allocator — Zero-syscall shared memory allocation for the IPC transport. Cross-process, lock-free on the fast path.
  • HTTP Relay — High-throughput axum-based gateway bridging HTTP to IPC. Handles connection pooling and request multiplexing.

The Rust extension is compiled automatically during pip install c-two (from pre-built wheels) or uv sync (from source).


Installation

From PyPI

pip install c-two

Pre-built wheels are available for:

  • Linux: x86_64, aarch64
  • macOS: Apple Silicon (aarch64), Intel (x86_64)
  • Python: 3.10, 3.11, 3.12, 3.13, 3.14, 3.14t (free-threading)

If no pre-built wheel is available for your platform, pip will build from source (requires a Rust toolchain).

Development Setup

git clone https://github.com/world-in-progress/c-two.git
cd c-two
uv sync          # install dependencies + compile Rust extensions
uv run pytest    # run the test suite

Requires uv and a Rust toolchain.


Roadmap

Feature Status
Core RPC framework (CRM / ICRM / Component) ✅ Stable
IPC transport with SHM buddy allocator ✅ Stable
HTTP relay (Rust-powered) ✅ Stable
Chunked streaming (payloads > 256 MB) ✅ Stable
Heartbeat & connection management ✅ Stable
Read/write concurrency control ✅ Stable
CI/CD & multi-platform PyPI publishing ✅ Stable
Async interfaces 🔜 Planned
Disk spill for extreme payloads ✅ Stable
Cross-language clients (Rust/C++) 🔮 Future

See the full roadmap for details.


License

MIT


Built for scientific Python. Powered by Rust.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

c_two-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

c_two-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

c_two-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

c_two-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

c_two-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

c_two-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

c_two-0.4.0-cp314-cp314-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

c_two-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

c_two-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

c_two-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

c_two-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

c_two-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

c_two-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

c_two-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

c_two-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

c_two-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

c_two-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

c_two-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

c_two-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

c_two-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

c_two-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

c_two-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

c_two-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

c_two-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file c_two-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21782fe76f8752e1b70a0bb391d96568a7482935097bbb68d935b70d034f67ed
MD5 48664ba0b1bd85ba4139397acca170df
BLAKE2b-256 35c732186f8b55dc5b025b55258159d05220cac22b3164c94b504becad242aed

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c37ee88070a32d7506186002ed943c23c45fa1848bbb7603e08b0141d00f48f2
MD5 a92b53da2b5350881521014310fe3870
BLAKE2b-256 9ef60acca48b47f443214a68e10f83c676bb3809496596294e78131f27966f9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e726144103ff019700c17575ed354e7f42bb4656abc6c967f203340ba0171a3c
MD5 7a31a0d7965a8a7bbf9678a90b63dd73
BLAKE2b-256 83bcd5bb605ba4ffb6f51485bdb2f032c4c02fc35cf9979282a107b32dba5fc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5beca191078f062dbba98aa7194ec08907bd4b8fb9f38813a8075fbdfc2a7b57
MD5 68c7685529c1273ea1cdcb845a99544b
BLAKE2b-256 4ea718ec4bb3a7c564109a752b5a50b50841fd4ab2ea391cb62ce5c2655f2a46

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c09c64e9fe20a4b8feca6e405d0b3cd71eb85d399a168767f85e7753cf12554f
MD5 c6cf40449a7f2fb3953caf15f770adf9
BLAKE2b-256 7febf4d7b27a9eb890f50e0e0428978d8016c8a8c511b2c282b3e83cef489d55

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8462f1c893e7dddca33eaffb003b35a520e4c6747c917abc6b427e9ab52381de
MD5 e850228f915eba9a23be2f7b0b62adb6
BLAKE2b-256 a89e29c9d0761f67aef5181f9bf1b890577db993ad75cda21da091e125a3295f

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71178e59b18e2fb3f64d8f1838d5e71718226855a5c34b22364667e41bcdb6c3
MD5 7ae6626c4b09793db73b440b13a71741
BLAKE2b-256 06a56194ed8119f111939491c7a452cd7a1aa401a2424682581b9dd5d6c94af9

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 462dbdfb9c53441306926b673b143e6c9f75a742dfb8bf287297cd1cc79e1df3
MD5 f342701c9e42548b3a96a99748e2869e
BLAKE2b-256 581ba9392a034fad89788d32e078e48b9aa8a255421a735e7c2440f542419d05

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9b337d4f8612cee7403a8be6bf11aca20d45313c909fd6a6aef6360948d14281
MD5 0bab82201749e1ea0ac4de14a7c8b261
BLAKE2b-256 2274017513b701499746d7278506c1376f01cdbcec7ef03b037080ac6364eedb

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4c696904b14d1f7bdb337de4d5d6b03519db97fdf24e7ebd6000b06d13cffdb7
MD5 7b307385df1db39bfe7266f938edef50
BLAKE2b-256 b6eaa670df3344f3df3cb484041c6c25c9f8cfef66fc39ce463cc99382ddb8b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c6704de22cf437e414f367869019e14bef93e7333c6457cc49b8337515a6077
MD5 a129a9f5189258b22bc52440c1ae88f8
BLAKE2b-256 fe27598dc104a5e1ebd2ed62731ba5f1a4f8a7f2e0b259bce5a636beb4863eba

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2f7df705d30c081c45ba0868129099cdd2e75962fb053be3e129f2fd3a6f9d15
MD5 1ac7658b26e0f4f977c85dc78e558899
BLAKE2b-256 47d788a7a8c660646cebcd7dfffc3af87fadeb20b05c1c6648b70b0a47a72161

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 80e3ec561ecbca628df53a4a1100d22b2f90dda53e712e8326816d51d10de5b0
MD5 5cb4e7ef63c110e936f652e9e96e9d3c
BLAKE2b-256 348b8ee176e1b612c656f86046210ed92380f77d351f4d0a5318fe76b81aba6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cb521c3f42e81bed6da7620d5669bc9119b8864a4a0d9bddd8dcb3276fbf62b0
MD5 1350b8699acdc30b4c52c7b37623e9d5
BLAKE2b-256 04d7ad5f1f3cf9c43b69823ad4bd5e0e5973248bc3f527c1e65890da7db64a25

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9636437b1ec9c0154229463b19908debb1d308c928743a144be1a593200bbef
MD5 6d33ba9278ed3e04b1b84ea03da7166e
BLAKE2b-256 cc3126cd3885caa25e04358002639a8619bf3b978680ed45bc723adf326f5923

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c1eb7b4c925d31f4ce23b45284d45d240f7536bb769fa8084a7758e791860ed5
MD5 1320a116fdcb613fadd207ae3d8d3548
BLAKE2b-256 5ec484b9cfc9438a7dda38d3eda32d4a824b808dc132566cc8b226ba06ee5d3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f77cf7c1af2498faebee1c70d7525ff1c2963494cea5794144bef6e732272e5
MD5 fe1546982ac39bc1defcbbe1e164ff9d
BLAKE2b-256 83cb25b78c4a3ea8839a66f5e868255836ff5b088012fd86edf6442fd6d65f63

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fc4ee4f7935654782b3111441ea3dedd775045c5333d1042120b7ea7f12a7a01
MD5 8460fd37e8d1cee205408456b9aa7fcd
BLAKE2b-256 1709771820dcfe22bd3e725bdb3fa77d2fb13023fdc41bf47dc1ab5d8059e780

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9932c7b436e5bbf94368283e3d54e959b5a14fb3d7b60892a853cefa831e6a3
MD5 23cd813a9337fb8a1219c033c70dbdb7
BLAKE2b-256 c436e1f57cccd9b2fda0bbe95647ee15ba7bfffffb928b2bdb918263f8afe185

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 370c6761e4045d43cba63d70306654c9503e241099c2541fd6acf8714e0e5482
MD5 2a6e4ac4adc03f218ef655be6db77443
BLAKE2b-256 95d414167bd6558178db76dc29cbfa3a020f5dd3d9a04047a130c772a9700297

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce8b1e95323787a93eb23f51d17ccfccb675a7f9c5cd6a555199b541ba5fd318
MD5 c47027edede563aec0fe18fbc32cf7d4
BLAKE2b-256 bca762a9188dbdb469284892c3afdb76d8f6a34b8bbc1a475b67166e6f82253c

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b380926e1a76ccdec602bf0d557c3728e19acf093f3a02baeba2919ce296f042
MD5 04f7cab9d16d271a9fcecaf7a630c797
BLAKE2b-256 7304c16af4f0996571bb139e9d217b72b20813f6f9476ef7062c06c27496e1c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58f4e7fe79701048c893d3243b3c4fb58136bb62b75324b4222cdad75ee73cf7
MD5 aba971b913ec9497630e2c9bca24683d
BLAKE2b-256 2c478fdf87dfa6f8652c17212944168bde53fc54a1fa514087ffe542d846a043

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file c_two-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 192f50e698d0cb8f1d7aca1b74cf2be620fe0e21f9d89bb2a01e3b31a6f3157b
MD5 a5bdca55994438e2d1975c599c0c3928
BLAKE2b-256 821cb0e79f621065dbc51338f840cf0542a93aa652faf1c1180c4677553da736

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: release.yml on world-in-progress/c-two

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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