jenkins-bot has submitted this change and it was merged. Change subject: [FIX] InsecurePlatformWarning on Python <2.7.9 ......................................................................
[FIX] InsecurePlatformWarning on Python <2.7.9 Install requests[security] on Python <2.7.9 For more details see: https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning Bug: T103769 Change-Id: I1d4a0d71bd1573584231823a7e27c87df12d47a8 --- M pywikibot/comms/http.py M requirements.txt M setup.py 3 files changed, 31 insertions(+), 1 deletion(-) Approvals: John Vandenberg: Looks good to me, approved jenkins-bot: Verified diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py index 9a9fdf3..4b8fcfc 100644 --- a/pywikibot/comms/http.py +++ b/pywikibot/comms/http.py @@ -43,7 +43,7 @@ FatalServerError, Server504Error, Server414Error ) from pywikibot.comms import threadedhttp -from pywikibot.tools import deprecate_arg +from pywikibot.tools import deprecate_arg, PY2 import pywikibot.version # The error message for failed SSL certificate verification @@ -246,6 +246,8 @@ uri = http_request.uri body = http_request.body headers = http_request.headers + if PY2 and headers: + headers = dict((key, str(value)) for key, value in headers.items()) auth = config.authenticate.get(requests.utils.urlparse(uri).netloc, None) timeout = config.socket_timeout try: diff --git a/requirements.txt b/requirements.txt index e697427..e2b14dd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,6 +21,15 @@ # mandatory; see README.conversion.txt requests +# Dependency of pyOpenSSL. Use specific version to avoid expected +# DeprecationWarning +cryptography<=0.8.2 ; python_version < '2.7' + +# requests security extra +pyOpenSSL ; python_full_version < '2.7.9' +ndg-httpsclient ; python_full_version < '2.7.9' +pyasn1 ; python_full_version < '2.7.9' + future ; python_version < '2.7' # core interwiki_graph.py: git+https://github.com/nlhepler/pydot#egg=pydot-1.0.29 diff --git a/setup.py b/setup.py index b6d7424..b65277b 100644 --- a/setup.py +++ b/setup.py @@ -27,6 +27,7 @@ 'Tkinter': ['Pillow'], # 0.6.1 supports socket.io 1.0, but WMF is using 0.9 (T91393 and T85716) 'rcstream': ['socketIO-client<0.6.1'], + 'security': ['requests[security]'], } if sys.version_info[0] == 2: @@ -72,6 +73,10 @@ if sys.version_info < (2, 6, 5): raise RuntimeError("ERROR: Pywikibot only runs under Python 2.6.5 or higher") elif sys.version_info[1] == 6: + # requests security extra includes pyOpenSSL. cryptography is the + # dependency of pyOpenSSL. 0.8.2 is the newest and compatible version + # for Python 2.6, which won't raise unexpected DeprecationWarning. + extra_deps['security'].append('cryptography<=0.8.2') # work around distutils hardcoded unittest dependency import unittest # noqa if 'test' in sys.argv and sys.version_info < (2, 7): @@ -89,6 +94,15 @@ # https://pypi.python.org/pypi/ipaddr # Other backports are likely broken. dependencies.append('ipaddr') + + if sys.version_info < (2, 7, 9): + # Python versions before 2.7.9 will cause urllib3 to trigger + # InsecurePlatformWarning warnings for all HTTPS requests. By + # installing with security extras, requests will automatically set + # them up and the warnings will stop. See + # <https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning> + # for more details. + dependencies += extra_deps['security'] script_deps['data_ingestion.py'] = extra_deps['csv'] @@ -129,6 +143,11 @@ if 'oursql' in test_deps and os.name == 'nt': test_deps.remove('oursql') # depends on Cython + if 'requests[security]' in test_deps: + # Bug T105767 on Python 2.7 release 9+ + if sys.version_info[:2] == (2, 7) and sys.version_info[2] >= 9: + test_deps.remove('requests[security]') + # These extra dependencies are needed other unittest fails to load tests. if sys.version_info[0] == 2: test_deps += extra_deps['csv'] -- To view, visit https://gerrit.wikimedia.org/r/220388 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1d4a0d71bd1573584231823a7e27c87df12d47a8 Gerrit-PatchSet: 10 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com> Gerrit-Reviewer: John Vandenberg <jay...@gmail.com> Gerrit-Reviewer: Ladsgroup <ladsgr...@gmail.com> Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com> Gerrit-Reviewer: Merlijn van Deen <valhall...@arctus.nl> Gerrit-Reviewer: VcamX <vca...@gmail.com> Gerrit-Reviewer: XZise <commodorefabia...@gmx.de> Gerrit-Reviewer: Xqt <i...@gno.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits