3 æÈ[» ã @sÀdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z yddl mZWn ek r„dZdZdZYnXddlZddlZdd„Zd d „Zd d „Zed kr¼eƒdS)z'Module containing bug report helper(s).é)Úprint_functionNé)Ú __version__)Ú pyopensslcCsŽtjƒ}|dkrtjƒ}nj|dkr\dtjjtjjtjjf}tjjdkr„dj |tjjgƒ}n(|dkrntjƒ}n|dkr€tjƒ}nd}||d œS) a×Return 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. ZCPythonZPyPyz%s.%s.%sÚfinalÚZJythonZ IronPythonÚUnknown)ÚnameÚversion) ÚplatformZpython_implementationZpython_versionÚsysZpypy_version_infoÚmajorÚminorÚmicroÚ releaselevelÚjoin)ÚimplementationZimplementation_version©rú/usr/lib/python3.6/help.pyÚ_implementations      rc CsÒytjƒtjƒdœ}Wntk r4dddœ}YnXtƒ}dtji}dtji}dddœ}trrtjdtj j dœ}dt t ddƒi}dt t ddƒi}tj }d|dk rªd|ndi}|||tdk |||||dtid œ S) z&Generate information for a bug report.)ÚsystemÚreleaserr Nr)r Zopenssl_versionz%xr) r rÚ system_sslZusing_pyopensslZ pyOpenSSLÚurllib3ÚchardetÚ cryptographyÚidnaZrequests)r rrÚIOErrorrrrrÚOpenSSLZSSLZOPENSSL_VERSION_NUMBERÚgetattrrrÚsslrÚrequests_version) Z platform_infoZimplementation_infoZ urllib3_infoZ chardet_infoZpyopenssl_infoZcryptography_infoZ idna_inforZsystem_ssl_inforrrÚinfo;s8  r"cCsttjtƒddd�ƒdS)z)Pretty-print the bug information as JSON.Té)Z sort_keysÚindentN)ÚprintÚjsonÚdumpsr"rrrrÚmainqsr(Ú__main__)Ú__doc__Z __future__rr&r r r rrrrrr!Zurllib3.contribrÚ ImportErrorrrrr"r(Ú__name__rrrrÚs,   !6