From f794464170b2665b96ee51755d64b3d40ddd9b69 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Mon, 6 Apr 2026 22:05:28 +0100 Subject: [PATCH] upd docstrings and openapi tags patch bump --- pyproject.toml | 2 +- src/vmr_http/app.py | 11 ++++++++++- src/vmr_http/models/eq.py | 12 ++++++------ src/vmr_http/web/command/command.py | 2 +- src/vmr_http/web/eq.py | 6 +++--- src/vmr_http/web/strip/gainlayer.py | 10 +++++----- uv.lock | 2 +- 7 files changed, 27 insertions(+), 18 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7557683..bdccdbe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "vmr-http" -version = "0.8.1" +version = "0.8.2" description = "HTTP API for controlling Voicemeeter" readme = "README.md" authors = [{ name = "onyx-and-iris", email = "code@onyxandiris.online" }] diff --git a/src/vmr_http/app.py b/src/vmr_http/app.py index 80ec7d9..ec2e725 100644 --- a/src/vmr_http/app.py +++ b/src/vmr_http/app.py @@ -24,7 +24,16 @@ app = FastAPI( description='A REST API for controlling Voicemeeter.', openapi_tags=[ {'name': 'strip', 'description': 'Endpoints for controlling strip parameters.'}, + {'name': 'strip gainlayer', 'description': 'Endpoints for controlling strip gain layer parameters.'}, + {'name': 'strip comp', 'description': 'Endpoints for controlling strip compressor parameters.'}, + {'name': 'strip gate', 'description': 'Endpoints for controlling strip gate parameters.'}, + {'name': 'strip eq', 'description': 'Endpoints for controlling strip equalizer parameters.'}, + {'name': 'strip denoiser', 'description': 'Endpoints for controlling strip denoiser parameters.'}, {'name': 'bus', 'description': 'Endpoints for controlling bus parameters.'}, + {'name': 'bus mode', 'description': 'Endpoints for controlling bus mode parameters.'}, + {'name': 'bus eq', 'description': 'Endpoints for controlling bus equalizer parameters.'}, + {'name': 'command', 'description': 'Endpoints for executing Voicemeeter commands.'}, + {'name': 'healthcheck', 'description': 'Endpoint for checking the health of the service.'}, ], ) app.include_router(strip.router, prefix='/strip/{index}') @@ -32,7 +41,7 @@ app.include_router(bus.router, prefix='/bus/{index}') app.include_router(command.router, prefix='/command') -@app.get('/health') +@app.get('/health', tags=['healthcheck']) def health_check(voicemeeter=Depends(get_voicemeeter_client)): """Health check endpoint to verify the service is running.""" try: diff --git a/src/vmr_http/models/eq.py b/src/vmr_http/models/eq.py index 76906a4..21f81d7 100644 --- a/src/vmr_http/models/eq.py +++ b/src/vmr_http/models/eq.py @@ -13,10 +13,10 @@ class EQParams(BaseModel): class EQChannelCellParams(BaseModel): - """Parameters for an equalizer channel.""" + """Parameters for an equalizer channel cell.""" - on: Optional[bool] = Field(None, description='Whether the equalizer channel is enabled or not.') - type: Optional[int] = Field(None, ge=0, le=6, description='Type of the equalizer channel.') - f: Optional[float] = Field(None, ge=20.0, le=20000.0, description='Frequency of the equalizer channel.') - gain: Optional[float] = Field(None, ge=-36.0, le=18.0, description='Gain of the equalizer channel.') - q: Optional[float] = Field(None, ge=0.3, le=100.0, description='Q factor of the equalizer channel.') + on: Optional[bool] = Field(None, description='Whether the equalizer channel cell is enabled or not.') + type: Optional[int] = Field(None, ge=0, le=6, description='Type of the equalizer channel cell.') + f: Optional[float] = Field(None, ge=20.0, le=20000.0, description='Frequency of the equalizer channel cell.') + gain: Optional[float] = Field(None, ge=-36.0, le=18.0, description='Gain of the equalizer channel cell.') + q: Optional[float] = Field(None, ge=0.3, le=100.0, description='Q factor of the equalizer channel cell.') diff --git a/src/vmr_http/web/command/command.py b/src/vmr_http/web/command/command.py index 86bfc6a..a08cc6f 100644 --- a/src/vmr_http/web/command/command.py +++ b/src/vmr_http/web/command/command.py @@ -37,7 +37,7 @@ def shutdown_command(voicemeeter=Depends(get_voicemeeter_client)): @router.post('/restart') def restart_command(voicemeeter=Depends(get_voicemeeter_client)): - """Restart the Voicemeeter application.""" + """Restart the Voicemeeter engine.""" voicemeeter.command.restart() return {'status': 'Voicemeeter restarted'} diff --git a/src/vmr_http/web/eq.py b/src/vmr_http/web/eq.py index 80ac98e..1cc3a2e 100644 --- a/src/vmr_http/web/eq.py +++ b/src/vmr_http/web/eq.py @@ -77,7 +77,7 @@ def create_router(eq_kind: str) -> APIRouter: @router.patch('') @router.put('') def update_eq_params(index: int, params: EQParams, voicemeeter=Depends(get_voicemeeter_client)): - """Update one or more equalizer parameters for the specified index.""" + """Update one or more equalizer parameters for the specified channel index (strip or bus).""" eq = target_cls(voicemeeter, index).eq updated = {} for key, value in params.model_dump(exclude_unset=True).items(): @@ -87,12 +87,12 @@ def create_router(eq_kind: str) -> APIRouter: @router.get('/on') def get_eq_on(index: int, voicemeeter=Depends(get_voicemeeter_client)): - """Get the current equalizer on status for the specified index.""" + """Get the current equalizer on status for the specified channel index (strip or bus).""" return {'on': target_cls(voicemeeter, index).eq.on} @router.get('/ab') def get_eq_ab(index: int, voicemeeter=Depends(get_voicemeeter_client)): - """Get the current equalizer A/B status for the specified index.""" + """Get the current equalizer A/B status for the specified channel index (strip or bus).""" return {'ab': target_cls(voicemeeter, index).eq.ab} return router diff --git a/src/vmr_http/web/strip/gainlayer.py b/src/vmr_http/web/strip/gainlayer.py index 95db703..0a36d84 100644 --- a/src/vmr_http/web/strip/gainlayer.py +++ b/src/vmr_http/web/strip/gainlayer.py @@ -9,19 +9,19 @@ router = APIRouter() @router.patch('') @router.put('') -def update_strip_comp_params( +def update_strip_gainlayer_params( index: int, gainlayer_index: int, level: float = Body(..., ge=-60.0, le=12.0, embed=True), voicemeeter=Depends(get_voicemeeter_client), ): - """Update one or more compressor parameters for the specified strip index.""" + """Update one or more gain layer parameters for the specified strip index.""" gainlayer = voicemeeter.strip[index].gainlayer[gainlayer_index] gainlayer.gain = level - return {'gain_layer': {'level': gainlayer.gain}} + return {'gainlayer': {'level': gainlayer.gain}} @router.get('/level') -def get_strip_gain_layer_level(index: int, gainlayer_index: int, voicemeeter=Depends(get_voicemeeter_client)): +def get_strip_gainlayer_level(index: int, gainlayer_index: int, voicemeeter=Depends(get_voicemeeter_client)): """Get the current gain layer level for the specified strip index.""" - return {'gain_layer': {'level': voicemeeter.strip[index].gainlayer[gainlayer_index].gain}} + return {'gainlayer': {'level': voicemeeter.strip[index].gainlayer[gainlayer_index].gain}} diff --git a/uv.lock b/uv.lock index d3ded37..de006c8 100644 --- a/uv.lock +++ b/uv.lock @@ -1151,7 +1151,7 @@ wheels = [ [[package]] name = "vmr-http" -version = "0.8.1" +version = "0.8.2" source = { editable = "." } dependencies = [ { name = "fastapi" },