summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/engine/base.py4
-rw-r--r--lib/sqlalchemy/util/_collections.py46
2 files changed, 7 insertions, 43 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 3728b59fd..d2cc8890f 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -798,8 +798,8 @@ class Connection(Connectable):
distilled_params = _distill_params(multiparams, params)
if distilled_params:
# note this is usually dict but we support RowProxy
- # as well; but dict.keys() as an iterator is OK
- keys = list(distilled_params[0].keys())
+ # as well; but dict.keys() as an iterable is OK
+ keys = distilled_params[0].keys()
else:
keys = []
diff --git a/lib/sqlalchemy/util/_collections.py b/lib/sqlalchemy/util/_collections.py
index 5236d0120..fa27897a1 100644
--- a/lib/sqlalchemy/util/_collections.py
+++ b/lib/sqlalchemy/util/_collections.py
@@ -13,6 +13,7 @@ import operator
from .compat import threading, itertools_filterfalse
from . import py2k
import types
+from collections import MutableMapping
EMPTY_SET = frozenset()
@@ -264,13 +265,11 @@ class OrderedDict(dict):
def __iter__(self):
return iter(self._list)
- if py2k:
- def values(self):
- return [self[key] for key in self._list]
-
- def keys(self):
- return self._list
+ keys = MutableMapping.keys
+ values = MutableMapping.values
+ items = MutableMapping.items
+ if py2k:
def itervalues(self):
return iter([self[key] for key in self._list])
@@ -280,41 +279,6 @@ class OrderedDict(dict):
def iteritems(self):
return iter(self.items())
- def items(self):
- return [(key, self[key]) for key in self._list]
- else:
- def values(self):
- # return (self[key] for key in self)
- return (self[key] for key in self._list)
-
- def keys(self):
- # return iter(self)
- return iter(self._list)
-
- def items(self):
- # return ((key, self[key]) for key in self)
- return ((key, self[key]) for key in self._list)
-
- _debug_iter = False
- if _debug_iter:
- # normally disabled to reduce function call
- # overhead
- def __iter__(self):
- len_ = len(self._list)
- for item in self._list:
- yield item
- assert len_ == len(self._list), \
- "Dictionary changed size during iteration"
-
- def values(self):
- return (self[key] for key in self)
-
- def keys(self):
- return iter(self)
-
- def items(self):
- return ((key, self[key]) for key in self)
-
def __setitem__(self, key, object):
if key not in self:
try: