Skip to content

Commit e9a4493

Browse files
committed
Remove workaround now that werkzeug.formparser.MultiPartParser is typed
1 parent ed79012 commit e9a4493

File tree

5 files changed

+17
-37
lines changed

5 files changed

+17
-37
lines changed

src/mock_vws/_query_tools.py

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import io
1010
import uuid
1111
from email.message import EmailMessage
12-
from typing import IO, TYPE_CHECKING, Any
12+
from typing import TYPE_CHECKING, Any
1313
from zoneinfo import ZoneInfo
1414

1515
from werkzeug.formparser import MultiPartParser
@@ -20,33 +20,10 @@
2020
from mock_vws._mock_common import json_dump
2121

2222
if TYPE_CHECKING:
23-
from werkzeug.datastructures import FileStorage, MultiDict
24-
2523
from mock_vws.database import VuforiaDatabase
2624
from mock_vws.image_matchers import ImageMatcher
2725

2826

29-
class TypedMultiPartParser(MultiPartParser):
30-
"""
31-
A MultiPartParser which returns types for fields.
32-
33-
This is a workaround for https://github.com/pallets/werkzeug/pull/2841.
34-
"""
35-
36-
def parse(
37-
self,
38-
stream: IO[bytes],
39-
boundary: bytes,
40-
content_length: int | None,
41-
) -> tuple[MultiDict[str, str], MultiDict[str, FileStorage]]:
42-
# Once this Pyright issue is fixed, we can remove this whole class.
43-
return super().parse( # pyright: ignore[reportUnknownVariableType, reportUnknownMemberType]
44-
stream=stream,
45-
boundary=boundary,
46-
content_length=content_length,
47-
)
48-
49-
5027
def get_query_match_response_text(
5128
request_headers: dict[str, str],
5229
request_body: bytes,
@@ -73,7 +50,7 @@ def get_query_match_response_text(
7350
boundary = email_message.get_boundary()
7451
assert isinstance(boundary, str)
7552

76-
parser = TypedMultiPartParser()
53+
parser = MultiPartParser()
7754
fields, files = parser.parse(
7855
stream=io.BytesIO(request_body),
7956
boundary=boundary.encode("utf-8"),

src/mock_vws/_query_validators/fields_validators.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
import logging
77
from email.message import EmailMessage
88

9-
from mock_vws._query_tools import TypedMultiPartParser
9+
from werkzeug.formparser import MultiPartParser
10+
1011
from mock_vws._query_validators.exceptions import UnknownParameters
1112

1213
_LOGGER = logging.getLogger(__name__)
@@ -30,7 +31,7 @@ def validate_extra_fields(
3031
email_message["Content-Type"] = request_headers["Content-Type"]
3132
boundary = email_message.get_boundary()
3233
assert isinstance(boundary, str)
33-
parser = TypedMultiPartParser()
34+
parser = MultiPartParser()
3435
fields, files = parser.parse(
3536
stream=io.BytesIO(request_body),
3637
boundary=boundary.encode("utf-8"),

src/mock_vws/_query_validators/image_validators.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
from email.message import EmailMessage
88

99
from PIL import Image
10+
from werkzeug.formparser import MultiPartParser
1011

11-
from mock_vws._query_tools import TypedMultiPartParser
1212
from mock_vws._query_validators.exceptions import (
1313
BadImage,
1414
ImageNotGiven,
@@ -36,7 +36,7 @@ def validate_image_field_given(
3636
email_message["Content-Type"] = request_headers["Content-Type"]
3737
boundary = email_message.get_boundary()
3838
assert isinstance(boundary, str)
39-
parser = TypedMultiPartParser()
39+
parser = MultiPartParser()
4040
_, files = parser.parse(
4141
stream=io.BytesIO(request_body),
4242
boundary=boundary.encode("utf-8"),
@@ -67,7 +67,7 @@ def validate_image_file_size(
6767
email_message["Content-Type"] = request_headers["Content-Type"]
6868
boundary = email_message.get_boundary()
6969
assert isinstance(boundary, str)
70-
parser = TypedMultiPartParser()
70+
parser = MultiPartParser()
7171
_, files = parser.parse(
7272
stream=io.BytesIO(request_body),
7373
boundary=boundary.encode("utf-8"),
@@ -108,7 +108,7 @@ def validate_image_dimensions(
108108
email_message["Content-Type"] = request_headers["Content-Type"]
109109
boundary = email_message.get_boundary()
110110
assert isinstance(boundary, str)
111-
parser = TypedMultiPartParser()
111+
parser = MultiPartParser()
112112
_, files = parser.parse(
113113
stream=io.BytesIO(request_body),
114114
boundary=boundary.encode("utf-8"),
@@ -145,7 +145,7 @@ def validate_image_format(
145145
email_message["Content-Type"] = request_headers["Content-Type"]
146146
boundary = email_message.get_boundary()
147147
assert isinstance(boundary, str)
148-
parser = TypedMultiPartParser()
148+
parser = MultiPartParser()
149149
_, files = parser.parse(
150150
stream=io.BytesIO(request_body),
151151
boundary=boundary.encode("utf-8"),
@@ -179,7 +179,7 @@ def validate_image_is_image(
179179
email_message["Content-Type"] = request_headers["Content-Type"]
180180
boundary = email_message.get_boundary()
181181
assert isinstance(boundary, str)
182-
parser = TypedMultiPartParser()
182+
parser = MultiPartParser()
183183
_, files = parser.parse(
184184
stream=io.BytesIO(request_body),
185185
boundary=boundary.encode("utf-8"),

src/mock_vws/_query_validators/include_target_data_validators.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
import logging
77
from email.message import EmailMessage
88

9-
from mock_vws._query_tools import TypedMultiPartParser
9+
from werkzeug.formparser import MultiPartParser
10+
1011
from mock_vws._query_validators.exceptions import InvalidIncludeTargetData
1112

1213
_LOGGER = logging.getLogger(__name__)
@@ -32,7 +33,7 @@ def validate_include_target_data(
3233
email_message["Content-Type"] = request_headers["Content-Type"]
3334
boundary = email_message.get_boundary()
3435
assert isinstance(boundary, str)
35-
parser = TypedMultiPartParser()
36+
parser = MultiPartParser()
3637
fields, _ = parser.parse(
3738
stream=io.BytesIO(request_body),
3839
boundary=boundary.encode("utf-8"),

src/mock_vws/_query_validators/num_results_validators.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
import logging
77
from email.message import EmailMessage
88

9-
from mock_vws._query_tools import TypedMultiPartParser
9+
from werkzeug.formparser import MultiPartParser
10+
1011
from mock_vws._query_validators.exceptions import (
1112
InvalidMaxNumResults,
1213
MaxNumResultsOutOfRange,
@@ -36,7 +37,7 @@ def validate_max_num_results(
3637
email_message["Content-Type"] = request_headers["Content-Type"]
3738
boundary = email_message.get_boundary()
3839
assert isinstance(boundary, str)
39-
parser = TypedMultiPartParser()
40+
parser = MultiPartParser()
4041
fields, _ = parser.parse(
4142
stream=io.BytesIO(request_body),
4243
boundary=boundary.encode("utf-8"),

0 commit comments

Comments
 (0)