mirror of
https://github.com/kennethreitz/requests3.git
synced 2026-06-05 23:10:16 +00:00
3b0fcb620d
We officially support Python 2.6 to 3.3, but simplejson does not support Python 3.1 or 3.2: https://github.com/simplejson/simplejson/issues/66 Importing simplejson on Python 3.2 results in a SyntaxError because simplejson uses the u'...' syntax (the syntax was not supported in Python 3.0 to 3.2). Support for loading simplejson instead of the stdlib json module was added by #710: https://github.com/kennethreitz/requests/pull/710 No mention was made of the lack of support for Python 3.2, but it was mentioned that simplejson can be faster than the stdlib json module.
118 lines
2.6 KiB
Python
118 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
pythoncompat
|
|
"""
|
|
|
|
from .packages import chardet
|
|
|
|
import sys
|
|
|
|
# -------
|
|
# Pythons
|
|
# -------
|
|
|
|
# Syntax sugar.
|
|
_ver = sys.version_info
|
|
|
|
#: Python 2.x?
|
|
is_py2 = (_ver[0] == 2)
|
|
|
|
#: Python 3.x?
|
|
is_py3 = (_ver[0] == 3)
|
|
|
|
#: Python 3.0.x
|
|
is_py30 = (is_py3 and _ver[1] == 0)
|
|
|
|
#: Python 3.1.x
|
|
is_py31 = (is_py3 and _ver[1] == 1)
|
|
|
|
#: Python 3.2.x
|
|
is_py32 = (is_py3 and _ver[1] == 2)
|
|
|
|
#: Python 3.3.x
|
|
is_py33 = (is_py3 and _ver[1] == 3)
|
|
|
|
#: Python 3.4.x
|
|
is_py34 = (is_py3 and _ver[1] == 4)
|
|
|
|
#: Python 2.7.x
|
|
is_py27 = (is_py2 and _ver[1] == 7)
|
|
|
|
#: Python 2.6.x
|
|
is_py26 = (is_py2 and _ver[1] == 6)
|
|
|
|
#: Python 2.5.x
|
|
is_py25 = (is_py2 and _ver[1] == 5)
|
|
|
|
#: Python 2.4.x
|
|
is_py24 = (is_py2 and _ver[1] == 4) # I'm assuming this is not by choice.
|
|
|
|
|
|
# ---------
|
|
# Platforms
|
|
# ---------
|
|
|
|
|
|
# Syntax sugar.
|
|
_ver = sys.version.lower()
|
|
|
|
is_pypy = ('pypy' in _ver)
|
|
is_jython = ('jython' in _ver)
|
|
is_ironpython = ('iron' in _ver)
|
|
|
|
# Assume CPython, if nothing else.
|
|
is_cpython = not any((is_pypy, is_jython, is_ironpython))
|
|
|
|
# Windows-based system.
|
|
is_windows = 'win32' in str(sys.platform).lower()
|
|
|
|
# Standard Linux 2+ system.
|
|
is_linux = ('linux' in str(sys.platform).lower())
|
|
is_osx = ('darwin' in str(sys.platform).lower())
|
|
is_hpux = ('hpux' in str(sys.platform).lower()) # Complete guess.
|
|
is_solaris = ('solar==' in str(sys.platform).lower()) # Complete guess.
|
|
|
|
try:
|
|
import simplejson as json
|
|
except (ImportError, SyntaxError):
|
|
# simplejson does not support Python 3.2, it thows a SyntaxError
|
|
# because of u'...' Unicode literals.
|
|
import json
|
|
|
|
# ---------
|
|
# Specifics
|
|
# ---------
|
|
|
|
if is_py2:
|
|
from urllib import quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, proxy_bypass
|
|
from urlparse import urlparse, urlunparse, urljoin, urlsplit, urldefrag
|
|
from urllib2 import parse_http_list
|
|
import cookielib
|
|
from Cookie import Morsel
|
|
from StringIO import StringIO
|
|
from .packages.urllib3.packages.ordered_dict import OrderedDict
|
|
from httplib import IncompleteRead
|
|
|
|
builtin_str = str
|
|
bytes = str
|
|
str = unicode
|
|
basestring = basestring
|
|
numeric_types = (int, long, float)
|
|
|
|
|
|
elif is_py3:
|
|
from urllib.parse import urlparse, urlunparse, urljoin, urlsplit, urlencode, quote, unquote, quote_plus, unquote_plus, urldefrag
|
|
from urllib.request import parse_http_list, getproxies, proxy_bypass
|
|
from http import cookiejar as cookielib
|
|
from http.cookies import Morsel
|
|
from io import StringIO
|
|
from collections import OrderedDict
|
|
from http.client import IncompleteRead
|
|
|
|
builtin_str = str
|
|
str = str
|
|
bytes = bytes
|
|
basestring = (str, bytes)
|
|
numeric_types = (int, float)
|