PEP 739: add language.version_info and libpython.dynamic_stableabi

This commit is contained in:
Filipe Laíns 🇵🇸 2024-11-05 04:15:22 +00:00 committed by GitHub
parent cb6e37ca80
commit d24411ff57
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 151 additions and 3 deletions

View File

@ -174,6 +174,82 @@ below, which is rendered in an human-readable format here.
* - Required * - Required
- **True** - **True**
``language.version_info``
~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:widths: 25 75
* - Type
- ``object``
* - Description
- Object in the format of :py:data:`sys.version_info`.
This section SHOULD be equivalent to
:py:data:`sys.version_info`.
* - Examples
- - ``{'major': 3, 'minor': 14, 'micro': 1, 'releaselevel': 'final', 'serial': 0}``
- etc.
* - Required
- **False**
* - Additional properties
- **Not allowed**
``language.version_info.major``
+++++++++++++++++++++++++++++++
.. list-table::
:widths: 25 75
* - Type
- ``number``
* - Required
- **True**
``language.version_info.minor``
+++++++++++++++++++++++++++++++
.. list-table::
:widths: 25 75
* - Type
- ``number``
* - Required
- **True**
``language.version_info.micro``
+++++++++++++++++++++++++++++++
.. list-table::
:widths: 25 75
* - Type
- ``number``
* - Required
- **True**
``language.version_info.releaselevel``
++++++++++++++++++++++++++++++++++++++
.. list-table::
:widths: 25 75
* - Type
- ``string`` (enum — ``alpha``, ``beta``, ``candidate``, ``final``)
* - Required
- **True**
``language.version_info.serial``
++++++++++++++++++++++++++++++++
.. list-table::
:widths: 25 75
* - Type
- ``number``
* - Required
- **True**
``implementation`` ``implementation``
------------------ ------------------
@ -222,7 +298,7 @@ below, which is rendered in an human-readable format here.
- Object in the format of :py:data:`sys.version_info`, containing - Object in the format of :py:data:`sys.version_info`, containing
the implementation version. the implementation version.
* - Examples * - Examples
- - ``{'major': 3, 'minor': 13, 'micro': 1, 'releaselevel': 'final', 'serial': 0}`` - - ``{'major': 3, 'minor': 14, 'micro': 1, 'releaselevel': 'final', 'serial': 0}``
- ``{'major': 7, 'minor': 3, 'micro': 16, 'releaselevel': 'final', 'serial': 0}`` - ``{'major': 7, 'minor': 3, 'micro': 16, 'releaselevel': 'final', 'serial': 0}``
- etc. - etc.
* - Required * - Required
@ -463,6 +539,29 @@ below, which is rendered in an human-readable format here.
* - Required * - Required
- **False** - **False**
``libpython.dynamic_stableabi``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:widths: 25 75
* - Type
- ``string``
* - Description
- The path to the dynamic ``libpython`` library for the stable
ABI. Either an absolute path, or a relative path to the path
defined in the ``base_prefix`` key.
This field MUST be present if the Python installation provides a
dynamic ``libpython`` library, otherwise this entry will be
missing.
* - Examples
- - ``/usr/lib/libpython3.so``
- ``lib/libpython3.so``
- etc.
* - Required
- **False**
``libpython.static`` ``libpython.static``
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~

View File

@ -3,7 +3,14 @@
"base_prefix": "/usr", "base_prefix": "/usr",
"platform": "linux-x86_64", "platform": "linux-x86_64",
"language": { "language": {
"version": "3.14" "version": "3.14",
"version_info": {
"major": 3,
"minor": 14,
"micro": 0,
"releaselevel": "alpha",
"serial": 0
}
}, },
"implementation": { "implementation": {
"name": "cpython", "name": "cpython",
@ -35,6 +42,7 @@
}, },
"libpython": { "libpython": {
"dynamic": "/usr/lib/libpython3.14.so.1.0", "dynamic": "/usr/lib/libpython3.14.so.1.0",
"dynamic_stableabi": "/usr/lib/libpython3.so",
"static": "/usr/lib/python3.14/config-3.14-x86_64-linux-gnu/libpython3.14.a", "static": "/usr/lib/python3.14/config-3.14-x86_64-linux-gnu/libpython3.14.a",
"link_to_libpython": true "link_to_libpython": true
}, },

View File

@ -43,6 +43,39 @@
"type": "string", "type": "string",
"description": "String representation the Python language version — a version string consisting only of the *major* and *minor* components.\n\nThis field SHOULD be equivalent to ``sysconfig.get_python_version()``.", "description": "String representation the Python language version — a version string consisting only of the *major* and *minor* components.\n\nThis field SHOULD be equivalent to ``sysconfig.get_python_version()``.",
"examples": ["3.14"] "examples": ["3.14"]
},
"version_info": {
"type": "object",
"description": "Object in the format of :py:data:`sys.version_info`.\n\nThis section SHOULD be equivalent to :py:data:`sys.version_info`.",
"required": ["major", "minor", "micro", "releaselevel", "serial"],
"additionalProperties": false,
"examples": [
{
"major": 3,
"minor": 14,
"micro": 1,
"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"
}
}
} }
} }
}, },
@ -70,7 +103,7 @@
"examples": [ "examples": [
{ {
"major": 3, "major": 3,
"minor": 13, "minor": 14,
"micro": 1, "micro": 1,
"releaselevel": "final", "releaselevel": "final",
"serial": 0 "serial": 0
@ -181,6 +214,14 @@
"lib/libpython3.14.so.1.0" "lib/libpython3.14.so.1.0"
] ]
}, },
"dynamic_stableabi": {
"type": "string",
"description": "The path to the dynamic ``libpython`` library for the stable ABI. Either an absolute path, or a relative path to the path defined in the ``base_prefix`` key.\n\nThis field MUST be present if the Python installation provides a dynamic ``libpython`` library, otherwise this entry will be missing.",
"examples": [
"/usr/lib/libpython3.so",
"lib/libpython3.so"
]
},
"static": { "static": {
"type": "string", "type": "string",
"description": "The path to the static ``libpython`` library. Either an absolute path, or a relative path to the path defined in the ``base_prefix`` key.\n\nThis field MUST be present if the Python installation provides a static ``libpython`` library, otherwise this entry will be missing.", "description": "The path to the static ``libpython`` library. Either an absolute path, or a relative path to the path defined in the ``base_prefix`` key.\n\nThis field MUST be present if the Python installation provides a static ``libpython`` library, otherwise this entry will be missing.",