diff options
-rw-r--r-- | lib/sqlalchemy/engine/reflection.py | 11 | ||||
-rw-r--r-- | lib/sqlalchemy/engine/result.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/engine/url.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/ext/associationproxy.py | 43 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/identity.py | 46 | ||||
-rw-r--r-- | lib/sqlalchemy/util/__init__.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/util/compat.py | 2 |
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 |