Skip to main content

Python bindings for nono capability-based sandboxing

Project description

nono-py

Python bindings for nono, a capability-based sandboxing library.

nono provides OS-enforced sandboxing using Landlock (Linux) and Seatbelt (macOS). Once a sandbox is applied, unauthorized operations are structurally impossible.

Installation

pip install nono-py

From source

Requires Rust toolchain and maturin:

pip install maturin
maturin develop

Usage

from nono_py import CapabilitySet, AccessMode, apply, is_supported

# Check platform support
if not is_supported():
    print("Sandboxing not supported on this platform")
    exit(1)

# Build capability set
caps = CapabilitySet()
caps.allow_path("/tmp", AccessMode.READ_WRITE)
caps.allow_path("/home/user/project", AccessMode.READ)
caps.allow_file("/etc/hosts", AccessMode.READ)
caps.block_network()

# Apply sandbox (irreversible!)
apply(caps)

# Now the process can only access granted paths
# Network access is blocked
# This applies to all child processes too

API Reference

Sandboxing

CapabilitySet + apply()

Sandbox the current process (irreversible):

caps = CapabilitySet()
caps.allow_path("/tmp", AccessMode.READ_WRITE)
caps.block_network()
apply(caps)  # Process is now sandboxed

sandboxed_exec

Run a command in a sandboxed child process. The parent stays unsandboxed and can call this repeatedly with different capabilities:

caps = CapabilitySet()
caps.allow_path("/workspace", AccessMode.READ_WRITE)
caps.block_network()
result = sandboxed_exec(caps, ["python", "agent.py"], cwd="/workspace", timeout_secs=30.0)
print(result.stdout, result.exit_code)

sandboxed_exec does not inherit the parent process environment by default. Pass only the variables the child needs through env=[("NAME", "value")]. Full parent environment inheritance requires inherit_env=True; dynamic-loader variables such as LD_* and DYLD_* are rejected.

Network Proxy

Domain-filtered network access for sandboxed children. The proxy intercepts outbound HTTP requests and enforces a host allowlist. For API calls, it performs credential injection: the sandboxed process sends a dummy token, and the proxy transparently swaps in the real API key (loaded from the OS keyring) before forwarding upstream. The sandboxed process never sees the real secret.

from nono_py import ProxyConfig, RouteConfig, start_proxy

config = ProxyConfig(
    allowed_hosts=["api.openai.com", "*.anthropic.com"],
    routes=[
        RouteConfig(prefix="/openai", upstream="https://api.openai.com", credential_key="openai-key"),
    ],
)
proxy = start_proxy(config)

# Inject only the current proxy/session env vars into the sandboxed child
env = proxy.sandbox_env(extra_env=[("NONO_SESSION_ID", "session-001")])
result = sandboxed_exec(caps, ["python", "agent.py"], env=env)

# Audit trail
events = proxy.drain_audit_events()
proxy.shutdown()

Filesystem Snapshots

Content-addressable snapshots with Merkle-committed state and rollback:

from nono_py import SnapshotManager, ExclusionConfig

mgr = SnapshotManager(
    session_dir="~/.nono/rollbacks/session-001",
    tracked_paths=["/workspace"],
    exclusion=ExclusionConfig(exclude_patterns=["node_modules", "__pycache__"]),
)
mgr.create_baseline()

# ... agent runs and modifies files ...

manifest, changes = mgr.create_incremental()
for change in changes:
    print(f"{change.change_type}: {change.path}")

# Roll back
mgr.restore_to(snapshot_number=0)

Audit Trail

Append-only, Merkle-chained audit logging with tamper detection:

from nono_py.audit import AlphaRecorder, verify_log, iter_session, session_started, session_ended

recorder = AlphaRecorder()
with open("audit-events.ndjson", "w") as f:
    recorder.write(f, session_started(started="2026-01-01T00:00:00Z", command=["agent"]))
    recorder.write(f, session_ended(ended="2026-01-01T00:05:00Z", exit_code=0))

# Verify integrity — detects any tampering
result = verify_log("/path/to/session")
assert result["records_verified"]

Other Classes

  • QueryContext - Check permissions without applying the sandbox
  • SandboxState - Serialize/restore capability sets as JSON
  • SupportInfo - Platform support details
  • Policy / ResolvedPolicy - Load and resolve policy.json documents
  • SessionMetadata - Session audit trail with Merkle roots and network events
  • ExecResult - Result of sandboxed_exec (stdout, stderr, exit_code)
  • InjectMode - Credential injection method enum

Functions

  • apply(caps) - Apply sandbox (irreversible)
  • sandboxed_exec(caps, command, ...) - Run command in sandboxed child
  • start_proxy(config) - Start network filtering proxy
  • is_supported() / support_info() - Platform support
  • load_policy(json) / load_embedded_policy() - Policy loading
  • embedded_policy_json() - Raw embedded policy JSON
  • validate_deny_overlaps(paths, caps) - Validate deny paths against capabilities

Platform Support

Platform Backend Requirements
Linux Landlock Kernel 5.13+ with Landlock enabled
macOS Seatbelt macOS 10.5+
Windows - Not supported

Development

# Install dev dependencies
pip install maturin pytest mypy

# Build and install for development
make dev

# Run tests
make test

# Run linters
make lint

# Format code
make fmt

License

Apache-2.0

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

nono_py-0.10.0.tar.gz (178.6 kB view details)

Uploaded Source

Built Distributions

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

nono_py-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

nono_py-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

nono_py-0.10.0-cp314-cp314-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nono_py-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

nono_py-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nono_py-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nono_py-0.10.0-cp313-cp313-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nono_py-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nono_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nono_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nono_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nono_py-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

nono_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

nono_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

nono_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nono_py-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

nono_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

nono_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

nono_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

nono_py-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file nono_py-0.10.0.tar.gz.

File metadata

  • Download URL: nono_py-0.10.0.tar.gz
  • Upload date:
  • Size: 178.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nono_py-0.10.0.tar.gz
Algorithm Hash digest
SHA256 ff30626c7b0f8ca745167e24e3e55765d70b5cf74fead038d7625983322a210c
MD5 09e4d2123fcd4dddf9230af663d0dcc8
BLAKE2b-256 f13823516235b7eb7b22f31996509d7da300d96301656b4294f0561c947ddc51

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0.tar.gz:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 996282a94c6dbdff627de0cc12cb94853a1fd69fa117e2a5736be1d8c4331a7e
MD5 ac891f5f4d6061691b6aab5efcbc12f7
BLAKE2b-256 210207dc72064c1a712ee3c7128dde62112abee5b038dcca6560994e3d4a798a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e9dccac64732d1cc3b776a657fedc2f236ffe243700d804af167d381cc17cf6c
MD5 c9b579a31c223ea2579806588dfe5ecd
BLAKE2b-256 d3dba9a9b8e728cd72c8a2d2b2e0413a10f5e5763dfbba2c8fda1c14cf6144ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3273d92d6999158602ae57b344487a0195d3a9112810bbc47954a8e6f57325d
MD5 8de98ca0f8a255d99028d4bf9bba574e
BLAKE2b-256 f7bd051b885a2da92ea11bec4f63bbb339c744f02b5c276e30cf1fdc8ff7ddda

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 61be70e4401bdafd67a360fa4ea43672b4f1e753cc2c031997d6a73ddc5102cb
MD5 2663b02b496167531de7644e5ebe09b6
BLAKE2b-256 ef87f7fac14968e767b4d51a830e82eef4d4c1f2cf813608e978ded17a7e7b97

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac0d33eb2a8c8e48cd981effccad68f7048f8a694e27669eca71994b5c933fc7
MD5 5f86c4d6999dfd1868b33c2a91b147e9
BLAKE2b-256 ee1bcd1ea90f64bd495e904d7a2260a3a3d86566ba7379996382b5172fc12e0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b124e12b0b748c4a37d95cb70270999784efe61c6fe64978f59e3eb9aaa95355
MD5 ccf0e58dcfe6ffe7a5a4d02fd6712bd1
BLAKE2b-256 b811df107c13d417186b61077a2ffd3b2f8a0dcf39b7d15fa183e28af64085de

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce2f1d24fcbbd56ec553514242e6079ffcb9b71dcfb3fefceeaee24d2c334932
MD5 c7631de37459340a709602667a2e907f
BLAKE2b-256 a1acca2c098e1c78396f259004508ca3395e4720c3b83b34ee96e10e5b71e39d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 531eb28e560fe37e8b6035adca6b29dd5beb059f05cfb0d533452dcd9bf6a9e3
MD5 f618bd03f02fa0904abac346ad21f18f
BLAKE2b-256 366c0a6a5d1b8f9e39855ada1b2720790a2e02f5e8e0b6440e5fdd05e2115c65

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73e0b5ce2189290393a1cdac1f9e252e148a468d555792a4fd1258dd70b6a22b
MD5 af45dcb10d1dabeee07fb31f96a063f4
BLAKE2b-256 038a235b531a0ddc9302033e2b633211f7e6fd5f5490dd62a1436d7cfa99d8c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a88d8e9c7d21140717426d9312934d14058348077ea74f8b1f8c968ffb897143
MD5 0a37da95abc1c8fe34f74998af11da51
BLAKE2b-256 2eb62aeab7b5134f6ee1ac23818259d44250191aa6e5dfca9c7b99e7c879fc98

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e98bfe9043c191d15f9bb7ed62087af94194e3bf91dd8e7a12eab7dc1a9448a5
MD5 1c71fbf9d4832603ca186ac834c39179
BLAKE2b-256 2ff7790d348e09194c8000f44a98915f21c3c8f27afb4c3df298ec8a74b38ea7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 270375a319dd14a07b14a9a4f672671070ffb8fe4c4eb75abdd89ffa064d21d3
MD5 87a87a2f025f4c3f2f95c3887ef87a88
BLAKE2b-256 cee1de8c0fec9e85783480fe1f1bd7681804d6f7ab4606eb7ae24f8b31e7b04c

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9648b14a474f32f12631299003b43b10a08a7cb056ffb1e931b56d073b106328
MD5 c179cb274ae48a27ed13b2ed25155ff9
BLAKE2b-256 5637a24a54791fd2b7b4b6295835fe9d7e134f2c08f0a35d2eb1b0f62606b604

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49180561dad8b67d3a5ef3eecee0b5dbcc846316cdd2510610603bdef8cebb18
MD5 00a0f53d32c5b866433a7a35e85a8971
BLAKE2b-256 6dcb52bdf0d5c0e3b2078f4829f5592ac87f04b8af1b8388382d91731e4f125b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3cc893c1cb61f32c15824008f35300093e95e3f22d4b3dbc71b0baa6fa2c9f2f
MD5 bc720a4fe2c8c62c63347d2c187e5b9b
BLAKE2b-256 0c464df18d196df563ec782586248de54fea45e96b6df49cd7986032eb66d3d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0bca903acf34cb164b1b53a9ad12461eabf75eb52ca22d2f4dc2a68e482dab30
MD5 c6318aefda41e180d464f0e84f81ef63
BLAKE2b-256 e1eb8d6853169fe23d5a63700b85ac844d5bf4c2889d23b8e3705d0af4bca7ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ed6d7f5f6fa7abcac6df3260693c7f8ab33819c85b585a44e86a76c0b11248c9
MD5 5e24b120cc3a395cd8e0e45b7d11ee8b
BLAKE2b-256 2e1809dd413a8b8f6936db0d219710bfbbe02682bc89e87a1f2a6e0756f13604

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b1c5a7dbc5d79545e7961bb4c553842288a3014fb07c46662a998ba4875c2d95
MD5 52ce1ad27ccb3179383f5c225117b9a9
BLAKE2b-256 0d2f4f5dfe48161022ca1855ba990eac3213c2fe73f9a662d13095664e4db069

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 85c3dd5384f7188fc35a4286b179a05a2579de41df4a821fd28e906385ff5705
MD5 efa7017ebdf40095abd092601b401bd6
BLAKE2b-256 621c70b75b7fc22fab72f3f37b9d69f5b40a260bf2297a4ee02913f3484955de

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on always-further/nono-py

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

File details

Details for the file nono_py-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nono_py-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ed99eb57ded8e1d8675588bad08226b5a93b4702c544d5dabbba44eb94dc0375
MD5 06d4b886db6f14a12209b037c280fe11
BLAKE2b-256 9d9b7495413e31df805884b3c873c0788f23d12f7bd6afb4d9b9a76c8277735d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nono_py-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on always-further/nono-py

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