Skip to main content

pydynox 🐍⚙️

Main PyPI version Python versions License Downloads OpenSSF Scorecard OpenSSF Best Practices

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

🎉 v1.0 is here! The API is stable and fully async. Production-ready with a Rust core for speed.

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydynox-1.4.0.tar.gz (592.2 kB view details)

Uploaded Source

Built Distributions

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

pydynox-1.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pydynox-1.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

pydynox-1.4.0-cp314-cp314-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pydynox-1.4.0-cp314-cp314-macosx_10_12_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

pydynox-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pydynox-1.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pydynox-1.4.0-cp313-cp313-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pydynox-1.4.0-cp313-cp313-macosx_10_12_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pydynox-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pydynox-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pydynox-1.4.0-cp312-cp312-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pydynox-1.4.0-cp312-cp312-macosx_10_12_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pydynox-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pydynox-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pydynox-1.4.0-cp311-cp311-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pydynox-1.4.0-cp311-cp311-macosx_10_12_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pydynox-1.4.0.tar.gz
  • Upload date:
  • Size: 592.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pydynox-1.4.0.tar.gz
Algorithm Hash digest
SHA256 585b07097433193a27cbc9738a3f7f2a26534e4fa81d6a578b850a72e1176567
MD5 259f01283db59f066ac5190e47f75aa7
BLAKE2b-256 99930d24f4981085d4f0fa080e1c8fa4a8b3d48ee73e1efad29b22ca36d95028

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e1d4fb694858598d069cb1152c543269282128cb506a30f87aaad27537e990e
MD5 cdd6ab2ad10396e93f115ed70b25fcdb
BLAKE2b-256 c82445d707a9c4c72547867f3ad5bb88f788f52e40f50d11ad03433148b9cacc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0202ccc5dc1f8182024639a3ba16dfd4ec958dad01377ddf12930006233fe403
MD5 bc10ddb000c85a6f3e6fbd0f5dddabba
BLAKE2b-256 9c8acf04a3baa5a4fb79a0d9e1ea1b21c97cc8c0436addc2343994777fb3c9f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b33c7eb27c600467b19bd028030931aa4881fc7e8bd02eae8ba02b4f7712e51b
MD5 da09cea32f507908745529f43be0ef66
BLAKE2b-256 12953bbc5116689bd58aaee09ce9eef56fda5c8ac164ae2c18f11905c98f19ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a3aea7758cb7f5ac3592e5b94c7704cd687d36b6297643c5e06cd81048c2821a
MD5 e6b616ba5abea90c83589950337860d5
BLAKE2b-256 10febcc5405a10a11264eb5154be87d02cd75e31739e75c6361d2bc63cfafbef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac5648da082f913132a4b00eef223f072316bf10cb7c9250fc0ad7c73c58e59d
MD5 7c616f839782749f28013500484edd83
BLAKE2b-256 81383a54725c823a5d2e670c6ad4acb6ddc57ea94ea04d15c08c5d817ffc2b5e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 df24ec8a1fd2124bab6e1b2714edccfd6a6213b54ee082992ea25010f14bca2a
MD5 244d22d9e3bd134898cecbc734114805
BLAKE2b-256 592bc150c6b6b5c0e2d6f5267b82408662fc009516b5b7f6609d7c9feefe3009

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83099f31287e4ecc5adf7d0cdbf8ab79baa042cda88ac094935e129de8c04260
MD5 d9c694a4751a0735a958b84723a7ff36
BLAKE2b-256 bfec3b4a6c3da1e97976782c98cf28350c83c33cf352d8188ee34bf7d783db55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 84fe102c8d93acab240ae70659955515c0c527435400de60de3bb1bc76702520
MD5 3b6f8c3e24289b193d151e0b332dc09d
BLAKE2b-256 1edaf75f8b6128fe4e32b68feea0042295969217761ce91aa2bd5056e2c48e1a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ab08df0d94c00667a516d75bca4b4d6921a5793ab718c93bfd35d9c56b8bd974
MD5 1695d92f2aa3b0d7ae36c27afa5bd4b8
BLAKE2b-256 52d3fe176949847b3b77106754fc36bde46351713834cb3f077a8c0740688844

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f18e4ad26bd3d917c29a7fd047ec98422c6207f32fbe66629c00345235875387
MD5 4a879a353047dab742c54df996ab9b49
BLAKE2b-256 a70326d350aade1504854df1b9cf25a9f0215305187de9665c32025f0e577f3e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad4beda5ffcd6e2853607c4fc9ecd05f694a9ba757b71a753ff4ccb0262f56b3
MD5 927105ce827d920fcf025d7b06f2d83e
BLAKE2b-256 47c7d2af2acbcbcd2b670bd053e59d5f605ba37352f050e4f72563dea586d096

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 978565993183f725c279b34c9eb902f3b4c68ded86df07e1001d2def2e0f070c
MD5 99fe2ff0231585883135d8f4f69a1731
BLAKE2b-256 996824872ddac069d1e608274e229b9382c96e914d3067fbdc72149f080fc960

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfd81877b2d13c4ea08483c9be813d16dfe64588e34a359d7a9ea452bd11de4f
MD5 16101a1902c8bc5ffb3a349b2a4f1ba4
BLAKE2b-256 4cb576a77f877c0cf99490c87a830f77f3a8a0882f94c97a5ee985f7ed994897

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04fed605066305db3b16990af0be657ebbaea2bce66329902e69accd38f2da8d
MD5 8bb95aa10730f57ed095be2a17afcfad
BLAKE2b-256 3cf91ceb8bc642cc978c66f44d2934ed1579092ae9d14335e47876c98410f907

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0fd23b339922688b5225c9abdd03866680bcd44d0d8a560a3141ce3b159f076
MD5 18c9960299e90d9ac2972a15364146b8
BLAKE2b-256 5b85d194511b1cb9ebd3dc6d9e9e5507d3ef3f6a77a2865a330c9e93e86ab9b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pydynox-1.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d49c91222307a1df6e10038944809a9624ca83bd5e81da19c3c4a0df2fa48f9d
MD5 f0acd56d3977aab624767f571e6f6953
BLAKE2b-256 ae54f8c7406be766a377a9016444e9a4efa178f734ed3641421f8573aaa3e3b8

See more details on using hashes here.

Provenance

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

Release history Release notifications | RSS feed

This release

1.4.0 This release

17 files

1.3.1

17 files

1.3.0

17 files

1.2.0

17 files

1.1.1

17 files

1.1.0

17 files

1.0.0

17 files

0.27.0

17 files

0.26.0

17 files

0.25.0

17 files

0.24.0

17 files

0.23.0

17 files

0.22.0

17 files

0.21.0

17 files

0.20.0

17 files

0.19.0

17 files

0.18.0

17 files

0.17.0

17 files

0.16.0

17 files

0.15.0

17 files

0.14.0

17 files

0.13.0

17 files

0.12.0

17 files

0.11.0

17 files

0.10.0

17 files

0.9.0

17 files

0.8.0

17 files

0.7.0

17 files

0.6.0

17 files

0.5.0

17 files

0.4.0

17 files

0.3.0

17 files

0.2.0

1 file

0.1.1

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page