Skip to content

Commit 3c5894f

Browse files
author
Jordan
committed
Typing and linting
1 parent 6958ec1 commit 3c5894f

5 files changed

Lines changed: 30 additions & 17 deletions

File tree

mangum/adapter.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ def __call__(self, event: dict, context: dict) -> dict:
9292
request_context = event["requestContext"]
9393

9494
if event.get("multiValueHeaders"):
95-
headers = {k.lower(): ", ".join(v) if isinstance(v, list) else ""
96-
for k, v in event.get("multiValueHeaders", {}).items()}
95+
headers = {
96+
k.lower(): ", ".join(v) if isinstance(v, list) else ""
97+
for k, v in event.get("multiValueHeaders", {}).items()
98+
}
9799
elif event.get("headers"):
98100
headers = {k.lower(): v for k, v in event.get("headers", {}).items()}
99101
else:
@@ -122,10 +124,12 @@ def __call__(self, event: dict, context: dict) -> dict:
122124

123125
if event.get("multiValueQueryStringParameters"):
124126
query_string = urllib.parse.urlencode(
125-
event.get("multiValueQueryStringParameters", {}), doseq=True).encode()
127+
event.get("multiValueQueryStringParameters", {}), doseq=True
128+
).encode()
126129
elif event.get("queryStringParameters"):
127130
query_string = urllib.parse.urlencode(
128-
event.get("queryStringParameters", {})).encode()
131+
event.get("queryStringParameters", {})
132+
).encode()
129133
else:
130134
query_string = b""
131135

mangum/protocols/http.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from mangum.exceptions import UnexpectedMessage
1212

1313

14-
def all_casings(input_string):
14+
def all_casings(input_string: str) -> typing.Generator:
1515
"""
1616
Permute all casings of a given string.
1717
A pretty algoritm, via @Amber
@@ -146,8 +146,8 @@ async def send(self, message: Message) -> None:
146146
else:
147147
multi_value_headers[lower_key] = [value.decode()]
148148
if "multiValueHeaders" not in event:
149-
# If there are multiple occurrences of headers, create case-mutated variations
150-
# see: https://github.com/logandk/serverless-wsgi/issues/11
149+
# If there are multiple occurrences of headers, create case-mutated
150+
# variations: https://github.com/logandk/serverless-wsgi/issues/11
151151
for key, values in multi_value_headers.items():
152152
if len(values) > 1:
153153
for value, cased_key in zip(values, all_casings(key)):

setup.cfg

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
max-line-length = 88
44
ignore = E203, W503
5+
per-file-ignores =
6+
tests/conftest.py:E501
7+
tests/test_http.py:E501
58

69
[mypy]
710
disallow_untyped_defs = True

tests/conftest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def mock_http_event(request):
1010
"path": "/test/hello",
1111
"body": body,
1212
"headers": {
13-
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", # noqa: E501
13+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
1414
"Accept-Encoding": "gzip, deflate, lzma, sdch, br",
1515
"Accept-Language": "en-US,en;q=0.8",
1616
"CloudFront-Forwarded-Proto": "https",
@@ -42,7 +42,7 @@ def mock_http_event(request):
4242
"cognitoAuthenticationType": "",
4343
"cognitoAuthenticationProvider": "",
4444
"userArn": "",
45-
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48", # noqa: E501
45+
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
4646
"user": "",
4747
},
4848
"resourcePath": "/{proxy+}",
@@ -145,7 +145,7 @@ def mock_http_elb_singlevalue_event(request):
145145
"x-forwarded-proto": "https",
146146
},
147147
"body": body,
148-
"isBase64Encoded": False
148+
"isBase64Encoded": False,
149149
}
150150

151151
return event
@@ -174,7 +174,7 @@ def mock_http_elb_multivalue_event(request):
174174
"x-forwarded-proto": ["https"],
175175
},
176176
"body": body,
177-
"isBase64Encoded": False
177+
"isBase64Encoded": False,
178178
}
179179

180180
return event

tests/test_http.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async def app(scope, receive, send):
3333
"aws.event": {
3434
"body": None,
3535
"headers": {
36-
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", # noqa: E501
36+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
3737
"Accept-Encoding": "gzip, deflate, lzma, sdch, " "br",
3838
"Accept-Language": "en-US,en;q=0.8",
3939
"CloudFront-Forwarded-Proto": "https",
@@ -153,7 +153,7 @@ async def app(scope, receive, send):
153153
"aws.event": {
154154
"body": None,
155155
"headers": {
156-
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", # noqa: E501
156+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
157157
"Accept-Encoding": "gzip, deflate, lzma, sdch, " "br",
158158
"Accept-Language": "en-US,en;q=0.8",
159159
"CloudFront-Forwarded-Proto": "https",
@@ -259,13 +259,17 @@ async def app(scope, receive, send):
259259
"statusCode": 200,
260260
"isBase64Encoded": False,
261261
"headers": {"content-type": "text/plain; charset=utf-8"},
262-
"multiValueHeaders": {"set-cookie": ["cookie1=cookie1; Secure", "cookie2=cookie2; Secure"]},
262+
"multiValueHeaders": {
263+
"set-cookie": ["cookie1=cookie1; Secure", "cookie2=cookie2; Secure"]
264+
},
263265
"body": "Hello, world!",
264266
}
265267

266268

267269
@pytest.mark.parametrize(
268-
"mock_http_elb_singlevalue_event", [["GET", None, {"name": ["me", "you"]}]], indirect=True
270+
"mock_http_elb_singlevalue_event",
271+
[["GET", None, {"name": ["me", "you"]}]],
272+
indirect=True,
269273
)
270274
def test_elb_singlevalue_http_response(mock_http_elb_singlevalue_event) -> None:
271275
async def app(scope, receive, send):
@@ -281,7 +285,7 @@ async def app(scope, receive, send):
281285
"host": "test.execute-api.us-west-2.amazonaws.com",
282286
"x-forwarded-for": "192.168.100.3, 192.168.100.2, 192.168.100.1",
283287
"x-forwarded-port": "443",
284-
"x-forwarded-proto": "https"
288+
"x-forwarded-proto": "https",
285289
},
286290
"httpMethod": "GET",
287291
"path": "/my/path",
@@ -341,7 +345,9 @@ async def app(scope, receive, send):
341345

342346

343347
@pytest.mark.parametrize(
344-
"mock_http_elb_multivalue_event", [["GET", None, {"name": ["me", "you"]}]], indirect=True
348+
"mock_http_elb_multivalue_event",
349+
[["GET", None, {"name": ["me", "you"]}]],
350+
indirect=True,
345351
)
346352
def test_elb_multivalue_http_response(mock_http_elb_multivalue_event) -> None:
347353
async def app(scope, receive, send):

0 commit comments

Comments
 (0)