summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/engine/reflection.py11
-rw-r--r--lib/sqlalchemy/engine/result.py2
-rw-r--r--lib/sqlalchemy/engine/url.py2
-rw-r--r--lib/sqlalchemy/ext/associationproxy.py43
-rw-r--r--lib/sqlalchemy/orm/identity.py46
-rw-r--r--lib/sqlalchemy/util/__init__.py2
-rw-r--r--lib/sqlalchemy/util/compat.py2
7 files changed, 57 insertions, 51 deletions
diff --git a/lib/sqlalchemy/engine/reflection.py b/lib/sqlalchemy/engine/reflection.py
index 4b2987851..cf2caf679 100644
--- a/lib/sqlalchemy/engine/reflection.py
+++ b/lib/sqlalchemy/engine/reflection.py
@@ -389,12 +389,11 @@ class Inspector(object):
del tblkw[k]
tblkw[str(k)] = v
-# start Py2K
-# if isinstance(schema, str):
-# schema = schema.decode(dialect.encoding)
-# if isinstance(table_name, str):
-# table_name = table_name.decode(dialect.encoding)
-# end Py2K
+ if util.py2k:
+ if isinstance(schema, str):
+ schema = schema.decode(dialect.encoding)
+ if isinstance(table_name, str):
+ table_name = table_name.decode(dialect.encoding)
# columns
found_table = False
diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py
index 4261a5877..65ce3b742 100644
--- a/lib/sqlalchemy/engine/result.py
+++ b/lib/sqlalchemy/engine/result.py
@@ -215,8 +215,6 @@ class ResultMetaData(object):
processors.append(processor)
rec = (processor, obj, i)
-# name.encode('ascii')
-
# indexes as keys. This is only needed for the Python version of
# RowProxy (the C version uses a faster path for integer indexes).
primary_keymap[i] = rec
diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py
index b7d56374e..ed5729eea 100644
--- a/lib/sqlalchemy/engine/url.py
+++ b/lib/sqlalchemy/engine/url.py
@@ -149,7 +149,7 @@ def make_url(name_or_url):
existing URL object is passed, just returns the object.
"""
- if isinstance(name_or_url, str):
+ if isinstance(name_or_url, util.string_types):
return _parse_rfc1738_args(name_or_url)
else:
return name_or_url
diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py
index e0a867e5a..39f8a7cf6 100644
--- a/lib/sqlalchemy/ext/associationproxy.py
+++ b/lib/sqlalchemy/ext/associationproxy.py
@@ -571,7 +571,7 @@ class _AssociationList(_AssociationCollection):
def count(self, value):
return sum([1 for _ in
- filter(lambda v: v == value, iter(self))])
+ util.itertools_filter(lambda v: v == value, iter(self))])
def extend(self, values):
for v in values:
@@ -740,7 +740,7 @@ class _AssociationDict(_AssociationCollection):
return cmp(dict(self), other)
def __repr__(self):
- return repr(dict(list(self.items())))
+ return repr(dict(self.items()))
def get(self, key, default=None):
try:
@@ -756,26 +756,35 @@ class _AssociationDict(_AssociationCollection):
return self[key]
def keys(self):
- return list(self.col.keys())
+ return self.col.keys()
- def iterkeys(self):
- return iter(self.col.keys())
-
- def values(self):
- return [self._get(member) for member in list(self.col.values())]
+ def _iteritems(self):
+ for key in self.col:
+ yield (key, self._get(self.col[key]))
+ raise StopIteration
- def itervalues(self):
+ def _itervalues(self):
for key in self.col:
yield self._get(self.col[key])
raise StopIteration
- def items(self):
- return [(k, self._get(self.col[k])) for k in self]
+ def _iterkeys(self):
+ return self.col.iterkeys()
- def iteritems(self):
- for key in self.col:
- yield (key, self._get(self.col[key]))
- raise StopIteration
+
+ if util.py2k:
+ iterkeys = _iterkeys
+ itervalues = _itervalues
+ iteritems = _iteritems
+
+ def values(self):
+ return [self._get(member) for member in list(self.col.values())]
+
+ def items(self):
+ return [(k, self._get(self.col[k])) for k in self]
+ else:
+ values = _itervalues
+ items = _iteritems
def pop(self, key, default=_NotProvided):
if default is _NotProvided:
@@ -813,7 +822,7 @@ class _AssociationDict(_AssociationCollection):
self[key] = value
def copy(self):
- return dict(list(self.items()))
+ return dict(self.items())
def __hash__(self):
raise TypeError("%s objects are unhashable" % type(self).__name__)
@@ -846,6 +855,8 @@ class _AssociationSet(_AssociationCollection):
else:
return False
+ __nonzero__ = __bool__
+
def __contains__(self, value):
for member in self.col:
# testlib.pragma exempt:__eq__
diff --git a/lib/sqlalchemy/orm/identity.py b/lib/sqlalchemy/orm/identity.py
index f010a7699..55a78066a 100644
--- a/lib/sqlalchemy/orm/identity.py
+++ b/lib/sqlalchemy/orm/identity.py
@@ -6,7 +6,7 @@
import weakref
from . import attributes
-
+from .. import util
class IdentityMap(dict):
def __init__(self):
@@ -152,32 +152,28 @@ class WeakInstanceDict(IdentityMap):
return result
-# start Py3K
- def items(self):
- return iter(self._items())
-
- def values(self):
- return iter(self._values())
-# end Py3K
-# start Py2K
-# items = _items
-#
-# def iteritems(self):
-# return iter(self.items())
-#
-# values = _values
-#
-# def itervalues(self):
-# return iter(self.values())
-# end Py2K
+ if util.py2k:
+ items = _items
+
+ def iteritems(self):
+ return iter(self.items())
+
+ values = _values
+
+ def itervalues(self):
+ return iter(self.values())
+ else:
+ def items(self):
+ return iter(self._items())
+
+ def values(self):
+ return iter(self._values())
def all_states(self):
-# start Py3K
- return list(dict.values(self))
-# end Py3K
-# start Py2K
-# return dict.values(self)
-# end Py2K
+ if util.py2k:
+ return dict.values(self)
+ else:
+ return list(dict.values(self))
def discard(self, state):
st = dict.get(self, state.key, None)
diff --git a/lib/sqlalchemy/util/__init__.py b/lib/sqlalchemy/util/__init__.py
index d1fc8e8e5..9e099b072 100644
--- a/lib/sqlalchemy/util/__init__.py
+++ b/lib/sqlalchemy/util/__init__.py
@@ -9,7 +9,7 @@ from .compat import callable, cmp, reduce, \
pickle, dottedgetter, parse_qsl, namedtuple, next, WeakSet, reraise, \
raise_from_cause, text_type, string_types, int_types, binary_type, \
quote_plus, with_metaclass, print_, itertools_filterfalse, u, ue, b,\
- unquote_plus, b64decode, b64encode, byte_buffer
+ unquote_plus, b64decode, b64encode, byte_buffer, itertools_filter
from ._collections import KeyedTuple, ImmutableContainer, immutabledict, \
Properties, OrderedProperties, ImmutableProperties, OrderedDict, \
diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py
index ea97999cf..182ab1c3d 100644
--- a/lib/sqlalchemy/util/compat.py
+++ b/lib/sqlalchemy/util/compat.py
@@ -75,6 +75,7 @@ if py3k:
import itertools
itertools_filterfalse = itertools.filterfalse
+ itertools_filter = filter
itertools_imap = map
import base64
@@ -135,6 +136,7 @@ else:
import itertools
itertools_filterfalse = itertools.ifilterfalse
+ itertools_filter = itertools.ifilter
itertools_imap = itertools.imap