Auto merge dev → main (#1225)

* fix BOT.data_parser import in render_recap.py

render_recap.py runs as a subprocess (Path(__file__).parent.parent on
sys.path) and used `from BOT.data_parser import ...`. After the SHARED
move, data_parser is no longer in the BOT package. Add BOTS/SHARED to
sys.path and switch to the absolute `from data_parser import ...`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* centralize SHARED sys.path bootstrap in BOT/__init__.py

Drop per-file `sys.path.insert(SHARED)` bandaids from BOT/scoreboard.py,
gob.py, utils.py, and game_api.py. The bootstrap now happens exactly
once when the BOT package is imported (via BOT/__init__.py), which is
implicit for any `from BOT.X import …` / `import BOT.X` and any
`python -m BOT.x` invocation.

`SHARED_DIR` is exposed as a public name on the BOT package; siblings
import it via `from . import SHARED_DIR` for building asset paths
(MAPS, ICONS, FONTS, vromfs) instead of recomputing the location.

render_recap.py is the one subprocess entry point that runs as
__main__, so it keeps a minimal bootstrap: add SREBOT to sys.path
then `import BOT` to fire the package init once.

Also move pyrightconfig.json to the BOTS monorepo root so pyright
resolves data_parser and third-party imports regardless of which
subproject the editor opens from.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
NotSoToothless
2026-05-13 23:42:47 -07:00
committed by GitHub
parent ff420e131f
commit 39ef90b3fd
7 changed files with 35 additions and 56 deletions
+5 -9
View File
@@ -33,14 +33,10 @@ import numpy as np
import pygob
import zstandard as zstd
from . import SHARED_DIR
from .utils import REPLAYS_DIR
from PIL import Image, ImageDraw, ImageFilter, ImageFont
# Make SHARED (sibling of SREBOT under BOTS/) importable
_SHARED_DIR = Path(__file__).resolve().parents[2] / "SHARED"
if str(_SHARED_DIR) not in sys.path:
sys.path.insert(0, str(_SHARED_DIR))
try:
from data_parser import (
LangTableReader as _LangTableReader,
@@ -114,9 +110,9 @@ N_WORKERS = min(8, os.cpu_count() or 4) # Thread pool size for parallel frame
WIN_COLOR = (0, 200, 0) # green
LOSE_COLOR = (220, 30, 30) # red
MINIMAPS_DIR = _SHARED_DIR / "MAPS" / "MINIMAPS"
LEVELS_DIR = _SHARED_DIR / "MAPS" / "LEVELS"
ICONS_DIR = _SHARED_DIR / "ICONS"
MINIMAPS_DIR = SHARED_DIR / "MAPS" / "MINIMAPS"
LEVELS_DIR = SHARED_DIR / "MAPS" / "LEVELS"
ICONS_DIR = SHARED_DIR / "ICONS"
_tl = threading.local()
@@ -221,7 +217,7 @@ def _get_unit_tags(internal_name: str) -> list[str] | None:
return UnitTags.get()._get_tags(internal_name)
MINIS_DIR = _SHARED_DIR / "ICONS" / "MINIS"
MINIS_DIR = SHARED_DIR / "ICONS" / "MINIS"
_AIRCRAFT_TAGS = {"air", "aircraft", "helicopter"}