123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import json
- import platform
- import sys
- from . import __version__ as pyjwt_version
- try:
- import cryptography
- except ModuleNotFoundError:
- cryptography = None # type: ignore
- def info():
- """
- Generate information for a bug report.
- Based on the requests package help utility module.
- """
- try:
- platform_info = {
- "system": platform.system(),
- "release": platform.release(),
- }
- except OSError:
- platform_info = {"system": "Unknown", "release": "Unknown"}
- implementation = platform.python_implementation()
- if implementation == "CPython":
- implementation_version = platform.python_version()
- elif implementation == "PyPy":
- implementation_version = (
- f"{sys.pypy_version_info.major}."
- f"{sys.pypy_version_info.minor}."
- f"{sys.pypy_version_info.micro}"
- )
- if sys.pypy_version_info.releaselevel != "final":
- implementation_version = "".join(
- [implementation_version, sys.pypy_version_info.releaselevel]
- )
- else:
- implementation_version = "Unknown"
- return {
- "platform": platform_info,
- "implementation": {
- "name": implementation,
- "version": implementation_version,
- },
- "cryptography": {"version": getattr(cryptography, "__version__", "")},
- "pyjwt": {"version": pyjwt_version},
- }
- def main():
- """Pretty-print the bug information as JSON."""
- print(json.dumps(info(), sort_keys=True, indent=2))
- if __name__ == "__main__":
- main()
|