forked from pool/python314
- Update to the second development version of 3.14.0a2.
- Tools/Demos
- gh-126807: Fix extraction warnings in pygettext.py caused
by mistaking function definitions for function calls.
- gh-126167: The iOS testbed was modified so that it can be
used by third-party projects for testing purposes.
- Tests
- gh-126909: Fix test_os extended attribute tests to work on
filesystems with 1 KiB xattr size limit.
- gh-125730: Change make test to not run GUI tests by
default. Use make ci to run tests with GUI tests instead.
- gh-124295: Add translation tests to the argparse module.
- Security
- gh-126623: Upgrade libexpat to 2.6.4
- Library
- gh-85957: Add missing MIME types for images with RFCs: emf,
fits, g3fax, jp2, jpm, jpx, t38, tiff-fx and wmf. Patch by
Hugo van Kemenade.
- gh-126920: Fix the prefix and exec_prefix keys from
sysconfig.get_config_vars() incorrectly having the same
value as sys.base_prefix and sys.base_exec_prefix,
respectively, inside virtual environments. They now
accurately reflect sys.prefix and sys.exec_prefix.
- gh-67877: Fix memory leaks when regular expression matching
terminates abruptly, either because of a signal or because
memory allocation fails.
- gh-125063: marshal now supports slice objects. The marshal
format version was increased to 5.
- gh-126789: Fixed the values of sysconfig.get_config_vars(),
sysconfig.get_paths(), and their siblings when the site
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python314?expand=0&rev=23
This commit is contained in:
@@ -24,15 +24,13 @@ Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
|||||||
Co-authored-by: Michal Cyprian <m.cyprian@gmail.com>
|
Co-authored-by: Michal Cyprian <m.cyprian@gmail.com>
|
||||||
Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
||||||
---
|
---
|
||||||
Lib/sysconfig/__init__.py | 51 ++++++++++++++++++++++++++++++++++++++++++++-
|
Lib/sysconfig/__init__.py | 49 ++++++++++++++++++++++++++++++++++++++++++++-
|
||||||
Lib/test/test_sysconfig.py | 17 +++++++++++++--
|
Lib/test/test_sysconfig.py | 17 +++++++++++++--
|
||||||
2 files changed, 65 insertions(+), 3 deletions(-)
|
2 files changed, 63 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
Index: Python-3.14.0/Lib/sysconfig/__init__.py
|
--- a/Lib/sysconfig/__init__.py
|
||||||
===================================================================
|
+++ b/Lib/sysconfig/__init__.py
|
||||||
--- Python-3.14.0.orig/Lib/sysconfig/__init__.py 2025-10-08 11:27:28.335887277 +0200
|
@@ -106,6 +106,11 @@ if os.name == 'nt':
|
||||||
+++ Python-3.14.0/Lib/sysconfig/__init__.py 2025-10-08 11:28:00.652215416 +0200
|
|
||||||
@@ -106,6 +106,11 @@
|
|
||||||
else:
|
else:
|
||||||
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
|
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
|
||||||
|
|
||||||
@@ -64,16 +62,7 @@ Index: Python-3.14.0/Lib/sysconfig/__init__.py
|
|||||||
_SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include',
|
_SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include',
|
||||||
'scripts', 'data')
|
'scripts', 'data')
|
||||||
|
|
||||||
_PY_VERSION = sys.version.split()[0]
|
@@ -259,11 +277,40 @@ def _extend_dict(target_dict, other_dict
|
||||||
_PY_VERSION_SHORT = f'{sys.version_info[0]}.{sys.version_info[1]}'
|
|
||||||
_PY_VERSION_SHORT_NO_DOT = f'{sys.version_info[0]}{sys.version_info[1]}'
|
|
||||||
+_PREFIX = os.path.normpath(sys.prefix)
|
|
||||||
_BASE_PREFIX = os.path.normpath(sys.base_prefix)
|
|
||||||
+_EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
|
|
||||||
_BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
|
|
||||||
# Mutex guarding initialization of _CONFIG_VARS.
|
|
||||||
_CONFIG_VARS_LOCK = threading.RLock()
|
|
||||||
@@ -268,11 +288,40 @@
|
|
||||||
target_dict[key] = value
|
target_dict[key] = value
|
||||||
|
|
||||||
|
|
||||||
@@ -115,11 +104,9 @@ Index: Python-3.14.0/Lib/sysconfig/__init__.py
|
|||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
# On Windows we want to substitute 'lib' for schemes rather
|
# On Windows we want to substitute 'lib' for schemes rather
|
||||||
# than the native value (without modifying vars, in case it
|
# than the native value (without modifying vars, in case it
|
||||||
Index: Python-3.14.0/Lib/test/test_sysconfig.py
|
--- a/Lib/test/test_sysconfig.py
|
||||||
===================================================================
|
+++ b/Lib/test/test_sysconfig.py
|
||||||
--- Python-3.14.0.orig/Lib/test/test_sysconfig.py 2025-10-08 11:27:30.181651013 +0200
|
@@ -130,8 +130,19 @@ class TestSysConfig(unittest.TestCase):
|
||||||
+++ Python-3.14.0/Lib/test/test_sysconfig.py 2025-10-08 11:28:00.653226898 +0200
|
|
||||||
@@ -132,8 +132,19 @@
|
|
||||||
for scheme in _INSTALL_SCHEMES:
|
for scheme in _INSTALL_SCHEMES:
|
||||||
for name in _INSTALL_SCHEMES[scheme]:
|
for name in _INSTALL_SCHEMES[scheme]:
|
||||||
expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars)
|
expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars)
|
||||||
@@ -140,7 +127,7 @@ Index: Python-3.14.0/Lib/test/test_sysconfig.py
|
|||||||
os.path.normpath(expected),
|
os.path.normpath(expected),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -395,7 +406,7 @@
|
@@ -386,7 +397,7 @@ class TestSysConfig(unittest.TestCase):
|
||||||
self.assertTrue(os.path.isfile(config_h), config_h)
|
self.assertTrue(os.path.isfile(config_h), config_h)
|
||||||
|
|
||||||
def test_get_scheme_names(self):
|
def test_get_scheme_names(self):
|
||||||
@@ -149,7 +136,7 @@ Index: Python-3.14.0/Lib/test/test_sysconfig.py
|
|||||||
if HAS_USER_BASE:
|
if HAS_USER_BASE:
|
||||||
wanted.extend(['nt_user', 'osx_framework_user', 'posix_user'])
|
wanted.extend(['nt_user', 'osx_framework_user', 'posix_user'])
|
||||||
self.assertEqual(get_scheme_names(), tuple(sorted(wanted)))
|
self.assertEqual(get_scheme_names(), tuple(sorted(wanted)))
|
||||||
@@ -407,6 +418,8 @@
|
@@ -398,6 +409,8 @@ class TestSysConfig(unittest.TestCase):
|
||||||
cmd = "-c", "import sysconfig; print(sysconfig.get_platform())"
|
cmd = "-c", "import sysconfig; print(sysconfig.get_platform())"
|
||||||
self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
|
self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
|
||||||
|
|
||||||
|
|||||||
BIN
Python-3.14.0a2.tar.xz
(Stored with Git LFS)
Normal file
BIN
Python-3.14.0a2.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
1
Python-3.14.0a2.tar.xz.sigstore
Normal file
1
Python-3.14.0a2.tar.xz.sigstore
Normal file
File diff suppressed because one or more lines are too long
@@ -145,11 +145,9 @@ Index: Python-3.14.0rc1/Lib/test/test_ensurepip.py
|
|||||||
def test_bootstrapping_with_user(self):
|
def test_bootstrapping_with_user(self):
|
||||||
ensurepip.bootstrap(user=True)
|
ensurepip.bootstrap(user=True)
|
||||||
|
|
||||||
Index: Python-3.14.0rc1/Makefile.pre.in
|
--- a/Makefile.pre.in
|
||||||
===================================================================
|
+++ b/Makefile.pre.in
|
||||||
--- Python-3.14.0rc1.orig/Makefile.pre.in 2025-07-23 10:10:27.325708066 +0200
|
@@ -2228,7 +2228,7 @@ install: @FRAMEWORKINSTALLFIRST@ @INSTAL
|
||||||
+++ Python-3.14.0rc1/Makefile.pre.in 2025-07-23 10:10:31.691716104 +0200
|
|
||||||
@@ -2371,7 +2371,7 @@
|
|
||||||
install|*) ensurepip="" ;; \
|
install|*) ensurepip="" ;; \
|
||||||
esac; \
|
esac; \
|
||||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||||
@@ -158,7 +156,7 @@ Index: Python-3.14.0rc1/Makefile.pre.in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
.PHONY: altinstall
|
.PHONY: altinstall
|
||||||
@@ -2382,7 +2382,7 @@
|
@@ -2239,7 +2239,7 @@ altinstall: commoninstall
|
||||||
install|*) ensurepip="--altinstall" ;; \
|
install|*) ensurepip="--altinstall" ;; \
|
||||||
esac; \
|
esac; \
|
||||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||||
|
|||||||
@@ -2,11 +2,9 @@
|
|||||||
Lib/test/test_compile.py | 5 +++++
|
Lib/test/test_compile.py | 5 +++++
|
||||||
1 file changed, 5 insertions(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
Index: Python-3.14.0b3/Lib/test/test_compile.py
|
--- a/Lib/test/test_compile.py
|
||||||
===================================================================
|
+++ b/Lib/test/test_compile.py
|
||||||
--- Python-3.14.0b3.orig/Lib/test/test_compile.py 2025-06-22 00:32:01.975698954 +0200
|
@@ -25,6 +25,9 @@ from test.support import (script_helper,
|
||||||
+++ Python-3.14.0b3/Lib/test/test_compile.py 2025-06-22 00:32:07.740981155 +0200
|
|
||||||
@@ -24,6 +24,9 @@
|
|
||||||
from test.support.bytecode_helper import instructions_with_positions
|
from test.support.bytecode_helper import instructions_with_positions
|
||||||
from test.support.os_helper import FakePath
|
from test.support.os_helper import FakePath
|
||||||
|
|
||||||
@@ -16,15 +14,16 @@ Index: Python-3.14.0b3/Lib/test/test_compile.py
|
|||||||
class TestSpecifics(unittest.TestCase):
|
class TestSpecifics(unittest.TestCase):
|
||||||
|
|
||||||
def compile_single(self, source):
|
def compile_single(self, source):
|
||||||
@@ -120,6 +123,7 @@
|
@@ -121,6 +124,7 @@ class TestSpecifics(unittest.TestCase):
|
||||||
self.assertEqual(d['z'], 12)
|
self.assertEqual(d['z'], 12)
|
||||||
|
|
||||||
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
||||||
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
|
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
|
||||||
@support.skip_emscripten_stack_overflow()
|
@support.skip_emscripten_stack_overflow()
|
||||||
def test_extended_arg(self):
|
def test_extended_arg(self):
|
||||||
repeat = 100
|
repeat = int(get_c_recursion_limit() * 0.9)
|
||||||
@@ -709,6 +713,7 @@
|
longexpr = 'x = x or ' + '-x' * repeat
|
||||||
|
@@ -709,6 +713,7 @@ class TestSpecifics(unittest.TestCase):
|
||||||
|
|
||||||
@support.cpython_only
|
@support.cpython_only
|
||||||
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
||||||
|
|||||||
@@ -2,11 +2,16 @@
|
|||||||
Makefile.pre.in | 5 +++++
|
Makefile.pre.in | 5 +++++
|
||||||
1 file changed, 5 insertions(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
Index: Python-3.14.0rc1/Makefile.pre.in
|
--- a/Makefile.pre.in
|
||||||
===================================================================
|
+++ b/Makefile.pre.in
|
||||||
--- Python-3.14.0rc1.orig/Makefile.pre.in 2025-07-22 18:42:44.000000000 +0200
|
@@ -1743,11 +1743,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
|
||||||
+++ Python-3.14.0rc1/Makefile.pre.in 2025-07-23 10:10:27.325708066 +0200
|
$(DTRACE_OBJS) \
|
||||||
@@ -1910,6 +1910,11 @@
|
$(srcdir)/Modules/getbuildinfo.c
|
||||||
|
$(CC) -c $(PY_CORE_CFLAGS) \
|
||||||
|
+ -DDATE="\"`date -u -r Makefile.pre.in +"%b %d %Y"`\"" \
|
||||||
|
+ -DTIME="\"`date -u -r Makefile.pre.in +"%T"`\"" \
|
||||||
|
-DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
|
||||||
|
-DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
|
||||||
-DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
|
-DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
|
||||||
-o $@ $(srcdir)/Modules/getbuildinfo.c
|
-o $@ $(srcdir)/Modules/getbuildinfo.c
|
||||||
|
|
||||||
|
|||||||
15
python-3.3.0b1-test-posix_fadvise.patch
Normal file
15
python-3.3.0b1-test-posix_fadvise.patch
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
Lib/test/test_posix.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/Lib/test/test_posix.py
|
||||||
|
+++ b/Lib/test/test_posix.py
|
||||||
|
@@ -437,7 +437,7 @@ class PosixTester(unittest.TestCase):
|
||||||
|
def test_posix_fadvise(self):
|
||||||
|
fd = os.open(os_helper.TESTFN, os.O_RDONLY)
|
||||||
|
try:
|
||||||
|
- posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_WILLNEED)
|
||||||
|
+ posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_RANDOM)
|
||||||
|
finally:
|
||||||
|
os.close(fd)
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
# _md5.cpython-38m-x86_64-linux-gnu.so
|
# _md5.cpython-38m-x86_64-linux-gnu.so
|
||||||
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
||||||
Name: %{python_pkg_name}%{psuffix}
|
Name: %{python_pkg_name}%{psuffix}
|
||||||
Version: 3.14.0
|
Version: 3.14.0~a2
|
||||||
%define tarversion %{version}
|
%define tarversion %{version}
|
||||||
%define tarname Python-%{tarversion}
|
%define tarname Python-%{tarversion}
|
||||||
Release: 0
|
Release: 0
|
||||||
|
|||||||
@@ -2,20 +2,17 @@
|
|||||||
Lib/test/test_subprocess.py | 6 +++++-
|
Lib/test/test_subprocess.py | 6 +++++-
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
Index: Python-3.14.0b1/Lib/test/test_subprocess.py
|
--- a/Lib/test/test_subprocess.py
|
||||||
===================================================================
|
+++ b/Lib/test/test_subprocess.py
|
||||||
--- Python-3.14.0b1.orig/Lib/test/test_subprocess.py 2025-05-09 10:36:08.150615546 +0200
|
@@ -281,7 +281,8 @@ class ProcessTestCase(BaseTestCase):
|
||||||
+++ Python-3.14.0b1/Lib/test/test_subprocess.py 2025-05-09 10:36:21.907614565 +0200
|
"time.sleep(3600)"],
|
||||||
@@ -160,7 +160,11 @@
|
# Some heavily loaded buildbots (sparc Debian 3.x) require
|
||||||
# child.
|
# this much time to start and print.
|
||||||
self.assertRaises(subprocess.TimeoutExpired, subprocess.call,
|
- timeout=3)
|
||||||
[sys.executable, "-c", "while True: pass"],
|
+ # OBS might require even more
|
||||||
- timeout=0.1)
|
+ timeout=10)
|
||||||
+ # Some heavily loaded buildbots (sparc Debian 3.x) require
|
self.fail("Expected TimeoutExpired.")
|
||||||
+ # this much time to start and print.
|
self.assertEqual(c.exception.output, b'BDFL')
|
||||||
+ # timeout=3)
|
|
||||||
+ # OBS might require even more
|
|
||||||
+ timeout=10)
|
|
||||||
|
|
||||||
def test_timeout_exception(self):
|
def test_timeout_exception(self):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user