Author: phd
Date: Sun May 8 10:55:26 2011
New Revision: 4385
Log:
Decorators @classmethod and @staticmethod are used everywhere.
Modified:
SQLObject/trunk/docs/News.txt
SQLObject/trunk/docs/TODO.txt
SQLObject/trunk/sqlobject/boundattributes.py
SQLObject/trunk/sqlobject/col.py
SQLObject/trunk/sqlobject/dbconnection.py
SQLObject/trunk/sqlobject/declarative.py
SQLObject/trunk/sqlobject/firebird/firebirdconnection.py
SQLObject/trunk/sqlobject/inheritance/__init__.py
SQLObject/trunk/sqlobject/main.py
SQLObject/trunk/sqlobject/maxdb/maxdbconnection.py
SQLObject/trunk/sqlobject/mssql/mssqlconnection.py
SQLObject/trunk/sqlobject/mysql/mysqlconnection.py
SQLObject/trunk/sqlobject/postgres/pgconnection.py
SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py
SQLObject/trunk/sqlobject/sybase/sybaseconnection.py
SQLObject/trunk/sqlobject/tests/dbtest.py
SQLObject/trunk/sqlobject/tests/test_boundattributes.py
SQLObject/trunk/sqlobject/tests/test_declarative.py
SQLObject/trunk/sqlobject/tests/test_reparent_sqlmeta.py
SQLObject/trunk/sqlobject/versioning/__init__.py
SQLObject/trunk/sqlobject/views.py
Modified: SQLObject/trunk/docs/News.txt
==============================================================================
--- SQLObject/trunk/docs/News.txt Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/docs/News.txt Sun May 8 10:55:26 2011 (r4385)
@@ -15,6 +15,11 @@
* SelectResults (returned from .select()) is allowed in IN(column, list).
+Source code
+-----------
+
+* Decorators @classmethod and @staticmethod are used everywhere.
+
Internals
---------
Modified: SQLObject/trunk/docs/TODO.txt
==============================================================================
--- SQLObject/trunk/docs/TODO.txt Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/docs/TODO.txt Sun May 8 10:55:26 2011 (r4385)
@@ -1,8 +1,6 @@
TODO
----
-* Decorators @classmethod and @staticmethod.
-
* Declare one encoding for all UnicodeCol's per table or even per connection.
Don't forget about fromDatabase.
Modified: SQLObject/trunk/sqlobject/boundattributes.py
==============================================================================
--- SQLObject/trunk/sqlobject/boundattributes.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/boundattributes.py Sun May 8 10:55:26 2011 (r4385)
@@ -68,6 +68,7 @@
declarative.Declarative.__instanceinit__(self, new_attrs)
self.__dict__['_all_attrs'] = self._add_attrs(self, new_attrs)
+ @staticmethod
def _add_attrs(this_object, new_attrs):
private = this_object._private_variables
all_attrs = list(this_object._all_attrs)
@@ -77,8 +78,8 @@
if key not in all_attrs:
all_attrs.append(key)
return tuple(all_attrs)
- _add_attrs = staticmethod(_add_attrs)
+ @declarative.classinstancemethod
def __addtoclass__(self, cls, added_class, attr_name):
me = self or cls
attrs = {}
@@ -101,18 +102,14 @@
me.set_object(added_class, attr_name, obj)
- __addtoclass__ = declarative.classinstancemethod(__addtoclass__)
-
+ @classmethod
def set_object(cls, added_class, attr_name, obj):
setattr(added_class, attr_name, obj)
- set_object = classmethod(set_object)
-
+ @classmethod
def make_object(cls, added_class, attr_name, *args, **attrs):
raise NotImplementedError
- make_object = classmethod(make_object)
-
def __setattr__(self, name, value):
self.__dict__['_all_attrs'] = self._add_attrs(self, {name: value})
self.__dict__[name] = value
Modified: SQLObject/trunk/sqlobject/col.py
==============================================================================
--- SQLObject/trunk/sqlobject/col.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/col.py Sun May 8 10:55:26 2011 (r4385)
@@ -1136,6 +1136,7 @@
class DateTimeCol(Col):
baseClass = SODateTimeCol
+ @staticmethod
def now():
if default_datetime_implementation == DATETIME_IMPLEMENTATION:
return datetime.datetime.now()
@@ -1145,7 +1146,6 @@
assert 0, ("No datetime implementation available "
"(DATETIME_IMPLEMENTATION=%r)"
% DATETIME_IMPLEMENTATION)
- now = staticmethod(now)
class DateValidator(DateTimeValidator):
Modified: SQLObject/trunk/sqlobject/dbconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/dbconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/dbconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -129,14 +129,15 @@
db = db[1:]
return uri + urllib.quote(db)
+ @classmethod
def connectionFromOldURI(cls, uri):
return cls._connectionFromParams(*cls._parseOldURI(uri))
- connectionFromOldURI = classmethod(connectionFromOldURI)
+ @classmethod
def connectionFromURI(cls, uri):
return cls._connectionFromParams(*cls._parseURI(uri))
- connectionFromURI = classmethod(connectionFromURI)
+ @staticmethod
def _parseOldURI(uri):
schema, rest = uri.split(':', 1)
assert rest.startswith('/'), "URIs must start with scheme:/ -- you did not include a / (in %r)" % rest
@@ -185,8 +186,8 @@
argvalue = urllib.unquote(argvalue)
args[argname] = argvalue
return user, password, host, port, path, args
- _parseOldURI = staticmethod(_parseOldURI)
+ @staticmethod
def _parseURI(uri):
protocol, request = urllib.splittype(uri)
user, password, port = None, None, None
@@ -224,7 +225,6 @@
args[name] = value
return user, password, host, port, path, args
- _parseURI = staticmethod(_parseURI)
def soClassAdded(self, soClass):
"""
Modified: SQLObject/trunk/sqlobject/declarative.py
==============================================================================
--- SQLObject/trunk/sqlobject/declarative.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/declarative.py Sun May 8 10:55:26 2011 (r4385)
@@ -158,6 +158,7 @@
kw['__alsocopy'] = self.__dict__
return self.__class__(*args, **kw)
+ @classinstancemethod
def singleton(self, cls):
if self:
return self
@@ -165,8 +166,8 @@
if not hasattr(cls, name):
setattr(cls, name, cls(declarative_count=cls.declarative_count))
return getattr(cls, name)
- singleton = classinstancemethod(singleton)
+ @classinstancemethod
def __repr__(self, cls):
if self:
name = '%s object' % self.__class__.__name__
@@ -188,15 +189,13 @@
else:
return '<%s %s>' % (name, ' '.join(args))
+ @staticmethod
def _repr_vars(dictNames):
names = [n for n in dictNames
if not n.startswith('_')
and n != 'declarative_count']
names.sort()
return names
- _repr_vars = staticmethod(_repr_vars)
-
- __repr__ = classinstancemethod(__repr__)
def setup_attributes(cls, new_attrs):
for name, value in new_attrs.items():
Modified: SQLObject/trunk/sqlobject/firebird/firebirdconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -31,6 +31,7 @@
DBAPI.__init__(self, **kw)
+ @classmethod
def _connectionFromParams(cls, auth, password, host, port, path, args):
if not password:
password = 'masterkey'
@@ -41,7 +42,6 @@
path = path[1:]
path = path.replace('/', os.sep)
return cls(host, port, db=path, user=auth, password=password, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def _runWithConnection(self, meth, *args):
if not self.autoCommit:
@@ -104,6 +104,7 @@
self.printDebug(conn, id, 'QueryIns', 'result')
return id
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
"""Firebird slaps the limit and offset (actually 'first' and
'skip', respectively) statement right after the select."""
@@ -119,7 +120,6 @@
return ' '.join([limit_str, match.group(2)])
else:
return query
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
def createTable(self, soClass):
self.query('CREATE TABLE %s (\n%s\n)' % \
Modified: SQLObject/trunk/sqlobject/inheritance/__init__.py
==============================================================================
--- SQLObject/trunk/sqlobject/inheritance/__init__.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/inheritance/__init__.py Sun May 8 10:55:26 2011 (r4385)
@@ -93,6 +93,7 @@
return clone.accumulateMany(skipInherited=True, *attributes)
class InheritableSQLMeta(sqlmeta):
+ @classmethod
def addColumn(sqlmeta, columnDef, changeSchema=False, connection=None, childUpdate=False):
soClass = sqlmeta.soClass
#DSM: Try to add parent properties to the current class
@@ -133,8 +134,7 @@
c.sqlmeta.addColumn(columnDef, connection=connection, childUpdate=True)
if q: setattr(c.q, columnDef.name, q)
- addColumn = classmethod(addColumn)
-
+ @classmethod
def delColumn(sqlmeta, column, changeSchema=False, connection=None, childUpdate=False):
if childUpdate:
soClass = sqlmeta.soClass
@@ -157,8 +157,7 @@
c.sqlmeta.delColumn(column, changeSchema=changeSchema,
connection=connection, childUpdate=True)
- delColumn = classmethod(delColumn)
-
+ @classmethod
def addJoin(sqlmeta, joinDef, childUpdate=False):
soClass = sqlmeta.soClass
#DSM: Try to add parent properties to the current class
@@ -188,8 +187,7 @@
for c in sqlmeta.childClasses.values():
c.sqlmeta.addJoin(joinDef, childUpdate=True)
- addJoin = classmethod(addJoin)
-
+ @classmethod
def delJoin(sqlmeta, joinDef, childUpdate=False):
if childUpdate:
soClass = sqlmeta.soClass
@@ -204,8 +202,7 @@
for c in sqlmeta.childClasses.values():
c.sqlmeta.delJoin(joinDef, childUpdate=True)
- delJoin = classmethod(delJoin)
-
+ @classmethod
def getAllColumns(sqlmeta):
columns = sqlmeta.columns.copy()
sm = sqlmeta
@@ -213,14 +210,13 @@
columns.update(sm.parentClass.sqlmeta.columns)
sm = sm.parentClass.sqlmeta
return columns
- getAllColumns = classmethod(getAllColumns)
+ @classmethod
def getColumns(sqlmeta):
columns = sqlmeta.getAllColumns()
if columns.has_key('childName'):
del columns['childName']
return columns
- getColumns = classmethod(getColumns)
class InheritableSQLObject(SQLObject):
@@ -249,7 +245,7 @@
getattr(currentClass.q, column.name))
currentClass = currentClass.sqlmeta.parentClass
- # @classmethod
+ @classmethod
def _SO_setupSqlmeta(cls, new_attrs, is_base):
# Note: cannot use super(InheritableSQLObject, cls)._SO_setupSqlmeta -
# InheritableSQLObject is not defined when it's __classinit__
@@ -284,8 +280,7 @@
if not sqlmeta.childName:
sqlmeta.childName = cls.__name__
- _SO_setupSqlmeta = classmethod(_SO_setupSqlmeta)
-
+ @classmethod
def get(cls, id, connection=None, selectResults=None, childResults=None, childUpdate=False):
val = super(InheritableSQLObject, cls).get(id, connection, selectResults)
@@ -318,8 +313,7 @@
#DSM: We can now return ourself
return val
- get = classmethod(get)
-
+ @classmethod
def _notifyFinishClassCreation(cls):
sqlmeta = cls.sqlmeta
# verify names of added columns
@@ -347,7 +341,6 @@
# There are no joins - call addJoin to propagate joins
# from parent classes to children
sqlmeta.addJoin(None)
- _notifyFinishClassCreation = classmethod(_notifyFinishClassCreation)
def _create(self, id, **kw):
@@ -400,14 +393,15 @@
# TC: Reraise the original exception
raise
+ @classmethod
def _findAlternateID(cls, name, dbName, value, connection=None):
result = list(cls.selectBy(connection, **{name: value}))
if not result:
return result, None
obj = result[0]
return [obj.id], obj
- _findAlternateID = classmethod(_findAlternateID)
+ @classmethod
def select(cls, clause=None, *args, **kwargs):
parentClass = cls.sqlmeta.parentClass
childUpdate = kwargs.pop('childUpdate', None)
@@ -469,8 +463,8 @@
else:
return super(InheritableSQLObject, cls).select(
clause, *args, **kwargs)
- select = classmethod(select)
+ @classmethod
def selectBy(cls, connection=None, **kw):
clause = []
foreignColumns = {}
@@ -504,8 +498,6 @@
conn = connection or cls._connection
return cls.SelectResultsClass(cls, clause, connection=conn)
- selectBy = classmethod(selectBy)
-
def destroySelf(self):
#DSM: If this object has parents, recursivly kill them
if hasattr(self, '_parent') and self._parent:
Modified: SQLObject/trunk/sqlobject/main.py
==============================================================================
--- SQLObject/trunk/sqlobject/main.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/main.py Sun May 8 10:55:26 2011 (r4385)
@@ -245,11 +245,11 @@
def __init__(self, instance):
self.instance = weakref.proxy(instance)
+ @classmethod
def send(cls, signal, *args, **kw):
events.send(signal, cls.soClass, *args, **kw)
- send = classmethod(send)
-
+ @classmethod
def setClass(cls, soClass):
cls.soClass = soClass
if not cls.style:
@@ -288,8 +288,6 @@
cls.joins = []
cls.joinDefinitions = cls.joinDefinitions[:]
- setClass = classmethod(setClass)
-
############################################################
## Adding special values, like columns and indexes
############################################################
@@ -298,6 +296,7 @@
## Column handling
########################################
+ @classmethod
def addColumn(cls, columnDef, changeSchema=False, connection=None):
post_funcs = []
cls.send(events.AddColumnSignal, cls.soClass, connection,
@@ -433,8 +432,7 @@
for func in post_funcs:
func(soClass, column)
- addColumn = classmethod(addColumn)
-
+ @classmethod
def addColumnsFromDatabase(sqlmeta, connection=None):
soClass = sqlmeta.soClass
conn = connection or soClass._connection
@@ -444,8 +442,7 @@
columnDef.name = columnDef.name.encode('ascii')
sqlmeta.addColumn(columnDef)
- addColumnsFromDatabase = classmethod(addColumnsFromDatabase)
-
+ @classmethod
def delColumn(cls, column, changeSchema=False, connection=None):
sqlmeta = cls
soClass = sqlmeta.soClass
@@ -493,12 +490,11 @@
for func in post_funcs:
func(soClass, column)
- delColumn = classmethod(delColumn)
-
########################################
## Join handling
########################################
+ @classmethod
def addJoin(cls, joinDef):
sqlmeta = cls
soClass = cls.soClass
@@ -547,8 +543,7 @@
if soClass._SO_finishedClassCreation:
makeProperties(soClass)
- addJoin = classmethod(addJoin)
-
+ @classmethod
def delJoin(sqlmeta, joinDef):
soClass = sqlmeta.soClass
for join in sqlmeta.joins:
@@ -585,26 +580,24 @@
unmakeProperties(soClass)
makeProperties(soClass)
- delJoin = classmethod(delJoin)
-
########################################
## Indexes
########################################
+ @classmethod
def addIndex(cls, indexDef):
cls.indexDefinitions.append(indexDef)
index = indexDef.withClass(cls.soClass)
cls.indexes.append(index)
setattr(cls.soClass, index.name, index)
- addIndex = classmethod(addIndex)
########################################
## Utility methods
########################################
+ @classmethod
def getColumns(sqlmeta):
return sqlmeta.columns.copy()
- getColumns = classmethod(getColumns)
def asDict(self):
"""
@@ -616,6 +609,7 @@
result['id'] = self.instance.id
return result
+ @classmethod
def expireAll(sqlmeta, connection=None):
"""
Expire all instances of this class.
@@ -627,7 +621,6 @@
for item in cache_set.getAll(soClass):
item.expire()
- expireAll = classmethod(expireAll)
sqlhub = dbconnection.ConnectionHub()
@@ -816,7 +809,7 @@
classregistry.registry(sqlmeta.registry).addClass(cls)
- # @classmethod
+ @classmethod
def _SO_setupSqlmeta(cls, new_attrs, is_base):
"""
This fixes up the sqlmeta attribute. It handles both the case
@@ -858,9 +851,7 @@
if not is_base: # Do not pollute the base sqlmeta class
cls.sqlmeta.setClass(cls)
- _SO_setupSqlmeta = classmethod(_SO_setupSqlmeta)
-
- # @classmethod
+ @classmethod
def _SO_cleanDeprecatedAttrs(cls, new_attrs):
"""
This removes attributes on SQLObject subclasses that have
@@ -873,8 +864,7 @@
"not use it in your classes until it is fully "
"deprecated" % attr, level=1, stacklevel=5)
- _SO_cleanDeprecatedAttrs = classmethod(_SO_cleanDeprecatedAttrs)
-
+ @classmethod
def get(cls, id, connection=None, selectResults=None):
assert id is not None, 'None is not a possible id for %s' % cls.__name__
@@ -906,11 +896,9 @@
val._SO_writeLock.release()
return val
- get = classmethod(get)
-
+ @classmethod
def _notifyFinishClassCreation(cls):
pass
- _notifyFinishClassCreation = classmethod(_notifyFinishClassCreation)
def _init(self, id, connection=None, selectResults=None):
assert id is not None
@@ -1310,6 +1298,7 @@
def _SO_getID(self, obj):
return getID(obj)
+ @classmethod
def _findAlternateID(cls, name, dbName, value, connection=None):
if isinstance(name, str):
name = (name,)
@@ -1328,8 +1317,8 @@
[cls.sqlmeta.idName] +
[column.dbName for column in cls.sqlmeta.columnList],
condition), None
- _findAlternateID = classmethod(_findAlternateID)
+ @classmethod
def _SO_fetchAlternateID(cls, name, dbName, value, connection=None, idxName=None):
result, obj = cls._findAlternateID(name, dbName, value, connection)
if not result:
@@ -1348,12 +1337,12 @@
else:
obj = cls.get(result[0], selectResults=result[1:])
return obj
- _SO_fetchAlternateID = classmethod(_SO_fetchAlternateID)
+ @classmethod
def _SO_depends(cls):
return findDependencies(cls.__name__, cls.sqlmeta.registry)
- _SO_depends = classmethod(_SO_depends)
+ @classmethod
def select(cls, clause=None, clauseTables=None,
orderBy=NoDefault, limit=None,
lazyColumns=False, reversed=False,
@@ -1368,22 +1357,20 @@
distinct=distinct,
connection=connection,
join=join, forUpdate=forUpdate)
- select = classmethod(select)
+ @classmethod
def selectBy(cls, connection=None, **kw):
conn = connection or cls._connection
return cls.SelectResultsClass(cls,
conn._SO_columnClause(cls, kw),
connection=conn)
- selectBy = classmethod(selectBy)
-
+ @classmethod
def tableExists(cls, connection=None):
conn = connection or cls._connection
return conn.tableExists(cls.sqlmeta.table)
- tableExists = classmethod(tableExists)
-
+ @classmethod
def dropTable(cls, ifExists=False, dropJoinTables=True, cascade=False,
connection=None):
conn = connection or cls._connection
@@ -1400,8 +1387,8 @@
connection.query(sql)
for func in post_funcs:
func(cls, conn)
- dropTable = classmethod(dropTable)
+ @classmethod
def createTable(cls, ifNotExists=False, createJoinTables=True,
createIndexes=True, applyConstraints=True,
connection=None):
@@ -1427,8 +1414,8 @@
for func in post_funcs:
func(cls, conn)
return extra_sql
- createTable = classmethod(createTable)
+ @classmethod
def createTableSQL(cls, createJoinTables=True, createIndexes=True,
connection=None):
conn = connection or cls._connection
@@ -1442,8 +1429,8 @@
if index_sql:
sql += ';\n' + index_sql
return sql, constraints
- createTableSQL = classmethod(createTableSQL)
+ @classmethod
def createJoinTables(cls, ifNotExists=False, connection=None):
conn = connection or cls._connection
for join in cls._getJoinsToCreate():
@@ -1451,24 +1438,24 @@
conn.tableExists(join.intermediateTable)):
continue
conn._SO_createJoinTable(join)
- createJoinTables = classmethod(createJoinTables)
+ @classmethod
def createJoinTablesSQL(cls, connection=None):
conn = connection or cls._connection
sql = []
for join in cls._getJoinsToCreate():
sql.append(conn._SO_createJoinTableSQL(join))
return ';\n'.join(sql)
- createJoinTablesSQL = classmethod(createJoinTablesSQL)
+ @classmethod
def createIndexes(cls, ifNotExists=False, connection=None):
conn = connection or cls._connection
for index in cls.sqlmeta.indexes:
if not index:
continue
conn._SO_createIndex(cls, index)
- createIndexes = classmethod(createIndexes)
+ @classmethod
def createIndexesSQL(cls, connection=None):
conn = connection or cls._connection
sql = []
@@ -1477,8 +1464,8 @@
continue
sql.append(conn.createIndexSQL(cls, index))
return ';\n'.join(sql)
- createIndexesSQL = classmethod(createIndexesSQL)
+ @classmethod
def _getJoinsToCreate(cls):
joins = []
for join in cls.sqlmeta.joins:
@@ -1490,8 +1477,8 @@
continue
joins.append(join)
return joins
- _getJoinsToCreate = classmethod(_getJoinsToCreate)
+ @classmethod
def dropJoinTables(cls, ifExists=False, connection=None):
conn = connection or cls._connection
for join in cls.sqlmeta.joins:
@@ -1506,8 +1493,7 @@
continue
conn._SO_dropJoinTable(join)
- dropJoinTables = classmethod(dropJoinTables)
-
+ @classmethod
def clearTable(cls, connection=None, clearJoinTables=True):
# 3-03 @@: Maybe this should check the cache... but it's
# kind of crude anyway, so...
@@ -1516,7 +1502,6 @@
if clearJoinTables:
for join in cls._getJoinsToCreate():
conn.clearTable(join.intermediateTable)
- clearTable = classmethod(clearTable)
def destroySelf(self):
post_funcs = []
@@ -1590,25 +1575,22 @@
for func in post_funcs:
func(self)
+ @classmethod
def delete(cls, id, connection=None):
obj = cls.get(id, connection=connection)
obj.destroySelf()
- delete = classmethod(delete)
-
+ @classmethod
def deleteMany(cls, where=NoDefault, connection=None):
conn = connection or cls._connection
conn.query(conn.sqlrepr(sqlbuilder.Delete(cls.sqlmeta.table, where)))
- deleteMany = classmethod(deleteMany)
-
+ @classmethod
def deleteBy(cls, connection=None, **kw):
conn = connection or cls._connection
conn.query(conn.sqlrepr(sqlbuilder.Delete(cls.sqlmeta.table,
conn._SO_columnClause(cls, kw))))
- deleteBy = classmethod(deleteBy)
-
def __repr__(self):
if not hasattr(self, 'id'):
# Object initialization not finished. No attributes can be read.
@@ -1621,19 +1603,17 @@
def __sqlrepr__(self, db):
return str(self.id)
+ @classmethod
def sqlrepr(cls, value, connection=None):
return (connection or cls._connection).sqlrepr(value)
- sqlrepr = classmethod(sqlrepr)
-
+ @classmethod
def coerceID(cls, value):
if isinstance(value, cls):
return value.id
else:
return cls.sqlmeta.idType(value)
- coerceID = classmethod(coerceID)
-
def _reprItems(self):
items = []
for col in self.sqlmeta.columnList:
@@ -1644,13 +1624,12 @@
items.append((col.name, value))
return items
+ @classmethod
def setConnection(cls, value):
if isinstance(value, basestring):
value = dbconnection.connectionForURI(value)
cls._connection = value
- setConnection = classmethod(setConnection)
-
def tablesUsedImmediate(self):
return [self.__class__.q]
Modified: SQLObject/trunk/sqlobject/maxdb/maxdbconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/maxdb/maxdbconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/maxdb/maxdbconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -76,11 +76,11 @@
DBAPI.__init__(self, **kw)
+ @classmethod
def _connectionFromParams(cls, auth, password, host, port, path, args):
path = path.replace('/', os.path.sep)
return cls(host, port, user=auth, password=password,
database=path, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def _getConfigParams(self,sqlmode,auto):
autocommit='off'
@@ -133,6 +133,7 @@
self.printDebug(conn, id, 'QueryIns', 'result')
return id
+ @classmethod
def sqlAddLimit(cls,query,limit):
sql = query
sql = sql.replace("SELECT","SELECT ROWNO, ")
@@ -141,15 +142,13 @@
else:
sql = sql + 'WHERE ' + limit
return sql
- sqlAddLimit = classmethod(sqlAddLimit)
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
if start:
raise LowerBoundOfSliceIsNotSupported
limit = ' ROWNO <= %d ' % (end)
return cls.sqlAddLimit(query,limit)
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
-
def createTable(self, soClass):
#we create the table in a transaction because the addition of the
Modified: SQLObject/trunk/sqlobject/mssql/mssqlconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/mssql/mssqlconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/mssql/mssqlconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -74,11 +74,11 @@
self._can_use_max_types = None
DBAPI.__init__(self, **kw)
+ @classmethod
def _connectionFromParams(cls, user, password, host, port, path, args):
path = path.strip('/')
return cls(user=user, password=password,
host=host or 'localhost', port=port, db=path, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def insert_id(self, conn):
"""
@@ -154,6 +154,7 @@
self.printDebug(conn, id, 'QueryIns', 'result')
return id
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
if end and not start:
limit_str = "SELECT TOP %i" % end
@@ -163,7 +164,6 @@
return ' '.join([limit_str, match.group(2)])
else:
return query
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
def createReferenceConstraint(self, soClass, col):
return col.mssqlCreateReferenceConstraint()
Modified: SQLObject/trunk/sqlobject/mysql/mysqlconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/mysql/mysqlconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/mysql/mysqlconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -50,10 +50,10 @@
DBAPI.__init__(self, **kw)
+ @classmethod
def _connectionFromParams(cls, user, password, host, port, path, args):
return cls(db=path.strip('/'), user=user or '', password=password or '',
host=host or 'localhost', port=port or 0, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def makeConnection(self):
dbEncoding = self.dbEncoding
@@ -162,13 +162,13 @@
self.printDebug(conn, id, 'QueryIns', 'result')
return id
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
if not start:
return "%s LIMIT %i" % (query, end)
if not end:
return "%s LIMIT %i, -1" % (query, start)
return "%s LIMIT %i, %i" % (query, start, end-start)
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
def createReferenceConstraint(self, soClass, col):
return col.mysqlCreateReferenceConstraint()
Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/postgres/pgconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/postgres/pgconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -106,6 +106,7 @@
self.dbEncoding = kw.pop("charset", None)
DBAPI.__init__(self, **kw)
+ @classmethod
def _connectionFromParams(cls, user, password, host, port, path, args):
path = path.strip('/')
if (host is None) and path.count('/'): # Non-default unix socket
@@ -113,7 +114,6 @@
host = '/' + '/'.join(path_parts[:-1])
path = path_parts[-1]
return cls(host=host, port=port, db=path, user=user, password=password, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def _setAutoCommit(self, conn, auto):
# psycopg2 does not have an autocommit method.
@@ -159,13 +159,13 @@
self.printDebug(conn, id, 'QueryIns', 'result')
return id
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
if not start:
return "%s LIMIT %i" % (query, end)
if not end:
return "%s OFFSET %i" % (query, start)
return "%s LIMIT %i OFFSET %i" % (query, end-start, start)
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
def createColumn(self, soClass, col):
return col.postgresCreateSQL()
Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -95,6 +95,7 @@
# SQLObject converts it to unicode itself.
self._memoryConn.text_factory = str
+ @classmethod
def _connectionFromParams(cls, user, password, host, port, path, args):
assert host is None and port is None, (
"SQLite can only be used locally (with a URI like "
@@ -106,7 +107,6 @@
if path == "/:memory:":
path = ":memory:"
return cls(filename=path, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def oldUri(self):
path = self.filename
@@ -248,13 +248,13 @@
else:
return DBAPI._insertSQL(self, table, names, values)
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
if not start:
return "%s LIMIT %i" % (query, end)
if not end:
return "%s LIMIT 0 OFFSET %i" % (query, start)
return "%s LIMIT %i OFFSET %i" % (query, end-start, start)
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
def createColumn(self, soClass, col):
return col.sqliteCreateSQL()
Modified: SQLObject/trunk/sqlobject/sybase/sybaseconnection.py
==============================================================================
--- SQLObject/trunk/sqlobject/sybase/sybaseconnection.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/sybase/sybaseconnection.py Sun May 8 10:55:26 2011 (r4385)
@@ -33,10 +33,10 @@
kw['autoCommit'] = autoCommit
DBAPI.__init__(self, **kw)
+ @classmethod
def _connectionFromParams(cls, user, password, host, port, path, args):
return cls(user=user, password=password,
host=host or 'localhost', port=port, db=path, **args)
- _connectionFromParams = classmethod(_connectionFromParams)
def insert_id(self, conn):
"""
@@ -93,12 +93,12 @@
self.printDebug(conn, id, 'QueryIns', 'result')
return id
+ @classmethod
def _queryAddLimitOffset(cls, query, start, end):
# XXX Sybase doesn't support OFFSET
if end:
return "SET ROWCOUNT %i %s SET ROWCOUNT 0" % (end, query)
return query
- _queryAddLimitOffset = classmethod(_queryAddLimitOffset)
def createReferenceConstraint(self, soClass, col):
return None
Modified: SQLObject/trunk/sqlobject/tests/dbtest.py
==============================================================================
--- SQLObject/trunk/sqlobject/tests/dbtest.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/tests/dbtest.py Sun May 8 10:55:26 2011 (r4385)
@@ -124,6 +124,7 @@
createSQL = sqlobject.StringCol(notNull=True)
connectionURI = sqlobject.StringCol(notNull=True)
+ @classmethod
def installOrClear(cls, soClasses, force=False):
cls.setup()
reversed = list(soClasses)[:]
@@ -162,8 +163,8 @@
table = soClass.sqlmeta.table
if not soClass._connection.tableExists(table):
cls.install(soClass)
- installOrClear = classmethod(installOrClear)
+ @classmethod
def install(cls, soClass):
"""
Creates the given table in its database.
@@ -182,8 +183,8 @@
connectionURI=soClass._connection.uri())
for extra_sql in all_extra:
soClass._connection.query(extra_sql)
- install = classmethod(install)
+ @classmethod
def drop(cls, soClass):
"""
Drops a the given table from its database
@@ -193,22 +194,21 @@
soClass._connection.query(sql)
else:
soClass.dropTable()
- drop = classmethod(drop)
+ @classmethod
def clear(cls, soClass):
"""
Removes all the rows from a table.
"""
soClass.clearTable()
- clear = classmethod(clear)
+ @classmethod
def setup(cls):
"""
This sets up *this* table.
"""
if not cls._connection.tableExists(cls.sqlmeta.table):
cls.createTable()
- setup = classmethod(setup)
installOrClear = InstalledTestDatabase.installOrClear
Modified: SQLObject/trunk/sqlobject/tests/test_boundattributes.py
==============================================================================
--- SQLObject/trunk/sqlobject/tests/test_boundattributes.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/tests/test_boundattributes.py Sun May 8 10:55:26 2011 (r4385)
@@ -15,6 +15,7 @@
replace = None
+ @declarative.classinstancemethod
def make_object(self, cls, added_class, attr_name, **attrs):
if not self:
return cls.singleton().make_object(
@@ -26,8 +27,6 @@
self.replace.attrs = attrs
return self.replace
- make_object = declarative.classinstancemethod(make_object)
-
class Holder:
def __init__(self, name):
self.holder_name = name
Modified: SQLObject/trunk/sqlobject/tests/test_declarative.py
==============================================================================
--- SQLObject/trunk/sqlobject/tests/test_declarative.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/tests/test_declarative.py Sun May 8 10:55:26 2011 (r4385)
@@ -33,6 +33,7 @@
Declarative.__instanceinit__(self, new_attrs)
self.attrs = self.add_attrs(self.attrs, new_attrs)
+ @staticmethod
def add_attrs(old_attrs, new_attrs):
old_attrs = old_attrs[:]
for name in new_attrs.keys():
@@ -43,7 +44,6 @@
old_attrs.append(name)
old_attrs.sort()
return old_attrs
- add_attrs = staticmethod(add_attrs)
c = 1
Modified: SQLObject/trunk/sqlobject/tests/test_reparent_sqlmeta.py
==============================================================================
--- SQLObject/trunk/sqlobject/tests/test_reparent_sqlmeta.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/tests/test_reparent_sqlmeta.py Sun May 8 10:55:26 2011 (r4385)
@@ -12,13 +12,13 @@
class Reparented2(SQLObject):
class sqlmeta(object):
+ @classmethod
def setClass(cls, soClass):
# Well, it's pretty hard to call the superclass method
# when it's a classmethod and it's not actually your
# *current* superclass. Sigh
real_sqlmeta.setClass.im_func(cls, soClass)
cls.worked = True
- setClass = classmethod(setClass)
dummy = StringCol()
Modified: SQLObject/trunk/sqlobject/versioning/__init__.py
==============================================================================
--- SQLObject/trunk/sqlobject/versioning/__init__.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/versioning/__init__.py Sun May 8 10:55:26 2011 (r4385)
@@ -29,11 +29,11 @@
return fields
+ @classmethod
def select(cls, clause=None, *args, **kw):
if not getattr(cls, '_connection', None):
cls._connection = cls.masterClass._connection
return super(Version, cls).select(clause, *args, **kw)
- select = classmethod(select)
def __getattr__(self, attr):
if self.__dict__.has_key(attr):
Modified: SQLObject/trunk/sqlobject/views.py
==============================================================================
--- SQLObject/trunk/sqlobject/views.py Mon Apr 25 09:01:26 2011 (r4384)
+++ SQLObject/trunk/sqlobject/views.py Sun May 8 10:55:26 2011 (r4385)
@@ -1,8 +1,3 @@
-#from sqlobject.sqlbuilder import *
-#from sqlobject.declarative import classinstancemethod
-#from sqlobject import classregistry
-#from SQLObject import SQLObject
-#from sqlobject.col import Col, KeyCol
from sqlbuilder import *
from main import SQLObject, sqlmeta
import types, threading
|