diff --git a/conftest.py b/conftest.py index f82cefc9..670b7284 100644 --- a/conftest.py +++ b/conftest.py @@ -1,10 +1,9 @@ """Setup for Sybil.""" -import io # noqa: TC003 import uuid -from collections.abc import Generator # noqa: TC003 from doctest import ELLIPSIS from pathlib import Path +from typing import TYPE_CHECKING import pytest from mock_vws import MockVWS @@ -16,6 +15,10 @@ PythonCodeBlockParser, ) +if TYPE_CHECKING: + import io + from collections.abc import Generator + @pytest.fixture(name="make_image_file") def fixture_make_image_file( diff --git a/pyproject.toml b/pyproject.toml index 783df569..5ba6fb94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ dynamic = [ "version", ] dependencies = [ - "beartype>=0.22.9", + "beartype==0.23.0rc0", "httpx>=0.28.0", "requests>=2.32.3", "urllib3>=2.2.3", diff --git a/src/vws/_async_vws_request.py b/src/vws/_async_vws_request.py index bd8d9142..3a9065e1 100644 --- a/src/vws/_async_vws_request.py +++ b/src/vws/_async_vws_request.py @@ -2,11 +2,14 @@ Vuforia Target API. """ +from typing import TYPE_CHECKING + from beartype import BeartypeConf, beartype from vws_auth_tools import authorization_header, rfc_1123_date -from vws.response import Response # noqa: TC001 -from vws.transports import AsyncTransport # noqa: TC001 +if TYPE_CHECKING: + from vws.response import Response + from vws.transports import AsyncTransport @beartype(conf=BeartypeConf(is_pep484_tower=True)) diff --git a/src/vws/_vws_request.py b/src/vws/_vws_request.py index 3153dce0..ef4017c0 100644 --- a/src/vws/_vws_request.py +++ b/src/vws/_vws_request.py @@ -2,11 +2,14 @@ API. """ +from typing import TYPE_CHECKING + from beartype import BeartypeConf, beartype from vws_auth_tools import authorization_header, rfc_1123_date -from vws.response import Response # noqa: TC001 -from vws.transports import Transport # noqa: TC001 +if TYPE_CHECKING: + from vws.response import Response + from vws.transports import Transport @beartype(conf=BeartypeConf(is_pep484_tower=True)) diff --git a/src/vws/async_vumark_service.py b/src/vws/async_vumark_service.py index 6575f771..8e792109 100644 --- a/src/vws/async_vumark_service.py +++ b/src/vws/async_vumark_service.py @@ -2,7 +2,7 @@ import json from http import HTTPMethod, HTTPStatus -from typing import Self +from typing import TYPE_CHECKING, Self from beartype import BeartypeConf, beartype @@ -11,7 +11,9 @@ from vws.exceptions.custom_exceptions import ServerError from vws.exceptions.vws_exceptions import TooManyRequestsError from vws.transports import AsyncHTTPXTransport, AsyncTransport -from vws.vumark_accept import VuMarkAccept # noqa: TC001 + +if TYPE_CHECKING: + from vws.vumark_accept import VuMarkAccept @beartype(conf=BeartypeConf(is_pep484_tower=True)) diff --git a/src/vws/async_vws.py b/src/vws/async_vws.py index aad20576..4d5577d8 100644 --- a/src/vws/async_vws.py +++ b/src/vws/async_vws.py @@ -4,7 +4,7 @@ import base64 import json from http import HTTPMethod, HTTPStatus -from typing import Self +from typing import TYPE_CHECKING, Self from beartype import BeartypeConf, beartype @@ -23,9 +23,11 @@ TargetStatuses, TargetSummaryReport, ) -from vws.response import Response # noqa: TC001 from vws.transports import AsyncHTTPXTransport, AsyncTransport +if TYPE_CHECKING: + from vws.response import Response + @beartype(conf=BeartypeConf(is_pep484_tower=True)) class AsyncVWS: diff --git a/src/vws/exceptions/base_exceptions.py b/src/vws/exceptions/base_exceptions.py index 616e0682..8fbbe1c4 100644 --- a/src/vws/exceptions/base_exceptions.py +++ b/src/vws/exceptions/base_exceptions.py @@ -4,12 +4,14 @@ Cloud Recognition Web API. """ -from collections.abc import Mapping # noqa: TC003 -from typing import ClassVar +from typing import TYPE_CHECKING, ClassVar from beartype import beartype -from vws.response import Response # noqa: TC001 +if TYPE_CHECKING: + from collections.abc import Mapping + + from vws.response import Response @beartype diff --git a/src/vws/exceptions/custom_exceptions.py b/src/vws/exceptions/custom_exceptions.py index c53f5db2..4b7ffea7 100644 --- a/src/vws/exceptions/custom_exceptions.py +++ b/src/vws/exceptions/custom_exceptions.py @@ -4,9 +4,12 @@ https://developer.vuforia.com/library/web-api/cloud-targets-web-services-api#result-codes """ +from typing import TYPE_CHECKING + from beartype import beartype -from vws.response import Response # noqa: TC001 +if TYPE_CHECKING: + from vws.response import Response @beartype diff --git a/src/vws/vumark_service.py b/src/vws/vumark_service.py index 168e8b6f..ca43f707 100644 --- a/src/vws/vumark_service.py +++ b/src/vws/vumark_service.py @@ -2,6 +2,7 @@ import json from http import HTTPMethod, HTTPStatus +from typing import TYPE_CHECKING from beartype import BeartypeConf, beartype @@ -10,7 +11,9 @@ from vws.exceptions.custom_exceptions import ServerError from vws.exceptions.vws_exceptions import TooManyRequestsError from vws.transports import RequestsTransport, Transport -from vws.vumark_accept import VuMarkAccept # noqa: TC001 + +if TYPE_CHECKING: + from vws.vumark_accept import VuMarkAccept @beartype(conf=BeartypeConf(is_pep484_tower=True)) diff --git a/src/vws/vws.py b/src/vws/vws.py index fc54c30f..dddbd259 100644 --- a/src/vws/vws.py +++ b/src/vws/vws.py @@ -4,6 +4,7 @@ import json import time from http import HTTPMethod, HTTPStatus +from typing import TYPE_CHECKING from beartype import BeartypeConf, beartype @@ -22,9 +23,11 @@ TargetStatuses, TargetSummaryReport, ) -from vws.response import Response # noqa: TC001 from vws.transports import RequestsTransport, Transport +if TYPE_CHECKING: + from vws.response import Response + @beartype(conf=BeartypeConf(is_pep484_tower=True)) class VWS: diff --git a/tests/conftest.py b/tests/conftest.py index 15ef17da..ffad3529 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,6 @@ """Configuration, plugins and fixtures for `pytest`.""" -import io # noqa: TC003 -from collections.abc import AsyncGenerator, Generator # noqa: TC003 -from pathlib import Path # noqa: TC003 -from typing import BinaryIO, Literal +from typing import TYPE_CHECKING, BinaryIO, Literal import pytest import pytest_asyncio @@ -20,6 +17,11 @@ VuMarkService, ) +if TYPE_CHECKING: + import io + from collections.abc import AsyncGenerator, Generator + from pathlib import Path + @pytest.fixture(name="_mock_database") def fixture_mock_database() -> Generator[CloudDatabase]: diff --git a/tests/test_async_cloud_reco_exceptions.py b/tests/test_async_cloud_reco_exceptions.py index a9c1395a..2d41bded 100644 --- a/tests/test_async_cloud_reco_exceptions.py +++ b/tests/test_async_cloud_reco_exceptions.py @@ -2,10 +2,10 @@ AsyncCloudRecoService. """ -import io # noqa: TC003 import json import uuid from http import HTTPStatus +from typing import TYPE_CHECKING import pytest from mock_vws import CloudQueryFailureResponse, MockVWS @@ -23,6 +23,9 @@ RequestEntityTooLargeError, ) +if TYPE_CHECKING: + import io + @pytest.mark.asyncio async def test_too_many_max_results( diff --git a/tests/test_async_query.py b/tests/test_async_query.py index 2026d491..7da4b305 100644 --- a/tests/test_async_query.py +++ b/tests/test_async_query.py @@ -1,8 +1,7 @@ """Tests for the ``AsyncCloudRecoService`` querying functionality.""" -import io # noqa: TC003 import uuid -from typing import BinaryIO +from typing import TYPE_CHECKING, BinaryIO import pytest from mock_vws import MockVWS @@ -11,6 +10,9 @@ from vws import AsyncCloudRecoService, AsyncVWS from vws.include_target_data import CloudRecoIncludeTargetData +if TYPE_CHECKING: + import io + class TestQuery: """Tests for making async image queries.""" diff --git a/tests/test_async_vws.py b/tests/test_async_vws.py index f59c5f2e..a44ebb11 100644 --- a/tests/test_async_vws.py +++ b/tests/test_async_vws.py @@ -1,9 +1,8 @@ """Tests for async helper functions for managing a Vuforia database.""" import base64 -import io # noqa: TC003 import uuid -from typing import BinaryIO +from typing import TYPE_CHECKING, BinaryIO import pytest from mock_vws import MockVWS @@ -20,6 +19,9 @@ ) from vws.vumark_accept import VuMarkAccept +if TYPE_CHECKING: + import io + class TestAddTarget: """Tests for adding a target.""" diff --git a/tests/test_async_vws_exceptions.py b/tests/test_async_vws_exceptions.py index efc3c05a..96a5b2c3 100644 --- a/tests/test_async_vws_exceptions.py +++ b/tests/test_async_vws_exceptions.py @@ -3,6 +3,7 @@ import io import uuid from http import HTTPStatus +from typing import TYPE_CHECKING import pytest from mock_vws import MockVWS, VuMarkGenerationFailure @@ -10,7 +11,6 @@ from mock_vws.states import States from vws import AsyncVuMarkService, AsyncVWS -from vws.exceptions.base_exceptions import VWSError # noqa: TC001 from vws.exceptions.custom_exceptions import ( ServerError, ) @@ -35,6 +35,9 @@ ) from vws.vumark_accept import VuMarkAccept +if TYPE_CHECKING: + from vws.exceptions.base_exceptions import VWSError + @pytest.mark.asyncio async def test_image_too_large( diff --git a/tests/test_cloud_reco_exceptions.py b/tests/test_cloud_reco_exceptions.py index 29632000..f2675760 100644 --- a/tests/test_cloud_reco_exceptions.py +++ b/tests/test_cloud_reco_exceptions.py @@ -1,9 +1,9 @@ """Tests for exceptions raised when using the CloudRecoService.""" -import io # noqa: TC003 import json import uuid from http import HTTPStatus +from typing import TYPE_CHECKING import pytest from mock_vws import CloudQueryFailureResponse, MockVWS @@ -23,6 +23,9 @@ RequestEntityTooLargeError, ) +if TYPE_CHECKING: + import io + def test_too_many_max_results( *, diff --git a/tests/test_query.py b/tests/test_query.py index dac206b2..f847a5d2 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -1,9 +1,8 @@ """Tests for the ``CloudRecoService`` querying functionality.""" import datetime -import io # noqa: TC003 import uuid -from typing import BinaryIO +from typing import TYPE_CHECKING, BinaryIO import pytest import requests @@ -14,6 +13,9 @@ from vws import VWS, CloudRecoService from vws.include_target_data import CloudRecoIncludeTargetData +if TYPE_CHECKING: + import io + class TestQuery: """Tests for making image queries.""" diff --git a/tests/test_transports.py b/tests/test_transports.py index c039ea7a..9f45a3ad 100644 --- a/tests/test_transports.py +++ b/tests/test_transports.py @@ -1,8 +1,8 @@ """Tests for HTTP transport implementations.""" -import io # noqa: TC003 import uuid from http import HTTPStatus +from typing import TYPE_CHECKING import httpx import pytest @@ -20,6 +20,9 @@ from vws.transports import AsyncHTTPXTransport, HTTPXTransport from vws.vumark_accept import VuMarkAccept +if TYPE_CHECKING: + import io + class TestHTTPXTransport: """Tests for ``HTTPXTransport``.""" diff --git a/tests/test_vws.py b/tests/test_vws.py index dff029c2..829df1ff 100644 --- a/tests/test_vws.py +++ b/tests/test_vws.py @@ -2,10 +2,9 @@ import base64 import datetime -import io # noqa: TC003 import secrets import uuid -from typing import BinaryIO +from typing import TYPE_CHECKING, BinaryIO import pytest import requests @@ -23,6 +22,9 @@ ) from vws.vumark_accept import VuMarkAccept +if TYPE_CHECKING: + import io + class TestAddTarget: """Tests for adding a target."""