Skip to content

Commit 2cc71d1

Browse files
tonnicoheitorlessa
andauthored
fix(typing): resolved_headers_field is not Optional (#4148)
Co-authored-by: Heitor Lessa <lessa@amazon.com>
1 parent 196b671 commit 2cc71d1

File tree

12 files changed

+18
-17
lines changed

12 files changed

+18
-17
lines changed

aws_lambda_powertools/event_handler/api_gateway.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1646,13 +1646,13 @@ def _determine_openapi_version(openapi_version):
16461646
from aws_lambda_powertools.event_handler.openapi.pydantic_loader import PYDANTIC_V2
16471647

16481648
# Pydantic V2 has no support for OpenAPI schema 3.0
1649-
if PYDANTIC_V2 and not openapi_version.startswith("3.1"):
1649+
if PYDANTIC_V2 and not openapi_version.startswith("3.1"): # pragma: no cover
16501650
warnings.warn(
16511651
"You are using Pydantic v2, which is incompatible with OpenAPI schema 3.0. Forcing OpenAPI 3.1",
16521652
stacklevel=2,
16531653
)
16541654
openapi_version = "3.1.0"
1655-
elif not PYDANTIC_V2 and not openapi_version.startswith("3.0"):
1655+
elif not PYDANTIC_V2 and not openapi_version.startswith("3.0"): # pragma: no cover
16561656
warnings.warn(
16571657
"You are using Pydantic v1, which is incompatible with OpenAPI schema 3.1. Forcing OpenAPI 3.0",
16581658
stacklevel=2,
@@ -2192,7 +2192,7 @@ def not_found(self, func: Optional[Callable] = None):
21922192

21932193
def exception_handler(self, exc_class: Union[Type[Exception], List[Type[Exception]]]):
21942194
def register_exception_handler(func: Callable):
2195-
if isinstance(exc_class, list):
2195+
if isinstance(exc_class, list): # pragma: no cover
21962196
for exp in exc_class:
21972197
self._exception_handlers[exp] = func
21982198
else:

aws_lambda_powertools/event_handler/middlewares/openapi_validation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ def _normalize_multi_query_string_with_param(
410410
return resolved_query_string
411411

412412

413-
def _normalize_multi_header_values_with_param(headers: Optional[Dict[str, str]], params: Sequence[ModelField]):
413+
def _normalize_multi_header_values_with_param(headers: Dict[str, Any], params: Sequence[ModelField]):
414414
"""
415415
Extract and normalize resolved_headers_field
416416

aws_lambda_powertools/event_handler/openapi/compat.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040

4141
RequestErrorModel: Type[BaseModel] = create_model("Request")
4242

43-
if PYDANTIC_V2:
43+
if PYDANTIC_V2: # pragma: no cover # false positive; dropping in v3
4444
from pydantic import TypeAdapter, ValidationError
4545
from pydantic._internal._typing_extra import eval_type_lenient
4646
from pydantic.fields import FieldInfo

aws_lambda_powertools/event_handler/openapi/pydantic_loader.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33

44
PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.")
55
except ImportError:
6-
PYDANTIC_V2 = False
6+
PYDANTIC_V2 = False # pragma: no cover # false positive; dropping in v3

aws_lambda_powertools/utilities/batch/types.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
# For IntelliSense and Mypy to work, we need to account for possible SQS subclasses
99
# We need them as subclasses as we must access their message ID or sequence number metadata via dot notation
10-
if has_pydantic:
10+
if has_pydantic: # pragma: no cover
1111
from aws_lambda_powertools.utilities.parser.models import DynamoDBStreamRecordModel, SqsRecordModel
1212
from aws_lambda_powertools.utilities.parser.models import (
1313
KinesisDataStreamRecord as KinesisDataStreamRecordModel,
@@ -17,7 +17,7 @@
1717
Union[Type[SqsRecordModel], Type[DynamoDBStreamRecordModel], Type[KinesisDataStreamRecordModel]]
1818
]
1919
BatchSqsTypeModel = Optional[Type[SqsRecordModel]]
20-
else:
20+
else: # pragma: no cover
2121
BatchTypeModels = "BatchTypeModels" # type: ignore
2222
BatchSqsTypeModel = "BatchSqsTypeModel" # type: ignore
2323

aws_lambda_powertools/utilities/data_classes/alb_event.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def resolved_query_string_parameters(self) -> Dict[str, List[str]]:
4343
return super().resolved_query_string_parameters
4444

4545
@property
46-
def resolved_headers_field(self) -> Optional[Dict[str, Any]]:
46+
def resolved_headers_field(self) -> Dict[str, Any]:
4747
headers: Dict[str, Any] = {}
4848

4949
if self.multi_value_headers:

aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def resolved_query_string_parameters(self) -> Dict[str, List[str]]:
126126
return super().resolved_query_string_parameters
127127

128128
@property
129-
def resolved_headers_field(self) -> Optional[Dict[str, Any]]:
129+
def resolved_headers_field(self) -> Dict[str, Any]:
130130
headers: Dict[str, Any] = {}
131131

132132
if self.multi_value_headers:
@@ -319,7 +319,7 @@ def header_serializer(self):
319319
return HttpApiHeadersSerializer()
320320

321321
@property
322-
def resolved_headers_field(self) -> Optional[Dict[str, Any]]:
322+
def resolved_headers_field(self) -> Dict[str, Any]:
323323
if self.headers is not None:
324324
headers = {key.lower(): value.split(",") if "," in value else value for key, value in self.headers.items()}
325325
return headers

aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def query_string_parameters(self) -> Optional[Dict[str, str]]:
111111
return {x["name"]: x["value"] for x in self["parameters"]} if self.get("parameters") else None
112112

113113
@property
114-
def resolved_headers_field(self) -> Optional[Dict[str, Any]]:
114+
def resolved_headers_field(self) -> Dict[str, Any]:
115115
return {}
116116

117117
@cached_property

aws_lambda_powertools/utilities/data_classes/common.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def resolved_query_string_parameters(self) -> Dict[str, List[str]]:
124124
return {}
125125

126126
@property
127-
def resolved_headers_field(self) -> Optional[Dict[str, Any]]:
127+
def resolved_headers_field(self) -> Dict[str, Any]:
128128
"""
129129
This property determines the appropriate header to be used
130130
as a trusted source for validating OpenAPI.

aws_lambda_powertools/utilities/data_classes/vpc_lattice.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def query_string_parameters(self) -> Dict[str, str]:
145145
return self["query_string_parameters"]
146146

147147
@property
148-
def resolved_headers_field(self) -> Optional[Dict[str, Any]]:
148+
def resolved_headers_field(self) -> Dict[str, Any]:
149149
if self.headers is not None:
150150
headers = {key.lower(): value.split(",") if "," in value else value for key, value in self.headers.items()}
151151
return headers
@@ -272,7 +272,7 @@ def query_string_parameters(self) -> Optional[Dict[str, str]]:
272272
return None
273273

274274
@property
275-
def resolved_headers_field(self) -> Optional[Dict[str, str]]:
275+
def resolved_headers_field(self) -> Dict[str, str]:
276276
if self.headers is not None:
277277
return {key.lower(): value for key, value in self.headers.items()}
278278

aws_lambda_powertools/utilities/parser/compat.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ def disable_pydantic_v2_warning():
2222

2323
version = __version__.split(".")
2424

25-
if int(version[0]) == 2:
25+
if int(version[0]) == 2: # pragma: no cover # dropping in v3
2626
import warnings
2727

2828
from pydantic import PydanticDeprecatedSince20, PydanticDeprecationWarning
2929

3030
warnings.filterwarnings("ignore", category=PydanticDeprecationWarning)
3131
warnings.filterwarnings("ignore", category=PydanticDeprecatedSince20)
3232

33-
except ImportError:
33+
except ImportError: # pragma: no cover # false positive; dropping in v3
3434
pass

pyproject.toml

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ omit = [
129129
"aws_lambda_powertools/exceptions/*",
130130
"aws_lambda_powertools/utilities/parser/types.py",
131131
"aws_lambda_powertools/utilities/jmespath_utils/envelopes.py",
132+
"aws_lambda_powertools/metrics/metric.py" # barrel import (export-only)
132133
]
133134
branch = true
134135

0 commit comments

Comments
 (0)