Skip to main content

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

Project description

logo

Tutorial SDK

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: tutorial_sdk-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 e88af55dc2357fb47ce44eb645d5579e71a4b61f4c87b6758b0864bd30493f6e
MD5 e35ee14814551ed7a55f46ea96435c14
BLAKE2b-256 e54a4fb6c95df6d3a687599a438c2e44cf5b1ca2fb0fa14044ed70ba9e3050bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tutorial_sdk-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: tutorial_sdk-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 925597e442b1b4166d480923752ab62313b86ce2d6afb53925861ad7741d7ce7
MD5 d61ee53ed794a734b820fc688e471ada
BLAKE2b-256 60f22a3f024a02e50ac8fedd28784b910826af1e4772a25bd07b24ad59f107e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tutorial_sdk-0.1.1-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