comparison env/lib/python3.9/site-packages/requests/help.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
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()