[Checkins] SVN: grokcore.component/trunk/ Add a key option to sort_components.
Sylvain Viollow
cvs-admin at zope.org
Sun Apr 29 13:13:27 UTC 2012
Log message for revision 125379:
Add a key option to sort_components.
Changed:
U grokcore.component/trunk/CHANGES.txt
U grokcore.component/trunk/src/grokcore/component/tests/order/arg_orderdirective.py
U grokcore.component/trunk/src/grokcore/component/util.py
-=-
Modified: grokcore.component/trunk/CHANGES.txt
===================================================================
--- grokcore.component/trunk/CHANGES.txt 2012-04-29 12:55:58 UTC (rev 125378)
+++ grokcore.component/trunk/CHANGES.txt 2012-04-29 13:13:24 UTC (rev 125379)
@@ -4,7 +4,8 @@
2.5 (unreleased)
----------------
-- Nothing changed yet.
+- Add a ``key`` option to ``sort_components`` that behave like ``key``
+ options available on standard Python sort methods.
2.4 (2011-04-27)
Modified: grokcore.component/trunk/src/grokcore/component/tests/order/arg_orderdirective.py
===================================================================
--- grokcore.component/trunk/src/grokcore/component/tests/order/arg_orderdirective.py 2012-04-29 12:55:58 UTC (rev 125378)
+++ grokcore.component/trunk/src/grokcore/component/tests/order/arg_orderdirective.py 2012-04-29 13:13:24 UTC (rev 125379)
@@ -3,9 +3,9 @@
If the grok.order directive is present with arguments, sorting will be
done by the order specified.
+ >>> from grokcore.component.util import sort_components
+
>>> components = [First(), Second(), Third(), Fourth(), Fifth()]
-
- >>> from grokcore.component.util import sort_components
>>> sort_components(components)
[<...Fifth object at ...>,
<...Fourth object at ...>,
@@ -13,6 +13,18 @@
<...Second object at ...>,
<...First object at ...>]
+
+You can use the key option:
+
+ >>> from operator import itemgetter
+
+ >>> components = [(1, First()), (2, Second()), (3, Third())]
+ >>> sort_components(components, key=itemgetter(1))
+ [(3, <...Third object at ...>),
+ (2, <...Second object at ...>),
+ (1, <...First object at ...>)]
+
+
"""
import grokcore.component as grok
Modified: grokcore.component/trunk/src/grokcore/component/util.py
===================================================================
--- grokcore.component/trunk/src/grokcore/component/util.py 2012-04-29 12:55:58 UTC (rev 125378)
+++ grokcore.component/trunk/src/grokcore/component/util.py 2012-04-29 13:13:24 UTC (rev 125379)
@@ -24,8 +24,12 @@
component.__class__.__name__)
-def sort_components(components):
+def sort_components(components, key=None):
"""Sort a list of components using the information provided by
`grok.order`.
"""
- return sorted(components, key=_sort_key)
+ sort_key = _sort_key
+ if key is not None:
+ sort_key = lambda item: _sort_key(key(item))
+ return sorted(components, key=sort_key)
+
More information about the checkins
mailing list