Skip to main content

drillion

PyPI Python CI OpenSSF Best Practices License

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for drillion-0.5.1.tar.gz
Algorithm Hash digest
SHA256 20b6135ffb79d906c2cd07de1356cd6b5bf2142bec1bf3edc46cc55f27d08014
MD5 25eaed8b0e3d1144da07383f992f9a82
BLAKE2b-256 680c1419156f7f7cf4bf489d157d67fcf1a1ea75b182076245d98ecb25bd9366

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: drillion-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 5.4 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.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd413ed1c68cab2c11c5b5fa75e8061805f2c84584659d9decaacf0219657b74
MD5 0d446ab9c478ed22ccf5ee2574cc32a4
BLAKE2b-256 a3eee95eba51c04d5e1bcea86746b2c648d35121783ac1410a9c55ffa6b0ff62

See more details on using hashes here.

Provenance

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

This release

0.5.1 This release

2 files

0.5.0

2 files

0.4.6

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