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.7.tar.gz (39.2 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.7-py3-none-win_arm64.whl (2.4 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

djch-0.1.7-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.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

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

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

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

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

djch-0.1.7-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.7.tar.gz.

File metadata

  • Download URL: djch-0.1.7.tar.gz
  • Upload date:
  • Size: 39.2 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.7.tar.gz
Algorithm Hash digest
SHA256 2b4c1bd6e1f58bb5f748442058d20e143613972da8c09da5b40ddeb97791ade7
MD5 3404bead1041720e48dd0e84f6f462c6
BLAKE2b-256 9bb6c59d93cefc04de2316b84353c81c310853e574a5ac63937b1f1963c898d8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7639ca00419034344bfe2c0bbf442605fffaea9b62e88a7c0b35d28ce28f080b
MD5 1fc441446bf19de1d60347e8865dc8a1
BLAKE2b-256 a41f453d03e0c9f317d2bcfc5709a27160d4f01e80ee7c4d8d4be7141ae27f04

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0d0d40ed46aae23c8d3498d5070a6ba2c741d6551b9dd59305631ced84b21477
MD5 ad5e237ccf9cba0478b1f5bf5d2b8d31
BLAKE2b-256 f7d82ab18e931bac4d3719669b7eafc9e48ccf782fbbc81c8d23feedbc755b74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-win32.whl
Algorithm Hash digest
SHA256 8b2a8b5b0bf45973c88d8a3a1413b492cbdfe9956795aee5f1f7a9d6490bd36b
MD5 5b30e648643011956c655fe1f80cba98
BLAKE2b-256 9ae7acc0971cb23d73aefb841c968dad4631f0f9487fc04ff14a9c199e47b5b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0349c686f254e32561bc1eb53692c0c1345c13857d76d6282571786f9e1910bf
MD5 8ffb7922412b10c79b2472a295ed364f
BLAKE2b-256 89cacff331d2e59656a8cfa1786fcdd434b33ac505bb1832870bf467e2584b9f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c716cd06abd22dee75bb40b7fd862a75489fb0fe86fb6abd3526565b697067b9
MD5 2a4b1d9e8dcad3d20bb87d9b01b860fa
BLAKE2b-256 2d454dfa0c40c7b0b7ad59fd2b107894d43199fc2aea995564eef51bb9f8ed6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 85757636151ffb8f9bed2357c40f762e04783bc3ef31f1212a7ec348fd9fd8eb
MD5 0158af2d3aa3fc1ca0b87c7ff0d2e592
BLAKE2b-256 bad84ce498b1e2c5bbef6d5b53b638425ac575c52a37847d6419209039a64456

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2b91e711c9731b333bf026e1f5931ad10a1bbe650c3d485131f975abe9f9eebd
MD5 720d2611d3ddb8688359202eef9d4885
BLAKE2b-256 f2e51ee921a7596e59d6fe20501077026398dfcd16211f1b775b8d26b8fd977f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 91e85ff10cdefcdaf3e2f492b47128b894b14b6ed54ba58710883c6463aef968
MD5 9c9be182b7e3571157a992d578c32152
BLAKE2b-256 98d37b79069173d40465ceef359b7930118426329649efc5948feab88690c9eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 91b766d0faa415e022bc5c0be620edb7708e936fa25547125d24cf3e0d30abbd
MD5 d801ca363ff220cf64fe87df9acdcff2
BLAKE2b-256 10a24967c113e9eb0438767ffe583ef21538d2d72e912760c60acc830de0e282

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e92a4e6db42c7934a40735817103ebb14705b5e2b4717b65d9e0057f074dfa4b
MD5 a4434a0e2a8986db5d68d6eab1cb2387
BLAKE2b-256 9f8e3e2149cfbda9266c94c57eb13628e0cf0733c1dacd73f196b03812f1685d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bfe24ef59d1e1c1dc7ac32f05387637d976ae5656036e63ffc3b9089903cd01b
MD5 2f7c1b45fdd3d2b920a388354da46cf5
BLAKE2b-256 fdd81d7be2f9b2d59afd0eb8349cb8289d371fa9e9e7dea449388af8ae3bd775

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4e6f76e3a3ea7aadf9c15089ab1b002579686a14ddfaab8702ec514c7079c30c
MD5 053681adb5a73d9b49c4b3fcbd5beeae
BLAKE2b-256 1f9c8e714862c61be92f4cc8b230c273061cca02292660105fb965f08a75f6df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e9b1034a7e1e590b649973141626ae6b61f936493c4c1d90051e2257a022c3ff
MD5 c21e2efabcf18a90ce15f5a9674323e5
BLAKE2b-256 5a2c2d58d38d25dec639152617d577aa4033b89a9e7896bc8e64d01958911af8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3793458682502161f6c4e28d6d7fbd03aadf27c3c552d5680c1ab0116e6d941
MD5 2131428831f3c75780697afca4af774c
BLAKE2b-256 c2da95876f0a922fd742364932229f37632fc3e78f4cd9a0e8ae4673ddea4b3b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djch-0.1.7-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.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a8465f3b99a0ff72ed12649ca9d61de9fb88305df9f38020135a3c9d0c025117
MD5 b2968e8bf813cf2355eb344e832d8fcb
BLAKE2b-256 aa5774679e656cf270b50c8d7056e65bafe6aaa7e736e1315be3516808032278

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