From d9b25302442e148ba150c9e339a3367d1cb7fbdf Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 29 May 2009 23:27:16 +0000 Subject: [PATCH] squeezing out py3k fixes....sooo slowwww --- lib/sqlalchemy/dialects/mssql/base.py | 2 +- lib/sqlalchemy/engine/base.py | 5 +++++ lib/sqlalchemy/engine/reflection.py | 5 +---- lib/sqlalchemy/engine/strategies.py | 6 ++++++ lib/sqlalchemy/engine/url.py | 2 ++ lib/sqlalchemy/schema.py | 4 +++- test/dialect/mssql.py | 2 +- test/engine/parseconnect.py | 3 ++- 8 files changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 1ce0209bf3..11ef0725de 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -235,7 +235,7 @@ from sqlalchemy.engine import default, base, reflection from sqlalchemy import types as sqltypes from decimal import Decimal as _python_Decimal -import information_schema as ischema +from sqlalchemy.dialects.mssql import information_schema as ischema MS_2008_VERSION = (10,) MS_2005_VERSION = (9,) diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 0328433618..a2984c88ce 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1067,7 +1067,12 @@ class Connection(Connectable): self._autorollback() if self.__close_with_result: self.close() + # Py3K + #raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect).with_traceback(sys.exc_info()[2]) + # Py2K raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect), None, sys.exc_info()[2] + # end Py2K + finally: del self._reentrant_error diff --git a/lib/sqlalchemy/engine/reflection.py b/lib/sqlalchemy/engine/reflection.py index 66062e2e00..e7c4f80024 100644 --- a/lib/sqlalchemy/engine/reflection.py +++ b/lib/sqlalchemy/engine/reflection.py @@ -235,9 +235,6 @@ class Inspector(object): dialect = self.conn.dialect - # for some work arounds - from sqlalchemy.dialects.mysql.mysqldb import MySQLDialect - # MySQL dialect does this. Applicable with other dialects? if hasattr(dialect, '_connection_charset') \ and hasattr(dialect, '_adjust_casing'): @@ -263,7 +260,7 @@ class Inspector(object): del tblkw[k] tblkw[str(k)] = v - ### Py2K + # Py2K if isinstance(schema, str): schema = schema.decode(dialect.encoding) if isinstance(table_name, str): diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py index 173a138409..efe67e7530 100644 --- a/lib/sqlalchemy/engine/strategies.py +++ b/lib/sqlalchemy/engine/strategies.py @@ -76,7 +76,13 @@ class DefaultEngineStrategy(EngineStrategy): return dialect.connect(*cargs, **cparams) except Exception, e: import sys + + # Py3K + #raise exc.DBAPIError.instance(None, None, e).with_traceback(sys.exc_info()[2]) + # Py2K raise exc.DBAPIError.instance(None, None, e), None, sys.exc_info()[2] + # end Py2K + creator = kwargs.pop('creator', connect) poolclass = (kwargs.pop('poolclass', None) or diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py index 157f914db8..68913dbdb6 100644 --- a/lib/sqlalchemy/engine/url.py +++ b/lib/sqlalchemy/engine/url.py @@ -170,8 +170,10 @@ def _parse_rfc1738_args(name): tokens = components['database'].split('?', 2) components['database'] = tokens[0] query = (len(tokens) > 1 and dict(cgi.parse_qsl(tokens[1]))) or None + # Py2K if query is not None: query = dict((k.encode('ascii'), query[k]) for k in query) + # end Py2K else: query = None components['query'] = query diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 5849c5998d..d3cdeee002 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -1020,7 +1020,9 @@ class ColumnDefault(DefaultGenerator): return lambda ctx: fn() positionals = len(argspec[0]) - if inspect.ismethod(inspectable): + + # Py3K compat - no unbound methods + if inspect.ismethod(inspectable) or inspect.isclass(fn): positionals -= 1 if positionals == 0: diff --git a/test/dialect/mssql.py b/test/dialect/mssql.py index e62582ddc4..f721d5a9e5 100755 --- a/test/dialect/mssql.py +++ b/test/dialect/mssql.py @@ -7,7 +7,7 @@ from sqlalchemy.orm import * from sqlalchemy.sql import table, column from sqlalchemy.databases import mssql from sqlalchemy.dialects.mssql import pyodbc -import sqlalchemy.engine.url as url +from sqlalchemy.engine import url from testlib import * from testlib.testing import eq_ diff --git a/test/engine/parseconnect.py b/test/engine/parseconnect.py index a540985de3..99c72f13a8 100644 --- a/test/engine/parseconnect.py +++ b/test/engine/parseconnect.py @@ -1,5 +1,6 @@ import testenv; testenv.configure_for_tests() -import ConfigParser, StringIO +import ConfigParser +import StringIO import sqlalchemy.engine.url as url from sqlalchemy import create_engine, engine_from_config import testlib.sa as tsa -- 2.47.3