summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/dialects/mssql/__init__.py1
-rw-r--r--lib/sqlalchemy/dialects/mysql/__init__.py1
-rw-r--r--lib/sqlalchemy/dialects/oracle/__init__.py1
-rw-r--r--lib/sqlalchemy/dialects/postgresql/__init__.py1
-rw-r--r--lib/sqlalchemy/dialects/sqlite/__init__.py1
-rw-r--r--lib/sqlalchemy/engine/default.py8
-rw-r--r--lib/sqlalchemy/engine/interfaces.py29
-rw-r--r--lib/sqlalchemy/orm/query.py1
-rw-r--r--lib/sqlalchemy/testing/assertions.py3
-rw-r--r--lib/sqlalchemy/testing/provision.py5
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 = {}