Skip to content

Commit f42c91d

Browse files
Merge pull request #2266 from VWS-Python/more-beartype
Use beartype on many functions
2 parents a1bf514 + 5f6b8ef commit f42c91d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+211
-2
lines changed

ci/custom_linters.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
import pytest
88
import yaml
9+
from beartype import beartype
910

1011

12+
@beartype
1113
def _ci_patterns(*, repository_root: Path) -> set[str]:
1214
"""
1315
Return the CI patterns given in the CI configuration file.
@@ -21,6 +23,7 @@ def _ci_patterns(*, repository_root: Path) -> set[str]:
2123
return ci_patterns
2224

2325

26+
@beartype
2427
def _tests_from_pattern(
2528
*,
2629
ci_pattern: str,

conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from tests.mock_vws.utils.retries import RETRY_EXCEPTIONS
1414

1515

16+
@beartype
1617
def pytest_collection_modifyitems(items: list[pytest.Item]) -> None:
1718
"""
1819
Apply the beartype decorator to all collected test functions.
@@ -32,6 +33,7 @@ def pytest_collection_modifyitems(items: list[pytest.Item]) -> None:
3233

3334

3435
@pytest.hookimpl(optionalhook=True)
36+
@beartype
3537
def pytest_set_filtered_exceptions() -> tuple[type[Exception], ...]:
3638
"""
3739
Return exceptions to retry on.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ dynamic = [
3636
"version",
3737
]
3838
dependencies = [
39+
"beartype",
3940
"flask",
4041
# Pin numpy to avoid:
4142
# https://github.com/pytorch/pytorch/issues/128860
@@ -53,7 +54,6 @@ dependencies = [
5354
]
5455
optional-dependencies.dev = [
5556
"actionlint-py==1.7.1.15",
56-
"beartype==0.18.5",
5757
"check-manifest==0.49",
5858
"check-wheel-contents==0.6.0",
5959
"deptry==0.20.0",

src/mock_vws/_base64_decoding.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
import binascii
77
import string
88

9+
from beartype import beartype
910

11+
12+
@beartype
1013
def decode_base64(encoded_data: str) -> bytes:
1114
"""
1215
Decode base64 somewhat like Vuforia does.

src/mock_vws/_database_matchers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
from collections.abc import Iterable, Mapping
66

7+
from beartype import beartype
78
from vws_auth_tools import authorization_header
89

910
from mock_vws.database import VuforiaDatabase
1011

1112

13+
@beartype
1214
def get_database_matching_client_keys(
1315
*,
1416
request_headers: Mapping[str, str],
@@ -54,6 +56,7 @@ def get_database_matching_client_keys(
5456
raise ValueError
5557

5658

59+
@beartype
5760
def get_database_matching_server_keys(
5861
*,
5962
request_headers: Mapping[str, str],

src/mock_vws/_flask_server/target_manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from http import HTTPMethod, HTTPStatus
1111
from zoneinfo import ZoneInfo
1212

13+
from beartype import beartype
1314
from flask import Flask, Response, request
1415
from pydantic_settings import BaseSettings
1516

@@ -78,6 +79,7 @@ def delete_database(database_name: str) -> Response:
7879

7980

8081
@TARGET_MANAGER_FLASK_APP.route("/databases", methods=[HTTPMethod.GET])
82+
@beartype
8183
def get_databases() -> Response:
8284
"""
8385
Return a list of all databases.

src/mock_vws/_flask_server/vwq.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from http import HTTPMethod, HTTPStatus
1111

1212
import requests
13+
from beartype import beartype
1314
from flask import Flask, Response, request
1415
from pydantic_settings import BaseSettings
1516

@@ -58,6 +59,7 @@ class VWQSettings(BaseSettings):
5859
)
5960

6061

62+
@beartype
6163
def get_all_databases() -> set[VuforiaDatabase]:
6264
"""
6365
Get all database objects from the target manager back-end.

src/mock_vws/_flask_server/vws.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from http import HTTPMethod, HTTPStatus
1515

1616
import requests
17+
from beartype import beartype
1718
from flask import Flask, Response, request
1819
from pydantic_settings import BaseSettings
1920

@@ -73,6 +74,7 @@ class VWSSettings(BaseSettings):
7374
)
7475

7576

77+
@beartype
7678
def get_all_databases() -> set[VuforiaDatabase]:
7779
"""
7880
Get all database objects from the task manager back-end.
@@ -117,6 +119,7 @@ def set_terminate_wsgi_input() -> None:
117119

118120

119121
@VWS_FLASK_APP.before_request
122+
@beartype
120123
def validate_request() -> None:
121124
"""
122125
Run validators on the request.
@@ -220,6 +223,7 @@ def add_target() -> Response:
220223

221224

222225
@VWS_FLASK_APP.route("/targets/<string:target_id>", methods=[HTTPMethod.GET])
226+
@beartype
223227
def get_target(target_id: str) -> Response:
224228
"""
225229
Get details of a target.
@@ -437,6 +441,7 @@ def target_summary(target_id: str) -> Response:
437441
"/duplicates/<string:target_id>",
438442
methods=[HTTPMethod.GET],
439443
)
444+
@beartype
440445
def get_duplicates(target_id: str) -> Response:
441446
"""
442447
Get targets which may be considered duplicates of a given target.

src/mock_vws/_mock_common.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from dataclasses import dataclass
77
from typing import Any
88

9+
from beartype import beartype
10+
911

1012
@dataclass(frozen=True)
1113
class Route:
@@ -24,6 +26,7 @@ class Route:
2426
http_methods: frozenset[str]
2527

2628

29+
@beartype
2730
def json_dump(*, body: dict[str, Any]) -> str:
2831
"""
2932
Returns:

src/mock_vws/_query_tools.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from email.message import EmailMessage
1010
from typing import Any
1111

12+
from beartype import beartype
1213
from werkzeug.formparser import MultiPartParser
1314

1415
from mock_vws._base64_decoding import decode_base64
@@ -19,6 +20,7 @@
1920
from mock_vws.image_matchers import ImageMatcher
2021

2122

23+
@beartype
2224
def get_query_match_response_text(
2325
*,
2426
request_headers: Mapping[str, str],

0 commit comments

Comments
 (0)