summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2008-07-15 19:53:17 +0000
committerJason Kirtland <jek@discorporate.us>2008-07-15 19:53:17 +0000
commit4f56fd23bcd6c0adc11138fa50249095c7d4dd73 (patch)
tree0b9dbb1be1eadcc9f01befb20c7abe06da8fbdff /lib/sqlalchemy
parent4eb747b61f0c1b1c25bdee3856d7195d10a0c227 (diff)
downloadsqlalchemy-4f56fd23bcd6c0adc11138fa50249095c7d4dd73.tar.gz
- Always use native itemgetter & attrgetter
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/ext/associationproxy.py3
-rw-r--r--lib/sqlalchemy/orm/attributes.py3
-rw-r--r--lib/sqlalchemy/orm/collections.py5
-rw-r--r--lib/sqlalchemy/orm/query.py3
-rw-r--r--lib/sqlalchemy/sql/expression.py6
-rw-r--r--lib/sqlalchemy/util.py20
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'):