Django

Code

Ticket #7718 (closed: fixed)

Opened 2 months ago

Last modified 2 months ago

sorted() is used by system tests, but isn't available on Python 2.3

Reported by: russellm Assigned to: russellm
Milestone: 1.0 Component: Unit test system
Version: SVN Keywords:
Cc: Triage Stage: Accepted
Has patch: 0 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description

One of the proposed patches for #7303 correctly identified that sorted() is not available under Python 2.3. sorted() is used extensively in the Django system tests as a way of removing a dependency on dict ordering.

As at [7890], the following instances exist:

tests/modeltests/basic/models.py:>>> [sorted(d.items()) for d in dicts]
tests/modeltests/or_lookups/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/admin_scripts/management/commands/app_command.py:        print 'EXECUTE:AppCommand app=%s, options=%s' % (app, sorted(options.items()))
tests/regressiontests/admin_scripts/management/commands/base_command.py:        print 'EXECUTE:BaseCommand labels=%s, options=%s' % (labels, sorted(options.items()))
tests/regressiontests/admin_scripts/management/commands/label_command.py:        print 'EXECUTE:LabelCommand label=%s, options=%s' % (label, sorted(options.items()))
tests/regressiontests/admin_scripts/management/commands/noargs_command.py:        print 'EXECUTE:NoArgsCommand options=%s' % sorted(options.items())
tests/regressiontests/defaultfilters/tests.py:>>> [sorted(dict.items()) for dict in sorted_dicts]
tests/regressiontests/defaultfilters/tests.py:>>> [sorted(dict.items()) for dict in sorted_dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/model_inheritance_regress/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/queries/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/queries/models.py:>>> [sorted(d.items()) for d in dicts]
tests/regressiontests/utils/datastructures.py:>>> sorted(real_dict.values())

We could just replace the use of sorted() with sort(); a better approach (cleaner in terms of final output) would be to introduce a definition of sorted() when it is not available, much in the same way that set is imported when it is not available.

Attachments

Change History

07/11/08 09:35:05 changed by russellm

  • owner changed from nobody to russellm.
  • needs_better_patch changed.
  • stage changed from Unreviewed to Accepted.
  • needs_tests changed.
  • needs_docs changed.

07/11/08 09:38:28 changed by Alex

http://dpaste.com/62777/ Here's a quick implementation, it's not tested, and I don't know where it should go, it also doesn't handle any of the other args sort() can take, I don't believe those are used in the tests though.

07/13/08 03:50:21 changed by russellm

  • status changed from new to closed.
  • resolution set to fixed.

(In [7914]) Fixed #7718 -- Added a naive implementation of sorted() for Python 2.3 compatibility, and modified test cases to import the function when required.


Add/Change #7718 (sorted() is used by system tests, but isn't available on Python 2.3)




Change Properties
Action