Skip to main content

drillion

PyPI CI

Python practice drills that come back before you forget them. Graded by pytest, runs on your machine.

drillion is a local web app with 171 short Python tasks, each tagged with the concept it practises so you can go straight at what you want to get better at. Every task ships its own pytest test, and many draw fresh data each time you open them, so you cannot pass by remembering last week's answer. Pass one and it comes back in 2 days, then 4, 8, 16, and on up to 120; fail and it costs you nothing but the attempt. There is no login, no account and no server but yours: the tasks are folders of Markdown and Python on your disk, and your progress is one JSON file.

Install

Any of these serves http://127.0.0.1:8765. The first three need Python 3.13 or newer and open your browser for you; Docker needs nothing but Docker, and opens nothing.

Try it — uvx

uvx drillion

Downloads, runs, and leaves nothing installed. Your progress still persists between runs; only drillion itself is temporary.

Keep it — uv tool install

uv tool install drillion
drillion

Puts drillion on your PATH. uv tool upgrade drillion updates it.

Keep it — pip

pip install drillion
drillion

The same thing without uv. Use a virtualenv if you keep your system Python clean.

Docker

docker run -p 127.0.0.1:8765:8765 -v drillion:/data ghcr.io/vazome/drillion

The image carries the tasks and the page; the named volume keeps your work across upgrades. Open http://127.0.0.1:8765 yourself — the container never opens a browser. compose.yaml is the same thing plus restart: unless-stopped, so drillion comes back after a reboot; save that one file anywhere and docker compose up -d.

Commands

drillion              # serve the web UI (default)
drillion selfcheck    # solve every task with its own reference — proves the set still works
drillion doctor       # say why a task folder would be skipped

Your progress

Everything drillion owns lives under one root: tasks/, which is where your code is saved, and progress.json, which holds your cards, notes and archived solutions. From a clone that root is the checkout. Installed, it is a per-user data directory that the first run seeds from the tasks inside the wheel. In Docker it is the volume at /data. An upgrade never writes over a root that already has tasks in it, so nothing you have written is at risk. See docs/configuration.md for the environment variables and the Docker bind-mount recipe.

Docs

Contributing

The most useful contribution is a new task. Open an issue with the New task template first, then read CONTRIBUTING.md for the dev loop and the contract a task is graded against, and AGENTS.md for how the project decides things. Bugs and ideas go in Issues; a vulnerability goes through SECURITY.md, which also spells out what running drillion does to your machine.

License

MIT — see LICENSE. 84 of the 171 tasks carry Markdown adapted from Exercism's Python track (also MIT); each names its origin in a source: field and an attribution footer, and NOTICE reproduces the notice that travels with them.

Download files

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

Source Distribution

drillion-0.3.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

drillion-0.3.0-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: drillion-0.3.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for drillion-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3ab0091216841cdfd0b45cd49d53370f3a63395b0ad812147a54c6ebac152627
MD5 70c0705fd85f3eb776f000754db6fc49
BLAKE2b-256 7a67a42d57a5363723c03ee9fb2d7f99d06a2d50afd401ceed6d358b68cbcb28

See more details on using hashes here.

Provenance

The following attestation bundles were made for drillion-0.3.0.tar.gz:

Publisher: release.yml on vazome/drillion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file drillion-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: drillion-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for drillion-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7b0b825a4efba2b16ce5de602b5c3f560675f295c7b7c2a9c931801431a95c9
MD5 ed37a56eb3f74a1aa9bdc4f67c18dea2
BLAKE2b-256 98ebb6d6e23cff102d0cf12badcf7fe3a603d1e26bcd456d2861a1211383bfe7

See more details on using hashes here.

Provenance

The following attestation bundles were made for drillion-0.3.0-py3-none-any.whl:

Publisher: release.yml on vazome/drillion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.1

2 files

0.5.0

2 files

0.4.6

2 files

0.4.0

2 files

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

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