From 0db092cb8a15eebf328dbc2ca78000c6153feb52 Mon Sep 17 00:00:00 2001 From: vegu-ai-tools <152010387+vegu-ai-tools@users.noreply.github.com> Date: Tue, 18 Nov 2025 03:10:27 +0200 Subject: [PATCH] linting --- src/talemate/agents/creator/__init__.py | 6 ++--- src/talemate/load/__init__.py | 8 +++--- src/talemate/load/character_card.py | 20 +++++++------- src/talemate/scene/episodes.py | 26 ++++++++++++------- .../server/world_state_manager/__init__.py | 10 +++++-- .../server/world_state_manager/episodes.py | 3 +-- 6 files changed, 43 insertions(+), 30 deletions(-) diff --git a/src/talemate/agents/creator/__init__.py b/src/talemate/agents/creator/__init__.py index fc3cd0a2..16d48b53 100644 --- a/src/talemate/agents/creator/__init__.py +++ b/src/talemate/agents/creator/__init__.py @@ -55,14 +55,14 @@ class CreatorAgent( "text": text, }, ) - + # parse ... tags if "" in response and "" in response: title = response.split("")[1].split("")[0].strip() elif "" in response: title = response.split("<TITLE>")[1].strip() - + if not title: return response.strip() - + return title diff --git a/src/talemate/load/__init__.py b/src/talemate/load/__init__.py index b7a504c5..00d30992 100644 --- a/src/talemate/load/__init__.py +++ b/src/talemate/load/__init__.py @@ -61,6 +61,7 @@ __all__ = [ log = structlog.get_logger("talemate.load") + class SceneInitialization(pydantic.BaseModel): project_name: str | None = None content_classification: str | None = None @@ -84,7 +85,7 @@ class SceneInitialization(pydantic.BaseModel): async def _initialize_scene_intro(scene: Scene, scene_data: dict, empty: bool): """ Initialize scene intro and title for new scenes. - + Sets intro from scene_data if provided, otherwise generates from instructions. Also generates a title if the scene is empty and doesn't have one. """ @@ -112,9 +113,6 @@ async def _initialize_scene_intro(scene: Scene, scene_data: dict, empty: bool): log.error("generate intro during load", error=e) - - - def scene_stub(scene_path: str, scene_data: dict | None = None) -> Scene: """ Create a minimal Scene object stub from a scene file path. @@ -338,7 +336,7 @@ async def load_scene_from_data( available_characters=list(scene.character_data.keys()), ) continue - + character = scene.character_data[character_name] if not character.is_player: diff --git a/src/talemate/load/character_card.py b/src/talemate/load/character_card.py index d07dae62..ee8d13f2 100644 --- a/src/talemate/load/character_card.py +++ b/src/talemate/load/character_card.py @@ -627,12 +627,12 @@ def _parse_characters_from_greeting_text(greeting_text: str, scene) -> list[str] pattern = r"([^:\n]+):" matches = re.findall(pattern, greeting_text) potential_names = [name.strip() for name in matches if name.strip()] - + character_names = [] - + npc_characters = list(scene.get_npc_characters()) all_characters = list(scene.all_characters) - + # Validate matches against actual characters in the scene for name in potential_names: for character in all_characters: @@ -640,7 +640,7 @@ def _parse_characters_from_greeting_text(greeting_text: str, scene) -> list[str] if character.name not in character_names: character_names.append(character.name) break - + # If no characters detected, look for partial name matches in the text if not character_names: for character in npc_characters: @@ -648,12 +648,12 @@ def _parse_characters_from_greeting_text(greeting_text: str, scene) -> list[str] if character.name.lower() in greeting_text.lower(): if character.name not in character_names: character_names.append(character.name) - + # If still no characters detected, activate up to 2 NPCs (order doesn't matter) if not character_names: for character in npc_characters[:2]: character_names.append(character.name) - + return character_names @@ -665,7 +665,7 @@ async def _add_episode( generate_title: bool = True, ) -> None: """Add an episode with optional AI-generated title. - + Args: scene: The scene to add the episode to greeting: The episode intro text @@ -675,7 +675,7 @@ async def _add_episode( """ title = None if generate_title: - loading_status(f"Generating title for episode...") + loading_status("Generating title for episode...") try: title = await creator.generate_title(greeting) # Strip whitespace and ensure it's not empty @@ -916,7 +916,9 @@ async def load_scene_from_character_card( # Parse greeting text for characters speaking (format: name:) # and activate them if they exist in the scene - speaking_characters = _parse_characters_from_greeting_text(original_greeting_text, scene) + speaking_characters = _parse_characters_from_greeting_text( + original_greeting_text, scene + ) for char_name in speaking_characters: existing_character = scene.get_character(char_name) if existing_character: diff --git a/src/talemate/scene/episodes.py b/src/talemate/scene/episodes.py index 0c2aa8e3..5744e45d 100644 --- a/src/talemate/scene/episodes.py +++ b/src/talemate/scene/episodes.py @@ -6,7 +6,6 @@ to create new scenes from predefined introductions. """ import json -import os from pathlib import Path from typing import TYPE_CHECKING @@ -78,26 +77,30 @@ class EpisodesManager: """Get all episodes.""" return self._load_episodes() - def add_episode(self, intro: str, title: str | None = None, description: str | None = None) -> Episode | None: + def add_episode( + self, intro: str, title: str | None = None, description: str | None = None + ) -> Episode | None: """Add a new episode if it doesn't already exist. - + Checks for duplicates by comparing the intro text (normalized by stripping whitespace). Returns the episode if added, or None if a duplicate was found. """ episodes = self._load_episodes() - + # Normalize intro text for comparison (strip whitespace) normalized_intro = intro.strip() - + # Check if an episode with the same intro already exists for existing_episode in episodes: if existing_episode.intro.strip() == normalized_intro: log.debug( "Episode with same intro already exists, skipping", - intro_preview=normalized_intro[:50] + "..." if len(normalized_intro) > 50 else normalized_intro, + intro_preview=normalized_intro[:50] + "..." + if len(normalized_intro) > 50 + else normalized_intro, ) return None - + episode = Episode(intro=intro, title=title, description=description) episodes.append(episode) self._save_episodes(episodes) @@ -112,7 +115,13 @@ class EpisodesManager: return True return False - def update_episode(self, index: int, intro: str | None = None, title: str | None = None, description: str | None = None) -> bool: + def update_episode( + self, + index: int, + intro: str | None = None, + title: str | None = None, + description: str | None = None, + ) -> bool: """Update an episode by index. Returns True if successful.""" episodes = self._load_episodes() if 0 <= index < len(episodes): @@ -133,4 +142,3 @@ class EpisodesManager: if 0 <= index < len(episodes): return episodes[index] return None - diff --git a/src/talemate/server/world_state_manager/__init__.py b/src/talemate/server/world_state_manager/__init__.py index b6779f4e..e93f641d 100644 --- a/src/talemate/server/world_state_manager/__init__.py +++ b/src/talemate/server/world_state_manager/__init__.py @@ -515,7 +515,10 @@ class WorldStateManagerPlugin( await self._ensure_shared_context_exists() shared_count = 0 - for entry_id, entry in self.scene.world_state.manual_context_for_world().items(): + for ( + entry_id, + entry, + ) in self.scene.world_state.manual_context_for_world().items(): if not entry.shared: await self.world_state_manager.set_world_entry_shared(entry_id, True) shared_count += 1 @@ -532,7 +535,10 @@ class WorldStateManagerPlugin( async def handle_unshare_all_world_entries(self, data: dict): """Unshare all world entries in the scene.""" unshared_count = 0 - for entry_id, entry in self.scene.world_state.manual_context_for_world().items(): + for ( + entry_id, + entry, + ) in self.scene.world_state.manual_context_for_world().items(): if entry.shared: await self.world_state_manager.set_world_entry_shared(entry_id, False) unshared_count += 1 diff --git a/src/talemate/server/world_state_manager/episodes.py b/src/talemate/server/world_state_manager/episodes.py index a9ab8614..fc13b209 100644 --- a/src/talemate/server/world_state_manager/episodes.py +++ b/src/talemate/server/world_state_manager/episodes.py @@ -62,7 +62,7 @@ class EpisodesMixin: async def handle_add_episode(self, data): """Add a new episode.""" payload = AddEpisodePayload(**data) - episode = self.scene.episodes.add_episode( + self.scene.episodes.add_episode( intro=payload.intro, title=payload.title, description=payload.description, @@ -135,4 +135,3 @@ class EpisodesMixin: await self.signal_operation_done() self.scene.emit_status() -