Skip to main content

A fast DynamoDB ORM for Python with a Rust core

Project description

pydynox 🐍⚙️

Main PyPI version Python versions License Downloads OpenSSF Scorecard

A fast, async-first DynamoDB ORM for Python with a Rust core.

📢 1.0 Release: March 2-6, 2026 - The API is stable and fully async. We're collecting feedback before the official release. Try it out and let us know what you think!

Why pydynox?

Py(thon) + Dyn(amoDB) + Ox(ide/Rust)

Key features

  • Async-first - Async by default, sync with sync_ prefix. True non-blocking I/O with Rust's tokio
  • Fast - Rust core for serialization, compression, and encryption. Zero Python runtime dependencies
  • Simple API - Class-based models like PynamoDB. Define once, use everywhere
  • Type-safe - Full type hints for IDE autocomplete and type checkers
  • Pydantic support - Use your existing Pydantic models with DynamoDB
  • Batteries included - TTL, hooks, auto-generate, optimistic locking, rate limiting, encryption, compression, S3 attributes, PartiQL, observability

Installation

pip install pydynox

Optional extras:

pip install pydynox[pydantic]       # Pydantic integration
pip install pydynox[opentelemetry]  # OpenTelemetry tracing

Quick start

Define a model

from pydynox import Model, ModelConfig
from pydynox.attributes import StringAttribute, NumberAttribute

class User(Model):
    model_config = ModelConfig(table="users")
    
    pk = StringAttribute(partition_key=True)
    sk = StringAttribute(sort_key=True)
    name = StringAttribute()
    age = NumberAttribute(default=0)

Async operations (default)

Async methods have no prefix. This is the default.

import asyncio

async def main():
    # Create
    user = User(pk="USER#123", sk="PROFILE", name="John")
    await user.save()

    # Read
    user = await User.get(pk="USER#123", sk="PROFILE")

    # Update
    await user.update(name="Jane", age=30)

    # Query
    async for user in User.query(partition_key="USER#123"):
        print(user.name)

    # Delete
    await user.delete()

asyncio.run(main())

Sync operations (use sync_ prefix)

For scripts, CLI tools, or code that doesn't need async.

# Create
user = User(pk="USER#123", sk="PROFILE", name="John")
user.sync_save()

# Read
user = User.sync_get(pk="USER#123", sk="PROFILE")

# Update
user.sync_update(name="Jane", age=30)

# Query
for user in User.sync_query(partition_key="USER#123"):
    print(user.name)

# Delete
user.sync_delete()

Async-first API

pydynox is async-first. Methods without prefix are async, methods with sync_ prefix are sync.

Async (default) Sync
await model.save() model.sync_save()
await model.delete() model.sync_delete()
await model.update() model.sync_update()
await Model.get() Model.sync_get()
async for x in Model.query() for x in Model.sync_query()
async for x in Model.scan() for x in Model.sync_scan()
await Model.batch_get() Model.sync_batch_get()
async with BatchWriter() with SyncBatchWriter()

Why async? Python's GIL blocks threads during I/O. With async, your app can handle other work while waiting for DynamoDB. pydynox releases the GIL during network calls, so async operations are truly non-blocking.

Conditions

# Save only if item doesn't exist
await user.save(condition=User.pk.not_exists())

# Delete with condition
await user.delete(condition=User.version == 5)

# Combine with & (AND) and | (OR)
await user.save(condition=User.pk.not_exists() | (User.version == 1))

Atomic updates

# Increment
await user.update(atomic=[User.age.add(1)])

# Append to list
await user.update(atomic=[User.tags.append(["verified"])])

# Multiple operations
await user.update(atomic=[
    User.age.add(1),
    User.tags.append(["premium"]),
])

Batch operations

from pydynox import BatchWriter, SyncBatchWriter, DynamoDBClient

client = DynamoDBClient()

# Async (default)
async with BatchWriter(client, "users") as batch:
    for i in range(100):
        batch.put({"pk": f"USER#{i}", "sk": "PROFILE", "name": f"User {i}"})

# Sync
with SyncBatchWriter(client, "users") as batch:
    batch.put({"pk": "USER#1", "sk": "PROFILE", "name": "John"})

Global Secondary Index

from pydynox.indexes import GlobalSecondaryIndex

class User(Model):
    model_config = ModelConfig(table="users")
    
    pk = StringAttribute(partition_key=True)
    email = StringAttribute()
    
    email_index = GlobalSecondaryIndex(
        index_name="email-index",
        partition_key="email",
    )

# Async
async for user in User.email_index.query(partition_key="john@test.com"):
    print(user.name)

# Sync
for user in User.email_index.sync_query(partition_key="john@test.com"):
    print(user.name)

Transactions

from pydynox import DynamoDBClient, Transaction

client = DynamoDBClient()

async with Transaction(client) as tx:
    tx.put("users", {"pk": "USER#1", "sk": "PROFILE", "name": "John"})
    tx.put("orders", {"pk": "ORDER#1", "sk": "DETAILS", "user": "USER#1"})

Pydantic integration

from pydantic import BaseModel, EmailStr
from pydynox import DynamoDBClient
from pydynox.integrations.pydantic import dynamodb_model

client = DynamoDBClient()

@dynamodb_model(table="users", partition_key="pk", sort_key="sk", client=client)
class User(BaseModel):
    pk: str
    sk: str
    name: str
    email: EmailStr

# Async (default)
user = User(pk="USER#123", sk="PROFILE", name="John", email="john@test.com")
await user.save()
user = await User.get(pk="USER#123", sk="PROFILE")

# Sync
user.sync_save()
user = User.sync_get(pk="USER#123", sk="PROFILE")

S3 attribute (large files)

DynamoDB has a 400KB item limit. S3Attribute stores files in S3 and keeps metadata in DynamoDB.

from pydynox.attributes import S3Attribute, S3File

class Document(Model):
    model_config = ModelConfig(table="documents")
    
    pk = StringAttribute(partition_key=True)
    content = S3Attribute(bucket="my-bucket", prefix="docs/")

# Upload
doc = Document(pk="DOC#1")
doc.content = S3File(b"...", name="report.pdf", content_type="application/pdf")
await doc.save()

# Download (async)
data = await doc.content.get_bytes()
await doc.content.save_to("/path/to/file.pdf")
url = await doc.content.presigned_url(3600)

# Download (sync)
data = doc.content.sync_get_bytes()
doc.content.sync_save_to("/path/to/file.pdf")

Table management

# Async (default)
await User.create_table(wait=True)
if await User.table_exists():
    print("Table exists")

# Sync
User.sync_create_table(wait=True)
if User.sync_table_exists():
    print("Table exists")

GenAI contributions 🤖

I believe GenAI is transforming how we build software. It's a powerful tool that accelerates development when used by developers who understand what they're doing.

To support both humans and AI agents, I created:

  • .ai/ folder - Guidelines for agentic IDEs (Cursor, Windsurf, Kiro, etc.)
  • ADR/ folder - Architecture Decision Records for humans to understand the "why" behind decisions

If you're contributing with AI help:

  • Understand what the AI generated before submitting
  • Make sure the code follows the project patterns
  • Test your changes

I reserve the right to reject low-quality PRs where project patterns are not followed and it's clear that GenAI was driving instead of the developer.

Documentation

Full documentation: https://ferrumio.github.io/pydynox

License

Apache 2.0 License

Inspirations

  • PynamoDB - The ORM-style API and model design
  • Pydantic - Data validation patterns
  • dynarust - Rust DynamoDB client patterns
  • dyntastic - Pydantic + DynamoDB integration ideas

Building from source

# Clone
git clone https://github.com/ferrumio/pydynox.git
cd pydynox

# Build (requires Python 3.11+, Rust 1.70+)
pip install maturin
maturin develop

# Test
pip install -e ".[dev]"
pytest

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

pydynox-0.27.0.tar.gz (537.6 kB view details)

Uploaded Source

Built Distributions

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

pydynox-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pydynox-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

pydynox-0.27.0-cp314-cp314-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pydynox-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

pydynox-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pydynox-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pydynox-0.27.0-cp313-cp313-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pydynox-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pydynox-0.27.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pydynox-0.27.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pydynox-0.27.0-cp312-cp312-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pydynox-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pydynox-0.27.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pydynox-0.27.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pydynox-0.27.0-cp311-cp311-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pydynox-0.27.0-cp311-cp311-macosx_10_12_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

Details for the file pydynox-0.27.0.tar.gz.

File metadata

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

File hashes

Hashes for pydynox-0.27.0.tar.gz
Algorithm Hash digest
SHA256 c18eca142af0c0f9577693134e3cb7bcf0bdb4dd6e9a9dcb0e68440554416676
MD5 1518f2262c84d20034153baf99beff80
BLAKE2b-256 9036d755c0d28fcbe7731ddfa7f48b9259eb1cdcbf393c6609cb534d31e905d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0.tar.gz:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6cc0703b8efca519468dfe08ed67b1026bc92d821aa90dfbe95c8dbf6b74b292
MD5 eb98fd01123722003b6bdde26d1a8a72
BLAKE2b-256 b18392ba5089d98eb9f9aa70ba683b159461ceb1ff1991c99bbcdbfe6938b88f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e4126dbb6e4c3527bbdb952363f3194094fea4abe67246d8bdbebc6832f0513b
MD5 f8f1ab0ac38d2fe20d5e34699209ef3b
BLAKE2b-256 f92aec6964f050d773b1ff1020d2de3fcc992b4322a6c21ceed8d916ae778ba8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 756dc64bb645ab35b056d59e82cc2cc74d6f8a0a0b0c3241c07e4cc6dd178be2
MD5 63ce449fc6ecd9e88b98373936e948e3
BLAKE2b-256 e7bec27ecbc2443bbfb12ee3c8b99f06255826307051ce3da46f36d16a347089

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df0d72cc1d2ddfd2c90475d10ab8aadfd1abb5ff127d56dc7934ec77051938e7
MD5 795d8db1803aef50345e40e98302c892
BLAKE2b-256 19ebfc530b27ac46ac64ddca5ca360e8d6dff3a70d9f11eedf94e3f4c81fec1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 728b24b8c1a3106a88481afd6201940bfafabe7388ccc9b289fd869b6b131fe2
MD5 5cae4918982de25200cf1c36cf175233
BLAKE2b-256 764ef06ef4ace84e61517eeec7374efd32ca87157d1c531cc61bfa65d22a6257

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23a3b0314088c9e5ebb354cc1a0d3f4fe05391c36e36656f7080ae0b69445611
MD5 6d3eb160d476ea9825040c528a24aca2
BLAKE2b-256 5231616e6cd37b8b86b83b0033d47efcda1c1f0fbed7efa56bbd91f5a876d6f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27e8a5b6705a2b296a216d28a5762ebf599820eeaad3415a8f96bf4c8a027dfc
MD5 ef871bcef2cec6f2c0db54d4bfb64947
BLAKE2b-256 4a047c4498da14f932ab18f9af0d04aa3d9bee960a7184f258152183fde19daa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ed9b390aec03cee1a1cf3fb6e9538aa18afca2c1853045578f58b171e4ecfa71
MD5 a190ee8ed72810d7d3fc495f0b6da52e
BLAKE2b-256 0f5922ca729f5f5e93e0aa37e664a783e7d846eb1d3546a55a8c49cc9835614d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ab92dae2c8a2bca929e0a4f5fb3056ec92b4455cf70ead89be5d2a0061ee29d
MD5 2ff5aae49664f3c86a38e7578d91869d
BLAKE2b-256 0f7e57829853a1122f2d3ccbd059834bc53a6eb70a4888659a02099b1b6e0be9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 22e74412b42dc893aec955eb859fd7513308e5f0816ef1f17724d878c114979a
MD5 e3739dd947308ea3f24bb7c17b39cb41
BLAKE2b-256 91f25430ee4955044146a85efbf5f8aa21b8653f27a5a6d08ad4dd5c7eced5e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cc25c049517607ca893746678de68524055c299699d047c009674c159c0aa21
MD5 df0665d5a5385293898bbdc65ac9da27
BLAKE2b-256 c5674b7b30b99941dd03b747d2763fa4363afd157a00f6d040b8379f84f1a98a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2183bded5fa9c4d9f20490ecc23b25d4f520a253f96986ae45c04d97664178be
MD5 3697c319218d9153b9458a1dd25138dc
BLAKE2b-256 5b4dcf50d70fb3f83e630c3b93e2c12bc6196815d01323c5d713556b9538ba8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 baebf784972212308521fe6bb8bfa970b7dae6860c05cd7121806d5e803fa184
MD5 13443ca63f92fa34616f8fbc756fa32b
BLAKE2b-256 b7ec82432594c397dd522764ee0353f0d28962c87ccbcc1060c51071d6fa7fd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5014dc2acd52d01ff98dc63d0d4640ee006632e01e7461115eb133d69dd2270a
MD5 45f7e4bd66fe5cdda78c88a99f98b16d
BLAKE2b-256 3228509d527722683b1e1d64b69c50e219885450221449c9279cb9f1c50b116c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 258ced264aea7d2328c1df41ab97b151b8f2d43c9a0d45101a22debbaeb1ca22
MD5 79d3834be26d3c014136bc9bdc86b6be
BLAKE2b-256 8684e455221935ac66c4662a29cec7328e7f0f2a339f4c803deab6e2cc651e7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on ferrumio/pydynox

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

File details

Details for the file pydynox-0.27.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.27.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d4779bd981b60e4ed9da9bee597b24a85960fab0f4b68495fa49938391d4141d
MD5 ad34c7b2099950b3267b06a5a9d30ebf
BLAKE2b-256 70af88d347af69af9b961d1361ac9b047086ff8dd728269431343bb88dba8dca

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.27.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on ferrumio/pydynox

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