Utility functions for Jupyter/Colab notebooks
Project description
🧰 tsilva-notebook-utils
🔬 Handy utilities for enhancing your Jupyter and Google Colab notebooks
📖 Overview
tsilva-notebook-utils is a collection of utility functions designed to make working with Jupyter and Google Colab notebooks more efficient. It provides tools for video rendering, notification systems, and Colab-specific features like automatic disconnection after idle periods.
🛠️ Usage
Video Rendering
from tsilva_notebook_utils import render_video
# Render a simple video from frames
frames = [frame1, frame2, frame3] # List of numpy arrays
video = render_video(frames, fps=30, scale=1.5)
display(video)
# Render frames with labels
labeled_frames = [(frame1, "Start"), (frame2, "Middle"), (frame3, "End")]
video = render_video(labeled_frames, fps=24)
display(video)
# Compare multiple videos side by side
from tsilva_notebook_utils import render_videos
render_videos([(video1_frames, "Original"), (video2_frames, "Processed")])
Google Colab Utilities
from tsilva_notebook_utils import disconnect_after_timeout
# Automatically disconnect Colab after 5 minutes of inactivity
disconnect_after_timeout(timeout_seconds=300)
Notifications
Send notifications to PopDesk notification server:
from tsilva_notebook_utils import send_popdesk_notification
# Send a notification when your long-running notebook task completes
send_popdesk_notification(
url="https://your-popdesk-url",
auth_token="your-auth-token",
title="Training Complete",
message="Your model has finished training with 95% accuracy"
)
� Development & Releases
Development Setup
# Clone the repository
git clone https://github.com/tsilva/tsilva-notebook-utils.git
cd tsilva-notebook-utils
# Install in development mode
pip install -e .
# Run tests
python -m pytest tests/
Version Management
This project uses automated version bumping with bump2version. Version numbers are automatically updated across all relevant files.
Local Version Bumping
Use the provided scripts for local development:
# Bump patch version (0.0.115 → 0.0.118)
make bump-patch
# or
python bump_version.py patch
# Bump minor version (0.0.115 → 0.1.0)
make bump-minor
# or
python bump_version.py minor
# Bump major version (0.0.115 → 1.0.0)
make bump-major
# or
python bump_version.py major
Automated Releases
🎯 Recommended: GitHub Actions Release Workflow
- Go to the GitHub Actions tab
- Select "Release and Publish" workflow
- Click "Run workflow"
- Choose your release type:
- patch: Bug fixes (0.0.115 → 0.0.118)
- minor: New features (0.0.115 → 0.1.0)
- major: Breaking changes (0.0.115 → 1.0.0)
- prerelease: Beta versions (0.0.115 → 0.0.118-alpha.1)
- Click "Run workflow"
What happens automatically:
- ✅ Version bumped in
pyproject.tomland__init__.py - ✅ Git commit created with version bump message
- ✅ Git tag created (e.g.,
v0.0.118) - ✅ Package built and published to PyPI
- ✅ GitHub release created with release notes
Manual Release Process
If you prefer manual control:
# 1. Bump version locally
make bump-patch # or bump-minor, bump-major
# 2. Build the package
make build
# 3. Publish to PyPI (requires PYPI_API_TOKEN)
make publish
Release Notes
Recent releases can be found on the Releases page.
Version History
- v0.0.115: Current version with automated release workflow
- v0.0.114: Previous stable version
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
make test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Available Make Commands
make help # Show all available commands
make install # Install package in development mode
make test # Run tests
make bump-patch # Bump patch version
make bump-minor # Bump minor version
make bump-major # Bump major version
make build # Build the package
make publish # Build and publish to PyPI
make clean # Clean build artifacts
�📄 License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tsilva_notebook_utils-0.0.121.tar.gz.
File metadata
- Download URL: tsilva_notebook_utils-0.0.121.tar.gz
- Upload date:
- Size: 39.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfaa37b8432921eecd98f8c3e5545ce97616600223a737ce6ac07744fc51fb64
|
|
| MD5 |
1295b03db764d4b3d49875d8597b6751
|
|
| BLAKE2b-256 |
b2ce033268e1689cd850442fe245acec5b4c2d26137e881cda3e7c7c4d77ab06
|
Provenance
The following attestation bundles were made for tsilva_notebook_utils-0.0.121.tar.gz:
Publisher:
release.yml on tsilva/tsilva-notebook-utils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tsilva_notebook_utils-0.0.121.tar.gz -
Subject digest:
bfaa37b8432921eecd98f8c3e5545ce97616600223a737ce6ac07744fc51fb64 - Sigstore transparency entry: 273666637
- Sigstore integration time:
-
Permalink:
tsilva/tsilva-notebook-utils@c63dc8dc8d48b58bedc255f0bc15fe20b81bc5df -
Branch / Tag:
refs/heads/main - Owner: https://github.com/tsilva
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63dc8dc8d48b58bedc255f0bc15fe20b81bc5df -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tsilva_notebook_utils-0.0.121-py3-none-any.whl.
File metadata
- Download URL: tsilva_notebook_utils-0.0.121-py3-none-any.whl
- Upload date:
- Size: 33.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f6c185a53ba5cd08d57d42ef9f8944bea4dd0e4f2e990a7b056d86321020623
|
|
| MD5 |
2532e7d843711fbe87e92444e5f428fc
|
|
| BLAKE2b-256 |
ddd371ee7f1905d623fad5a4d5a0d5bdbab449b8ee52916166926abd8d6965f7
|
Provenance
The following attestation bundles were made for tsilva_notebook_utils-0.0.121-py3-none-any.whl:
Publisher:
release.yml on tsilva/tsilva-notebook-utils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tsilva_notebook_utils-0.0.121-py3-none-any.whl -
Subject digest:
0f6c185a53ba5cd08d57d42ef9f8944bea4dd0e4f2e990a7b056d86321020623 - Sigstore transparency entry: 273666650
- Sigstore integration time:
-
Permalink:
tsilva/tsilva-notebook-utils@c63dc8dc8d48b58bedc255f0bc15fe20b81bc5df -
Branch / Tag:
refs/heads/main - Owner: https://github.com/tsilva
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63dc8dc8d48b58bedc255f0bc15fe20b81bc5df -
Trigger Event:
workflow_dispatch
-
Statement type: