U
    kd#                     @   s   d 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
Z
W n ek
rd   dZ
Y nX zddlZW n ek
r   dZY nX 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).    N   )__version__)	pyopensslc                  C   s   t  } | dkrt  }nj| dkr\dtjjtjjtjj}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 3.10.3 it will return
    {'name': 'CPython', 'version': '3.10.3'}.

    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{}.{}.{}final ZJythonZ
IronPythonUnknown)nameversion)platformZpython_implementationZpython_versionformatsysZpypy_version_infomajorminormicroreleaseleveljoin)implementationZimplementation_version r   ,lib/python3.8/site-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di}ddi}trddtji}trrdtji}ddd}t	rt	jt	j
jdd}dttddi}dttddi}tj}d|dk	r|dndi}	| ||	tdk	tdk||||||dtid	S )
z&Generate information for a bug report.)systemreleaser   r	   Nr   )r	   Zopenssl_versionxr   )r
   r   
system_sslZusing_pyopensslZusing_charset_normalizerZ	pyOpenSSLurllib3chardetcharset_normalizercryptographyidnaZrequests)r
   r   r   OSErrorr   r   r   r   r   OpenSSLZSSLZOPENSSL_VERSION_NUMBERgetattrr   r   sslr   requests_version)
Zplatform_infoZimplementation_infoZurllib3_infoZcharset_normalizer_infoZchardet_infoZpyopenssl_infoZcryptography_infoZ	idna_infor   Zsystem_ssl_infor   r   r   infoE   s\    




 
 
 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   main   s    r*   __main__)__doc__r(   r
   r"   r   r   r   r   r   r#   r   ImportErrorr   Zurllib3.contribr   r    r   r   r$   r*   __name__r   r   r   r   <module>   s8   


#;