diff --git a/pyproject.toml b/pyproject.toml index 711eb7c0f..015559e39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -318,7 +318,7 @@ dev = [ "sybil==6.1.0", "tenacity==8.2.3", "torch==2.3.0", - "types-docker==7.0.0.20240507", # This is very incomplete, so we still do not check ``test_docker.py`` with pyright. + "types-docker==7.0.0.20240507", "types-Pillow==10.2.0.20240423", "types-PyYAML==6.0.12.20240311", "types-requests==2.31.0.20240406", @@ -348,9 +348,6 @@ keep_full_version = true [tool.pyright] reportUnnecessaryTypeIgnoreComment = true typeCheckingMode = "strict" -# We have too many errors because of -# docker-py not being typed. -ignore = ["tests/mock_vws/test_docker.py"] [tool.deptry] pep621_dev_dependency_groups = ["dev"] diff --git a/tests/mock_vws/test_docker.py b/tests/mock_vws/test_docker.py index 766ab8ae3..7c8d68d6b 100644 --- a/tests/mock_vws/test_docker.py +++ b/tests/mock_vws/test_docker.py @@ -13,6 +13,7 @@ import requests from docker.errors import BuildError, NotFound from docker.models.containers import Container +from docker.models.images import Image from docker.models.networks import Network from mock_vws.database import VuforiaDatabase from tenacity import retry @@ -25,8 +26,6 @@ import io from collections.abc import Iterator - from docker.models.images import Image - # We do not cover this function because hitting particular branches depends on # timing. @@ -67,16 +66,16 @@ def fixture_custom_bridge_network() -> Iterator[Network]: Yields: A custom bridge network. """ - client = docker.from_env() + client = docker.from_env() # pyright: ignore[reportUnknownMemberType] try: - network = client.networks.create( + network = client.networks.create( # pyright: ignore[reportUnknownMemberType] name="test-vws-bridge-" + uuid.uuid4().hex, driver="bridge", ) except NotFound: # On Windows the "bridge" network driver is not available and we use # the "nat" driver instead. - network = client.networks.create( + network = client.networks.create( # pyright: ignore[reportUnknownMemberType] name="test-vws-bridge-" + uuid.uuid4().hex, driver="nat", ) @@ -89,10 +88,10 @@ def fixture_custom_bridge_network() -> Iterator[Network]: network.reload() images_to_remove: set[Image] = set() for container in network.containers: - assert isinstance(container, Container) - network.disconnect(container=container) - container.stop() - container.remove(v=True, force=True) + network.disconnect(container=container) # pyright: ignore[reportUnknownMemberType] + container.stop() # pyright: ignore[reportUnknownMemberType] + container.remove(v=True, force=True) # pyright: ignore[reportUnknownMemberType] + assert isinstance(container.image, Image) # pyright: ignore[reportUnknownMemberType] images_to_remove.add(container.image) # This does leave behind untagged images. @@ -112,7 +111,7 @@ def test_build_and_run( application. """ repository_root = request.config.rootpath - client = docker.from_env() + client = docker.from_env() # pyright: ignore[reportUnknownMemberType] dockerfile = repository_root / "src/mock_vws/_flask_server/Dockerfile" @@ -122,7 +121,7 @@ def test_build_and_run( vwq_tag = f"vws-mock-vwq:latest-{random}" try: - target_manager_image, _ = client.images.build( + target_manager_image, _ = client.images.build( # pyright: ignore[reportUnknownMemberType] path=str(repository_root), dockerfile=str(dockerfile), tag=target_manager_tag, @@ -143,7 +142,7 @@ def test_build_and_run( reason="We do not currently support using Windows containers." ) - vwq_image, _ = client.images.build( + vwq_image, _ = client.images.build( # pyright: ignore[reportUnknownMemberType] path=str(repository_root), dockerfile=str(dockerfile), tag=vwq_tag, @@ -151,7 +150,7 @@ def test_build_and_run( rm=True, ) - vws_image, _ = client.images.build( + vws_image, _ = client.images.build( # pyright: ignore[reportUnknownMemberType] path=str(repository_root), dockerfile=str(dockerfile), tag=vws_tag, @@ -165,14 +164,14 @@ def test_build_and_run( f"http://{target_manager_container_name}:5000" ) - target_manager_container = client.containers.run( + target_manager_container = client.containers.run( # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType] image=target_manager_image, detach=True, name=target_manager_container_name, publish_all_ports=True, network=custom_bridge_network.name, ) - vws_container = client.containers.run( + vws_container = client.containers.run( # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType] image=vws_image, detach=True, name="vws-mock-vws-" + random, @@ -182,7 +181,7 @@ def test_build_and_run( "TARGET_MANAGER_BASE_URL": target_manager_internal_base_url, }, ) - vwq_container = client.containers.run( + vwq_container = client.containers.run( # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType] image=vwq_image, detach=True, name="vws-mock-vwq-" + random,