diff --git a/game/ato/closestairfields.py b/game/ato/closestairfields.py index 4dd0032e9..821b05a89 100644 --- a/game/ato/closestairfields.py +++ b/game/ato/closestairfields.py @@ -1,4 +1,5 @@ """Objective adjacency lists.""" + from __future__ import annotations from typing import Dict, Iterator, List, Optional, TYPE_CHECKING diff --git a/game/ato/flightplans/flightplan.py b/game/ato/flightplans/flightplan.py index 5c1e1618f..19d9c0013 100644 --- a/game/ato/flightplans/flightplan.py +++ b/game/ato/flightplans/flightplan.py @@ -5,6 +5,7 @@ type, and the size of the flight. The FlightPlanBuilder is responsible for generating the waypoints for the mission. """ + from __future__ import annotations import math diff --git a/game/ato/flightplans/formation.py b/game/ato/flightplans/formation.py index 4ba8ab1c9..b937d9dee 100644 --- a/game/ato/flightplans/formation.py +++ b/game/ato/flightplans/formation.py @@ -30,8 +30,7 @@ class FormationLayout(LoiterLayout, ABC): class FormationFlightPlan(LoiterFlightPlan[LayoutT], ABC): @property @abstractmethod - def package_speed_waypoints(self) -> set[FlightWaypoint]: - ... + def package_speed_waypoints(self) -> set[FlightWaypoint]: ... @property def combat_speed_waypoints(self) -> set[FlightWaypoint]: @@ -69,13 +68,11 @@ def travel_time_to_rendezvous(self) -> timedelta: @property @abstractmethod - def join_time(self) -> datetime: - ... + def join_time(self) -> datetime: ... @property @abstractmethod - def split_time(self) -> datetime: - ... + def split_time(self) -> datetime: ... def tot_for_waypoint(self, waypoint: FlightWaypoint) -> datetime | None: if waypoint == self.layout.join: diff --git a/game/ato/flightplans/ibuilder.py b/game/ato/flightplans/ibuilder.py index 25ea3157a..899e22eee 100644 --- a/game/ato/flightplans/ibuilder.py +++ b/game/ato/flightplans/ibuilder.py @@ -60,8 +60,7 @@ def theater(self) -> ConflictTheater: return self.flight.departure.theater @abstractmethod - def build(self, dump_debug_info: bool = False) -> FlightPlanT: - ... + def build(self, dump_debug_info: bool = False) -> FlightPlanT: ... @property def package(self) -> Package: diff --git a/game/ato/flightplans/loiter.py b/game/ato/flightplans/loiter.py index 4d6e9dce3..731e5eaf1 100644 --- a/game/ato/flightplans/loiter.py +++ b/game/ato/flightplans/loiter.py @@ -30,8 +30,7 @@ def hold_duration(self) -> timedelta: @property @abstractmethod - def push_time(self) -> datetime: - ... + def push_time(self) -> datetime: ... def depart_time_for_waypoint(self, waypoint: FlightWaypoint) -> datetime | None: if waypoint == self.layout.hold: diff --git a/game/ato/flightplans/uizonedisplay.py b/game/ato/flightplans/uizonedisplay.py index 8d880c878..9aa839468 100644 --- a/game/ato/flightplans/uizonedisplay.py +++ b/game/ato/flightplans/uizonedisplay.py @@ -14,5 +14,4 @@ class UiZone: class UiZoneDisplay(abc.ABC): @abc.abstractmethod - def ui_zone(self) -> UiZone: - ... + def ui_zone(self) -> UiZone: ... diff --git a/game/ato/flightstate/flightstate.py b/game/ato/flightstate/flightstate.py index 46bf2f34b..040d568ba 100644 --- a/game/ato/flightstate/flightstate.py +++ b/game/ato/flightstate/flightstate.py @@ -57,14 +57,12 @@ def alive(self) -> bool: @property @abstractmethod - def cancelable(self) -> bool: - ... + def cancelable(self) -> bool: ... @abstractmethod def on_game_tick( self, events: GameUpdateEvents, time: datetime, duration: timedelta - ) -> None: - ... + ) -> None: ... @property def in_flight(self) -> bool: @@ -95,17 +93,14 @@ def should_halt_sim(self) -> bool: @property @abstractmethod - def is_waiting_for_start(self) -> bool: - ... + def is_waiting_for_start(self) -> bool: ... @abstractmethod - def estimate_position(self) -> Point: - ... + def estimate_position(self) -> Point: ... @property @abstractmethod - def spawn_type(self) -> StartType: - ... + def spawn_type(self) -> StartType: ... def a2a_commit_region(self) -> Optional[ThreatPoly]: return None diff --git a/game/ato/flightstate/inflight.py b/game/ato/flightstate/inflight.py index fc0be5e3d..ad29b4517 100644 --- a/game/ato/flightstate/inflight.py +++ b/game/ato/flightstate/inflight.py @@ -67,16 +67,13 @@ def travel_time_between_waypoints(self) -> timedelta: ) @abstractmethod - def estimate_position(self) -> Point: - ... + def estimate_position(self) -> Point: ... @abstractmethod - def estimate_altitude(self) -> tuple[Distance, str]: - ... + def estimate_altitude(self) -> tuple[Distance, str]: ... @abstractmethod - def estimate_speed(self) -> Speed: - ... + def estimate_speed(self) -> Speed: ... def estimate_fuel_at_current_waypoint(self) -> float: initial_fuel = super().estimate_fuel() diff --git a/game/ato/iflightroster.py b/game/ato/iflightroster.py index 32231445c..eb06efa1e 100644 --- a/game/ato/iflightroster.py +++ b/game/ato/iflightroster.py @@ -9,26 +9,20 @@ class IFlightRoster(ABC): @abstractmethod - def iter_pilots(self) -> Iterator[Pilot | None]: - ... + def iter_pilots(self) -> Iterator[Pilot | None]: ... @abstractmethod - def pilot_at(self, idx: int) -> Pilot | None: - ... + def pilot_at(self, idx: int) -> Pilot | None: ... @property @abstractmethod - def max_size(self) -> int: - ... + def max_size(self) -> int: ... @abstractmethod - def resize(self, new_size: int) -> None: - ... + def resize(self, new_size: int) -> None: ... @abstractmethod - def set_pilot(self, index: int, pilot: Optional[Pilot]) -> None: - ... + def set_pilot(self, index: int, pilot: Optional[Pilot]) -> None: ... @abstractmethod - def clear(self) -> None: - ... + def clear(self) -> None: ... diff --git a/game/callsigns.py b/game/callsigns.py index a722606fc..0be660878 100644 --- a/game/callsigns.py +++ b/game/callsigns.py @@ -1,4 +1,5 @@ """Support for working with DCS group callsigns.""" + import logging import re from typing import Any diff --git a/game/campaignloader/factionrecommendation.py b/game/campaignloader/factionrecommendation.py index b9b2d8413..bc51fad88 100644 --- a/game/campaignloader/factionrecommendation.py +++ b/game/campaignloader/factionrecommendation.py @@ -14,12 +14,10 @@ def __init__(self, name: str) -> None: self.name = name @abstractmethod - def register_campaign_specific_faction(self, factions: Factions) -> None: - ... + def register_campaign_specific_faction(self, factions: Factions) -> None: ... @abstractmethod - def get_faction(self, factions: Factions) -> Faction: - ... + def get_faction(self, factions: Factions) -> Faction: ... @staticmethod def from_field( diff --git a/game/commander/tasks/frontlinestancetask.py b/game/commander/tasks/frontlinestancetask.py index 0eaa6aa4a..c62402629 100644 --- a/game/commander/tasks/frontlinestancetask.py +++ b/game/commander/tasks/frontlinestancetask.py @@ -21,8 +21,7 @@ def __init__(self, front_line: FrontLine, player: bool) -> None: @property @abstractmethod - def stance(self) -> CombatStance: - ... + def stance(self) -> CombatStance: ... @staticmethod def management_allowed(state: TheaterState) -> bool: @@ -49,8 +48,7 @@ def better_stance_already_set(self, state: TheaterState) -> bool: @property @abstractmethod - def have_sufficient_front_line_advantage(self) -> bool: - ... + def have_sufficient_front_line_advantage(self) -> bool: ... @property def ground_force_balance(self) -> float: diff --git a/game/commander/tasks/packageplanningtask.py b/game/commander/tasks/packageplanningtask.py index 36b11680c..91de350f7 100644 --- a/game/commander/tasks/packageplanningtask.py +++ b/game/commander/tasks/packageplanningtask.py @@ -54,8 +54,7 @@ def execute(self, coalition: Coalition) -> None: coalition.ato.add_package(self.package) @abstractmethod - def propose_flights(self) -> None: - ... + def propose_flights(self) -> None: ... def propose_flight( self, @@ -118,9 +117,9 @@ def iter_iads_ranges( target_ranges: list[ tuple[Union[IadsGroundObject, NavalGroundObject], Distance] ] = [] - all_iads: Iterator[ - Union[IadsGroundObject, NavalGroundObject] - ] = itertools.chain(state.enemy_air_defenses, state.enemy_ships) + all_iads: Iterator[Union[IadsGroundObject, NavalGroundObject]] = ( + itertools.chain(state.enemy_air_defenses, state.enemy_ships) + ) for target in all_iads: distance = meters(target.distance_to(self.target)) if range_type is RangeType.Detection: diff --git a/game/commander/tasks/theatercommandertask.py b/game/commander/tasks/theatercommandertask.py index 5daa6b6cd..473f67c91 100644 --- a/game/commander/tasks/theatercommandertask.py +++ b/game/commander/tasks/theatercommandertask.py @@ -12,5 +12,4 @@ class TheaterCommanderTask(PrimitiveTask[TheaterState]): @abstractmethod - def execute(self, coalition: Coalition) -> None: - ... + def execute(self, coalition: Coalition) -> None: ... diff --git a/game/commander/theatercommander.py b/game/commander/theatercommander.py index 0bc638289..23f64a6f3 100644 --- a/game/commander/theatercommander.py +++ b/game/commander/theatercommander.py @@ -52,6 +52,7 @@ https://en.wikipedia.org/wiki/Hierarchical_task_network """ + from __future__ import annotations from datetime import datetime diff --git a/game/dcs/groundunittype.py b/game/dcs/groundunittype.py index c44eee219..701b2cd8b 100644 --- a/game/dcs/groundunittype.py +++ b/game/dcs/groundunittype.py @@ -60,9 +60,9 @@ class GroundUnitType(UnitType[Type[VehicleType]]): reversed_heading: bool = False _by_name: ClassVar[dict[str, GroundUnitType]] = {} - _by_unit_type: ClassVar[ - dict[type[VehicleType], list[GroundUnitType]] - ] = defaultdict(list) + _by_unit_type: ClassVar[dict[type[VehicleType], list[GroundUnitType]]] = ( + defaultdict(list) + ) def __setstate__(self, state: dict[str, Any]) -> None: # Update any existing models with new data on load. diff --git a/game/dcs/lasercodeconfig.py b/game/dcs/lasercodeconfig.py index 01c63fe29..c7566d9f4 100644 --- a/game/dcs/lasercodeconfig.py +++ b/game/dcs/lasercodeconfig.py @@ -17,12 +17,10 @@ def from_yaml(data: dict[str, Any]) -> LaserCodeConfig: ) @abstractmethod - def iter_prop_ids(self) -> Iterator[str]: - ... + def iter_prop_ids(self) -> Iterator[str]: ... @abstractmethod - def property_dict_for_code(self, code: int) -> dict[str, int]: - ... + def property_dict_for_code(self, code: int) -> dict[str, int]: ... class SinglePropertyLaserCodeConfig(LaserCodeConfig): diff --git a/game/flightplan/waypointactions/waypointaction.py b/game/flightplan/waypointactions/waypointaction.py index a82a86789..6951274a3 100644 --- a/game/flightplan/waypointactions/waypointaction.py +++ b/game/flightplan/waypointactions/waypointaction.py @@ -15,15 +15,12 @@ class WaypointAction(ABC): @abstractmethod - def describe(self) -> str: - ... + def describe(self) -> str: ... @abstractmethod def update_state( self, state: ActionState, time: datetime, duration: timedelta - ) -> timedelta: - ... + ) -> timedelta: ... @abstractmethod - def iter_tasks(self, ctx: TaskContext) -> Iterator[Task]: - ... + def iter_tasks(self, ctx: TaskContext) -> Iterator[Task]: ... diff --git a/game/flightplan/waypointstrategy.py b/game/flightplan/waypointstrategy.py index d91bf3f61..e5a065432 100644 --- a/game/flightplan/waypointstrategy.py +++ b/game/flightplan/waypointstrategy.py @@ -28,14 +28,12 @@ def point_at_heading(p: Point, heading: Heading, distance: Distance) -> Point: class Prerequisite(ABC): @abstractmethod - def is_satisfied(self) -> bool: - ... + def is_satisfied(self) -> bool: ... @abstractmethod def describe_debug_info( self, to_geojson: Callable[[BaseGeometry], dict[str, Any]] - ) -> dict[str, Any]: - ... + ) -> dict[str, Any]: ... class DistancePrerequisite(Prerequisite): diff --git a/game/htn.py b/game/htn.py index ae145262d..b0f1ff90f 100644 --- a/game/htn.py +++ b/game/htn.py @@ -11,8 +11,7 @@ class WorldState(ABC, Generic[WorldStateT]): @abstractmethod - def clone(self) -> WorldStateT: - ... + def clone(self) -> WorldStateT: ... class Task(Generic[WorldStateT]): @@ -24,18 +23,17 @@ class Task(Generic[WorldStateT]): class PrimitiveTask(Task[WorldStateT], Generic[WorldStateT], ABC): @abstractmethod - def preconditions_met(self, state: WorldStateT) -> bool: - ... + def preconditions_met(self, state: WorldStateT) -> bool: ... @abstractmethod - def apply_effects(self, state: WorldStateT) -> None: - ... + def apply_effects(self, state: WorldStateT) -> None: ... class CompoundTask(Task[WorldStateT], Generic[WorldStateT], ABC): @abstractmethod - def each_valid_method(self, state: WorldStateT) -> Iterator[Method[WorldStateT]]: - ... + def each_valid_method( + self, state: WorldStateT + ) -> Iterator[Method[WorldStateT]]: ... PrimitiveTaskT = TypeVar("PrimitiveTaskT", bound=PrimitiveTask[Any]) diff --git a/game/infos/information.py b/game/infos/information.py index efc3fb968..727aab569 100644 --- a/game/infos/information.py +++ b/game/infos/information.py @@ -10,9 +10,11 @@ def __init__(self, title: str = "", text: str = "", turn: int = 0) -> None: def __str__(self) -> str: return "[{}][{}] {} {}".format( - self.timestamp.strftime("%Y-%m-%d %H:%M:%S") - if self.timestamp is not None - else "", + ( + self.timestamp.strftime("%Y-%m-%d %H:%M:%S") + if self.timestamp is not None + else "" + ), self.turn, self.title, self.text, diff --git a/game/lasercodes/ilasercoderegistry.py b/game/lasercodes/ilasercoderegistry.py index e59a9d666..3f48285f5 100644 --- a/game/lasercodes/ilasercoderegistry.py +++ b/game/lasercodes/ilasercoderegistry.py @@ -9,9 +9,7 @@ class ILaserCodeRegistry(ABC): @abstractmethod - def alloc_laser_code(self) -> LaserCode: - ... + def alloc_laser_code(self) -> LaserCode: ... @abstractmethod - def release_code(self, code: LaserCode) -> None: - ... + def release_code(self, code: LaserCode) -> None: ... diff --git a/game/logging_config.py b/game/logging_config.py index 19ff1c7ff..e6128b374 100644 --- a/game/logging_config.py +++ b/game/logging_config.py @@ -1,4 +1,5 @@ """Logging APIs.""" + import logging import logging.config import os diff --git a/game/missiongenerator/briefinggenerator.py b/game/missiongenerator/briefinggenerator.py index e7c459c36..531efb9b0 100644 --- a/game/missiongenerator/briefinggenerator.py +++ b/game/missiongenerator/briefinggenerator.py @@ -1,6 +1,7 @@ """ Briefing generation logic """ + from __future__ import annotations import os diff --git a/game/missiongenerator/kneeboard.py b/game/missiongenerator/kneeboard.py index 366fd020f..5572877a0 100644 --- a/game/missiongenerator/kneeboard.py +++ b/game/missiongenerator/kneeboard.py @@ -22,6 +22,7 @@ only be added per airframe, so PvP missions where each side have the same aircraft will be able to see the enemy's kneeboard for the same airframe. """ + import datetime import math import textwrap diff --git a/game/missiongenerator/tgogenerator.py b/game/missiongenerator/tgogenerator.py index 414e1778a..0cf9a7bc7 100644 --- a/game/missiongenerator/tgogenerator.py +++ b/game/missiongenerator/tgogenerator.py @@ -5,6 +5,7 @@ objectives is defined in the Theater by a TheaterGroundObject. These classes create the pydcs groups and statics for those areas and add them to the mission. """ + from __future__ import annotations import logging diff --git a/game/purchaseadapter.py b/game/purchaseadapter.py index 06aa712c9..192759eb8 100644 --- a/game/purchaseadapter.py +++ b/game/purchaseadapter.py @@ -48,12 +48,10 @@ def has_pending_sales(self, item: ItemType) -> bool: return self.pending_delivery_quantity(item) < 0 @abstractmethod - def current_quantity_of(self, item: ItemType) -> int: - ... + def current_quantity_of(self, item: ItemType) -> int: ... @abstractmethod - def pending_delivery_quantity(self, item: ItemType) -> int: - ... + def pending_delivery_quantity(self, item: ItemType) -> int: ... def expected_quantity_next_turn(self, item: ItemType) -> int: return self.current_quantity_of(item) + self.pending_delivery_quantity(item) @@ -65,36 +63,28 @@ def can_sell_or_cancel(self, item: ItemType) -> bool: return self.can_sell(item) or self.has_pending_orders(item) @abstractmethod - def can_sell(self, item: ItemType) -> bool: - ... + def can_sell(self, item: ItemType) -> bool: ... @abstractmethod - def do_purchase(self, item: ItemType) -> None: - ... + def do_purchase(self, item: ItemType) -> None: ... @abstractmethod - def do_cancel_purchase(self, item: ItemType) -> None: - ... + def do_cancel_purchase(self, item: ItemType) -> None: ... @abstractmethod - def do_sale(self, item: ItemType) -> None: - ... + def do_sale(self, item: ItemType) -> None: ... @abstractmethod - def do_cancel_sale(self, item: ItemType) -> None: - ... + def do_cancel_sale(self, item: ItemType) -> None: ... @abstractmethod - def price_of(self, item: ItemType) -> int: - ... + def price_of(self, item: ItemType) -> int: ... @abstractmethod - def name_of(self, item: ItemType, multiline: bool = False) -> str: - ... + def name_of(self, item: ItemType, multiline: bool = False) -> str: ... @abstractmethod - def unit_type_of(self, item: ItemType) -> UnitType[Any]: - ... + def unit_type_of(self, item: ItemType) -> UnitType[Any]: ... class AircraftPurchaseAdapter(PurchaseAdapter[Squadron]): diff --git a/game/radio/tacan.py b/game/radio/tacan.py index fb7bd42ff..f635b1863 100644 --- a/game/radio/tacan.py +++ b/game/radio/tacan.py @@ -1,4 +1,5 @@ """TACAN channel handling.""" + from __future__ import annotations import re diff --git a/game/runways.py b/game/runways.py index 68d8ee2d2..a733c24ce 100644 --- a/game/runways.py +++ b/game/runways.py @@ -1,4 +1,5 @@ """Runway information and selection.""" + from __future__ import annotations import logging diff --git a/game/savecompat.py b/game/savecompat.py index 6338d40fe..829d60fe8 100644 --- a/game/savecompat.py +++ b/game/savecompat.py @@ -1,4 +1,5 @@ """Tools for aiding in save compat removal after compatibility breaks.""" + from collections.abc import Callable from typing import TypeVar diff --git a/game/sidc.py b/game/sidc.py index 6fcef1442..5b4359156 100644 --- a/game/sidc.py +++ b/game/sidc.py @@ -10,6 +10,7 @@ https://nso.nato.int/nso/nsdd/main/standards/ap-details/1912/EN https://www.spatialillusions.com/milsymbol/docs/milsymbol-APP6d.html """ + from __future__ import annotations from abc import ABC, abstractmethod @@ -330,18 +331,15 @@ def __str__(self) -> str: class SidcDescribable(ABC): @property @abstractmethod - def standard_identity(self) -> StandardIdentity: - ... + def standard_identity(self) -> StandardIdentity: ... @property @abstractmethod - def sidc_status(self) -> Status: - ... + def sidc_status(self) -> Status: ... @property @abstractmethod - def symbol_set_and_entity(self) -> tuple[SymbolSet, Entity]: - ... + def symbol_set_and_entity(self) -> tuple[SymbolSet, Entity]: ... def sidc(self) -> SymbolIdentificationCode: symbol_set, entity = self.symbol_set_and_entity diff --git a/game/sim/combat/frozencombat.py b/game/sim/combat/frozencombat.py index 332c107f2..45be3a0b8 100644 --- a/game/sim/combat/frozencombat.py +++ b/game/sim/combat/frozencombat.py @@ -40,20 +40,16 @@ def resolve( events: GameUpdateEvents, time: datetime, elapsed_time: timedelta, - ) -> None: - ... + ) -> None: ... @abstractmethod - def because(self) -> str: - ... + def because(self) -> str: ... @abstractmethod - def describe(self) -> str: - ... + def describe(self) -> str: ... @abstractmethod - def iter_flights(self) -> Iterator[Flight]: - ... + def iter_flights(self) -> Iterator[Flight]: ... def update_flight_states(self) -> None: for flight in self.iter_flights(): diff --git a/game/sim/combat/joinablecombat.py b/game/sim/combat/joinablecombat.py index 84c19c40d..18ed9d12c 100644 --- a/game/sim/combat/joinablecombat.py +++ b/game/sim/combat/joinablecombat.py @@ -18,8 +18,7 @@ def __init__(self, freeze_duration: timedelta, flights: list[Flight]) -> None: self.flights = flights @abstractmethod - def joinable_by(self, flight: Flight) -> bool: - ... + def joinable_by(self, flight: Flight) -> bool: ... def join(self, flight: Flight) -> None: assert isinstance(flight.state, InFlight) diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index ea86dae1b..bd761b174 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -472,8 +472,7 @@ def squadrons(self) -> Iterator[Squadron]: @property @abstractmethod - def heading(self) -> Heading: - ... + def heading(self) -> Heading: ... def __str__(self) -> str: return self.name @@ -594,8 +593,7 @@ def destination_in_range(self, destination: Point) -> bool: @property @abstractmethod - def can_deploy_ground_units(self) -> bool: - ... + def can_deploy_ground_units(self) -> bool: ... @property @abstractmethod @@ -880,8 +878,7 @@ def required_aircraft_start_type(self) -> Optional[StartType]: return None @abstractmethod - def can_operate(self, aircraft: AircraftType) -> bool: - ... + def can_operate(self, aircraft: AircraftType) -> bool: ... def unclaimed_parking(self) -> int: return self.total_aircraft_parking - self.allocated_aircraft().total @@ -892,8 +889,7 @@ def active_runway( theater: ConflictTheater, conditions: Conditions, dynamic_runways: Dict[str, RunwayData], - ) -> RunwayData: - ... + ) -> RunwayData: ... def stub_runway_data(self) -> RunwayData: return RunwayData( @@ -910,13 +906,11 @@ def parking_slots(self) -> Iterator[ParkingSlot]: @property @abstractmethod - def runway_is_destroyable(self) -> bool: - ... + def runway_is_destroyable(self) -> bool: ... @property @abstractmethod - def runway_status(self) -> RunwayStatus: - ... + def runway_status(self) -> RunwayStatus: ... @abstractmethod def describe_runway_status(self) -> str | None: @@ -1074,13 +1068,11 @@ def strike_targets(self) -> list[TheaterUnit]: @property @abstractmethod - def category(self) -> str: - ... + def category(self) -> str: ... @property @abstractmethod - def status(self) -> ControlPointStatus: - ... + def status(self) -> ControlPointStatus: ... class Airfield(ControlPoint): diff --git a/game/theater/frontline.py b/game/theater/frontline.py index 702e383f9..e76c3801b 100644 --- a/game/theater/frontline.py +++ b/game/theater/frontline.py @@ -107,7 +107,7 @@ def mission_types(self, for_player: bool) -> Iterator[FlightType]: yield from [ FlightType.CAS, FlightType.AEWC, - FlightType.REFUELING + FlightType.REFUELING, # TODO: FlightType.TROOP_TRANSPORT # TODO: FlightType.EVAC ] diff --git a/game/theater/transitnetwork.py b/game/theater/transitnetwork.py index 500bb5540..e690385b7 100644 --- a/game/theater/transitnetwork.py +++ b/game/theater/transitnetwork.py @@ -47,9 +47,9 @@ class TransitConnection(Enum): class TransitNetwork: def __init__(self) -> None: - self.nodes: Dict[ - ControlPoint, Dict[ControlPoint, TransitConnection] - ] = defaultdict(dict) + self.nodes: Dict[ControlPoint, Dict[ControlPoint, TransitConnection]] = ( + defaultdict(dict) + ) def has_destinations(self, control_point: ControlPoint) -> bool: return bool(self.nodes[control_point]) diff --git a/game/transfers.py b/game/transfers.py index 8f8b92be7..21141007a 100644 --- a/game/transfers.py +++ b/game/transfers.py @@ -29,6 +29,7 @@ Routing is handled by TransitNetwork. """ + from __future__ import annotations import logging @@ -494,9 +495,9 @@ def find_escape_route(self) -> Optional[ControlPoint]: class TransportMap(Generic[TransportType]): def __init__(self) -> None: # Dict of origin -> destination -> transport. - self.transports: dict[ - ControlPoint, dict[ControlPoint, TransportType] - ] = defaultdict(dict) + self.transports: dict[ControlPoint, dict[ControlPoint, TransportType]] = ( + defaultdict(dict) + ) def create_transport( self, origin: ControlPoint, destination: ControlPoint diff --git a/game/unitmap.py b/game/unitmap.py index 9ad12ec29..ba5b9be0f 100644 --- a/game/unitmap.py +++ b/game/unitmap.py @@ -1,4 +1,5 @@ """Maps generated units back to their Liberation types.""" + from __future__ import annotations import itertools diff --git a/game/weather/weather.py b/game/weather/weather.py index 0573766d1..0c8287aff 100644 --- a/game/weather/weather.py +++ b/game/weather/weather.py @@ -101,8 +101,7 @@ def generate_atmospheric( @property @abstractmethod - def archetype(self) -> WeatherArchetype: - ... + def archetype(self) -> WeatherArchetype: ... @property def pressure_adjustment(self) -> float: diff --git a/game/weather/windspeedgenerators.py b/game/weather/windspeedgenerators.py index 2afce3d68..ae2f29fce 100644 --- a/game/weather/windspeedgenerators.py +++ b/game/weather/windspeedgenerators.py @@ -25,8 +25,7 @@ def from_data(data: dict[str, Any]) -> WeibullWindSpeedParameters: class WindSpeedGenerator(ABC): @abstractmethod - def random_wind(self) -> WindConditions: - ... + def random_wind(self) -> WindConditions: ... @staticmethod def from_data(data: dict[str, Any]) -> WindSpeedGenerator: diff --git a/qt_ui/dialogs.py b/qt_ui/dialogs.py index 920647683..7f4eb58d7 100644 --- a/qt_ui/dialogs.py +++ b/qt_ui/dialogs.py @@ -1,4 +1,5 @@ """Application-wide dialog management.""" + from typing import Optional from game.ato.flight import Flight diff --git a/qt_ui/models.py b/qt_ui/models.py index 58266f0da..683a6292a 100644 --- a/qt_ui/models.py +++ b/qt_ui/models.py @@ -1,4 +1,5 @@ """Qt data models for game objects.""" + from __future__ import annotations import datetime diff --git a/qt_ui/widgets/QFlightSizeSpinner.py b/qt_ui/widgets/QFlightSizeSpinner.py index 0ec0bd632..426146267 100644 --- a/qt_ui/widgets/QFlightSizeSpinner.py +++ b/qt_ui/widgets/QFlightSizeSpinner.py @@ -1,4 +1,5 @@ """Spin box for selecting the number of aircraft in a flight.""" + from PySide6.QtWidgets import QSpinBox diff --git a/qt_ui/widgets/QLabeledWidget.py b/qt_ui/widgets/QLabeledWidget.py index aa357c0b5..b69d79e76 100644 --- a/qt_ui/widgets/QLabeledWidget.py +++ b/qt_ui/widgets/QLabeledWidget.py @@ -1,4 +1,5 @@ """A layout containing a widget with an associated label.""" + from typing import Optional from PySide6.QtCore import Qt diff --git a/qt_ui/widgets/ato.py b/qt_ui/widgets/ato.py index 0b7b28362..eaa2e4504 100644 --- a/qt_ui/widgets/ato.py +++ b/qt_ui/widgets/ato.py @@ -1,4 +1,5 @@ """Widgets for displaying air tasking orders.""" + import logging from typing import Optional diff --git a/qt_ui/widgets/clientslots.py b/qt_ui/widgets/clientslots.py index 5af9fd104..238775ec7 100644 --- a/qt_ui/widgets/clientslots.py +++ b/qt_ui/widgets/clientslots.py @@ -1,4 +1,5 @@ """Widgets for displaying client slots.""" + from PySide6.QtWidgets import QLabel from qt_ui.models import AtoModel diff --git a/qt_ui/widgets/combos/QAircraftTypeSelector.py b/qt_ui/widgets/combos/QAircraftTypeSelector.py index 41afa1f7a..cf6d5967f 100644 --- a/qt_ui/widgets/combos/QAircraftTypeSelector.py +++ b/qt_ui/widgets/combos/QAircraftTypeSelector.py @@ -1,4 +1,5 @@ """Combo box for selecting aircraft types.""" + from PySide6.QtWidgets import QComboBox from game.dcs.aircrafttype import AircraftType diff --git a/qt_ui/widgets/combos/QArrivalAirfieldSelector.py b/qt_ui/widgets/combos/QArrivalAirfieldSelector.py index 02215603f..287454af0 100644 --- a/qt_ui/widgets/combos/QArrivalAirfieldSelector.py +++ b/qt_ui/widgets/combos/QArrivalAirfieldSelector.py @@ -1,4 +1,5 @@ """Combo box for selecting a departure airfield.""" + from typing import Iterable, Optional from PySide6.QtWidgets import QComboBox diff --git a/qt_ui/windows/mission/QEditFlightDialog.py b/qt_ui/windows/mission/QEditFlightDialog.py index 935ac5ef4..567e80a35 100644 --- a/qt_ui/windows/mission/QEditFlightDialog.py +++ b/qt_ui/windows/mission/QEditFlightDialog.py @@ -1,4 +1,5 @@ """Dialog window for editing flights.""" + from PySide6.QtWidgets import ( QDialog, QVBoxLayout, diff --git a/qt_ui/windows/mission/QPackageDialog.py b/qt_ui/windows/mission/QPackageDialog.py index dfb3dae5c..dd5436de9 100644 --- a/qt_ui/windows/mission/QPackageDialog.py +++ b/qt_ui/windows/mission/QPackageDialog.py @@ -1,4 +1,5 @@ """Dialogs for creating and editing ATO packages.""" + import logging from typing import Optional diff --git a/qt_ui/windows/mission/flight/SquadronSelector.py b/qt_ui/windows/mission/flight/SquadronSelector.py index 65969a186..a8b95c1b9 100644 --- a/qt_ui/windows/mission/flight/SquadronSelector.py +++ b/qt_ui/windows/mission/flight/SquadronSelector.py @@ -1,4 +1,5 @@ """Combo box for selecting squadrons.""" + from typing import Optional from PySide6.QtWidgets import QComboBox diff --git a/qt_ui/windows/mission/flight/payload/missingpropertydataerror.py b/qt_ui/windows/mission/flight/payload/missingpropertydataerror.py index d46f307fa..951892bdb 100644 --- a/qt_ui/windows/mission/flight/payload/missingpropertydataerror.py +++ b/qt_ui/windows/mission/flight/payload/missingpropertydataerror.py @@ -1,2 +1 @@ -class MissingPropertyDataError(RuntimeError): - ... +class MissingPropertyDataError(RuntimeError): ... diff --git a/tests/flightplan/waypointsolvertestcasereducer.py b/tests/flightplan/waypointsolvertestcasereducer.py index ab0c5ad56..ab0176395 100644 --- a/tests/flightplan/waypointsolvertestcasereducer.py +++ b/tests/flightplan/waypointsolvertestcasereducer.py @@ -23,12 +23,10 @@ def doctrine_from_name(name: str) -> Doctrine: class Reducer(Generic[ReducerT], Iterator[ReducerT], ABC): @abstractmethod - def accept(self) -> None: - ... + def accept(self) -> None: ... @abstractmethod - def reject(self) -> None: - ... + def reject(self) -> None: ... class MultiPolyReducer(Reducer[MultiPolygon]):