diff --git a/requirements.txt b/requirements.txt index 04a8ee8..e36d677 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ bandit>=1.7.0 codespell>=2.2.0 coverage>=7.4.0 howlongtobeatpy>=1.0 +mcp>=1.9 mypy>=1.8.0 pre-commit>=3.6.0 pylint>=3.0.0 diff --git a/scripts/setup_mcp.sh b/scripts/setup_mcp.sh index d487fb1..b0b8a68 100755 --- a/scripts/setup_mcp.sh +++ b/scripts/setup_mcp.sh @@ -15,8 +15,10 @@ set -euo pipefail -readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -readonly REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +readonly SCRIPT_DIR +REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +readonly REPO_DIR readonly VENV_DIR="${HOME}/.venvs/steam-backlog-mcp" main() { diff --git a/steam_backlog_enforcer/_stats.py b/steam_backlog_enforcer/_stats.py index a7a10f1..93c7a67 100644 --- a/steam_backlog_enforcer/_stats.py +++ b/steam_backlog_enforcer/_stats.py @@ -35,7 +35,11 @@ from steam_backlog_enforcer.protondb import ( ProtonDBRating, fetch_protondb_ratings, ) -from steam_backlog_enforcer.steam_api import GameInfo, SteamAPIClient +from steam_backlog_enforcer.steam_api import ( + GameInfo, + SteamAPIClient, + SteamAPIError, +) if TYPE_CHECKING: from steam_backlog_enforcer.config import Config, State @@ -276,7 +280,8 @@ def _print_pace_scenario(state: State, remaining: int, games_done: int) -> None: rate = games_done / days_elapsed _echo(f" Started: {started.strftime('%Y-%m-%d')}") _echo( - f" Finished: {games_done} games in {days_elapsed} days (since enforcement start)" + f" Finished: {games_done} games in {days_elapsed} days " + "(since enforcement start)" ) _echo( f" Pace: {rate:.4f} games/day (1 game every {1 / rate:.1f} days)" @@ -357,8 +362,6 @@ def _refresh_recently_played_completions( except OSError: return games - from steam_backlog_enforcer.steam_api import SteamAPIError - try: client = SteamAPIClient(config.steam_api_key, config.steam_id) owned_raw = client.get_owned_games() diff --git a/steam_backlog_enforcer/_web_dataset.py b/steam_backlog_enforcer/_web_dataset.py index 6741d0d..dc91fe3 100644 --- a/steam_backlog_enforcer/_web_dataset.py +++ b/steam_backlog_enforcer/_web_dataset.py @@ -246,7 +246,7 @@ def count_complete_since_start(games: list[GameInfo], started_at: str) -> int: Games with no achievement timestamp data are excluded — their completion date is unknown, and they were most likely finished before Steam began recording unlock timestamps (i.e. before the enforcement period). - Returns 0 when started_at is empty or unparseable. + Returns 0 when started_at is empty or unparsable. """ if not started_at: return 0 diff --git a/steam_backlog_enforcer/docs/pick_game_manually_design.md b/steam_backlog_enforcer/docs/pick_game_manually_design.md index ceef6cb..cd7fd8a 100644 --- a/steam_backlog_enforcer/docs/pick_game_manually_design.md +++ b/steam_backlog_enforcer/docs/pick_game_manually_design.md @@ -3,11 +3,11 @@ Picking a game should work like this: 1. user invokes script with specific flag for picking a game manually 2. user provides game steam id (in testing use 489830) 3. Script shows what game it believes this id means (in this case it should show The Elder Scrolls V: Skyrim Special Edition) -4. user confirms that this is the game they want to pick and confirm that they will not be able to use the script for up to 2 weeks or until the game is completed (100% achievments) +4. user confirms that this is the game they want to pick and confirm that they will not be able to use the script for up to 2 weeks or until the game is completed (100% achievements) When user picks a game manually this should override the current pick if it exists -After picking manually backlog enforcer should make a note of that and very aggresively disallow user to do anything else -for a period of 2 weeks or untill user completes a given game +After picking manually backlog enforcer should make a note of that and very aggressively disallow user to do anything else +for a period of 2 weeks or until user completes a given game Logic should be as follows: 1. backlog checks if a user picked game manually a. if not -> continue as before @@ -16,4 +16,4 @@ Logic should be as follows: 3. if NOT show info that user picked a specific game manually and they have to finish it before using ANY OTHER functionality of backlog enforcer test the functionality with 489830 (The Elder Scrolls V: Skyrim Special Edition) -as always first write full functionality confirm that it works alone and with the user and only AFTER that write tests and coverage and fix issues \ No newline at end of file +as always first write full functionality confirm that it works alone and with the user and only AFTER that write tests and coverage and fix issues