Skip to content

Commit

Permalink
pythongh-119132: Update sys.version to identify free-threaded or not. (
Browse files Browse the repository at this point in the history
…pythongh-119134)

(cherry picked from commit c141d43)

Co-authored-by: Donghee Na <donghee.na@python.org>
  • Loading branch information
corona10 authored and miss-islington committed May 18, 2024
1 parent 641e59d commit 82a9119
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
24 changes: 15 additions & 9 deletions Lib/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -1153,17 +1153,16 @@ def _sys_version(sys_version=None):
if result is not None:
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'):
# 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'
match = sys_version_parser.match(sys_version)
match = jython_sys_version_parser.match(sys_version)
if match is None:
raise ValueError(
'failed to parse Jython sys.version: %s' %
Expand All @@ -1190,7 +1189,14 @@ def _sys_version(sys_version=None):

else:
# 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:
raise ValueError(
'failed to parse CPython sys.version: %s' %
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Update :data:`sys.version` to identify whether the build is default build or
free-threading build. Patch By Donghee Na.
9 changes: 7 additions & 2 deletions Python/getversion.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,20 @@
#include "patchlevel.h"

static int initialized = 0;
static char version[250];
static char version[300];

void _Py_InitVersion(void)
{
if (initialized) {
return;
}
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());
}

Expand Down

0 comments on commit 82a9119

Please sign in to comment.