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.3.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.3-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jtl_syllabus-1.20260312.3.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.3.tar.gz
Algorithm Hash digest
SHA256 cc8f6b55105997805535919acecae162efe5fa9468ffd9dedd1d4dcc16714cd5
MD5 cadf11f87004acf213a9ec6529dfc417
BLAKE2b-256 01d919ebd81bcf1ba7d6f5de707a04cc3aa727b04d68006557cc4fe3e36e0975

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jtl_syllabus-1.20260312.3-py3-none-any.whl
Algorithm Hash digest
SHA256 207bdb93ffa33c27b3c1d19869076b6971c93dcc80c087e47101a7511b3efc9a
MD5 614f9210affbc5d3577838e1c79cf07f
BLAKE2b-256 633eecf469cbf220be7909f3daac0cec8af776280c1b1e1026b7cca94900a2b5

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