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.25.0.tar.gz (523.3 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.25.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pydynox-0.25.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.25.0-cp314-cp314-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.12+ x86-64

pydynox-0.25.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.25.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.25.0-cp313-cp313-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

pydynox-0.25.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.25.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.25.0-cp312-cp312-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

pydynox-0.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pydynox-0.25.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.25.0-cp311-cp311-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pydynox-0.25.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.25.0.tar.gz.

File metadata

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

File hashes

Hashes for pydynox-0.25.0.tar.gz
Algorithm Hash digest
SHA256 73a6fb0e0d35776b7bc6446075854186f84f81043e682064a1fc5fa30662e359
MD5 92ed91964ce05fce647a841a316368d0
BLAKE2b-256 7c449a30913dd05b1dd4bab966958a3dc55b98047e317da68c12f76a705cb8b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a68705c10b8f80432de792f176c7d38136c7971f915a0199ab8c8cf0b580a4a4
MD5 f4270be1018b6b2de8cbd88c1a0925c8
BLAKE2b-256 2909b5ed40890f32ee85366790de31370dab2f28e6ad90a3c91e2eb59c712354

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 25fbfc3339c657d3d83c9cd5b648e5046f480df61ef07136bcaf7d41ee6baee9
MD5 2dee1e8f7e464177211ad7066dd548e7
BLAKE2b-256 003eaf70bc99544d9f8410102b037f43d216a9a84223c6e35de27691bf816dbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32489063b2e83aea145521a39e07fb60d0110d5afb2212dd88ae93e495d2570d
MD5 f4747fb9c7bd4f80b60269acfa974c2f
BLAKE2b-256 fabaf5e01360a1bfe82dbcb123478d077d4fee78529dbe923e59e51224356fe5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f3fedbb4226d0a9f7564a4398acd3d520fb94f28c49a923cefe54b5085674ce4
MD5 f4abd4ce6e389bdc5118c6951875df2f
BLAKE2b-256 35b65d34799ee6bad659b771d5e7a47d24b2c8e7b66a93f18d939d997f2be4d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ea10c3bca82e6f81255ed8db04cce762f916de0843245db3e7c0b3450e33b9d
MD5 23ebd41f3344a21d9eb25183fc047d40
BLAKE2b-256 3a964abb5546d3fa14f3b39af874f28d173e1a62f06515e168492041adbf8747

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4d19514dd5e47b15a3b8840943bf7318d703dd79c9373fb172bd4f21769ce206
MD5 9a4e43259dbc793a42b3d0b8b390307b
BLAKE2b-256 84f0191800db42369d5e0a0b5b99530e90f78770f535bbca9c22196ae9365921

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f97e3403fee71b12926277a2ce34342135acedcb9e2dd56136717e4d535684d3
MD5 aa8e0b1f4d8ae54246a1db2b9f5a3df0
BLAKE2b-256 dab43849f3031488605ca3dbbdd92f3036501453b86eff46a203e4af43b4d31d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9440ad7a22c7199e71d287a3fb9483439b5e269042f5d14e60370fc319e9e669
MD5 5efcc955b0474d0f9debba5465ada015
BLAKE2b-256 827794f983bc1e10e675c2862e5de0b5b48acab58c3295c77a6071cc0ab1e381

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0301cd70a7a9e79f464938b778b10bfbdc7f16cbc1457d1787ffb76be3236473
MD5 70bee94974808b3341efc53d4798b4c3
BLAKE2b-256 32e7e37fa54da332306760078ec4b42ad672ae537c47d92abace96463f2b24ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 57fa873a1d32d6c2e76251532c2b715287fe81939e36e08807dba4982ba18c6c
MD5 3af77e7fc315718db5da9295be14af57
BLAKE2b-256 53a1bffe2e7a6c237a76772c130d23ff5c982ea4246b26ff11f652cc81d8fe4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1847a349b08608eb62b322f1a0898af017bc5ae8e21f726d32718c24ba26957d
MD5 82679751071f1a697a7addf9c42239f7
BLAKE2b-256 0aa1187a96970ccdeeeb769403bf1e2ea28fe2a60102e6831face36315f4361e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0990a1922445a9dcbd4ce52c17fd85552f57c71689aa5ab6d2279f394acfdcb
MD5 e0d24551f3d25387e69aea5f10578e15
BLAKE2b-256 a5e9270ac308af583f5fc30af12c9ffb94f71c73f0fd4ef75861d0e0e4a7ce5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 137980b3ccd689084bf67d69585f945c69426eeff0623bd318954fd9f0d6b2eb
MD5 aa7790d0861a44c3d0e6ddaadf7c1f74
BLAKE2b-256 add746bc81a15736bdcef92ddfb4d725c3ad25974850b4576248b539a10f0998

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88cced19f614c5ab88bfb2380bdd1dc5e95f4befc665f2cec679da3ac2c22add
MD5 6d68c522f5a52e27c70e5991bdf44fc3
BLAKE2b-256 c8b5d253ab99b6e02fd331cedd93fee1d33ea04123d366c591c90538ba0cf15a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 567334484c45fcd3ec18b3aaa2959ff01d6655fd751491c4b97b8ae50314f14c
MD5 fe2b8677f54fedeba94f6f71d345c822
BLAKE2b-256 51a3a2cb11a7c782948928361ff6ccb93b47d13b65d5205ce9ae3af13e21336f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-0.25.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2f03fac5dc510e4df8c6c9af8dcdb6a207dd7066d8bd3adae098dda904a24ef7
MD5 b2b67af0c8b2c340a2b1f3babce2f080
BLAKE2b-256 12c789ed50bda7fb8b3bc023c2e9d26e12c2493c9548119df7e48dfdd0754087

See more details on using hashes here.

Provenance

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