twblue/src/fixes/fix_urllib3_warnings.py

28 lines
888 B
Python
Raw Normal View History

2015-06-12 19:26:14 +02:00
# -*- coding: utf-8 -*-
2019-06-06 18:52:23 +02:00
from __future__ import unicode_literals
from future import standard_library
standard_library.install_aliases()
2015-06-12 19:26:14 +02:00
from requests.packages import urllib3
from requests.packages.urllib3 import fields
import six
2019-06-06 18:52:23 +02:00
import urllib.request, urllib.parse, urllib.error
2015-06-12 19:26:14 +02:00
def fix():
urllib3.disable_warnings()
fields.format_header_param=patched_format_header_param
def patched_format_header_param(name, value):
if not any(ch in value for ch in '"\\\r\n'):
result = '%s="%s"' % (name, value)
try:
result.encode('ascii')
except (UnicodeEncodeError, UnicodeDecodeError):
pass
else:
return result
if not six.PY3 and isinstance(value, six.text_type): # Python 2:
value = value.encode('utf-8')
2019-06-06 18:52:23 +02:00
value=urllib.parse.quote(value, safe='')
value = '%s=%s' % (name, value)
return value