|
17 | 17 | class BalatroInstance: |
18 | 18 | """Context manager for a single Balatro instance.""" |
19 | 19 |
|
20 | | - def __init__(self, config: Config | None = None, **overrides) -> None: |
| 20 | + def __init__( |
| 21 | + self, config: Config | None = None, session_id: str | None = None, **overrides |
| 22 | + ) -> None: |
21 | 23 | """Initialize a Balatro instance. |
22 | 24 |
|
23 | 25 | Args: |
24 | 26 | config: Base configuration. If None, uses Config from environment. |
| 27 | + session_id: Optional session ID for log directory. If None, generated at start(). |
25 | 28 | **overrides: Override specific config fields (e.g., port=12347). |
26 | 29 | """ |
27 | 30 | base = config or Config.from_env() |
28 | 31 | self._config = replace(base, **overrides) if overrides else base |
29 | 32 | self._process: subprocess.Popen | None = None |
30 | 33 | self._log_path: Path | None = None |
| 34 | + self._session_id = session_id |
31 | 35 |
|
32 | 36 | @property |
33 | 37 | def port(self) -> int: |
@@ -73,8 +77,8 @@ async def start(self) -> None: |
73 | 77 | if self._process is not None: |
74 | 78 | raise RuntimeError("Instance already started") |
75 | 79 |
|
76 | | - # Create session directory |
77 | | - timestamp = datetime.now().strftime("%Y-%m-%dT%H-%M-%S") |
| 80 | + # Create session directory (use provided session_id or generate one) |
| 81 | + timestamp = self._session_id or datetime.now().strftime("%Y-%m-%dT%H-%M-%S") |
78 | 82 | session_dir = Path(self._config.logs_path) / timestamp |
79 | 83 | session_dir.mkdir(parents=True, exist_ok=True) |
80 | 84 | self._log_path = session_dir / f"{self._config.port}.log" |
|
0 commit comments