From 925125786125521394d3f97749fb3d9277691207 Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Mon, 24 Jun 2024 22:32:43 +0000 Subject: [PATCH 1/7] Fix error accessing `colletions.Mapping` and `collections.MutableMapping` under Python 3.10, where these have moved to `collections.abc.Mapping` and `collections.abc.MutableMapping`. --- pyswagger/io.py | 8 ++++++++ pyswagger/utils.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/pyswagger/io.py b/pyswagger/io.py index 75569c2..3ffae14 100644 --- a/pyswagger/io.py +++ b/pyswagger/io.py @@ -8,6 +8,14 @@ import collections import logging +# Mapping and Mutable Mapping moved to collections.abc in Python 3.10 +try: + from collections import abc + collections.MutableMapping = abc.MutableMapping + collections.Mapping = abc.Mapping +except: + pass + logger = logging.getLogger(__name__) diff --git a/pyswagger/utils.py b/pyswagger/utils.py index 485b245..6bfb1dd 100644 --- a/pyswagger/utils.py +++ b/pyswagger/utils.py @@ -9,8 +9,18 @@ import os import operator import functools + import collections +# Mapping and Mutable Mapping moved to collections.abc in Python 3.10 +try: + from collections import abc + collections.MutableMapping = abc.MutableMapping + collections.Mapping = abc.Mapping +except: + pass + + #TODO: accept varg def scope_compose(scope, name, sep=private.SCOPE_SEPARATOR): """ compose a new scope From a0d7a302f1000723ef4b0c229c23decdfd53d30d Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Mon, 24 Jun 2024 22:34:37 +0000 Subject: [PATCH 2/7] Replace `yaml.load` which now requires an additional `Loader` argument with `yaml.safe_load` which prevnets arbitrary code execution. --- pyswagger/getter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyswagger/getter.py b/pyswagger/getter.py index abdc8fb..9f5e329 100644 --- a/pyswagger/getter.py +++ b/pyswagger/getter.py @@ -45,7 +45,7 @@ def __next__(self): if obj.startswith('{'): obj = json.loads(obj) else: - obj = yaml.load(obj) + obj = yaml.safe_load(obj) except ValueError: raise Exception('Unknown format startswith {0} ...'.format(obj[:10])) From f2b57569dab289c87fe9f9dacf5e11fa8656ec44 Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Mon, 24 Jun 2024 22:54:32 +0000 Subject: [PATCH 3/7] - Resolve test failure due to obsolete use of the Flask `Requests` api. Providing multiple values for the same header key now always results in a list of values, rather than preserving only the last one. --- pyswagger/tests/contrib/client/test_flask.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/pyswagger/tests/contrib/client/test_flask.py b/pyswagger/tests/contrib/client/test_flask.py index c96f233..9ef4288 100644 --- a/pyswagger/tests/contrib/client/test_flask.py +++ b/pyswagger/tests/contrib/client/test_flask.py @@ -198,14 +198,6 @@ def test_custom_headers_multiple_values_to_one_key(self): sapp.op['updatePet'](body=dict(id=1, name='Tom1')), headers=headers ) - self.assertEqual(received_headers.get_all('X-TEST-HEADER'), ['bbb']) - - # with 'join_headers' - resp = self.client.request( - sapp.op['updatePet'](body=dict(id=1, name='Tom1')), - headers=headers, - opt={'join_headers': True} - ) - self.assertEqual(received_headers.get_all('X-TEST-HEADER'), ['aaa,bbb']) + self.assertEqual(received_headers.get_all('X-TEST-HEADER'), ['aaa, bbb']) From b0fcdbfca246fc52956af98f856f617d4a03f6f4 Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Tue, 25 Jun 2024 15:58:01 +0000 Subject: [PATCH 4/7] Update dependencies. --- requirements.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 8af0466..c03a1d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,9 @@ -six>=1.6.0 -pyaml>=15.03.1 +certifi>=2024.6.2 +charset-normalizer>=3.3.2 +idna>=3.7 +pyaml>=24.4.0 +PyYAML>=6.0.1 +requests>=2.32.3 +six>=1.16.0 +urllib3>=2.2.2 validate_email>=1.3 From 333a27aab5f1babbaf5f43cec33ac9ae2f347237 Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Tue, 25 Jun 2024 16:40:21 +0000 Subject: [PATCH 5/7] Update the flask tests to account for a change in how multiple values for the same header key are handled. --- pyswagger/tests/contrib/client/test_flask.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pyswagger/tests/contrib/client/test_flask.py b/pyswagger/tests/contrib/client/test_flask.py index 9ef4288..313f624 100644 --- a/pyswagger/tests/contrib/client/test_flask.py +++ b/pyswagger/tests/contrib/client/test_flask.py @@ -196,8 +196,18 @@ def test_custom_headers_multiple_values_to_one_key(self): headers = [('X-TEST-HEADER', 'aaa'), ('X-TEST-HEADER', 'bbb')] resp = self.client.request( sapp.op['updatePet'](body=dict(id=1, name='Tom1')), - headers=headers + headers=headers, + opt={'join_headers': False} ) self.assertEqual(received_headers.get_all('X-TEST-HEADER'), ['aaa, bbb']) + + # with 'join_headers' + resp = self.client.request( + sapp.op['updatePet'](body=dict(id=1, name='Tom1')), + headers=headers, + opt={'join_headers': True} + ) + + self.assertEqual(received_headers.get_all('X-TEST-HEADER'), ['aaa,bbb']) From b86d9234a91dc3abae6c113ca33968e593fcb752 Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Tue, 25 Jun 2024 16:54:15 +0000 Subject: [PATCH 6/7] Add `-patched` to the version number` --- pyswagger/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyswagger/__init__.py b/pyswagger/__init__.py index e8594a9..a8011b2 100644 --- a/pyswagger/__init__.py +++ b/pyswagger/__init__.py @@ -1,4 +1,4 @@ -__version__ = '0.8.39' +__version__ = '0.8.39-patched' from .getter import Getter from .core import App, Security From 0a4ccb801ba6854d282009227599780aea6946c9 Mon Sep 17 00:00:00 2001 From: "Gregory R. Warnes, Ph.D" Date: Tue, 25 Jun 2024 16:58:42 +0000 Subject: [PATCH 7/7] Second try to update version number. --- pyswagger/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyswagger/__init__.py b/pyswagger/__init__.py index a8011b2..515da8c 100644 --- a/pyswagger/__init__.py +++ b/pyswagger/__init__.py @@ -1,4 +1,4 @@ -__version__ = '0.8.39-patched' +__version__ = '0.8.39.0001' from .getter import Getter from .core import App, Security