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.2.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.2.0-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: drillion-0.2.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.2.0.tar.gz
Algorithm Hash digest
SHA256 b7d7cfc20ba2dec91ef66ffd80a008eeed6b1b55f270f8d8f010c98f9d605411
MD5 70076dc3b1ea517e3005ad6a8541a664
BLAKE2b-256 2132fb5e43bf04eca786f53c7a1bae054bcd5b985adf7c3cab217e794ad01431

See more details on using hashes here.

Provenance

The following attestation bundles were made for drillion-0.2.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.2.0-py3-none-any.whl.

File metadata

  • Download URL: drillion-0.2.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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73ebad33c18771a06905533913a5e3b5a9c250d106c88edd2c6dd59a2c2cf4e4
MD5 f771b3c42650e063040e605d71670df7
BLAKE2b-256 5ede08806c218cd8f0e37239a753222544de2c67360523aaeed85feed285b860

See more details on using hashes here.

Provenance

The following attestation bundles were made for drillion-0.2.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

0.3.0

2 files

This release

0.2.0 This release

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