Skip to main content

A declarative, configuration-driven SDK for building, validating, and deploying reproducible tutorial packages.

Project description

Tutorial SDK Banner

PyPI version Python versions License Docs

A declarative, reproducible tutorial packaging system and command-line tool that bridges the gap between technical content and stable containerized runtimes.

💡 Focus on teaching. We'll handle the runtime.

Tutorial environments tend to drift over time: Dockerfiles diverge from notebooks, dependencies go unpinned, and validation is left to CI pipelines assembled by hand. tutorial-sdk addresses this by driving the full lifecycle — resolving and locking dependencies, synthesizing deterministic Dockerfiles, validating notebooks locally and inside built containers, and publishing images through a standardized CI workflow — all from a single declarative config.

[!IMPORTANT] This project is currently under active development. While we strive for stability, expect API changes and evolving best practices as we approach our first official release.


Key Features

  • Declarative Configuration (tutorial.yml): Declare the whole tutorial surface - metadata, contents, package environments, and validation rules - in a single, Pydantic-validated YAML file.
  • Deterministic Environment Synthesis: Generates cache-friendly, reproducible Dockerfiles matching the exact dependency graph specified in your config.
  • Notebook-Aware Container Validation: Runs comprehensive local checks (assets, dependencies, notebook error detection) as well as full container validation (verifying built containers start successfully and that JupyterLab runs flawlessly inside).
  • GitHub Actions Integration: Built-in support for standard, thin CI workflows (tutorial-sdk ci) that validate, build, test, and publish images from pull requests and releases.
  • Extensible Scaffolding Templates: Starter templates to quickly spin up beginner workshops, notebooks, course modules, or custom lab exercises.

Documentation

For comprehensive guides, API references, and architecture details, refer to the following documentation files:

  • Getting Started: Features, quickstart commands, and standard project layouts.
  • Configuration Schema: Reference manual for all options in tutorial.yml.
  • Architecture & Design: Deep dive into the modular layers, container validation model, and extension override blocks.
  • CLI Reference: Reference details for CLI commands and usage examples.
  • Public API & Full SDK API References: API surface specifications and implementation details for Orchestration (TutorialProject), Spec Models (TutorialSpec), Scaffolding, Generators, Builders, and Validators.

[!NOTE] Online Documentation: https://bnl-peso-hub.github.io/tutorial-sdk/


Acknowledgments

This project was inspired by and carries the core ideas of the ExaWorks project and the subsequent implementation of the Tutorials management approach (radical-cybertools/tutorials) developed by the RADICAL Research Team.


License

This project is licensed under the Apache License, Version 2.0.

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

tutorial_sdk-0.1.0.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

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

tutorial_sdk-0.1.0-py3-none-any.whl (43.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tutorial_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 075c2c2408e048b1983f30de62d128ad72f93dcd6881f9c219e3f9cd37287f8d
MD5 8fa1733c433ebb08d868501572a501f3
BLAKE2b-256 a7c43c536491827b3230a12a7042cdef0fb7ce890c844d72bd70ebb3b4e99227

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on BNL-PESO-Hub/tutorial-sdk

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

File details

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

File metadata

  • Download URL: tutorial_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 43.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tutorial_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66dab0a6d53e4de5fc744a3dbbdd86080f068858e2c47c552414b8c0d64d4b3b
MD5 5986829b45c1d2d74feca707b3e130e3
BLAKE2b-256 7d66f5f7d528f4d3c43c8d147f5462319a71a1485c26eeb187bf3c71570974cf

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on BNL-PESO-Hub/tutorial-sdk

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