Author: phd
Date: 2007-10-15 08:02:11 -0600 (Mon, 15 Oct 2007)
New Revision: 3074
Modified:
SQLObject/trunk/sqlobject/col.py
SQLObject/trunk/sqlobject/dbconnection.py
SQLObject/trunk/sqlobject/index.py
SQLObject/trunk/sqlobject/joins.py
SQLObject/trunk/sqlobject/mssql/mssqlconnection.py
SQLObject/trunk/sqlobject/mysql/mysqlconnection.py
SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py
Log:
Replaced col.popKey() by dict.pop().
Modified: SQLObject/trunk/sqlobject/col.py
===================================================================
--- SQLObject/trunk/sqlobject/col.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/col.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -421,9 +421,9 @@
class SOStringLikeCol(SOCol):
"""A common ancestor for SOStringCol and SOUnicodeCol"""
def __init__(self, **kw):
- self.length = popKey(kw, 'length')
- self.varchar = popKey(kw, 'varchar', 'auto')
- self.char_binary = popKey(kw, 'char_binary', None) # A hack for MySQL
+ self.length = kw.pop('length', None)
+ self.varchar = kw.pop('varchar', 'auto')
+ self.char_binary = kw.pop('char_binary', None) # A hack for MySQL
if not self.length:
assert self.varchar == 'auto' or not self.varchar, \
"Without a length strings are treated as TEXT, not varchar"
@@ -551,7 +551,7 @@
class SOUnicodeCol(SOStringLikeCol):
def __init__(self, **kw):
- self.dbEncoding = popKey(kw, 'dbEncoding', 'UTF-8')
+ self.dbEncoding = kw.pop('dbEncoding', 'UTF-8')
super(SOUnicodeCol, self).__init__(**kw)
def createValidators(self):
@@ -586,9 +586,9 @@
class SOIntCol(SOCol):
# 3-03 @@: support precision, maybe max and min directly
def __init__(self, **kw):
- self.length = popKey(kw, 'length')
- self.unsigned = bool(popKey(kw, 'unsigned'))
- self.zerofill = bool(popKey(kw, 'unsigned'))
+ self.length = kw.pop('length', None)
+ self.unsigned = bool(kw.pop('unsigned', None))
+ self.zerofill = bool(kw.pop('zerofill', None))
SOCol.__init__(self, **kw)
def autoConstraints(self):
@@ -908,7 +908,7 @@
class SOEnumCol(SOCol):
def __init__(self, **kw):
- self.enumValues = popKey(kw, 'enumValues', None)
+ self.enumValues = kw.pop('enumValues', None)
assert self.enumValues is not None, \
'You must provide an enumValues keyword argument'
super(SOEnumCol, self).__init__(**kw)
@@ -999,7 +999,7 @@
class SOSetCol(SOCol):
def __init__(self, **kw):
- self.setValues = popKey(kw, 'setValues', None)
+ self.setValues = kw.pop('setValues', None)
assert self.setValues is not None, \
'You must provide a setValues keyword argument'
super(SOSetCol, self).__init__(**kw)
@@ -1090,7 +1090,7 @@
datetimeFormat = '%Y-%m-%d %H:%M:%S'
def __init__(self, **kw):
- datetimeFormat = popKey(kw, 'datetimeFormat')
+ datetimeFormat = kw.pop('datetimeFormat', None)
if datetimeFormat:
self.datetimeFormat = datetimeFormat
super(SODateTimeCol, self).__init__(**kw)
@@ -1157,7 +1157,7 @@
dateFormat = '%Y-%m-%d'
def __init__(self, **kw):
- dateFormat = popKey(kw, 'dateFormat')
+ dateFormat = kw.pop('dateFormat', None)
if dateFormat: self.dateFormat = dateFormat
super(SODateCol, self).__init__(**kw)
@@ -1219,7 +1219,7 @@
timeFormat = '%H:%M:%S'
def __init__(self, **kw):
- timeFormat = popKey(kw, 'timeFormat')
+ timeFormat = kw.pop('timeFormat', None)
if timeFormat:
self.timeFormat = timeFormat
super(SOTimeCol, self).__init__(**kw)
@@ -1315,10 +1315,10 @@
class SODecimalCol(SOCol):
def __init__(self, **kw):
- self.size = popKey(kw, 'size', NoDefault)
+ self.size = kw.pop('size', NoDefault)
assert self.size is not NoDefault, \
"You must give a size argument"
- self.precision = popKey(kw, 'precision', NoDefault)
+ self.precision = kw.pop('precision', NoDefault)
assert self.precision is not NoDefault, \
"You must give a precision argument"
super(SODecimalCol, self).__init__(**kw)
@@ -1440,7 +1440,7 @@
class SOPickleCol(SOBLOBCol):
def __init__(self, **kw):
- self.pickleProtocol = popKey(kw, 'pickleProtocol', pickle.HIGHEST_PROTOCOL)
+ self.pickleProtocol = kw.pop('pickleProtocol', pickle.HIGHEST_PROTOCOL)
super(SOPickleCol, self).__init__(**kw)
def createValidators(self):
@@ -1452,13 +1452,6 @@
baseClass = SOPickleCol
-def popKey(kw, name, default=None):
- if not kw.has_key(name):
- return default
- value = kw[name]
- del kw[name]
- return value
-
def pushKey(kw, name, value):
if not kw.has_key(name):
kw[name] = value
Modified: SQLObject/trunk/sqlobject/dbconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/dbconnection.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/dbconnection.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -13,7 +13,6 @@
import sqlbuilder
from cache import CacheSet
import col
-popKey = col.popKey
import main
from joins import sorter
from converters import sqlrepr
@@ -566,12 +565,12 @@
ops = {None: "IS"}
data = {}
if 'id' in kw:
- data[soClass.sqlmeta.idName] = popKey(kw, 'id')
+ data[soClass.sqlmeta.idName] = kw.pop('id')
for key, col in soClass.sqlmeta.columns.items():
if key in kw:
- data[col.dbName] = popKey(kw, key)
+ data[col.dbName] = kw.pop(key)
elif col.foreignName in kw:
- obj = popKey(kw, col.foreignName)
+ obj = kw.pop(col.foreignName)
if isinstance(obj, main.SQLObject):
data[col.dbName] = obj.id
else:
Modified: SQLObject/trunk/sqlobject/index.py
===================================================================
--- SQLObject/trunk/sqlobject/index.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/index.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -1,5 +1,4 @@
from types import *
-import col
from converters import sqlrepr
class SODatabaseIndex(object):
@@ -18,7 +17,7 @@
if not self.unique:
raise AttributeError, (
"'%s' object has no attribute 'get' (index is not unique)" % self.name)
- connection = col.popKey(kw, 'connection', None)
+ connection = kw.pop('connection', None)
if args and kw:
raise TypeError, "You cannot mix named and unnamed arguments"
columns = [d['column'] for d in self.descriptions
Modified: SQLObject/trunk/sqlobject/joins.py
===================================================================
--- SQLObject/trunk/sqlobject/joins.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/joins.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -2,7 +2,6 @@
NoDefault = sqlbuilder.NoDefault
import styles
import classregistry
-from col import popKey
import events
__all__ = ['MultipleJoin', 'SQLMultipleJoin', 'RelatedJoin', 'SQLRelatedJoin',
@@ -19,10 +18,7 @@
def __init__(self, otherClass=None, **kw):
kw['otherClass'] = otherClass
self.kw = kw
- if self.kw.has_key('joinMethodName'):
- self._joinMethodName = popKey(self.kw, 'joinMethodName')
- else:
- self._joinMethodName = None
+ self._joinMethodName = self.kw.pop('joinMethodName', None)
def _set_joinMethodName(self, value):
assert self._joinMethodName == value or self._joinMethodName is None, "You have already given an explicit joinMethodName (%s), and you are now setting it to %s" % (self._joinMethodName, value)
@@ -304,7 +300,7 @@
class SOSingleJoin(SOMultipleJoin):
def __init__(self, **kw):
- self.makeDefault = popKey(kw, 'makeDefault', False)
+ self.makeDefault = kw.pop('makeDefault', False)
SOMultipleJoin.__init__(self, **kw)
def performJoin(self, inst):
Modified: SQLObject/trunk/sqlobject/mssql/mssqlconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/mssql/mssqlconnection.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/mssql/mssqlconnection.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -41,8 +41,8 @@
conn_str += "User Id=%s;Password=%s"
self.make_conn_str = lambda keys: [conn_str % (keys.host, keys.db, keys.user, keys.password)]
- col.popKey(kw, "sspi")
- col.popKey(kw, "ncli")
+ kw.pop("sspi", None)
+ kw.pop("ncli", None)
else: # pymssql
self.dbconnection = sqlmodule.connect
Modified: SQLObject/trunk/sqlobject/mysql/mysqlconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/mysql/mysqlconnection.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/mysql/mysqlconnection.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -35,17 +35,17 @@
for key in ("unix_socket", "init_command",
"read_default_file", "read_default_group", "conv"):
if key in kw:
- self.kw[key] = col.popKey(kw, key)
+ self.kw[key] = kw.pop(key)
for key in ("connect_timeout", "compress", "named_pipe", "use_unicode",
"client_flag", "local_infile"):
if key in kw:
- self.kw[key] = int(col.popKey(kw, key))
+ self.kw[key] = int(kw.pop(key))
if "charset" in kw:
- self.dbEncoding = self.kw["charset"] = col.popKey(kw, "charset")
+ self.dbEncoding = self.kw["charset"] = kw.pop("charset")
else:
self.dbEncoding = None
if "sqlobject_encoding" in kw:
- self.encoding = col.popKey(kw, "sqlobject_encoding")
+ self.encoding = kw.pop("sqlobject_encoding")
else:
self.encoding = 'ascii'
DBAPI.__init__(self, **kw)
@@ -220,10 +220,10 @@
if self.dbEncoding: kw['dbEncoding'] = self.dbEncoding
kw['name'] = soClass.sqlmeta.style.dbColumnToPythonAttr(field)
kw['dbName'] = field
-
+
# Since MySQL 5.0, 'NO' is returned in the NULL column (SQLObject expected '')
kw['notNone'] = (nullAllowed.upper() != 'YES' and True or False)
-
+
if default and t.startswith('int'):
kw['default'] = int(default)
elif default and t.startswith('float'):
Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py 2007-10-15 13:57:58 UTC (rev 3073)
+++ SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py 2007-10-15 14:02:11 UTC (rev 3074)
@@ -1,5 +1,4 @@
from sqlobject.dbconnection import DBAPI
-from sqlobject.col import popKey
from sqlobject import col, sqlbuilder
from sqlobject.dberrors import *
import thread
@@ -69,27 +68,27 @@
sqlite2_Binary = sqlite.Binary
sqlite.Binary = lambda s: sqlite2_Binary(sqlite.encode(s))
if 'factory' in kw:
- factory = popKey(kw, 'factory')
+ factory = kw.pop('factory')
if isinstance(factory, str):
factory = globals()[factory]
opts['factory'] = factory(sqlite)
else:
opts['autocommit'] = bool(autoCommit)
if 'encoding' in kw:
- opts['encoding'] = popKey(kw, 'encoding')
+ opts['encoding'] = kw.pop('encoding')
if 'mode' in kw:
- opts['mode'] = int(popKey(kw, 'mode'), 0)
+ opts['mode'] = int(kw.pop('mode'), 0)
if 'timeout' in kw:
if using_sqlite2:
- opts['timeout'] = float(popKey(kw, 'timeout'))
+ opts['timeout'] = float(kw.pop('timeout'))
else:
- opts['timeout'] = int(float(popKey(kw, 'timeout')) * 1000)
+ opts['timeout'] = int(float(kw.pop('timeout')) * 1000)
if 'check_same_thread' in kw:
- opts["check_same_thread"] = bool(popKey(kw, 'check_same_thread'))
+ opts["check_same_thread"] = bool(kw.pop('check_same_thread'))
# use only one connection for sqlite - supports multiple)
# cursors per connection
self._connOptions = opts
- self.use_table_info = popKey(kw, "use_table_info", False)
+ self.use_table_info = kw.pop("use_table_info", False)
DBAPI.__init__(self, **kw)
self._threadPool = {}
self._threadOrigination = {}
|