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

Uploaded Python 3

File details

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

File metadata

  • Download URL: jtl_syllabus-1.20260312.2.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.2.tar.gz
Algorithm Hash digest
SHA256 2eb90e622a5d1e82f593654f72757d05c403b96793980af4de75c218674f5e00
MD5 86a31cf41921cfb544c3e66895dbfc93
BLAKE2b-256 4a78320ca83d31b0833f8861c4d4ba55b876a2f29f03523c309ddc78e9f3f52d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jtl_syllabus-1.20260312.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2f17dd2955bc4951023162c9a89ebcfe10a4bfe76d510285f7bee6cf710b497c
MD5 bc2ed93e8e5c0db54ad670fc3a23a628
BLAKE2b-256 4a57d1e737d9afbc66bcd593984dd62f65bd0a62e7dea16cac32aac4f5bf902b

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