Opened 5 years ago

Last modified 9 days ago

#23919 closed Cleanup/optimization

Cleanups for when we drop Python 2 compatibility — at Version 18

Reported by: Tim Graham Owned by: nobody
Component: Core (Other) Version:
Severity: Normal Keywords:
Cc: cmawebsite@…, Tom Forbes Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Collin Anderson)

This is a tracking ticket of things that we can remove when we drop Python 2 compatibility in Django 2.0. Please edit the description of the ticket as you come across new items.

  • django.core.mail.message.make_msgid() #23905
  • django.dispatch.weakref_backports
  • django.http.cookie workarounds
  • django.utils.2to3_fixes
  • django.utils.decorators.ContextDecorator
  • django.utils.encoding
    • @python_2_unicode_compatible
    • force/smart _unicode
    • either force/smart _text or force/smart _str
  • django.utils.html_parser.use_workaround
  • django.utils.http functions like urlquote_plus -- I think the versions of these functions on Python 3 don't have the unicode characters bug we are working around.
  • django.utils.lru_cache
  • django.utils.six
  • from __future__ import unicode_literals
  • str() stuff for environment variables, e.g. 0bfb53866199f366ed140d49938fd185e5898156
  • Inheriting from object in django.core.servers.basehttp (and perhaps other places) ala 4ee06ec3fc8e94d164afbd2f9c880c60c658a9ac
  • git grep 'long int' (mostly docs)
  • django.utils._os [npath,upath]
  • In tests: contextlib.closing(self.urlopen (contextlib.closing no longer needed)
  • Support for pysqlite (doesn't support Python 3)
  • Replace super(ClassName, self) with super()
  • Remove # -*- coding: utf-8 -*- source file encoding (that's the default on Python 3)
  • Evaluate replacement of custom __del__ methods by weakref.finalize
  • Remove __ne__ from objects already defining a __eq__
  • Remove note about PYTHONHASHSEED (see #26243)

Change History (18)

comment:1 Changed 5 years ago by Wojtek Ruszczewski

Various nonlocal workarounds (example).

comment:2 Changed 5 years ago by Collin Anderson

Description: modified (diff)

comment:3 Changed 5 years ago by Tim Graham

Description: modified (diff)

comment:4 Changed 5 years ago by Anssi Kääriäinen

I believe we can get rid of the Field.creation_counter hack. In Python 3 it is possible to store the attrs in a sorted dictionary. See http://stackoverflow.com/questions/4459531/how-to-read-class-attributes-in-the-same-order-as-declared.

comment:5 Changed 5 years ago by Collin Anderson

Description: modified (diff)

comment:6 Changed 5 years ago by Tim Graham

Description: modified (diff)

comment:7 Changed 5 years ago by Tim Graham

Description: modified (diff)

comment:8 Changed 5 years ago by Collin Anderson

Cc: cmawebsite@… added
Description: modified (diff)

comment:9 Changed 5 years ago by Collin Anderson

Description: modified (diff)

comment:10 Changed 5 years ago by Curtis Maloney

In far too many tests we rely on the fact six aliases builtins [like input] instead of using mock.

I submitted a patch recently to clean up a couple of these I found, but I am finding more.

comment:11 Changed 5 years ago by Curtis Maloney

Description: modified (diff)

comment:12 Changed 4 years ago by Tim Graham

Description: modified (diff)

comment:13 Changed 4 years ago by Tim Graham

Description: modified (diff)

comment:14 Changed 4 years ago by Moritz Sichert

Description: modified (diff)

comment:15 Changed 4 years ago by Tim Graham

Description: modified (diff)

comment:16 Changed 4 years ago by Claude Paroz

Description: modified (diff)

comment:17 Changed 4 years ago by Simon Charette

Description: modified (diff)

comment:18 Changed 4 years ago by Collin Anderson

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top