3 æÈ[» ã @ sÀ d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl Z ddl mZ yddl mZ W n ek r„ dZdZdZY nX ddlZddlZdd„ Zd d „ Zdd„ Zed kr¼eƒ dS )z'Module containing bug report helper(s).é )Úprint_functionNé )Ú__version__)Ú pyopensslc C sŽ t jƒ } | dkrt jƒ }nj| dkr\dtjjtjjtjjf }tjjdkr„dj |tjjgƒ}n(| dkrnt jƒ }n| dkr€t jƒ }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Ú_implementation s r c C sÒ yt jƒ t jƒ dœ} W n tk r4 dddœ} Y nX tƒ }dtji}dtji}dddœ}trrtjdtj j dœ}dttddƒi}dtt ddƒi}tj }d|dk rªd| ndi}| ||tdk |||||dtid œ S ) z&Generate information for a bug report.)ÚsystemÚreleaser r Nr )r Zopenssl_versionz%xr ) r r Ú system_sslZusing_pyopensslZ pyOpenSSLÚurllib3ÚchardetÚcryptographyÚidnaZrequests)r r r ÚIOErrorr r r r ÚOpenSSLZSSLZOPENSSL_VERSION_NUMBERÚgetattrr r Ússlr Úrequests_version) Z platform_infoZimplementation_infoZurllib3_infoZchardet_infoZpyopenssl_infoZcryptography_infoZ idna_infor Zsystem_ssl_infor r r Úinfo; s8 r" c C s t tjtƒ ddd�ƒ dS )z)Pretty-print the bug information as JSON.Té )Z sort_keysÚindentN)ÚprintÚjsonÚdumpsr" r r r r Úmainq s r( Ú__main__)Ú__doc__Z __future__r r&