comparison env/lib/python3.7/site-packages/requests/help.py @ 2:6af9afd405e9 draft

"planemo upload commit 0a63dd5f4d38a1f6944587f52a8cd79874177fc1"
author shellac
date Thu, 14 May 2020 14:56:58 -0400
parents 26e78fe6e8c4
children
comparison
equal deleted inserted replaced
1:75ca89e9b81c 2:6af9afd405e9
1 """Module containing bug report helper(s)."""
2 from __future__ import print_function
3
4 import json
5 import platform
6 import sys
7 import ssl
8
9 import idna
10 import urllib3
11 import chardet
12
13 from . import __version__ as requests_version
14
15 try:
16 from urllib3.contrib import pyopenssl
17 except ImportError:
18 pyopenssl = None
19 OpenSSL = None
20 cryptography = None
21 else:
22 import OpenSSL
23 import cryptography
24
25
26 def _implementation():
27 """Return a dict with the Python implementation and version.
28
29 Provide both the name and the version of the Python implementation
30 currently running. For example, on CPython 2.7.5 it will return
31 {'name': 'CPython', 'version': '2.7.5'}.
32
33 This function works best on CPython and PyPy: in particular, it probably
34 doesn't work for Jython or IronPython. Future investigation should be done
35 to work out the correct shape of the code for those platforms.
36 """
37 implementation = platform.python_implementation()
38
39 if implementation == 'CPython':
40 implementation_version = platform.python_version()
41 elif implementation == 'PyPy':
42 implementation_version = '%s.%s.%s' % (sys.pypy_version_info.major,
43 sys.pypy_version_info.minor,
44 sys.pypy_version_info.micro)
45 if sys.pypy_version_info.releaselevel != 'final':
46 implementation_version = ''.join([
47 implementation_version, sys.pypy_version_info.releaselevel
48 ])
49 elif implementation == 'Jython':
50 implementation_version = platform.python_version() # Complete Guess
51 elif implementation == 'IronPython':
52 implementation_version = platform.python_version() # Complete Guess
53 else:
54 implementation_version = 'Unknown'
55
56 return {'name': implementation, 'version': implementation_version}
57
58
59 def info():
60 """Generate information for a bug report."""
61 try:
62 platform_info = {
63 'system': platform.system(),
64 'release': platform.release(),
65 }
66 except IOError:
67 platform_info = {
68 'system': 'Unknown',
69 'release': 'Unknown',
70 }
71
72 implementation_info = _implementation()
73 urllib3_info = {'version': urllib3.__version__}
74 chardet_info = {'version': chardet.__version__}
75
76 pyopenssl_info = {
77 'version': None,
78 'openssl_version': '',
79 }
80 if OpenSSL:
81 pyopenssl_info = {
82 'version': OpenSSL.__version__,
83 'openssl_version': '%x' % OpenSSL.SSL.OPENSSL_VERSION_NUMBER,
84 }
85 cryptography_info = {
86 'version': getattr(cryptography, '__version__', ''),
87 }
88 idna_info = {
89 'version': getattr(idna, '__version__', ''),
90 }
91
92 system_ssl = ssl.OPENSSL_VERSION_NUMBER
93 system_ssl_info = {
94 'version': '%x' % system_ssl if system_ssl is not None else ''
95 }
96
97 return {
98 'platform': platform_info,
99 'implementation': implementation_info,
100 'system_ssl': system_ssl_info,
101 'using_pyopenssl': pyopenssl is not None,
102 'pyOpenSSL': pyopenssl_info,
103 'urllib3': urllib3_info,
104 'chardet': chardet_info,
105 'cryptography': cryptography_info,
106 'idna': idna_info,
107 'requests': {
108 'version': requests_version,
109 },
110 }
111
112
113 def main():
114 """Pretty-print the bug information as JSON."""
115 print(json.dumps(info(), sort_keys=True, indent=2))
116
117
118 if __name__ == '__main__':
119 main()