Skip to main content

Framework-agnostic LTI 1.3 Advantage toolkit for Python — connect any app to any LMS.

Project description

ltitoolkit

A framework-agnostic LTI 1.3 Advantage toolkit for Python. Connect any Python application to any LTI 1.3 compliant LMS — Canvas, Moodle, Blackboard, and more — with a single dependency.

Status: early development (v0.1.0) — the vendored LTI engine is in place; the FastAPI adapter, Dynamic Registration, and token minting are being built. See docs/PROJECT.md for the design rationale, capability boundaries, and roadmap.

What it does (portable — same code on every LMS)

  • Launch & identity — verified OIDC/JWT launch: who the user is, which course, what role.
  • LTI Advantage
    • AGS — read/write grades for your tool's activities.
    • NRPS — fetch the current course roster.
    • Deep Linking — let instructors embed your content into a course.
  • Dynamic Registration — install on a new LMS by pasting one URL (no credentials).
  • Client-credentials tokens — authenticate as the tool with its own key; no user login required.

What it deliberately does not do

LTI is not a remote control for the whole LMS. Listing all courses, browsing/opening files, or creating native quizzes require each LMS's proprietary REST API and are not part of this portable core. Put that code in thin, per-LMS adapters (e.g. a Canvas adapter) built on top of the toolkit's generic token minting.

Layout

src/ltitoolkit/
├── core/                  # vendored LTI 1.3 engine (PyLTI1p3, rebranded) — internal
├── fastapi/               # FastAPI adapter (Phase 2)
├── token/                 # generic client-credentials token minting (Phase 4)
└── dynamic_registration/  # single-URL install (Phase 5)

Install (as a dependency)

Published via Git (no PyPI required). Pin to a tag:

pip install "git+https://github.com/CNIT-Organization/ltitoolkit.git@v0.1.0"
# with the FastAPI adapter:
pip install "ltitoolkit[fastapi] @ git+https://github.com/CNIT-Organization/ltitoolkit.git@v0.1.0"

Develop (uv)

uv sync            # create the env + install runtime, fastapi extra, and dev tools
uv run pytest      # tests
uv run ruff check src tests
uv run mypy src
uv build           # build wheel + sdist into dist/

License

MIT. The core/ engine is a vendored copy of PyLTI1p3 (MIT); its original license is preserved in 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

ff_ltitoolkit-0.1.0.tar.gz (53.1 kB view details)

Uploaded Source

Built Distribution

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

ff_ltitoolkit-0.1.0-py3-none-any.whl (86.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ff_ltitoolkit-0.1.0.tar.gz
  • Upload date:
  • Size: 53.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ff_ltitoolkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 14c24601a805fa4b586eb550d2f7bbf936d67d8ebf98d13009aa7fb6999452eb
MD5 5adbb87cc51293c1533a8d70e0cefe8c
BLAKE2b-256 43571eb3b31744a0a5b27eec18f1ed0bdd24055ab9c2030218ac920cc022ed95

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ff_ltitoolkit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 86.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ff_ltitoolkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 339afcc7cc08bd4ec3765121d7ffbe4eea91eb12e7f2c39ac2cd9266befc1b02
MD5 7080927dcefb104054acc7b5b984aa40
BLAKE2b-256 520f25b94d6f22506b6abbd77665d4ab03e9a3c16f8793c124c7b8fd6185d036

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