Browse Source

Removed compatibility with Python 3.2.

Tim Graham 10 years ago
parent
commit
fed25f1105

+ 1 - 6
django/core/mail/message.py

@@ -104,12 +104,7 @@ def sanitize_address(addr, encoding):
     if isinstance(addr, six.string_types):
         addr = parseaddr(force_text(addr))
     nm, addr = addr
-    # This try-except clause is needed on Python 3 < 3.2.4
-    # http://bugs.python.org/issue14291
-    try:
-        nm = Header(nm, encoding).encode()
-    except UnicodeEncodeError:
-        nm = Header(nm, 'utf-8').encode()
+    nm = Header(nm, encoding).encode()
     try:
         addr.encode('ascii')
     except UnicodeEncodeError:  # IDN

+ 0 - 2
django/core/management/__init__.py

@@ -25,8 +25,6 @@ def find_commands(management_dir):
     Returns an empty list if no commands are defined.
     """
     command_dir = os.path.join(management_dir, 'commands')
-    # Workaround for a Python 3.2 bug with pkgutil.iter_modules
-    sys.path_importer_cache.pop(command_dir, None)
     return [name for _, name, is_pkg in pkgutil.iter_modules([command_dir])
             if not is_pkg and not name.startswith('_')]
 

+ 2 - 10
django/utils/html.py

@@ -3,7 +3,6 @@
 from __future__ import unicode_literals
 
 import re
-import sys
 import warnings
 
 from django.utils.deprecation import RemovedInDjango20Warning
@@ -135,12 +134,7 @@ linebreaks = allow_lazy(linebreaks, six.text_type)
 
 class MLStripper(HTMLParser):
     def __init__(self):
-        # The strict parameter was added in Python 3.2 with a default of True.
-        # The default changed to False in Python 3.3 and was deprecated.
-        if sys.version_info[:2] == (3, 2):
-            HTMLParser.__init__(self, strict=False)
-        else:
-            HTMLParser.__init__(self)
+        HTMLParser.__init__(self)
         self.reset()
         self.fed = []
 
@@ -168,9 +162,7 @@ def _strip_once(value):
         return value
     try:
         s.close()
-    except (HTMLParseError, UnboundLocalError):
-        # UnboundLocalError because of http://bugs.python.org/issue17802
-        # on Python 3.2, triggered by strict=False mode of HTMLParser
+    except HTMLParseError:
         return s.get_data() + s.rawdata
     else:
         return s.get_data()

+ 1 - 4
django/utils/html_parser.py

@@ -4,10 +4,7 @@ import sys
 
 current_version = sys.version_info
 
-use_workaround = (
-    (current_version < (2, 7, 3)) or
-    (current_version >= (3, 0) and current_version < (3, 2, 3))
-)
+use_workaround = current_version < (2, 7, 3)
 
 try:
     HTMLParseError = _html_parser.HTMLParseError

+ 1 - 1
docs/faq/install.txt

@@ -16,7 +16,7 @@ How do I get started?
 What are Django's prerequisites?
 --------------------------------
 
-Django requires Python, specifically Python 2.7 or 3.2 and above. Other Python
+Django requires Python, specifically Python 2.7 or 3.3 and above. Other Python
 libraries may be required for some uses, but you'll receive an error about it
 as they're needed.
 

+ 3 - 3
docs/intro/install.txt

@@ -9,9 +9,9 @@ that'll work while you walk through the introduction.
 Install Python
 --------------
 
-Being a Python Web framework, Django requires Python. It works with Python 2.7,
-3.2, 3.3, or 3.4. All these versions of Python include a lightweight database
-called SQLite_ so you won't need to set up a database just yet.
+Being a Python Web framework, Django requires Python. It works with Python 2.7
+3.3+. All these versions of Python include a lightweight database called
+SQLite_ so you won't need to set up a database just yet.
 
 .. _sqlite: http://sqlite.org/
 

+ 1 - 1
docs/intro/tutorial01.txt

@@ -22,7 +22,7 @@ tell Django is installed and which version by running the following command:
 If Django is installed, you should see the version of your installation. If it
 isn't, you'll get an error telling "No module named django".
 
-This tutorial is written for Django |version| and Python 3.2 or later. If the
+This tutorial is written for Django |version| and Python 3.3 or later. If the
 Django version doesn't match, you can refer to the tutorial for your version
 of Django by using the version switcher at the bottom right corner of this
 page, or update Django to the newest version. If you are still using Python

+ 2 - 2
docs/topics/install.txt

@@ -7,8 +7,8 @@ This document will get you up and running with Django.
 Install Python
 ==============
 
-Being a Python Web framework, Django requires Python. It works with Python 2.7,
-3.2 or 3.3.
+Being a Python Web framework, Django requires Python. It works with Python 2.7
+or 3.3+.
 
 Get the latest version of Python at https://www.python.org/download/ or with
 your operating system's package manager.

+ 0 - 1
setup.py

@@ -62,7 +62,6 @@ setup(
         'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.2',
         'Programming Language :: Python :: 3.3',
         'Programming Language :: Python :: 3.4',
         'Topic :: Internet :: WWW/HTTP',

+ 0 - 2
tests/requirements/base.txt

@@ -1,8 +1,6 @@
 bcrypt
 docutils
 jinja2
-# move to py2.txt when dropping Python 3.2
-mock
 numpy
 Pillow
 PyYAML

+ 1 - 0
tests/requirements/py2.txt

@@ -1,2 +1,3 @@
 -r base.txt
 python-memcached
+mock

+ 5 - 12
tests/template_backends/test_jinja2.py

@@ -2,22 +2,15 @@
 # silence an ImportWarning warning on Python 2.
 from __future__ import absolute_import
 
-import sys
-
 from unittest import skipIf
 
-# Jinja2 doesn't run on Python 3.2 because it uses u-prefixed unicode strings.
-if sys.version_info[:2] == (2, 7) or sys.version_info[:2] >= (3, 3):
-    try:
-        import jinja2
-    except ImportError:
-        jinja2 = None
-        Jinja2 = None
-    else:
-        from django.template.backends.jinja2 import Jinja2
-else:
+try:
+    import jinja2
+except ImportError:
     jinja2 = None
     Jinja2 = None
+else:
+    from django.template.backends.jinja2 import Jinja2
 
 from .test_dummy import TemplateStringsTests