From e21ba7e9886812a213647079c63468e48963e2df Mon Sep 17 00:00:00 2001 From: ch-sa Date: Sun, 13 Nov 2022 13:11:15 +0100 Subject: [PATCH 1/2] Adapt to new mypy rules - add optional types to function parameters - improve typing --- labelCloud/control/bbox_controller.py | 29 ++++++++++++++++++------ labelCloud/control/label_manager.py | 6 +++-- labelCloud/control/pcd_manager.py | 5 ++-- labelCloud/model/bbox.py | 8 +++---- labelCloud/model/point_cloud.py | 2 +- labelCloud/tests/integration/conftest.py | 2 ++ labelCloud/view/gui.py | 8 ++++--- labelCloud/view/viewer.py | 2 +- 8 files changed, 41 insertions(+), 21 deletions(-) diff --git a/labelCloud/control/bbox_controller.py b/labelCloud/control/bbox_controller.py index 73e2b7a..061448d 100644 --- a/labelCloud/control/bbox_controller.py +++ b/labelCloud/control/bbox_controller.py @@ -174,7 +174,9 @@ def update_rotation(self, axis: str, value: float) -> None: @only_zrotation_decorator @has_active_bbox_decorator - def rotate_around_x(self, dangle: float = None, clockwise: bool = False) -> None: + def rotate_around_x( + self, dangle: Optional[float] = None, clockwise: bool = False + ) -> None: dangle = dangle or config.getfloat("LABEL", "std_rotation") if clockwise: dangle *= -1 @@ -184,7 +186,9 @@ def rotate_around_x(self, dangle: float = None, clockwise: bool = False) -> None @only_zrotation_decorator @has_active_bbox_decorator - def rotate_around_y(self, dangle: float = None, clockwise: bool = False) -> None: + def rotate_around_y( + self, dangle: Optional[float] = None, clockwise: bool = False + ) -> None: dangle = dangle or config.getfloat("LABEL", "std_rotation") if clockwise: dangle *= -1 @@ -194,7 +198,10 @@ def rotate_around_y(self, dangle: float = None, clockwise: bool = False) -> None @has_active_bbox_decorator def rotate_around_z( - self, dangle: float = None, clockwise: bool = False, absolute: bool = False + self, + dangle: Optional[float] = None, + clockwise: bool = False, + absolute: bool = False, ) -> None: dangle = dangle or config.getfloat("LABEL", "std_rotation") if clockwise: @@ -225,7 +232,9 @@ def rotate_with_mouse( self.rotate_around_z(x_angle) @has_active_bbox_decorator - def translate_along_x(self, distance: float = None, left: bool = False) -> None: + def translate_along_x( + self, distance: Optional[float] = None, left: bool = False + ) -> None: distance = distance or config.getfloat("LABEL", "std_translation") if left: distance *= -1 @@ -237,7 +246,9 @@ def translate_along_x(self, distance: float = None, left: bool = False) -> None: active_bbox.set_y_translation(active_bbox.center[1] + distance * sinz) @has_active_bbox_decorator - def translate_along_y(self, distance: float = None, forward: bool = False) -> None: + def translate_along_y( + self, distance: Optional[float] = None, forward: bool = False + ) -> None: distance = distance or config.getfloat("LABEL", "std_translation") if forward: distance *= -1 @@ -249,7 +260,9 @@ def translate_along_y(self, distance: float = None, forward: bool = False) -> No active_bbox.set_y_translation(active_bbox.center[1] + distance * bu * cosz) @has_active_bbox_decorator - def translate_along_z(self, distance: float = None, down: bool = False) -> None: + def translate_along_z( + self, distance: Optional[float] = None, down: bool = False + ) -> None: distance = distance or config.getfloat("LABEL", "std_translation") if down: distance *= -1 @@ -258,7 +271,9 @@ def translate_along_z(self, distance: float = None, down: bool = False) -> None: active_bbox.set_z_translation(active_bbox.center[2] + distance) @has_active_bbox_decorator - def scale(self, length_increase: float = None, decrease: bool = False) -> None: + def scale( + self, length_increase: Optional[float] = None, decrease: bool = False + ) -> None: """Scales a bounding box while keeping the previous aspect ratio. :param length_increase: factor by which the length should be increased diff --git a/labelCloud/control/label_manager.py b/labelCloud/control/label_manager.py index d6f33e2..7c33619 100644 --- a/labelCloud/control/label_manager.py +++ b/labelCloud/control/label_manager.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import List +from typing import List, Optional from ..io.labels import BaseLabelFormat, CentroidFormat, KittiFormat, VerticesFormat from ..model import BBox @@ -45,7 +45,9 @@ class LabelManager(object): EXPORT_PRECISION = config.getint("LABEL", "export_precision") def __init__( - self, strategy: str = STD_LABEL_FORMAT, path_to_label_folder: Path = None + self, + strategy: str = STD_LABEL_FORMAT, + path_to_label_folder: Optional[Path] = None, ) -> None: self.label_folder = path_to_label_folder or config.getpath( "FILE", "label_folder" diff --git a/labelCloud/control/pcd_manager.py b/labelCloud/control/pcd_manager.py index 122ac58..47c2e2b 100644 --- a/labelCloud/control/pcd_manager.py +++ b/labelCloud/control/pcd_manager.py @@ -7,10 +7,9 @@ from shutil import copyfile from typing import TYPE_CHECKING, List, Optional, Set, Tuple -import pkg_resources - import numpy as np import open3d as o3d +import pkg_resources from ..definitions.types import Point3D from ..io.pointclouds import BasePointCloudHandler, Open3DHandler @@ -263,7 +262,7 @@ def get_perspective(self) -> Tuple[float, float, float]: # UPDATE GUI - def update_pcd_infos(self, pointcloud_label: str = None) -> None: + def update_pcd_infos(self, pointcloud_label: Optional[str] = None) -> None: self.view.set_pcd_label(pointcloud_label or self.pcd_name or "") self.view.update_progress(self.current_id) diff --git a/labelCloud/model/bbox.py b/labelCloud/model/bbox.py index 71fc433..99487c1 100644 --- a/labelCloud/model/bbox.py +++ b/labelCloud/model/bbox.py @@ -1,5 +1,5 @@ import logging -from typing import List +from typing import List, Optional import numpy as np import numpy.typing as npt @@ -19,9 +19,9 @@ def __init__( cx: float, cy: float, cz: float, - length: float = None, - width: float = None, - height: float = None, + length: Optional[float] = None, + width: Optional[float] = None, + height: Optional[float] = None, ) -> None: self.center: Point3D = (cx, cy, cz) self.length: float = length or config.getfloat( diff --git a/labelCloud/model/point_cloud.py b/labelCloud/model/point_cloud.py index fe4f7a1..97ab6cd 100644 --- a/labelCloud/model/point_cloud.py +++ b/labelCloud/model/point_cloud.py @@ -82,7 +82,7 @@ def __init__( self.init_translation: Point3D = init_translation or calculate_init_translation( self.center, self.pcd_mins, self.pcd_maxs ) - self.init_rotation: Rotations3D = init_rotation or (0, 0, 0) + self.init_rotation: Rotations3D = init_rotation or tuple([0, 0, 0]) # type: ignore # Point cloud transformations self.trans_x, self.trans_y, self.trans_z = self.init_translation diff --git a/labelCloud/tests/integration/conftest.py b/labelCloud/tests/integration/conftest.py index 2b92aab..d39179f 100644 --- a/labelCloud/tests/integration/conftest.py +++ b/labelCloud/tests/integration/conftest.py @@ -2,6 +2,7 @@ import os import pytest + from labelCloud.control.controller import Controller from labelCloud.model.bbox import BBox from labelCloud.view.gui import GUI @@ -17,6 +18,7 @@ def startup_pyqt(qtbot, qapp): # Setup Model-View-Control structure control = Controller() + view = GUI(control) qtbot.addWidget(view) qtbot.addWidget(view.gl_widget) diff --git a/labelCloud/view/gui.py b/labelCloud/view/gui.py index 247b37f..f2815ff 100644 --- a/labelCloud/view/gui.py +++ b/labelCloud/view/gui.py @@ -2,7 +2,7 @@ import os import re from pathlib import Path -from typing import TYPE_CHECKING, Set +from typing import TYPE_CHECKING, Optional, Set import pkg_resources from PyQt5 import QtCore, QtGui, QtWidgets, uic @@ -447,7 +447,7 @@ def init_progress(self, min_value, max_value): def update_progress(self, value) -> None: self.progressbar_pcds.setValue(value) - def update_curr_class_edit(self, force: str = None) -> None: + def update_curr_class_edit(self, force: Optional[str] = None) -> None: if force is not None: self.edit_current_class.setText(force) else: @@ -564,7 +564,9 @@ def change_label_folder(self) -> None: ) logging.info("Changed label folder to %s!" % path_to_folder) - def update_default_object_class_menu(self, new_classes: Set[str] = None) -> None: + def update_default_object_class_menu( + self, new_classes: Optional[Set[str]] = None + ) -> None: object_classes = { str(class_name) for class_name in config.getlist("LABEL", "object_classes") } diff --git a/labelCloud/view/viewer.py b/labelCloud/view/viewer.py index 204db72..4372d6c 100644 --- a/labelCloud/view/viewer.py +++ b/labelCloud/view/viewer.py @@ -128,7 +128,7 @@ def paintGL(self) -> None: # Translates the 2D cursor position from screen plane into 3D world space coordinates def get_world_coords( - self, x: float, y: float, z: float = None, correction: bool = False + self, x: float, y: float, z: Optional[float] = None, correction: bool = False ) -> Tuple[float, float, float]: x *= self.DEVICE_PIXEL_RATIO # For fixing mac retina bug y *= self.DEVICE_PIXEL_RATIO From 7197e4f6a7434bd4e0c5ea8f8302075a8649e4ee Mon Sep 17 00:00:00 2001 From: ch-sa Date: Sun, 13 Nov 2022 13:11:39 +0100 Subject: [PATCH 2/2] Bump version --- labelCloud/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labelCloud/__init__.py b/labelCloud/__init__.py index 894cebc..fe7c60e 100644 --- a/labelCloud/__init__.py +++ b/labelCloud/__init__.py @@ -1 +1 @@ -__version__ = "0.7.8" +__version__ = "0.7.9"