{"id":36946813,"url":"https://github.com/vantagecompute/helm-sdkpy","last_synced_at":"2026-01-17T00:21:25.121Z","repository":{"id":327258081,"uuid":"1101592626","full_name":"vantagecompute/helm-sdkpy","owner":"vantagecompute","description":"Python Helm GO SDK Wrapper","archived":false,"fork":false,"pushed_at":"2025-12-09T12:59:55.000Z","size":436,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T12:20:22.073Z","etag":null,"topics":["helm","k8s","python"],"latest_commit_sha":null,"homepage":"https://vantagecompute.github.io/helm-sdkpy/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vantagecompute.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-21T22:43:49.000Z","updated_at":"2025-12-09T12:59:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vantagecompute/helm-sdkpy","commit_stats":null,"previous_names":["vantagecompute/helm-sdkpy"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/vantagecompute/helm-sdkpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vantagecompute%2Fhelm-sdkpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vantagecompute%2Fhelm-sdkpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vantagecompute%2Fhelm-sdkpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vantagecompute%2Fhelm-sdkpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vantagecompute","download_url":"https://codeload.github.com/vantagecompute/helm-sdkpy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vantagecompute%2Fhelm-sdkpy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28397983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["helm","k8s","python"],"created_at":"2026-01-13T11:31:46.929Z","updated_at":"2026-01-17T00:21:25.106Z","avatar_url":"https://github.com/vantagecompute.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# helm-sdkpy\n\nPython bindings for Helm - The Kubernetes Package Manager\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![Python](https://img.shields.io/badge/python-3.12+-blue.svg)](https://python.org)\n\n\u003c/div\u003e\n\nPython bindings for the Helm v4 Go library. Ships with a self-contained Go shim that bundles the native Helm runtime—no system dependencies required.\n\n## ✨ Features\n\n- 🚀 **Complete Helm API** - Full access to Helm v4 functionality\n- ⚡ **Async-First** - All operations use async/await for non-blocking execution\n- 📦 **Self-Contained** - No system dependencies required\n- 🔒 **Type-Safe** - Python type hints for better IDE support\n- 🐍 **Pythonic API** - Intuitive, object-oriented interface\n- 🎯 **Production Ready** - Based on official Helm Go libraries\n- 🔄 **Concurrent** - Execute multiple operations simultaneously with asyncio\n\n## 🚀 Quick Start\n\n**Note**: helm-sdkpy uses an async-first API. All operations must be awaited. This enables non-blocking execution and concurrent operations with `asyncio.gather()`.\n\n### Installation\n\n```bash\npip install helm-sdkpy\n```\n\n### Basic Usage\n\n```python\nimport asyncio\nimport helm-sdkpy\n\nasync def main():\n    # Create a configuration\n    config = helm-sdkpy.Configuration(namespace=\"default\")\n\n    # Install a chart from a local path\n    install = helm-sdkpy.Install(config)\n    result = await install.run(\n        release_name=\"my-nginx\",\n        chart_path=\"./nginx-chart\",\n        values={\"replicaCount\": 3}\n    )\n    print(f\"Installed: {result['name']}\")\n\n    # Install a chart from an OCI registry\n    result = await install.run(\n        release_name=\"my-app\",\n        chart_path=\"oci://ghcr.io/nginxinc/charts/nginx-ingress\",\n        values={\"controller\": {\"service\": {\"type\": \"LoadBalancer\"}}}\n    )\n    print(f\"Installed: {result['name']}\")\n\n    # Install a chart from an HTTPS URL\n    result = await install.run(\n        release_name=\"my-release\",\n        chart_path=\"https://charts.bitnami.com/bitnami/nginx-15.0.0.tgz\",\n        values={\"replicaCount\": 2}\n    )\n    print(f\"Installed: {result['name']}\")\n\n    # List releases\n    list_action = helm-sdkpy.List(config)\n    releases = await list_action.run(all=True)\n    for release in releases:\n        print(f\"Release: {release['name']}\")\n\n    # Upgrade a release\n    upgrade = helm-sdkpy.Upgrade(config)\n    result = await upgrade.run(\n        release_name=\"my-nginx\",\n        chart_path=\"./nginx-chart\",\n        values={\"replicaCount\": 5}\n    )\n\n    # Uninstall a release\n    uninstall = helm-sdkpy.Uninstall(config)\n    result = await uninstall.run(\"my-nginx\")\n\nasyncio.run(main())\n```\n\n### Concurrent Operations\n\nTake advantage of Python's asyncio to run multiple Helm operations concurrently:\n\n```python\nimport asyncio\nimport helm-sdkpy\n\nasync def deploy_multiple_apps():\n    config = helm-sdkpy.Configuration(namespace=\"default\")\n    install = helm-sdkpy.Install(config)\n    \n    # Install multiple charts concurrently\n    results = await asyncio.gather(\n        install.run(\"app-1\", \"oci://registry.io/chart1\"),\n        install.run(\"app-2\", \"oci://registry.io/chart2\"),\n        install.run(\"app-3\", \"oci://registry.io/chart3\"),\n    )\n    \n    for result in results:\n        print(f\"Deployed: {result['name']}\")\n\nasyncio.run(deploy_multiple_apps())\n```\n\n## 📖 Chart Path Formats\n\nhelm-sdkpy supports multiple chart location formats:\n\n### Local Paths\nPoint to a chart directory or packaged chart (.tgz) on your local filesystem:\n```python\nchart_path=\"./nginx-chart\"           # Local directory\nchart_path=\"/path/to/mychart\"        # Absolute path\nchart_path=\"./mychart-1.0.0.tgz\"     # Packaged chart\n```\n\n### OCI Registries\nReference charts stored in OCI-compatible container registries:\n```python\nchart_path=\"oci://ghcr.io/nginxinc/charts/nginx-ingress\"\nchart_path=\"oci://registry.example.com/charts/myapp\"\n```\n\n### HTTP/HTTPS URLs\nDownload charts directly from web servers:\n```python\nchart_path=\"https://charts.bitnami.com/bitnami/nginx-15.0.0.tgz\"\nchart_path=\"https://example.com/charts/myapp-1.2.3.tgz\"\n```\n\n## 🔧 Kubeconfig Configuration\n\nhelm-sdkpy provides flexible options for configuring Kubernetes cluster access:\n\n### Default Kubeconfig\n```python\n# Uses $KUBECONFIG env var or ~/.kube/config\nconfig = helm_sdkpy.Configuration(namespace=\"default\")\n```\n\n### File Path\n```python\n# Explicit path to kubeconfig file\nconfig = helm_sdkpy.Configuration(\n    namespace=\"default\",\n    kubeconfig=\"/path/to/kubeconfig.yaml\"\n)\n```\n\n### YAML String\nPass kubeconfig content directly as a string - useful for dynamic configurations, secrets, or CI/CD environments:\n```python\n# Kubeconfig from environment variable\nkubeconfig_content = os.environ.get(\"KUBECONFIG_CONTENT\")\n\n# Or read from a secret, API response, etc.\nconfig = helm_sdkpy.Configuration(\n    namespace=\"default\",\n    kubeconfig=kubeconfig_content  # YAML string auto-detected\n)\n```\n\n### Specific Context\n```python\n# Use a specific context from multi-cluster kubeconfig\nconfig = helm_sdkpy.Configuration(\n    namespace=\"production\",\n    kubeconfig=\"/path/to/kubeconfig.yaml\",\n    kubecontext=\"production-cluster\"\n)\n```\n\nSee [examples/kubeconfig_usage.py](examples/kubeconfig_usage.py) for more detailed examples.\n\n## 📖 API Overview\n\n### Core Actions (All Async)\n\n- **Configuration** - Manage Helm configuration and Kubernetes connection\n- **Install** - Install charts to Kubernetes (async)\n- **Upgrade** - Upgrade existing releases (async)\n- **Uninstall** - Remove releases from cluster (async)\n- **List** - List deployed releases (async)\n- **Status** - Get release status information (async)\n- **Rollback** - Rollback to previous release versions (async)\n- **GetValues** - Retrieve release values (async)\n- **History** - View release history (async)\n\n### Chart Operations (All Async)\n\n- **Pull** - Download charts from repositories (async)\n- **Show** - Display chart information and values (async)\n- **Test** - Run release tests (async)\n- **Lint** - Validate charts for errors (async)\n- **Package** - Package charts into archives (async)\n\nAll methods use `async def` and must be awaited. This enables non-blocking operations\nand concurrent execution with `asyncio.gather()`.\n\n## 🛠️ Development\n\n### Prerequisites\n\n- Python 3.12+\n- Docker (for building the native library)\n- [just](https://github.com/casey/just) task runner (optional but recommended)\n\n### Building from Source\n\n```bash\ngit clone https://github.com/vantagecompute/helm-sdkpy.git\ncd helm-sdkpy\n\n# Build native library using Docker\njust build-lib\n\n# Install in development mode\npip install -e .\n```\n\n### Running Tests\n\n```bash\n# Run test suite\njust unit\n\n# Run linting\njust lint\n\n# Run type checking\njust typecheck\n```\n\n### Project Commands\n\nThe project uses [just](https://github.com/casey/just) for task automation:\n\n```bash\n# Install just\nsudo snap install just --classic\n```\n\nAvailable commands:\n- `just build-lib` - Build native library (Docker)\n- `just unit` - Run tests with coverage\n- `just lint` - Check code style\n- `just typecheck` - Run static type checking\n- `just fmt` - Format code\n\n## 📝 Examples\n\nSee the [examples/](examples/) directory for more usage examples.\n\n## 🏗️ Architecture\n\nhelm-sdkpy follows the same architecture as [dqlitepy](https://github.com/vantagecompute/dqlitepy):\n\n1. **Go Shim Layer** - Exposes Helm v4 API via C FFI\n2. **Python FFI** - CFFI bindings to Go shared library\n3. **Python API** - Pythonic wrapper classes\n\nThis ensures type safety, excellent performance, and seamless integration with the official Helm libraries.\n\n## 📝 License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\nCopyright 2025 Vantage Compute\n\n## 🤝 Contributing\n\nContributions welcome! Please ensure:\n- Code follows existing style (ruff formatting)\n- Tests pass and coverage is maintained\n- Type hints are included\n- Documentation is updated\n\n## 💬 Support\n\n- [GitHub Issues](https://github.com/vantagecompute/helm_sdkpy/issues) - Bug reports and feature requests\n- [Examples](examples/) - Sample code and use cases\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvantagecompute%2Fhelm-sdkpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvantagecompute%2Fhelm-sdkpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvantagecompute%2Fhelm-sdkpy/lists"}