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:
+12
-6
@@ -1,12 +1,18 @@
|
||||
"""SREBOT bot package.
|
||||
|
||||
Bootstraps the sibling BOTS/SHARED directory onto sys.path so that
|
||||
`from data_parser import ...` (and other SHARED-only modules) resolve
|
||||
regardless of which submodule gets imported first.
|
||||
Single source of truth for the BOTS/SHARED bootstrap. Importing this
|
||||
package (which happens automatically for any `from BOT.X import ...`
|
||||
or `import BOT.X`) puts the sibling `BOTS/SHARED/` directory on
|
||||
sys.path, so submodules can simply `from data_parser import ...` etc.
|
||||
|
||||
`SHARED_DIR` is also re-exported so consumers can compute asset paths
|
||||
(MAPS, ICONS, FONTS, vromfs) without re-deriving the location.
|
||||
"""
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
_SHARED_DIR = Path(__file__).resolve().parents[2] / "SHARED"
|
||||
if str(_SHARED_DIR) not in sys.path:
|
||||
sys.path.insert(0, str(_SHARED_DIR))
|
||||
SHARED_DIR: Path = Path(__file__).resolve().parents[2] / "SHARED"
|
||||
if str(SHARED_DIR) not in sys.path:
|
||||
sys.path.insert(0, str(SHARED_DIR))
|
||||
|
||||
__all__ = ["SHARED_DIR"]
|
||||
|
||||
Reference in New Issue
Block a user