From 026310da1e3a35d6869d97944825d583457137a7 Mon Sep 17 00:00:00 2001 From: Stephen Hockema Date: Wed, 29 Dec 2021 14:26:09 -0500 Subject: [PATCH 1/2] type hint fixes as detected by a pytype experiment --- smarts/core/smarts.py | 23 ++++++++++++----------- smarts/core/traffic_history_provider.py | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/smarts/core/smarts.py b/smarts/core/smarts.py index b9406053fd..08b44af371 100644 --- a/smarts/core/smarts.py +++ b/smarts/core/smarts.py @@ -23,7 +23,7 @@ import os import warnings from collections import defaultdict -from typing import List, Optional, Sequence +from typing import List, Optional, Set import numpy as np @@ -81,8 +81,8 @@ def __init__( self, agent_interfaces, traffic_sim, # SumoTrafficSimulation - envision: EnvisionClient = None, - visdom: VisdomClient = None, + envision: Optional[EnvisionClient] = None, + visdom: Optional[VisdomClient] = None, fixed_timestep_sec: float = 0.1, reset_agents_only: bool = False, zoo_addrs=None, @@ -91,10 +91,10 @@ def __init__( self._log = logging.getLogger(self.__class__.__name__) self._sim_id = Id.new("smarts") self._is_setup = False - self._scenario: Scenario = None + self._scenario: Optional[Scenario] = None self._renderer = None - self._envision: EnvisionClient = envision - self._visdom: VisdomClient = visdom + self._envision: Optional[EnvisionClient] = envision + self._visdom: Optional[VisdomClient] = visdom self._traffic_sim = traffic_sim self._external_provider = None @@ -148,7 +148,7 @@ def __init__( self._vehicle_states = [] self._bubble_manager = None - self._trap_manager: TrapManager = None + self._trap_manager: Optional[TrapManager] = None self._ground_bullet_id = None self._map_bb = None @@ -320,6 +320,7 @@ def reset(self, scenario: Scenario): ids = self._vehicle_index.vehicle_ids_by_actor_id(agent_id) vehicle_ids_to_teardown.extend(ids) self._teardown_vehicles(set(vehicle_ids_to_teardown)) + assert self._trap_manager self._trap_manager.init_traps(scenario.road_map, scenario.missions) self._agent_manager.init_ego_agents(self) if self._renderer: @@ -399,7 +400,7 @@ def add_agent_and_switch_control( agent_id: str, agent_interface: AgentInterface, mission: Mission, - ) -> Vehicle: + ): self.agent_manager.add_ego_agent(agent_id, agent_interface, for_trap=False) vehicle = self.switch_control_to_agent( vehicle_id, agent_id, mission, recreate=False, is_hijacked=True @@ -651,7 +652,7 @@ def elapsed_sim_time(self) -> float: def version(self) -> str: return VERSION - def teardown_agents_without_vehicles(self, agent_ids: Sequence): + def teardown_agents_without_vehicles(self, agent_ids: Set[str]): """ Teardown agents in the given list that have no vehicles registered as controlled-by or shadowed-by @@ -816,7 +817,7 @@ def _reset_providers(self): for provider in self.providers: provider.reset() - def _step_providers(self, actions) -> List[VehicleState]: + def _step_providers(self, actions) -> ProviderState: accumulated_provider_state = ProviderState() def agent_controls_vehicles(agent_id): @@ -1073,7 +1074,7 @@ def _check_ground_plane(self): ) self._setup_pybullet_ground_plane(self._bullet_client) - def _try_emit_envision_state(self, provider_state, obs, scores): + def _try_emit_envision_state(self, provider_state: ProviderState, obs, scores): if not self._envision: return diff --git a/smarts/core/traffic_history_provider.py b/smarts/core/traffic_history_provider.py index 2077ca2c18..cf555ba212 100644 --- a/smarts/core/traffic_history_provider.py +++ b/smarts/core/traffic_history_provider.py @@ -18,7 +18,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -from typing import Optional, Set +from typing import Iterable, Optional, Set import numpy as np @@ -59,7 +59,7 @@ def setup(self, scenario) -> ProviderState: self._is_setup = True return ProviderState() - def set_replaced_ids(self, vehicle_ids: list): + def set_replaced_ids(self, vehicle_ids: Iterable[str]): self._replaced_vehicle_ids.update(vehicle_ids) def get_history_id(self, vehicle_id: str) -> Optional[str]: From e1b0a528e41ebb74709f35417788af563beac327 Mon Sep 17 00:00:00 2001 From: Stephen Hockema Date: Wed, 29 Dec 2021 14:44:16 -0500 Subject: [PATCH 2/2] change Set to Iterable to avoid being overly restrictive --- smarts/core/smarts.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/smarts/core/smarts.py b/smarts/core/smarts.py index 08b44af371..b15b6cb4f2 100644 --- a/smarts/core/smarts.py +++ b/smarts/core/smarts.py @@ -23,7 +23,7 @@ import os import warnings from collections import defaultdict -from typing import List, Optional, Set +from typing import Iterable, List, Optional import numpy as np @@ -652,7 +652,7 @@ def elapsed_sim_time(self) -> float: def version(self) -> str: return VERSION - def teardown_agents_without_vehicles(self, agent_ids: Set[str]): + def teardown_agents_without_vehicles(self, agent_ids: Iterable[str]): """ Teardown agents in the given list that have no vehicles registered as controlled-by or shadowed-by