Skip to main content

Python learnings, Rustlings-style, in a terminal TUI.

Project description

Pylings

Python 3.11+ Version SemVer Tests License: MIT

Documentation: pylings.abhik.ai

Python learnings, Rustlings-style, in a live terminal TUI.

Pylings helps you learn Python by fixing small broken programs and watching checks rerun as you type. It is built for beginner Python practice, coding practice, and self-paced Python tutorial workflows: 292 exercises, hidden pytest-style checks, a live Textual editor, progressive hints, and bundled Python documentation snippets so learners can work without leaving the terminal.

Status: v0.1.0 alpha. GitHub installs are available now; the PyPI package name is python-learnings and will become the primary install path after publishing is enabled.

Coding screen

Highlights

  • 292 Python exercises across 31 topics, from variables through async.
  • Rustlings-inspired learn-by-doing flow for Python coding practice.
  • Live in-terminal editor with automatic checks after edits.
  • Topic picker with progress, resume state, reset, hints, and one-shot CLI runs.
  • F5 opens a local Python reference window; O opens the official docs page.
  • Bundled docs are generated from the official Python documentation for offline use.

Who It Is For

  • Python beginners who want short, focused practice instead of passive reading.
  • Rustlings users who want the same fix-and-verify loop for Python.
  • Learners who prefer working in a terminal with local docs close to the code.
  • Contributors interested in building curriculum, checks, and terminal UX.

What Happens When You Run It

  1. pylings init creates a self-contained learner workspace with exercises, hidden checks, local docs, and original snapshots for reset.
  2. pylings opens the first pending exercise in the terminal UI.
  3. You edit the broken code, remove # I AM NOT DONE, and checks rerun as you work.
  4. Passing checks mark the exercise complete and move progress forward. F4 opens the topic picker, F5 opens local docs, and Esc quits main screens.

Install

Install the current release directly from GitHub:

pipx install "git+https://github.com/abhiksark/pylings.git@v0.1.0"

After PyPI publishing is enabled, the package install will be:

pipx install python-learnings

The pylings command is installed by the python-learnings package. The PyPI project name pylings is already used by another package, so do not use pip install pylings for this project.

For the latest development build from main:

pipx install --force git+https://github.com/abhiksark/pylings.git

Create a learner workspace before starting:

pylings init --path ~/pylings-workspace
cd ~/pylings-workspace
pylings

For local development:

git clone git@github.com:abhiksark/pylings.git
cd pylings
pip install -e ".[dev]"

Quick Start

pylings init --path ./learn-python     # create a self-contained workspace
cd learn-python
pylings                              # open the TUI on the first pending exercise
pylings topics                       # open the topic picker
pylings list                         # show topic progress
pylings hint variables1              # print a hint and docs link
pylings run variables1               # run one exercise check
pylings dry-run variables1           # run one exercise non-interactively
pylings reset variables1 --yes       # restore an exercise from its original
pylings update                       # refresh checks/docs after upgrading pylings

Each exercise contains a # I AM NOT DONE marker. Fix the code, remove the marker, and let the live check advance you to the next exercise.

Demo

Pylings terminal demo

The demo is generated from docs/demo.tape. See docs/DEMO_GIF.md to regenerate it with VHS. It covers the first-run flow, progress listing, hints, the coding screen, local docs, topic picker, and quit path.

Interface

Topic picker

Key Action
F1 Toggle hint
F2 Reset the current exercise
F3 Toggle the exercise list
F4 Return to the topic picker
F5 Show the local Python reference
O Open official docs from the reference window
Esc Close docs, or quit from main screens
Ctrl+Q Quit

Local docs reference

Project Layout

pylings/                 # application package
  core/                  # manifest, state, runner, reset, docs loading
  screens/               # Textual screens
  widgets/               # reusable TUI widgets
  docs/                  # bundled Python documentation snippets
pylings/curriculum/      # packaged copy in built wheels
exercises/<topic>/       # learner-editable exercise files
checks/<topic>/          # hidden assertions for each exercise
tests/                   # unit, integration, and TUI tests
scripts/fetch_python_docs.py
info.toml                # curriculum order, hints, and docs URLs

Regenerate the local reference snippets with:

python scripts/fetch_python_docs.py

Development

pip install -e ".[dev]"
python -m pytest -q
pylings --root tests/fixtures/passing_curriculum verify

When adding curriculum, update exercises/, checks/, and info.toml together. Keep exercise and check filenames mirrored, for example exercises/lists/lists3.py and checks/lists/lists3.py.

Release Flow

Pylings uses Semantic Versioning:

  • MAJOR: incompatible curriculum or CLI changes.
  • MINOR: new topics, exercises, TUI features, or docs workflows.
  • PATCH: fixes, copy edits, and compatible test or packaging updates.

Branch flow is feature-first:

feature/<name> -> dev -> main -> vMAJOR.MINOR.PATCH

Feature branches are merged into dev. A verified dev branch is then merged into main and tagged with an annotated release tag such as v0.1.0. See RELEASE.md for the release checklist.

Attribution

Pylings is inspired by rustlings. Bundled reference snippets are generated from the official Python documentation. See pylings/docs/NOTICE.md for Python documentation licensing details.

License

MIT. See LICENSE.

Project details


Download files

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

Source Distribution

python_learnings-0.1.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

python_learnings-0.1.0-py3-none-any.whl (384.1 kB view details)

Uploaded Python 3

File details

Details for the file python_learnings-0.1.0.tar.gz.

File metadata

  • Download URL: python_learnings-0.1.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for python_learnings-0.1.0.tar.gz
Algorithm Hash digest
SHA256 62d35501e5c750892e32f996f5ae221cd7176972cf4fadd6a72727d9032237a4
MD5 aac118519c55a490c34b5553a48bb1b6
BLAKE2b-256 e028f4179bf433648c918149911a236e5cb24ebd20bf8fa4e86dacb009c6f4b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_learnings-0.1.0.tar.gz:

Publisher: publish.yml on abhiksark/pylings

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

File details

Details for the file python_learnings-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_learnings-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af19847bb706dcc5ed69bf9affd85d3cbedcd13bbf672469c6c8d92bd5a0deaa
MD5 ee562ddb7ebf697a42fb0be004cd3da9
BLAKE2b-256 1601bea29762f6e4a48a40a5124009fd2fbd0b6356ef699d2fa7fa4ca86037fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_learnings-0.1.0-py3-none-any.whl:

Publisher: publish.yml on abhiksark/pylings

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page