Skip to main content

Django Probe

It's hard to remove features in open-source software. Deprecation warnings exist, but people tend to ignore them. What maintainers want to know is how many people are using a feature. That's where Django Probe comes in.

Django Probe allows you to share which parts of Django your project uses. This package counts how often specific code patterns appear in your Django project and shares the aggregated information with the community.

By sharing what your project uses, you help support the Django community. No source code is shared, just the counts of which parts of Django are used, providing maintainers helpful information to direct the future of Django.

Quickstart

To quickly see what Django Probe would share:

# with uv
$ uvx django-probe scan .

# with pip
$ source .venv/bin/activate
$ pip install django-probe
$ django-probe scan .

To share the results, create a project token. If not using uv, you'll need to add Django Probe to the development dependencies first:

# with uv
$ uvx django-probe login
$ uvx django-probe init

# with Poetry
$ poetry add --group dev django-probe
$ poetry run django-probe login
$ poetry run django-probe init

# with PDM
$ pdm add -dG dev django-probe
$ pdm run django-probe login
$ pdm run django-probe init

# with pip
$ source .venv/bin/activate
$ pip install django-probe
$ django-probe login
$ django-probe init

login stores an organization credential in your user configuration directory. init prints a separate project token; copy it, then inspect and submit the first scan:

$ export DJANGO_PROBE_TOKEN=<token_from_init>

# with uv
$ uvx django-probe scan .      # inspect the payload; sends nothing
$ uvx django-probe submit .    # share the first scan

# with Poetry
$ poetry run django-probe scan .
$ poetry run django-probe submit .

# with PDM
$ pdm run django-probe scan .
$ pdm run django-probe submit .

# with pip
$ django-probe scan .      # inspect the payload; sends nothing
$ django-probe submit .    # share the first scan

Add it to CI

Store the token as the DJANGO_PROBE_TOKEN repository secret, then call the reusable workflow so the project shares data on a schedule:

# .github/workflows/django-probe.yml
name: Django Probe

on:
  schedule:
    # Runs monthly. Choose a different minute and hour to help spread load on our servers.
    - cron: "17 4 1 * *"
  workflow_dispatch:

permissions:
  contents: read

jobs:
  django-probe:
    uses: tim-schilling/django-probe/.github/workflows/django-probe-submit-uv.yml@0.4.1
    with:
      # Path to the Django project to scan, relative to the repository root.
      path: "."
      # Environment to gate the submit job behind. Empty submits without an approval gate.
      environment: ""
      # Python version for uv to set up. Empty lets uv resolve its own.
      python-version: ""
    secrets:
      DJANGO_PROBE_TOKEN: ${{ secrets.DJANGO_PROBE_TOKEN }}

Each option shows its default, so you can remove any you don't need to change. The reusable workflow is uv-only; for pip, GitLab CI, and gating submission behind approval, see Getting started.

See Privacy for exactly what a payload contains.

What we're looking to learn

In general, we're looking to see what parts of Django are used and which aren't. That is in general captured by the usages and settings data (if shared).

Additionally, we're looking for specific usages. These are in the probes portion of the payload. This list will grow over time, but for now there are two main usages:

  • The .extra() ORM API method has had a note about avoiding its usage for years. Let's determine if this is something that is central to a signficant number of Django projects.
  • The @cache_page decorator can easily cause problems for projects by storing and serving sensitive information such as CSRF tokens and CSP nonces. Understanding how widespread the usage is of it can help determine what further changes are needed.

Metadata

Release files for django-probe 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-probe 0.4.1
File Size Uploaded Provenance
django_probe-0.4.1.tar.gz 25.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for django-probe 0.4.1
File Interpreter ABI Platform
django_probe-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 68.7 kB

Release files / django_probe-0.4.1.tar.gz

Download URL django_probe-0.4.1.tar.gz
Size 25.7 kB
Tags Source
SHA-256 checksum
How to use checksums
07ad2232a43af3ff058b18a934f66a876e1f9f37b061016b98790f33fd90d728
BLAKE2b-256 checksum
How to use checksums
8052301d6eaf3ca4adf1dcd6939c7addabcf421e323adf00ad72278f474bea27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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}

Release files / django_probe-0.4.1-py3-none-any.whl

Download URL django_probe-0.4.1-py3-none-any.whl
Size 43.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e93c38fb8147f66819a59e20303d7f33a93e48b421eb0670136a906bf9bce314
BLAKE2b-256 checksum
How to use checksums
2747df0c3eb9c200b7ea46487a59c60567e3abbff3dbe6f2fc2cc1f45d0a8135
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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}

Security for django-probe 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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