Skip to main content

Static N+1 query detector for Django ORM – fast Rust-powered checker

Project description

django-check

Static N+1 query detection for Django (LSP-based)

django-check is a static analyzer and Language Server that detects N+1 query patterns in Django code before runtime. It inspects queryset construction and related-field access to warn when relations are accessed without proper prefetching (select_related, prefetch_related).

image

It works inside the editor or directly from CLI.

[!WARNING] This project is in active development and not yet production-ready.

  • APIs are unstable
  • Diagnostics may be incomplete or incorrect
  • Expect breaking changes without notice

Why this exists

Django’s ORM makes it easy to accidentally introduce N+1 queries that:

  • pass tests,
  • look correct in code review,
  • only show up under load.

Runtime tools (django-silk, nplusone) are focuesd in runtime optimiezation. django-check make static analysis before the runtime.

Key properties

  • Compute the graph of the Models in the app
  • Zero runtime overhead
  • LSP-based diagnostics at edit time
  • No code instrumentation required
  • Works with any editor that supports LSP

What it detects (today)

  • Iteration over QuerySets followed by related-field access

  • Missing select_related / prefetch_related for:

    • ForeignKey
    • OneToOne
    • ManyToMany
    • Inheritance
    • Reverse relations (with related_name explicit or not)
    • Complex chained relations like model__relation__child_relation__depth
    • Prefetch usage: Prefetch("relation", queryset=Relation.objects.select_related("child")

Installation

pip install djch

Or with uv:

uv pip install djch

This installs the djch binary to your PATH.

CLI

Usage: djch <COMMAND>

Commands:
  server  Start as a Language Server (normally handled by the IDE)
  check   Analyze the current directory tree for N+1 queries
  help    Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help (see more with '--help')
  -V, --version  Print version

Check from CLI using djch check. You will get an output like this:

app/foo/bar/views/tier1.py:210:22: [N+1] rp.ticker_benchmark
Potential N+1 query: accessing `rp.ticker_benchmark` inside loop

app/apps/crawler/tasks.py:48:17: [N+1] ticker.industry
Potential N+1 query: accessing `ticker.industry` inside loop

app/apps/crawler/views.py:62:20: [N+1] stream.streamer
Potential N+1 query: accessing `stream.streamer` inside loop

app/apps/foo/selectors/anointed.py:43:19: [N+1] anointed.pattern
Potential N+1 query: accessing `anointed.pattern` inside loop

Editor integration (LSP)

Neovim 0.11+ (native LSP)

Neovim 0.11 ships with a stable built-in LSP client.

Minimal setup:

-- lua/init.lua
vim.lsp.enable("djch")
-- lsp/djch.lua
return {
  cmd = { "djch", "server" },
  filetypes = { "python" },
  root_markers = { 'manage.py', 'pyproject.toml', '.git' }
}

This registers django-check as a first-class LSP server.

If you are already attaching multiple LSPs to Python buffers (e.g. Pyright), Neovim will merge diagnostics correctly.

VS Code (Extension)

You can install the VSCode extension from, or directly in VSCode Extensions Market Place.

https://marketplace.visualstudio.com/items?itemName=richardhapb.Django-Check

Examples

Problematic code

# N+1 query detected
users = User.objects.all()
profiles = [user.profile in user for users]  # N+1

Explanation:

  • users is evaluated once
  • user.profile triggers one query per iteration

Corrected code

users = User.objects.select_related("profile").all()
profiles = [user.profile in user for users]

Problematic code

users = User.objects.all()
for user in users:
    user.profile.bio # N+1

Explanation:

  • users is evaluated once
  • user.profile triggers one query per iteration

Corrected code

users = User.objects.select_related("profile").all()
for user in users:
    user.profile.bio

django-check will clear the diagnostic once the relation is prefetched.

How it works (high level)

  1. Parse Python source into an AST
  2. Identify Django model classes and relationships
  3. Track QuerySet-producing expressions
  4. Track iteration boundaries
  5. Detect attribute access that implies ORM resolution
  6. Verify whether the required relation is prefetched

Design philosophy

  • Zero config
  • Just works out of the box
  • Editor feedback must be actionable, not noisy

Limitations (work in progress)

  • Interprocedural analysis requires type hints on QuerySet parameters
  • Limited understanding of:
    • annotate, aggregate
    • complex custom managers

Roadmap

  • Custom queryset method summaries
  • Templates integration

Contributing

This project lives at the intersection of:

  • Python AST
  • Django ORM semantics
  • LSP protocol design

If you are interested in any of those, contributions are welcome.

Documentation contributions are welcome, the goal is make this tool easy to use.

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

djch-0.1.9.tar.gz (40.6 kB view details)

Uploaded Source

Built Distributions

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

djch-0.1.9-py3-none-win_arm64.whl (2.4 MB view details)

Uploaded Python 3Windows ARM64

djch-0.1.9-py3-none-win_amd64.whl (2.5 MB view details)

Uploaded Python 3Windows x86-64

djch-0.1.9-py3-none-win32.whl (2.3 MB view details)

Uploaded Python 3Windows x86

djch-0.1.9-py3-none-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

djch-0.1.9-py3-none-musllinux_1_2_i686.whl (2.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

djch-0.1.9-py3-none-musllinux_1_2_armv7l.whl (2.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

djch-0.1.9-py3-none-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

djch-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

djch-0.1.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

djch-0.1.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

djch-0.1.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

djch-0.1.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

djch-0.1.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

djch-0.1.9-py3-none-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

djch-0.1.9-py3-none-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file djch-0.1.9.tar.gz.

File metadata

  • Download URL: djch-0.1.9.tar.gz
  • Upload date:
  • Size: 40.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9.tar.gz
Algorithm Hash digest
SHA256 96e2c59664d22c2382b88aa57b063f5a6b1214863a537304c39aabe2b628aad7
MD5 dc97ac797469487fde6a09c343bc71d2
BLAKE2b-256 993ef70bc23470b260093549a57aff65b609e2defb45ab8889f5104ae9585cec

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-win_arm64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-win_arm64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6bf70f8d12cb8e286f0a19066d8fb9b1928417f43720ca3974075376ef0c0589
MD5 1930d43b5d81295a67c49f97c8ca16ca
BLAKE2b-256 0fdde98999c6a6554c46f2d91aaf2a86855c6b03a7ff5a4455ff2b96526bfe54

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-win_amd64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3c1bacac16923dfee3e98f5a20c11ecad8b9d0b92b22c97c798a57e13db1cec1
MD5 1598bd22f8415afb71e3c5c6cea435ea
BLAKE2b-256 7096ee27609c2209e68c942789c61e104572e74337ec761eedbdc75d482ef8f2

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-win32.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-win32.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-win32.whl
Algorithm Hash digest
SHA256 903154b9a7e6efc3d900d9a359f347eba5f4833b81c02ff2eaf1d45515562a3e
MD5 852bfc1e4d94cadafd51c6cf400ac146
BLAKE2b-256 dd33dc1d0d1e0ddb79a2d44166809ae1e3b183f376d1589dca2e8d590f736aa2

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b66c7af7e804ab85369d82ebb9b0869de3c8e1f90e1dd4cff05d0cc76502a1fe
MD5 fa3cbd2676848dac68c6662e8d715760
BLAKE2b-256 88dfdbe15496630ef432a5c6fae97c813f7f01c5ec4ff22287a5c298227c7e3a

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-musllinux_1_2_i686.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 2a3e6efe2dd6e89829f29e657a56566e145dcbb8e5a098fd3e0199dbcbfa2875
MD5 67da307d8ea829c976025c6f1e4bd389
BLAKE2b-256 aebfc5bd9485bb247338d2326e09eecc45a7270a017dcaae8be3d666d6b7f55f

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 c36373e35a8d305fbf1371c465b080edc9068421313c3c57868dc2f0a2c44cf6
MD5 3d89d781c160b87c898c1730dd7f69b5
BLAKE2b-256 eb08bc6f24bf9c8954a980a48dffd79af6ff2655fb27e6f1abc70012d1f1c969

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e8e572ee5c00612704768db230ef3655bc95669d089a0289677f76149e701035
MD5 6cda0ad39f1493b78f1ddaea79c36652
BLAKE2b-256 61445686796ee244f7fc5125d074faa7dd7f2a755f091fe25e86e897b1b19730

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f69bdeb3d9e73e65ce51e5f731996ce0dfa3fd1fccd4a95179d72e566ad6837e
MD5 668e6486b2aa0d2dae6e7e246e8fd84d
BLAKE2b-256 1635f320f4f1147633351c66d88fb3070e7abf0784f7fbd617594f947f6c55bf

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 fa5f85ce07d75a0cbbaf5fa90d07db25df1c6bf35d6d604878bcb49f331d2858
MD5 8d5f53cc31d344fe995dad14840faf6d
BLAKE2b-256 53e763afeb6d6c95546d31042b85604c5e8cd18c16c658951c3b3e21840aea8d

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a4981eca791893533770c28ba58c033f4c55772284cbaae722727b8c36ba6cd7
MD5 6a2bd1e0bf460c678d4d6cfd28b8f2a9
BLAKE2b-256 03065bee6d05d599d913cae1234e4a629f2ea83884d9fe677ef7f10d637fa753

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 736ab8d6abd3d0ad9673e59b083ed2e0db48786ba3c97ec7ec2eb0cdfef60735
MD5 57cce82dd13bf95b1feaa3078677b16e
BLAKE2b-256 39192a96a551f6eb22f552aa0ab47e541ab8a25b70ab6f196da34eb4bc374755

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 312b1286b1b02047c407236c3f7dfba197c0e4f0991d845a1ef2b959fe658e8e
MD5 39a8b526fc4b95caeb12301e0436eb68
BLAKE2b-256 076ddb336e5d7c9d89e6f72869727f12d87d867dfddfc691cbac7abb56b08db2

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 11e87d451ab2bdfda5c3c31391d6e610f16d299b771938d6627c7e46786acb87
MD5 c8be529014e9401fdd82ac4473e78178
BLAKE2b-256 806cc737be99040ad4f5940525bcd8aceba1cbb217e94934a5d3344998c6fa70

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33a93b9bb713ca3abe9687f683b01aca06ba8a98321dcb05c25761c04fba2940
MD5 b97c5ffbb6203b4252bd0f6be5dce9e6
BLAKE2b-256 0ba429ccc6f9f24fa7c5d4c0e4d0873511af8af5b21a3229d3073d9068532de4

See more details on using hashes here.

File details

Details for the file djch-0.1.9-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: djch-0.1.9-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for djch-0.1.9-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dd11843397dc95024034ba9b215d4fad81eaa4622cbf2a2785054e98d74c075f
MD5 7110b3eaa6263eb2ca6cd1dc5d9731c4
BLAKE2b-256 df76d46caf42f94224d84684ee644ff264176e35ce843eb9f1edea1175a03d8e

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