diff --git a/SQLAlchemy-1.3.22.tar.gz b/SQLAlchemy-1.3.23.tar.gz similarity index 45% rename from SQLAlchemy-1.3.22.tar.gz rename to SQLAlchemy-1.3.23.tar.gz index 74fc6e2ededc9c5b99c72fee3b35920d88f78bd2..36507514058ce72d78ebf35df9c5bf0e0efad4fd 100644 Binary files a/SQLAlchemy-1.3.22.tar.gz and b/SQLAlchemy-1.3.23.tar.gz differ diff --git a/python-sqlalchemy.yaml b/python-sqlalchemy.yaml index e994fe046b47ab50764b75aa96e2fd6f5e615b22..ef0cf550ca179f92668379b91ce2dd9ed3937be6 100644 --- a/python-sqlalchemy.yaml +++ b/python-sqlalchemy.yaml @@ -2,3 +2,4 @@ version_control: github src_repo: sqlalchemy/sqlalchemy tag_prefix: rel seperator: _ + diff --git a/python-sqlalchemy.spec b/sqlalchemy.spec similarity index 90% rename from python-sqlalchemy.spec rename to sqlalchemy.spec index af77c224720a9f1a8dad23814e9e8b807bc1cfe0..51333d8fd5503813923e3867791debf12ebbb0dc 100644 --- a/python-sqlalchemy.spec +++ b/sqlalchemy.spec @@ -1,12 +1,12 @@ %global __provides_exclude_from ^(%{python2_sitearch}|%{python3_sitearch})/.*\\.so$ Name: python-sqlalchemy -Version: 1.3.22 -Release: 3 +Version: 1.3.23 +Release: 1 Summary: SQL toolkit and object relational mapper for Python License: MIT URL: http://www.sqlalchemy.org/ -Source0: https://files.pythonhosted.org/packages/source/S/SQLAlchemy/SQLAlchemy-%{version}.tar.gz +Source0: https://files.pythonhosted.org/packages/ac/cd/f871773f1c1eb043f639b6751d6342539a45da0836bfede6a6889cea5255/SQLAlchemy-1.3.23.tar.gz Patch0: tests_overcome_bpo42967.patch @@ -64,6 +64,9 @@ PYTHONPATH=. %{__python3} -m pytest test %doc doc examples %changelog +* Tue Aug 10 2021 OpenStack_SIG - 1.3.23-1 +- update to 1.3.23 + * Tue Jun 22 2021 shixuantong - 1.3.22-3 - Type: bugfix - ID: NA @@ -90,3 +93,4 @@ PYTHONPATH=. %{__python3} -m pytest test * Tue Nov 26 2019 yanzhihua - 1.2.11-2 - Package init + diff --git a/tests_overcome_bpo42967.patch b/tests_overcome_bpo42967.patch index 892dda18e120270c198b9901a4afd0bb4e99068a..c441b658cfda2dff3571f56465aa0facf0d30504 100644 --- a/tests_overcome_bpo42967.patch +++ b/tests_overcome_bpo42967.patch @@ -1,65 +1,66 @@ ---- - lib/sqlalchemy/engine/url.py | 14 ++++++++++---- - test/dialect/mssql/test_engine.py | 3 ++- - 2 files changed, 12 insertions(+), 5 deletions(-) - ---- a/lib/sqlalchemy/engine/url.py -+++ b/lib/sqlalchemy/engine/url.py -@@ -14,6 +14,7 @@ argument; alternatively, the URL is a pu - be used directly and is also accepted directly by ``create_engine()``. - """ - -+import inspect - import re - - from .interfaces import Dialect -@@ -218,7 +219,7 @@ class URL(object): - return translated - - --def make_url(name_or_url): -+def make_url(name_or_url, separator='&'): - """Given a string or unicode instance, produce a new URL instance. - - The given string is parsed according to the RFC 1738 spec. If an -@@ -226,12 +227,12 @@ def make_url(name_or_url): - """ - - if isinstance(name_or_url, util.string_types): -- return _parse_rfc1738_args(name_or_url) -+ return _parse_rfc1738_args(name_or_url, separator) - else: - return name_or_url - - --def _parse_rfc1738_args(name): -+def _parse_rfc1738_args(name, qs_sep): - pattern = re.compile( - r""" - (?P[\w\+]+):// -@@ -261,7 +262,12 @@ def _parse_rfc1738_args(name): - if len(tokens) > 1: - query = {} - -- for key, value in util.parse_qsl(tokens[1]): -+ if 'separator' in inspect.signature(util.parse_qsl).parameters: -+ qs_dict = util.parse_qsl(tokens[1], separator=qs_sep) -+ else: -+ qs_dict = util.parse_qsl(tokens[1]) -+ -+ for key, value in qs_dict: - if util.py2k: - key = key.encode("ascii") - if key in query: ---- a/test/dialect/mssql/test_engine.py -+++ b/test/dialect/mssql/test_engine.py -@@ -164,7 +164,8 @@ class ParseConnectTest(fixtures.TestBase - u = url.make_url( - "mssql+pyodbc://@server_name/db_name?" - "driver=ODBC+Driver+17+for+SQL+Server;" -- "authentication=ActiveDirectoryIntegrated" -+ "authentication=ActiveDirectoryIntegrated", -+ separator=';' - ) - connection = dialect.create_connect_args(u) - eq_(connection[1], {}) +--- + lib/sqlalchemy/engine/url.py | 14 ++++++++++---- + test/dialect/mssql/test_engine.py | 3 ++- + 2 files changed, 12 insertions(+), 5 deletions(-) + +--- a/lib/sqlalchemy/engine/url.py ++++ b/lib/sqlalchemy/engine/url.py +@@ -14,6 +14,7 @@ argument; alternatively, the URL is a pu + be used directly and is also accepted directly by ``create_engine()``. + """ + ++import inspect + import re + + from .interfaces import Dialect +@@ -218,7 +219,7 @@ class URL(object): + return translated + + +-def make_url(name_or_url): ++def make_url(name_or_url, separator='&'): + """Given a string or unicode instance, produce a new URL instance. + + The given string is parsed according to the RFC 1738 spec. If an +@@ -226,12 +227,12 @@ def make_url(name_or_url): + """ + + if isinstance(name_or_url, util.string_types): +- return _parse_rfc1738_args(name_or_url) ++ return _parse_rfc1738_args(name_or_url, separator) + else: + return name_or_url + + +-def _parse_rfc1738_args(name): ++def _parse_rfc1738_args(name, qs_sep): + pattern = re.compile( + r""" + (?P[\w\+]+):// +@@ -261,7 +262,12 @@ def _parse_rfc1738_args(name): + if len(tokens) > 1: + query = {} + +- for key, value in util.parse_qsl(tokens[1]): ++ if 'separator' in inspect.signature(util.parse_qsl).parameters: ++ qs_dict = util.parse_qsl(tokens[1], separator=qs_sep) ++ else: ++ qs_dict = util.parse_qsl(tokens[1]) ++ ++ for key, value in qs_dict: + if util.py2k: + key = key.encode("ascii") + if key in query: +--- a/test/dialect/mssql/test_engine.py ++++ b/test/dialect/mssql/test_engine.py +@@ -164,7 +164,8 @@ class ParseConnectTest(fixtures.TestBase + u = url.make_url( + "mssql+pyodbc://@server_name/db_name?" + "driver=ODBC+Driver+17+for+SQL+Server;" +- "authentication=ActiveDirectoryIntegrated" ++ "authentication=ActiveDirectoryIntegrated", ++ separator=';' + ) + connection = dialect.create_connect_args(u) + eq_(connection[1], {}) +