Skip to main content

Python bindings for Helm - The Kubernetes Package Manager

Project description

helm-sdkpy

Python bindings for Helm - The Kubernetes Package Manager

License Python

Python bindings for the Helm v4 Go library. Ships with a self-contained Go shim that bundles the native Helm runtime—no system dependencies required.

✨ Features

  • 🚀 Complete Helm API - Full access to Helm v4 functionality
  • Async-First - All operations use async/await for non-blocking execution
  • 📦 Self-Contained - No system dependencies required
  • 🔒 Type-Safe - Python type hints for better IDE support
  • 🐍 Pythonic API - Intuitive, object-oriented interface
  • 🎯 Production Ready - Based on official Helm Go libraries
  • 🔄 Concurrent - Execute multiple operations simultaneously with asyncio

🚀 Quick Start

Note: helm-sdkpy uses an async-first API. All operations must be awaited. This enables non-blocking execution and concurrent operations with asyncio.gather().

Installation

pip install helm-sdkpy

Basic Usage

import asyncio
import helm-sdkpy

async def main():
    # Create a configuration
    config = helm-sdkpy.Configuration(namespace="default")

    # Install a chart from a local path
    install = helm-sdkpy.Install(config)
    result = await install.run(
        release_name="my-nginx",
        chart_path="./nginx-chart",
        values={"replicaCount": 3}
    )
    print(f"Installed: {result['name']}")

    # Install a chart from an OCI registry
    result = await install.run(
        release_name="my-app",
        chart_path="oci://ghcr.io/nginxinc/charts/nginx-ingress",
        values={"controller": {"service": {"type": "LoadBalancer"}}}
    )
    print(f"Installed: {result['name']}")

    # Install a chart from an HTTPS URL
    result = await install.run(
        release_name="my-release",
        chart_path="https://charts.bitnami.com/bitnami/nginx-15.0.0.tgz",
        values={"replicaCount": 2}
    )
    print(f"Installed: {result['name']}")

    # List releases
    list_action = helm-sdkpy.List(config)
    releases = await list_action.run(all=True)
    for release in releases:
        print(f"Release: {release['name']}")

    # Upgrade a release
    upgrade = helm-sdkpy.Upgrade(config)
    result = await upgrade.run(
        release_name="my-nginx",
        chart_path="./nginx-chart",
        values={"replicaCount": 5}
    )

    # Uninstall a release
    uninstall = helm-sdkpy.Uninstall(config)
    result = await uninstall.run("my-nginx")

asyncio.run(main())

Concurrent Operations

Take advantage of Python's asyncio to run multiple Helm operations concurrently:

import asyncio
import helm-sdkpy

async def deploy_multiple_apps():
    config = helm-sdkpy.Configuration(namespace="default")
    install = helm-sdkpy.Install(config)
    
    # Install multiple charts concurrently
    results = await asyncio.gather(
        install.run("app-1", "oci://registry.io/chart1"),
        install.run("app-2", "oci://registry.io/chart2"),
        install.run("app-3", "oci://registry.io/chart3"),
    )
    
    for result in results:
        print(f"Deployed: {result['name']}")

asyncio.run(deploy_multiple_apps())

📖 Chart Path Formats

helm-sdkpy supports multiple chart location formats:

Local Paths

Point to a chart directory or packaged chart (.tgz) on your local filesystem:

chart_path="./nginx-chart"           # Local directory
chart_path="/path/to/mychart"        # Absolute path
chart_path="./mychart-1.0.0.tgz"     # Packaged chart

OCI Registries

Reference charts stored in OCI-compatible container registries:

chart_path="oci://ghcr.io/nginxinc/charts/nginx-ingress"
chart_path="oci://registry.example.com/charts/myapp"

HTTP/HTTPS URLs

Download charts directly from web servers:

chart_path="https://charts.bitnami.com/bitnami/nginx-15.0.0.tgz"
chart_path="https://example.com/charts/myapp-1.2.3.tgz"

📖 API Overview

Core Actions (All Async)

  • Configuration - Manage Helm configuration and Kubernetes connection
  • Install - Install charts to Kubernetes (async)
  • Upgrade - Upgrade existing releases (async)
  • Uninstall - Remove releases from cluster (async)
  • List - List deployed releases (async)
  • Status - Get release status information (async)
  • Rollback - Rollback to previous release versions (async)
  • GetValues - Retrieve release values (async)
  • History - View release history (async)

Chart Operations (All Async)

  • Pull - Download charts from repositories (async)
  • Show - Display chart information and values (async)
  • Test - Run release tests (async)
  • Lint - Validate charts for errors (async)
  • Package - Package charts into archives (async)

All methods use async def and must be awaited. This enables non-blocking operations and concurrent execution with asyncio.gather().

🛠️ Development

Prerequisites

  • Python 3.12+
  • Docker (for building the native library)
  • just task runner (optional but recommended)

Building from Source

git clone https://github.com/vantagecompute/helm-sdkpy.git
cd helm-sdkpy

# Build native library using Docker
just build-lib

# Install in development mode
pip install -e .

Running Tests

# Run test suite
just unit

# Run linting
just lint

# Run type checking
just typecheck

Project Commands

The project uses just for task automation:

# Install just
sudo snap install just --classic

Available commands:

  • just build-lib - Build native library (Docker)
  • just unit - Run tests with coverage
  • just lint - Check code style
  • just typecheck - Run static type checking
  • just fmt - Format code

📝 Examples

See the examples/ directory for more usage examples.

🏗️ Architecture

helm-sdkpy follows the same architecture as dqlitepy:

  1. Go Shim Layer - Exposes Helm v4 API via C FFI
  2. Python FFI - CFFI bindings to Go shared library
  3. Python API - Pythonic wrapper classes

This ensures type safety, excellent performance, and seamless integration with the official Helm libraries.

📝 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Copyright 2025 Vantage Compute

🤝 Contributing

Contributions welcome! Please ensure:

  • Code follows existing style (ruff formatting)
  • Tests pass and coverage is maintained
  • Type hints are included
  • Documentation is updated

💬 Support

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

helm_sdkpy-0.0.12.tar.gz (45.3 MB view details)

Uploaded Source

Built Distribution

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

helm_sdkpy-0.0.12-py3-none-any.whl (45.5 MB view details)

Uploaded Python 3

File details

Details for the file helm_sdkpy-0.0.12.tar.gz.

File metadata

  • Download URL: helm_sdkpy-0.0.12.tar.gz
  • Upload date:
  • Size: 45.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","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 helm_sdkpy-0.0.12.tar.gz
Algorithm Hash digest
SHA256 2d00add9322f7187e6052c4cde3f283967a0f9c8ca5debcdeed1c280129a83bb
MD5 67f3c23f835f73c82f70dd0921f89015
BLAKE2b-256 52cb8752f560908a5fc6b52c4e7f20cad76b8682b1305da1cb85154227dbd3e6

See more details on using hashes here.

File details

Details for the file helm_sdkpy-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: helm_sdkpy-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 45.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","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 helm_sdkpy-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 55b3b4f8bba235f55b31885fa2fa4a932915f245d820d02eb035d50a6492a288
MD5 305a860e374168aa0534a3d3121f7faa
BLAKE2b-256 747c47ace63b20ebd33fe9f4c28dd6a3a64c4df7e24e83c5a4ae0c755073a5e7

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