python-peps/peps/pep-0739/python-build-info-v1.schema...

229 lines
7.9 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/python/peps/blob/main/peps/pep-0739/python-build-info-v1.schema.json",
"type": "object",
"title": "Static description file for the build details of Python installations",
"required": [
"schema_version",
"platform",
"language",
"implementation"
],
"additionalProperties": false,
"properties": {
"schema_version": {
"type": "string",
"description": "Schema version. This is a constant value and MUST be ``1``. Future iterations of this schema MUST update this value.",
"const": "1"
},
"base_prefix": {
"type": "string",
"description": "Base prefix of the Python installation.\n\nEither an absolute path, or a relative path to directory where this file is contained.",
"examples": [
"/usr",
"../.."
]
},
"platform": {
"type": "string",
"description": "System platform string.",
"examples": [
"linux-x86_64"
]
},
"language": {
"type": "object",
"description": "Object containing details related to the Python language specification.\n\nIn addition to the required keys, implementations may choose to include extra keys with implementation-specific details.",
"required": [
"version"
],
"additionalProperties": false,
"properties": {
"version": {
"type": "string",
"description": "String representation the Python language version — a version string consisting only of the *major* and *minor* components.",
"examples": ["3.13"]
}
}
},
"implementation": {
"type": "object",
"description": "Object containing details related to Python implementation.\n\nThis section SHOULD be equivalent to :py:data:`sys.implementation`, but only the ``name`` and ``version`` keys are actually required to be present.",
"required": [
"name",
"version"
],
"additionalProperties": true,
"properties": {
"name": {
"type": "string",
"description": "Lower-case name of the Python implementation.",
"examples": ["cpython", "pypy"]
},
"version": {
"type": "object",
"description": "Object in the format of :py:data:`sys.version_info`, containing the implementation version.",
"required": ["major", "minor", "micro", "releaselevel", "serial"],
"additionalProperties": false,
"examples": [
{
"major": 3,
"minor": 13,
"micro": 1,
"releaselevel": "final",
"serial": 0
},
{
"major": 7,
"minor": 3,
"micro": 16,
"releaselevel": "final",
"serial": 0
}
],
"properties": {
"major": {
"type": "number"
},
"minor": {
"type": "number"
},
"micro": {
"type": "number"
},
"releaselevel": {
"type": "string",
"enum": ["alpha", "beta", "candidate", "final"]
},
"serial": {
"type": "number"
}
}
}
}
},
"interpreter": {
"type": "object",
"description": "Object containing details Python interpreter.\n\nIf the Python installation does not provide an interpreter, this section will be missing.",
"required": [
"path"
],
"additionalProperties": false,
"properties": {
"path": {
"type": "string",
"description": "The path to the Python interprer. Either an absolute path, or a relative path to the path defined in the ``base`` key.",
"examples": [
"/usr/bin/python",
"bin/python"
]
}
}
},
"abi": {
"type": "object",
"description": "Object containing details related to ABI.",
"required": [
"flags",
"extension_suffix"
],
"additionalProperties": false,
"properties": {
"flags": {
"type": "array",
"description": "Build configuration flags, used to calculate the extension suffix.\n\nThe flags MUST be defined in the order they appear on the extension suffix.",
"additionalProperties": true,
"examples": [
["d", "t"]
]
},
"extension_suffix": {
"type": "string",
"description": "Suffix used for extensions built against the current implementation version.",
"examples": [
".cpython-313-x86_64-linux-gnu.so"
]
},
"stable_abi_suffix": {
"type": "string",
"description": "Suffix used for extensions built against the stable ABI.",
"examples": [
".abi3.so"
]
}
}
},
"suffixes": {
"type": "object",
"description": "Valid module suffixes grouped by type.",
"examples": [
{
"source": [".py"],
"bytecode": [".pyc"],
"optimized_bytecode": [".pyc"],
"debug_bytecode": [".pyc"],
"extensions": [".cpython-313-x86_64-linux-gnu.so", ".abi3.so", ".so"]
}
]
},
"libpython": {
"type": "object",
"description": "Object containing details related to the ``libpython`` library.\n\nIf the Python installation does not provide a ``libpython`` library, this section will be missing.",
"additionalProperties": false,
"properties": {
"dynamic": {
"type": "string",
"description": "The path to the dynamic ``libpython`` library.\n\nEither an absolute path, or a relative path to the path defined in the ``base`` key.. If the Python installation does not provide a dynamic ``libpython`` library, this entry will be missing.",
"examples": [
"/usr/lib/libpython3.13.so.1.0",
"lib/libpython3.13.so.1.0"
]
},
"static": {
"type": "string",
"description": "The path to the static ``libpython`` library.\n\nEither an absolute path, or a relative path to the path defined in the ``base`` key.. If the Python installation does not provide a static ``libpython`` library, this entry will be missing.",
"examples": [
"/usr/lib/python3.13/config-3.13-x86_64-linux-gnu/libpython3.13.a",
"lib/python3.13/config-3.13-x86_64-linux-gnu/libpython3.13.a"
]
},
"link_to_libpython": {
"type": "boolean",
"description": "Should extensions built against a dynamic ``libpython`` link to it?"
}
}
},
"c_api": {
"type": "object",
"description": "Object containing details related to the Python C API, if available.\n\nIf the Python implementation does not provide a C API, this section will be missing.",
"required": [
"headers"
],
"additionalProperties": false,
"properties": {
"headers": {
"type": "string",
"description": "The path to the C API headers. Either an absolute path, or a relative path to the path defined in the ``base`` key..",
"examples": [
"/usr/include/python3.13",
"include/python3.13"
]
},
"pkgconfig_path": {
"type": "string",
"description": "The path to the pkg-config definition files. Either an absolute path, or a relative path to the path defined in the ``base`` key..",
"examples": [
"/usr/lib/pkgconfig",
"lib/pkgconfig"
]
}
}
},
"arbitrary_data": {
"type": "object",
"description": "Object containing extra arbitrary data.\n\nThis is meant to be used as an escape-hatch, to include any relevant data that is not covered by this specification.",
"additionalProperties": true
}
}
}