From 02d4b6e0fbad6f28fa86a572fabf5ffab99d5aa5 Mon Sep 17 00:00:00 2001 From: rasper Date: Thu, 5 Mar 2026 21:09:59 +0000 Subject: [PATCH 1/3] feat: placement strategy safety check --- src/ares/managers/utils/placement_strategy.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ares/managers/utils/placement_strategy.py b/src/ares/managers/utils/placement_strategy.py index 3cbf66f..0a02b7c 100644 --- a/src/ares/managers/utils/placement_strategy.py +++ b/src/ares/managers/utils/placement_strategy.py @@ -1,7 +1,9 @@ from dataclasses import dataclass from typing import TYPE_CHECKING +import numpy as np from cython_extensions import cy_distance_to_squared +from jedi.inference.gradual.typing import Callable from loguru import logger from sc2.ids.unit_typeid import UnitTypeId as UnitID from sc2.position import Point2 @@ -52,9 +54,21 @@ def __init__( self.building_size = building_size def _filter_by_flag( - self, flag_name: str, available, placements_for_base: dict[Point2, dict] + self, + flag_name: str, + available: list[Point2], + placements_for_base: dict[Point2, dict], ) -> list[Point2]: - return [a for a in available if placements_for_base[a].get(flag_name, False)] + grid: np.ndarray = self.placement_manager.manager_mediator.get_ground_grid + safety_check: Callable = ( + self.placement_manager.manager_mediator.is_position_safe + ) + return [ + a + for a in available + if safety_check(grid=grid, position=a) + and placements_for_base[a].get(flag_name, False) + ] class PoweredPlacementStrategy(BasePlacementStrategy): From bda019f4dfe7f7453348989b4d2508ea9a00102a Mon Sep 17 00:00:00 2001 From: rasper Date: Thu, 5 Mar 2026 21:10:47 +0000 Subject: [PATCH 2/3] fix: correct Callable import in placement strategy utils --- src/ares/managers/utils/placement_strategy.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ares/managers/utils/placement_strategy.py b/src/ares/managers/utils/placement_strategy.py index 0a02b7c..ebe8615 100644 --- a/src/ares/managers/utils/placement_strategy.py +++ b/src/ares/managers/utils/placement_strategy.py @@ -1,9 +1,8 @@ -from dataclasses import dataclass +from dataclasses import Callable, dataclass from typing import TYPE_CHECKING import numpy as np from cython_extensions import cy_distance_to_squared -from jedi.inference.gradual.typing import Callable from loguru import logger from sc2.ids.unit_typeid import UnitTypeId as UnitID from sc2.position import Point2 From fd069a0175aada73123afb2227a840ce2935a31c Mon Sep 17 00:00:00 2001 From: rasper Date: Thu, 5 Mar 2026 21:17:51 +0000 Subject: [PATCH 3/3] fix: correct Callable import in placement strategy --- src/ares/managers/utils/placement_strategy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ares/managers/utils/placement_strategy.py b/src/ares/managers/utils/placement_strategy.py index ebe8615..1b4ebf2 100644 --- a/src/ares/managers/utils/placement_strategy.py +++ b/src/ares/managers/utils/placement_strategy.py @@ -1,5 +1,5 @@ -from dataclasses import Callable, dataclass -from typing import TYPE_CHECKING +from dataclasses import dataclass +from typing import TYPE_CHECKING, Callable import numpy as np from cython_extensions import cy_distance_to_squared