fix: correct indentation errors in services/*.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 4.6 committed 2026-03-18 04:22:17 +00:00
1 parent d1422d6f64
commit 6298f83abd
3 files changed
+14 -14

No files matched your search

+7 -7
View File
@@ -34,7 +34,7 @@ def _classify_card_type(type_line: str) -> str:
return "Other"
def _get_deck_or_404(deck_id: int):
def _get_deck_or_404(deck_id: int):
conn = _get_db_conn()
row = conn.execute("SELECT * FROM decks WHERE id = ?", (deck_id,)).fetchone()
if not row:
@@ -47,7 +47,7 @@ def _classify_card_type(type_line: str) -> str:
return d
def _compute_deck_analysis(deck_id: int) -> dict:
def _compute_deck_analysis(deck_id: int) -> dict:
conn = _get_db_conn()
rows = conn.execute("""
SELECT dc.id, dc.scryfall_id, dc.card_name, dc.quantity, dc.is_commander, dc.role_tag,
@@ -96,21 +96,21 @@ def _classify_card_type(type_line: str) -> str:
}
def _check_ratio_limit(deck_id: int, card_type: str, count_to_add: int = 1) -> bool:
def _check_ratio_limit(deck_id: int, card_type: str, count_to_add: int = 1) -> bool:
analysis = _compute_deck_analysis(deck_id)
current = analysis["counts_by_type"].get(card_type, 0)
target_max = _TYPE_TARGETS.get(card_type, [0, 9999])[1]
return (current + count_to_add) <= target_max
def _to_edhrec_slug(name: str) -> str:
def _to_edhrec_slug(name: str) -> str:
slug = name.lower()
slug = re.sub(r"[',.]" , "", slug)
slug = re.sub(r"[^a-z0-9]+", "-", slug)
return slug.strip("-")
def parse_dck_file(deck_path: str) -> dict:
def parse_dck_file(deck_path: str) -> dict:
"""Parse a Forge .dck file into {name, commanders, mainboard, colorIdentity, totalCards}."""
path = Path(deck_path)
if not path.exists():
@@ -153,7 +153,7 @@ def _classify_card_type(type_line: str) -> str:
return {"name": name, "commander": commander_name, "commanders": commanders, "mainboard": mainboard, "colorIdentity": [], "totalCards": total}
def _save_profile_to_dck(profile: dict) -> Path:
def _save_profile_to_dck(profile: dict) -> Path:
lines = ["[metadata]", f"Name={profile.get('name', 'Imported Deck')}", "", "[Commander]"]
for name, qty in profile.get("commanders", {}).items():
lines.append(f"{qty} {name}")
@@ -174,7 +174,7 @@ def _classify_card_type(type_line: str) -> str:
return out_path
def _load_deck_cards_by_name(deck_name: str) -> list:
def _load_deck_cards_by_name(deck_name: str) -> list:
"""Load cards from a deck by name, returning list of card dicts."""
conn = _get_db_conn()
deck_row = conn.execute("SELECT id FROM decks WHERE name = ?", (deck_name,)).fetchone()
+3 -3
View File
@@ -38,7 +38,7 @@ def get_java17() -> str:
return _JAVA17_PATH
def build_java_command(
def build_java_command(
decks: list, num_games: int, threads: int, seed: Optional[int],
clock: int, output_path: str, use_learned_policy: bool = False,
policy_server: str = "http://localhost:8080", policy_style: str = "midrange",
@@ -70,7 +70,7 @@ def get_java17() -> str:
return cmd
def _run_process_blocking(state: BatchState, cmd: list):
def _run_process_blocking(state: BatchState, cmd: list):
"""Run Forge subprocess, parse progress, generate deck reports."""
log.info(f"Running: {' '.join(cmd)}")
state.started_at = datetime.datetime.now().isoformat()
@@ -127,7 +127,7 @@ def get_java17() -> str:
state.ended_at = datetime.datetime.now().isoformat()
async def run_batch_subprocess(
async def run_batch_subprocess(
state: BatchState, decks: list, num_games: int, threads: int,
seed: Optional[int] = None, clock: int = 6000, output_path: str = "results",
use_learned_policy: bool = False, **kwargs,
+4 -4
View File
@@ -95,7 +95,7 @@ class _ScryfallCache:
return deleted
_scryfall_cache = _ScryfallCache()
_scryfall_cache = _ScryfallCache()
_scryfall_lock = threading.Lock()
_scryfall_last_call = 0.0
@@ -110,7 +110,7 @@ def _scryfall_rate_limit():
_scryfall_last_call = time.monotonic()
def _fetch_scryfall_api(name: str, set_code: str = "", collector_number: str = "") -> dict:
def _fetch_scryfall_api(name: str, set_code: str = "", collector_number: str = "") -> dict:
from urllib.parse import quote
cached = _scryfall_cache.get(name, set_code, collector_number)
if cached is not None:
@@ -143,7 +143,7 @@ def _scryfall_rate_limit():
return card_data
def _enrich_from_scryfall(name: str, set_code: str = "", collector_number: str = "") -> dict:
def _enrich_from_scryfall(name: str, set_code: str = "", collector_number: str = "") -> dict:
card_data = _fetch_scryfall_api(name, set_code, collector_number)
if not card_data or "_error" in card_data:
return card_data or {}
@@ -199,7 +199,7 @@ def _scryfall_rate_limit():
}
def _scryfall_fuzzy_lookup(name: str) -> Optional[dict]:
def _scryfall_fuzzy_lookup(name: str) -> Optional[dict]:
"""Fuzzy-search Scryfall for a card name. Returns raw Scryfall JSON dict, or None on failure."""
from urllib.parse import quote
_scryfall_rate_limit()