Python SDK for NNRP protocol primitives and adapters
Project description
nnrp-py
Python SDK scaffold for NNRP.
This repository keeps a neutral protocol-level name because it is intended to host shared wire-format code plus server- and client-facing helpers. Host-application integration stays outside this repository so the package layout can serve Python clients, servers, script hosts, or tooling without binding the SDK to any single backend checkout.
NNRP should be read as a lightweight real-time AI application protocol, not as a neural-rendering-only transport. The current runtime integration happens to start from tensor/tile-oriented super-resolution flows, but the current NNRP/1 wire already covers token streaming, multimodal payload delivery, structured events, tool deltas, transport probing, and migration-oriented session control.
Contributors
The avatar wall above updates automatically from the repository contributor list once this repository is published at the matching GitHub location.
GitHub README rendering does not support per-avatar dynamic tooltips for an auto-generated contributor wall, so use the linked contributors graph if you want individual profile pages and account IDs.
Scope
This repository contains protocol-focused code only:
- Rust-backed client connection/session helpers for host integrations.
- Common wire constants, enums, and packet codecs for protocol fixtures and diagnostics.
- Shared client/server protocol-side models.
- Transport adapters, replay helpers, and smoke tooling for SDK bring-up.
It does not contain neural rendering runtime business logic.
Layout
src/nnrp/core/: shared protocol primitives and wire helpers.src/nnrp/cache.py: Preview3 cache identity, lease, version, and invalidation result wrappers.src/nnrp/native.py: FFI loader, ABI/protocol probes, native handle wrappers, and runtime facade.src/nnrp/native_artifacts/: packagednnrp-rsnative libraries, arranged by platform tag.src/nnrp/schema.py: schema/profile descriptor views and standard registry constants.src/nnrp/client/: client-facing native connection/session helpers plus transport smoke helpers.src/nnrp/server/: server-facing helpers and types.src/nnrp/adapters/: transport or host integration adapters.src/nnrp/tools/: adapter conformance, benchmark, replay, diagnostics, and smoke helpers.tests/: protocol-level, native facade, conformance, and smoke tests.
The top-level nnrp package keeps top-level re-exports for common imports, while new code should prefer the explicit submodules.
Native Host API
Host integrations should start with the Rust-backed client helpers in nnrp.client. The Python layer owns a small, Pythonic surface, while protocol-critical session, operation, polling, and status behavior is delegated to the packaged nnrp-rs native runtime.
from nnrp.client import (
NativeClientConnectionOptions,
NativeClientSessionOpenOptions,
connect_native_client_connection,
)
with connect_native_client_connection(
options=NativeClientConnectionOptions(connection_id=7),
require_native=True,
) as connection:
session = connection.open_session(
NativeClientSessionOpenOptions(
requested_session_id=42,
profile_id=1,
schema_id=1,
schema_version=1,
)
)
result = connection.submit_and_poll_result(
session,
operation_id=1001,
frame_id=1,
payload=b"tensor-or-typed-payload-bytes",
max_events=8,
)
print(result.state, result.payload)
The native helpers provide:
connect_native_client_connection()for one Rust-backed connection that can own multiple sessions.NativeClientConnection.open_session()for explicit session creation.NativeClientConnection.submit_and_poll_result()for a host-friendly submit/result roundtrip over native session operations.NativeRuntimeSession.submit_operation()andNativeClientConnection.operation_scope()for operation handles, parent/group metadata, and cancellation on exceptional exits.NativeClientConnection.poll_result(), native async polling helpers, and callback dispatch helpers for result/event delivery.NativeClientConnection.cancel_frame()/NativeClientConnection.cancel_operation()/NativeClientConnection.send_control()for low-level host control paths.- Preview4 runtime-control helpers for cancellation, scheduling, route hints, execution hints, capability negotiation, and profile degradation.
By default the native loader searches nnrp/native_artifacts/<os>-<arch>/ inside the installed package. Set NNRP_NATIVE_ARTIFACT_ROOT when testing an external artifact tree. Pass require_native=True in host code that must fail fast instead of falling back to SDK-local fixtures.
The native binding layer has two paths. The default NNRP_NATIVE_BINDING_MODE=auto tries a packaged cffi API fast path for compact submit/result operations and falls back to the zero-compile ctypes ABI path when that module is unavailable or cannot preserve the requested payload semantics. Set NNRP_NATIVE_BINDING_MODE=ctypes for compiler-free diagnostics, or NNRP_NATIVE_BINDING_MODE=cffi_api when a benchmark or deployment should fail fast unless the cffi API module is present.
Polled native events and results expose Python-owned bytes payload snapshots. The current Python API does not expose borrowed result buffers, so a result object remains stable even if the native runtime reuses its poll buffer after the call returns.
Preview4 Runtime Controls
Client control helpers build the frozen preview4 metadata payloads and send one coarse native control call through the selected connection or session target:
from nnrp.client import NativeClientSessionOpenOptions, connect_native_client_connection
with connect_native_client_connection(require_native=True) as connection:
session = connection.open_session(NativeClientSessionOpenOptions(requested_session_id=42))
connection.update_runtime_priority(
session,
operation_id=1001,
control_sequence=1,
priority_class=2,
priority_delta=4,
)
connection.cancel_runtime_operation(
session,
operation_id=1001,
control_sequence=2,
reason_code=7,
diagnostic=b"superseded by fresher frame",
)
connection.send_runtime_route_hint(
connection.connection,
operation_id=1002,
route_id=9,
executor_class=3,
body=b"local-subagent",
)
Server helpers expose the same runtime-control frame family from ServerSession without forcing callers to manually build packets:
from nnrp.runtime import ResultDropReasonCode
await session.send_progress(
operation_id=1001,
progress_sequence=1,
stage_code=2,
percent_x100=2500,
body=b"tile pass 1/4",
trace_id=77,
)
await session.send_partial_result(
operation_id=1001,
result_sequence=2,
object_id=33,
body=b"partial payload snapshot",
)
await session.send_result_drop_reason(
operation_id=1001,
result_sequence=3,
drop_reason_code=ResultDropReasonCode.DEADLINE_EXPIRED,
diagnostic=b"expired before delivery",
)
await session.send_backpressure(
scope_id=session.session_id,
credit_window=8,
pressure_level=2,
pressure_reason=5,
)
These helpers are runtime-control API conveniences, not a pure-Python runtime replacement. Host hot paths should use native artifacts with require_native=True; packet builders under nnrp.core remain for fixtures, diagnostics, and conformance tooling.
Preview4 Transport Providers
Preview4 native artifacts are transport scoped. Python discovers installed providers from the packaged Rust artifact manifests and rejects names that are not advertised by the artifact tree:
from nnrp import (
diagnose_nnrp_endpoint_support,
discover_native_transport_providers,
select_native_transport_provider,
)
providers = discover_native_transport_providers()
selection = select_native_transport_provider("auto")
support = diagnose_nnrp_endpoint_support("nnrps://runtime.example/session/default")
print([provider.name for provider in providers])
print(selection.selected_transport_name, selection.diagnostic)
print(support.endpoint.authority, support.available)
Installations with a single provider select it directly. Multi-provider installations can use auto, probe,
or an explicit transport name. Provider metadata reports transport slots, cost/preference hints, platform limitations,
and enabled native features; it is not a configuration flag over hidden shared transport logic.
Application-facing endpoints use nnrp:// or nnrps://. Provider-local locators such as unix://, npipe://,
ws://, and wss:// are lower-level diagnostics, conformance fixture inputs, or explicit provider overrides.
Their helper validates URI shape and exposes diagnostic skip messages without pretending a missing native provider
passed a smoke test.
from nnrp import diagnose_native_transport_endpoint_support
support = diagnose_native_transport_endpoint_support("wss://runtime.example/nnrp")
if not support.available:
print(support.skip_reason)
TCP and QUIC keep their own native provider slots. IPC and WebSocket endpoint models are available for preview4 diagnostics and conformance manifests; live connect/listen smoke tests require the corresponding preview4 Rust provider artifact to expose those entrypoints.
Cache leases and schema validation follow the same host/runtime split. Python code passes stable identifiers, descriptors, and payload views into the native runtime; lease policy, schema matching, and diagnostics remain owned by Rust:
from nnrp import (
CacheObjectIdentity,
cache_query,
cache_touch,
token_delta_payload_descriptor,
token_delta_schema_descriptor,
)
from nnrp.client import NativeClientSessionOpenOptions, connect_native_client_connection
with connect_native_client_connection(require_native=True) as connection:
session = connection.open_session(NativeClientSessionOpenOptions(requested_session_id=42))
cache = session.cache_backend(now_ms=10_000, ttl_ms=30_000)
identity = CacheObjectIdentity(namespace=1, object_kind=1, key_hi=0, key_lo=7)
lease = cache_query(cache, identity)
if lease.succeeded:
cache_touch(cache, identity, ttl_ms=60_000)
registry = connection.schema_registry()
registry.install(token_delta_schema_descriptor())
registry.validate_typed_payload_binding(
token_delta_payload_descriptor(offset=0, length=128)
)
profile_id = 0 means unspecified. It must not be treated as an implicit tensor profile. Tensor and token payloads are peer standard profiles, while structured-event, tool-delta, and workflow-state remain payload families routed through schema/profile bindings before any profile-private body decoding happens.
NativeRuntimeResult.state reports the host-visible operation lifecycle as completed, partial, degraded, stale_reuse, cancelled, or failed. NativeRuntimeResult.diagnostic preserves native status, error family, protocol detail, and related connection/session/operation/frame ids; use NativeStructuredDiagnostic.to_report() when emitting adapter or CI diagnostics instead of flattening native failures into strings.
Runtime Object And Cache Metadata
Preview4 runtime object and cache helpers live in nnrp.runtime. They encode and decode the frozen runtime-control,
object, and cache metadata shapes without routing hot paths through JSON:
from nnrp.core import MessageType
from nnrp.runtime import (
CacheReferenceMetadata,
CacheReuseScope,
decode_runtime_object_metadata,
encode_runtime_object_metadata,
)
metadata = CacheReferenceMetadata(
cache_key_hi=2,
cache_key_lo=3,
profile_id=19,
reuse_scope=CacheReuseScope.SESSION,
lease_id=9,
producer_trace_id=77,
expiration_hint_ms=5000,
metadata_bytes=0,
flags=0,
)
payload = encode_runtime_object_metadata(MessageType.CACHE_REFERENCE, metadata)
decoded = decode_runtime_object_metadata(MessageType.CACHE_REFERENCE, payload)
assert decoded.metadata == metadata
Cache references are an explicit workload behavior. They help when producers and consumers can reuse a stable object identity or lease, but they are not a universal latency guarantee; high-churn payloads should record cache misses as typed events and continue through the normal result path.
Public Wire API
The public wire surface remains available for protocol fixtures, diagnostics, and tooling. It should not be treated as the primary host runtime path when native artifacts are available.
The legacy connect_client_session() and connect_client_session_with_probe() helpers remain available from nnrp.client.transport only for packet transport smoke tests and adapter bring-up. Production host integrations should use the Rust-backed native connection/session helpers from nnrp.client.
Schema And Profile Constants
Preview3 schema/profile helpers expose stable descriptor views without decoding profile-private payload bodies:
from nnrp import StandardProfile, StreamSemantics, token_delta_payload_descriptor
descriptor = token_delta_payload_descriptor(offset=0, length=128)
assert descriptor.profile_id is StandardProfile.TOKEN
assert descriptor.stream_semantics is StreamSemantics.APPEND
StandardProfile.UNSPECIFIED stays distinct from StandardProfile.TENSOR; structured-event and tool-delta remain payload families interpreted through schema/profile bindings rather than standalone standard profiles.
CacheObjectIdentity, CacheLeaseDescriptor, and SchemaRegistryCatalog are host-side value wrappers for native/runtime results and diagnostics. Cache query/touch/prefetch/release helpers delegate to a backend object and do not accept local lease policy callbacks or profile body decoders; those decisions remain owned by Rust and the conformance baseline.
Native connections also expose async iterators and callback dispatch helpers for structured_event, tool_delta, and workflow-state payload families. These helpers wrap result/control events from the native pump and preserve Python-owned payload snapshots; profile-private body decoding still belongs to schema/profile handlers rather than the iterator or callback itself.
The wire surface is centered on two modules:
nnrp.core: fixed-width header/message codecs, packet builders, tensor section helpers, and packet/body parsing.nnrp.tools: replay helpers, smoke helpers, adapter conformance, benchmark, and wire-size summary/comparison utilities.
Use nnrp.core when you already have protocol-shaped inputs and want explicit control over header fields, tile ids, section payloads, and packet assembly.
from nnrp.core import (
HeaderFlags,
InputProfile,
TensorSectionData,
TensorDType,
TileIndexMode,
build_frame_submit_packet,
unpack_tensor_body,
)
packet = build_frame_submit_packet(
session_id=7,
frame_id=42,
src_width=640,
src_height=360,
tile_width=32,
tile_height=32,
tile_ids=(5, 6),
sections=(
TensorSectionData(
role_id=1,
default_codec_id=0,
dtype_id=TensorDType.FP16,
tile_payloads=(b"aa", b""),
),
),
camera_block=b"cam",
input_profile=InputProfile.DENSE_LUMA_FRAME,
tile_index_mode=TileIndexMode.DENSE_RANGE,
flags=HeaderFlags.ACK_REQUIRED,
)
encoded = packet.pack()
decoded_body = unpack_tensor_body(
packet.body[3:],
tile_index_bytes=0,
section_count=1,
tile_count=2,
)
The builder/parser layer currently guarantees:
- Header length and packet length consistency.
- Tile count / section count consistency.
- Strictly increasing
role_idordering across tensor sections. - Fixed-stride, codec-table, and tile-length-table self-consistency checks.
RESULT_PUSHtensor coverage and result-flag consistency validation.
Replay And Diagnostics Workflow
Use nnrp.tools.replay when the source object still looks like host-side runtime data and you need protocol-shaped fixture bytes, diagnostics, or wire-size comparisons.
from nnrp.tools import (
compare_frame_features_wire_size,
frame_features_to_wire_bytes,
frame_features_to_wire_summary,
render_wire_summary,
render_wire_size_comparison,
)
wire_bytes = frame_features_to_wire_bytes(frame_features)
summary = frame_features_to_wire_summary(frame_features)
comparison = compare_frame_features_wire_size(
frame_features,
reference_payload=protobuf_bytes,
reference_label="protobuf",
)
print(len(wire_bytes))
print(render_wire_summary(summary))
print(render_wire_size_comparison(comparison))
The replay helpers currently provide:
frame_features_to_packet/frame_features_to_wire_bytesfor submit fixture generation.enhance_result_to_packet/enhance_result_to_wire_bytesfor result fixture generation.frame_features_to_wire_summary/enhance_result_to_wire_summaryfor stable packet summaries.compare_frame_features_wire_size/compare_enhance_result_wire_sizefor wire-vs-reference payload size comparison without taking a protobuf dependency.
reference_payload is intentionally just raw bytes. The protocol library does not depend on protobuf schemas; host applications remain responsible for producing the reference payload they want to compare against NNRP wire bytes.
Workflow Notes
- Prefer
nnrp.client.connect_native_client_connection()for host runtime integration. - Prefer
nnrp.corewhen writing protocol-native tests or SDK integration code. - Prefer
nnrp.toolswhen building replay fixtures or generating stable regression summaries. - For transport bring-up, use
nnrp.tools.smoke,nnrp-quic-smoke, or the tooling-only packet session helpers rather than reimplementing ad hoc control packets.
Current Session Model
The canonical host shape is a long-lived native connection with one or more explicit sessions. Hosts submit operations through a session and consume results through the native result/event pump.
from nnrp.client import NativeClientSessionOpenOptions, connect_native_client_connection
with connect_native_client_connection(require_native=True) as connection:
interactive = connection.open_session(
NativeClientSessionOpenOptions(requested_session_id=10, profile_id=1)
)
batch = connection.open_session(
NativeClientSessionOpenOptions(requested_session_id=11, profile_id=2)
)
interactive_op = interactive.submit_operation(
operation_id=2001,
frame_id=1,
payload=b"interactive-frame",
)
batch_op = batch.submit_operation(
operation_id=3001,
frame_id=1,
payload=b"batch-frame",
)
interactive_result = connection.poll_result(interactive, interactive_op, max_events=16)
batch_result = connection.poll_result(batch, batch_op, max_events=16)
print(interactive_result.state, batch_result.state)
Hosts should keep submission and result consumption decoupled so multiple operations can remain in flight while result, cancellation, control, and diagnostic events continue to arrive on the same connection. The connection context closes owned sessions on exit.
Conformance
The shared nnrp-conformance suite owns protocol baselines, parameterized wire cases, adapter execution plans, and result validation. The Python SDK participates by declaring capabilities and running python -m nnrp.tools.adapter_conformance --plan <path> --output <path> against suite-selected cases.
SDK tests should exercise real Python APIs and native bridge behavior through adapter plans, benchmark plans, smoke tests, and focused unit tests rather than generating separate protocol vector manifests.
Current Wire Additions
The current NNRP/1 wire keeps the 40-byte common header stable and changes the protocol surface in four main ways.
FRAME_SUBMITandRESULT_PUSHgain aligned fixed metadata so submit mode, budget policy, dependency tracking, payload-kind bitmaps, payload-frame counts, and result classes become explicit wire fields instead of host-side conventions.- The current body is no longer an implicit tensor-only blob. It starts with
BodyRegionPreludeand then carries deterministic ordered regions for inline objects, object references, typed-payload descriptors, typed-payload frames, extension descriptors, and extension payloads. - Submit/result flows are no longer tensor-only. The current wire can carry
tensor,token_chunk,audio_chunk,video_chunk,structured_event,tool_delta, andopaque_bytespayload kinds in one packet, while still preserving tensor-specific coverage rules only when tensor payloads are actually present. - The current wire adds runtime control messages and session mechanics for
FLOW_UPDATE,RESULT_HINT,TRANSPORT_PROBE,TRANSPORT_PROBE_ACK,SESSION_MIGRATE, andSESSION_MIGRATE_ACK.
In practice, the current wire is the general-purpose session model for mixed object references, mixed payload kinds, explicit degradation semantics, and long-lived asynchronous multi-frame sessions.
Object Reference Workflow
The current wire treats cache-backed object references as first-class protocol inputs rather than ad hoc host shortcuts.
The expected cache lifecycle is:
- Advertise the supported cache object kinds during handshake through
cache_object_bitmapand related fixed metadata. - Put stable objects into the session cache through
CACHE_PUT/CACHE_ACKbefore the hot path starts referencing them. - Reference stable objects from
FRAME_SUBMITorRESULT_PUSHthrough object-reference regions instead of resending the same bytes inline every frame. - Invalidate session-, namespace-, object-kind-, or object-key-scoped entries through
CACHE_INVALIDATEwhen the producer knows the references should no longer be reused. - Treat cache misses and unsupported object kinds as explicit protocol errors; do not silently fall back to a guessed inline path.
Typical submit-side mixed mode looks like this:
- Keep rapidly changing tensor section data inline.
- Move low-frequency camera blocks, tile-index templates, or tensor section tables into cache objects.
- Set
submit_modetoreferenceormixedand alignobject_ref_maskwith the standard reference slots present in the body.
This lets hosts reduce repeated hot-path bytes without hiding cache policy inside runtime-private handles.
Current Result Semantics
Host repositories should treat current result classes as display policy signals, not just transport decoration.
completemeans the result fully covers the requested tensor scope or fully satisfies the non-tensor payload set carried by the packet.partialmeans the result is still displayable or consumable, but only covers part of the requested output. Tensor results must make that visible throughcovered_tile_countanddropped_tile_count.stale_reusemeans the result intentionally reuses older frame/object content. Hosts should surface the reuse relationship instead of treating it as a fresh complete inference.degradedmeans the service intentionally lowered fidelity or fell back because of budget, congestion, or resource pressure. Hosts should not collapse this into transport failure.RESULT_DROPremains the non-displayable terminal path. A degraded or stale result is still a positive result path and should usually stay on the render or consumer timeline.
For host integrations, the important rule is to preserve the distinction between “nothing usable arrived” and “a usable but lower-quality result arrived”. The current wire keeps backpressure, budget enforcement, stale reuse, and graceful degradation explicit instead of burying them in app-specific heuristics.
Typed Payload And Extension Frames
Typed payloads let one packet carry non-tensor application content without pretending everything is a tensor section.
Current payload helpers in nnrp.core cover:
build_token_chunk_framefor token streaming and incremental text generation.build_audio_chunk_frameandbuild_video_chunk_framefor multimodal streaming payloads.build_structured_event_framefor structured dialogue or agent-side event records.build_tool_delta_framefor tool-call progress and coding-agent style delta streams.build_frame_submit_typed_payload_packet,build_result_push_typed_payload_packet, and mixed builders when tensor plus non-tensor payloads must travel together.
from nnrp.core import (
build_frame_submit_typed_payload_packet,
build_structured_event_frame,
build_token_chunk_frame,
)
packet = build_frame_submit_typed_payload_packet(
session_id=7,
frame_id=101,
frames=(
build_token_chunk_frame(b"tok", profile_id=1),
build_structured_event_frame(b'{"phase":"thinking"}', profile_id=2),
),
)
Extension frames remain the escape hatch for standardized or future protocol-side metadata that should not be forced into fixed metadata fields. Unknown non-critical extension frames must be skippable, while unknown critical extension frames must remain hard failures so SDKs do not silently misinterpret application semantics.
Transport Helper Boundary
The current transport-facing boundary is intentionally narrow.
nnrp-py keeps the helpers that remain runtime-agnostic across different hosts and SDKs. These helpers are intentionally positioned as tooling, diagnostics, or cross-SDK bring-up surfaces, not as the default host runtime API:
- QUIC connection/listener primitives in
nnrp.adapters. - TLS / ALPN configuration helpers such as
create_quic_client_configurationandcreate_quic_server_configuration. - Cross-SDK bring-up helpers in
nnrp.tools.smoke. - Protocol-native packet builders, parsers, replay helpers, and wire-size diagnostics.
Host applications keep everything that depends on runtime policy, business objects, or deployment wiring:
- Session lifecycle policy above the protocol primitives.
- Runtime-specific request/response models and object adaptation.
- Port sharing, service bootstrap, and multi-protocol listener orchestration.
- Production health checks, telemetry pipelines, and application-specific retry policy.
In practice this means nnrp-py owns reusable protocol machinery, while host/application repositories own the code that binds those primitives to concrete service policy and deployment wiring.
Development
python -m pip install -e .[dev]
python -m pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nnrp_py-1.0.0rc4.tar.gz.
File metadata
- Download URL: nnrp_py-1.0.0rc4.tar.gz
- Upload date:
- Size: 84.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ece24c9992eecf869eb67bb10c787c374034c93605f56ca922d23188fe6d71c
|
|
| MD5 |
173caac650c4b65a721b98b99d51d32e
|
|
| BLAKE2b-256 |
76b1f347bf9e21d4ca49e4b86520357afe2e30fe1436c14a57458594a6fd4812
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4.tar.gz:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4.tar.gz -
Subject digest:
9ece24c9992eecf869eb67bb10c787c374034c93605f56ca922d23188fe6d71c - Sigstore transparency entry: 1910682574
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-py3-none-win_arm64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-py3-none-win_arm64.whl
- Upload date:
- Size: 613.8 kB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a2ecf6aa9874f434ae29dd161017f3fbcfaf3102a9eb9715b5a62ac5fa07c49
|
|
| MD5 |
a121fd1c705689a52fb3ab5820dc37c7
|
|
| BLAKE2b-256 |
3db5dc0b9a3b992a1af7a80f85d3e6800dbb0ff8f8342595d3660206bafb1e4e
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-py3-none-win_arm64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-py3-none-win_arm64.whl -
Subject digest:
2a2ecf6aa9874f434ae29dd161017f3fbcfaf3102a9eb9715b5a62ac5fa07c49 - Sigstore transparency entry: 1910683200
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-py3-none-win_amd64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-py3-none-win_amd64.whl
- Upload date:
- Size: 642.2 kB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5144cf818cff23aaea5c65ad3392acf9a200b70b4246bd4d9699a23621ce56ad
|
|
| MD5 |
2044624271c70fda20a482bb99583154
|
|
| BLAKE2b-256 |
9e7e6edabadc147b2b45c02f2ef513cf5fb4229852fad0c5fb12eef7cd5507a1
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-py3-none-win_amd64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-py3-none-win_amd64.whl -
Subject digest:
5144cf818cff23aaea5c65ad3392acf9a200b70b4246bd4d9699a23621ce56ad - Sigstore transparency entry: 1910682977
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-py3-none-win32.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-py3-none-win32.whl
- Upload date:
- Size: 632.3 kB
- Tags: Python 3, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
033ea3b922779398a3c011ddee28e1c15f5139b41ba99b836001b6ec96c6548e
|
|
| MD5 |
1c132ce4f4977f050fb487034d56f41c
|
|
| BLAKE2b-256 |
6ae42e17c5297e86f08d872161d3101a8d05b004852849913b1ab6aa0f886707
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-py3-none-win32.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-py3-none-win32.whl -
Subject digest:
033ea3b922779398a3c011ddee28e1c15f5139b41ba99b836001b6ec96c6548e - Sigstore transparency entry: 1910683540
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d19ebbf83cf5a35c593f619cc39243a14bd9da3457b2c850803778a349d4169
|
|
| MD5 |
8e7cd23ddf67fc34b9dc468e0263592d
|
|
| BLAKE2b-256 |
221295e1f4fe6ac68d8c45df51caaa6392abf0bf09a2e9db313657436268fcd3
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
3d19ebbf83cf5a35c593f619cc39243a14bd9da3457b2c850803778a349d4169 - Sigstore transparency entry: 1910682894
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_i686.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_i686.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11+, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06537465705f5c7e48b3113a40496ceb23e6eb188b685a02a14991d5b45f73e9
|
|
| MD5 |
1f8bb3a6977797005608a48a833a2fad
|
|
| BLAKE2b-256 |
6acee554db275030fa7ae1afa48c1281e632dac4f3523818f2bac23af0cfac7f
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_i686.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_i686.whl -
Subject digest:
06537465705f5c7e48b3113a40496ceb23e6eb188b685a02a14991d5b45f73e9 - Sigstore transparency entry: 1910683112
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_armv7l.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_armv7l.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11+, manylinux: glibc 2.28+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4febca48658a7b4c5facc16ec69ecf4642a73a23c33fb7a3e1537d74cd8dabf
|
|
| MD5 |
a4ea39a9219e6e5daa988ae61db50a6d
|
|
| BLAKE2b-256 |
27e7de0cd250d4c2e39b5f1568de68c5c236ef93ffcd0b274304b3678f18dcea
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_armv7l.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_armv7l.whl -
Subject digest:
a4febca48658a7b4c5facc16ec69ecf4642a73a23c33fb7a3e1537d74cd8dabf - Sigstore transparency entry: 1910683323
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9b2285873d2def62fd66b3d60cfca66e15d3fc7546e6ee4dfd27edef6e779ab
|
|
| MD5 |
dc41c1245af8ea734f5c285b96319acc
|
|
| BLAKE2b-256 |
65281d1f8b93574e152bdcb93b46faa2447addc33173975553f26d95c3db0988
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
a9b2285873d2def62fd66b3d60cfca66e15d3fc7546e6ee4dfd27edef6e779ab - Sigstore transparency entry: 1910683448
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_x86_64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.11+, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80fa71e25edf73150b2507a00324a89344462bc194d899259eb332eeb3478b64
|
|
| MD5 |
fcfeaaf2735d41676133e6ddda7601a4
|
|
| BLAKE2b-256 |
42bbd67d82358cfa590c4a75f9d2864bd0d799fe4fd5ba405a4437974deaac2c
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_x86_64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_x86_64.whl -
Subject digest:
80fa71e25edf73150b2507a00324a89344462bc194d899259eb332eeb3478b64 - Sigstore transparency entry: 1910682790
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 986.8 kB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cef7e053c6f1d9f9792bf4ecb299d60ea01065e72a305dc4330a1c8f3ee79be8
|
|
| MD5 |
01e5449618c00e0c9c9080abdbe3d754
|
|
| BLAKE2b-256 |
45e2fb7e648b67c6ebd544afd8d8e02adea17bd2bfe4001408d6f514fd4b299e
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-macosx_11_0_arm64.whl -
Subject digest:
cef7e053c6f1d9f9792bf4ecb299d60ea01065e72a305dc4330a1c8f3ee79be8 - Sigstore transparency entry: 1910683382
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-android_24_x86_64.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-android_24_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: Android API level 24+ x86-64, CPython 3.11+
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40079a076b55049de0403fbe5653f9a0dfeb04479c78383b7f9b02c0eeb74222
|
|
| MD5 |
aba8087174a3bf39ef940a6e49a5f34a
|
|
| BLAKE2b-256 |
d9684e84f561d1ffc2c62b78e72fa2543fa0286a188e3e441ddf2e923f100461
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-android_24_x86_64.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-android_24_x86_64.whl -
Subject digest:
40079a076b55049de0403fbe5653f9a0dfeb04479c78383b7f9b02c0eeb74222 - Sigstore transparency entry: 1910682652
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nnrp_py-1.0.0rc4-cp311-abi3-android_24_arm64_v8a.whl.
File metadata
- Download URL: nnrp_py-1.0.0rc4-cp311-abi3-android_24_arm64_v8a.whl
- Upload date:
- Size: 1.1 MB
- Tags: Android API level 24+ ARM64 v8a, CPython 3.11+
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ead5e7f3b9c7673497083be01f4cb45675ade6f4a1ab4e8b3a11fa137c396eb5
|
|
| MD5 |
64086387d54ae8a71314b0472dc37e66
|
|
| BLAKE2b-256 |
069392aaf4c43da20477b27e565301b625fd02025bc3cdb70260df786aedbdc1
|
Provenance
The following attestation bundles were made for nnrp_py-1.0.0rc4-cp311-abi3-android_24_arm64_v8a.whl:
Publisher:
release.yml on NagareWorks/nnrp-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nnrp_py-1.0.0rc4-cp311-abi3-android_24_arm64_v8a.whl -
Subject digest:
ead5e7f3b9c7673497083be01f4cb45675ade6f4a1ab4e8b3a11fa137c396eb5 - Sigstore transparency entry: 1910683245
- Sigstore integration time:
-
Permalink:
NagareWorks/nnrp-py@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NagareWorks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd2c7940ec23c38080cc131c1262e8bff4f8c9f8 -
Trigger Event:
workflow_dispatch
-
Statement type: