|
|
|
@ -114,6 +114,26 @@ except ImportError:
|
|
|
|
|
string += pct_sequence.decode(encoding, errors)
|
|
|
|
|
return string
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
compat_str = unicode # Python 2
|
|
|
|
|
except NameError:
|
|
|
|
|
compat_str = str
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
compat_basestr = basestring # Python 2
|
|
|
|
|
except NameError:
|
|
|
|
|
compat_basestr = str
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
compat_chr = unichr # Python 2
|
|
|
|
|
except NameError:
|
|
|
|
|
compat_chr = chr
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
from xml.etree.ElementTree import ParseError as compat_xml_parse_error
|
|
|
|
|
except ImportError: # Python 2.6
|
|
|
|
|
from xml.parsers.expat import ExpatError as compat_xml_parse_error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
from urllib.parse import parse_qs as compat_parse_qs
|
|
|
|
@ -123,7 +143,7 @@ except ImportError: # Python 2
|
|
|
|
|
|
|
|
|
|
def _parse_qsl(qs, keep_blank_values=False, strict_parsing=False,
|
|
|
|
|
encoding='utf-8', errors='replace'):
|
|
|
|
|
qs, _coerce_result = qs, unicode
|
|
|
|
|
qs, _coerce_result = qs, compat_str
|
|
|
|
|
pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
|
|
|
|
|
r = []
|
|
|
|
|
for name_value in pairs:
|
|
|
|
@ -162,21 +182,6 @@ except ImportError: # Python 2
|
|
|
|
|
parsed_result[name] = [value]
|
|
|
|
|
return parsed_result
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
compat_str = unicode # Python 2
|
|
|
|
|
except NameError:
|
|
|
|
|
compat_str = str
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
compat_chr = unichr # Python 2
|
|
|
|
|
except NameError:
|
|
|
|
|
compat_chr = chr
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
from xml.etree.ElementTree import ParseError as compat_xml_parse_error
|
|
|
|
|
except ImportError: # Python 2.6
|
|
|
|
|
from xml.parsers.expat import ExpatError as compat_xml_parse_error
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
from shlex import quote as shlex_quote
|
|
|
|
|
except ImportError: # Python < 3.3
|
|
|
|
|