Spaces:
Sleeping
Sleeping
Kyosuke Ichikawa
commited on
refactor: remove unused auto_save method and all its calls (#7)
Browse files- Remove UserSession.auto_save() method from user_session.py
- Remove all auto_save() calls from app.py (10 locations)
- Update documentation to remove auto_save references
- Simplify session state management by removing meaningless save operations
The auto_save method was a no-op placeholder that provided no actual functionality.
All session state is now managed through BrowserState integration.
- .github/copilot-instructions.md +0 -6
- CLAUDE.md +0 -1
- yomitalk/app.py +0 -12
- yomitalk/user_session.py +0 -4
.github/copilot-instructions.md
CHANGED
|
@@ -21,12 +21,6 @@ from yomitalk.common import APIType
|
|
| 21 |
from yomitalk.components.audio_generator import initialize_global_voicevox_manager
|
| 22 |
```
|
| 23 |
|
| 24 |
-
### Session Management Pattern
|
| 25 |
-
```python
|
| 26 |
-
# Always work within UserSession context
|
| 27 |
-
user_session = UserSession(session_id)
|
| 28 |
-
user_session.auto_save() # After state changes
|
| 29 |
-
```
|
| 30 |
|
| 31 |
## Code Quality Standards
|
| 32 |
|
|
|
|
| 21 |
from yomitalk.components.audio_generator import initialize_global_voicevox_manager
|
| 22 |
```
|
| 23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
## Code Quality Standards
|
| 26 |
|
CLAUDE.md
CHANGED
|
@@ -157,7 +157,6 @@ Located in `tests/e2e/features/`, written in Gherkin syntax:
|
|
| 157 |
3. **Use Components**: Leverage existing TextProcessor, AudioGenerator, ContentExtractor
|
| 158 |
4. **Follow Templates**: Use PromptManager for any LLM interactions
|
| 159 |
5. **Handle Both APIs**: Ensure new features work with both OpenAI and Gemini
|
| 160 |
-
6. **Add Auto-Save**: If your feature modifies session state, add `user_session.auto_save()` calls
|
| 161 |
|
| 162 |
### When Debugging
|
| 163 |
1. **Check Session State**: User issues often relate to session-specific state
|
|
|
|
| 157 |
3. **Use Components**: Leverage existing TextProcessor, AudioGenerator, ContentExtractor
|
| 158 |
4. **Follow Templates**: Use PromptManager for any LLM interactions
|
| 159 |
5. **Handle Both APIs**: Ensure new features work with both OpenAI and Gemini
|
|
|
|
| 160 |
|
| 161 |
### When Debugging
|
| 162 |
1. **Check Session State**: User issues often relate to session-specific state
|
yomitalk/app.py
CHANGED
|
@@ -680,7 +680,6 @@ class PaperPodcastApp:
|
|
| 680 |
|
| 681 |
success = user_session.text_processor.set_openai_api_key(api_key)
|
| 682 |
logger.debug(f"OpenAI API key set for session {user_session.session_id}: {success}")
|
| 683 |
-
user_session.auto_save() # Save session state after API key change
|
| 684 |
return user_session
|
| 685 |
|
| 686 |
def set_gemini_api_key(self, api_key: str, user_session: UserSession):
|
|
@@ -691,7 +690,6 @@ class PaperPodcastApp:
|
|
| 691 |
|
| 692 |
success = user_session.text_processor.set_gemini_api_key(api_key)
|
| 693 |
logger.debug(f"Gemini API key set for session {user_session.session_id}: {success}")
|
| 694 |
-
user_session.auto_save() # Save session state after API key change
|
| 695 |
return user_session
|
| 696 |
|
| 697 |
def switch_llm_type(self, api_type: APIType, user_session: UserSession) -> UserSession:
|
|
@@ -701,7 +699,6 @@ class PaperPodcastApp:
|
|
| 701 |
logger.debug(f"LLM type switched to {api_type.display_name} for session {user_session.session_id}")
|
| 702 |
else:
|
| 703 |
logger.debug(f"{api_type.display_name} API key not set for session {user_session.session_id}")
|
| 704 |
-
user_session.auto_save() # Save session state after API type change
|
| 705 |
return user_session
|
| 706 |
|
| 707 |
def extract_url_text(
|
|
@@ -1758,7 +1755,6 @@ class PaperPodcastApp:
|
|
| 1758 |
"""
|
| 1759 |
success = user_session.text_processor.openai_model.set_model_name(model_name)
|
| 1760 |
logger.debug(f"OpenAI model set to {model_name}: {success}")
|
| 1761 |
-
user_session.auto_save() # Save session state after model name change
|
| 1762 |
return user_session
|
| 1763 |
|
| 1764 |
def set_gemini_model_name(self, model_name: str, user_session: UserSession) -> UserSession:
|
|
@@ -1770,7 +1766,6 @@ class PaperPodcastApp:
|
|
| 1770 |
"""
|
| 1771 |
success = user_session.text_processor.gemini_model.set_model_name(model_name)
|
| 1772 |
logger.debug(f"Gemini model set to {model_name}: {success}")
|
| 1773 |
-
user_session.auto_save() # Save session state after model name change
|
| 1774 |
return user_session
|
| 1775 |
|
| 1776 |
def set_openai_max_tokens(self, max_tokens: int, user_session: UserSession) -> UserSession:
|
|
@@ -1782,7 +1777,6 @@ class PaperPodcastApp:
|
|
| 1782 |
"""
|
| 1783 |
success = user_session.text_processor.openai_model.set_max_tokens(max_tokens)
|
| 1784 |
logger.debug(f"OpenAI max tokens set to {max_tokens}: {success}")
|
| 1785 |
-
user_session.auto_save() # Save session state after max tokens change
|
| 1786 |
return user_session
|
| 1787 |
|
| 1788 |
def set_gemini_max_tokens(self, max_tokens: int, user_session: UserSession) -> UserSession:
|
|
@@ -1794,7 +1788,6 @@ class PaperPodcastApp:
|
|
| 1794 |
"""
|
| 1795 |
success = user_session.text_processor.gemini_model.set_max_tokens(max_tokens)
|
| 1796 |
logger.debug(f"Gemini max tokens set to {max_tokens}: {success}")
|
| 1797 |
-
user_session.auto_save() # Save session state after max tokens change
|
| 1798 |
return user_session
|
| 1799 |
|
| 1800 |
def set_character_mapping(self, character1: str, character2: str, user_session: UserSession) -> UserSession:
|
|
@@ -1806,7 +1799,6 @@ class PaperPodcastApp:
|
|
| 1806 |
"""
|
| 1807 |
success = user_session.text_processor.set_character_mapping(character1, character2)
|
| 1808 |
logger.debug(f"Character mapping set: {character1}, {character2}: {success}")
|
| 1809 |
-
user_session.auto_save() # Save session state after character mapping change
|
| 1810 |
return user_session
|
| 1811 |
|
| 1812 |
def set_podcast_mode(self, mode: str, user_session: UserSession, browser_state: Dict[str, Any]) -> Tuple[UserSession, Dict[str, Any]]:
|
|
@@ -1835,8 +1827,6 @@ class PaperPodcastApp:
|
|
| 1835 |
else:
|
| 1836 |
logger.warning(f"Failed to set podcast mode to {mode}")
|
| 1837 |
|
| 1838 |
-
user_session.auto_save() # Save session state after podcast mode change
|
| 1839 |
-
|
| 1840 |
except ValueError as e:
|
| 1841 |
logger.error(f"Error setting podcast mode: {str(e)}")
|
| 1842 |
|
|
@@ -2002,8 +1992,6 @@ class PaperPodcastApp:
|
|
| 2002 |
else:
|
| 2003 |
logger.warning(f"Failed to set document type to {doc_type}")
|
| 2004 |
|
| 2005 |
-
user_session.auto_save() # Save session state after document type change
|
| 2006 |
-
|
| 2007 |
except ValueError as e:
|
| 2008 |
logger.error(f"Error setting document type: {str(e)}")
|
| 2009 |
|
|
|
|
| 680 |
|
| 681 |
success = user_session.text_processor.set_openai_api_key(api_key)
|
| 682 |
logger.debug(f"OpenAI API key set for session {user_session.session_id}: {success}")
|
|
|
|
| 683 |
return user_session
|
| 684 |
|
| 685 |
def set_gemini_api_key(self, api_key: str, user_session: UserSession):
|
|
|
|
| 690 |
|
| 691 |
success = user_session.text_processor.set_gemini_api_key(api_key)
|
| 692 |
logger.debug(f"Gemini API key set for session {user_session.session_id}: {success}")
|
|
|
|
| 693 |
return user_session
|
| 694 |
|
| 695 |
def switch_llm_type(self, api_type: APIType, user_session: UserSession) -> UserSession:
|
|
|
|
| 699 |
logger.debug(f"LLM type switched to {api_type.display_name} for session {user_session.session_id}")
|
| 700 |
else:
|
| 701 |
logger.debug(f"{api_type.display_name} API key not set for session {user_session.session_id}")
|
|
|
|
| 702 |
return user_session
|
| 703 |
|
| 704 |
def extract_url_text(
|
|
|
|
| 1755 |
"""
|
| 1756 |
success = user_session.text_processor.openai_model.set_model_name(model_name)
|
| 1757 |
logger.debug(f"OpenAI model set to {model_name}: {success}")
|
|
|
|
| 1758 |
return user_session
|
| 1759 |
|
| 1760 |
def set_gemini_model_name(self, model_name: str, user_session: UserSession) -> UserSession:
|
|
|
|
| 1766 |
"""
|
| 1767 |
success = user_session.text_processor.gemini_model.set_model_name(model_name)
|
| 1768 |
logger.debug(f"Gemini model set to {model_name}: {success}")
|
|
|
|
| 1769 |
return user_session
|
| 1770 |
|
| 1771 |
def set_openai_max_tokens(self, max_tokens: int, user_session: UserSession) -> UserSession:
|
|
|
|
| 1777 |
"""
|
| 1778 |
success = user_session.text_processor.openai_model.set_max_tokens(max_tokens)
|
| 1779 |
logger.debug(f"OpenAI max tokens set to {max_tokens}: {success}")
|
|
|
|
| 1780 |
return user_session
|
| 1781 |
|
| 1782 |
def set_gemini_max_tokens(self, max_tokens: int, user_session: UserSession) -> UserSession:
|
|
|
|
| 1788 |
"""
|
| 1789 |
success = user_session.text_processor.gemini_model.set_max_tokens(max_tokens)
|
| 1790 |
logger.debug(f"Gemini max tokens set to {max_tokens}: {success}")
|
|
|
|
| 1791 |
return user_session
|
| 1792 |
|
| 1793 |
def set_character_mapping(self, character1: str, character2: str, user_session: UserSession) -> UserSession:
|
|
|
|
| 1799 |
"""
|
| 1800 |
success = user_session.text_processor.set_character_mapping(character1, character2)
|
| 1801 |
logger.debug(f"Character mapping set: {character1}, {character2}: {success}")
|
|
|
|
| 1802 |
return user_session
|
| 1803 |
|
| 1804 |
def set_podcast_mode(self, mode: str, user_session: UserSession, browser_state: Dict[str, Any]) -> Tuple[UserSession, Dict[str, Any]]:
|
|
|
|
| 1827 |
else:
|
| 1828 |
logger.warning(f"Failed to set podcast mode to {mode}")
|
| 1829 |
|
|
|
|
|
|
|
| 1830 |
except ValueError as e:
|
| 1831 |
logger.error(f"Error setting podcast mode: {str(e)}")
|
| 1832 |
|
|
|
|
| 1992 |
else:
|
| 1993 |
logger.warning(f"Failed to set document type to {doc_type}")
|
| 1994 |
|
|
|
|
|
|
|
| 1995 |
except ValueError as e:
|
| 1996 |
logger.error(f"Error setting document type: {str(e)}")
|
| 1997 |
|
yomitalk/user_session.py
CHANGED
|
@@ -299,7 +299,3 @@ class UserSession:
|
|
| 299 |
"last_update": None,
|
| 300 |
"estimated_total_parts": 1,
|
| 301 |
}
|
| 302 |
-
|
| 303 |
-
def auto_save(self) -> None:
|
| 304 |
-
"""Temporary compatibility method for tests."""
|
| 305 |
-
pass
|
|
|
|
| 299 |
"last_update": None,
|
| 300 |
"estimated_total_parts": 1,
|
| 301 |
}
|
|
|
|
|
|
|
|
|
|
|
|