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.26.0.tar.gz (533.4 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.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pydynox-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

pydynox-0.26.0-cp314-cp314-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pydynox-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

pydynox-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pydynox-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pydynox-0.26.0-cp313-cp313-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pydynox-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pydynox-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pydynox-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pydynox-0.26.0-cp312-cp312-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pydynox-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pydynox-0.26.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.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pydynox-0.26.0-cp311-cp311-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pydynox-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pydynox-0.26.0.tar.gz
Algorithm Hash digest
SHA256 00d3f4c8164c908c62412f6f20bcf657abb0c6e2612b05c9eeb0571f6f225be8
MD5 ffcd01851ed3fbbdc0770f11bbef4d51
BLAKE2b-256 8bb006d26a393353492cece1235f6645e3977ea28e2f50d9ed0e096ae78efe6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3033278399c0db10dde5a26563bfcdebf390569b8a8a24d98e0bf85a95d962dd
MD5 454ca33ec1ca18c60fa65f96891cddf8
BLAKE2b-256 94a9a86ada04aed732deb5fa629793e369234eccd81cdec84aba8224ec7a3558

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b07c06bde6ccf2531d6600e80aae904eb11afa18a5bc64379eb532aab2e4ceeb
MD5 d87adc31409251bf4d9a3239bde256a4
BLAKE2b-256 4c9ee287d752220a4ccc0957385388b4eeb6ed5caa0091bc0e434227cf4abc56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad6dabb90b2aa3b81a5e8d356f0ae2b76769035eb84ab9a73dbf7ef0454d6bac
MD5 aace327bc2e9bd4cdbd78265f1e44554
BLAKE2b-256 3bcf0be8fa437be7c0183491bd0c46b28510a12cc5079a9edd5f214a755ec203

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 de3d75be36cba1129169872995585ed75b7cd6b69dc0463856946834a51ab9d1
MD5 64b254eaad486a0e5ffb309bd955afb5
BLAKE2b-256 03129e9f9bf00ae9bd5fa84fc9e8f63f8a6b46ad69b0646a9ec91c38fd2bdc84

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7dd2c63d3eb19fd2b65849e2abfee526490428be00312bb96c3264ca33cc3a28
MD5 1bb3c84df35a1ae5113d5953eaf7cb7b
BLAKE2b-256 2f2ff03a3089318ff004d8cf559d942f25d121f4eec13877e69bead2b3219582

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f85afe37f799c23943ce7b41324362caef3495f446c29946d10f82bb369294ed
MD5 ce103cee32a441641dd8c67cb8450749
BLAKE2b-256 4e7e4f9b627bc9c3dc4304cecb4c9f8b449d35abb7f96136b708352d90ac3662

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d4fe93175a2ee82420bf9faa92c436455cff1f7fc5ec3cf9dc88781a38a6270
MD5 a678ae1168955da81b393eaf4e5a2aa1
BLAKE2b-256 2a389fff2a17c3e975ad2190143abcd3b27524377f8df5f598cd501ba8fbc9a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 82cfddf702899cde49075b196296c1d2e56486ab3ada740bb1f1d30d627f2f46
MD5 fecaa39c2cedc8e696a283280a3b6d9d
BLAKE2b-256 276ec1ca36eae7ccf015e4d723fac3eda7496ae59089c078433002575704a676

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 992614b347f89ce509c1100c32f5300f6801134463090d27afaf40b1c64b23e8
MD5 9e0e67c089d971ea0cfb98c6b374f526
BLAKE2b-256 d5fbc1f474a719360b7aa76d78a840392832fb589b6c82d7cdb239a0a002acb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d98a22ee0e50fd290d286e84b9dd369580c1eadb642dce69277e2279dd329dc3
MD5 1a9f9af13eaf39a7d7ab29e58289b988
BLAKE2b-256 0d3d4fcdef2eed3685b9d471d232e56cc27687a861ae8b0a328956088250a029

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b747d26907126b307d5a19ba610f5cb26c0784e7a12ff31ab8a4981f3a5aae7
MD5 1d17a2173689b4975707483d88f7a0e8
BLAKE2b-256 89235813b59c7ed42d93a95d5645837757592d0bb5385730aa326f00c19e08a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f5b57e548c203b2ee6c433d3ce11fe773770231e09a4cfbced84d44fe276ede9
MD5 d3dfa1679127458e3d02f8d9d4a7ce7c
BLAKE2b-256 0b43088bb6ca22accc1404854d99e7be69eb374f9c62e1e4a8e24c9adb9eb364

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 374c43e335bc70a836cc53c07a57c5a45195711182c11f96d70dbb67e93a2d80
MD5 28f0d0a1a949bae90e2f3a57949bdaa4
BLAKE2b-256 57b0ed66ee05f3b0ba6cccd118a79df370109f47e25d039504cd23004d594783

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 693bdade1ca6df2516e27c88d411c22d74b093d0f68470b64151b94fe3e4304e
MD5 a5d5546c6948fe9c8d5ee7b2b2236766
BLAKE2b-256 7ddc5645bed36e65d1a7ed1fdb9e824ad32cc543061748d29556583a1f892d73

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee6c174696015970878f557bfb4f564883c1a5946c07052f67857ce994c58e55
MD5 6c506c9bd1f7b90a32ba1b12762fd9f5
BLAKE2b-256 5b4adb77fb672cb0ece4d56b98975123399870606024465f8eecb9819c1d6b9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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.26.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pydynox-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 64b25e294a3c4f61e3e78b5c31538d9baf12f92c05726e9e641bb52504c84c86
MD5 7250410b44441f7a7fc6ccad455d3757
BLAKE2b-256 de956ae8681b13c99029473cdeb99f58a8d9f8673f925225c2f9c94f1ed6a290

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydynox-0.26.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