diff options
| author | Anssi Kääriäinen <akaariai@gmail.com> | 2012-05-07 20:38:14 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2012-05-07 21:03:21 +0300 |
| commit | 9877e84caaf42b307086dcc62003e1d2e7c80671 (patch) | |
| tree | 34195ca0a95f01e1389cf96ce4a8a09d85f55efc | |
| parent | 5cbfb48b92cb26a335f9c8c0f79d3390290103e2 (diff) | |
Fixed total_ordering for Python < 2.7.2
The total_ordering in Python versions prior to 2.7.2 is buggy, and
this caused infinite recursion for Field comparisons on those
versions. Use the borrowed total_ordering for all Python versions
prior to 2.7.2.
The buggy total_ordering was introduced in commit
5cbfb48b92cb26a335f9c8c0f79d3390290103e2
| -rw-r--r-- | django/utils/functional.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/django/utils/functional.py b/django/utils/functional.py index 86bbed7a7b..5b88c3f3cb 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -1,6 +1,7 @@ import copy import operator from functools import wraps, update_wrapper +import sys # You can't trivially replace this `functools.partial` because this binds to @@ -311,11 +312,13 @@ def partition(predicate, values): results[predicate(item)].append(item) return results -try: +if sys.version_info >= (2,7,2): from functools import total_ordering -except ImportError: - # For Python < 2.7 - # Code borrowed from python 2.7.3 stdlib +else: + # For Python < 2.7.2. Python 2.6 does not have total_ordering, and + # total_ordering in 2.7 versions prior to 2.7.2 is buggy. See + # http://bugs.python.org/issue10042 for details. For these versions use + # code borrowed from Python 2.7.3. def total_ordering(cls): """Class decorator that fills in missing ordering methods""" convert = { |
