o Ba_ @sdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z zddl mZWneyAdZdZdZYn wddlZddlZddZd d Zd d Zed kr_edSdS)z'Module containing bug report helper(s).)print_functionN) __version__) pyopensslcCst}|dkr t}n5|dkr.dtjjtjjtjjf}tjjdkr-d |tjjg}n|dkr7t}n |dkr@t}nd}||d S) aReturn a dict with the Python implementation and version. Provide both the name and the version of the Python implementation currently running. For example, on CPython 2.7.5 it will return {'name': 'CPython', 'version': '2.7.5'}. This function works best on CPython and PyPy: in particular, it probably doesn't work for Jython or IronPython. Future investigation should be done to work out the correct shape of the code for those platforms. CPythonPyPyz%s.%s.%sfinalJython IronPythonUnknown)nameversion) platformpython_implementationpython_versionsyspypy_version_infomajorminormicro releaseleveljoin)implementationimplementation_versionr//usr/lib/python3/dist-packages/requests/help.py_implementations&      rc Csz ttd}Wntyddd}Ynwt}dtji}dtji}ddd}tr8tjdtj j d}dt t ddi}dt t ddi}tj }d|durTd|ndi}|||tdu|||||dtid S) z&Generate information for a bug report.)systemreleaser rNr )ropenssl_versionz%xr) rr system_sslusing_pyopenssl pyOpenSSLurllib3chardet cryptographyidnarequests)rrrIOErrorrr$rr%OpenSSLSSLOPENSSL_VERSION_NUMBERgetattrr&r'sslrrequests_version) platform_infoimplementation_info urllib3_info chardet_infopyopenssl_infocryptography_info idna_infor!system_ssl_inforrrinfo;sL       r8cCsttjtddddS)z)Pretty-print the bug information as JSON.T) sort_keysindentN)printjsondumpsr8rrrrmainqsr?__main__)__doc__ __future__rr=rrr.r'r$r%r rr/urllib3.contribr ImportErrorr*r&rr8r?__name__rrrrs2   !6