diff options
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/sqlite/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/default.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/interfaces.py | 29 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/assertions.py | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/provision.py | 5 |
10 files changed, 42 insertions, 9 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/__init__.py b/lib/sqlalchemy/dialects/mssql/__init__.py index cbee8c0dc..67830affe 100644 --- a/lib/sqlalchemy/dialects/mssql/__init__.py +++ b/lib/sqlalchemy/dialects/mssql/__init__.py @@ -8,7 +8,6 @@ from . import adodbapi # noqa from . import base # noqa from . import mxodbc # noqa -from . import provision # noqa from . import pymssql # noqa from . import pyodbc # noqa from .base import BIGINT diff --git a/lib/sqlalchemy/dialects/mysql/__init__.py b/lib/sqlalchemy/dialects/mysql/__init__.py index 12eb673a7..f1f1cce37 100644 --- a/lib/sqlalchemy/dialects/mysql/__init__.py +++ b/lib/sqlalchemy/dialects/mysql/__init__.py @@ -11,7 +11,6 @@ from . import gaerdbms # noqa from . import mysqlconnector # noqa from . import mysqldb # noqa from . import oursql # noqa -from . import provision # noqa from . import pymysql # noqa from . import pyodbc # noqa from .base import BIGINT diff --git a/lib/sqlalchemy/dialects/oracle/__init__.py b/lib/sqlalchemy/dialects/oracle/__init__.py index 90157bd67..a4dee02ff 100644 --- a/lib/sqlalchemy/dialects/oracle/__init__.py +++ b/lib/sqlalchemy/dialects/oracle/__init__.py @@ -7,7 +7,6 @@ from . import base # noqa from . import cx_oracle # noqa -from . import provision # noqa from .base import BFILE from .base import BINARY_DOUBLE from .base import BINARY_FLOAT diff --git a/lib/sqlalchemy/dialects/postgresql/__init__.py b/lib/sqlalchemy/dialects/postgresql/__init__.py index c6482222d..06d22872a 100644 --- a/lib/sqlalchemy/dialects/postgresql/__init__.py +++ b/lib/sqlalchemy/dialects/postgresql/__init__.py @@ -7,7 +7,6 @@ from . import base from . import pg8000 # noqa -from . import provision # noqa from . import psycopg2 # noqa from . import psycopg2cffi # noqa from . import pygresql # noqa diff --git a/lib/sqlalchemy/dialects/sqlite/__init__.py b/lib/sqlalchemy/dialects/sqlite/__init__.py index c35cb9251..142131f63 100644 --- a/lib/sqlalchemy/dialects/sqlite/__init__.py +++ b/lib/sqlalchemy/dialects/sqlite/__init__.py @@ -6,7 +6,6 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php from . import base # noqa -from . import provision # noqa from . import pysqlcipher # noqa from . import pysqlite # noqa from .base import BLOB diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index 28a59e660..8775a8813 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -293,6 +293,14 @@ class DefaultDialect(interfaces.Dialect): def get_pool_class(cls, url): return getattr(cls, "poolclass", pool.QueuePool) + @classmethod + def load_provisioning(cls): + package = ".".join(cls.__module__.split(".")[0:-1]) + try: + __import__(package + ".provision") + except ImportError: + pass + def initialize(self, connection): try: self.server_version_info = self._get_server_version_info( diff --git a/lib/sqlalchemy/engine/interfaces.py b/lib/sqlalchemy/engine/interfaces.py index 04e572c2d..84def853f 100644 --- a/lib/sqlalchemy/engine/interfaces.py +++ b/lib/sqlalchemy/engine/interfaces.py @@ -866,6 +866,35 @@ class Dialect(object): return cls @classmethod + def load_provisioning(cls): + """set up the provision.py module for this dialect. + + For dialects that include a provision.py module that sets up + provisioning followers, this method should initiate that process. + + A typical implementation would be:: + + @classmethod + def load_provisioning(cls): + __import__("mydialect.provision") + + The default method assumes a module named ``provision.py`` inside + the owning package of the current dialect, based on the ``__module__`` + attribute:: + + @classmethod + def load_provisioning(cls): + package = ".".join(cls.__module__.split(".")[0:-1]) + try: + __import__(package + ".provision") + except ImportError: + pass + + .. versionadded:: 1.3.14 + + """ + + @classmethod def engine_created(cls, engine): """A convenience hook called before returning the final :class:`.Engine`. diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index e29e6eeee..830cede93 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -59,7 +59,6 @@ from ..sql.base import Generative from ..sql.selectable import ForUpdateArg from ..util import collections_abc - __all__ = ["Query", "QueryContext", "aliased"] diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py index c97202516..07a70bf6c 100644 --- a/lib/sqlalchemy/testing/assertions.py +++ b/lib/sqlalchemy/testing/assertions.py @@ -19,7 +19,6 @@ from . import mock from .exclusions import db_spec from .util import fail from .. import exc as sa_exc -from .. import orm from .. import schema from .. import types as sqltypes from .. import util @@ -386,6 +385,8 @@ class AssertsCompiledSQL(object): if render_postcompile: compile_kwargs["render_postcompile"] = True + from sqlalchemy import orm + if isinstance(clause, orm.Query): context = clause._compile_context() context.statement.use_labels = True diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py index 6e2e1ccf5..543d91a53 100644 --- a/lib/sqlalchemy/testing/provision.py +++ b/lib/sqlalchemy/testing/provision.py @@ -6,7 +6,6 @@ from . import engines from ..engine import url as sa_url from ..util import compat - log = logging.getLogger(__name__) FOLLOWER_IDENT = None @@ -51,7 +50,9 @@ def setup_config(db_url, options, file_config, follower_ident): # load the dialect, which should also have it set up its provision # hooks - sa_url.make_url(db_url).get_dialect() + dialect = sa_url.make_url(db_url).get_dialect() + dialect.load_provisioning() + if follower_ident: db_url = follower_url_from_main(db_url, follower_ident) db_opts = {} |
