diff options
author | Jason Kirtland <jek@discorporate.us> | 2008-07-15 19:53:17 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2008-07-15 19:53:17 +0000 |
commit | 4f56fd23bcd6c0adc11138fa50249095c7d4dd73 (patch) | |
tree | 0b9dbb1be1eadcc9f01befb20c7abe06da8fbdff /lib/sqlalchemy | |
parent | 4eb747b61f0c1b1c25bdee3856d7195d10a0c227 (diff) | |
download | sqlalchemy-4f56fd23bcd6c0adc11138fa50249095c7d4dd73.tar.gz |
- Always use native itemgetter & attrgetter
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r-- | lib/sqlalchemy/ext/associationproxy.py | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/attributes.py | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/collections.py | 5 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/query.py | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 6 | ||||
-rw-r--r-- | lib/sqlalchemy/util.py | 20 |
6 files changed, 17 insertions, 23 deletions
diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py index 5415bf988..e856d5e02 100644 --- a/lib/sqlalchemy/ext/associationproxy.py +++ b/lib/sqlalchemy/ext/associationproxy.py @@ -7,6 +7,7 @@ See the example ``examples/association/proxied_association.py``. """ import itertools +import operator import weakref from sqlalchemy import exceptions from sqlalchemy import orm @@ -206,7 +207,7 @@ class AssociationProxy(object): def _default_getset(self, collection_class): attr = self.value_attr - getter = util.attrgetter(attr) + getter = operator.attrgetter(attr) if collection_class is dict: setter = lambda o, k, v: setattr(o, attr, v) else: diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index 85a842c08..fa5fb69a3 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -5,10 +5,11 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php import operator +from operator import attrgetter, itemgetter import weakref from sqlalchemy import util -from sqlalchemy.util import attrgetter, itemgetter, EMPTY_SET +from sqlalchemy.util import EMPTY_SET from sqlalchemy.orm import interfaces, collections, exc import sqlalchemy.exceptions as sa_exc diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py index 98ce70c20..d86814525 100644 --- a/lib/sqlalchemy/orm/collections.py +++ b/lib/sqlalchemy/orm/collections.py @@ -98,6 +98,7 @@ through the adapter, allowing for some very sophisticated behavior. import copy import inspect +import operator import sets import sys import weakref @@ -105,7 +106,7 @@ import weakref import sqlalchemy.exceptions as sa_exc from sqlalchemy import schema import sqlalchemy.util as sautil -from sqlalchemy.util import attrgetter + __all__ = ['collection', 'collection_adapter', @@ -162,7 +163,7 @@ def attribute_mapped_collection(attr_name): after a session flush. """ - return lambda: MappedCollection(attrgetter(attr_name)) + return lambda: MappedCollection(operator.attrgetter(attr_name)) def mapped_collection(keyfunc): diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index f1bd9eb83..5f9ee46c5 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -19,6 +19,7 @@ iterable result sets. """ from itertools import chain +from operator import itemgetter from sqlalchemy import sql, util, log, schema from sqlalchemy import exc as sa_exc @@ -1078,7 +1079,7 @@ class Query(object): (process, labels) = zip(*[query_entity.row_processor(self, context, custom_rows) for query_entity in self._entities]) if not single_entity: - labels = dict((label, property(util.itemgetter(i))) + labels = dict((label, property(itemgetter(i))) for i, label in enumerate(labels) if label) rowtuple = type.__new__(type, "RowTuple", (tuple,), labels) diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index fb989dee0..c026065e3 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -26,6 +26,8 @@ to stay the same in future releases. """ import itertools, re +from operator import attrgetter + from sqlalchemy import util, exc from sqlalchemy.sql import operators, visitors from sqlalchemy import types as sqltypes @@ -1784,7 +1786,7 @@ class FromClause(Selectable): delattr(self, attr) def _expr_attr_func(name): - get = util.attrgetter(name) + get = attrgetter(name) def attr(self): try: return get(self) @@ -2547,7 +2549,7 @@ class _Label(ColumnElement): _label = property(_label) def _proxy_attr(name): - get = util.attrgetter(name) + get = attrgetter(name) def attr(self): return get(self.element) return property(attr) diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py index 1eacca19a..a389ccca4 100644 --- a/lib/sqlalchemy/util.py +++ b/lib/sqlalchemy/util.py @@ -27,19 +27,6 @@ try: except ImportError: import pickle - -try: - from operator import attrgetter -except ImportError: - def attrgetter(attribute): - return lambda value: getattr(value, attribute) - -try: - from operator import itemgetter -except ImportError: - def itemgetter(attribute): - return lambda value: value[attribute] - if sys.version_info >= (2, 5): class PopulateDict(dict): """a dict which populates missing values via a creation function. @@ -602,8 +589,9 @@ class OrderedProperties(object): def clear(self): self._data.clear() + class OrderedDict(dict): - """A Dictionary that returns keys/values/items in the order they were added.""" + """A dict that returns keys/values/items in the order they were added.""" def __init__(self, ____sequence=None, **kwargs): self._list = [] @@ -616,10 +604,10 @@ class OrderedDict(dict): def clear(self): self._list = [] dict.clear(self) - + def sort(self, fn=None): self._list.sort(fn) - + def update(self, ____sequence=None, **kwargs): if ____sequence is not None: if hasattr(____sequence, 'keys'): |