Skip to main content

drillion

PyPI CI

TL;DR: Self-hosted python practices in effective UI. With no social engagment bait, public rating bullshit and no achievements. Pragmatic and simple by nature.

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. 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.

Light Dark
The editor
the editor completing a list method
The editor, light The editor, dark
A task
spec on the left, your code and the test output on the right
A task, light A task, dark
The catalogue
today's picks, the tags, the whole table
The catalogue, light The catalogue, dark
Progress
the ladder, what is due, where each topic sits
Progress, light Progress, dark

Every solve() says what it takes, so the editor knows what your value can do. Completions, signatures and type errors come from a language server running next to the grader, on your machine — nothing is sent anywhere.

Install

Any of these serve http://127.0.0.1:8765. The first three need Python 3.13 or newer; Docker needs nothing but Docker.

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.4.6.tar.gz (5.1 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.4.6-py3-none-any.whl (5.0 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for drillion-0.4.6.tar.gz
Algorithm Hash digest
SHA256 0b5952e37dd4bbdf1305a2bae3d50419dd41c2622c14188929365eee8bdd74fb
MD5 abefb61eb76f04c931489590865996d0
BLAKE2b-256 5c812167d7ed8573a87757d11510d51901bfb2ae7f4c73178519c7b693668b90

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: drillion-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 5.0 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.4.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ccc479328d5f477eecf2c9771e2d3bfff1991592f903fb730a8bf9cee542fab7
MD5 18858b81b0c36c2a19506aa9fdaa46b7
BLAKE2b-256 c9926fee5096e86ef2b6bcf7e3e4e0357c6cdd465c79fa69be7030cbd3ef01a4

See more details on using hashes here.

Provenance

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

This release

0.4.6 This release

2 files

0.4.0

2 files

0.3.0

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