diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2020-08-26 02:44:17 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-08-26 02:44:17 +0000 |
commit | 91100022ecf99ba0f1888e5a804b3d2d2bc2e128 (patch) | |
tree | ed9d9d04b1c9a00c473aab092a38cb6737af3eb1 /lib/sqlalchemy/testing | |
parent | 014879fdc60bf15509a04d98f56e028eeb9de840 (diff) | |
parent | 3668b3a30c4b9a9f4af13457f43bfc34c28cf448 (diff) | |
download | sqlalchemy-91100022ecf99ba0f1888e5a804b3d2d2bc2e128.tar.gz |
Merge "make URL immutable"
Diffstat (limited to 'lib/sqlalchemy/testing')
-rw-r--r-- | lib/sqlalchemy/testing/assertions.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/testing/assertsql.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/testing/provision.py | 26 |
3 files changed, 15 insertions, 15 deletions
diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py index f9fabbeed..f78ebf496 100644 --- a/lib/sqlalchemy/testing/assertions.py +++ b/lib/sqlalchemy/testing/assertions.py @@ -390,7 +390,7 @@ class AssertsCompiledSQL(object): elif dialect == "default_enhanced": dialect = default.StrCompileDialect() elif isinstance(dialect, util.string_types): - dialect = url.URL(dialect).get_dialect()() + dialect = url.URL.create(dialect).get_dialect()() if default_schema_name: dialect.default_schema_name = default_schema_name diff --git a/lib/sqlalchemy/testing/assertsql.py b/lib/sqlalchemy/testing/assertsql.py index c86e26ccf..e20209ba5 100644 --- a/lib/sqlalchemy/testing/assertsql.py +++ b/lib/sqlalchemy/testing/assertsql.py @@ -83,7 +83,7 @@ class CompiledSQL(SQLMatchRule): params = {"implicit_returning": True} else: params = {} - return url.URL(self.dialect).get_dialect()(**params) + return url.URL.create(self.dialect).get_dialect()(**params) def _received_statement(self, execute_observed): """reconstruct the statement and params in terms diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py index 094d1ea94..0edaae490 100644 --- a/lib/sqlalchemy/testing/provision.py +++ b/lib/sqlalchemy/testing/provision.py @@ -1,5 +1,4 @@ import collections -import copy import logging from . import config @@ -7,12 +6,14 @@ from . import engines from .. import exc from ..engine import url as sa_url from ..util import compat -from ..util import parse_qsl log = logging.getLogger(__name__) FOLLOWER_IDENT = None +if compat.TYPE_CHECKING: + from ..engine import URL + class register(object): def __init__(self): @@ -140,7 +141,7 @@ def _generate_driver_urls(url, extra_drivers): main_driver = url.get_driver_name() extra_drivers.discard(main_driver) - url = generate_driver_url(url, main_driver, {}) + url = generate_driver_url(url, main_driver, "") yield str(url) for drv in list(extra_drivers): @@ -149,12 +150,11 @@ def _generate_driver_urls(url, extra_drivers): driver_only, query_str = drv.split("?", 1) - query = parse_qsl(query_str) else: driver_only = drv - query = {} + query_str = None - new_url = generate_driver_url(url, driver_only, query) + new_url = generate_driver_url(url, driver_only, query_str) if new_url: extra_drivers.remove(drv) @@ -162,12 +162,13 @@ def _generate_driver_urls(url, extra_drivers): @register.init -def generate_driver_url(url, driver, query): +def generate_driver_url(url, driver, query_str): + # type: (URL, str, str) -> URL backend = url.get_backend_name() - new_url = copy.copy(url) - new_url.query = dict(new_url.query) - new_url.drivername = "%s+%s" % (backend, driver) - new_url.query.update(query) + + new_url = url.set(drivername="%s+%s" % (backend, driver),) + new_url = new_url.update_query_string(query_str) + try: new_url.get_dialect() except exc.NoSuchModuleError: @@ -236,8 +237,7 @@ def follower_url_from_main(url, ident): database name """ url = sa_url.make_url(url) - url.database = ident - return url + return url.set(database=ident) @register.init |