mirror of https://github.com/python/cpython
gh-119132: Update sys.version to identify free-threaded or not. (gh-119134)
This commit is contained in:
parent
691429702f
commit
c141d43937
|
@ -1153,17 +1153,16 @@ def _sys_version(sys_version=None):
|
||||||
if result is not None:
|
if result is not None:
|
||||||
return result
|
return result
|
||||||
|
|
||||||
sys_version_parser = re.compile(
|
|
||||||
r'([\w.+]+)\s*' # "version<space>"
|
|
||||||
r'\(#?([^,]+)' # "(#buildno"
|
|
||||||
r'(?:,\s*([\w ]*)' # ", builddate"
|
|
||||||
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
|
|
||||||
r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"
|
|
||||||
|
|
||||||
if sys.platform.startswith('java'):
|
if sys.platform.startswith('java'):
|
||||||
# Jython
|
# Jython
|
||||||
|
jython_sys_version_parser = re.compile(
|
||||||
|
r'([\w.+]+)\s*' # "version<space>"
|
||||||
|
r'\(#?([^,]+)' # "(#buildno"
|
||||||
|
r'(?:,\s*([\w ]*)' # ", builddate"
|
||||||
|
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
|
||||||
|
r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"
|
||||||
name = 'Jython'
|
name = 'Jython'
|
||||||
match = sys_version_parser.match(sys_version)
|
match = jython_sys_version_parser.match(sys_version)
|
||||||
if match is None:
|
if match is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'failed to parse Jython sys.version: %s' %
|
'failed to parse Jython sys.version: %s' %
|
||||||
|
@ -1190,7 +1189,14 @@ def _sys_version(sys_version=None):
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# CPython
|
# CPython
|
||||||
match = sys_version_parser.match(sys_version)
|
cpython_sys_version_parser = re.compile(
|
||||||
|
r'([\w.+]+)\s*' # "version<space>"
|
||||||
|
r'(?:experimental free-threading build\s+)?' # "free-threading-build<space>"
|
||||||
|
r'\(#?([^,]+)' # "(#buildno"
|
||||||
|
r'(?:,\s*([\w ]*)' # ", builddate"
|
||||||
|
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
|
||||||
|
r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"
|
||||||
|
match = cpython_sys_version_parser.match(sys_version)
|
||||||
if match is None:
|
if match is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'failed to parse CPython sys.version: %s' %
|
'failed to parse CPython sys.version: %s' %
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Update :data:`sys.version` to identify whether the build is default build or
|
||||||
|
free-threading build. Patch By Donghee Na.
|
|
@ -6,7 +6,7 @@
|
||||||
#include "patchlevel.h"
|
#include "patchlevel.h"
|
||||||
|
|
||||||
static int initialized = 0;
|
static int initialized = 0;
|
||||||
static char version[250];
|
static char version[300];
|
||||||
|
|
||||||
void _Py_InitVersion(void)
|
void _Py_InitVersion(void)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,12 @@ void _Py_InitVersion(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.80s",
|
#ifdef Py_GIL_DISABLED
|
||||||
|
const char *buildinfo_format = "%.80s experimental free-threading build (%.80s) %.80s";
|
||||||
|
#else
|
||||||
|
const char *buildinfo_format = "%.80s (%.80s) %.80s";
|
||||||
|
#endif
|
||||||
|
PyOS_snprintf(version, sizeof(version), buildinfo_format,
|
||||||
PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
|
PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue