a Re @ s d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlm Z ddl mZ dZ zddlmZ W n ey~ dZY n0 zdd lmZ W n ey dZdZdZY n0 ddlZddlZd d Zdd Zdd Zedkre dS )z'Module containing bug report helper(s). )print_functionN)idna)urllib3 )__version__)chardet) pyopensslc C s t } | dkrt }nj| dkr\dtjjtjjtjjf }tjjdkrd |tjjg}n(| dkrnt }n| dkrt }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. CPythonPyPyz%s.%s.%sfinal Jython IronPythonUnknown)nameversion) platformpython_implementationpython_versionsyspypy_version_infomajorminormicroreleaseleveljoin)implementationimplementation_version r /builddir/build/BUILDROOT/alt-python39-pip-21.3.1-2.el8.x86_64/opt/alt/python39/lib/python3.9/site-packages/pip/_vendor/requests/help.py_implementation s$ r c C s zt t d} W n ty2 ddd} Y n0 t }dtji}ddi}ddi}trbdtji}trpdtji}ddd}t rt jdt j j d}dtt ddi}dttddi}tj}d|durd| ndi} | || tdutdu ||||||dtid S ) z&Generate information for a bug report.)systemreleaser r Nr )r openssl_versionz%xr )r r system_sslZusing_pyopensslZusing_charset_normalizerZ pyOpenSSLr r charset_normalizercryptographyr requests)r r! r" IOErrorr r r r% r OpenSSLZSSLOPENSSL_VERSION_NUMBERgetattrr&