From 402a877726b369093e968cf1635af2ffb9f86710 Mon Sep 17 00:00:00 2001 From: Ryan Malloy Date: Wed, 4 Mar 2026 20:11:23 -0700 Subject: [PATCH] =?UTF-8?q?Rename=20module=20src/tts=5Fmcp=20=E2=86=92=20s?= =?UTF-8?q?rc/mcspeak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Standard src-layout: package name matches import name. All internal imports are relative so no code changes needed beyond pyproject.toml. Also fixes 4 pre-existing ruff line-length violations. --- pyproject.toml | 4 ++-- src/{tts_mcp => mcspeak}/__init__.py | 0 src/{tts_mcp => mcspeak}/__main__.py | 0 src/{tts_mcp => mcspeak}/audio.py | 0 src/{tts_mcp => mcspeak}/engines/__init__.py | 0 src/{tts_mcp => mcspeak}/engines/base.py | 0 src/{tts_mcp => mcspeak}/engines/kokoro.py | 0 src/{tts_mcp => mcspeak}/engines/orpheus.py | 0 src/{tts_mcp => mcspeak}/engines/piper.py | 0 src/{tts_mcp => mcspeak}/media_duck.py | 0 src/{tts_mcp => mcspeak}/queue.py | 0 src/{tts_mcp => mcspeak}/server.py | 10 +++++++--- src/{tts_mcp => mcspeak}/settings.py | 0 src/{tts_mcp => mcspeak}/tones.py | 0 src/{tts_mcp => mcspeak}/voice_identity.py | 5 ++++- 15 files changed, 13 insertions(+), 6 deletions(-) rename src/{tts_mcp => mcspeak}/__init__.py (100%) rename src/{tts_mcp => mcspeak}/__main__.py (100%) rename src/{tts_mcp => mcspeak}/audio.py (100%) rename src/{tts_mcp => mcspeak}/engines/__init__.py (100%) rename src/{tts_mcp => mcspeak}/engines/base.py (100%) rename src/{tts_mcp => mcspeak}/engines/kokoro.py (100%) rename src/{tts_mcp => mcspeak}/engines/orpheus.py (100%) rename src/{tts_mcp => mcspeak}/engines/piper.py (100%) rename src/{tts_mcp => mcspeak}/media_duck.py (100%) rename src/{tts_mcp => mcspeak}/queue.py (100%) rename src/{tts_mcp => mcspeak}/server.py (98%) rename src/{tts_mcp => mcspeak}/settings.py (100%) rename src/{tts_mcp => mcspeak}/tones.py (100%) rename src/{tts_mcp => mcspeak}/voice_identity.py (98%) diff --git a/pyproject.toml b/pyproject.toml index 4a611df..dd9762d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,10 +23,10 @@ dependencies = [ ] [project.scripts] -mcspeak = "tts_mcp.__main__:main" +mcspeak = "mcspeak.__main__:main" [tool.hatch.build.targets.wheel] -packages = ["src/tts_mcp"] +packages = ["src/mcspeak"] [tool.ruff] line-length = 100 diff --git a/src/tts_mcp/__init__.py b/src/mcspeak/__init__.py similarity index 100% rename from src/tts_mcp/__init__.py rename to src/mcspeak/__init__.py diff --git a/src/tts_mcp/__main__.py b/src/mcspeak/__main__.py similarity index 100% rename from src/tts_mcp/__main__.py rename to src/mcspeak/__main__.py diff --git a/src/tts_mcp/audio.py b/src/mcspeak/audio.py similarity index 100% rename from src/tts_mcp/audio.py rename to src/mcspeak/audio.py diff --git a/src/tts_mcp/engines/__init__.py b/src/mcspeak/engines/__init__.py similarity index 100% rename from src/tts_mcp/engines/__init__.py rename to src/mcspeak/engines/__init__.py diff --git a/src/tts_mcp/engines/base.py b/src/mcspeak/engines/base.py similarity index 100% rename from src/tts_mcp/engines/base.py rename to src/mcspeak/engines/base.py diff --git a/src/tts_mcp/engines/kokoro.py b/src/mcspeak/engines/kokoro.py similarity index 100% rename from src/tts_mcp/engines/kokoro.py rename to src/mcspeak/engines/kokoro.py diff --git a/src/tts_mcp/engines/orpheus.py b/src/mcspeak/engines/orpheus.py similarity index 100% rename from src/tts_mcp/engines/orpheus.py rename to src/mcspeak/engines/orpheus.py diff --git a/src/tts_mcp/engines/piper.py b/src/mcspeak/engines/piper.py similarity index 100% rename from src/tts_mcp/engines/piper.py rename to src/mcspeak/engines/piper.py diff --git a/src/tts_mcp/media_duck.py b/src/mcspeak/media_duck.py similarity index 100% rename from src/tts_mcp/media_duck.py rename to src/mcspeak/media_duck.py diff --git a/src/tts_mcp/queue.py b/src/mcspeak/queue.py similarity index 100% rename from src/tts_mcp/queue.py rename to src/mcspeak/queue.py diff --git a/src/tts_mcp/server.py b/src/mcspeak/server.py similarity index 98% rename from src/tts_mcp/server.py rename to src/mcspeak/server.py index 654dd7e..a0c43cd 100644 --- a/src/tts_mcp/server.py +++ b/src/mcspeak/server.py @@ -103,7 +103,8 @@ async def app_lifespan(server: FastMCP): file=sys.stderr, ) print( - f" Shutdown budget: 3s handler drain + {settings.shutdown_timeout:.0f}s queue drain + 5s safety", + f" Shutdown budget: 3s handler drain + " + f"{settings.shutdown_timeout:.0f}s queue drain + 5s safety", file=sys.stderr, ) @@ -351,10 +352,13 @@ async def _speak_chunked( if not enqueue_result.get("queued"): # Queue full mid-message — already-enqueued chunks play through if all_speech_ids: - await ctx.info(f"Queue full at chunk {i + 1}/{n_chunks}, waiting for enqueued chunks...") + msg = f"Queue full at chunk {i + 1}/{n_chunks}, waiting for enqueued chunks..." + await ctx.info(msg) elapsed = time.time() - first_enqueue_time if first_enqueue_time else 0 remaining = max(total_duration - elapsed, 0.1) - outcome = await _await_with_progress(queue, all_speech_ids[-1], remaining, ctx, 35) + outcome = await _await_with_progress( + queue, all_speech_ids[-1], remaining, ctx, 35 + ) outcome["chunks_enqueued"] = len(all_speech_ids) outcome["chunks_total"] = n_chunks return outcome diff --git a/src/tts_mcp/settings.py b/src/mcspeak/settings.py similarity index 100% rename from src/tts_mcp/settings.py rename to src/mcspeak/settings.py diff --git a/src/tts_mcp/tones.py b/src/mcspeak/tones.py similarity index 100% rename from src/tts_mcp/tones.py rename to src/mcspeak/tones.py diff --git a/src/tts_mcp/voice_identity.py b/src/mcspeak/voice_identity.py similarity index 98% rename from src/tts_mcp/voice_identity.py rename to src/mcspeak/voice_identity.py index b7a2c67..f35f8c8 100644 --- a/src/tts_mcp/voice_identity.py +++ b/src/mcspeak/voice_identity.py @@ -112,7 +112,10 @@ class VoiceIdentityCache: data = json.loads(self._persist_path.read_text()) self._assignments = data.get("assignments", {}) count = sum(len(v) for v in self._assignments.values()) - print(f" Voice identity: loaded {count} assignments from {self._persist_path}", file=sys.stderr) + print( + f" Voice identity: loaded {count} assignments from {self._persist_path}", + file=sys.stderr, + ) except Exception as exc: print(f" Voice identity: failed to load {self._persist_path} ({exc})", file=sys.stderr)