Skip to main content

Rust-powered PostgreSQL driver and Django database backend.

Project description

django-vpg

Status: Pre-1.0. The driver core runs in production as GlitchTip's database engine, and this package is maintained by the GlitchTip team. Everything below 1.0 is the API sandbox — packaging and public surface may still change between minor versions.

A Rust-powered PostgreSQL driver and Django database backend.

django-vpg replaces the connection/cursor IO layer of Django's stock PostgreSQL backend with a Rust core (tokio-postgres + deadpool, via PyO3): swap one ENGINE line, keep your schema, migrations, and ORM code unchanged.

Part of the django-v* family — django-vcache, django-vtasks, django-vpg — small, fast, Rust-core Django infrastructure maintained by the GlitchTip team. django-vcache and django-vtasks are battle-tested in production at glitchtip.com; django-vpg is the newest member. (The v originally stood for Valkey; with three packages it now just marks the family.)

Why

  • CPU and RSS. Protocol parsing, row decoding, and type marshalling run in Rust; only final Python values are materialized — intermediate protocol buffers and COPY encoding never traverse the Python heap. In the GlitchTip team's A/B benchmarks against psycopg (production-shaped ingest workloads, replayed locally), the driver holds resident memory flat under heavy-tailed payloads where libpq's buffers ratchet (2.5 vs 21 MB growth per 10k events), and wins per-op CPU on jsonb reads, pipelined batch inserts, and COPY event batches.
  • fetch_models fusion. Row → model-instance materialization can run as a single driver call instead of a per-row Python loop.
  • COPY at native speed. COPY FROM STDIN with batch text-format encoding in Rust (encode_copy_chunk).
  • psycopg-shaped errors. Full PEP 249 exception hierarchy with sqlstate and Diagnostics, so existing error-handling code ports cleanly.
  • Server-side cancellation. Cancelled queries fire a PostgreSQL CancelRequest on a fresh connection and the pooled connection returns clean — no poisoned pool state, no abandoned server work.
  • Real pooling. deadpool checkout/return with warmup, wait timeouts, and jittered max-lifetime recycling; prepared-statement cache with psycopg3-style admission (prepare_threshold / prepared_max). Behind a transaction-mode PgBouncer without max_prepared_statements, disable prepared statements the psycopg way — OPTIONS={"prepare_threshold": None}.
  • libpq-parity TLS. sslmode (disable/allow/prefer/require/ verify-ca/verify-full), sslrootcert, client certificates.

Install

pip install django-vpg            # sync ORM + async driver API
pip install "django-vpg[async]"   # + async ORM via django-async-backend (Django 6+)

Wheels cover Linux (manylinux + musllinux, x86_64 + aarch64, CPython 3.12-3.14). Other platforms install from the sdist, which needs a Rust toolchain at build time.

Note: psycopg (the library) must be installed — it is a declared dependency. Django's stock postgresql backend, which django-vpg subclasses for schema/introspection/operations, imports it at load time. The IO path never uses it.

Quickstart

DATABASES = {
    "default": {
        "ENGINE": "django_vpg.backend",
        "NAME": "mydb",
        "USER": "postgres",
        "PASSWORD": "...",
        "HOST": "db.example.com",
        "PORT": "5432",
        # Optional driver OPTIONS (libpq-parity naming; psycopg3-compatible
        # pool dict):
        # "OPTIONS": {
        #     "pool": {"max_size": 20, "min_size": 2},   # default max_size: 10
        #     "sslmode": "verify-full",
        #     "sslrootcert": "/path/ca.pem",
        # },
    }
}

Supported OPTIONS keys: pool (psycopg3-compatible dict — max_size, min_size, timeout, max_lifetime, max_idle, name — or False for a dedicated single-slot connection per Django connection, e.g. under test runners), pool_size (shorthand for pool={"max_size": N}; default 10), prepare_threshold (psycopg3 semantics — int = prepare after N uses, default 5, 0 = prepare on first use, None = disable prepared statements), prepared_max, isolation_level, application_name, connect_timeout, keepalives, keepalives_idle, sslmode, sslrootcert, sslcert, sslkey, and server_settings. pgbouncer (bool) is accepted as a legacy alias for prepare_threshold=None; prefer the psycopg spelling, which — unlike pgbouncer — is a real psycopg key, so the same OPTIONS dict also works on the stock backend. Unknown keys warn once and are dropped.

The async story (three layers)

  1. Sync ORM — stock Django, zero extra deps. Works everywhere Django works.
  2. Async driver API — real asyncio, works anywhere. The raw driver (django_vpg._vpg_driver.RustPgDriver) exposes await-able query, execute, transaction, and COPY operations with no dependency on any async framework beyond asyncio itself; driver awaitables interoperate with gather, wait_for, shield, and cancellation. (django_vpg.dbapi itself is the sync DB-API 2.0 shim the Django engine builds on.)
  3. Async ORM — via django-async-backend. Installing the django-vpg[async] extra activates AsyncDatabaseWrapper, which plugs into the async_connections framework. Without it, the backend cleanly degrades to sync-only (no ImportError).

Unifying Django's connections and async_connections (transaction management and isolation across both worlds) is active upstream work in django-async-backend that this package tracks closely.

Pooling and session semantics (psycopg is the reference)

Two rules, both deliberately psycopg's, because porting an app should not mean re-learning connection behaviour:

  • The backend decides whether a transaction is open — never the driver. Every PostgreSQL response ends with a ReadyForQuery carrying the session's transaction state; libpq caches it as PQtransactionStatus and psycopg exposes it as Connection.info.transaction_status, which django-vpg does too. On release the pool applies psycopg_pool's policy: idle sends nothing, an open or failed block is rolled back, and a connection whose state cannot be established is discarded rather than reused. (Inferring this from SQL text instead is not sound — it misreads ROLLBACK TRANSACTION TO SAVEPOINT, COMMIT AND CHAIN, ABORT, comment-led SQL and PL/pgSQL bodies, and it cannot see statements that never went through the driver's own statement path.) A pool hook re-checks at checkout, so no return path can hand on a connection that is still inside a transaction.
  • Session state is not reset between checkouts. Same as psycopg_pool, which ships no reset by default: GUCs set with SET, TEMP tables, session advisory locks and LISTEN registrations survive into whoever checks the connection out next. Reset them yourself if your application needs a clean session — and note DISCARD ALL is the wrong tool, because it deallocates prepared statements the driver's per-connection cache still refers to.

One more difference worth knowing if you use the async ORM: in async autocommit each statement borrows a pooled connection and returns it, so consecutive autocommit statements may run on different backend sessions — pg_backend_pid() is not stable, and TEMP tables, SET GUCs and advisory locks do not persist between them. The sync path pins one session per connection and matches psycopg. Transactions pin in both. This is a deliberate trade for throughput (holding no connection between statements lets a small pool serve many concurrent tasks), and it is safe rather than merely fast because of the status checks above. It will become a configurable choice before 1.0.

The tokio runtime

The driver runs on a fork-safe shared tokio runtime owned by the package (1 worker thread by default; VPG_TOKIO_WORKER_THREADS overrides). Prefork servers are safe: the runtime is rebuilt per child on first use.

Rust embedders get the same hook django-vcache offers: link vpg-pyo3 as an rlib, re-export its pyclasses into your own pymodule, and install a process-wide runtime with vpg_core::set_runtime_provider(my_get_runtime) so one tokio pool serves every driver in the process. (This is how GlitchTip's own Rust extension embeds the driver.) The hook returns false if a runtime had already been built — assert on it at module init to catch wiring mistakes.

Known limitations

  • USE_TZ = True only (Django's default). timestamptz values are returned timezone-aware in UTC. The stock psycopg backend returns naive local datetimes when USE_TZ = False; django-vpg does not implement that conversion yet, so a USE_TZ = False project will hit naive/aware comparison errors on DateTimeFields.
  • One statement per execute(). Multi-statement strings (cursor.execute("SET x = 1; SELECT 1")) raise a syntax error where psycopg3 runs them; the extended query protocol is one statement per Parse. Django's schema editor and test-runner paths batch through a dedicated internal path and are unaffected — this only bites ported raw-SQL code, which should split its statements.

Status

The driver is the only database engine in GlitchTip's backend (as of July 2026). Pre-1.0 while the standalone packaging settles; the driver core predates this package and carries its full test suite (including an in-process PG wire-server harness) with it.

Known naming wart: the vendored tokio-postgres buffer-cap patch reads the GT_PG_BUF_CAP_BYTES env var (512 KiB default retained-buffer cap); it will be renamed with a compatibility window before 1.0.

Development

./scripts/check.sh        # fmt + clippy -D warnings + cargo test + ruff
                          # (includes tests/wire.rs — an in-process scripted
                          #  PG wire server; no live postgres needed)

# Python suite (needs maturin + a live postgres for the marked tests):
python -m venv .venv && source .venv/bin/activate
pip install maturin pytest pytest-asyncio django psycopg django-async-backend
maturin develop --release
VPG_TEST_DSN=postgres://postgres@localhost:5432/postgres python -m pytest tests/

The workspace is two crates: crates/vpg-core (pure Rust, no pyo3, cargo test-able) and crates/vpg-pyo3 (thin bindings, cdylib + rlib). vendor/tokio-postgres carries a minimal retained-buffer-capacity patch — see vendor/tokio-postgres/GT_PATCH.md for rationale and the re-audit procedure on version bumps.

License

MIT

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

django_vpg-0.3.0.tar.gz (278.3 kB view details)

Uploaded Source

Built Distributions

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

django_vpg-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

django_vpg-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

django_vpg-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

django_vpg-0.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

django_vpg-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

django_vpg-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

django_vpg-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

django_vpg-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

django_vpg-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

django_vpg-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

django_vpg-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

django_vpg-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

File details

Details for the file django_vpg-0.3.0.tar.gz.

File metadata

  • Download URL: django_vpg-0.3.0.tar.gz
  • Upload date:
  • Size: 278.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a93ee649f8bc20cd7f27f9f70e201963f683945208ae25ca55d7598a9c379cdc
MD5 254ce6fb13ba28a1eacb209a3fce1710
BLAKE2b-256 37e0dc216ad057c73b2cabb7569c1ca482d667e0eca195bbb24a8d2ba08e9bed

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1370b6bc28018138876cce9d01f9dfec411c44bf7bd86b2a67a98eb8107b03e7
MD5 ee7306119e4280158277d884c44f39eb
BLAKE2b-256 e24fa4c3221e979ce8848b34d42a0b971fcd1d2bb8c47abe95fdcba9b0c8d02c

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4a1e8a05e8c1455f5b3c3943603313a945ba94f18b893b1fbd17a462eed4312e
MD5 87008664bd9ea8b203a0bd3a397fb54a
BLAKE2b-256 4fa5581447a0b3835a978ae650877edb2739f234174e63f94d3c8e3f73722c53

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5fd21f21f99077893b737530d51028151b56353d039cfc9af72bb5728f778f32
MD5 3a05d4a622eb1e23c4282d4ecd67e946
BLAKE2b-256 0ade6cba600690847c4b6e018c831d394b85d15d6aae92408333374d49e0b4e4

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 afe10467ab88c8de0101e61150216c45240c8196b70b469576ee575311c47081
MD5 67d61bf2f8c27fe8a3df4960d180b623
BLAKE2b-256 5c5f2ce35470864846d40206c9136a1dfb8ed9f5bb7a88dd20cb6ce045397313

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 befc06af2be0274a7fbc5ba92875dc352bb68926b9912e1d97938df52ecd89d2
MD5 15b92034bd588ea23d462fd4a1d6fe87
BLAKE2b-256 2ca30aa535ab68ca1a8ed2c92f57c0c7e3379386b245dc64254850e64cef2d8a

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b167f10f9a7c753b199e749e62306014158c345f56713721f1832b9685cd362f
MD5 d57e1267581828b34756dbbbbb8eeb3f
BLAKE2b-256 aef5d0b8ed6f2ac60655404948c46c9c6021b72f220ffdd649c8e21db09db4fb

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3a63048e0040ddeef63fe0e127d9a94d11649a70ebcfa1bac92107b96094799
MD5 3cd1a7c489a20349136f6ce067c34611
BLAKE2b-256 17d3b042b6a1067110bdfd67862b18eb75d1de92140c0097dc6312657958c3b5

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f27f153785ee7ef91452c960e25890fa20bb3bccc95b1abea91419708462c091
MD5 8f2449199ffdaf38f9c9e756f6906c82
BLAKE2b-256 2dd2ea9f8706f858dff8b6b7ef7ae3eb9332e65c43e68d723e54c9035d4cd8bc

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ad78b5d9111a9fc59bbccdd99bf85fa22386fa98f9241ae006e5c89447c99524
MD5 f2f350324923cf74c858e3bc25c70eaa
BLAKE2b-256 e524c51e62b6e1b67cbda5d693d709aa911c956adbdcc8a6391e3d5055d39680

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 345f8bfc691665c78ce74a91ecbbf9f0f32a1920899196a53501defec5147722
MD5 7dd7b41112485cf685c4e5ecf9a36dd1
BLAKE2b-256 bb994ee855789433a3f57d7e3db0c180fd1b83f83bbf2dbb1f47ae4007b23281

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3555563f3c7021eaa35873bc66d810c11be90217c1ee950cfd88f63b8234563
MD5 5363a6beb8c8abc8da2ac08a8eddcf6d
BLAKE2b-256 4a36b26a7798fe68e9eac0fbc3cf422889ee7a2f218331baaa969a74b3ea6a28

See more details on using hashes here.

File details

Details for the file django_vpg-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: django_vpg-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for django_vpg-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9e68860a0d52e1b41af393af040d746c0cf593a6266b59084efb8c50353ee14e
MD5 8cacee47c15de07a2d3729af18d7062f
BLAKE2b-256 c14b043068ed2204b4cd04fb93861224fdd587bbe8a607bb1ef487cbad4bb4df

See more details on using hashes here.

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