U
    (q\                     @   s   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ zddlmZ W n  ek
r   dZdZdZY nX ddlZddlZdd Zd	d
 Zdd Zedkre  dS )z'Module containing bug report helper(s).    )print_functionN   )__version__)	pyopensslc                  C   s   t  } | dkrt  }nj| dkr\dtjjtjjtjjf }tjjdkrd	|tjjg}n(| dkrnt  }n| dkrt  }nd}| |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.
    ZCPythonZPyPyz%s.%s.%sfinal ZJythonZ
IronPythonUnknown)nameversion)
platformZpython_implementationZpython_versionsysZpypy_version_infomajorminormicroreleaseleveljoin)implementationZimplementation_version r   //usr/lib/python3/dist-packages/requests/help.py_implementation   s&    
 

r   c            	      C   s   zt  t  d} W n tk
r4   ddd} Y nX t }dtji}dtji}ddd}trrtjdtj	j
 d}dttddi}dttddi}tj
}d|dk	rd| ndi}| ||tdk	|||||dtid	
S )
z&Generate information for a bug report.)systemreleaser   r
   Nr   )r
   Zopenssl_versionz%xr   )
r   r   
system_sslZusing_pyopensslZ	pyOpenSSLurllib3chardetcryptographyidnaZrequests)r   r   r   IOErrorr   r   r   r   OpenSSLZSSLZOPENSSL_VERSION_NUMBERgetattrr   r   sslr   requests_version)	Zplatform_infoZimplementation_infoZurllib3_infoZchardet_infoZpyopenssl_infoZcryptography_infoZ	idna_infor   Zsystem_ssl_infor   r   r   info;   sR    



 
 
  r"   c                   C   s   t tjt ddd dS )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&   r   r   r    r   r   r   r   r   r!   Zurllib3.contribr   ImportErrorr   r   r   r"   r(   __name__r   r   r   r   <module>   s,   
!6