From 00570a6ac9453a48b06ca094de6e0502c3b73fa5 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 5 Feb 2018 09:03:08 -0500 Subject: [PATCH] Convert dialect modules to relative imports and test For some reason the dialects were not consistently converted to relative imports. Also added a test to ensure that __all__ is functioning within each dialect. Change-Id: I8450ed724473be7e17678e9aba7ba0f661fdf134 --- lib/sqlalchemy/dialects/firebird/__init__.py | 11 +++++------ lib/sqlalchemy/dialects/mssql/__init__.py | 11 +++++------ lib/sqlalchemy/dialects/mysql/__init__.py | 11 ++++++----- lib/sqlalchemy/dialects/oracle/__init__.py | 13 ++++++------- lib/sqlalchemy/dialects/postgresql/__init__.py | 15 ++++++++------- lib/sqlalchemy/dialects/sqlite/__init__.py | 11 ++++++----- lib/sqlalchemy/dialects/sybase/__init__.py | 11 +++++------ test/dialect/test_all.py | 18 ++++++++++++++++++ 8 files changed, 59 insertions(+), 42 deletions(-) create mode 100644 test/dialect/test_all.py diff --git a/lib/sqlalchemy/dialects/firebird/__init__.py b/lib/sqlalchemy/dialects/firebird/__init__.py index 286d13e78c..c83db453be 100644 --- a/lib/sqlalchemy/dialects/firebird/__init__.py +++ b/lib/sqlalchemy/dialects/firebird/__init__.py @@ -5,14 +5,13 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from sqlalchemy.dialects.firebird import base, kinterbasdb, fdb - -base.dialect = fdb.dialect +from . import base, kinterbasdb, fdb # noqa from sqlalchemy.dialects.firebird.base import \ - SMALLINT, BIGINT, FLOAT, FLOAT, DATE, TIME, \ - TEXT, NUMERIC, FLOAT, TIMESTAMP, VARCHAR, CHAR, BLOB,\ - dialect + SMALLINT, BIGINT, FLOAT, DATE, TIME, \ + TEXT, NUMERIC, TIMESTAMP, VARCHAR, CHAR, BLOB + +base.dialect = dialect = fdb.dialect __all__ = ( 'SMALLINT', 'BIGINT', 'FLOAT', 'FLOAT', 'DATE', 'TIME', diff --git a/lib/sqlalchemy/dialects/mssql/__init__.py b/lib/sqlalchemy/dialects/mssql/__init__.py index d114f826b1..9c861e89db 100644 --- a/lib/sqlalchemy/dialects/mssql/__init__.py +++ b/lib/sqlalchemy/dialects/mssql/__init__.py @@ -5,17 +5,16 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from sqlalchemy.dialects.mssql import base, pyodbc, adodbapi, \ - pymssql, zxjdbc, mxodbc +from . import base, pyodbc, adodbapi, pymssql, zxjdbc, mxodbc # noqa -base.dialect = pyodbc.dialect - -from sqlalchemy.dialects.mssql.base import \ +from .base import \ INTEGER, BIGINT, SMALLINT, TINYINT, VARCHAR, NVARCHAR, CHAR, \ NCHAR, TEXT, NTEXT, DECIMAL, NUMERIC, FLOAT, DATETIME,\ DATETIME2, DATETIMEOFFSET, DATE, TIME, SMALLDATETIME, \ BINARY, VARBINARY, BIT, REAL, IMAGE, TIMESTAMP, ROWVERSION, \ - MONEY, SMALLMONEY, UNIQUEIDENTIFIER, SQL_VARIANT, XML, dialect + MONEY, SMALLMONEY, UNIQUEIDENTIFIER, SQL_VARIANT, XML + +base.dialect = dialect = pyodbc.dialect __all__ = ( diff --git a/lib/sqlalchemy/dialects/mysql/__init__.py b/lib/sqlalchemy/dialects/mysql/__init__.py index a17edd41b3..de4e1fa41d 100644 --- a/lib/sqlalchemy/dialects/mysql/__init__.py +++ b/lib/sqlalchemy/dialects/mysql/__init__.py @@ -6,12 +6,9 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php from . import base, mysqldb, oursql, \ - pyodbc, zxjdbc, mysqlconnector, pymysql,\ + pyodbc, zxjdbc, mysqlconnector, pymysql, \ gaerdbms, cymysql -# default dialect -base.dialect = mysqldb.dialect - from .base import \ BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, DATE, DATETIME, \ DECIMAL, DOUBLE, ENUM, DECIMAL,\ @@ -19,10 +16,14 @@ from .base import \ MEDIUMINT, MEDIUMTEXT, NCHAR, \ NVARCHAR, NUMERIC, SET, SMALLINT, REAL, TEXT, TIME, TIMESTAMP, \ TINYBLOB, TINYINT, TINYTEXT,\ - VARBINARY, VARCHAR, YEAR, dialect + VARBINARY, VARCHAR, YEAR from .dml import insert, Insert +# default dialect +base.dialect = dialect = mysqldb.dialect + + __all__ = ( 'BIGINT', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'DOUBLE', 'ENUM', 'DECIMAL', 'FLOAT', 'INTEGER', 'INTEGER', diff --git a/lib/sqlalchemy/dialects/oracle/__init__.py b/lib/sqlalchemy/dialects/oracle/__init__.py index d3e60a43c0..e3d9fed2cc 100644 --- a/lib/sqlalchemy/dialects/oracle/__init__.py +++ b/lib/sqlalchemy/dialects/oracle/__init__.py @@ -5,16 +5,15 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from sqlalchemy.dialects.oracle import base, cx_oracle, zxjdbc +from . import base, cx_oracle, zxjdbc # noqa -base.dialect = cx_oracle.dialect - -from sqlalchemy.dialects.oracle.base import \ +from .base import \ VARCHAR, NVARCHAR, CHAR, DATE, NUMBER,\ - BLOB, BFILE, CLOB, NCLOB, TIMESTAMP, RAW,\ - FLOAT, DOUBLE_PRECISION, LONG, dialect, INTERVAL,\ - VARCHAR2, NVARCHAR2, ROWID, dialect + BLOB, BFILE, BINARY_FLOAT, BINARY_DOUBLE, CLOB, NCLOB, TIMESTAMP, RAW,\ + FLOAT, DOUBLE_PRECISION, LONG, INTERVAL,\ + VARCHAR2, NVARCHAR2, ROWID +base.dialect = dialect = cx_oracle.dialect __all__ = ( 'VARCHAR', 'NVARCHAR', 'CHAR', 'DATE', 'NUMBER', diff --git a/lib/sqlalchemy/dialects/postgresql/__init__.py b/lib/sqlalchemy/dialects/postgresql/__init__.py index 7e7085807b..a985f06a91 100644 --- a/lib/sqlalchemy/dialects/postgresql/__init__.py +++ b/lib/sqlalchemy/dialects/postgresql/__init__.py @@ -6,17 +6,15 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php from . import base, psycopg2, pg8000, pypostgresql, pygresql, \ - zxjdbc, psycopg2cffi - -base.dialect = psycopg2.dialect + zxjdbc, psycopg2cffi # noqa from .base import \ INTEGER, BIGINT, SMALLINT, VARCHAR, CHAR, TEXT, NUMERIC, FLOAT, REAL, \ - INET, CIDR, UUID, BIT, MACADDR, MONEY, OID, DOUBLE_PRECISION, TIMESTAMP, TIME, \ - DATE, BYTEA, BOOLEAN, INTERVAL, ENUM, dialect, TSVECTOR, DropEnumType, \ - CreateEnumType + INET, CIDR, UUID, BIT, MACADDR, MONEY, OID, DOUBLE_PRECISION, \ + TIMESTAMP, TIME, DATE, BYTEA, BOOLEAN, INTERVAL, ENUM, TSVECTOR, \ + DropEnumType, CreateEnumType from .hstore import HSTORE, hstore -from .json import JSON, JSONB +from .json import JSON, JSONB, json from .array import array, ARRAY, Any, All from .ext import aggregate_order_by, ExcludeConstraint, array_agg from .dml import insert, Insert @@ -24,6 +22,9 @@ from .dml import insert, Insert from .ranges import INT4RANGE, INT8RANGE, NUMRANGE, DATERANGE, TSRANGE, \ TSTZRANGE +base.dialect = dialect = psycopg2.dialect + + __all__ = ( 'INTEGER', 'BIGINT', 'SMALLINT', 'VARCHAR', 'CHAR', 'TEXT', 'NUMERIC', 'FLOAT', 'REAL', 'INET', 'CIDR', 'UUID', 'BIT', 'MACADDR', 'MONEY', 'OID', diff --git a/lib/sqlalchemy/dialects/sqlite/__init__.py b/lib/sqlalchemy/dialects/sqlite/__init__.py index 6161ff6b72..cb5337adb9 100644 --- a/lib/sqlalchemy/dialects/sqlite/__init__.py +++ b/lib/sqlalchemy/dialects/sqlite/__init__.py @@ -5,16 +5,17 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from sqlalchemy.dialects.sqlite import base, pysqlite, pysqlcipher - -# default dialect -base.dialect = pysqlite.dialect +from . import base, pysqlite, pysqlcipher # noqa from sqlalchemy.dialects.sqlite.base import ( BLOB, BOOLEAN, CHAR, DATE, DATETIME, DECIMAL, FLOAT, INTEGER, REAL, - NUMERIC, SMALLINT, TEXT, TIME, TIMESTAMP, VARCHAR, dialect, + NUMERIC, SMALLINT, TEXT, TIME, TIMESTAMP, VARCHAR ) +# default dialect +base.dialect = dialect = pysqlite.dialect + + __all__ = ('BLOB', 'BOOLEAN', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'FLOAT', 'INTEGER', 'NUMERIC', 'SMALLINT', 'TEXT', 'TIME', 'TIMESTAMP', 'VARCHAR', 'REAL', 'dialect') diff --git a/lib/sqlalchemy/dialects/sybase/__init__.py b/lib/sqlalchemy/dialects/sybase/__init__.py index f7f06e5aa4..be434977fa 100644 --- a/lib/sqlalchemy/dialects/sybase/__init__.py +++ b/lib/sqlalchemy/dialects/sybase/__init__.py @@ -5,17 +5,16 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from sqlalchemy.dialects.sybase import base, pysybase, pyodbc - -# default dialect -base.dialect = pyodbc.dialect +from . import base, pysybase, pyodbc # noqa from .base import CHAR, VARCHAR, TIME, NCHAR, NVARCHAR,\ TEXT, DATE, DATETIME, FLOAT, NUMERIC,\ BIGINT, INT, INTEGER, SMALLINT, BINARY,\ VARBINARY, UNITEXT, UNICHAR, UNIVARCHAR,\ - IMAGE, BIT, MONEY, SMALLMONEY, TINYINT,\ - dialect + IMAGE, BIT, MONEY, SMALLMONEY, TINYINT + +# default dialect +base.dialect = dialect = pyodbc.dialect __all__ = ( diff --git a/test/dialect/test_all.py b/test/dialect/test_all.py new file mode 100644 index 0000000000..3e028e87aa --- /dev/null +++ b/test/dialect/test_all.py @@ -0,0 +1,18 @@ +from sqlalchemy.testing import fixtures +from sqlalchemy.testing import is_not_ +from sqlalchemy import dialects + + +class ImportStarTest(fixtures.TestBase): + + def _all_dialect_packages(self): + return [ + getattr(__import__("sqlalchemy.dialects.%s" % d).dialects, d) + for d in dialects.__all__ + if not d.startswith('_') + ] + + def test_all_import(self): + for package in self._all_dialect_packages(): + for item_name in package.__all__: + is_not_(None, getattr(package, item_name)) -- 2.47.2