[Sqlalchemy-commits] [1067] sqlalchemy/trunk/lib/sqlalchemy/util.py: small cleanup courtesy j.ellis
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-02-28 23:33:28
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1067] sqlalchemy/trunk/lib/sqlalchemy/util.py: small cleanup courtesy j.ellis</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1067</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-02-28 17:33:15 -0600 (Tue, 28 Feb 2006)</dd> </dl> <h3>Log Message</h3> <pre>small cleanup courtesy j.ellis</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunklibsqlalchemyutilpy">sqlalchemy/trunk/lib/sqlalchemy/util.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunklibsqlalchemyutilpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/util.py (1066 => 1067)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/util.py 2006-02-28 23:18:43 UTC (rev 1066) +++ sqlalchemy/trunk/lib/sqlalchemy/util.py 2006-02-28 23:33:15 UTC (rev 1067) </span><span class="lines">@@ -53,13 +53,20 @@ </span><span class="cx"> return repr(obj) </span><span class="cx"> </span><span class="cx"> class OrderedProperties(object): </span><del>- """an object that maintains the order in which attributes are set upon it. - also provides an iterator and a very basic dictionary interface to those attributes. </del><span class="cx"> """ </span><ins>+ An object that maintains the order in which attributes are set upon it. + also provides an iterator and a very basic getitem/setitem interface to those attributes. + + (Not really a dict, since it iterates over values, not keys. Not really + a list, either, since each value must have a key associated; hence there is + no append or extend.) + """ </ins><span class="cx"> def __init__(self): </span><span class="cx"> self.__dict__['_list'] = [] </span><ins>+ def __len__(self): + return len(self._list) </ins><span class="cx"> def keys(self): </span><del>- return self._list </del><ins>+ return list(self._list) </ins><span class="cx"> def get(self, key, default): </span><span class="cx"> return getattr(self, key, default) </span><span class="cx"> def has_key(self, key): </span><span class="lines">@@ -81,8 +88,9 @@ </span><span class="cx"> self._list.append(key) </span><span class="cx"> self.__dict__[key] = object </span><span class="cx"> def clear(self): </span><del>- for key in self._list[:]: - del self[key] </del><ins>+ self.__dict__.clear() + self.__dict__['_list'] = [] + </ins><span class="cx"> class RecursionStack(object): </span><span class="cx"> """a thread-local stack used to detect recursive object traversals.""" </span><span class="cx"> def __init__(self): </span><span class="lines">@@ -109,17 +117,18 @@ </span><span class="cx"> </span><span class="cx"> class OrderedDict(dict): </span><span class="cx"> """A Dictionary that keeps its own internal ordering""" </span><ins>+ </ins><span class="cx"> def __init__(self, values = None): </span><del>- self.list = [] </del><ins>+ self._list = [] </ins><span class="cx"> if values is not None: </span><span class="cx"> for val in values: </span><span class="cx"> self.update(val) </span><span class="cx"> </span><span class="cx"> def keys(self): </span><del>- return self.list </del><ins>+ return list(self._list) </ins><span class="cx"> </span><span class="cx"> def clear(self): </span><del>- self.list = [] </del><ins>+ self._list = [] </ins><span class="cx"> dict.clear(self) </span><span class="cx"> </span><span class="cx"> def update(self, dict): </span><span class="lines">@@ -134,29 +143,29 @@ </span><span class="cx"> return self.__getitem__(key) </span><span class="cx"> </span><span class="cx"> def values(self): </span><del>- return map(lambda key: self[key], self.list) </del><ins>+ return map(lambda key: self[key], self._list) </ins><span class="cx"> </span><span class="cx"> def __iter__(self): </span><del>- return iter(self.list) </del><ins>+ return iter(self._list) </ins><span class="cx"> </span><span class="cx"> def itervalues(self): </span><del>- return iter([self[key] for key in self.list]) </del><ins>+ return iter([self[key] for key in self._list]) </ins><span class="cx"> </span><del>- def iterkeys(self):return self.__iter__() </del><ins>+ def iterkeys(self): return self.__iter__() </ins><span class="cx"> </span><span class="cx"> def iteritems(self): </span><span class="cx"> return iter([(key, self[key]) for key in self.keys()]) </span><span class="cx"> </span><span class="cx"> def __delitem__(self, key): </span><span class="cx"> try: </span><del>- del self.list[self.list.index(key)] </del><ins>+ del self._list[self._list.index(key)] </ins><span class="cx"> except ValueError: </span><span class="cx"> raise KeyError(key) </span><span class="cx"> dict.__delitem__(self, key) </span><span class="cx"> </span><span class="cx"> def __setitem__(self, key, object): </span><span class="cx"> if not self.has_key(key): </span><del>- self.list.append(key) </del><ins>+ self._list.append(key) </ins><span class="cx"> dict.__setitem__(self, key, object) </span><span class="cx"> </span><span class="cx"> def __getitem__(self, key): </span></span></pre> </div> </div> </body> </html> |