Skip to main content

Course management system

Project description

JTL Syllabus

The syl CLI compiles structured YAML syllabus files from a directory tree of lesson files (Python, Jupyter notebooks, Markdown), in support of The LEAGUE of Amazing Programmers coding curriculum.

Installation

pip install jtl-syllabus

This installs the syl command.

Usage

All commands operate on a lesson directory (defaults to ./lessons). Use -l to specify a different path.

Compile a syllabus

syl compile
syl compile -l path/to/lessons
syl compile -f output.yaml          # custom output path
syl compile -ngm -i100              # regroup, renumber (increment 100), metafy, then compile

Check directory structure

syl check

Validates that the lesson directory follows the expected structure: ranked module directories at the top level, no loose files.

Renumber lessons

syl renumber                        # renumber with increment 1
syl renumber -i 100                 # renumber with increment 100
syl renumber -d                     # dry run (show changes without renaming)

Regroup lessons

syl regroup                         # group files with same basename into directories
syl regroup -d                      # dry run

Groups files that share the same rank and base name (e.g., 20_Loops.py and 20_Loops.md) into a single lesson directory.

Add metadata

syl meta                            # add UIDs and names to all lesson files
syl meta -d                         # dry run

Ensures every module, lesson set, and lesson has a uid and name in its metadata (README frontmatter, Python comments, or notebook metadata).

Global options

-v, -vv          Increase verbosity (info / debug)
-e               Raise exceptions on errors
-d PATH          Set working directory
-l PATH          Set lesson directory (default: ./lessons)

Lesson directory structure

lessons/
  README.md                    # Course-level metadata
  10_Module_Name/              # Module (ranked directory)
    README.md                  # Module metadata
    10_Lesson.py               # Lesson file
    20_Lesson.ipynb             # Lesson file
    30_Grouped_Lesson/          # Lesson directory (multiple files)
      Grouped_Lesson.py
      README.md
    01_Lesson_Set/              # Lesson set (nested group)
      10_Sub_Lesson.py
      20_Sub_Lesson.ipynb
  20_Another_Module/
    ...

See docs/course_structure.md for the full hierarchy and docs/metadata.md for metadata formats.

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

jtl_syllabus-1.20260312.4.tar.gz (446.2 kB view details)

Uploaded Source

Built Distribution

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

jtl_syllabus-1.20260312.4-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file jtl_syllabus-1.20260312.4.tar.gz.

File metadata

  • Download URL: jtl_syllabus-1.20260312.4.tar.gz
  • Upload date:
  • Size: 446.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for jtl_syllabus-1.20260312.4.tar.gz
Algorithm Hash digest
SHA256 68e0ee03330d5e18769653bf17bab4055e99a48de9c60ca81f7fb2312b1fa744
MD5 a619ba39dfee67df6522adf691c356bf
BLAKE2b-256 b8a27c83ad7511c9848297c766ae118ed3464a816709ffd8c4231a5792ad3d02

See more details on using hashes here.

File details

Details for the file jtl_syllabus-1.20260312.4-py3-none-any.whl.

File metadata

File hashes

Hashes for jtl_syllabus-1.20260312.4-py3-none-any.whl
Algorithm Hash digest
SHA256 850a319b3bc70133d515460432aa4809da8ca67e29cd1864500ff11ca3ae06f3
MD5 5c646d55387fa55ece86bf78bc84de13
BLAKE2b-256 04e28ac7c0470d9c1ba74c054c2880b76c1c1a8f220fd843723d96d5cc49663b

See more details on using hashes here.

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