diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d81a1f1e..94e80529 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,6 +28,7 @@ jobs: run: | pipx run ruff format --check --line-length=100 examples pipx run ruff check --select=ASYNC,RUF006,E,F --line-length=100 examples + pipx run ruff check --select=PERF --line-length=100 . pipx run codespell . - name: Install prerequisites diff --git a/mavsdk/camera.py b/mavsdk/camera.py index 032e9c98..25ac14c3 100644 --- a/mavsdk/camera.py +++ b/mavsdk/camera.py @@ -286,12 +286,7 @@ def translate_from_rpc(rpcSettingOptions): rpcSettingOptions.component_id, rpcSettingOptions.setting_id, rpcSettingOptions.setting_description, - list( - map( - lambda elem: Option.translate_from_rpc(elem), - rpcSettingOptions.options, - ) - ), + [Option.translate_from_rpc(elem) for elem in rpcSettingOptions.options], rpcSettingOptions.is_range, ) @@ -1088,12 +1083,10 @@ def translate_from_rpc(rpcCurrentSettingsUpdate): """Translates a gRPC struct to the SDK equivalent""" return CurrentSettingsUpdate( rpcCurrentSettingsUpdate.component_id, - list( - map( - lambda elem: Setting.translate_from_rpc(elem), - rpcCurrentSettingsUpdate.current_settings, - ) - ), + [ + Setting.translate_from_rpc(elem) + for elem in rpcCurrentSettingsUpdate.current_settings + ], ) def translate_to_rpc(self, rpcCurrentSettingsUpdate): @@ -1157,12 +1150,10 @@ def translate_from_rpc(rpcPossibleSettingOptionsUpdate): """Translates a gRPC struct to the SDK equivalent""" return PossibleSettingOptionsUpdate( rpcPossibleSettingOptionsUpdate.component_id, - list( - map( - lambda elem: SettingOptions.translate_from_rpc(elem), - rpcPossibleSettingOptionsUpdate.setting_options, - ) - ), + [ + SettingOptions.translate_from_rpc(elem) + for elem in rpcPossibleSettingOptionsUpdate.setting_options + ], ) def translate_to_rpc(self, rpcPossibleSettingOptionsUpdate): @@ -1873,12 +1864,7 @@ def __str__(self): def translate_from_rpc(rpcCameraList): """Translates a gRPC struct to the SDK equivalent""" return CameraList( - list( - map( - lambda elem: Information.translate_from_rpc(elem), - rpcCameraList.cameras, - ) - ) + [Information.translate_from_rpc(elem) for elem in rpcCameraList.cameras] ) def translate_to_rpc(self, rpcCameraList): @@ -2183,11 +2169,7 @@ async def list_photos(self, component_id, photos_range): if result.result != CameraResult.Result.SUCCESS: raise CameraError(result, "list_photos()", component_id, photos_range) - capture_infos = [] - for capture_infos_rpc in response.capture_infos: - capture_infos.append(CaptureInfo.translate_from_rpc(capture_infos_rpc)) - - return capture_infos + return [CaptureInfo.translate_from_rpc(elem) for elem in response.capture_infos] async def camera_list(self): """ @@ -2448,11 +2430,7 @@ async def get_current_settings(self, component_id): if result.result != CameraResult.Result.SUCCESS: raise CameraError(result, "get_current_settings()", component_id) - current_settings = [] - for current_settings_rpc in response.current_settings: - current_settings.append(Setting.translate_from_rpc(current_settings_rpc)) - - return current_settings + return [Setting.translate_from_rpc(elem) for elem in response.current_settings] async def possible_setting_options(self): """ @@ -2508,13 +2486,9 @@ async def get_possible_setting_options(self, component_id): if result.result != CameraResult.Result.SUCCESS: raise CameraError(result, "get_possible_setting_options()", component_id) - setting_options = [] - for setting_options_rpc in response.setting_options: - setting_options.append( - SettingOptions.translate_from_rpc(setting_options_rpc) - ) - - return setting_options + return [ + SettingOptions.translate_from_rpc(elem) for elem in response.setting_options + ] async def set_setting(self, component_id, setting): """ diff --git a/mavsdk/events.py b/mavsdk/events.py index f557ddb3..430d4e6d 100644 --- a/mavsdk/events.py +++ b/mavsdk/events.py @@ -318,12 +318,10 @@ def translate_from_rpc(rpcHealthAndArmingCheckMode): return HealthAndArmingCheckMode( rpcHealthAndArmingCheckMode.mode_name, rpcHealthAndArmingCheckMode.can_arm_or_run, - list( - map( - lambda elem: HealthAndArmingCheckProblem.translate_from_rpc(elem), - rpcHealthAndArmingCheckMode.problems, - ) - ), + [ + HealthAndArmingCheckProblem.translate_from_rpc(elem) + for elem in rpcHealthAndArmingCheckMode.problems + ], ) def translate_to_rpc(self, rpcHealthAndArmingCheckMode): @@ -484,18 +482,14 @@ def translate_from_rpc(rpcHealthAndArmingCheckReport): HealthAndArmingCheckMode.translate_from_rpc( rpcHealthAndArmingCheckReport.current_mode_intention ), - list( - map( - lambda elem: HealthComponentReport.translate_from_rpc(elem), - rpcHealthAndArmingCheckReport.health_components, - ) - ), - list( - map( - lambda elem: HealthAndArmingCheckProblem.translate_from_rpc(elem), - rpcHealthAndArmingCheckReport.all_problems, - ) - ), + [ + HealthComponentReport.translate_from_rpc(elem) + for elem in rpcHealthAndArmingCheckReport.health_components + ], + [ + HealthAndArmingCheckProblem.translate_from_rpc(elem) + for elem in rpcHealthAndArmingCheckReport.all_problems + ], ) def translate_to_rpc(self, rpcHealthAndArmingCheckReport): diff --git a/mavsdk/geofence.py b/mavsdk/geofence.py index 5aaf4132..a90af18c 100644 --- a/mavsdk/geofence.py +++ b/mavsdk/geofence.py @@ -139,7 +139,7 @@ def __str__(self): def translate_from_rpc(rpcPolygon): """Translates a gRPC struct to the SDK equivalent""" return Polygon( - list(map(lambda elem: Point.translate_from_rpc(elem), rpcPolygon.points)), + [Point.translate_from_rpc(elem) for elem in rpcPolygon.points], FenceType.translate_from_rpc(rpcPolygon.fence_type), ) @@ -268,18 +268,8 @@ def __str__(self): def translate_from_rpc(rpcGeofenceData): """Translates a gRPC struct to the SDK equivalent""" return GeofenceData( - list( - map( - lambda elem: Polygon.translate_from_rpc(elem), - rpcGeofenceData.polygons, - ) - ), - list( - map( - lambda elem: Circle.translate_from_rpc(elem), - rpcGeofenceData.circles, - ) - ), + [Polygon.translate_from_rpc(elem) for elem in rpcGeofenceData.polygons], + [Circle.translate_from_rpc(elem) for elem in rpcGeofenceData.circles], ) def translate_to_rpc(self, rpcGeofenceData): diff --git a/mavsdk/gimbal.py b/mavsdk/gimbal.py index 72139bea..a301332b 100644 --- a/mavsdk/gimbal.py +++ b/mavsdk/gimbal.py @@ -594,12 +594,7 @@ def __str__(self): def translate_from_rpc(rpcGimbalList): """Translates a gRPC struct to the SDK equivalent""" return GimbalList( - list( - map( - lambda elem: GimbalItem.translate_from_rpc(elem), - rpcGimbalList.gimbals, - ) - ) + [GimbalItem.translate_from_rpc(elem) for elem in rpcGimbalList.gimbals] ) def translate_to_rpc(self, rpcGimbalList): diff --git a/mavsdk/log_files.py b/mavsdk/log_files.py index 84ad5ce4..e5054213 100644 --- a/mavsdk/log_files.py +++ b/mavsdk/log_files.py @@ -303,11 +303,7 @@ async def get_entries(self): if result.result != LogFilesResult.Result.SUCCESS: raise LogFilesError(result, "get_entries()") - entries = [] - for entries_rpc in response.entries: - entries.append(Entry.translate_from_rpc(entries_rpc)) - - return entries + return [Entry.translate_from_rpc(elem) for elem in response.entries] async def download_log_file(self, entry, path): """ diff --git a/mavsdk/mission.py b/mavsdk/mission.py index b9dc98bf..e173482e 100644 --- a/mavsdk/mission.py +++ b/mavsdk/mission.py @@ -387,12 +387,10 @@ def __str__(self): def translate_from_rpc(rpcMissionPlan): """Translates a gRPC struct to the SDK equivalent""" return MissionPlan( - list( - map( - lambda elem: MissionItem.translate_from_rpc(elem), - rpcMissionPlan.mission_items, - ) - ) + [ + MissionItem.translate_from_rpc(elem) + for elem in rpcMissionPlan.mission_items + ] ) def translate_to_rpc(self, rpcMissionPlan): diff --git a/mavsdk/mission_raw.py b/mavsdk/mission_raw.py index 8ba2da18..8dde40d4 100644 --- a/mavsdk/mission_raw.py +++ b/mavsdk/mission_raw.py @@ -284,24 +284,18 @@ def __str__(self): def translate_from_rpc(rpcMissionImportData): """Translates a gRPC struct to the SDK equivalent""" return MissionImportData( - list( - map( - lambda elem: MissionItem.translate_from_rpc(elem), - rpcMissionImportData.mission_items, - ) - ), - list( - map( - lambda elem: MissionItem.translate_from_rpc(elem), - rpcMissionImportData.geofence_items, - ) - ), - list( - map( - lambda elem: MissionItem.translate_from_rpc(elem), - rpcMissionImportData.rally_items, - ) - ), + [ + MissionItem.translate_from_rpc(elem) + for elem in rpcMissionImportData.mission_items + ], + [ + MissionItem.translate_from_rpc(elem) + for elem in rpcMissionImportData.geofence_items + ], + [ + MissionItem.translate_from_rpc(elem) + for elem in rpcMissionImportData.rally_items + ], ) def translate_to_rpc(self, rpcMissionImportData): @@ -783,11 +777,7 @@ async def download_mission(self): if result.result != MissionRawResult.Result.SUCCESS: raise MissionRawError(result, "download_mission()") - mission_items = [] - for mission_items_rpc in response.mission_items: - mission_items.append(MissionItem.translate_from_rpc(mission_items_rpc)) - - return mission_items + return [MissionItem.translate_from_rpc(elem) for elem in response.mission_items] async def download_geofence(self): """ @@ -812,11 +802,9 @@ async def download_geofence(self): if result.result != MissionRawResult.Result.SUCCESS: raise MissionRawError(result, "download_geofence()") - geofence_items = [] - for geofence_items_rpc in response.geofence_items: - geofence_items.append(MissionItem.translate_from_rpc(geofence_items_rpc)) - - return geofence_items + return [ + MissionItem.translate_from_rpc(elem) for elem in response.geofence_items + ] async def download_rallypoints(self): """ @@ -841,13 +829,9 @@ async def download_rallypoints(self): if result.result != MissionRawResult.Result.SUCCESS: raise MissionRawError(result, "download_rallypoints()") - rallypoint_items = [] - for rallypoint_items_rpc in response.rallypoint_items: - rallypoint_items.append( - MissionItem.translate_from_rpc(rallypoint_items_rpc) - ) - - return rallypoint_items + return [ + MissionItem.translate_from_rpc(elem) for elem in response.rallypoint_items + ] async def cancel_mission_download(self): """ diff --git a/mavsdk/mission_raw_server.py b/mavsdk/mission_raw_server.py index a066eb08..dedbbf28 100644 --- a/mavsdk/mission_raw_server.py +++ b/mavsdk/mission_raw_server.py @@ -214,12 +214,10 @@ def __str__(self): def translate_from_rpc(rpcMissionPlan): """Translates a gRPC struct to the SDK equivalent""" return MissionPlan( - list( - map( - lambda elem: MissionItem.translate_from_rpc(elem), - rpcMissionPlan.mission_items, - ) - ) + [ + MissionItem.translate_from_rpc(elem) + for elem in rpcMissionPlan.mission_items + ] ) def translate_to_rpc(self, rpcMissionPlan): diff --git a/mavsdk/offboard.py b/mavsdk/offboard.py index d6c9a67a..56cfd059 100644 --- a/mavsdk/offboard.py +++ b/mavsdk/offboard.py @@ -176,12 +176,10 @@ def __str__(self): def translate_from_rpc(rpcActuatorControl): """Translates a gRPC struct to the SDK equivalent""" return ActuatorControl( - list( - map( - lambda elem: ActuatorControlGroup.translate_from_rpc(elem), - rpcActuatorControl.groups, - ) - ) + [ + ActuatorControlGroup.translate_from_rpc(elem) + for elem in rpcActuatorControl.groups + ] ) def translate_to_rpc(self, rpcActuatorControl): diff --git a/mavsdk/param.py b/mavsdk/param.py index 2bd98ae1..c3b88d75 100644 --- a/mavsdk/param.py +++ b/mavsdk/param.py @@ -244,24 +244,12 @@ def __str__(self): def translate_from_rpc(rpcAllParams): """Translates a gRPC struct to the SDK equivalent""" return AllParams( - list( - map( - lambda elem: IntParam.translate_from_rpc(elem), - rpcAllParams.int_params, - ) - ), - list( - map( - lambda elem: FloatParam.translate_from_rpc(elem), - rpcAllParams.float_params, - ) - ), - list( - map( - lambda elem: CustomParam.translate_from_rpc(elem), - rpcAllParams.custom_params, - ) - ), + [IntParam.translate_from_rpc(elem) for elem in rpcAllParams.int_params], + [FloatParam.translate_from_rpc(elem) for elem in rpcAllParams.float_params], + [ + CustomParam.translate_from_rpc(elem) + for elem in rpcAllParams.custom_params + ], ) def translate_to_rpc(self, rpcAllParams): diff --git a/mavsdk/param_server.py b/mavsdk/param_server.py index 06d8a06e..c6c0fe90 100644 --- a/mavsdk/param_server.py +++ b/mavsdk/param_server.py @@ -209,24 +209,12 @@ def __str__(self): def translate_from_rpc(rpcAllParams): """Translates a gRPC struct to the SDK equivalent""" return AllParams( - list( - map( - lambda elem: IntParam.translate_from_rpc(elem), - rpcAllParams.int_params, - ) - ), - list( - map( - lambda elem: FloatParam.translate_from_rpc(elem), - rpcAllParams.float_params, - ) - ), - list( - map( - lambda elem: CustomParam.translate_from_rpc(elem), - rpcAllParams.custom_params, - ) - ), + [IntParam.translate_from_rpc(elem) for elem in rpcAllParams.int_params], + [FloatParam.translate_from_rpc(elem) for elem in rpcAllParams.float_params], + [ + CustomParam.translate_from_rpc(elem) + for elem in rpcAllParams.custom_params + ], ) def translate_to_rpc(self, rpcAllParams): diff --git a/mavsdk/tune.py b/mavsdk/tune.py index b8ea96dd..d7372bdc 100644 --- a/mavsdk/tune.py +++ b/mavsdk/tune.py @@ -236,21 +236,17 @@ def __str__(self): def translate_from_rpc(rpcTuneDescription): """Translates a gRPC struct to the SDK equivalent""" return TuneDescription( - list( - map( - lambda elem: SongElement.translate_from_rpc(elem), - rpcTuneDescription.song_elements, - ) - ), + [ + SongElement.translate_from_rpc(elem) + for elem in rpcTuneDescription.song_elements + ], rpcTuneDescription.tempo, ) def translate_to_rpc(self, rpcTuneDescription): """Translates this SDK object into its gRPC equivalent""" - rpc_elems_list = [] - for elem in self.song_elements: - rpc_elems_list.append(elem.translate_to_rpc()) + rpc_elems_list = [elem.translate_to_rpc() for elem in self.song_elements] rpcTuneDescription.song_elements.extend(rpc_elems_list) diff --git a/other/templates/py/call.j2 b/other/templates/py/call.j2 index b1c4f188..294cbd3c 100644 --- a/other/templates/py/call.j2 +++ b/other/templates/py/call.j2 @@ -26,11 +26,11 @@ async def {{ name.lower_snake_case }}(self{% for param in params %}, {{ param.na request.{{ param.name.lower_snake_case }} = {{ param.name.lower_snake_case }} {%- else -%} {% if param.type_info.is_repeated %} - rpc_elems_list = [] - for elem in {{ param.name.lower_snake_case }}: {% if param.type_info.is_enum %} - rpc_elems_list.append(elem.translate_to_rpc()) + rpc_elems_list = [elem.translate_to_rpc() for elem in {{ param.name.lower_snake_case }}] {% else %} + rpc_elems_list = [] + for elem in {{ param.name.lower_snake_case }}: rpc_elem = {{ plugin_name.lower_snake_case }}_pb2.{{ param.type_info.inner_name }}() elem.translate_to_rpc(rpc_elem) rpc_elems_list.append(rpc_elem) diff --git a/other/templates/py/request.j2 b/other/templates/py/request.j2 index b6390736..6cde5ebf 100644 --- a/other/templates/py/request.j2 +++ b/other/templates/py/request.j2 @@ -30,11 +30,11 @@ async def {{ name.lower_snake_case }}(self{% for param in params %}, {{ param.na request.{{ param.name.lower_snake_case }} = {{ param.name.lower_snake_case }} {% else %} {% if param.type_info.is_repeated %} - rpc_elems_list = [] - for elem in {{ param.name.lower_snake_case }}: {% if param.type_info.is_enum %} - rpc_elems_list.append(elem.translate_to_rpc()) + rpc_elems_list = [elem.translate_to_rpc() for elem in {{ param.name.lower_snake_case }}] {% else %} + rpc_elems_list = [] + for elem in {{ param.name.lower_snake_case }}: rpc_elem = {{ plugin_name.lower_snake_case }}_pb2.{{ param.type_info.inner_name }}() elem.translate_to_rpc(rpc_elem) rpc_elems_list.append(rpc_elem) @@ -60,11 +60,7 @@ async def {{ name.lower_snake_case }}(self{% for param in params %}, {{ param.na return response.{{ return_name.lower_snake_case }} {% else -%} {% if return_type.is_repeated -%} - {{ return_name.lower_snake_case }} = [] - for {{ return_name.lower_snake_case }}_rpc in response.{{ return_name.lower_snake_case }}: - {{ return_name.lower_snake_case }}.append({{ return_type.inner_name }}.translate_from_rpc({{ return_name.lower_snake_case }}_rpc)) - - return {{ return_name.lower_snake_case }} + return [{{ return_type.inner_name }}.translate_from_rpc(elem) for elem in response.{{ return_name.lower_snake_case }}] {% else -%} return {{ return_type.inner_name }}.translate_from_rpc(response.{{ return_name.lower_snake_case }}) {% endif -%} diff --git a/other/templates/py/stream.j2 b/other/templates/py/stream.j2 index f05ad1ef..71375461 100644 --- a/other/templates/py/stream.j2 +++ b/other/templates/py/stream.j2 @@ -30,11 +30,11 @@ async def {{ name.lower_snake_case }}(self{% for param in params %}, {{ param.na request.{{ param.name.lower_snake_case }} = {{ param.name.lower_snake_case }} {%- else -%} {% if param.type_info.is_repeated %} - rpc_elems_list = [] - for elem in {{ param.name.lower_snake_case }}: {% if param.type_info.is_enum %} - rpc_elems_list.append(elem.translate_to_rpc()) + rpc_elems_list = [elem.translate_to_rpc() for elem in {{ param.name.lower_snake_case }}] {% else %} + rpc_elems_list = [for elem in {{ param.name.lower_snake_case }}] + for elem in : rpc_elem = {{ plugin_name.lower_snake_case }}_pb2.{{ param.type_info.inner_name }}() elem.translate_to_rpc(rpc_elem) rpc_elems_list.append(rpc_elem) @@ -73,7 +73,7 @@ async def {{ name.lower_snake_case }}(self{% for param in params %}, {{ param.na {%- elif not return_type.is_primitive and not return_type.is_repeated %} yield {{ return_type.name }}.translate_from_rpc(response.{{ return_name.lower_snake_case }}) {%- elif not return_type.is_primitive and return_type.is_repeated %} - yield list(map(lambda x : {{ return_type.inner_name }}.translate_from_rpc(x), response.{{ return_name.lower_snake_case }})) + yield [{{ return_type.inner_name }}.translate_from_rpc(x) for x in response.{{ return_name.lower_snake_case }}] {%- endif %} finally: {{ name.lower_snake_case }}_stream.cancel() diff --git a/other/templates/py/struct.j2 b/other/templates/py/struct.j2 index 955ecdef..0921633a 100644 --- a/other/templates/py/struct.j2 +++ b/other/templates/py/struct.j2 @@ -56,7 +56,7 @@ class {{ name.upper_camel_case }}: rpc{{ name.upper_camel_case }}.{{ field.name.lower_snake_case }}{{ "," if not loop.last }} {% else %} {%- if field.type_info.is_repeated %} - list(map(lambda elem: {{ field.type_info.inner_name }}.translate_from_rpc(elem), rpc{{ name.upper_camel_case }}.{{ field.name.lower_snake_case }})){{ "," if not loop.last }} + [{{ field.type_info.inner_name }}.translate_from_rpc(elem) for elem in rpc{{ name.upper_camel_case }}.{{ field.name.lower_snake_case }}]{{ "," if not loop.last }} {%- else %} {% if field.type_info.parent_type is not none %}{{ field.type_info.parent_type }}.{% endif %}{{ field.type_info.inner_name }}.translate_from_rpc(rpc{{ name.upper_camel_case }}.{{ field.name.lower_snake_case }}){{ "," if not loop.last }} {%- endif %} @@ -72,11 +72,11 @@ class {{ name.upper_camel_case }}: for elem in self.{{ field.name.lower_snake_case}}: rpc{{ name.upper_camel_case }}.{{ field.name.lower_snake_case }}.append(elem) {% else %} - rpc_elems_list = [] - for elem in self.{{ field.name.lower_snake_case }}: {% if field.type_info.is_enum %} - rpc_elems_list.append(elem.translate_to_rpc()) + rpc_elems_list = [elem.translate_to_rpc() for elem in self.{{ field.name.lower_snake_case }}] {% else %} + rpc_elems_list = [] + for elem in self.{{ field.name.lower_snake_case }}: rpc_elem = {{ plugin_name.lower_snake_case }}_pb2.{{ field.type_info.inner_name }}() elem.translate_to_rpc(rpc_elem) rpc_elems_list.append(rpc_elem)