diff options
| author | Gael Pasgrimaud <gael@gawel.org> | 2012-12-05 13:19:05 +0100 |
|---|---|---|
| committer | Gael Pasgrimaud <gael@gawel.org> | 2012-12-05 13:19:05 +0100 |
| commit | 26655c765c3d11e1e4e09930f93fde953dea25e2 (patch) | |
| tree | 73036ac592fb3f21d8ce1f60b7fe8293405ce1f4 /webtest/compat.py | |
| parent | 4b8c15c08d48843cb64ff7ac0f0c0870c246890a (diff) | |
| download | webtest-26655c765c3d11e1e4e09930f93fde953dea25e2.tar.gz | |
remove some ugly stuff by using future's literal and six. this mean we do no longer support python2.5
Diffstat (limited to 'webtest/compat.py')
| -rw-r--r-- | webtest/compat.py | 96 |
1 files changed, 34 insertions, 62 deletions
diff --git a/webtest/compat.py b/webtest/compat.py index b4d39ac..b651f70 100644 --- a/webtest/compat.py +++ b/webtest/compat.py @@ -1,13 +1,39 @@ # -*- coding: utf-8 -*- import sys +import six +from six import PY3 +from six import text_type +from six import binary_type +from six.moves import http_client +from six.moves import BaseHTTPServer +from six.moves import SimpleHTTPServer -if sys.version_info[0] > 2: - PY3 = True - string_types = (str,) - text_type = str - binary_type = bytes +try: from json import loads from json import dumps +except ImportError: + try: + from simplejson import loads + from simplejson import dumps + except ImportError: + loads = None + dumps = None + + +def to_bytes(value, charset='latin1'): + if isinstance(value, text_type): + return value.encode(charset) + return value + +to_string = six.u + + +def join_bytes(sep, l): + l = [to_bytes(e) for e in l] + return to_bytes(sep).join(l) + +if PY3: + string_types = (str,) from html.entities import name2codepoint from io import StringIO from io import BytesIO @@ -15,40 +41,16 @@ if sys.version_info[0] > 2: from urllib.parse import splittype from urllib.parse import splithost import urllib.parse as urlparse - from http.client import HTTPConnection - from http.client import CannotSendRequest - from http.server import HTTPServer - from http.server import SimpleHTTPRequestHandler from http.cookies import SimpleCookie, CookieError from http.cookies import _quote as cookie_quote - def to_bytes(s): - if isinstance(s, bytes): - return s - return s.encode('latin1') - - def to_string(s): - if isinstance(s, str): - return s - return str(s, 'latin1') - - def join_bytes(sep, l): - l = [to_bytes(e) for e in l] - return to_bytes(sep).join(l) else: - PY3 = False string_types = basestring - text_type = unicode - binary_type = str from htmlentitydefs import name2codepoint from urllib import splittype from urllib import splithost from urllib import urlencode - from httplib import HTTPConnection - from httplib import CannotSendRequest - from BaseHTTPServer import HTTPServer - from SimpleHTTPServer import SimpleHTTPRequestHandler from Cookie import SimpleCookie, CookieError from Cookie import _quote as cookie_quote try: @@ -57,46 +59,16 @@ else: from StringIO import StringIO BytesIO = StringIO import urlparse - try: - from json import loads - from json import dumps - except ImportError: - try: - from simplejson import loads - from simplejson import dumps - except ImportError: - loads = None - dumps = None - - def to_bytes(s): - return str(s) - - def to_string(s): - return str(s) - - def join_bytes(sep, l): - l = [e for e in l] - return sep.join(l) def print_stderr(value): - if PY3: - exec('print(value, file=sys.stderr)') - else: + if not PY3: if isinstance(value, text_type): - # not really clean but this must *never* fail try: - value = value.encode('utf-8') + value = value.encode('utf8') except: value = repr(value) - sys.stderr.write(value) - -try: - next = next -except NameError: - # python < 2.6 - def next(iterator): - return iterator.next() + six.print_(value, file=sys.stderr) try: from collections import OrderedDict |
