Skip to content

Commit 309ffa2

Browse files
committed
change project name helmpy -> helm-sdkpy
1 parent a16f997 commit 309ffa2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+554
-554
lines changed

.github/copilot-instructions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# GitHub Copilot Instructions for Helmpy
1+
# GitHub Copilot Instructions for helm-sdkpy
22

33
## Python Command Execution
44

@@ -57,7 +57,7 @@ This is a Python CLI application using:
5757
- `uv` for dependency management
5858
- `pytest` for testing
5959
- `just` for task automation
60-
- `Helmpy` as the main package
60+
- `helm-sdkpy` as the main package
6161
- `docusaurus` for documentation
6262
- `examples/` directory for usage patterns
6363
## Testing Patterns

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Helmpy Code Quality Checks
1+
name: helm-sdkpy Code Quality Checks
22
on:
33
workflow_call:
44
pull_request:

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888
sudo snap install astral-uv --classic
8989
uv venv
9090
uv pip install dist/*.whl
91-
uv run python3 -c "import helmpy; print('Package imported successfully')"
91+
uv run python3 -c "import helm_sdkpy; print('Package imported successfully')"
9292
9393
publish-pypi:
9494
name: Publish to PyPI

.github/workflows/update-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
push:
55
branches: ["main"]
66
paths:
7-
- 'helmpy/**'
7+
- 'helm_sdkpy/**'
88
- 'scripts/update_docs_version.py'
99
- 'pyproject.toml'
1010
- 'docusaurus/**'

DEVELOPMENT.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
# Development Guide
22

3-
This document provides detailed information for developers working on helmpy.
3+
This document provides detailed information for developers working on helm-sdkpy.
44

55
## Architecture
66

7-
helmpy follows a three-layer architecture:
7+
helm-sdkpy follows a three-layer architecture:
88

99
1. **Go Shim Layer** (`go/shim/main.go`)
1010
- Wraps Helm v4 Go API
1111
- Exposes C-compatible FFI functions
1212
- Handles memory management and error propagation
1313
- Thread-safe with mutex protection
1414

15-
2. **Python FFI Layer** (`helmpy/_ffi.py`)
15+
2. **Python FFI Layer** (`helm_sdkpy/_ffi.py`)
1616
- Uses CFFI to interface with Go shared library
1717
- Handles library loading and discovery
1818
- Provides type conversion helpers
1919
- Manages error checking
2020

21-
3. **Python API Layer** (`helmpy/actions.py`, `helmpy/chart.py`)
21+
3. **Python API Layer** (`helm_sdkpy/actions.py`, `helm_sdkpy/chart.py`)
2222
- Async-first Pythonic wrapper classes
2323
- Type hints for IDE support
2424
- Context manager support
@@ -38,8 +38,8 @@ helmpy follows a three-layer architecture:
3838

3939
```bash
4040
# Clone the repository
41-
git clone https://github.com/vantagecompute/helmpy.git
42-
cd helmpy
41+
git clone https://github.com/vantagecompute/helm-sdkpy.git
42+
cd helm-sdkpy
4343

4444
# Install Python dependencies
4545
pip install -e ".[dev]"
@@ -88,15 +88,15 @@ This runs a multi-stage Docker build that:
8888
1. Sets up Go 1.22 build environment
8989
2. Downloads Helm v4 and all dependencies
9090
3. Compiles the Go shim to a shared library
91-
4. Extracts the library to `helmpy/_lib/linux-amd64/`
91+
4. Extracts the library to `helm_sdkpy/_lib/linux-amd64/`
9292

9393
### Local Build (Development)
9494

9595
For faster iteration during development:
9696

9797
```bash
9898
cd go/shim
99-
go build -buildmode=c-shared -o ../../helmpy/_lib/linux-amd64/libhelmpy.so main.go
99+
go build -buildmode=c-shared -o ../../helm_sdkpy/_lib/linux-amd64/libhelm-sdkpy.so main.go
100100
```
101101

102102
Note: This requires Go 1.22+ and all dependencies to be available locally.
@@ -122,21 +122,21 @@ Tests are located in the `tests/` directory. Follow these guidelines:
122122

123123
1. **Import from top-level package**:
124124
```python
125-
import helmpy
126-
from helmpy import Configuration, Install
125+
import helm-sdkpy
126+
from helm-sdkpy import Configuration, Install
127127
```
128128

129129
2. **Use pytest fixtures** for common setup:
130130
```python
131131
@pytest.fixture
132132
def config():
133-
return helmpy.Configuration(namespace="test")
133+
return helm-sdkpy.Configuration(namespace="test")
134134
```
135135

136136
2. **Test exception handling**:
137137
```python
138138
async def test_install_error():
139-
with pytest.raises(helmpy.InstallError):
139+
with pytest.raises(helm-sdkpy.InstallError):
140140
# Code that should raise
141141
await install.run(...)
142142
```
@@ -170,22 +170,22 @@ Follow standard Go conventions:
170170

171171
To add support for a new Helm action:
172172

173-
1. **Add FFI definition** in `helmpy/_ffi.py`:
173+
1. **Add FFI definition** in `helm_sdkpy/_ffi.py`:
174174
```python
175175
ffi.cdef("""
176-
int helmpy_new_action(helmpy_handle handle, const char *param, char **result);
176+
int helm-sdkpy_new_action(helm-sdkpy_handle handle, const char *param, char **result);
177177
""")
178178
```
179179

180180
2. **Implement Go function** in `go/shim/main.go`:
181181
```go
182-
//export helmpy_new_action
183-
func helmpy_new_action(handle C.helmpy_handle, param *C.char, result **C.char) C.int {
182+
//export helm-sdkpy_new_action
183+
func helm-sdkpy_new_action(handle C.helm-sdkpy_handle, param *C.char, result **C.char) C.int {
184184
// Implementation
185185
}
186186
```
187187

188-
3. **Create Python wrapper** in `helmpy/actions.py` or `helmpy/chart.py`:
188+
3. **Create Python wrapper** in `helm_sdkpy/actions.py` or `helm_sdkpy/chart.py`:
189189
```python
190190
class NewAction:
191191
def __init__(self, config: Configuration):
@@ -212,8 +212,8 @@ To add support for a new Helm action:
212212

213213
@pytest.mark.asyncio
214214
async def test_new_action():
215-
config = helmpy.Configuration(namespace="test")
216-
action = helmpy.NewAction(config)
215+
config = helm-sdkpy.Configuration(namespace="test")
216+
action = helm-sdkpy.NewAction(config)
217217
result = await action.run("param")
218218
assert result is not None
219219
```
@@ -222,7 +222,7 @@ To add support for a new Helm action:
222222

223223
1. Update version in:
224224
- `pyproject.toml`
225-
- `helmpy/__init__.py`
225+
- `helm_sdkpy/__init__.py`
226226
- `go/shim/main.go` (versionCString)
227227

228228
2. Build and test:
@@ -252,7 +252,7 @@ If you get `HelmLibraryNotFound`:
252252

253253
1. Check if library exists:
254254
```bash
255-
ls -lh helmpy/_lib/linux-amd64/libhelmpy.so
255+
ls -lh helm_sdkpy/_lib/linux-amd64/libhelm-sdkpy.so
256256
```
257257

258258
2. Rebuild if missing:
@@ -262,7 +262,7 @@ If you get `HelmLibraryNotFound`:
262262

263263
3. Check library dependencies:
264264
```bash
265-
ldd helmpy/_lib/linux-amd64/libhelmpy.so
265+
ldd helm_sdkpy/_lib/linux-amd64/libhelm-sdkpy.so
266266
```
267267

268268
### Import Errors
@@ -276,7 +276,7 @@ If Python can't find the module:
276276

277277
2. Or set PYTHONPATH:
278278
```bash
279-
export PYTHONPATH=/path/to/helmpy:$PYTHONPATH
279+
export PYTHONPATH=/path/to/helm-sdkpy:$PYTHONPATH
280280
```
281281

282282
### Go Build Errors

IMPLEMENTATION_SUMMARY.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# helmpy Implementation Summary
1+
# helm-sdkpy Implementation Summary
22

33
## Project Overview
44

5-
**helmpy** is a complete Python wrapper for the Helm v4 Go API, providing full access to Helm's functionality from Python applications. Following the architecture pattern of dqlitepy, it creates a self-contained package with no system dependencies.
5+
**helm-sdkpy** is a complete Python wrapper for the Helm v4 Go API, providing full access to Helm's functionality from Python applications. Following the architecture pattern of dqlitepy, it creates a self-contained package with no system dependencies.
66

77
## Implementation Status: ✅ COMPLETE
88

@@ -20,7 +20,7 @@ All requirements from the problem statement have been fulfilled:
2020
└────────────────────────────────────────────────────────┘
2121
2222
┌────────────────────────────────────────────────────────┐
23-
helmpy Python Package (Async-First, Type-Safe) │
23+
helm-sdkpy Python Package (Async-First, Type-Safe) │
2424
│ ┌──────────────────────────────────────────────────┐ │
2525
│ │ actions.py: async Install, Upgrade, Uninstall │ │
2626
│ │ chart.py: async Pull, Show, Lint, Package, Test │ │
@@ -81,7 +81,7 @@ All operations use Python's `async/await` syntax for non-blocking execution and
8181
## Project Structure
8282

8383
```
84-
helmpy/
84+
helm_sdkpy/
8585
├── .gitignore # Build artifacts exclusion
8686
├── .python-version # Python 3.12 specification
8787
├── LICENSE # Apache 2.0 license
@@ -97,7 +97,7 @@ helmpy/
9797
│ └── shim/
9898
│ └── main.go # C FFI implementation (700+ lines)
9999
100-
├── helmpy/ # Python package
100+
├── helm_sdkpy/ # Python package
101101
│ ├── __init__.py # Package exports
102102
│ ├── _ffi.py # CFFI bindings (220 lines)
103103
│ ├── exceptions.py # 10 exception types (70 lines)
@@ -186,14 +186,14 @@ just fmt # Format code
186186

187187
```python
188188
import asyncio
189-
import helmpy
189+
import helm-sdkpy
190190

191191
async def main():
192192
# Create configuration
193-
config = helmpy.Configuration(namespace="default")
193+
config = helm-sdkpy.Configuration(namespace="default")
194194

195195
# Install chart (async)
196-
install = helmpy.Install(config)
196+
install = helm-sdkpy.Install(config)
197197
result = await install.run(
198198
release_name="my-nginx",
199199
chart_path="./nginx-chart",
@@ -203,17 +203,17 @@ async def main():
203203
)
204204

205205
# List releases (async)
206-
releases = await helmpy.List(config).run(all=True)
206+
releases = await helm-sdkpy.List(config).run(all=True)
207207

208208
# Upgrade (async)
209-
upgrade = helmpy.Upgrade(config)
209+
upgrade = helm-sdkpy.Upgrade(config)
210210
await upgrade.run("my-nginx", "./nginx-chart", {"replicaCount": 5})
211211

212212
# Rollback (async)
213-
await helmpy.Rollback(config).run("my-nginx", revision=1)
213+
await helm-sdkpy.Rollback(config).run("my-nginx", revision=1)
214214

215215
# Uninstall (async)
216-
await helmpy.Uninstall(config).run("my-nginx", wait=True)
216+
await helm-sdkpy.Uninstall(config).run("my-nginx", wait=True)
217217

218218
asyncio.run(main())
219219
```
@@ -222,11 +222,11 @@ asyncio.run(main())
222222

223223
```python
224224
import asyncio
225-
import helmpy
225+
import helm-sdkpy
226226

227227
async def deploy_multiple():
228-
config = helmpy.Configuration(namespace="default")
229-
install = helmpy.Install(config)
228+
config = helm-sdkpy.Configuration(namespace="default")
229+
install = helm-sdkpy.Install(config)
230230

231231
# Install multiple charts concurrently
232232
results = await asyncio.gather(
@@ -325,9 +325,9 @@ just build-lib
325325
pip install .
326326

327327
# Or use directly
328-
python -c "import helmpy; print(helmpy.__version__)"
328+
python -c "import helm-sdkpy; print(helm-sdkpy.__version__)"
329329
```
330330

331331
## Conclusion
332332

333-
The helmpy implementation is **complete and production-ready**, providing a comprehensive, type-safe, async-first, and self-contained Python wrapper for the entire Helm v4 Go API. All 19 actions use Python's async/await syntax for non-blocking execution and support concurrent operations with asyncio.gather(), making it ideal for modern Python applications, web frameworks, and event-driven architectures. The implementation follows the exact pattern demonstrated in dqlitepy.
333+
The helm-sdkpy implementation is **complete and production-ready**, providing a comprehensive, type-safe, async-first, and self-contained Python wrapper for the entire Helm v4 Go API. All 19 actions use Python's async/await syntax for non-blocking execution and support concurrent operations with asyncio.gather(), making it ideal for modern Python applications, web frameworks, and event-driven architectures. The implementation follows the exact pattern demonstrated in dqlitepy.

0 commit comments

Comments
 (0)