SYMBOL INDEX (1283 symbols across 89 files) FILE: examples/arcade_bot.py class MarineSplitChallenge (line 40) | class MarineSplitChallenge(BotAI): method on_start (line 41) | async def on_start(self): method on_step (line 45) | async def on_step(self, iteration: int): method position_around_unit (line 97) | def position_around_unit( function main (line 121) | def main(): FILE: examples/bot_vs_bot.py function main_old (line 17) | def main_old(): function main (line 31) | def main(): FILE: examples/competitive/__init__.py function run_ladder_game (line 16) | def run_ladder_game(bot): function join_ladder_game (line 58) | async def join_ladder_game(host, port, players, realtime, portconfig, sa... FILE: examples/competitive/bot.py class CompetitiveBot (line 5) | class CompetitiveBot(BotAI): method on_start (line 6) | async def on_start(self): method on_step (line 10) | async def on_step(self, iteration: int): method on_end (line 14) | async def on_end(self, game_result: Result): FILE: examples/distributed_workers.py class TerranBot (line 9) | class TerranBot(BotAI): method on_step (line 10) | async def on_step(self, iteration: int): method build_workers (line 16) | async def build_workers(self): method expand (line 21) | async def expand(self): method build_supply (line 25) | async def build_supply(self): FILE: examples/external_bot.py function main (line 9) | def main(): FILE: examples/fastreload.py function main (line 10) | def main(): FILE: examples/host_external_norestart.py function main (line 9) | def main(): FILE: examples/observer_easy_vs_easy.py function main (line 8) | def main(): FILE: examples/play_tvz.py function main (line 12) | def main(): FILE: examples/protoss/cannon_rush.py class CannonRushBot (line 11) | class CannonRushBot(BotAI): method on_step (line 12) | async def on_step(self, iteration: int): function main (line 62) | def main(): FILE: examples/protoss/find_adept_shades.py class FindAdeptShadesBot (line 13) | class FindAdeptShadesBot(BotAI): method __init__ (line 14) | def __init__(self): method on_start (line 18) | async def on_start(self): method on_step (line 24) | async def on_step(self, iteration: int): function main (line 59) | def main(): FILE: examples/protoss/threebase_voidray.py class ThreebaseVoidrayBot (line 11) | class ThreebaseVoidrayBot(BotAI): method on_step (line 12) | async def on_step(self, iteration: int): function main (line 122) | def main(): FILE: examples/protoss/warpgate_push.py class WarpGateBot (line 15) | class WarpGateBot(BotAI): method __init__ (line 16) | def __init__(self): method warp_new_units (line 20) | async def warp_new_units(self, proxy: Unit): method on_step (line 33) | async def on_step(self, iteration: int): function main (line 138) | def main(): FILE: examples/simulate_fight_scenario.py class FightBot (line 15) | class FightBot(BotAI): method __init__ (line 16) | def __init__(self): method on_start (line 21) | async def on_start(self): method on_step (line 26) | async def on_step(self, iteration: int): method reset_arena (line 44) | async def reset_arena(self): method manage_enemy_units (line 63) | async def manage_enemy_units(self): method manage_own_units (line 67) | async def manage_own_units(self): function main (line 80) | def main(): FILE: examples/terran/cyclone_push.py class CyclonePush (line 12) | class CyclonePush(BotAI): method select_target (line 13) | def select_target(self) -> Point2: method on_step (line 31) | async def on_step(self, iteration: int): function main (line 121) | def main(): FILE: examples/terran/mass_reaper.py class MassReaperBot (line 26) | class MassReaperBot(BotAI): method __init__ (line 27) | def __init__(self): method on_step (line 31) | async def on_step(self, iteration: int): method neighbors4 (line 266) | def neighbors4(position: Point2, distance: float = 1) -> set[Point2]: method neighbors8 (line 272) | def neighbors8(self, position: Point2, distance: float = 1) -> set[Poi... method my_distribute_workers (line 283) | async def my_distribute_workers(self, performance_heavy=True, only_sat... function main (line 423) | def main(): FILE: examples/terran/onebase_battlecruiser.py class BCRushBot (line 15) | class BCRushBot(BotAI): method select_target (line 16) | def select_target(self) -> tuple[Point2, bool]: method on_step (line 31) | async def on_step(self, iteration: int): function main (line 184) | def main(): FILE: examples/terran/proxy_rax.py class ProxyRaxBot (line 12) | class ProxyRaxBot(BotAI): method on_start (line 13) | async def on_start(self): method on_step (line 16) | async def on_step(self, iteration: int): function main (line 63) | def main(): FILE: examples/terran/ramp_wall.py class RampWallBot (line 18) | class RampWallBot(BotAI): method __init__ (line 19) | def __init__(self): method on_step (line 22) | async def on_step(self, iteration: int): method on_building_construction_started (line 111) | async def on_building_construction_started(self, unit: Unit): method on_building_construction_complete (line 114) | async def on_building_construction_complete(self, unit: Unit): method draw_ramp_points (line 117) | def draw_ramp_points(self): method draw_expansions (line 136) | def draw_expansions(self): method draw_pathing_grid (line 143) | def draw_pathing_grid(self): method draw_placement_grid (line 162) | def draw_placement_grid(self): method draw_vision_blockers (line 181) | def draw_vision_blockers(self): method draw_visibility_pixelmap (line 191) | def draw_visibility_pixelmap(self): method draw_example (line 205) | def draw_example(self): method draw_facing_units (line 247) | def draw_facing_units(self): function main (line 263) | def main(): FILE: examples/too_slow_bot.py class SlowBot (line 11) | class SlowBot(ProxyRaxBot): method on_step (line 12) | async def on_step(self, iteration: int): function main (line 17) | def main(): FILE: examples/watch_replay.py class ObserverBot (line 10) | class ObserverBot(ObserverAI): method on_start (line 16) | async def on_start(self): method on_step (line 19) | async def on_step(self, iteration: int): FILE: examples/worker_rush.py class WorkerRushBot (line 8) | class WorkerRushBot(BotAI): method on_step (line 9) | async def on_step(self, iteration: int): function main (line 15) | def main(): FILE: examples/worker_stack_bot.py class WorkerStackBot (line 30) | class WorkerStackBot(BotAI): method __init__ (line 31) | def __init__(self): method on_start (line 40) | async def on_start(self): method assign_workers (line 44) | async def assign_workers(self): method on_step (line 66) | async def on_step(self, iteration: int): function main (line 105) | def main(): FILE: examples/zerg/banes_banes_banes.py class BanesBanesBanes (line 15) | class BanesBanesBanes(BotAI): method select_target (line 21) | def select_target(self) -> Point2: method on_step (line 26) | async def on_step(self, iteration: int): function main (line 129) | def main(): FILE: examples/zerg/expand_everywhere.py class ExpandEverywhere (line 14) | class ExpandEverywhere(BotAI): method on_start (line 15) | async def on_start(self): method on_step (line 19) | async def on_step(self, iteration: int): method on_building_construction_complete (line 63) | async def on_building_construction_complete(self, unit: Unit): function main (line 70) | def main(): FILE: examples/zerg/hydralisk_push.py class Hydralisk (line 16) | class Hydralisk(BotAI): method select_target (line 17) | def select_target(self) -> Point2: method on_step (line 22) | async def on_step(self, iteration: int): function main (line 127) | def main(): FILE: examples/zerg/onebase_broodlord.py class BroodlordBot (line 16) | class BroodlordBot(BotAI): method select_target (line 17) | def select_target(self) -> Point2: method on_step (line 22) | async def on_step(self, iteration: int): function main (line 129) | def main(): FILE: examples/zerg/worker_split.py class WorkerSplitBot (line 20) | class WorkerSplitBot(BotAI): method on_before_start (line 21) | async def on_before_start(self): method on_start (line 30) | async def on_start(self): method on_step (line 33) | async def on_step(self, iteration: int): function main (line 42) | def main(): FILE: examples/zerg/zerg_rush.py class ZergRushBot (line 18) | class ZergRushBot(BotAI): method __init__ (line 19) | def __init__(self): method on_start (line 22) | async def on_start(self): method on_step (line 25) | async def on_step(self, iteration: int): method draw_creep_pixelmap (line 127) | def draw_creep_pixelmap(self): method on_end (line 139) | async def on_end(self, game_result: Result): function main (line 144) | def main(): FILE: generate_dicts_from_data_json.py function get_map_file_path (line 29) | def get_map_file_path() -> Path: class OrderedDict2 (line 35) | class OrderedDict2(OrderedDict): method __repr__ (line 36) | def __repr__(self): class OrderedSet2 (line 46) | class OrderedSet2(set): method __repr__ (line 47) | def __repr__(self): function dump_dict_to_file (line 53) | def dump_dict_to_file( function generate_init_file (line 65) | def generate_init_file(dict_file_paths: list[Path], file_path: Path, fil... function get_unit_train_build_abilities (line 77) | def get_unit_train_build_abilities(data): function get_upgrade_abilities (line 244) | def get_upgrade_abilities(data): function get_unit_created_from (line 337) | def get_unit_created_from(unit_train_abilities: dict): function get_upgrade_researched_from (line 349) | def get_upgrade_researched_from(unit_research_abilities: dict): function get_unit_abilities (line 361) | def get_unit_abilities(data: dict): function generate_unit_alias_dict (line 384) | def generate_unit_alias_dict(data: dict): function generate_redirect_abilities_dict (line 429) | def generate_redirect_abilities_dict(data: dict): function main (line 454) | def main(): FILE: sc2/__init__.py function is_submodule (line 4) | def is_submodule(path): FILE: sc2/action.py function combine_actions (line 15) | def combine_actions(action_iter: list[UnitCommand]): FILE: sc2/bot_ai.py class BotAI (line 39) | class BotAI(BotAIInternal): method time (line 45) | def time(self) -> float: method time_formatted (line 50) | def time_formatted(self) -> str: method step_time (line 56) | def step_time(self) -> tuple[float, float, float, float]: method alert (line 73) | def alert(self, alert_code: Alert) -> bool: method start_location (line 115) | def start_location(self) -> Point2: method enemy_start_locations (line 123) | def enemy_start_locations(self) -> list[Point2]: method main_base_ramp (line 128) | def main_base_ramp(self) -> Ramp: method expansion_locations_list (line 151) | def expansion_locations_list(self) -> list[Point2]: method expansion_locations_dict (line 159) | def expansion_locations_dict(self) -> dict[Point2, Units]: method units_created (line 182) | def units_created(self) -> Counter[UnitTypeId]: method get_available_abilities (line 201) | async def get_available_abilities( method expand_now (line 218) | async def expand_now( method get_next_expansion (line 249) | async def get_next_expansion(self) -> Point2 | None: method distribute_workers (line 274) | async def distribute_workers(self, resource_ratio: float = 2) -> None: method owned_expansions (line 381) | def owned_expansions(self) -> dict[Point2, Unit]: method calculate_supply_cost (line 394) | def calculate_supply_cost(self, unit_type: UnitTypeId) -> float: method can_feed (line 422) | def can_feed(self, unit_type: UnitTypeId) -> bool: method calculate_unit_value (line 437) | def calculate_unit_value(self, unit_type: UnitTypeId) -> Cost: method calculate_cost (line 452) | def calculate_cost(self, item_id: UnitTypeId | UpgradeId | AbilityId) ... method can_afford (line 508) | def can_afford(self, item_id: UnitTypeId | UpgradeId | AbilityId, chec... method can_cast (line 535) | async def can_cast( method select_build_worker (line 602) | def select_build_worker(self, pos: Unit | Point2, force: bool = False)... method can_place_single (line 631) | async def can_place_single(self, building: AbilityId | UnitTypeId, pos... method can_place (line 642) | async def can_place(self, building: AbilityData | AbilityId | UnitType... method find_placement (line 682) | async def find_placement( method already_pending_upgrade (line 754) | def already_pending_upgrade(self, upgrade_type: UpgradeId) -> float: method structure_type_build_progress (line 782) | def structure_type_build_progress(self, structure_type: UnitTypeId | i... method tech_requirement_progress (line 835) | def tech_requirement_progress(self, structure_type: UnitTypeId) -> float: method already_pending (line 873) | def already_pending(self, unit_type: UpgradeId | UnitTypeId) -> float: method worker_en_route_to_build (line 904) | def worker_en_route_to_build(self, unit_type: UnitTypeId) -> float: method structures_without_construction_SCVs (line 916) | def structures_without_construction_SCVs(self) -> Units: method build (line 937) | async def build( method train (line 981) | def train( method research (line 1128) | def research(self, upgrade_type: UpgradeId) -> bool: method chat_send (line 1210) | async def chat_send(self, message: str, team_only: bool = False) -> None: method in_map_bounds (line 1222) | def in_map_bounds(self, pos: Point2 | tuple[float, float] | list[float... method get_terrain_height (line 1236) | def get_terrain_height(self, pos: Point2 | Unit) -> int: method get_terrain_z_height (line 1245) | def get_terrain_z_height(self, pos: Point2 | Unit) -> float: method in_placement_grid (line 1253) | def in_placement_grid(self, pos: Point2 | Unit) -> bool: method in_pathing_grid (line 1263) | def in_pathing_grid(self, pos: Point2 | Unit) -> bool: method is_visible (line 1271) | def is_visible(self, pos: Point2 | Unit) -> bool: method has_creep (line 1280) | def has_creep(self, pos: Point2 | Unit) -> bool: method on_unit_destroyed (line 1288) | async def on_unit_destroyed(self, unit_tag: int) -> None: method on_unit_created (line 1299) | async def on_unit_created(self, unit: Unit) -> None: method on_unit_type_changed (line 1304) | async def on_unit_type_changed(self, unit: Unit, previous_type: UnitTy... method on_building_construction_started (line 1318) | async def on_building_construction_started(self, unit: Unit) -> None: method on_building_construction_complete (line 1326) | async def on_building_construction_complete(self, unit: Unit) -> None: method on_upgrade_complete (line 1334) | async def on_upgrade_complete(self, upgrade: UpgradeId) -> None: method on_unit_took_damage (line 1341) | async def on_unit_took_damage(self, unit: Unit, amount_damage_taken: f... method on_enemy_unit_entered_vision (line 1358) | async def on_enemy_unit_entered_vision(self, unit: Unit) -> None: method on_enemy_unit_left_vision (line 1365) | async def on_enemy_unit_left_vision(self, unit_tag: int) -> None: method on_before_start (line 1379) | async def on_before_start(self) -> None: method on_start (line 1387) | async def on_start(self) -> None: method on_step (line 1393) | async def on_step(self, iteration: int): method on_end (line 1403) | async def on_end(self, game_result: Result) -> None: FILE: sc2/bot_ai_internal.py class BotAIInternal (line 50) | class BotAIInternal(ABC): method __init__ (line 53) | def __init__(self: BotAI) -> None: method _initialize_variables (line 57) | def _initialize_variables(self: BotAI) -> None: method _game_info (line 133) | def _game_info(self) -> GameInfo: method _game_data (line 144) | def _game_data(self) -> GameData: method _client (line 155) | def _client(self) -> Client: method expansion_locations (line 166) | def expansion_locations(self: BotAI) -> dict[Point2, Units]: method _cluster_center (line 178) | def _cluster_center(self, group: list[Unit]) -> Point2: method _find_expansion_location (line 204) | def _find_expansion_location( method _has_opposite_side_geyser_layout (line 245) | def _has_opposite_side_geyser_layout(self, minerals: list[Unit], gas_g... method _find_expansion_locations (line 320) | def _find_expansion_locations(self) -> None: method _correct_zerg_supply (line 407) | def _correct_zerg_supply(self) -> None: method _abilities_count_and_build_progress (line 427) | def _abilities_count_and_build_progress(self) -> tuple[Counter[Ability... method _worker_orders (line 462) | def _worker_orders(self) -> Counter[AbilityId]: method do (line 480) | def do( method synchronous_do (line 550) | async def synchronous_do(self: BotAI, action: UnitCommand): method _do_actions (line 573) | async def _do_actions(self, actions: list[UnitCommand], prevent_double... method prevent_double_actions (line 587) | def prevent_double_actions(action: UnitCommand) -> bool: method _prepare_start (line 616) | def _prepare_start( method _prepare_first_step (line 650) | def _prepare_first_step(self) -> None: method _prepare_step (line 660) | def _prepare_step(self: BotAI, state: GameState, proto_game_info: sc_p... method _prepare_units (line 701) | def _prepare_units(self: BotAI) -> None: method _after_step (line 805) | async def _after_step(self) -> int: method _advance_steps (line 827) | async def _advance_steps(self: BotAI, steps: int) -> None: method issue_events (line 840) | async def issue_events(self: BotAI) -> None: method _issue_unit_added_events (line 855) | async def _issue_unit_added_events(self: BotAI) -> None: method _issue_upgrade_events (line 872) | async def _issue_upgrade_events(self: BotAI) -> None: method _issue_building_events (line 879) | async def _issue_building_events(self: BotAI) -> None: method _issue_vision_events (line 911) | async def _issue_vision_events(self: BotAI) -> None: method _issue_unit_dead_events (line 929) | async def _issue_unit_dead_events(self: BotAI) -> None: method _units_count (line 937) | def _units_count(self) -> int: method _pdist (line 942) | def _pdist(self) -> np.ndarray: method _cdist (line 950) | def _cdist(self) -> np.ndarray: method _calculate_distances_method1 (line 957) | def _calculate_distances_method1(self) -> np.ndarray: method _calculate_distances_method2 (line 974) | def _calculate_distances_method2(self) -> np.ndarray: method _calculate_distances_method3 (line 991) | def _calculate_distances_method3(self) -> np.ndarray: method square_to_condensed (line 1008) | def square_to_condensed(self, i, j) -> int: method convert_tuple_to_numpy_array (line 1018) | def convert_tuple_to_numpy_array(pos: tuple[float, float]) -> np.ndarray: method distance_math_hypot (line 1026) | def distance_math_hypot( method distance_math_hypot_squared (line 1034) | def distance_math_hypot_squared( method _distance_squared_unit_to_unit_method0 (line 1041) | def _distance_squared_unit_to_unit_method0(self, unit1: Unit, unit2: U... method _distance_squared_unit_to_unit_method1 (line 1047) | def _distance_squared_unit_to_unit_method1(self, unit1: Unit, unit2: U... method _distance_squared_unit_to_unit_method2 (line 1060) | def _distance_squared_unit_to_unit_method2(self, unit1: Unit, unit2: U... method _distance_pos_to_pos (line 1067) | def _distance_pos_to_pos( method _distance_units_to_pos (line 1075) | def _distance_units_to_pos( method _distance_unit_to_points (line 1084) | def _distance_unit_to_points( method _distances_override_functions (line 1094) | def _distances_override_functions(self, method: int = 0) -> None: FILE: sc2/cache.py class CacheDict (line 12) | class CacheDict(dict[Hashable, Any]): method retrieve_and_set (line 13) | def retrieve_and_set(self, key: Hashable, func: Callable[[], T]) -> T: class property_cache_once_per_frame (line 21) | class property_cache_once_per_frame(property): # noqa: N801 method __init__ (line 32) | def __init__(self, func: Callable[[BotAI], T], name: str | None = None... method __set__ (line 38) | def __set__(self, obj: BotAI, value: T) -> None: method __get__ (line 44) | def __get__(self, obj: BotAI, _type=None) -> T: FILE: sc2/client.py class Client (line 30) | class Client(Protocol): method __init__ (line 31) | def __init__(self, ws: ClientWebSocketResponse, save_replay_path: str ... method in_game (line 55) | def in_game(self) -> bool: method join_game (line 58) | async def join_game( method leave (line 116) | async def leave(self) -> None: method save_replay (line 134) | async def save_replay(self, path: str) -> None: method observation (line 141) | async def observation(self, game_loop: int | None = None): method step (line 165) | async def step(self, step_size: int | None = None): method get_game_data (line 170) | async def get_game_data(self) -> GameData: method dump_data (line 176) | async def dump_data( method get_game_info (line 203) | async def get_game_info(self) -> GameInfo: method actions (line 207) | async def actions(self, actions: list[UnitCommand], return_successes: ... method query_pathing (line 229) | async def query_pathing(self, start: Unit | Point2 | Point3, end: Poin... method query_pathings (line 247) | async def query_pathings(self, zipped_list: list[tuple[Unit | Point2 |... method _query_building_placement_fast (line 269) | async def _query_building_placement_fast( method query_building_placement (line 292) | async def query_building_placement( method query_available_abilities (line 318) | async def query_available_abilities( method query_available_abilities_with_tag (line 342) | async def query_available_abilities_with_tag( method chat_send (line 355) | async def chat_send(self, message: str, team_only: bool) -> None: method toggle_autocast (line 368) | async def toggle_autocast(self, units: list[Unit] | Units, ability: Ab... method debug_create_unit (line 394) | async def debug_create_unit( method debug_kill_unit (line 420) | async def debug_kill_unit(self, unit_tags: Unit | Units | list[int] | ... method move_camera (line 435) | async def move_camera(self, position: Unit | Units | Point2 | Point3) ... method obs_move_camera (line 456) | async def obs_move_camera(self, position: Unit | Units | Point2 | Poin... method move_camera_spatial (line 475) | async def move_camera_spatial(self, position: Point2 | Point3) -> None: method debug_text_simple (line 487) | def debug_text_simple(self, text: str) -> None: method debug_text_screen (line 491) | def debug_text_screen( method debug_text_2d (line 512) | def debug_text_2d( method debug_text_world (line 521) | def debug_text_world( method debug_text_3d (line 542) | def debug_text_3d( method debug_line_out (line 551) | def debug_line_out( method debug_box_out (line 572) | def debug_box_out( method debug_box2_out (line 593) | def debug_box2_out( method debug_sphere_out (line 613) | def debug_sphere_out( method _send_debug (line 631) | async def _send_debug(self) -> None: method debug_leave (line 692) | async def debug_leave(self) -> None: method debug_set_unit_value (line 695) | async def debug_set_unit_value( method debug_hang (line 730) | async def debug_hang(self, delay_in_seconds: float) -> None: method debug_show_map (line 746) | async def debug_show_map(self) -> None: method debug_control_enemy (line 752) | async def debug_control_enemy(self) -> None: method debug_food (line 758) | async def debug_food(self) -> None: method debug_free (line 764) | async def debug_free(self) -> None: method debug_all_resources (line 770) | async def debug_all_resources(self) -> None: method debug_god (line 776) | async def debug_god(self) -> None: method debug_minerals (line 782) | async def debug_minerals(self) -> None: method debug_gas (line 788) | async def debug_gas(self) -> None: method debug_cooldown (line 794) | async def debug_cooldown(self) -> None: method debug_tech_tree (line 800) | async def debug_tech_tree(self) -> None: method debug_upgrade (line 806) | async def debug_upgrade(self) -> None: method debug_fast_build (line 812) | async def debug_fast_build(self) -> None: method quick_save (line 818) | async def quick_save(self) -> None: method quick_load (line 823) | async def quick_load(self) -> None: class DrawItem (line 832) | class DrawItem: method to_debug_color (line 834) | def to_debug_color(color: tuple[float, float, float] | list[float] | P... class DrawItemScreenText (line 854) | class DrawItemScreenText(DrawItem): method __init__ (line 855) | def __init__( method to_proto (line 867) | def to_proto(self): method __hash__ (line 877) | def __hash__(self) -> int: class DrawItemWorldText (line 881) | class DrawItemWorldText(DrawItem): method __init__ (line 882) | def __init__( method to_proto (line 894) | def to_proto(self): method __hash__ (line 904) | def __hash__(self) -> int: class DrawItemLine (line 908) | class DrawItemLine(DrawItem): method __init__ (line 909) | def __init__( method to_proto (line 919) | def to_proto(self): method __hash__ (line 925) | def __hash__(self) -> int: class DrawItemBox (line 929) | class DrawItemBox(DrawItem): method __init__ (line 930) | def __init__( method to_proto (line 940) | def to_proto(self): method __hash__ (line 947) | def __hash__(self) -> int: class DrawItemSphere (line 951) | class DrawItemSphere(DrawItem): method __init__ (line 952) | def __init__( method to_proto (line 962) | def to_proto(self): method __hash__ (line 967) | def __hash__(self) -> int: FILE: sc2/constants.py function return_NOTAUNIT (line 362) | def return_NOTAUNIT() -> UnitTypeId: FILE: sc2/controller.py class Controller (line 18) | class Controller(Protocol): method __init__ (line 19) | def __init__(self, ws: ClientWebSocketResponse, process: SC2Process) -... method running (line 24) | def running(self) -> bool: method create_game (line 27) | async def create_game(self, game_map, players, realtime: bool, random_... method request_available_maps (line 56) | async def request_available_maps(self): method request_save_map (line 61) | async def request_save_map(self, download_path: str): method request_replay_info (line 67) | async def request_replay_info(self, replay_path: str): method start_replay (line 73) | async def start_replay(self, replay_path: str, realtime: bool, observe... FILE: sc2/data.pyi class CreateGameError (line 18) | class CreateGameError(Enum): class PlayerType (line 28) | class PlayerType(Enum): class Difficulty (line 33) | class Difficulty(Enum): class AIBuild (line 45) | class AIBuild(Enum): class Status (line 53) | class Status(Enum): class Result (line 62) | class Result(Enum): class Alert (line 68) | class Alert(Enum): class ChatChannel (line 92) | class ChatChannel(Enum): class Race (line 96) | class Race(Enum): class DisplayType (line 114) | class DisplayType(Enum): class Alliance (line 120) | class Alliance(Enum): class CloakState (line 126) | class CloakState(Enum): class Attribute (line 133) | class Attribute(Enum): class TargetType (line 146) | class TargetType(Enum): class Target (line 152) | class Target(Enum): class ActionResult (line 160) | class ActionResult(Enum): FILE: sc2/expiring_dict.py class ExpiringDict (line 12) | class ExpiringDict(OrderedDict[Hashable, Any]): method __init__ (line 33) | def __init__(self, bot: BotAI, max_age_frames: int = 1) -> None: method frame (line 43) | def frame(self) -> int: method __contains__ (line 46) | def __contains__(self, key: Hashable) -> bool: method __getitem__ (line 57) | def __getitem__(self, key: Hashable, with_age: bool = False) -> Any: method __setitem__ (line 69) | def __setitem__(self, key: Hashable, value: Any) -> None: method __repr__ (line 74) | def __repr__(self) -> str: method __str__ (line 84) | def __str__(self) -> str: method __iter__ (line 87) | def __iter__(self) -> Iterable[Hashable]: method __len__ (line 93) | def __len__(self) -> int: method pop (line 102) | def pop(self, key: Hashable, default: Any = None, with_age: bool = Fal... method get (line 119) | def get(self, key: Hashable, default: Any = None, with_age: bool = Fal... method update (line 135) | def update(self, other_dict: dict[Hashable, Any]) -> None: method items (line 140) | def items(self) -> Iterable[tuple[Hashable, Any]]: method keys (line 147) | def keys(self) -> Iterable[Hashable]: method values (line 154) | def values(self) -> Iterable[Any]: FILE: sc2/game_data.py class GameData (line 22) | class GameData: method __init__ (line 23) | def __init__(self, data: sc2api_pb2.ResponseData) -> None: method calculate_ability_cost (line 36) | def calculate_ability_cost(self, ability: AbilityData | AbilityId | Un... class AbilityData (line 75) | class AbilityData: method id_exists (line 79) | def id_exists(cls, ability_id: int) -> bool: method __init__ (line 86) | def __init__(self, game_data: GameData, proto: data_pb2.AbilityData) -... method __repr__ (line 93) | def __repr__(self) -> str: method id (line 97) | def id(self) -> AbilityId: method exact_id (line 104) | def exact_id(self) -> AbilityId: method link_name (line 109) | def link_name(self) -> str: method button_name (line 114) | def button_name(self) -> str: method friendly_name (line 119) | def friendly_name(self) -> str: method is_free_morph (line 124) | def is_free_morph(self) -> bool: method cost (line 128) | def cost(self) -> Cost: class UnitTypeData (line 132) | class UnitTypeData: method __init__ (line 133) | def __init__(self, game_data: GameData, proto: data_pb2.UnitTypeData) ... method __repr__ (line 147) | def __repr__(self) -> str: method id (line 151) | def id(self) -> UnitTypeId: method name (line 155) | def name(self) -> str: method creation_ability (line 159) | def creation_ability(self) -> AbilityData | None: method footprint_radius (line 167) | def footprint_radius(self) -> float | None: method attributes (line 174) | def attributes(self) -> list[Attribute]: method has_attribute (line 177) | def has_attribute(self, attr: Attribute) -> bool: method has_minerals (line 182) | def has_minerals(self) -> bool: method has_vespene (line 186) | def has_vespene(self) -> bool: method cargo_size (line 190) | def cargo_size(self) -> int: method tech_requirement (line 195) | def tech_requirement(self) -> UnitTypeId | None: method tech_alias (line 204) | def tech_alias(self) -> list[UnitTypeId] | None: method unit_alias (line 215) | def unit_alias(self) -> UnitTypeId | None: method race (line 225) | def race(self) -> Race: method cost (line 229) | def cost(self) -> Cost: method cost_zerg_corrected (line 233) | def cost_zerg_corrected(self) -> Cost: method morph_cost (line 240) | def morph_cost(self) -> Cost | None: class UpgradeData (line 275) | class UpgradeData: method __init__ (line 276) | def __init__(self, game_data: GameData, proto: data_pb2.UpgradeData) -... method __repr__ (line 284) | def __repr__(self) -> str: method name (line 288) | def name(self) -> str: method research_ability (line 292) | def research_ability(self) -> AbilityData | None: method cost (line 300) | def cost(self) -> Cost: class Cost (line 305) | class Cost: method __repr__ (line 315) | def __repr__(self) -> str: method __eq__ (line 318) | def __eq__(self, other: Cost) -> bool: method __ne__ (line 321) | def __ne__(self, other: Cost) -> bool: method __bool__ (line 324) | def __bool__(self) -> bool: method __add__ (line 327) | def __add__(self, other: Cost) -> Cost: method __sub__ (line 335) | def __sub__(self, other: Cost) -> Cost: method __mul__ (line 339) | def __mul__(self, other: int) -> Cost: method __rmul__ (line 342) | def __rmul__(self, other: int) -> Cost: FILE: sc2/game_info.py class Ramp (line 18) | class Ramp: method x_offset (line 23) | def x_offset(self) -> float: method y_offset (line 28) | def y_offset(self) -> float: method _height_map (line 33) | def _height_map(self) -> PixelMap: method size (line 37) | def size(self) -> int: method height_at (line 40) | def height_at(self, p: Point2) -> int: method upper (line 44) | def upper(self) -> frozenset[Point2]: method upper2_for_ramp_wall (line 58) | def upper2_for_ramp_wall(self) -> frozenset[Point2]: method top_center (line 64) | def top_center(self) -> Point2: method lower (line 70) | def lower(self) -> frozenset[Point2]: method bottom_center (line 83) | def bottom_center(self) -> Point2: method barracks_in_middle (line 89) | def barracks_in_middle(self) -> Point2 | None: method depot_in_middle (line 105) | def depot_in_middle(self) -> Point2 | None: method corner_depots (line 125) | def corner_depots(self) -> set[Point2]: method barracks_can_fit_addon (line 144) | def barracks_can_fit_addon(self) -> bool: method barracks_correct_placement (line 154) | def barracks_correct_placement(self) -> Point2 | None: method protoss_wall_pylon (line 166) | def protoss_wall_pylon(self) -> Point2 | None: method protoss_wall_buildings (line 182) | def protoss_wall_buildings(self) -> frozenset[Point2]: method protoss_wall_warpin (line 206) | def protoss_wall_warpin(self) -> Point2 | None: class GameInfo (line 224) | class GameInfo: method __init__ (line 225) | def __init__(self, proto: sc2api_pb2.ResponseGameInfo) -> None: method _find_ramps_and_vision_blockers (line 254) | def _find_ramps_and_vision_blockers(self) -> tuple[list[Ramp], frozens... method _find_groups (line 280) | def _find_groups(self, points: Iterable[Point2], minimum_points_per_gr... FILE: sc2/game_state.py class Blip (line 28) | class Blip: method __init__ (line 29) | def __init__(self, proto: raw_pb2.Unit) -> None: method is_blip (line 36) | def is_blip(self) -> bool: method is_snapshot (line 41) | def is_snapshot(self) -> bool: method is_visible (line 45) | def is_visible(self) -> bool: method alliance (line 49) | def alliance(self) -> int: method is_mine (line 53) | def is_mine(self) -> bool: method is_enemy (line 57) | def is_enemy(self) -> bool: method position (line 61) | def position(self) -> Point2: method position3d (line 66) | def position3d(self) -> Point3: class Common (line 71) | class Common: method __init__ (line 86) | def __init__(self, proto: sc2api_pb2.PlayerCommon) -> None: method __getattr__ (line 89) | def __getattr__(self, attr) -> int: class EffectData (line 94) | class EffectData: method __init__ (line 95) | def __init__(self, proto: raw_pb2.Effect | raw_pb2.Unit, fake: bool = ... method id (line 104) | def id(self) -> EffectId | str: method positions (line 111) | def positions(self) -> set[Point2]: method alliance (line 117) | def alliance(self) -> Alliance: method is_mine (line 121) | def is_mine(self) -> bool: method is_enemy (line 126) | def is_enemy(self) -> bool: method owner (line 131) | def owner(self) -> int: method radius (line 135) | def radius(self) -> float: method __repr__ (line 140) | def __repr__(self) -> str: class ChatMessage (line 145) | class ChatMessage: class AbilityLookupTemplateClass (line 151) | class AbilityLookupTemplateClass: method exact_id (line 155) | def exact_id(self) -> AbilityId: method generic_id (line 159) | def generic_id(self) -> AbilityId: class ActionRawUnitCommand (line 167) | class ActionRawUnitCommand(AbilityLookupTemplateClass): class ActionRawToggleAutocast (line 176) | class ActionRawToggleAutocast(AbilityLookupTemplateClass): class ActionRawCameraMove (line 182) | class ActionRawCameraMove: class ActionError (line 187) | class ActionError(AbilityLookupTemplateClass): class GameState (line 193) | class GameState: method __init__ (line 194) | def __init__( method dead_units (line 238) | def dead_units(self) -> set[int]: method chat (line 246) | def chat(self) -> list[ChatMessage]: method alerts (line 255) | def alerts(self) -> list[int]: method actions (line 264) | def actions(self) -> list[ActionRawUnitCommand | ActionRawToggleAutoca... method actions_unit_commands (line 318) | def actions_unit_commands(self) -> list[ActionRawUnitCommand]: method actions_toggle_autocast (line 327) | def actions_toggle_autocast(self) -> list[ActionRawToggleAutocast]: method action_errors (line 336) | def action_errors(self) -> list[ActionError]: FILE: sc2/generate_ids.py class IdGenerator (line 20) | class IdGenerator: method __init__ (line 21) | def __init__( method make_key (line 60) | def make_key(key: str) -> str: method parse_data (line 66) | def parse_data(self, data) -> dict[str, Any]: method parse_simple (line 123) | def parse_simple(self, d, data): method generate_python_code (line 142) | def generate_python_code(self, enums) -> None: method update_ids_from_stableid_json (line 196) | def update_ids_from_stableid_json(self) -> None: method reimport_ids (line 209) | def reimport_ids() -> None: FILE: sc2/ids/ability_id.py class AbilityId (line 8) | class AbilityId(enum.Enum): method __repr__ (line 1391) | def __repr__(self) -> str: method _missing_ (line 1395) | def _missing_(cls, value: int) -> AbilityId: FILE: sc2/ids/buff_id.py class BuffId (line 8) | class BuffId(enum.Enum): method __repr__ (line 313) | def __repr__(self) -> str: method _missing_ (line 317) | def _missing_(cls, value: int) -> BuffId: FILE: sc2/ids/effect_id.py class EffectId (line 8) | class EffectId(enum.Enum): method __repr__ (line 23) | def __repr__(self) -> str: FILE: sc2/ids/unit_typeid.py class UnitTypeId (line 8) | class UnitTypeId(enum.Enum): method __repr__ (line 2015) | def __repr__(self) -> str: FILE: sc2/ids/upgrade_id.py class UpgradeId (line 8) | class UpgradeId(enum.Enum): method __repr__ (line 316) | def __repr__(self) -> str: FILE: sc2/main.py class GameMatch (line 39) | class GameMatch: method __post_init__ (line 56) | def __post_init__(self) -> None: method needed_sc2_count (line 76) | def needed_sc2_count(self) -> int: method host_game_kwargs (line 80) | def host_game_kwargs(self) -> dict[str, Any]: method __repr__ (line 89) | def __repr__(self) -> str: function _play_game_human (line 97) | async def _play_game_human(client, player_id, realtime, game_time_limit): function _play_game_ai (line 111) | async def _play_game_ai( function _play_game (line 212) | async def _play_game( function _play_replay (line 240) | async def _play_replay(client: Client, ai, realtime: bool = False, playe... function _setup_host_game (line 328) | async def _setup_host_game( function _host_game (line 342) | async def _host_game( function _host_game_aiter (line 383) | async def _host_game_aiter( function _host_game_iter (line 418) | def _host_game_iter(*args, **kwargs): function _join_game (line 425) | async def _join_game( function _setup_replay (line 453) | async def _setup_replay(server, replay_path, realtime, observed_id): function _host_replay (line 458) | async def _host_replay( function get_replay_version (line 467) | def get_replay_version(replay_path: str | Path) -> tuple[str, str]: function run_game (line 480) | def run_game( function run_replay (line 549) | def run_replay(ai: ObserverAI, replay_path: Path | str, realtime: bool =... function play_from_websocket (line 562) | async def play_from_websocket( function run_match (line 601) | async def run_match(controllers: list[Controller], match: GameMatch, clo... function process_results (line 647) | def process_results(players: list[AbstractPlayer], async_results: list[R... function maintain_SCII_count (line 668) | async def maintain_SCII_count(count: int, controllers: list[Controller],... function run_multiple_games (line 743) | def run_multiple_games(matches: list[GameMatch]): function a_run_multiple_games (line 750) | async def a_run_multiple_games(matches: list[GameMatch]) -> list[dict[Ab... function a_run_multiple_games_nokill (line 783) | async def a_run_multiple_games_nokill(matches: list[GameMatch]) -> list[... FILE: sc2/maps.py function get (line 10) | def get(name: str) -> Map: class Map (line 23) | class Map: method __init__ (line 24) | def __init__(self, path: Path) -> None: method name (line 37) | def name(self) -> str: method data (line 41) | def data(self) -> bytes: method __repr__ (line 45) | def __repr__(self) -> str: method is_map_file (line 49) | def is_map_file(cls, file: Path) -> bool: method matches_target_map_name (line 53) | def matches_target_map_name(cls, file: Path, name: str) -> bool: FILE: sc2/observer_ai.py class ObserverAI (line 17) | class ObserverAI(BotAIInternal): method time (line 21) | def time(self) -> float: method time_formatted (line 26) | def time_formatted(self) -> str: method alert (line 31) | def alert(self, alert_code: Alert) -> bool: method start_location (line 73) | def start_location(self) -> Point2: method enemy_start_locations (line 81) | def enemy_start_locations(self) -> list[Point2]: method get_available_abilities (line 85) | async def get_available_abilities( method on_unit_destroyed (line 102) | async def on_unit_destroyed(self, unit_tag: int) -> None: method on_unit_created (line 111) | async def on_unit_created(self, unit: Unit) -> None: method on_building_construction_started (line 116) | async def on_building_construction_started(self, unit: Unit) -> None: method on_building_construction_complete (line 124) | async def on_building_construction_complete(self, unit: Unit) -> None: method on_upgrade_complete (line 132) | async def on_upgrade_complete(self, upgrade: UpgradeId) -> None: method on_start (line 139) | async def on_start(self) -> None: method on_step (line 145) | async def on_step(self, iteration: int): method on_end (line 155) | async def on_end(self, game_result: Result) -> None: FILE: sc2/paths.py function platform_detect (line 51) | def platform_detect(): function get_home (line 61) | def get_home(): function get_user_sc2_install (line 68) | def get_user_sc2_install(): function get_env (line 85) | def get_env() -> None: function get_runner_args (line 90) | def get_runner_args(cwd): function latest_executeble (line 106) | def latest_executeble(versions_dir, base_build=None): class _MetaPaths (line 127) | class _MetaPaths(type): method __setup (line 130) | def __setup(cls): method __getattr__ (line 151) | def __getattr__(cls, attr): class Paths (line 156) | class Paths(metaclass=_MetaPaths): FILE: sc2/pixel_map.py class PixelMap (line 12) | class PixelMap: method __init__ (line 13) | def __init__(self, proto: ImageData, in_bits: bool = False) -> None: method width (line 31) | def width(self) -> int: method height (line 35) | def height(self) -> int: method bits_per_pixel (line 39) | def bits_per_pixel(self) -> int: method bytes_per_pixel (line 43) | def bytes_per_pixel(self) -> int: method __getitem__ (line 46) | def __getitem__(self, pos: _PointLike) -> int: method __setitem__ (line 53) | def __setitem__(self, pos: _PointLike, value: int) -> None: method is_set (line 64) | def is_set(self, p: tuple[int, int]) -> bool: method is_empty (line 67) | def is_empty(self, p: tuple[int, int]) -> bool: method copy (line 70) | def copy(self) -> PixelMap: method flood_fill (line 73) | def flood_fill(self, start_point: Point2, pred: Callable[[int], bool])... method flood_fill_all (line 92) | def flood_fill_all(self, pred: Callable[[int], bool]) -> set[frozenset... method print (line 105) | def print(self, wide: bool = False) -> None: method save_image (line 111) | def save_image(self, filename: str | Path) -> None: method plot (line 120) | def plot(self) -> None: FILE: sc2/player.py class AbstractPlayer (line 11) | class AbstractPlayer(ABC): method __init__ (line 12) | def __init__( method needs_sc2 (line 48) | def needs_sc2(self) -> bool: class Human (line 52) | class Human(AbstractPlayer): method __init__ (line 53) | def __init__(self, race: Race, name: str | None = None, fullscreen: bo... method __str__ (line 56) | def __str__(self) -> str: class Bot (line 62) | class Bot(AbstractPlayer): method __init__ (line 63) | def __init__(self, race: Race, ai: BotAI, name: str | None = None, ful... method __str__ (line 72) | def __str__(self) -> str: class Computer (line 78) | class Computer(AbstractPlayer): method __init__ (line 79) | def __init__( method __str__ (line 84) | def __str__(self) -> str: class Observer (line 90) | class Observer(AbstractPlayer): method __init__ (line 91) | def __init__(self) -> None: method __str__ (line 94) | def __str__(self) -> str: class Player (line 98) | class Player(AbstractPlayer): method __init__ (line 99) | def __init__( method from_proto (line 115) | def from_proto(cls, proto: sc2api_pb2.PlayerInfo) -> Player: class BotProcess (line 128) | class BotProcess(AbstractPlayer): method __init__ (line 147) | def __init__( method __repr__ (line 171) | def __repr__(self) -> str: method cmd_line (line 176) | def cmd_line( FILE: sc2/portconfig.py class Portconfig (line 9) | class Portconfig: method __init__ (line 28) | def __init__( method clean (line 44) | def clean(self) -> None: method __str__ (line 48) | def __str__(self) -> str: method as_json (line 52) | def as_json(self) -> str: method contiguous_ports (line 56) | def contiguous_ports(cls, guests: int = 1, attempts: int = 40) -> Port... method from_json (line 72) | def from_json(cls, json_data: bytearray | bytes | str) -> Portconfig: FILE: sc2/position.py class HasPosition2D (line 19) | class HasPosition2D(Protocol): method position (line 21) | def position(self) -> Point2: ... function _sign (line 31) | def _sign(num: SupportsFloat | SupportsIndex) -> float: class Pointlike (line 35) | class Pointlike(tuple[float, ...]): method position (line 39) | def position(self: T) -> T: method distance_to (line 42) | def distance_to(self, target: _PosLike) -> float: method distance_to_point2 (line 50) | def distance_to_point2(self, p: _PointLike) -> float: method _distance_squared (line 57) | def _distance_squared(self, p2: _PointLike) -> float: method sort_by_distance (line 64) | def sort_by_distance(self, ps: Iterable[_TPosLike]) -> list[_TPosLike]: method closest (line 72) | def closest(self, ps: Iterable[_TPosLike]) -> _TPosLike: method distance_to_closest (line 80) | def distance_to_closest(self, ps: Iterable[_TPosLike]) -> float: method furthest (line 93) | def furthest(self, ps: Iterable[_TPosLike]) -> _TPosLike: method distance_to_furthest (line 101) | def distance_to_furthest(self, ps: Iterable[_PosLike]) -> float: method offset (line 115) | def offset(self: T, p: _PointLike) -> T: method unit_axes_towards (line 122) | def unit_axes_towards(self: T, p: _PointLike) -> T: method towards (line 129) | def towards(self: T, p: _PosLike, distance: float = 1, limit: bool = F... method __eq__ (line 150) | def __eq__(self, other: Any) -> bool: method __hash__ (line 156) | def __hash__(self) -> int: class Point2 (line 160) | class Point2(Pointlike): method from_proto (line 164) | def from_proto( method as_Point2D (line 173) | def as_Point2D(self) -> common_pb.Point2D: method as_PointI (line 177) | def as_PointI(self) -> common_pb.PointI: method rounded (line 182) | def rounded(self) -> Point2: method length (line 186) | def length(self) -> float: method normalized (line 191) | def normalized(self: Point2 | Point3) -> Point2: method x (line 199) | def x(self) -> float: method y (line 203) | def y(self) -> float: method to2 (line 207) | def to2(self) -> Point2: method to3 (line 211) | def to3(self) -> Point3: method round (line 214) | def round(self, decimals: int) -> Point2: method offset (line 218) | def offset(self: T, p: _PointLike) -> T: method random_on_distance (line 221) | def random_on_distance(self, distance: float | tuple[float, float] | l... method towards_with_random_angle (line 232) | def towards_with_random_angle( method circle_intersection (line 243) | def circle_intersection(self, p: Point2, r: float) -> set[Point2]: method neighbors4 (line 271) | def neighbors4(self: T) -> set[T]: method neighbors8 (line 280) | def neighbors8(self: T) -> set[T]: method negative_offset (line 288) | def negative_offset(self: T, other: Point2) -> T: method __add__ (line 291) | def __add__(self, other: Point2) -> Point2: method __sub__ (line 294) | def __sub__(self, other: Point2) -> Point2: method __neg__ (line 297) | def __neg__(self: T) -> T: method __abs__ (line 300) | def __abs__(self) -> float: method __bool__ (line 303) | def __bool__(self) -> bool: method __mul__ (line 306) | def __mul__(self, other: _PointLike | float) -> Point2: method __rmul__ (line 311) | def __rmul__(self, other: _PointLike | float) -> Point2: method __truediv__ (line 314) | def __truediv__(self, other: float | Point2) -> Point2: method is_same_as (line 319) | def is_same_as(self, other: Point2, dist: float = 0.001) -> bool: method direction_vector (line 322) | def direction_vector(self, other: Point2) -> Point2: method manhattan_distance (line 326) | def manhattan_distance(self, other: Point2) -> float: method center (line 333) | def center(points: list[Point2]) -> Point2: class Point3 (line 343) | class Point3(Point2): method from_proto (line 345) | def from_proto(cls, data: common_pb.Point | Point3) -> Point3: method as_Point (line 352) | def as_Point(self) -> common_pb.Point: method rounded (line 356) | def rounded(self) -> Point3: method z (line 360) | def z(self) -> float: method to3 (line 364) | def to3(self) -> Point3: method __add__ (line 367) | def __add__(self, other: Point2 | Point3) -> Point3: class Size (line 373) | class Size(Point2): method from_proto (line 375) | def from_proto( method width (line 384) | def width(self) -> float: method height (line 388) | def height(self) -> float: class Rect (line 392) | class Rect(Point2): method from_proto (line 394) | def from_proto(cls, data: common_pb.RectangleI) -> Rect: method x (line 402) | def x(self) -> float: method y (line 406) | def y(self) -> float: method width (line 410) | def width(self) -> float: method height (line 414) | def height(self) -> float: method right (line 418) | def right(self) -> float: method top (line 423) | def top(self) -> float: method size (line 428) | def size(self) -> Size: method center (line 432) | def center(self) -> Point2: method offset (line 435) | def offset(self, p: _PointLike) -> Rect: FILE: sc2/power_source.py class PowerSource (line 10) | class PowerSource: method __post_init__ (line 15) | def __post_init__(self) -> None: method from_proto (line 19) | def from_proto(cls, proto: raw_pb2.PowerSource) -> PowerSource: method covers (line 22) | def covers(self, position: Point2) -> bool: method __repr__ (line 25) | def __repr__(self) -> str: class PsionicMatrix (line 30) | class PsionicMatrix: method from_proto (line 34) | def from_proto(cls, proto: list[raw_pb2.PowerSource]) -> PsionicMatrix: method covers (line 37) | def covers(self, position: Point2) -> bool: FILE: sc2/protocol.py class ProtocolError (line 17) | class ProtocolError(Exception): method is_game_over_error (line 19) | def is_game_over_error(self) -> bool: class ConnectionAlreadyClosedError (line 23) | class ConnectionAlreadyClosedError(ProtocolError): class Protocol (line 27) | class Protocol: method __init__ (line 28) | def __init__(self, ws: ClientWebSocketResponse) -> None: method __request (line 38) | async def __request(self, request: sc_pb.Request) -> sc_pb.Response: method _execute (line 70) | async def _execute(self, create_game: sc_pb.RequestCreateGame) -> sc_p... method _execute (line 72) | async def _execute(self, join_game: sc_pb.RequestJoinGame) -> sc_pb.Re... method _execute (line 74) | async def _execute(self, restart_game: sc_pb.RequestRestartGame) -> sc... method _execute (line 76) | async def _execute(self, start_replay: sc_pb.RequestStartReplay) -> sc... method _execute (line 78) | async def _execute(self, leave_game: sc_pb.RequestLeaveGame) -> sc_pb.... method _execute (line 80) | async def _execute(self, quick_save: sc_pb.RequestQuickSave) -> sc_pb.... method _execute (line 82) | async def _execute(self, quick_load: sc_pb.RequestQuickLoad) -> sc_pb.... method _execute (line 84) | async def _execute(self, quit: sc_pb.RequestQuit) -> sc_pb.Response: ... method _execute (line 86) | async def _execute(self, game_info: sc_pb.RequestGameInfo) -> sc_pb.Re... method _execute (line 88) | async def _execute(self, action: sc_pb.RequestAction) -> sc_pb.Respons... method _execute (line 90) | async def _execute(self, observation: sc_pb.RequestObservation) -> sc_... method _execute (line 92) | async def _execute(self, obs_action: sc_pb.RequestObserverAction) -> s... method _execute (line 94) | async def _execute(self, step: sc_pb.RequestStep) -> sc_pb.Response: ... method _execute (line 96) | async def _execute(self, data: sc_pb.RequestData) -> sc_pb.Response: ... method _execute (line 98) | async def _execute(self, query: RequestQuery) -> sc_pb.Response: ... method _execute (line 100) | async def _execute(self, save_replay: sc_pb.RequestSaveReplay) -> sc_p... method _execute (line 102) | async def _execute(self, map_command: sc_pb.RequestMapCommand) -> sc_p... method _execute (line 104) | async def _execute(self, replay_info: sc_pb.RequestReplayInfo) -> sc_p... method _execute (line 106) | async def _execute(self, available_maps: sc_pb.RequestAvailableMaps) -... method _execute (line 108) | async def _execute(self, save_map: sc_pb.RequestSaveMap) -> sc_pb.Resp... method _execute (line 110) | async def _execute(self, ping: sc_pb.RequestPing) -> sc_pb.Response: ... method _execute (line 112) | async def _execute(self, debug: sc_pb.RequestDebug) -> sc_pb.Response:... method _execute (line 113) | async def _execute(self, **kwargs) -> sc_pb.Response: method ping (line 129) | async def ping(self): method quit (line 133) | async def quit(self) -> None: FILE: sc2/proxy.py class Proxy (line 23) | class Proxy: method __init__ (line 29) | def __init__( method parse_request (line 50) | async def parse_request(self, msg) -> None: method get_response (line 68) | async def get_response(self): method parse_response (line 88) | async def parse_response(self, response_bytes): method get_result (line 115) | async def get_result(self) -> None: method proxy_handler (line 127) | async def proxy_handler(self, request) -> WebSocketResponse: method play_with_proxy (line 168) | async def play_with_proxy(self, startport): FILE: sc2/renderer.py class Renderer (line 18) | class Renderer: method __init__ (line 19) | def __init__(self, client: Client, map_size: tuple[float, float], mini... method render (line 34) | async def render(self, observation: ResponseObservation) -> None: method _update_window (line 130) | async def _update_window(self) -> None: method _on_mouse_press (line 146) | def _on_mouse_press(self, x, y, button, _modifiers) -> None: method _on_mouse_release (line 153) | def _on_mouse_release(self, x, y, button, _modifiers) -> None: method _on_mouse_drag (line 160) | def _on_mouse_drag(self, x, y, _dx, _dy, buttons, _modifiers) -> None: FILE: sc2/sc2process.py class KillSwitch (line 26) | class KillSwitch: method add (line 30) | def add(cls, value) -> None: method kill_all (line 35) | def kill_all(cls) -> None: class SC2Process (line 41) | class SC2Process: method __init__ (line 57) | def __init__( method __aenter__ (line 98) | async def __aenter__(self) -> Controller: method __aexit__ (line 118) | async def __aexit__(self, *args) -> None: method ws_url (line 124) | def ws_url(self) -> str: method versions (line 128) | def versions(self): method find_data_hash (line 133) | def find_data_hash(self, target_sc2_version: str) -> str | None: method find_base_dir (line 141) | def find_base_dir(self, target_sc2_version: str) -> str | None: method _launch (line 148) | def _launch(self): method _connect (line 214) | async def _connect(self) -> ClientWebSocketResponse: method _close_connection (line 242) | async def _close_connection(self) -> None: method _clean (line 251) | def _clean(self, verbose: bool = True) -> None: FILE: sc2/score.py class ScoreDetails (line 6) | class ScoreDetails: method __init__ (line 11) | def __init__(self, proto: score_pb2.Score) -> None: method summary (line 16) | def summary(self) -> list[list[float]]: method score_type (line 112) | def score_type(self): method score (line 116) | def score(self): method idle_production_time (line 120) | def idle_production_time(self): method idle_worker_time (line 124) | def idle_worker_time(self): method total_value_units (line 128) | def total_value_units(self): method total_value_structures (line 132) | def total_value_structures(self): method killed_value_units (line 136) | def killed_value_units(self): method killed_value_structures (line 140) | def killed_value_structures(self): method collected_minerals (line 144) | def collected_minerals(self): method collected_vespene (line 148) | def collected_vespene(self): method collection_rate_minerals (line 152) | def collection_rate_minerals(self): method collection_rate_vespene (line 156) | def collection_rate_vespene(self): method spent_minerals (line 160) | def spent_minerals(self): method spent_vespene (line 164) | def spent_vespene(self): method food_used_none (line 168) | def food_used_none(self): method food_used_army (line 172) | def food_used_army(self): method food_used_economy (line 176) | def food_used_economy(self): method food_used_technology (line 180) | def food_used_technology(self): method food_used_upgrade (line 184) | def food_used_upgrade(self): method killed_minerals_none (line 188) | def killed_minerals_none(self): method killed_minerals_army (line 192) | def killed_minerals_army(self): method killed_minerals_economy (line 196) | def killed_minerals_economy(self): method killed_minerals_technology (line 200) | def killed_minerals_technology(self): method killed_minerals_upgrade (line 204) | def killed_minerals_upgrade(self): method killed_vespene_none (line 208) | def killed_vespene_none(self): method killed_vespene_army (line 212) | def killed_vespene_army(self): method killed_vespene_economy (line 216) | def killed_vespene_economy(self): method killed_vespene_technology (line 220) | def killed_vespene_technology(self): method killed_vespene_upgrade (line 224) | def killed_vespene_upgrade(self): method lost_minerals_none (line 228) | def lost_minerals_none(self): method lost_minerals_army (line 232) | def lost_minerals_army(self): method lost_minerals_economy (line 236) | def lost_minerals_economy(self): method lost_minerals_technology (line 240) | def lost_minerals_technology(self): method lost_minerals_upgrade (line 244) | def lost_minerals_upgrade(self): method lost_vespene_none (line 248) | def lost_vespene_none(self): method lost_vespene_army (line 252) | def lost_vespene_army(self): method lost_vespene_economy (line 256) | def lost_vespene_economy(self): method lost_vespene_technology (line 260) | def lost_vespene_technology(self): method lost_vespene_upgrade (line 264) | def lost_vespene_upgrade(self): method friendly_fire_minerals_none (line 268) | def friendly_fire_minerals_none(self): method friendly_fire_minerals_army (line 272) | def friendly_fire_minerals_army(self): method friendly_fire_minerals_economy (line 276) | def friendly_fire_minerals_economy(self): method friendly_fire_minerals_technology (line 280) | def friendly_fire_minerals_technology(self): method friendly_fire_minerals_upgrade (line 284) | def friendly_fire_minerals_upgrade(self): method friendly_fire_vespene_none (line 288) | def friendly_fire_vespene_none(self): method friendly_fire_vespene_army (line 292) | def friendly_fire_vespene_army(self): method friendly_fire_vespene_economy (line 296) | def friendly_fire_vespene_economy(self): method friendly_fire_vespene_technology (line 300) | def friendly_fire_vespene_technology(self): method friendly_fire_vespene_upgrade (line 304) | def friendly_fire_vespene_upgrade(self): method used_minerals_none (line 308) | def used_minerals_none(self): method used_minerals_army (line 312) | def used_minerals_army(self): method used_minerals_economy (line 316) | def used_minerals_economy(self): method used_minerals_technology (line 320) | def used_minerals_technology(self): method used_minerals_upgrade (line 324) | def used_minerals_upgrade(self): method used_vespene_none (line 328) | def used_vespene_none(self): method used_vespene_army (line 332) | def used_vespene_army(self): method used_vespene_economy (line 336) | def used_vespene_economy(self): method used_vespene_technology (line 340) | def used_vespene_technology(self): method used_vespene_upgrade (line 344) | def used_vespene_upgrade(self): method total_used_minerals_none (line 348) | def total_used_minerals_none(self): method total_used_minerals_army (line 352) | def total_used_minerals_army(self): method total_used_minerals_economy (line 356) | def total_used_minerals_economy(self): method total_used_minerals_technology (line 360) | def total_used_minerals_technology(self): method total_used_minerals_upgrade (line 364) | def total_used_minerals_upgrade(self): method total_used_vespene_none (line 368) | def total_used_vespene_none(self): method total_used_vespene_army (line 372) | def total_used_vespene_army(self): method total_used_vespene_economy (line 376) | def total_used_vespene_economy(self): method total_used_vespene_technology (line 380) | def total_used_vespene_technology(self): method total_used_vespene_upgrade (line 384) | def total_used_vespene_upgrade(self): method total_damage_dealt_life (line 388) | def total_damage_dealt_life(self): method total_damage_dealt_shields (line 392) | def total_damage_dealt_shields(self): method total_damage_dealt_energy (line 396) | def total_damage_dealt_energy(self): method total_damage_taken_life (line 400) | def total_damage_taken_life(self): method total_damage_taken_shields (line 404) | def total_damage_taken_shields(self): method total_damage_taken_energy (line 408) | def total_damage_taken_energy(self): method total_healed_life (line 412) | def total_healed_life(self): method total_healed_shields (line 416) | def total_healed_shields(self): method total_healed_energy (line 420) | def total_healed_energy(self): method current_apm (line 424) | def current_apm(self): method current_effective_apm (line 428) | def current_effective_apm(self): FILE: sc2/unit.py class RallyTarget (line 69) | class RallyTarget: method from_proto (line 74) | def from_proto(cls, proto: raw_pb2.RallyTarget) -> RallyTarget: class UnitOrder (line 82) | class UnitOrder: method from_proto (line 88) | def from_proto(cls, proto: raw_pb2.UnitOrder, bot_object: BotAI) -> Un... method __repr__ (line 100) | def __repr__(self) -> str: class Unit (line 104) | class Unit(HasPosition2D): method __init__ (line 107) | def __init__( method __repr__ (line 127) | def __repr__(self) -> str: method type_id (line 132) | def type_id(self) -> UnitTypeId: method _type_data (line 138) | def _type_data(self) -> UnitTypeData: method _creation_ability (line 143) | def _creation_ability(self) -> AbilityData | None: method name (line 148) | def name(self) -> str: method race (line 153) | def race(self) -> Race: method tag (line 158) | def tag(self) -> int: method is_structure (line 163) | def is_structure(self) -> bool: method is_light (line 168) | def is_light(self) -> bool: method is_armored (line 173) | def is_armored(self) -> bool: method is_biological (line 178) | def is_biological(self) -> bool: method is_mechanical (line 183) | def is_mechanical(self) -> bool: method is_massive (line 188) | def is_massive(self) -> bool: method is_psionic (line 193) | def is_psionic(self) -> bool: method tech_alias (line 198) | def tech_alias(self) -> list[UnitTypeId] | None: method unit_alias (line 205) | def unit_alias(self) -> UnitTypeId | None: method _weapons (line 212) | def _weapons(self): method can_attack (line 217) | def can_attack(self) -> bool: method can_attack_both (line 223) | def can_attack_both(self) -> bool: method can_attack_ground (line 228) | def can_attack_ground(self) -> bool: method ground_dps (line 237) | def ground_dps(self) -> float: method ground_range (line 246) | def ground_range(self) -> float: method can_attack_air (line 259) | def can_attack_air(self) -> bool: method air_dps (line 268) | def air_dps(self) -> float: method air_range (line 277) | def air_range(self) -> float: method bonus_damage (line 288) | def bonus_damage(self) -> tuple[float, str] | None: method armor (line 300) | def armor(self) -> float: method sight_range (line 305) | def sight_range(self) -> float: method movement_speed (line 310) | def movement_speed(self) -> float: method real_speed (line 317) | def real_speed(self) -> float: method calculate_speed (line 321) | def calculate_speed(self, upgrades: set[UpgradeId] | None = None) -> f... method distance_per_step (line 370) | def distance_per_step(self) -> float: method distance_to_weapon_ready (line 376) | def distance_to_weapon_ready(self) -> float: method is_mineral_field (line 381) | def is_mineral_field(self) -> bool: method is_vespene_geyser (line 386) | def is_vespene_geyser(self) -> bool: method health (line 391) | def health(self) -> float: method health_max (line 396) | def health_max(self) -> float: method health_percentage (line 401) | def health_percentage(self) -> float: method shield (line 408) | def shield(self) -> float: method shield_max (line 413) | def shield_max(self) -> float: method shield_percentage (line 418) | def shield_percentage(self) -> float: method shield_health_percentage (line 425) | def shield_health_percentage(self) -> float: method energy (line 434) | def energy(self) -> float: method energy_max (line 439) | def energy_max(self) -> float: method energy_percentage (line 444) | def energy_percentage(self) -> float: method age_in_frames (line 451) | def age_in_frames(self) -> int: method age (line 456) | def age(self) -> float: method is_memory (line 461) | def is_memory(self) -> bool: method is_snapshot (line 466) | def is_snapshot(self) -> bool: method is_visible (line 478) | def is_visible(self) -> bool: method is_placeholder (line 488) | def is_placeholder(self) -> bool: method alliance (line 506) | def alliance(self) -> int: method is_mine (line 511) | def is_mine(self) -> bool: method is_enemy (line 516) | def is_enemy(self) -> bool: method owner_id (line 521) | def owner_id(self) -> int: method position_tuple (line 526) | def position_tuple(self) -> tuple[float, float]: method position (line 531) | def position(self) -> Point2: method position3d (line 536) | def position3d(self) -> Point3: method distance_to (line 540) | def distance_to(self, p: Unit | _PointLike) -> float: method distance_to_squared (line 550) | def distance_to_squared(self, p: Unit | _PointLike) -> float: method target_in_range (line 560) | def target_in_range(self, target: Unit, bonus_distance: float = 0) -> ... method in_ability_cast_range (line 579) | def in_ability_cast_range(self, ability_id: AbilityId, target: Unit | ... method calculate_damage_vs_target (line 603) | def calculate_damage_vs_target( method calculate_dps_vs_target (line 811) | def calculate_dps_vs_target( method facing (line 832) | def facing(self) -> float: method is_facing (line 836) | def is_facing(self, other_unit: Unit, angle_error: float = 0.05) -> bool: method footprint_radius (line 852) | def footprint_radius(self) -> float | None: method radius (line 864) | def radius(self) -> float: method build_progress (line 869) | def build_progress(self) -> float: method is_ready (line 874) | def is_ready(self) -> bool: method cloak (line 879) | def cloak(self) -> CloakState: method is_cloaked (line 886) | def is_cloaked(self) -> bool: method is_revealed (line 891) | def is_revealed(self) -> bool: method can_be_attacked (line 896) | def can_be_attacked(self) -> bool: method buffs (line 901) | def buffs(self) -> frozenset[BuffId]: method is_carrying_minerals (line 906) | def is_carrying_minerals(self) -> bool: method is_carrying_vespene (line 911) | def is_carrying_vespene(self) -> bool: method is_carrying_resource (line 916) | def is_carrying_resource(self) -> bool: method detect_range (line 921) | def detect_range(self) -> float: method is_detector (line 926) | def is_detector(self) -> bool: method radar_range (line 932) | def radar_range(self) -> float: method is_selected (line 936) | def is_selected(self) -> bool: method is_on_screen (line 941) | def is_on_screen(self) -> bool: method is_blip (line 946) | def is_blip(self) -> bool: method is_powered (line 951) | def is_powered(self) -> bool: method is_active (line 956) | def is_active(self) -> bool: method mineral_contents (line 963) | def mineral_contents(self) -> int: method vespene_contents (line 968) | def vespene_contents(self) -> int: method has_vespene (line 973) | def has_vespene(self) -> bool: method is_flying (line 979) | def is_flying(self) -> bool: method is_burrowed (line 984) | def is_burrowed(self) -> bool: method is_hallucination (line 989) | def is_hallucination(self) -> bool: method attack_upgrade_level (line 994) | def attack_upgrade_level(self) -> int: method armor_upgrade_level (line 1000) | def armor_upgrade_level(self) -> int: method shield_upgrade_level (line 1005) | def shield_upgrade_level(self) -> int: method buff_duration_remain (line 1011) | def buff_duration_remain(self) -> int: method buff_duration_max (line 1017) | def buff_duration_max(self) -> int: method orders (line 1025) | def orders(self) -> list[UnitOrder]: method order_target (line 1032) | def order_target(self) -> int | Point2 | None: method is_idle (line 1043) | def is_idle(self) -> bool: method is_using_ability (line 1047) | def is_using_ability(self, abilities: AbilityId | set[AbilityId]) -> b... method is_moving (line 1057) | def is_moving(self) -> bool: method is_attacking (line 1063) | def is_attacking(self) -> bool: method is_patrolling (line 1069) | def is_patrolling(self) -> bool: method is_gathering (line 1075) | def is_gathering(self) -> bool: method is_returning (line 1081) | def is_returning(self) -> bool: method is_collecting (line 1087) | def is_collecting(self) -> bool: method is_constructing_scv (line 1093) | def is_constructing_scv(self) -> bool: method is_transforming (line 1099) | def is_transforming(self) -> bool: method is_repairing (line 1105) | def is_repairing(self) -> bool: method add_on_tag (line 1111) | def add_on_tag(self) -> int: method has_add_on (line 1116) | def has_add_on(self) -> bool: method has_techlab (line 1121) | def has_techlab(self) -> bool: method has_reactor (line 1126) | def has_reactor(self) -> bool: method add_on_land_position (line 1131) | def add_on_land_position(self) -> Point2: method add_on_position (line 1140) | def add_on_position(self) -> Point2: method passengers (line 1153) | def passengers(self) -> set[Unit]: method passengers_tags (line 1159) | def passengers_tags(self) -> set[int]: method cargo_used (line 1164) | def cargo_used(self) -> int: method has_cargo (line 1170) | def has_cargo(self) -> bool: method cargo_size (line 1175) | def cargo_size(self) -> int: method cargo_max (line 1180) | def cargo_max(self) -> int: method cargo_left (line 1185) | def cargo_left(self) -> int: method assigned_harvesters (line 1190) | def assigned_harvesters(self) -> int: method ideal_harvesters (line 1195) | def ideal_harvesters(self) -> int: method surplus_harvesters (line 1201) | def surplus_harvesters(self) -> int: method weapon_cooldown (line 1209) | def weapon_cooldown(self) -> float: method weapon_ready (line 1224) | def weapon_ready(self) -> bool: method engaged_target_tag (line 1229) | def engaged_target_tag(self) -> int: method rally_targets (line 1234) | def rally_targets(self) -> list[RallyTarget]: method has_buff (line 1240) | def has_buff(self, buff: BuffId) -> bool: method train (line 1248) | def train( method build (line 1272) | def build( method build_gas (line 1307) | def build_gas( method research (line 1338) | def research( method warp_in (line 1361) | def warp_in( method attack (line 1384) | def attack(self, target: Unit | Point2, queue: bool = False) -> UnitCo... method smart (line 1393) | def smart(self, target: Unit | Point2, queue: bool = False) -> UnitCom... method gather (line 1401) | def gather(self, target: Unit, queue: bool = False) -> UnitCommand | b... method return_resource (line 1410) | def return_resource(self, queue: bool = False) -> UnitCommand | bool: method move (line 1417) | def move(self, position: Unit | Point2, queue: bool = False) -> UnitCo... method hold_position (line 1426) | def hold_position(self, queue: bool = False) -> UnitCommand | bool: method stop (line 1433) | def stop(self, queue: bool = False) -> UnitCommand | bool: method patrol (line 1442) | def patrol(self, position: Point2, queue: bool = False) -> UnitCommand... method repair (line 1452) | def repair(self, repair_target: Unit, queue: bool = False) -> UnitComm... method __hash__ (line 1460) | def __hash__(self) -> int: method __eq__ (line 1463) | def __eq__(self, other: Unit | Any) -> bool: method __call__ (line 1469) | def __call__( FILE: sc2/unit_command.py class UnitCommand (line 13) | class UnitCommand: method __init__ (line 14) | def __init__( method combining_tuple (line 39) | def combining_tuple(self) -> tuple[AbilityId, Unit | Point2 | None, bo... method __repr__ (line 42) | def __repr__(self) -> str: FILE: sc2/units.py class Units (line 17) | class Units(list[Unit]): method from_proto (line 21) | def from_proto(cls, units: list[raw_pb2.Unit], bot_object: BotAI) -> U... method __init__ (line 24) | def __init__(self, units: Iterable[Unit], bot_object: BotAI) -> None: method __call__ (line 32) | def __call__(self, unit_types: UnitTypeId | Iterable[UnitTypeId]) -> U... method __iter__ (line 39) | def __iter__(self) -> Generator[Unit, None, None]: method copy (line 42) | def copy(self) -> Units: method __or__ (line 49) | def __or__(self, other: Units) -> Units: method __add__ (line 61) | def __add__(self, other: Units) -> Units: method __and__ (line 73) | def __and__(self, other: Units) -> Units: method __sub__ (line 82) | def __sub__(self, other: Units) -> Units: method __hash__ (line 91) | def __hash__(self) -> int: method amount (line 95) | def amount(self) -> int: method empty (line 99) | def empty(self) -> bool: method exists (line 103) | def exists(self) -> bool: method find_by_tag (line 106) | def find_by_tag(self, tag: int) -> Unit | None: method by_tag (line 115) | def by_tag(self, tag: int) -> Unit: method first (line 125) | def first(self) -> Unit: method take (line 129) | def take(self, n: int) -> Units: method random (line 138) | def random(self) -> Unit: method random_or (line 142) | def random_or(self, other: Any) -> Unit: method random_group_of (line 145) | def random_group_of(self, n: int) -> Units: method in_attack_range_of (line 153) | def in_attack_range_of(self, unit: Unit, bonus_distance: float = 0) ->... method closest_distance_to (line 178) | def closest_distance_to(self, position: Unit | Point2) -> float: method furthest_distance_to (line 196) | def furthest_distance_to(self, position: Unit | Point2) -> float: method closest_to (line 215) | def closest_to(self, position: Unit | Point2) -> Unit: method furthest_to (line 238) | def furthest_to(self, position: Unit | Point2) -> Unit: method closer_than (line 260) | def closer_than(self, distance: float, position: Unit | Point2) -> Units: method further_than (line 286) | def further_than(self, distance: float, position: Unit | Point2) -> Un... method in_distance_between (line 312) | def in_distance_between( method closest_n_units (line 344) | def closest_n_units(self, position: Unit | Point2, n: int) -> Units: method furthest_n_units (line 362) | def furthest_n_units(self, position: Unit | Point2, n: int) -> Units: method in_distance_of_group (line 380) | def in_distance_of_group(self, other_units: Units, distance: float) ->... method in_closest_distance_to_group (line 408) | def in_closest_distance_to_group(self, other_units: Units) -> Unit: method _list_sorted_closest_to_distance (line 424) | def _list_sorted_closest_to_distance(self, position: Unit | Point2, di... method n_closest_to_distance (line 440) | def n_closest_to_distance(self, position: Point2, distance: float, n: ... method n_furthest_to_distance (line 450) | def n_furthest_to_distance(self, position: Point2, distance: float, n:... method subgroup (line 458) | def subgroup(self, units: Iterable[Unit]) -> Units: method filter (line 465) | def filter(self, pred: Callable[[Unit], Any]) -> Units: method sorted (line 488) | def sorted(self, key: Callable[[Unit], Any], reverse: bool = False) ->... method _list_sorted_by_distance_to (line 491) | def _list_sorted_by_distance_to(self, position: Unit | Point2, reverse... method sorted_by_distance_to (line 505) | def sorted_by_distance_to(self, position: Unit | Point2, reverse: bool... method tags_in (line 513) | def tags_in(self, other: Iterable[int]) -> Units: method tags_not_in (line 527) | def tags_not_in(self, other: Iterable[int]) -> Units: method of_type (line 541) | def of_type(self, other: UnitTypeId | Iterable[UnitTypeId]) -> Units: method exclude_type (line 557) | def exclude_type(self, other: UnitTypeId | Iterable[UnitTypeId]) -> Un... method same_tech (line 573) | def same_tech(self, other: set[UnitTypeId]) -> Units: method same_unit (line 610) | def same_unit(self, other: UnitTypeId | Iterable[UnitTypeId]) -> Units: method center (line 643) | def center(self) -> Point2: method selected (line 654) | def selected(self) -> Units: method tags (line 659) | def tags(self) -> set[int]: method ready (line 664) | def ready(self) -> Units: method not_ready (line 669) | def not_ready(self) -> Units: method idle (line 674) | def idle(self) -> Units: method owned (line 679) | def owned(self) -> Units: method enemy (line 684) | def enemy(self) -> Units: method flying (line 689) | def flying(self) -> Units: method not_flying (line 694) | def not_flying(self) -> Units: method structure (line 699) | def structure(self) -> Units: method not_structure (line 704) | def not_structure(self) -> Units: method gathering (line 709) | def gathering(self) -> Units: method returning (line 714) | def returning(self) -> Units: method collecting (line 719) | def collecting(self) -> Units: method visible (line 724) | def visible(self) -> Units: method mineral_field (line 730) | def mineral_field(self) -> Units: method vespene_geyser (line 735) | def vespene_geyser(self) -> Units: method prefer_idle (line 740) | def prefer_idle(self) -> Units: FILE: sc2/wsl.py function win_path_to_wsl_path (line 14) | def win_path_to_wsl_path(path) -> Path: function wsl_path_to_win_path (line 19) | def wsl_path_to_win_path(path) -> PureWindowsPath: function get_wsl_home (line 24) | def get_wsl_home(): function run (line 43) | def run(popen_args, sc2_cwd) -> subprocess.Popen[str]: function kill (line 57) | def kill(wsl_process) -> bool: function detect (line 73) | def detect() -> str | None: FILE: test/autotest_bot.py class TestBot (line 18) | class TestBot(BotAI): method __init__ (line 19) | def __init__(self): method on_start (line 41) | async def on_start(self): method on_step (line 46) | async def on_step(self, iteration): method clean_up_center (line 71) | async def clean_up_center(self): method test_botai_properties (line 87) | async def test_botai_properties(self): method test_botai_functions (line 110) | async def test_botai_functions(self): method test_game_state_static_variables (line 127) | async def test_game_state_static_variables(self): method test_game_info_static_variables (line 137) | async def test_game_info_static_variables(self): method test_botai_actions1 (line 143) | async def test_botai_actions1(self): method test_botai_actions2 (line 154) | async def test_botai_actions2(self): method test_botai_actions3 (line 187) | async def test_botai_actions3(self): method test_botai_actions4 (line 205) | async def test_botai_actions4(self): method test_botai_actions5 (line 216) | async def test_botai_actions5(self): method test_botai_actions6 (line 240) | async def test_botai_actions6(self): method test_botai_actions7 (line 266) | async def test_botai_actions7(self): method test_botai_actions8 (line 290) | async def test_botai_actions8(self): method test_botai_actions9 (line 322) | async def test_botai_actions9(self): method test_botai_actions10 (line 363) | async def test_botai_actions10(self): method test_botai_actions11 (line 403) | async def test_botai_actions11(self): method test_botai_actions12 (line 436) | async def test_botai_actions12(self): class EmptyBot (line 481) | class EmptyBot(BotAI): method on_start (line 482) | async def on_start(self): method on_step (line 486) | async def on_step(self, iteration: int): function main (line 501) | def main(): FILE: test/battery_overcharge_bot.py class BatteryOverchargeBot (line 16) | class BatteryOverchargeBot(BotAI): method on_start (line 17) | async def on_start(self): method on_step (line 27) | async def on_step(self, iteration): function main (line 42) | def main(): FILE: test/benchmark_array_creation.py function numpy_array (line 12) | def numpy_array(x, y): function numpy_array_tuple (line 17) | def numpy_array_tuple(my_tuple): function numpy_asarray (line 22) | def numpy_asarray(x, y): function numpy_asarray_tuple (line 27) | def numpy_asarray_tuple(my_tuple): function numpy_asanyarray (line 32) | def numpy_asanyarray(x, y): function numpy_asanyarray_tuple (line 37) | def numpy_asanyarray_tuple(my_tuple): function numpy_fromiter (line 42) | def numpy_fromiter(x, y): function numpy_fromiter_tuple (line 47) | def numpy_fromiter_tuple(my_tuple): function numpy_fromiter_np_float (line 52) | def numpy_fromiter_np_float(x, y): function numpy_fromiter_np_float_tuple (line 57) | def numpy_fromiter_np_float_tuple(my_tuple): function numpy_zeros (line 62) | def numpy_zeros(x, y): function numpy_ones (line 70) | def numpy_ones(x, y): function test_numpy_array (line 82) | def test_numpy_array(benchmark): function test_numpy_array_tuple (line 87) | def test_numpy_array_tuple(benchmark): function test_numpy_asarray (line 92) | def test_numpy_asarray(benchmark): function test_numpy_asarray_tuple (line 97) | def test_numpy_asarray_tuple(benchmark): function test_numpy_asanyarray (line 102) | def test_numpy_asanyarray(benchmark): function test_numpy_asanyarray_tuple (line 107) | def test_numpy_asanyarray_tuple(benchmark): function test_numpy_fromiter (line 112) | def test_numpy_fromiter(benchmark): function test_numpy_fromiter_tuple (line 117) | def test_numpy_fromiter_tuple(benchmark): function test_numpy_fromiter_np_float (line 122) | def test_numpy_fromiter_np_float(benchmark): function test_numpy_fromiter_np_float_tuple (line 127) | def test_numpy_fromiter_np_float_tuple(benchmark): function test_numpy_zeros (line 132) | def test_numpy_zeros(benchmark): function test_numpy_ones (line 137) | def test_numpy_ones(benchmark): FILE: test/benchmark_bot_ai_init.py function _test_run_bot_ai_init_on_all_maps (line 8) | def _test_run_bot_ai_init_on_all_maps(pickle_data: list[tuple[Any, Any, ... function test_bench_bot_ai_init (line 13) | def test_bench_bot_ai_init(benchmark): FILE: test/benchmark_distance_two_points.py function distance_to_python_raw (line 17) | def distance_to_python_raw(s, p): function distance_to_squared_python_raw (line 21) | def distance_to_squared_python_raw(s, p): function distance_to_math_dist (line 27) | def distance_to_math_dist(s, p): function distance_to_math_hypot (line 31) | def distance_to_math_hypot(s, p): function distance_scipy_euclidean (line 35) | def distance_scipy_euclidean(p1, p2) -> int | float: function distance_numpy_linalg_norm (line 42) | def distance_numpy_linalg_norm(p1, p2): function distance_sum_squared_sqrt (line 47) | def distance_sum_squared_sqrt(p1, p2) -> int | float: function distance_sum_squared (line 52) | def distance_sum_squared(p1, p2) -> int | float: function check_result (line 93) | def check_result(result1, result2, accuracy=1e-5): function test_distance_to_math_dist (line 99) | def test_distance_to_math_dist(benchmark): function test_distance_to_math_hypot (line 104) | def test_distance_to_math_hypot(benchmark): function test_distance_to_python_raw (line 109) | def test_distance_to_python_raw(benchmark): function test_distance_to_squared_python_raw (line 114) | def test_distance_to_squared_python_raw(benchmark): function test_distance_scipy_euclidean (line 119) | def test_distance_scipy_euclidean(benchmark): function test_distance_numpy_linalg_norm (line 124) | def test_distance_numpy_linalg_norm(benchmark): function test_distance_sum_squared_sqrt (line 129) | def test_distance_sum_squared_sqrt(benchmark): function test_distance_sum_squared (line 134) | def test_distance_sum_squared(benchmark): FILE: test/benchmark_distances_cdist.py function distance_matrix_scipy_cdist_braycurtis (line 7) | def distance_matrix_scipy_cdist_braycurtis(ps): function distance_matrix_scipy_cdist_canberra (line 12) | def distance_matrix_scipy_cdist_canberra(ps): function distance_matrix_scipy_cdist_chebyshev (line 17) | def distance_matrix_scipy_cdist_chebyshev(ps): function distance_matrix_scipy_cdist_cityblock (line 22) | def distance_matrix_scipy_cdist_cityblock(ps): function distance_matrix_scipy_cdist_correlation (line 27) | def distance_matrix_scipy_cdist_correlation(ps): function distance_matrix_scipy_cdist_cosine (line 32) | def distance_matrix_scipy_cdist_cosine(ps): function distance_matrix_scipy_cdist_hamming (line 37) | def distance_matrix_scipy_cdist_hamming(ps): function distance_matrix_scipy_cdist_jaccard (line 42) | def distance_matrix_scipy_cdist_jaccard(ps): function distance_matrix_scipy_cdist_jensenshannon (line 47) | def distance_matrix_scipy_cdist_jensenshannon(ps): function distance_matrix_scipy_cdist_mahalanobis (line 52) | def distance_matrix_scipy_cdist_mahalanobis(ps): function distance_matrix_scipy_cdist_matching (line 57) | def distance_matrix_scipy_cdist_matching(ps): function distance_matrix_scipy_cdist_rogerstanimoto (line 67) | def distance_matrix_scipy_cdist_rogerstanimoto(ps): function distance_matrix_scipy_cdist_russellrao (line 72) | def distance_matrix_scipy_cdist_russellrao(ps): function distance_matrix_scipy_cdist_seuclidean (line 77) | def distance_matrix_scipy_cdist_seuclidean(ps): function distance_matrix_scipy_cdist_sokalmichener (line 82) | def distance_matrix_scipy_cdist_sokalmichener(ps): function distance_matrix_scipy_cdist_sokalsneath (line 87) | def distance_matrix_scipy_cdist_sokalsneath(ps): function distance_matrix_scipy_cdist_yule (line 97) | def distance_matrix_scipy_cdist_yule(ps): function distance_matrix_scipy_cdist (line 102) | def distance_matrix_scipy_cdist(ps): function distance_matrix_scipy_pdist (line 107) | def distance_matrix_scipy_pdist(ps): function distance_matrix_scipy_cdist_squared (line 112) | def distance_matrix_scipy_cdist_squared(ps): function distance_matrix_scipy_pdist_squared (line 117) | def distance_matrix_scipy_pdist_squared(ps): function test_distance_matrix_scipy_cdist_braycurtis (line 131) | def test_distance_matrix_scipy_cdist_braycurtis(benchmark): function test_distance_matrix_scipy_cdist_canberra (line 136) | def test_distance_matrix_scipy_cdist_canberra(benchmark): function test_distance_matrix_scipy_cdist_chebyshev (line 141) | def test_distance_matrix_scipy_cdist_chebyshev(benchmark): function test_distance_matrix_scipy_cdist_cityblock (line 146) | def test_distance_matrix_scipy_cdist_cityblock(benchmark): function test_distance_matrix_scipy_cdist_correlation (line 151) | def test_distance_matrix_scipy_cdist_correlation(benchmark): function test_distance_matrix_scipy_cdist_cosine (line 156) | def test_distance_matrix_scipy_cdist_cosine(benchmark): function test_distance_matrix_scipy_cdist_hamming (line 161) | def test_distance_matrix_scipy_cdist_hamming(benchmark): function test_distance_matrix_scipy_cdist_jaccard (line 166) | def test_distance_matrix_scipy_cdist_jaccard(benchmark): function test_distance_matrix_scipy_cdist_jensenshannon (line 171) | def test_distance_matrix_scipy_cdist_jensenshannon(benchmark): function test_distance_matrix_scipy_cdist_mahalanobis (line 176) | def test_distance_matrix_scipy_cdist_mahalanobis(benchmark): function test_distance_matrix_scipy_cdist_matching (line 181) | def test_distance_matrix_scipy_cdist_matching(benchmark): function test_distance_matrix_scipy_cdist_rogerstanimoto (line 191) | def test_distance_matrix_scipy_cdist_rogerstanimoto(benchmark): function test_distance_matrix_scipy_cdist_russellrao (line 196) | def test_distance_matrix_scipy_cdist_russellrao(benchmark): function test_distance_matrix_scipy_cdist_seuclidean (line 201) | def test_distance_matrix_scipy_cdist_seuclidean(benchmark): function test_distance_matrix_scipy_cdist_sokalmichener (line 206) | def test_distance_matrix_scipy_cdist_sokalmichener(benchmark): function test_distance_matrix_scipy_cdist_sokalsneath (line 211) | def test_distance_matrix_scipy_cdist_sokalsneath(benchmark): function test_distance_matrix_scipy_cdist_yule (line 221) | def test_distance_matrix_scipy_cdist_yule(benchmark): function test_distance_matrix_scipy_cdist (line 226) | def test_distance_matrix_scipy_cdist(benchmark): function test_distance_matrix_scipy_pdist (line 231) | def test_distance_matrix_scipy_pdist(benchmark): function test_distance_matrix_scipy_cdist_squared (line 236) | def test_distance_matrix_scipy_cdist_squared(benchmark): function test_distance_matrix_scipy_pdist_squared (line 241) | def test_distance_matrix_scipy_pdist_squared(benchmark): FILE: test/benchmark_distances_points_to_point.py function distance_matrix_scipy_cdist_squared (line 10) | def distance_matrix_scipy_cdist_squared(ps, p1): function distance_numpy_basic_1 (line 18) | def distance_numpy_basic_1(ps, p1): function distance_numpy_basic_2 (line 30) | def distance_numpy_basic_2(ps, p1): function distance_numpy_einsum (line 39) | def distance_numpy_einsum(ps, p1): function distance_numpy_einsum_pre_converted (line 49) | def distance_numpy_einsum_pre_converted(ps, p1): function distance_pure_python (line 86) | def distance_pure_python(ps, p1): function distance_math_hypot (line 97) | def distance_math_hypot(ps, p1): function test_distance_matrix_scipy_cdist_squared (line 134) | def test_distance_matrix_scipy_cdist_squared(benchmark): function test_distance_numpy_basic_1 (line 138) | def test_distance_numpy_basic_1(benchmark): function test_distance_numpy_basic_2 (line 142) | def test_distance_numpy_basic_2(benchmark): function test_distance_numpy_einsum (line 146) | def test_distance_numpy_einsum(benchmark): function test_distance_numpy_einsum_pre_converted (line 150) | def test_distance_numpy_einsum_pre_converted(benchmark): function test_distance_pure_python (line 164) | def test_distance_pure_python(benchmark): function test_distance_math_hypot (line 168) | def test_distance_math_hypot(benchmark): FILE: test/benchmark_distances_units.py function distance_matrix_scipy_cdist (line 8) | def distance_matrix_scipy_cdist(ps): function distance_matrix_scipy_pdist (line 13) | def distance_matrix_scipy_pdist(ps): function distance_matrix_scipy_cdist_squared (line 18) | def distance_matrix_scipy_cdist_squared(ps): function distance_matrix_scipy_pdist_squared (line 23) | def distance_matrix_scipy_pdist_squared(ps): function calc_row_idx (line 42) | def calc_row_idx(k, n): function elem_in_i_rows (line 46) | def elem_in_i_rows(i, n): function calc_col_idx (line 50) | def calc_col_idx(k, i, n): function condensed_to_square (line 54) | def condensed_to_square(k, n): function square_to_condensed (line 60) | def square_to_condensed(i, j, amount): function test_distance_matrix_scipy_cdist (line 98) | def test_distance_matrix_scipy_cdist(benchmark): function test_distance_matrix_scipy_pdist (line 103) | def test_distance_matrix_scipy_pdist(benchmark): function test_distance_matrix_scipy_cdist_squared (line 108) | def test_distance_matrix_scipy_cdist_squared(benchmark): function test_distance_matrix_scipy_pdist_squared (line 113) | def test_distance_matrix_scipy_pdist_squared(benchmark): FILE: test/benchmark_prepare_units.py function _run_prepare_units (line 11) | def _run_prepare_units(bot_objects: list[BotAI]): function test_bench_prepare_units (line 16) | def test_bench_prepare_units(benchmark): FILE: test/damagetest_bot.py class TestBot (line 16) | class TestBot(BotAI): method __init__ (line 17) | def __init__(self): method on_start (line 41) | async def on_start(self): method on_step (line 46) | async def on_step(self, iteration): method clean_up_center (line 57) | async def clean_up_center(self): method test_botai_actions1001 (line 73) | async def test_botai_actions1001(self): class EmptyBot (line 319) | class EmptyBot(BotAI): method on_start (line 320) | async def on_start(self): method on_step (line 324) | async def on_step(self, iteration: int): function main (line 339) | def main(): FILE: test/generate_pickle_files_bot.py class ExporterBot (line 25) | class ExporterBot(BotAI): method __init__ (line 26) | def __init__(self): method on_step (line 30) | async def on_step(self, iteration): method get_pickle_file_path (line 33) | def get_pickle_file_path(self) -> Path: method get_combat_file_path (line 40) | def get_combat_file_path(self) -> Path: method store_data_to_file (line 47) | async def store_data_to_file(self, file_path: Path): method on_start (line 66) | async def on_start(self): function main (line 103) | def main(): FILE: test/queries_test_bot.py class TestBot (line 24) | class TestBot(BotAI): method __init__ (line 25) | def __init__(self): method on_start (line 29) | async def on_start(self): method on_step (line 32) | async def on_step(self, iteration): method clear_map_center (line 45) | async def clear_map_center(self): method spawn_unit (line 69) | async def spawn_unit(self, unit_type: UnitTypeId | list[UnitTypeId]): method spawn_unit_enemy (line 76) | async def spawn_unit_enemy(self, unit_type: UnitTypeId | list[UnitType... method run_can_place (line 86) | async def run_can_place(self) -> bool: method run_can_place_single (line 90) | async def run_can_place_single(self) -> bool: method test_can_place_expect_true (line 94) | async def test_can_place_expect_true(self): method test_can_place_expect_false (line 140) | async def test_can_place_expect_false(self): method test_rally_points_with_rally_ability (line 193) | async def test_rally_points_with_rally_ability(self): method test_rally_points_with_smart_ability (line 219) | async def test_rally_points_with_smart_ability(self): class EmptyBot (line 250) | class EmptyBot(BotAI): method on_step (line 251) | async def on_step(self, iteration: int): function main (line 256) | def main(): FILE: test/real_time_worker_production.py class RealTimeTestBot (line 23) | class RealTimeTestBot(BotAI): method on_before_start (line 24) | async def on_before_start(self): method on_start (line 36) | async def on_start(self): method on_step (line 40) | async def on_step(self, iteration): method on_building_construction_complete (line 90) | async def on_building_construction_complete(self, unit: Unit): method on_end (line 95) | async def on_end(self, game_result: Result): function main (line 101) | def main(): FILE: test/run_example_bots_vs_computer.py function main (line 137) | async def main(): FILE: test/run_example_bots_vs_each_other.py function main (line 124) | async def main(): FILE: test/test_directions.py function rad_diff (line 12) | def rad_diff(a, b): function test_test_rad_diff (line 20) | def test_test_rad_diff(): function test_distance (line 31) | def test_distance(): function test_towards (line 37) | def test_towards(): function test_random_on_distance (line 41) | def test_random_on_distance(): function test_towards_random_angle (line 66) | def test_towards_random_angle(): FILE: test/test_expiring_dict.py function test_class (line 6) | def test_class(): FILE: test/test_pickled_data.py function load_map_pickle_data (line 48) | def load_map_pickle_data(map_path: Path) -> tuple[Any, Any, Any]: function build_bot_object_from_pickle_data (line 54) | def build_bot_object_from_pickle_data(raw_game_data, raw_game_info, raw_... function get_map_specific_bot (line 67) | def get_map_specific_bot(map_path: Path) -> BotAI: function test_protobuf_implementation (line 73) | def test_protobuf_implementation(): function test_bot_ai (line 78) | def test_bot_ai(): function test_game_info (line 400) | def test_game_info(): function test_game_data (line 424) | def test_game_data(): function test_game_state (line 465) | def test_game_state(): function test_pixelmap (line 488) | def test_pixelmap(): function test_blip (line 503) | def test_blip(): function test_score (line 509) | def test_score(): function test_unit (line 515) | def test_unit(): function test_units (line 785) | def test_units(): function test_exact_creation_ability (line 912) | def test_exact_creation_ability(): function test_dicts (line 969) | def test_dicts(): function test_position_pointlike (line 1007) | def test_position_pointlike(x1, y1, x2, y2, x3, y3): function test_position_point2 (line 1072) | def test_position_point2(x1, y1, x2, y2): function test_position_point3 (line 1129) | def test_position_point3(x1, y1, z1): function test_position_size (line 1146) | def test_position_size(w, h): function test_position_rect (line 1159) | def test_position_rect(x, y, w, h): function test_missing_enum (line 1172) | def test_missing_enum(): FILE: test/test_pickled_ramp.py function pytest_generate_tests (line 24) | def pytest_generate_tests(metafunc): class TestClass (line 36) | class TestClass: method test_main_base_ramp (line 42) | def test_main_base_ramp(self, map_path: Path): method test_bot_ai (line 92) | def test_bot_ai(self, map_path: Path): FILE: test/test_replays.py function test_get_replay_version (line 9) | def test_get_replay_version(): FILE: test/upgradestest_bot.py class TestBot (line 18) | class TestBot(BotAI): method __init__ (line 19) | def __init__(self): method on_start (line 43) | async def on_start(self): method on_step (line 48) | async def on_step(self, iteration): method clean_up_center (line 65) | async def clean_up_center(self): method test_botai_actions1 (line 81) | async def test_botai_actions1(self): class EmptyBot (line 173) | class EmptyBot(BotAI): method on_start (line 174) | async def on_start(self): method on_step (line 178) | async def on_step(self, iteration: int): function main (line 193) | def main():