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.relay import NativeRelay

relay = NativeRelay('127.0.0.1:8080')
relay.start()
relay.register_upstream('grid', 'ipc://grid_server')

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:

The Rust workspace contains 7 crates organized in 4 layers (foundation → protocol → transport → bridge):

  • Buddy Allocator — Zero-syscall shared memory allocation for the IPC transport. Cross-process, lock-free on the fast path.
  • Wire Protocol — Frame encoding, chunk assembly, and chunk registry for large-payload lifecycle management.
  • 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
Unified config architecture (Python SSOT) ✅ 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 Distribution

c_two-0.4.1.tar.gz (176.2 kB view details)

Uploaded Source

Built Distributions

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

c_two-0.4.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

c_two-0.4.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

c_two-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

c_two-0.4.1-cp314-cp314t-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

c_two-0.4.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

c_two-0.4.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

c_two-0.4.1-cp314-cp314-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

c_two-0.4.1-cp314-cp314-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

c_two-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

c_two-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

c_two-0.4.1-cp313-cp313-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

c_two-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

c_two-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

c_two-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

c_two-0.4.1-cp312-cp312-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

c_two-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

c_two-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

c_two-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

c_two-0.4.1-cp311-cp311-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

c_two-0.4.1-cp311-cp311-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

c_two-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

c_two-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

c_two-0.4.1-cp310-cp310-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

c_two-0.4.1-cp310-cp310-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file c_two-0.4.1.tar.gz.

File metadata

  • Download URL: c_two-0.4.1.tar.gz
  • Upload date:
  • Size: 176.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for c_two-0.4.1.tar.gz
Algorithm Hash digest
SHA256 bc68da0200e39c1b6b3b50fa03dac9c0cba8aa33a88e5ceef980d0d34da191a1
MD5 9fef80f36c90a1c8359ebda20e21e62e
BLAKE2b-256 003ec7070208eb502d196d2f50029396ed10db4133baba04739d89199c467272

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1.tar.gz:

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.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 975a789ad735bb499c5d1f5eb600f8e0021ba633b7fa981fbbbf3e02bad6c31c
MD5 09d7efb96bd443cd5fc54d1766c96b8e
BLAKE2b-256 f7083500e9e50b7d2bab311022dfdd0388f31e6890e76ae5987e810569ac1719

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ee45399c71f3ac6099996a6ff6ab5279dbde1edc2b141eae04e3314fab2bef09
MD5 b3a0805f23e387e71fae20a6bdac7a02
BLAKE2b-256 6d55d3720899fc1e29c3edfa23d9ba8bc8da28d121ee4bc4b782b6168d42c4c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c869c2e4d2606ab25524ae914b26c174c6fea5017ba016c821cf42a65dce24a7
MD5 6c5b226635ff85adb5faedfda96e3aa0
BLAKE2b-256 d296d12424cf977f544aa673809d6a8e6a895ece4663eaac97958343b7ab7d55

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4c7311da51b0aa471f8153513e42594c1486f6afe2693a7a5e448eceb50d7e62
MD5 ec0c3c1074ca256ecfc8e75eae005124
BLAKE2b-256 b691228095c7005e4dcb8637daef611f297d0bf9ee701dc5c580d6d033dae636

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b90df62833d7fc83a41900394cdde578f49d7e0a2933b6c2adc00b6eed227dfa
MD5 0900b6ca644f36fe67a1bcd293ef2e5f
BLAKE2b-256 f7ff791566d40bf6adb0d42cb948182d9d03bc467ca1d11cc4f80d33ee388ed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7c7c16e2362d882366c376fc7dae5da364c633c3d75893412599197ca1ceb677
MD5 221a55b459b5ffa0bd8fd36e752410ab
BLAKE2b-256 77688caa7fca5db9041368ab9b9f43ba0c461a212eb8406a58793ceadf2ce0e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f622ca9f0620c8b431a17e1aad399efbda45c5f515967a3d2188ac268bbe883d
MD5 c05af3b90acedfddbb8dc46cf65428cd
BLAKE2b-256 919edb0a3515e8275abdb0135e16eee344e1a8b76dc94dfc73d133ca1106aa5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ce601a23b818f9b77dc8f36c471e96ca64217a2b18034e396a56609138592a63
MD5 f5803e6c8725758ac532ccf468758f07
BLAKE2b-256 cb1b0c7e27bd186f35691f7c5cc866338118d55af432e414a69209906e6399e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7c409867f6a8e1ae6efabfaa587c653627d90a3f0f374a180a7586bb3f1de599
MD5 fee6fcf90d45c744eb8595afaee8fd76
BLAKE2b-256 40573fb4838244b4b9b10bce05a73769eb0f3af4402f323cf37f8bf2a7ae3da5

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f20106c760cfbd86399bab0b32b9f648e1b3f96cf30288844c9aae1e8128ae2
MD5 3895b1ed2add7d4d3724e61348288498
BLAKE2b-256 55c2f4bb5bb97901173d31935f8668b77a0fa5e99793e96e55c6afb3d8c4dc39

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77d3459561cebac7194015fe0ca20e9346eeb4aece414fefccae7f3700e401b9
MD5 ed346448f82d95c57fafad3859801fd1
BLAKE2b-256 b35593d5f596241e1b4dfc486b03988a748f57994c619c44a2dcdd240b76bc55

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e805c3dbc17a29913e4a6a073f2397acf4d99a37225e5dbd3e9187a716c890c5
MD5 fe232d9c3c52a23f500e185778927396
BLAKE2b-256 38b3a22874aa333b9ab1cd40a5b011aad7fb31596656317ba20a2b4d1018a1f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afb0a188a7e45f88cd2932eba44ba48ea058a30afc7afecc3f78edd0d753e426
MD5 17141764c565ab974c43e8a65a1a57e5
BLAKE2b-256 d7653c93f832d08a678672db022f0260ff178c33efc7e978ec2beedeaf209732

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e6818df1a14a629fea58118326ae3c89747627f229d90f14344d3bb49e2c3c65
MD5 f4ae0a62256d410b9985d623cac3ff9e
BLAKE2b-256 a613d90c546458f06251f40209323fd84da103e102d9171b87652f804b8d5a5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f114889b7fd4ae1a50c302587b124a1fc4e5a384bb1e04f8b18dd3bede1fab3
MD5 1b8d7e5d7ab82c1303f3eaed073900c3
BLAKE2b-256 89a30843ceaef2030cfed217035840864b5d1870996def58f2d4c8759fe792eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e3905b436e63263e0778ad4494baca8ed4b8b5238e312e1e2b24c500b49b618e
MD5 2e130b1ecdd3c802feacf3c853ed9aac
BLAKE2b-256 0e642fd525f31bdbf5dfc647f9214a9283157a80da3ac7e9e931494a80e85a1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8fbec6782b02cb5fded6b83498e865d8441742cb4a3ea2a4130b8200dd96ba56
MD5 ddc279bfbcf7ce1d77396df5e2e4ad57
BLAKE2b-256 41cde8115e9684ceb073ce100b2ee1c6de12e7f1495a6f44b903e628aa857d1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 efeda4cf3da17e5859ee48925d366195e7da8c225854cb615b49cca311196253
MD5 dce3a6e2bdbf373997ed2bdf700353f8
BLAKE2b-256 436580147572a42a682fff56852efb8cc3b0caf58b60f707693a21e22cefabb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 293ba55ada1f7feee5156053b2eb9ad2397ee8e61056402fd493854432e71749
MD5 33a9a42e4f39159798bd9486c45d19a4
BLAKE2b-256 e77d177cda9f757114fb8bbdfbec86aa881e05f003cdf1d27b1433caae02644c

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ab52732983320b1e067f29e735f6ccaf051342c5deb72e866d0617be7b3299e
MD5 1b3c217a666fc730c296ba9f2a6f7aed
BLAKE2b-256 90980b32f4b91607794cc627ec1987bd317c31cf226c604b7365ea4f441636d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8aec799ca321f479c7a7e38cd55d702f7eb147a344513e4a0c4df1b42eee2cc1
MD5 140964e542dc66b0d443a8cc0e852253
BLAKE2b-256 ad1d7a445b95e9d1cff504f94743e05978f5b6d7a2c93e372944bf715b35ee2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 998798b0ec59f273a3bf85d45c0e771752fc49de876743644c077d62f49e9e2e
MD5 9033cfcb1608ef20b1cc5fa5f5c2847a
BLAKE2b-256 3d66e201e878f6cdb6e3e4b5ed765077665a64ceac1eb4bef11468d1c9d57be7

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54b09192eff9a9f4ee603e23bead1d60260387c02db1f589f474bb55d08cfc20
MD5 1b7dd1eabbac81b631f7da7846302b6d
BLAKE2b-256 9fbb026abdb6e5400039e0098ea5afbfdd7cfd258de63888057352b224e7868b

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for c_two-0.4.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b591b83be6c32ab659e97d8ae984609997e2c56e647cbc4eb54a92bab2ba3b31
MD5 c982949cd6c5e2b0e70338a3fa607dae
BLAKE2b-256 a54ea49281bb9e47353a97fdfe87d7a6196851b4c062dc701bebf7451920466d

See more details on using hashes here.

Provenance

The following attestation bundles were made for c_two-0.4.1-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