From faa844dfbae6301d1445ce0bf99f2e247fc76824 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Thu, 27 Jun 2024 22:26:13 +0200 Subject: [PATCH 1/9] Fix last mypy issues --- .github/workflows/test.yml | 2 -- roboflow/models/semantic_segmentation.py | 2 +- roboflow/models/video.py | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ec228fec..b6e0532e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,5 +34,3 @@ jobs: run: "python -m unittest" - name: Check types with mypy run: mypy . - # TODO: Fix typing - continue-on-error: true diff --git a/roboflow/models/semantic_segmentation.py b/roboflow/models/semantic_segmentation.py index e41bad52..4ae974c0 100644 --- a/roboflow/models/semantic_segmentation.py +++ b/roboflow/models/semantic_segmentation.py @@ -18,7 +18,7 @@ def __init__(self, api_key: str, version_id: str): super(SemanticSegmentationModel, self).__init__(api_key, version_id) self.api_url = f"{SEMANTIC_SEGMENTATION_URL}/{self.dataset_id}/{self.version}" - def predict(self, image_path: str, confidence: int = 50): + def predict(self, image_path: str, confidence: int = 50): # type: ignore[override] """ Infers detections based on image from a specified model and image path. diff --git a/roboflow/models/video.py b/roboflow/models/video.py index 35366a97..1d474a56 100644 --- a/roboflow/models/video.py +++ b/roboflow/models/video.py @@ -56,7 +56,7 @@ def __init__( """ # noqa: E501 // docs self.__api_key = api_key - def predict( + def predict( # type: ignore[override] self, video_path: str, inference_type: str, @@ -124,7 +124,7 @@ def predict( { "model_id": self.dataset_id, "model_version": self.version, - "inference_type": self.inference_type, + "inference_type": inference_type, } ] From 91c2bd8a0edee56cdb0786509c34eb2f6cb75a94 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Thu, 27 Jun 2024 23:27:51 +0200 Subject: [PATCH 2/9] Ignore `IPython.display` mypy errors --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index bb3161d7..1ce67f0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -154,6 +154,11 @@ ignore_missing_imports = true module = "ultralytics.*" ignore_missing_imports = true +[[tool.mypy.overrides]] +# IPython is an optional dependency +module = "IPython.display.*" +ignore_missing_imports = true + [[tool.mypy.overrides]] module = "ipywidgets.*" ignore_missing_imports = true From 857cbe04495aa62c387de21097ab1634dc4fd265 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Thu, 27 Jun 2024 23:54:19 +0200 Subject: [PATCH 3/9] Ignore `torch` mypy errors --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 1ce67f0b..442194e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -150,6 +150,11 @@ ignore_missing_imports = true module = "requests_toolbelt.*" ignore_missing_imports = true +[[tool.mypy.overrides]] +# torch is an optional dependency +module = "torch.*" +ignore_missing_imports = true + [[tool.mypy.overrides]] module = "ultralytics.*" ignore_missing_imports = true From 14f8a5a92b0155aadc8564eea1ef3ecfe2809156 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Fri, 28 Jun 2024 10:38:40 +0200 Subject: [PATCH 4/9] Ignore `matplotlib` mypy erorrs because of Python 3.8 --- pyproject.toml | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 442194e0..d072a242 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -143,27 +143,16 @@ exclude = [ ] [[tool.mypy.overrides]] -module = "_datetime.*" -ignore_missing_imports = true - -[[tool.mypy.overrides]] -module = "requests_toolbelt.*" -ignore_missing_imports = true - -[[tool.mypy.overrides]] -# torch is an optional dependency -module = "torch.*" -ignore_missing_imports = true - -[[tool.mypy.overrides]] -module = "ultralytics.*" -ignore_missing_imports = true - -[[tool.mypy.overrides]] -# IPython is an optional dependency -module = "IPython.display.*" -ignore_missing_imports = true - -[[tool.mypy.overrides]] -module = "ipywidgets.*" +module = + "_datetime.*", + # IPython is an optional dependency + "IPython.display.*", + # ipywidgets is an optional dependency + "ipywidgets.*", + # matplotlib typing is not available for Python 3.8 + # remove this when we stop supporting Python 3.8 + "matplotlib", + "requests_toolbelt.*", + "torch.*", + "ultralytics.*", ignore_missing_imports = true From aaf14d454d070b16081257b4136773afc193c47a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 08:39:21 +0000 Subject: [PATCH 5/9] =?UTF-8?q?fix(pre=5Fcommit):=20=F0=9F=8E=A8=20auto=20?= =?UTF-8?q?format=20pre-commit=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 2 +- roboflow/core/version.py | 19 ++++++------------- roboflow/core/workspace.py | 3 ++- roboflow/models/instance_segmentation.py | 3 ++- roboflow/models/semantic_segmentation.py | 3 ++- roboflow/roboflowpy.py | 3 ++- roboflow/util/prediction.py | 10 +++------- 7 files changed, 18 insertions(+), 25 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d072a242..150b4c4b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -143,7 +143,7 @@ exclude = [ ] [[tool.mypy.overrides]] -module = +module = "_datetime.*", # IPython is an optional dependency "IPython.display.*", diff --git a/roboflow/core/version.py b/roboflow/core/version.py index c597739c..9bf7f9b4 100644 --- a/roboflow/core/version.py +++ b/roboflow/core/version.py @@ -14,18 +14,10 @@ from dotenv import load_dotenv from tqdm import tqdm -from roboflow.config import ( - API_URL, - APP_URL, - DEMO_KEYS, - TQDM_DISABLE, - TYPE_CLASSICATION, - TYPE_INSTANCE_SEGMENTATION, - TYPE_KEYPOINT_DETECTION, - TYPE_OBJECT_DETECTION, - TYPE_SEMANTIC_SEGMENTATION, - UNIVERSE_URL, -) +from roboflow.config import (API_URL, APP_URL, DEMO_KEYS, TQDM_DISABLE, + TYPE_CLASSICATION, TYPE_INSTANCE_SEGMENTATION, + TYPE_KEYPOINT_DETECTION, TYPE_OBJECT_DETECTION, + TYPE_SEMANTIC_SEGMENTATION, UNIVERSE_URL) from roboflow.core.dataset import Dataset from roboflow.models.classification import ClassificationModel from roboflow.models.inference import InferenceModel @@ -35,7 +27,8 @@ from roboflow.models.semantic_segmentation import SemanticSegmentationModel from roboflow.util.annotations import amend_data_yaml from roboflow.util.general import write_line -from roboflow.util.versions import get_wrong_dependencies_versions, print_warn_for_wrong_dependencies_versions +from roboflow.util.versions import (get_wrong_dependencies_versions, + print_warn_for_wrong_dependencies_versions) load_dotenv() diff --git a/roboflow/core/workspace.py b/roboflow/core/workspace.py index df3efbfc..85e05ed5 100644 --- a/roboflow/core/workspace.py +++ b/roboflow/core/workspace.py @@ -15,7 +15,8 @@ from roboflow.config import API_URL, CLIP_FEATURIZE_URL, DEMO_KEYS from roboflow.core.project import Project from roboflow.util import folderparser -from roboflow.util.active_learning_utils import check_box_size, clip_encode, count_comparisons +from roboflow.util.active_learning_utils import (check_box_size, clip_encode, + count_comparisons) from roboflow.util.two_stage_utils import ocr_infer diff --git a/roboflow/models/instance_segmentation.py b/roboflow/models/instance_segmentation.py index 3928197b..cb6758fe 100644 --- a/roboflow/models/instance_segmentation.py +++ b/roboflow/models/instance_segmentation.py @@ -1,6 +1,7 @@ from typing import Optional -from roboflow.config import INSTANCE_SEGMENTATION_MODEL, INSTANCE_SEGMENTATION_URL +from roboflow.config import (INSTANCE_SEGMENTATION_MODEL, + INSTANCE_SEGMENTATION_URL) from roboflow.models.inference import InferenceModel diff --git a/roboflow/models/semantic_segmentation.py b/roboflow/models/semantic_segmentation.py index 4ae974c0..e426c834 100644 --- a/roboflow/models/semantic_segmentation.py +++ b/roboflow/models/semantic_segmentation.py @@ -1,4 +1,5 @@ -from roboflow.config import SEMANTIC_SEGMENTATION_MODEL, SEMANTIC_SEGMENTATION_URL +from roboflow.config import (SEMANTIC_SEGMENTATION_MODEL, + SEMANTIC_SEGMENTATION_URL) from roboflow.models.inference import InferenceModel diff --git a/roboflow/roboflowpy.py b/roboflow/roboflowpy.py index c0faaa92..ca53dc36 100755 --- a/roboflow/roboflowpy.py +++ b/roboflow/roboflowpy.py @@ -6,7 +6,8 @@ import roboflow from roboflow import config as roboflow_config from roboflow.adapters import rfapi -from roboflow.config import APP_URL, get_conditional_configuration_variable, load_roboflow_api_key +from roboflow.config import (APP_URL, get_conditional_configuration_variable, + load_roboflow_api_key) from roboflow.models.classification import ClassificationModel from roboflow.models.instance_segmentation import InstanceSegmentationModel from roboflow.models.keypoint_detection import KeypointDetectionModel diff --git a/roboflow/util/prediction.py b/roboflow/util/prediction.py index a6bee5a3..46a627f9 100644 --- a/roboflow/util/prediction.py +++ b/roboflow/util/prediction.py @@ -12,13 +12,9 @@ from matplotlib import patches from PIL import Image -from roboflow.config import ( - CLASSIFICATION_MODEL, - INSTANCE_SEGMENTATION_MODEL, - OBJECT_DETECTION_MODEL, - PREDICTION_OBJECT, - SEMANTIC_SEGMENTATION_MODEL, -) +from roboflow.config import (CLASSIFICATION_MODEL, INSTANCE_SEGMENTATION_MODEL, + OBJECT_DETECTION_MODEL, PREDICTION_OBJECT, + SEMANTIC_SEGMENTATION_MODEL) from roboflow.util.image_utils import mask_image, validate_image_path From ba628030a21ae4b28f38f694d0c5cc017c85cd51 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Fri, 28 Jun 2024 10:39:46 +0200 Subject: [PATCH 6/9] Run mypy before tests --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b6e0532e..d8aef104 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,7 @@ jobs: - name: 🧹 Lint with flake8 run: | make check_code_quality - - name: 🧪 Test - run: "python -m unittest" - name: Check types with mypy run: mypy . + - name: 🧪 Test + run: "python -m unittest" From 4e13e74dfe972bd327460c0f8a1d45cfeea11f18 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Fri, 28 Jun 2024 10:44:42 +0200 Subject: [PATCH 7/9] fixup! Run mypy before tests --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 150b4c4b..bbbe5fc4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -143,7 +143,7 @@ exclude = [ ] [[tool.mypy.overrides]] -module = +module = [ "_datetime.*", # IPython is an optional dependency "IPython.display.*", @@ -155,4 +155,5 @@ module = "requests_toolbelt.*", "torch.*", "ultralytics.*", +] ignore_missing_imports = true From 5c0c146a4819facca8d7f7367fb3b4d546cdcb9c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 08:45:41 +0000 Subject: [PATCH 8/9] =?UTF-8?q?fix(pre=5Fcommit):=20=F0=9F=8E=A8=20auto=20?= =?UTF-8?q?format=20pre-commit=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- roboflow/core/version.py | 19 +++++++++++++------ roboflow/core/workspace.py | 3 +-- roboflow/models/instance_segmentation.py | 3 +-- roboflow/models/semantic_segmentation.py | 3 +-- roboflow/roboflowpy.py | 3 +-- roboflow/util/prediction.py | 10 +++++++--- 6 files changed, 24 insertions(+), 17 deletions(-) diff --git a/roboflow/core/version.py b/roboflow/core/version.py index 9bf7f9b4..c597739c 100644 --- a/roboflow/core/version.py +++ b/roboflow/core/version.py @@ -14,10 +14,18 @@ from dotenv import load_dotenv from tqdm import tqdm -from roboflow.config import (API_URL, APP_URL, DEMO_KEYS, TQDM_DISABLE, - TYPE_CLASSICATION, TYPE_INSTANCE_SEGMENTATION, - TYPE_KEYPOINT_DETECTION, TYPE_OBJECT_DETECTION, - TYPE_SEMANTIC_SEGMENTATION, UNIVERSE_URL) +from roboflow.config import ( + API_URL, + APP_URL, + DEMO_KEYS, + TQDM_DISABLE, + TYPE_CLASSICATION, + TYPE_INSTANCE_SEGMENTATION, + TYPE_KEYPOINT_DETECTION, + TYPE_OBJECT_DETECTION, + TYPE_SEMANTIC_SEGMENTATION, + UNIVERSE_URL, +) from roboflow.core.dataset import Dataset from roboflow.models.classification import ClassificationModel from roboflow.models.inference import InferenceModel @@ -27,8 +35,7 @@ from roboflow.models.semantic_segmentation import SemanticSegmentationModel from roboflow.util.annotations import amend_data_yaml from roboflow.util.general import write_line -from roboflow.util.versions import (get_wrong_dependencies_versions, - print_warn_for_wrong_dependencies_versions) +from roboflow.util.versions import get_wrong_dependencies_versions, print_warn_for_wrong_dependencies_versions load_dotenv() diff --git a/roboflow/core/workspace.py b/roboflow/core/workspace.py index 85e05ed5..df3efbfc 100644 --- a/roboflow/core/workspace.py +++ b/roboflow/core/workspace.py @@ -15,8 +15,7 @@ from roboflow.config import API_URL, CLIP_FEATURIZE_URL, DEMO_KEYS from roboflow.core.project import Project from roboflow.util import folderparser -from roboflow.util.active_learning_utils import (check_box_size, clip_encode, - count_comparisons) +from roboflow.util.active_learning_utils import check_box_size, clip_encode, count_comparisons from roboflow.util.two_stage_utils import ocr_infer diff --git a/roboflow/models/instance_segmentation.py b/roboflow/models/instance_segmentation.py index cb6758fe..3928197b 100644 --- a/roboflow/models/instance_segmentation.py +++ b/roboflow/models/instance_segmentation.py @@ -1,7 +1,6 @@ from typing import Optional -from roboflow.config import (INSTANCE_SEGMENTATION_MODEL, - INSTANCE_SEGMENTATION_URL) +from roboflow.config import INSTANCE_SEGMENTATION_MODEL, INSTANCE_SEGMENTATION_URL from roboflow.models.inference import InferenceModel diff --git a/roboflow/models/semantic_segmentation.py b/roboflow/models/semantic_segmentation.py index e426c834..4ae974c0 100644 --- a/roboflow/models/semantic_segmentation.py +++ b/roboflow/models/semantic_segmentation.py @@ -1,5 +1,4 @@ -from roboflow.config import (SEMANTIC_SEGMENTATION_MODEL, - SEMANTIC_SEGMENTATION_URL) +from roboflow.config import SEMANTIC_SEGMENTATION_MODEL, SEMANTIC_SEGMENTATION_URL from roboflow.models.inference import InferenceModel diff --git a/roboflow/roboflowpy.py b/roboflow/roboflowpy.py index ca53dc36..c0faaa92 100755 --- a/roboflow/roboflowpy.py +++ b/roboflow/roboflowpy.py @@ -6,8 +6,7 @@ import roboflow from roboflow import config as roboflow_config from roboflow.adapters import rfapi -from roboflow.config import (APP_URL, get_conditional_configuration_variable, - load_roboflow_api_key) +from roboflow.config import APP_URL, get_conditional_configuration_variable, load_roboflow_api_key from roboflow.models.classification import ClassificationModel from roboflow.models.instance_segmentation import InstanceSegmentationModel from roboflow.models.keypoint_detection import KeypointDetectionModel diff --git a/roboflow/util/prediction.py b/roboflow/util/prediction.py index 46a627f9..a6bee5a3 100644 --- a/roboflow/util/prediction.py +++ b/roboflow/util/prediction.py @@ -12,9 +12,13 @@ from matplotlib import patches from PIL import Image -from roboflow.config import (CLASSIFICATION_MODEL, INSTANCE_SEGMENTATION_MODEL, - OBJECT_DETECTION_MODEL, PREDICTION_OBJECT, - SEMANTIC_SEGMENTATION_MODEL) +from roboflow.config import ( + CLASSIFICATION_MODEL, + INSTANCE_SEGMENTATION_MODEL, + OBJECT_DETECTION_MODEL, + PREDICTION_OBJECT, + SEMANTIC_SEGMENTATION_MODEL, +) from roboflow.util.image_utils import mask_image, validate_image_path From 2f34baa76c94ed6a5bea7263ba1083b7adf5a2d5 Mon Sep 17 00:00:00 2001 From: Iuri de Silvio Date: Fri, 28 Jun 2024 10:50:58 +0200 Subject: [PATCH 9/9] fixup! fixup! Run mypy before tests --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index bbbe5fc4..b418756a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -151,7 +151,7 @@ module = [ "ipywidgets.*", # matplotlib typing is not available for Python 3.8 # remove this when we stop supporting Python 3.8 - "matplotlib", + "matplotlib.*", "requests_toolbelt.*", "torch.*", "ultralytics.*",