Permalink
Browse files

[py3] Bundled six for Python 3 compatibility.

Refs #18363.
  • Loading branch information...
1 parent 01c3926 commit 8b0190984116873158ee627c7a033a7bd4c3a199 @aaugustin aaugustin committed Jul 20, 2012
Showing with 378 additions and 337 deletions.
  1. +0 −109 django/utils/py3.py
  2. +353 −0 django/utils/six.py
  3. +25 −228 docs/topics/python3.txt
View
@@ -1,109 +0,0 @@
-# Compatibility layer for running Django both in 2.x and 3.x
-
-import sys
-
-if sys.version_info[0] < 3:
- PY3 = False
- # Changed module locations
- from urlparse import (urlparse, urlunparse, urljoin, urlsplit, urlunsplit,
- urldefrag, parse_qsl)
- from urllib import (quote, unquote, quote_plus, urlopen, urlencode,
- url2pathname, urlretrieve, unquote_plus)
- from urllib2 import (Request, OpenerDirector, UnknownHandler, HTTPHandler,
- HTTPSHandler, HTTPDefaultErrorHandler, FTPHandler,
- HTTPError, HTTPErrorProcessor)
- import urllib2
- import Cookie as cookies
- try:
- import cPickle as pickle
- except ImportError:
- import pickle
- try:
- import thread
- except ImportError:
- import dummy_thread as thread
- from htmlentitydefs import name2codepoint
- import HTMLParser
- from os import getcwdu
- from itertools import izip as zip
- unichr = unichr
- xrange = xrange
- maxsize = sys.maxint
-
- # Type aliases
- string_types = basestring,
- text_type = unicode
- integer_types = int, long
- long_type = long
-
- from io import BytesIO as OutputIO
-
- # Glue code for syntax differences
- def reraise(tp, value, tb=None):
- exec("raise tp, value, tb")
-
- def with_metaclass(meta, base=object):
- class _DjangoBase(base):
- __metaclass__ = meta
- return _DjangoBase
-
- iteritems = lambda o: o.iteritems()
- itervalues = lambda o: o.itervalues()
- iterkeys = lambda o: o.iterkeys()
-
- # n() is useful when python3 needs a str (unicode), and python2 str (bytes)
- n = lambda s: s.encode('utf-8')
-
-else:
- PY3 = True
- import builtins
-
- # Changed module locations
- from urllib.parse import (urlparse, urlunparse, urlencode, urljoin,
- urlsplit, urlunsplit, quote, unquote,
- quote_plus, unquote_plus, parse_qsl,
- urldefrag)
- from urllib.request import (urlopen, url2pathname, Request, OpenerDirector,
- UnknownHandler, HTTPHandler, HTTPSHandler,
- HTTPDefaultErrorHandler, FTPHandler,
- HTTPError, HTTPErrorProcessor, urlretrieve)
- import urllib.request as urllib2
- import http.cookies as cookies
- import pickle
- try:
- import _thread as thread
- except ImportError:
- import _dummy_thread as thread
- from html.entities import name2codepoint
- import html.parser as HTMLParser
- from os import getcwd as getcwdu
- zip = zip
- unichr = chr
- xrange = range
- maxsize = sys.maxsize
-
- # Type aliases
- string_types = str,
- text_type = str
- integer_types = int,
- long_type = int
-
- from io import StringIO as OutputIO
-
- # Glue code for syntax differences
- def reraise(tp, value, tb=None):
- if value.__traceback__ is not tb:
- raise value.with_traceback(tb)
- raise value
-
- def with_metaclass(meta, base=object):
- ns = dict(base=base, meta=meta)
- exec("""class _DjangoBase(base, metaclass=meta):
- pass""", ns)
- return ns["_DjangoBase"]
-
- iteritems = lambda o: o.items()
- itervalues = lambda o: o.values()
- iterkeys = lambda o: o.keys()
-
- n = lambda s: s
Oops, something went wrong.

0 comments on commit 8b01909

Please sign in to comment.