From ebe44551a77a4d0d57c4a4d018f89d95e1edcba0 Mon Sep 17 00:00:00 2001 From: Daisie Huang Date: Fri, 10 Sep 2021 12:25:43 -0700 Subject: [PATCH 1/7] #1424: add keywords to the list of pythonic words --- connexion/decorators/parameter.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/connexion/decorators/parameter.py b/connexion/decorators/parameter.py index 98cc3b843..08b52bb0b 100644 --- a/connexion/decorators/parameter.py +++ b/connexion/decorators/parameter.py @@ -3,6 +3,7 @@ """ import builtins +import keyword import functools import inspect import logging @@ -42,7 +43,10 @@ def snake_and_shadow(name): :return: """ snake = inflection.underscore(name) - if snake in builtins.__dict__.keys(): + all_reserved = [] + all_reserved.extend(list(builtins.__dict__.keys())) + all_reserved.extend(keyword.kwlist) + if snake in all_reserved: return f"{snake}_" return snake From 2daccadb9a188b31ac1d2410c50d7da7d92d4821 Mon Sep 17 00:00:00 2001 From: Daisie Huang Date: Fri, 10 Sep 2021 13:19:35 -0700 Subject: [PATCH 2/7] reorder imports --- connexion/decorators/parameter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connexion/decorators/parameter.py b/connexion/decorators/parameter.py index 08b52bb0b..23db1f743 100644 --- a/connexion/decorators/parameter.py +++ b/connexion/decorators/parameter.py @@ -3,9 +3,9 @@ """ import builtins -import keyword import functools import inspect +import keyword import logging import re from typing import Any From 4af119c6299bfc0938318983d041723bbc630feb Mon Sep 17 00:00:00 2001 From: Daisie Huang Date: Fri, 10 Sep 2021 15:28:36 -0700 Subject: [PATCH 3/7] add test query parameter --- tests/fixtures/snake_case/swagger.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/fixtures/snake_case/swagger.yaml b/tests/fixtures/snake_case/swagger.yaml index 52fe3c12b..8b84492a8 100644 --- a/tests/fixtures/snake_case/swagger.yaml +++ b/tests/fixtures/snake_case/swagger.yaml @@ -158,6 +158,11 @@ paths: description: id parameter required: true type: integer + - name: class + in: query + description: class parameter + required: true + type: string - name: next in: body description: next parameter From 51dbdfbcead8fcfb2a36855fa9d11e7d61c40354 Mon Sep 17 00:00:00 2001 From: Daisie Huang Date: Fri, 10 Sep 2021 15:30:05 -0700 Subject: [PATCH 4/7] add test query parameter "class" --- tests/fakeapi/snake_case.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fakeapi/snake_case.py b/tests/fakeapi/snake_case.py index 93e53b104..0b81a92f7 100755 --- a/tests/fakeapi/snake_case.py +++ b/tests/fakeapi/snake_case.py @@ -34,6 +34,6 @@ def post_query_snake(some_id, some_other_id): return data -def post_query_shadow(id_, next_): - data = {'id': id_, 'next': next_} +def post_query_shadow(id_, class_, next_): + data = {'id': id_, 'class': class_, 'next': next_} return data From dc5e45d558badbd0cae6ee54af241c5fb38b9994 Mon Sep 17 00:00:00 2001 From: daisie_local Date: Fri, 10 Sep 2021 15:57:09 -0700 Subject: [PATCH 5/7] add class query param to test --- tests/api/test_parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/api/test_parameters.py b/tests/api/test_parameters.py index fe90a474b..aa8c0fd47 100644 --- a/tests/api/test_parameters.py +++ b/tests/api/test_parameters.py @@ -462,7 +462,7 @@ def test_parameters_snake_case(snake_case_app): assert resp.status_code == 200 resp = app_client.post('/v1.0/test-post-query-snake?someId=123', headers=headers, data=json.dumps({"a": "test"})) assert resp.status_code == 200 - resp = app_client.post('/v1.0/test-post-query-shadow?id=123', headers=headers, data=json.dumps({"a": "test"})) + resp = app_client.post('/v1.0/test-post-query-shadow?id=123&class=header', headers=headers, data=json.dumps({"a": "test"})) assert resp.status_code == 200 resp = app_client.get('/v1.0/test-get-path-snake/123') assert resp.status_code == 200 From bbde2b45039ac4939001a03c93d0d88aa0b3b599 Mon Sep 17 00:00:00 2001 From: daisie_local Date: Fri, 10 Sep 2021 16:01:31 -0700 Subject: [PATCH 6/7] add class query param to openapi spec --- tests/fixtures/snake_case/openapi.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/fixtures/snake_case/openapi.yaml b/tests/fixtures/snake_case/openapi.yaml index 4685d4a9d..7e6d0e5fb 100644 --- a/tests/fixtures/snake_case/openapi.yaml +++ b/tests/fixtures/snake_case/openapi.yaml @@ -179,6 +179,12 @@ paths: required: true schema: type: integer + - name: class + in: query + description: class parameter + required: true + schema: + type: string requestBody: content: application/json: From 594ecbc25b7e30499804fceeadfc5a19cec5b682 Mon Sep 17 00:00:00 2001 From: Daisie Huang Date: Mon, 13 Sep 2021 11:21:04 -0700 Subject: [PATCH 7/7] Update connexion/decorators/parameter.py Co-authored-by: Ruwann --- connexion/decorators/parameter.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/connexion/decorators/parameter.py b/connexion/decorators/parameter.py index 23db1f743..c6bbdd79b 100644 --- a/connexion/decorators/parameter.py +++ b/connexion/decorators/parameter.py @@ -43,10 +43,7 @@ def snake_and_shadow(name): :return: """ snake = inflection.underscore(name) - all_reserved = [] - all_reserved.extend(list(builtins.__dict__.keys())) - all_reserved.extend(keyword.kwlist) - if snake in all_reserved: + if snake in builtins.__dict__ or keyword.iskeyword(snake): return f"{snake}_" return snake