Skip to main content

Jupyter kernel provisioner package for Cybershuttle Conduit

Project description

cybershuttle-jupyter-kernel

A small example repository that demonstrates a minimal pattern for implementing a Jupyter-style kernel provisioner and how to integrate it with a Jupyter server's kernel lifecycle.

This repository includes a sample provisioner, a tiny CLI, and tests. The sections below show how to build, install, and publish the package (sdist and wheel), how to test locally, and suggestions for CI publishing.

Quick start

Install test deps and run the sample provisioner:

python -m pip install -r requirements.txt
python run_kernel.py run --id demo --mode sample
# press Ctrl-C to stop

Run tests:

PYTHONPATH=. pytest -q

Install editable (developer workflow):

python -m pip install -e .

Packaging and build instructions

Below are step-by-step packaging commands for macOS/zsh. They create an sdist and a wheel in dist/, validate them, and show how to install and (optionally) upload to TestPyPI/PyPI.

  1. Create and activate a build virtual environment (recommended)
python -m venv .venv-build
source .venv-build/bin/activate
python -m pip install --upgrade pip
  1. Install build tools
python -m pip install --upgrade build twine
  1. Ensure pyproject.toml contains a proper project name and version

Open pyproject.toml and set project.version (for example 0.1.0) and confirm project.name is the package name you want to publish. Example:

[project]
name = "cybershuttle-kernel-example"
version = "0.1.0"
requires-python = ">=3.8"
description = "Example kernel provisioner package"
readme = "README.md"
authors = [{ name = "cyber-shuttle" }]
  1. Build sdist and wheel
python -m build --sdist --wheel
# artifacts are in ./dist
ls -l dist/
  1. Validate artifacts
python -m twine check dist/*
  1. Install locally from the wheel to test the installed package
python -m pip install dist/*.whl
python -c "import cybershuttle_kernel; print('ok', getattr(cybershuttle_kernel, '__all__', None))"
  1. Publish to TestPyPI (recommended first)
python -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
  • Install from TestPyPI to verify:
python -m pip install --index-url https://test.pypi.org/simple/ --no-deps cybershuttle-kernel-example
  1. Publish to PyPI (when ready)
python -m twine upload dist/*
  1. Cleanup build artifacts (optional)
rm -rf build dist *.egg-info

Common issues and troubleshooting

  • Missing build tools: run python -m pip install --upgrade build setuptools wheel.
  • pyproject metadata errors: twine check will point out missing/invalid fields.
  • Versioning: ensure project.version is updated for each release.
  • Package name: the installable package name comes from project.name in pyproject.toml, not the repository name.
  • Editable vs built package: pip install -e . is for local development. For distribution, create the wheel and sdist and upload.

Continuous integration (optional)

You can add a GitHub Actions workflow to run tests and publish on tags. The workflow commonly:

  • runs tests on push/PR,
  • builds artifacts on tag, and
  • uploads to PyPI using a repository secret for TWINE_USERNAME and TWINE_PASSWORD (or TWINE_API_TOKEN).

If you'd like, I can add a sample .github/workflows/publish.yml that:

  • runs pytest,
  • builds artifacts,
  • uploads to TestPyPI on a test-* tag and to PyPI on a release tag.

Security and best practices

  • Use TestPyPI for initial verification to avoid polluting the real PyPI.
  • Use API tokens for Twine uploads; store them as encrypted secrets in CI.
  • Pin your development dependencies where appropriate.

If you want me to run a local build here and show the created dist/ files, I can do that (I won't upload to PyPI without credentials). Tell me if you'd like me to run the build now.

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

conduit_jupyter_kernel_provisioner-0.1.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

File details

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

File metadata

File hashes

Hashes for conduit_jupyter_kernel_provisioner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 295b9e47065928739e847e7e152cb9000419c9b5b900feb4264d158660a6bc9e
MD5 600cdada1bde08d9b143a8fcafda37da
BLAKE2b-256 2e72531887b6bf434942a2b035a4faebd238e3b77a7c85657a9a51750d08f673

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for conduit_jupyter_kernel_provisioner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 611d4a63b98f9c3236b20dc150c830974be00f9427ea9436608399d579c5b6b7
MD5 a8aaaffe016f67267a98b1b6e6246c17
BLAKE2b-256 79da3c9516a832332b65afe528ff5e710774d89fd9de10fe8352698049d59c0e

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