1# -*- coding: utf-8 -*-
2import json
3import os
4import platform
5import sys
6
7
8def format_full_version(info):
9    version = "{0.major}.{0.minor}.{0.micro}".format(info)
10    kind = info.releaselevel
11    if kind != "final":
12        version += kind[0] + str(info.serial)
13    return version
14
15
16# Support for 508's implementation_version.
17if hasattr(sys, "implementation"):
18    implementation_version = format_full_version(sys.implementation.version)
19else:
20    implementation_version = "0"
21# Default to cpython for 2.7.
22if hasattr(sys, "implementation"):
23    implementation_name = sys.implementation.name
24else:
25    implementation_name = "cpython"
26lookup = {
27    "os_name": os.name,
28    "sys_platform": sys.platform,
29    "platform_machine": platform.machine(),
30    "platform_python_implementation": platform.python_implementation(),
31    "platform_release": platform.release(),
32    "platform_system": platform.system(),
33    "platform_version": platform.version(),
34    "python_version": ".".join(platform.python_version().split(".")[:2]),
35    "python_full_version": platform.python_version(),
36    "implementation_name": implementation_name,
37    "implementation_version": implementation_version,
38}
39if __name__ == "__main__":
40    print(json.dumps(lookup))
41