Skip to content

Commit a7ffabb

Browse files
thseilerstanislaw
authored andcommitted
code-climate: mypy: address type-arg
1 parent 81caa87 commit a7ffabb

File tree

6 files changed

+70
-31
lines changed

6 files changed

+70
-31
lines changed

strictdoc/export/html/form_objects/grammar_element_form_object.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def,union-attr,type-arg"
2-
from typing import Dict, List, Optional, Set, Tuple, Union
1+
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def,union-attr"
2+
from typing import List, Optional, Set, Tuple, Union
33

44
from jinja2 import Template
55
from starlette.datastructures import FormData
@@ -26,7 +26,7 @@
2626
from strictdoc.export.html.html_templates import JinjaEnvironment
2727
from strictdoc.helpers.auto_described import auto_described
2828
from strictdoc.helpers.cast import assert_cast
29-
from strictdoc.helpers.form_data import parse_form_data
29+
from strictdoc.helpers.form_data import ParsedFormData, parse_form_data
3030
from strictdoc.helpers.mid import MID
3131
from strictdoc.helpers.string import is_uppercase_underscore_string
3232
from strictdoc.server.error_object import ErrorObject
@@ -135,15 +135,20 @@ def create_from_request(
135135
(field_name, field_value)
136136
for field_name, field_value in request_form_data.multi_items()
137137
]
138-
request_form_dict: Dict = assert_cast(
138+
request_form_dict: ParsedFormData = assert_cast(
139139
parse_form_data(request_form_data_as_list), dict
140140
)
141141

142142
element_mid = request_form_dict["element_mid"]
143143

144+
#
144145
# Grammar fields.
146+
#
145147
document_grammar_fields = request_form_dict["document_grammar_field"]
146148
for field_mid, field_dict in document_grammar_fields.items():
149+
if not isinstance(field_dict, dict):
150+
raise TypeError(f"Expected a dict, but got {type(field_dict)}")
151+
147152
field_name = field_dict["field_name"]
148153
field_human_title = field_dict.get("field_human_title")
149154
if field_human_title is not None:
@@ -159,13 +164,19 @@ def create_from_request(
159164
)
160165
form_object_fields.append(form_object_field)
161166

167+
#
162168
# Grammar relations.
169+
#
163170
document_grammar_relations = request_form_dict.get(
164171
"document_grammar_relation", {}
165172
)
166173
for field_mid, field_dict in document_grammar_relations.items():
174+
if not isinstance(field_dict, dict):
175+
raise TypeError(f"Expected a dict, but got {type(field_dict)}")
176+
167177
field_type = field_dict["type"]
168178
field_role = field_dict["role"].strip()
179+
169180
form_object_relation = GrammarFormRelation(
170181
relation_mid=field_mid,
171182
relation_type=field_type,

strictdoc/export/html/form_objects/grammar_form_object.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def,type-arg"
2-
from typing import Dict, List, Optional, Set
1+
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def"
2+
from typing import List, Optional, Set
33

44
from markupsafe import Markup
55
from starlette.datastructures import FormData
@@ -16,7 +16,10 @@
1616
from strictdoc.export.html.html_templates import JinjaEnvironment
1717
from strictdoc.helpers.auto_described import auto_described
1818
from strictdoc.helpers.cast import assert_cast
19-
from strictdoc.helpers.form_data import parse_form_data
19+
from strictdoc.helpers.form_data import (
20+
ParsedFormData,
21+
parse_form_data,
22+
)
2023
from strictdoc.helpers.mid import MID
2124
from strictdoc.helpers.string import is_uppercase_underscore_string
2225
from strictdoc.server.error_object import ErrorObject
@@ -93,14 +96,23 @@ def create_from_request(
9396
(field_name, field_value)
9497
for field_name, field_value in request_form_data.multi_items()
9598
]
96-
request_form_dict: Dict = assert_cast(
99+
request_form_dict: ParsedFormData = assert_cast(
97100
parse_form_data(request_form_data_as_list), dict
98101
)
99102

100103
document_grammar_fields = request_form_dict[
101104
"document_grammar_element_field"
102105
]
106+
107+
if not isinstance(document_grammar_fields, dict):
108+
raise TypeError(
109+
f"Expected a dict, but got {type(document_grammar_fields)}"
110+
)
111+
103112
for field_mid, field_dict in document_grammar_fields.items():
113+
if not isinstance(field_dict, dict):
114+
raise TypeError(f"Expected a dict, but got {type(field_dict)}")
115+
104116
is_new = field_dict["is_new"] == "true"
105117
field_name = field_dict["field_name"]
106118

strictdoc/export/html/form_objects/included_document_form_object.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def,type-arg"
1+
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def"
22
import re
33
from collections import defaultdict
44
from typing import Dict, List, Optional
@@ -9,7 +9,7 @@
99
from strictdoc.export.html.html_templates import JinjaEnvironment
1010
from strictdoc.helpers.auto_described import auto_described
1111
from strictdoc.helpers.cast import assert_cast
12-
from strictdoc.helpers.form_data import parse_form_data
12+
from strictdoc.helpers.form_data import ParsedFormData, parse_form_data
1313
from strictdoc.helpers.string import sanitize_html_form_field
1414
from strictdoc.server.error_object import ErrorObject
1515
from strictdoc.server.helpers.turbo import render_turbo_stream
@@ -42,11 +42,13 @@ def create_from_request(
4242
(field_name, field_value)
4343
for field_name, field_value in request_form_data.multi_items()
4444
]
45-
request_form_dict: Dict = assert_cast(
45+
request_form_dict: ParsedFormData = assert_cast(
4646
parse_form_data(request_form_data_as_list), dict
4747
)
48-
document_mid: str = request_form_dict["document_mid"]
49-
context_document_mid: str = request_form_dict["context_document_mid"]
48+
document_mid: str = assert_cast(request_form_dict["document_mid"], str)
49+
context_document_mid: str = assert_cast(
50+
request_form_dict["context_document_mid"], str
51+
)
5052

5153
# FIXME: Rewrite the legacy way of parsing by also use data from
5254
# request_form_dict above.

strictdoc/export/html/form_objects/requirement_form_object.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# mypy: disable-error-code="arg-type,attr-defined,no-untyped-call,no-untyped-def,union-attr,type-arg"
1+
# mypy: disable-error-code="arg-type,attr-defined,no-untyped-call,no-untyped-def,union-attr"
22
from collections import defaultdict
33
from enum import Enum
44
from typing import Dict, Iterable, List, Optional, Set, Union
@@ -39,7 +39,7 @@
3939
)
4040
from strictdoc.helpers.auto_described import auto_described
4141
from strictdoc.helpers.cast import assert_cast
42-
from strictdoc.helpers.form_data import parse_form_data
42+
from strictdoc.helpers.form_data import ParsedFormData, parse_form_data
4343
from strictdoc.helpers.mid import MID
4444
from strictdoc.helpers.string import sanitize_html_form_field
4545
from strictdoc.server.error_object import ErrorObject
@@ -221,7 +221,7 @@ def __init__(
221221
self.requirement_mid: str = requirement_mid
222222
self.document_mid: str = document_mid
223223
self.context_document_mid: str = context_document_mid
224-
fields_dict: dict = {}
224+
fields_dict: Dict[str, List[RequirementFormField]] = {}
225225
for field in fields:
226226
fields_dict.setdefault(field.field_name, []).append(field)
227227

@@ -246,18 +246,21 @@ def create_from_request(
246246
(field_name, field_value)
247247
for field_name, field_value in request_form_data.multi_items()
248248
]
249-
request_form_dict: Dict = assert_cast(
249+
request_form_dict: ParsedFormData = assert_cast(
250250
parse_form_data(request_form_data_as_list), dict
251251
)
252252
requirement_fields = defaultdict(list)
253253
form_ref_fields: List[RequirementReferenceFormField] = []
254254

255255
context_document_mid = request_form_dict["context_document_mid"]
256-
requirement_dict = request_form_dict["requirement"]
256+
requirement_dict = assert_cast(request_form_dict["requirement"], dict)
257257

258-
element_type = request_form_dict["element_type"]
259-
requirement_fields_dict = requirement_dict["fields"]
258+
element_type = assert_cast(request_form_dict["element_type"], str)
259+
requirement_fields_dict = assert_cast(requirement_dict["fields"], dict)
260260
for _, field_dict in requirement_fields_dict.items():
261+
if not isinstance(field_dict, dict):
262+
raise TypeError(f"Expected a dict, but got {type(field_dict)}")
263+
261264
field_name = field_dict["name"]
262265
field_value = field_dict["value"]
263266
requirement_fields[field_name].append(field_value)

strictdoc/export/html/form_objects/section_form_object.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def,type-arg"
1+
# mypy: disable-error-code="arg-type,no-untyped-call,no-untyped-def"
22
from collections import defaultdict
3-
from typing import Dict
43

54
from starlette.datastructures import FormData
65

@@ -11,7 +10,7 @@
1110
)
1211
from strictdoc.helpers.auto_described import auto_described
1312
from strictdoc.helpers.cast import assert_cast
14-
from strictdoc.helpers.form_data import parse_form_data
13+
from strictdoc.helpers.form_data import ParsedFormData, parse_form_data
1514
from strictdoc.helpers.mid import MID
1615
from strictdoc.helpers.string import sanitize_html_form_field
1716
from strictdoc.server.error_object import ErrorObject
@@ -99,15 +98,18 @@ def create_from_request(
9998
(field_name, field_value)
10099
for field_name, field_value in request_form_data.multi_items()
101100
]
102-
request_form_dict: Dict = assert_cast(
101+
request_form_dict: ParsedFormData = assert_cast(
103102
parse_form_data(request_form_data_as_list), dict
104103
)
105104
context_document_mid = request_form_dict["context_document_mid"]
106-
requirement_dict = request_form_dict["requirement"]
107-
requirement_fields_dict = requirement_dict["fields"]
105+
requirement_dict = assert_cast(request_form_dict["requirement"], dict)
106+
requirement_fields_dict = assert_cast(requirement_dict["fields"], dict)
108107

109108
requirement_fields = defaultdict(list)
110109
for _, field_dict in requirement_fields_dict.items():
110+
if not isinstance(field_dict, dict):
111+
raise TypeError(f"Expected a dict, but got {type(field_dict)}")
112+
111113
field_name = field_dict["name"]
112114
field_value = field_dict["value"]
113115
requirement_fields[field_name].append(field_value)

strictdoc/helpers/form_data.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
# mypy: disable-error-code="no-untyped-call,no-untyped-def,type-arg,union-attr"
1+
# mypy: disable-error-code="no-untyped-call,no-untyped-def,union-attr"
22
import re
33
from typing import Dict, List, Tuple, Union
44

55
from typing_extensions import TypeAlias
66

7-
FormDataDictType: TypeAlias = Union[
8-
Dict[str, "FormDataDictType"], List["FormDataDictType"]
7+
ParsedFormDataLeaf: TypeAlias = str
8+
9+
ParsedFormDataContainer: TypeAlias = Union[
10+
Dict[str, Union[ParsedFormDataLeaf, "ParsedFormDataContainer"]],
11+
List[Union[ParsedFormDataLeaf, "ParsedFormDataContainer"]],
12+
]
13+
14+
ParsedFormData: TypeAlias = Dict[
15+
str, Union[ParsedFormDataLeaf, ParsedFormDataContainer]
916
]
1017

1118

@@ -57,8 +64,10 @@ def _set_value_by_key_path(obj, parts, value):
5764
FIELD_NAME = "[A-Za-z0-9_]*"
5865

5966

60-
def parse_form_data(form_data: List[Tuple]) -> Dict[str, FormDataDictType]:
61-
result_dict: Dict[str, FormDataDictType] = {}
67+
def parse_form_data(
68+
form_data: List[Tuple[str, str]],
69+
) -> ParsedFormData:
70+
result_dict: ParsedFormData = {}
6271

6372
for key, value in form_data:
6473
first_match = re.match(rf"({FIELD_NAME})", key)

0 commit comments

Comments
 (0)