forked from pool/python312
Accepting request 1102750 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1102750 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python312?expand=0&rev=6
This commit is contained in:
commit
1ff7c3b41f
@ -29,10 +29,10 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
||||
Lib/test/test_sysconfig.py | 17 +++++++++++--
|
||||
3 files changed, 71 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: Python-3.12.0b1/Lib/site.py
|
||||
Index: Python-3.12.0rc1/Lib/site.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/site.py
|
||||
+++ Python-3.12.0b1/Lib/site.py
|
||||
--- Python-3.12.0rc1.orig/Lib/site.py
|
||||
+++ Python-3.12.0rc1/Lib/site.py
|
||||
@@ -377,8 +377,15 @@ def getsitepackages(prefixes=None):
|
||||
return sitepackages
|
||||
|
||||
@ -50,10 +50,10 @@ Index: Python-3.12.0b1/Lib/site.py
|
||||
for sitedir in getsitepackages(prefixes):
|
||||
if os.path.isdir(sitedir):
|
||||
addsitedir(sitedir, known_paths)
|
||||
Index: Python-3.12.0b1/Lib/sysconfig.py
|
||||
Index: Python-3.12.0rc1/Lib/sysconfig.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/sysconfig.py
|
||||
+++ Python-3.12.0b1/Lib/sysconfig.py
|
||||
--- Python-3.12.0rc1.orig/Lib/sysconfig.py
|
||||
+++ Python-3.12.0rc1/Lib/sysconfig.py
|
||||
@@ -104,6 +104,11 @@ if os.name == 'nt':
|
||||
else:
|
||||
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
|
||||
@ -128,10 +128,10 @@ Index: Python-3.12.0b1/Lib/sysconfig.py
|
||||
if os.name == 'nt':
|
||||
# On Windows we want to substitute 'lib' for schemes rather
|
||||
# than the native value (without modifying vars, in case it
|
||||
Index: Python-3.12.0b1/Lib/test/test_sysconfig.py
|
||||
Index: Python-3.12.0rc1/Lib/test/test_sysconfig.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/test/test_sysconfig.py
|
||||
+++ Python-3.12.0b1/Lib/test/test_sysconfig.py
|
||||
--- Python-3.12.0rc1.orig/Lib/test/test_sysconfig.py
|
||||
+++ Python-3.12.0rc1/Lib/test/test_sysconfig.py
|
||||
@@ -110,8 +110,19 @@ class TestSysConfig(unittest.TestCase):
|
||||
for scheme in _INSTALL_SCHEMES:
|
||||
for name in _INSTALL_SCHEMES[scheme]:
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f05710c36aee5850f5c2769be76b80bf212aec351438fdf8adc20c38c8361fac
|
||||
size 20244176
|
@ -1,18 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmStSfVfFIAAAAAALgAo
|
||||
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
|
||||
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
|
||||
YwW0RQ//cCsYuhgw+RUslhcDQSNDc+Fuhb0estm7MRzH7VnkUwrrKMTTedWxGp8z
|
||||
KrJmsH/PRL1c+AX9+1Hi9sr4enh9jgV1KQuqW7TfqS7w+qhlt9krdaDX7zdHqy2k
|
||||
K0KLua5bv62MBPF5hPM6cP71WJcOsZZLw7r2Cx6USapq6hnSuew7XpSB9zqyehLs
|
||||
bZOHIAlI1DK6sIdmO42fJr9AZWIO3Z5QhQLglMrHcn9LIp9P/gftVSLt2ZnPQ0qE
|
||||
2f8d+XyEP0OG+oErbu+aZxHBroVSTEqp85lEVee/Sr0r8+dOJzgF/vVnpHKzu54M
|
||||
csmRXVljhMm+Iy2rzIuSvI3YFqPL7PBUezRuGDeUDFwkapt+XsiO0eMddxX7W7U2
|
||||
isinSriLFmAKxHiIy76E8ELkJ/uUxNdN3Hgqey9g5VbfpEYUGSBT6wGoG3FQ3jHq
|
||||
gI0XqxSfTqVyM7XBlg2Uyf+3wv4Vhku/6xH3CTPEJYGqiR9ZobR1cv3MMAtRQodx
|
||||
5kD0Rhb9MF0Q/LEIAF0W99mJaAhn+wpf0bwP4/U+3LXmH5RsKoe8eGnyAGiejVn7
|
||||
RajZUhFRqsC2g+n9sjhXX+vNPcbl4OykTZat94Bfq5jBBRBlm0nx5Qf/bCFzmjzM
|
||||
v3s2FWCQ8eM0sgPQkSYn3Zal9pEG+iDXtz7ODrsl998RlkknjrA=
|
||||
=aiWo
|
||||
-----END PGP SIGNATURE-----
|
3
Python-3.12.0rc1.tar.xz
Normal file
3
Python-3.12.0rc1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bd88d516b51474d7facae3ed7ab6a421efb17e583c21c8a749470f293e2575fc
|
||||
size 20285264
|
18
Python-3.12.0rc1.tar.xz.asc
Normal file
18
Python-3.12.0rc1.tar.xz.asc
Normal file
@ -0,0 +1,18 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmTOQCpfFIAAAAAALgAo
|
||||
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
|
||||
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
|
||||
YwX5DxAAjL+OpYDuAssAXPIdLU4VlzR+whI1kCquPHIgBn8u+xWqgzVMwEyd8x2i
|
||||
OdvQj+206Hh2sspsrys+sBkyPqGzo/mjlRe18CQvHU8FrjPj8IsZgSU6/gpKcfZL
|
||||
ZJzUeG6jy6jy2LygM2cmgDEhr8kl6fNQ5hAV/jkpuzLZe0M4oEsKQRCQVC5D8rSE
|
||||
5NLV6ZUK8/MeFd6S3BXSsUrx1bgr0Pi2YDlfTAqB++BBWiQiLsclNpwvMHlcu1D4
|
||||
z3QM3GXBkUQrh2QAtRKomJdqDILdakIuJg+aKD+ZuRZxzNcdFBVH9PBbSpfObSJ9
|
||||
ohBkpVo+MpEDJNq64N9AjnH0xT/cpvGimmsoVZ+zMU26uDm4qyGoDfem2UNgHuaz
|
||||
4m+QmDoIUSYbhegsMXzcPRyGFKFb6fOCyWBQbb2YB6oo2vPVYNNpHFsMx21Gi43K
|
||||
54vk0eBYzVBChOsY+igEdFZMbwQ7PEkajGbgQ4FiXhGlA7otQp7mx/IxjVcT1SxA
|
||||
A07fXAFYF2aZkLlw4V09EeDdkrcO00pCGtTGXhfFCO0KsfyAWm3k8xLGgLFVzDyl
|
||||
afMTMo2W5kEeL2Ui8fkxWBBtvF8xrF67XT6vT+kaElk1yrG8dIixG0fEVsoDPpz2
|
||||
edbb/Kd5MNyWzjMfJaW9otlH7KjPBPRuQzubgmBXXDBxij5C1UI=
|
||||
=rhXA
|
||||
-----END PGP SIGNATURE-----
|
@ -1,299 +0,0 @@
|
||||
From 4288c623d62cf90d8e4444facb3379fb06d01140 Mon Sep 17 00:00:00 2001
|
||||
From: "Gregory P. Smith" <greg@krypto.org>
|
||||
Date: Thu, 20 Jul 2023 20:30:52 -0700
|
||||
Subject: [PATCH] [3.12] gh-106669: Revert "gh-102988: Detect email address
|
||||
parsing errors ... (GH-105127)" (GH-106733)
|
||||
|
||||
This reverts commit 18dfbd035775c15533d13a98e56b1d2bf5c65f00.
|
||||
Adds a regression test from the issue.
|
||||
|
||||
See https://github.com/python/cpython/issues/106669..
|
||||
(cherry picked from commit a31dea1feb61793e48fa9aa5014f358352205c1d)
|
||||
|
||||
Co-authored-by: Gregory P. Smith <greg@krypto.org>
|
||||
---
|
||||
Doc/library/email.utils.rst | 26 --
|
||||
Doc/whatsnew/3.12.rst | 8
|
||||
Lib/email/utils.py | 63 ------
|
||||
Lib/test/test_email/test_email.py | 96 +---------
|
||||
Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst | 4
|
||||
5 files changed, 30 insertions(+), 167 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst
|
||||
|
||||
Index: Python-3.12.0b4/Doc/library/email.utils.rst
|
||||
===================================================================
|
||||
--- Python-3.12.0b4.orig/Doc/library/email.utils.rst
|
||||
+++ Python-3.12.0b4/Doc/library/email.utils.rst
|
||||
@@ -65,11 +65,6 @@ of the new API.
|
||||
*email address* parts. Returns a tuple of that information, unless the parse
|
||||
fails, in which case a 2-tuple of ``('', '')`` is returned.
|
||||
|
||||
- .. versionchanged:: 3.12
|
||||
- For security reasons, addresses that were ambiguous and could parse into
|
||||
- multiple different addresses now cause ``('', '')`` to be returned
|
||||
- instead of only one of the *potential* addresses.
|
||||
-
|
||||
|
||||
.. function:: formataddr(pair, charset='utf-8')
|
||||
|
||||
@@ -92,7 +87,7 @@ of the new API.
|
||||
This method returns a list of 2-tuples of the form returned by ``parseaddr()``.
|
||||
*fieldvalues* is a sequence of header field values as might be returned by
|
||||
:meth:`Message.get_all <email.message.Message.get_all>`. Here's a simple
|
||||
- example that gets all the recipients of a message:
|
||||
+ example that gets all the recipients of a message::
|
||||
|
||||
from email.utils import getaddresses
|
||||
|
||||
@@ -102,25 +97,6 @@ of the new API.
|
||||
resent_ccs = msg.get_all('resent-cc', [])
|
||||
all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs)
|
||||
|
||||
- When parsing fails for a single fieldvalue, a 2-tuple of ``('', '')``
|
||||
- is returned in its place. Other errors in parsing the list of
|
||||
- addresses such as a fieldvalue seemingly parsing into multiple
|
||||
- addresses may result in a list containing a single empty 2-tuple
|
||||
- ``[('', '')]`` being returned rather than returning potentially
|
||||
- invalid output.
|
||||
-
|
||||
- Example malformed input parsing:
|
||||
-
|
||||
- .. doctest::
|
||||
-
|
||||
- >>> from email.utils import getaddresses
|
||||
- >>> getaddresses(['alice@example.com <bob@example.com>', 'me@example.com'])
|
||||
- [('', '')]
|
||||
-
|
||||
- .. versionchanged:: 3.12
|
||||
- The 2-tuple of ``('', '')`` in the returned values when parsing
|
||||
- fails were added as to address a security issue.
|
||||
-
|
||||
|
||||
.. function:: parsedate(date)
|
||||
|
||||
Index: Python-3.12.0b4/Doc/whatsnew/3.12.rst
|
||||
===================================================================
|
||||
--- Python-3.12.0b4.orig/Doc/whatsnew/3.12.rst
|
||||
+++ Python-3.12.0b4/Doc/whatsnew/3.12.rst
|
||||
@@ -570,14 +570,6 @@ dis
|
||||
:data:`~dis.hasarg` collection instead.
|
||||
(Contributed by Irit Katriel in :gh:`94216`.)
|
||||
|
||||
-email
|
||||
------
|
||||
-
|
||||
-* :func:`email.utils.getaddresses` and :func:`email.utils.parseaddr` now return
|
||||
- ``('', '')`` 2-tuples in more situations where invalid email addresses are
|
||||
- encountered instead of potentially inaccurate values.
|
||||
- (Contributed by Thomas Dwyer for :gh:`102988` to ameliorate CVE-2023-27043.)
|
||||
-
|
||||
fractions
|
||||
---------
|
||||
|
||||
Index: Python-3.12.0b4/Lib/email/utils.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b4.orig/Lib/email/utils.py
|
||||
+++ Python-3.12.0b4/Lib/email/utils.py
|
||||
@@ -106,54 +106,12 @@ def formataddr(pair, charset='utf-8'):
|
||||
return address
|
||||
|
||||
|
||||
-def _pre_parse_validation(email_header_fields):
|
||||
- accepted_values = []
|
||||
- for v in email_header_fields:
|
||||
- s = v.replace('\\(', '').replace('\\)', '')
|
||||
- if s.count('(') != s.count(')'):
|
||||
- v = "('', '')"
|
||||
- accepted_values.append(v)
|
||||
-
|
||||
- return accepted_values
|
||||
-
|
||||
-
|
||||
-def _post_parse_validation(parsed_email_header_tuples):
|
||||
- accepted_values = []
|
||||
- # The parser would have parsed a correctly formatted domain-literal
|
||||
- # The existence of an [ after parsing indicates a parsing failure
|
||||
- for v in parsed_email_header_tuples:
|
||||
- if '[' in v[1]:
|
||||
- v = ('', '')
|
||||
- accepted_values.append(v)
|
||||
-
|
||||
- return accepted_values
|
||||
-
|
||||
|
||||
def getaddresses(fieldvalues):
|
||||
- """Return a list of (REALNAME, EMAIL) or ('','') for each fieldvalue.
|
||||
-
|
||||
- When parsing fails for a fieldvalue, a 2-tuple of ('', '') is returned in
|
||||
- its place.
|
||||
-
|
||||
- If the resulting list of parsed address is not the same as the number of
|
||||
- fieldvalues in the input list a parsing error has occurred. A list
|
||||
- containing a single empty 2-tuple [('', '')] is returned in its place.
|
||||
- This is done to avoid invalid output.
|
||||
- """
|
||||
- fieldvalues = [str(v) for v in fieldvalues]
|
||||
- fieldvalues = _pre_parse_validation(fieldvalues)
|
||||
- all = COMMASPACE.join(v for v in fieldvalues)
|
||||
+ """Return a list of (REALNAME, EMAIL) for each fieldvalue."""
|
||||
+ all = COMMASPACE.join(str(v) for v in fieldvalues)
|
||||
a = _AddressList(all)
|
||||
- result = _post_parse_validation(a.addresslist)
|
||||
-
|
||||
- n = 0
|
||||
- for v in fieldvalues:
|
||||
- n += v.count(',') + 1
|
||||
-
|
||||
- if len(result) != n:
|
||||
- return [('', '')]
|
||||
-
|
||||
- return result
|
||||
+ return a.addresslist
|
||||
|
||||
|
||||
def _format_timetuple_and_zone(timetuple, zone):
|
||||
@@ -254,18 +212,9 @@ def parseaddr(addr):
|
||||
Return a tuple of realname and email address, unless the parse fails, in
|
||||
which case return a 2-tuple of ('', '').
|
||||
"""
|
||||
- if isinstance(addr, list):
|
||||
- addr = addr[0]
|
||||
-
|
||||
- if not isinstance(addr, str):
|
||||
- return ('', '')
|
||||
-
|
||||
- addr = _pre_parse_validation([addr])[0]
|
||||
- addrs = _post_parse_validation(_AddressList(addr).addresslist)
|
||||
-
|
||||
- if not addrs or len(addrs) > 1:
|
||||
- return ('', '')
|
||||
-
|
||||
+ addrs = _AddressList(addr).addresslist
|
||||
+ if not addrs:
|
||||
+ return '', ''
|
||||
return addrs[0]
|
||||
|
||||
|
||||
Index: Python-3.12.0b4/Lib/test/test_email/test_email.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b4.orig/Lib/test/test_email/test_email.py
|
||||
+++ Python-3.12.0b4/Lib/test/test_email/test_email.py
|
||||
@@ -3319,90 +3319,32 @@ Foo
|
||||
[('Al Person', 'aperson@dom.ain'),
|
||||
('Bud Person', 'bperson@dom.ain')])
|
||||
|
||||
- def test_getaddresses_parsing_errors(self):
|
||||
- """Test for parsing errors from CVE-2023-27043"""
|
||||
- eq = self.assertEqual
|
||||
- eq(utils.getaddresses(['alice@example.org(<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org)<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org<<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org><bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org@<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org,<bob@example.com>']),
|
||||
- [('', 'alice@example.org'), ('', 'bob@example.com')])
|
||||
- eq(utils.getaddresses(['alice@example.org;<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org:<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org.<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org"<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org[<bob@example.com>']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(['alice@example.org]<bob@example.com>']),
|
||||
- [('', '')])
|
||||
-
|
||||
- def test_parseaddr_parsing_errors(self):
|
||||
- """Test for parsing errors from CVE-2023-27043"""
|
||||
- eq = self.assertEqual
|
||||
- eq(utils.parseaddr(['alice@example.org(<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org)<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org<<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org><bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org@<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org,<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org;<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org:<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org.<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org"<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org[<bob@example.com>']),
|
||||
- ('', ''))
|
||||
- eq(utils.parseaddr(['alice@example.org]<bob@example.com>']),
|
||||
- ('', ''))
|
||||
+ def test_getaddresses_comma_in_name(self):
|
||||
+ """GH-106669 regression test."""
|
||||
+ self.assertEqual(
|
||||
+ utils.getaddresses(
|
||||
+ [
|
||||
+ '"Bud, Person" <bperson@dom.ain>',
|
||||
+ 'aperson@dom.ain (Al Person)',
|
||||
+ '"Mariusz Felisiak" <to@example.com>',
|
||||
+ ]
|
||||
+ ),
|
||||
+ [
|
||||
+ ('Bud, Person', 'bperson@dom.ain'),
|
||||
+ ('Al Person', 'aperson@dom.ain'),
|
||||
+ ('Mariusz Felisiak', 'to@example.com'),
|
||||
+ ],
|
||||
+ )
|
||||
|
||||
def test_getaddresses_nasty(self):
|
||||
eq = self.assertEqual
|
||||
eq(utils.getaddresses(['foo: ;']), [('', '')])
|
||||
- eq(utils.getaddresses(['[]*-- =~$']), [('', '')])
|
||||
+ eq(utils.getaddresses(
|
||||
+ ['[]*-- =~$']),
|
||||
+ [('', ''), ('', ''), ('', '*--')])
|
||||
eq(utils.getaddresses(
|
||||
['foo: ;', '"Jason R. Mastaler" <jason@dom.ain>']),
|
||||
[('', ''), ('Jason R. Mastaler', 'jason@dom.ain')])
|
||||
- eq(utils.getaddresses(
|
||||
- [r'Pete(A nice \) chap) <pete(his account)@silly.test(his host)>']),
|
||||
- [('Pete (A nice ) chap his account his host)', 'pete@silly.test')])
|
||||
- eq(utils.getaddresses(
|
||||
- ['(Empty list)(start)Undisclosed recipients :(nobody(I know))']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(
|
||||
- ['Mary <@machine.tld:mary@example.net>, , jdoe@test . example']),
|
||||
- [('Mary', 'mary@example.net'), ('', ''), ('', 'jdoe@test.example')])
|
||||
- eq(utils.getaddresses(
|
||||
- ['John Doe <jdoe@machine(comment). example>']),
|
||||
- [('John Doe (comment)', 'jdoe@machine.example')])
|
||||
- eq(utils.getaddresses(
|
||||
- ['"Mary Smith: Personal Account" <smith@home.example>']),
|
||||
- [('Mary Smith: Personal Account', 'smith@home.example')])
|
||||
- eq(utils.getaddresses(
|
||||
- ['Undisclosed recipients:;']),
|
||||
- [('', '')])
|
||||
- eq(utils.getaddresses(
|
||||
- [r'<boss@nil.test>, "Giant; \"Big\" Box" <bob@example.net>']),
|
||||
- [('', 'boss@nil.test'), ('Giant; "Big" Box', 'bob@example.net')])
|
||||
|
||||
def test_getaddresses_embedded_comment(self):
|
||||
"""Test proper handling of a nested comment"""
|
||||
Index: Python-3.12.0b4/Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ Python-3.12.0b4/Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
+Reverted the :mod:`email.utils` security improvement change released in
|
||||
+3.12beta4 that unintentionally caused :mod:`email.utils.getaddresses` to fail
|
||||
+to parse email addresses with a comma in the quoted name field.
|
||||
+See :gh:`106669`.
|
@ -13,10 +13,10 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
||||
5 files changed, 34 insertions(+), 9 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
|
||||
Index: Python-3.12.0b1/Doc/library/ensurepip.rst
|
||||
Index: Python-3.12.0rc1/Doc/library/ensurepip.rst
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Doc/library/ensurepip.rst
|
||||
+++ Python-3.12.0b1/Doc/library/ensurepip.rst
|
||||
--- Python-3.12.0rc1.orig/Doc/library/ensurepip.rst
|
||||
+++ Python-3.12.0rc1/Doc/library/ensurepip.rst
|
||||
@@ -59,8 +59,9 @@ is at least as recent as the one availab
|
||||
By default, ``pip`` is installed into the current virtual environment
|
||||
(if one is active) or into the system site packages (if there is no
|
||||
@ -55,10 +55,10 @@ Index: Python-3.12.0b1/Doc/library/ensurepip.rst
|
||||
.. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
|
||||
|
||||
.. note::
|
||||
Index: Python-3.12.0b1/Lib/ensurepip/__init__.py
|
||||
Index: Python-3.12.0rc1/Lib/ensurepip/__init__.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/ensurepip/__init__.py
|
||||
+++ Python-3.12.0b1/Lib/ensurepip/__init__.py
|
||||
--- Python-3.12.0rc1.orig/Lib/ensurepip/__init__.py
|
||||
+++ Python-3.12.0rc1/Lib/ensurepip/__init__.py
|
||||
@@ -120,27 +120,27 @@ def _disable_pip_configuration_settings(
|
||||
os.environ['PIP_CONFIG_FILE'] = os.devnull
|
||||
|
||||
@ -121,10 +121,10 @@ Index: Python-3.12.0b1/Lib/ensurepip/__init__.py
|
||||
upgrade=args.upgrade,
|
||||
user=args.user,
|
||||
verbosity=args.verbosity,
|
||||
Index: Python-3.12.0b1/Lib/test/test_ensurepip.py
|
||||
Index: Python-3.12.0rc1/Lib/test/test_ensurepip.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/test/test_ensurepip.py
|
||||
+++ Python-3.12.0b1/Lib/test/test_ensurepip.py
|
||||
--- Python-3.12.0rc1.orig/Lib/test/test_ensurepip.py
|
||||
+++ Python-3.12.0rc1/Lib/test/test_ensurepip.py
|
||||
@@ -105,6 +105,17 @@ class TestBootstrap(EnsurepipMixin, unit
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@ -143,11 +143,11 @@ Index: Python-3.12.0b1/Lib/test/test_ensurepip.py
|
||||
def test_bootstrapping_with_user(self):
|
||||
ensurepip.bootstrap(user=True)
|
||||
|
||||
Index: Python-3.12.0b1/Makefile.pre.in
|
||||
Index: Python-3.12.0rc1/Makefile.pre.in
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Makefile.pre.in
|
||||
+++ Python-3.12.0b1/Makefile.pre.in
|
||||
@@ -1908,7 +1908,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni
|
||||
--- Python-3.12.0rc1.orig/Makefile.pre.in
|
||||
+++ Python-3.12.0rc1/Makefile.pre.in
|
||||
@@ -1909,7 +1909,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni
|
||||
install|*) ensurepip="" ;; \
|
||||
esac; \
|
||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||
@ -156,7 +156,7 @@ Index: Python-3.12.0b1/Makefile.pre.in
|
||||
fi
|
||||
|
||||
.PHONY: altinstall
|
||||
@@ -1919,7 +1919,7 @@ altinstall: commoninstall
|
||||
@@ -1920,7 +1920,7 @@ altinstall: commoninstall
|
||||
install|*) ensurepip="--altinstall" ;; \
|
||||
esac; \
|
||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||
@ -165,9 +165,9 @@ Index: Python-3.12.0b1/Makefile.pre.in
|
||||
fi
|
||||
|
||||
.PHONY: commoninstall
|
||||
Index: Python-3.12.0b1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
Index: Python-3.12.0rc1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ Python-3.12.0b1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
+++ Python-3.12.0rc1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
@@ -0,0 +1 @@
|
||||
+A directory prefix can now be specified when using :mod:`ensurepip`.
|
||||
|
12
externally_managed.in
Normal file
12
externally_managed.in
Normal file
@ -0,0 +1,12 @@
|
||||
[externally-managed]
|
||||
Error=To install Python packages system-wide, try
|
||||
zypper install __PYTHONPREFIX__-xyz, where xyz is the package
|
||||
you are trying to install.
|
||||
|
||||
If you wish to install a non-rpm packaged Python package,
|
||||
create a virtual environment using __PYTHON__ -m venv path/to/venv.
|
||||
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
|
||||
|
||||
If you wish to install a non-rpm packaged Python application,
|
||||
it may be easiest to use `pipx install xyz`, which will manage a
|
||||
virtual environment for you. Install pipx via `zypper install __PYTHONPREFIX__-pipx` .
|
@ -3,8 +3,10 @@
|
||||
Misc/NEWS | 2 +-
|
||||
2 files changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
--- a/Doc/using/configure.rst
|
||||
+++ b/Doc/using/configure.rst
|
||||
Index: Python-3.12.0rc1/Doc/using/configure.rst
|
||||
===================================================================
|
||||
--- Python-3.12.0rc1.orig/Doc/using/configure.rst
|
||||
+++ Python-3.12.0rc1/Doc/using/configure.rst
|
||||
@@ -599,13 +599,11 @@ macOS Options
|
||||
|
||||
See ``Mac/README.rst``.
|
||||
@ -19,9 +21,11 @@
|
||||
.. cmdoption:: --enable-framework=INSTALLDIR
|
||||
|
||||
Create a Python.framework rather than a traditional Unix install. Optional
|
||||
--- a/Misc/NEWS
|
||||
+++ b/Misc/NEWS
|
||||
@@ -11318,7 +11318,7 @@ C API
|
||||
Index: Python-3.12.0rc1/Misc/NEWS
|
||||
===================================================================
|
||||
--- Python-3.12.0rc1.orig/Misc/NEWS
|
||||
+++ Python-3.12.0rc1/Misc/NEWS
|
||||
@@ -11530,7 +11530,7 @@ C API
|
||||
- bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
|
||||
|
||||
- bpo-43795: The list in :ref:`limited-api-list` now shows the public name
|
||||
|
@ -4,9 +4,11 @@ unchanged:
|
||||
Doc/library/turtle.rst | 81 -------------------------------------------------
|
||||
1 file changed, 81 deletions(-)
|
||||
|
||||
--- a/Doc/library/turtle.rst
|
||||
+++ b/Doc/library/turtle.rst
|
||||
@@ -251,7 +251,6 @@ Turtle motion
|
||||
Index: Python-3.12.0rc1/Doc/library/turtle.rst
|
||||
===================================================================
|
||||
--- Python-3.12.0rc1.orig/Doc/library/turtle.rst
|
||||
+++ Python-3.12.0rc1/Doc/library/turtle.rst
|
||||
@@ -441,7 +441,6 @@ Turtle motion
|
||||
turtle is headed.
|
||||
|
||||
.. doctest::
|
||||
@ -14,7 +16,7 @@ unchanged:
|
||||
|
||||
>>> turtle.position()
|
||||
(0.00,0.00)
|
||||
@@ -278,7 +277,6 @@ Turtle motion
|
||||
@@ -468,7 +467,6 @@ Turtle motion
|
||||
>>> turtle.goto(0, 0)
|
||||
|
||||
.. doctest::
|
||||
@ -22,7 +24,7 @@ unchanged:
|
||||
|
||||
>>> turtle.position()
|
||||
(0.00,0.00)
|
||||
@@ -297,13 +295,11 @@ Turtle motion
|
||||
@@ -487,13 +485,11 @@ Turtle motion
|
||||
orientation depends on the turtle mode, see :func:`mode`.
|
||||
|
||||
.. doctest::
|
||||
@ -36,7 +38,7 @@ unchanged:
|
||||
|
||||
>>> turtle.heading()
|
||||
22.0
|
||||
@@ -322,13 +318,11 @@ Turtle motion
|
||||
@@ -512,13 +508,11 @@ Turtle motion
|
||||
orientation depends on the turtle mode, see :func:`mode`.
|
||||
|
||||
.. doctest::
|
||||
@ -50,7 +52,7 @@ unchanged:
|
||||
|
||||
>>> turtle.heading()
|
||||
22.0
|
||||
@@ -351,13 +345,11 @@ Turtle motion
|
||||
@@ -541,13 +535,11 @@ Turtle motion
|
||||
not change the turtle's orientation.
|
||||
|
||||
.. doctest::
|
||||
@ -64,7 +66,7 @@ unchanged:
|
||||
|
||||
>>> tp = turtle.pos()
|
||||
>>> tp
|
||||
@@ -419,13 +411,11 @@ Turtle motion
|
||||
@@ -609,13 +601,11 @@ Turtle motion
|
||||
unchanged.
|
||||
|
||||
.. doctest::
|
||||
@ -78,7 +80,7 @@ unchanged:
|
||||
|
||||
>>> turtle.position()
|
||||
(0.00,240.00)
|
||||
@@ -441,13 +431,11 @@ Turtle motion
|
||||
@@ -631,13 +621,11 @@ Turtle motion
|
||||
Set the turtle's second coordinate to *y*, leave first coordinate unchanged.
|
||||
|
||||
.. doctest::
|
||||
@ -92,7 +94,7 @@ unchanged:
|
||||
|
||||
>>> turtle.position()
|
||||
(0.00,40.00)
|
||||
@@ -474,7 +462,6 @@ Turtle motion
|
||||
@@ -664,7 +652,6 @@ Turtle motion
|
||||
=================== ====================
|
||||
|
||||
.. doctest::
|
||||
@ -100,7 +102,7 @@ unchanged:
|
||||
|
||||
>>> turtle.setheading(90)
|
||||
>>> turtle.heading()
|
||||
@@ -487,14 +474,12 @@ Turtle motion
|
||||
@@ -677,14 +664,12 @@ Turtle motion
|
||||
its start-orientation (which depends on the mode, see :func:`mode`).
|
||||
|
||||
.. doctest::
|
||||
@ -115,7 +117,7 @@ unchanged:
|
||||
|
||||
>>> turtle.heading()
|
||||
90.0
|
||||
@@ -526,7 +511,6 @@ Turtle motion
|
||||
@@ -716,7 +701,6 @@ Turtle motion
|
||||
calculated automatically. May be used to draw regular polygons.
|
||||
|
||||
.. doctest::
|
||||
@ -123,7 +125,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.position()
|
||||
@@ -555,7 +539,6 @@ Turtle motion
|
||||
@@ -745,7 +729,6 @@ Turtle motion
|
||||
|
||||
|
||||
.. doctest::
|
||||
@ -131,7 +133,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.dot()
|
||||
@@ -573,7 +556,6 @@ Turtle motion
|
||||
@@ -763,7 +746,6 @@ Turtle motion
|
||||
it by calling ``clearstamp(stamp_id)``.
|
||||
|
||||
.. doctest::
|
||||
@ -139,7 +141,7 @@ unchanged:
|
||||
|
||||
>>> turtle.color("blue")
|
||||
>>> stamp_id = turtle.stamp()
|
||||
@@ -588,7 +570,6 @@ Turtle motion
|
||||
@@ -778,7 +760,6 @@ Turtle motion
|
||||
Delete stamp with given *stampid*.
|
||||
|
||||
.. doctest::
|
||||
@ -147,7 +149,7 @@ unchanged:
|
||||
|
||||
>>> turtle.position()
|
||||
(150.00,-0.00)
|
||||
@@ -626,7 +607,6 @@ Turtle motion
|
||||
@@ -816,7 +797,6 @@ Turtle motion
|
||||
undo actions is determined by the size of the undobuffer.
|
||||
|
||||
.. doctest::
|
||||
@ -155,7 +157,7 @@ unchanged:
|
||||
|
||||
>>> for i in range(4):
|
||||
... turtle.fd(50); turtle.lt(80)
|
||||
@@ -659,7 +639,6 @@ Turtle motion
|
||||
@@ -849,7 +829,6 @@ Turtle motion
|
||||
turtle turn instantly.
|
||||
|
||||
.. doctest::
|
||||
@ -163,7 +165,7 @@ unchanged:
|
||||
|
||||
>>> turtle.speed()
|
||||
3
|
||||
@@ -680,7 +659,6 @@ Tell Turtle's state
|
||||
@@ -870,7 +849,6 @@ Tell Turtle's state
|
||||
Return the turtle's current location (x,y) (as a :class:`Vec2D` vector).
|
||||
|
||||
.. doctest::
|
||||
@ -171,7 +173,7 @@ unchanged:
|
||||
|
||||
>>> turtle.pos()
|
||||
(440.00,-0.00)
|
||||
@@ -696,7 +674,6 @@ Tell Turtle's state
|
||||
@@ -886,7 +864,6 @@ Tell Turtle's state
|
||||
orientation which depends on the mode - "standard"/"world" or "logo".
|
||||
|
||||
.. doctest::
|
||||
@ -179,7 +181,7 @@ unchanged:
|
||||
|
||||
>>> turtle.goto(10, 10)
|
||||
>>> turtle.towards(0,0)
|
||||
@@ -708,7 +685,6 @@ Tell Turtle's state
|
||||
@@ -898,7 +875,6 @@ Tell Turtle's state
|
||||
Return the turtle's x coordinate.
|
||||
|
||||
.. doctest::
|
||||
@ -187,7 +189,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.left(50)
|
||||
@@ -724,7 +700,6 @@ Tell Turtle's state
|
||||
@@ -914,7 +890,6 @@ Tell Turtle's state
|
||||
Return the turtle's y coordinate.
|
||||
|
||||
.. doctest::
|
||||
@ -195,7 +197,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.left(60)
|
||||
@@ -741,7 +716,6 @@ Tell Turtle's state
|
||||
@@ -931,7 +906,6 @@ Tell Turtle's state
|
||||
:func:`mode`).
|
||||
|
||||
.. doctest::
|
||||
@ -203,7 +205,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.left(67)
|
||||
@@ -758,7 +732,6 @@ Tell Turtle's state
|
||||
@@ -948,7 +922,6 @@ Tell Turtle's state
|
||||
other turtle, in turtle step units.
|
||||
|
||||
.. doctest::
|
||||
@ -211,7 +213,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.distance(30,40)
|
||||
@@ -782,7 +755,6 @@ Settings for measurement
|
||||
@@ -972,7 +945,6 @@ Settings for measurement
|
||||
Default value is 360 degrees.
|
||||
|
||||
.. doctest::
|
||||
@ -219,7 +221,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.left(90)
|
||||
@@ -805,7 +777,6 @@ Settings for measurement
|
||||
@@ -995,7 +967,6 @@ Settings for measurement
|
||||
``degrees(2*math.pi)``.
|
||||
|
||||
.. doctest::
|
||||
@ -227,7 +229,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.left(90)
|
||||
@@ -816,7 +787,6 @@ Settings for measurement
|
||||
@@ -1006,7 +977,6 @@ Settings for measurement
|
||||
1.5707963267948966
|
||||
|
||||
.. doctest::
|
||||
@ -235,7 +237,7 @@ unchanged:
|
||||
:hide:
|
||||
|
||||
>>> turtle.degrees(360)
|
||||
@@ -852,7 +822,6 @@ Drawing state
|
||||
@@ -1042,7 +1012,6 @@ Drawing state
|
||||
thickness. If no argument is given, the current pensize is returned.
|
||||
|
||||
.. doctest::
|
||||
@ -243,7 +245,7 @@ unchanged:
|
||||
|
||||
>>> turtle.pensize()
|
||||
1
|
||||
@@ -884,7 +853,6 @@ Drawing state
|
||||
@@ -1074,7 +1043,6 @@ Drawing state
|
||||
attributes in one statement.
|
||||
|
||||
.. doctest::
|
||||
@ -251,7 +253,7 @@ unchanged:
|
||||
:options: +NORMALIZE_WHITESPACE
|
||||
|
||||
>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
|
||||
@@ -907,7 +875,6 @@ Drawing state
|
||||
@@ -1097,7 +1065,6 @@ Drawing state
|
||||
Return ``True`` if pen is down, ``False`` if it's up.
|
||||
|
||||
.. doctest::
|
||||
@ -259,7 +261,7 @@ unchanged:
|
||||
|
||||
>>> turtle.penup()
|
||||
>>> turtle.isdown()
|
||||
@@ -948,7 +915,6 @@ Color control
|
||||
@@ -1138,7 +1105,6 @@ Color control
|
||||
newly set pencolor.
|
||||
|
||||
.. doctest::
|
||||
@ -267,7 +269,7 @@ unchanged:
|
||||
|
||||
>>> colormode()
|
||||
1.0
|
||||
@@ -997,7 +963,6 @@ Color control
|
||||
@@ -1187,7 +1153,6 @@ Color control
|
||||
with the newly set fillcolor.
|
||||
|
||||
.. doctest::
|
||||
@ -275,7 +277,7 @@ unchanged:
|
||||
|
||||
>>> turtle.fillcolor("violet")
|
||||
>>> turtle.fillcolor()
|
||||
@@ -1036,7 +1001,6 @@ Color control
|
||||
@@ -1226,7 +1191,6 @@ Color control
|
||||
with the newly set colors.
|
||||
|
||||
.. doctest::
|
||||
@ -283,7 +285,7 @@ unchanged:
|
||||
|
||||
>>> turtle.color("red", "green")
|
||||
>>> turtle.color()
|
||||
@@ -1053,7 +1017,6 @@ Filling
|
||||
@@ -1243,7 +1207,6 @@ Filling
|
||||
~~~~~~~
|
||||
|
||||
.. doctest::
|
||||
@ -291,7 +293,7 @@ unchanged:
|
||||
:hide:
|
||||
|
||||
>>> turtle.home()
|
||||
@@ -1063,7 +1026,6 @@ Filling
|
||||
@@ -1253,7 +1216,6 @@ Filling
|
||||
Return fillstate (``True`` if filling, ``False`` else).
|
||||
|
||||
.. doctest::
|
||||
@ -299,7 +301,7 @@ unchanged:
|
||||
|
||||
>>> turtle.begin_fill()
|
||||
>>> if turtle.filling():
|
||||
@@ -1088,7 +1050,6 @@ Filling
|
||||
@@ -1278,7 +1240,6 @@ Filling
|
||||
above may be either all yellow or have some white regions.
|
||||
|
||||
.. doctest::
|
||||
@ -307,7 +309,7 @@ unchanged:
|
||||
|
||||
>>> turtle.color("black", "red")
|
||||
>>> turtle.begin_fill()
|
||||
@@ -1105,7 +1066,6 @@ More drawing control
|
||||
@@ -1295,7 +1256,6 @@ More drawing control
|
||||
variables to the default values.
|
||||
|
||||
.. doctest::
|
||||
@ -315,7 +317,7 @@ unchanged:
|
||||
|
||||
>>> turtle.goto(0,-22)
|
||||
>>> turtle.left(100)
|
||||
@@ -1156,7 +1116,6 @@ Visibility
|
||||
@@ -1346,7 +1306,6 @@ Visibility
|
||||
drawing observably.
|
||||
|
||||
.. doctest::
|
||||
@ -323,7 +325,7 @@ unchanged:
|
||||
|
||||
>>> turtle.hideturtle()
|
||||
|
||||
@@ -1167,7 +1126,6 @@ Visibility
|
||||
@@ -1357,7 +1316,6 @@ Visibility
|
||||
Make the turtle visible.
|
||||
|
||||
.. doctest::
|
||||
@ -331,7 +333,7 @@ unchanged:
|
||||
|
||||
>>> turtle.showturtle()
|
||||
|
||||
@@ -1198,7 +1156,6 @@ Appearance
|
||||
@@ -1388,7 +1346,6 @@ Appearance
|
||||
deal with shapes see Screen method :func:`register_shape`.
|
||||
|
||||
.. doctest::
|
||||
@ -339,7 +341,7 @@ unchanged:
|
||||
|
||||
>>> turtle.shape()
|
||||
'classic'
|
||||
@@ -1224,7 +1181,6 @@ Appearance
|
||||
@@ -1414,7 +1371,6 @@ Appearance
|
||||
``resizemode("user")`` is called by :func:`shapesize` when used with arguments.
|
||||
|
||||
.. doctest::
|
||||
@ -347,7 +349,7 @@ unchanged:
|
||||
|
||||
>>> turtle.resizemode()
|
||||
'noresize'
|
||||
@@ -1248,7 +1204,6 @@ Appearance
|
||||
@@ -1438,7 +1394,6 @@ Appearance
|
||||
of the shape's outline.
|
||||
|
||||
.. doctest::
|
||||
@ -355,7 +357,7 @@ unchanged:
|
||||
|
||||
>>> turtle.shapesize()
|
||||
(1.0, 1.0, 1)
|
||||
@@ -1273,7 +1228,6 @@ Appearance
|
||||
@@ -1463,7 +1418,6 @@ Appearance
|
||||
heading of the turtle are sheared.
|
||||
|
||||
.. doctest::
|
||||
@ -363,7 +365,7 @@ unchanged:
|
||||
|
||||
>>> turtle.shape("circle")
|
||||
>>> turtle.shapesize(5,2)
|
||||
@@ -1290,7 +1244,6 @@ Appearance
|
||||
@@ -1480,7 +1434,6 @@ Appearance
|
||||
change the turtle's heading (direction of movement).
|
||||
|
||||
.. doctest::
|
||||
@ -371,7 +373,7 @@ unchanged:
|
||||
|
||||
>>> turtle.reset()
|
||||
>>> turtle.shape("circle")
|
||||
@@ -1336,7 +1289,6 @@ Appearance
|
||||
@@ -1526,7 +1479,6 @@ Appearance
|
||||
turtle (its direction of movement).
|
||||
|
||||
.. doctest::
|
||||
@ -379,7 +381,7 @@ unchanged:
|
||||
|
||||
>>> turtle.reset()
|
||||
>>> turtle.shape("circle")
|
||||
@@ -1365,7 +1317,6 @@ Appearance
|
||||
@@ -1555,7 +1507,6 @@ Appearance
|
||||
given matrix.
|
||||
|
||||
.. doctest::
|
||||
@ -387,7 +389,7 @@ unchanged:
|
||||
|
||||
>>> turtle = Turtle()
|
||||
>>> turtle.shape("square")
|
||||
@@ -1381,7 +1332,6 @@ Appearance
|
||||
@@ -1571,7 +1522,6 @@ Appearance
|
||||
can be used to define a new shape or components of a compound shape.
|
||||
|
||||
.. doctest::
|
||||
@ -395,7 +397,7 @@ unchanged:
|
||||
|
||||
>>> turtle.shape("square")
|
||||
>>> turtle.shapetransform(4, -1, 0, 2)
|
||||
@@ -1406,7 +1356,6 @@ Using events
|
||||
@@ -1596,7 +1546,6 @@ Using events
|
||||
procedural way:
|
||||
|
||||
.. doctest::
|
||||
@ -403,7 +405,7 @@ unchanged:
|
||||
|
||||
>>> def turn(x, y):
|
||||
... left(180)
|
||||
@@ -1427,7 +1376,6 @@ Using events
|
||||
@@ -1617,7 +1566,6 @@ Using events
|
||||
``None``, existing bindings are removed.
|
||||
|
||||
.. doctest::
|
||||
@ -411,7 +413,7 @@ unchanged:
|
||||
|
||||
>>> class MyTurtle(Turtle):
|
||||
... def glow(self,x,y):
|
||||
@@ -1455,7 +1403,6 @@ Using events
|
||||
@@ -1645,7 +1593,6 @@ Using events
|
||||
mouse-click event on that turtle.
|
||||
|
||||
.. doctest::
|
||||
@ -419,7 +421,7 @@ unchanged:
|
||||
|
||||
>>> turtle.ondrag(turtle.goto)
|
||||
|
||||
@@ -1483,7 +1430,6 @@ Special Turtle methods
|
||||
@@ -1673,7 +1620,6 @@ Special Turtle methods
|
||||
Return the last recorded polygon.
|
||||
|
||||
.. doctest::
|
||||
@ -427,7 +429,7 @@ unchanged:
|
||||
|
||||
>>> turtle.home()
|
||||
>>> turtle.begin_poly()
|
||||
@@ -1503,7 +1449,6 @@ Special Turtle methods
|
||||
@@ -1693,7 +1639,6 @@ Special Turtle methods
|
||||
turtle properties.
|
||||
|
||||
.. doctest::
|
||||
@ -435,7 +437,7 @@ unchanged:
|
||||
|
||||
>>> mick = Turtle()
|
||||
>>> joe = mick.clone()
|
||||
@@ -1516,7 +1461,6 @@ Special Turtle methods
|
||||
@@ -1706,7 +1651,6 @@ Special Turtle methods
|
||||
return the "anonymous turtle":
|
||||
|
||||
.. doctest::
|
||||
@ -443,7 +445,7 @@ unchanged:
|
||||
|
||||
>>> pet = getturtle()
|
||||
>>> pet.fd(50)
|
||||
@@ -1530,7 +1474,6 @@ Special Turtle methods
|
||||
@@ -1720,7 +1664,6 @@ Special Turtle methods
|
||||
TurtleScreen methods can then be called for that object.
|
||||
|
||||
.. doctest::
|
||||
@ -451,7 +453,7 @@ unchanged:
|
||||
|
||||
>>> ts = turtle.getscreen()
|
||||
>>> ts
|
||||
@@ -1548,7 +1491,6 @@ Special Turtle methods
|
||||
@@ -1738,7 +1681,6 @@ Special Turtle methods
|
||||
``None``, the undobuffer is disabled.
|
||||
|
||||
.. doctest::
|
||||
@ -459,7 +461,7 @@ unchanged:
|
||||
|
||||
>>> turtle.setundobuffer(42)
|
||||
|
||||
@@ -1558,7 +1500,6 @@ Special Turtle methods
|
||||
@@ -1748,7 +1690,6 @@ Special Turtle methods
|
||||
Return number of entries in the undobuffer.
|
||||
|
||||
.. doctest::
|
||||
@ -467,7 +469,7 @@ unchanged:
|
||||
|
||||
>>> while undobufferentries():
|
||||
... undo()
|
||||
@@ -1581,7 +1522,6 @@ below:
|
||||
@@ -1771,7 +1712,6 @@ below:
|
||||
For example:
|
||||
|
||||
.. doctest::
|
||||
@ -475,7 +477,7 @@ unchanged:
|
||||
|
||||
>>> s = Shape("compound")
|
||||
>>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))
|
||||
@@ -1592,7 +1532,6 @@ below:
|
||||
@@ -1782,7 +1722,6 @@ below:
|
||||
3. Now add the Shape to the Screen's shapelist and use it:
|
||||
|
||||
.. doctest::
|
||||
@ -483,7 +485,7 @@ unchanged:
|
||||
|
||||
>>> register_shape("myshape", s)
|
||||
>>> shape("myshape")
|
||||
@@ -1612,7 +1551,6 @@ Most of the examples in this section ref
|
||||
@@ -1802,7 +1741,6 @@ Most of the examples in this section ref
|
||||
``screen``.
|
||||
|
||||
.. doctest::
|
||||
@ -491,7 +493,7 @@ unchanged:
|
||||
:hide:
|
||||
|
||||
>>> screen = Screen()
|
||||
@@ -1629,7 +1567,6 @@ Window control
|
||||
@@ -1819,7 +1757,6 @@ Window control
|
||||
Set or return background color of the TurtleScreen.
|
||||
|
||||
.. doctest::
|
||||
@ -499,7 +501,7 @@ unchanged:
|
||||
|
||||
>>> screen.bgcolor("orange")
|
||||
>>> screen.bgcolor()
|
||||
@@ -1721,7 +1658,6 @@ Window control
|
||||
@@ -1911,7 +1848,6 @@ Window control
|
||||
distorted.
|
||||
|
||||
.. doctest::
|
||||
@ -507,7 +509,7 @@ unchanged:
|
||||
|
||||
>>> screen.reset()
|
||||
>>> screen.setworldcoordinates(-50,-7.5,50,7.5)
|
||||
@@ -1732,7 +1668,6 @@ Window control
|
||||
@@ -1922,7 +1858,6 @@ Window control
|
||||
... left(45); fd(2) # a regular octagon
|
||||
|
||||
.. doctest::
|
||||
@ -515,7 +517,7 @@ unchanged:
|
||||
:hide:
|
||||
|
||||
>>> screen.reset()
|
||||
@@ -1754,7 +1689,6 @@ Animation control
|
||||
@@ -1944,7 +1879,6 @@ Animation control
|
||||
Optional argument:
|
||||
|
||||
.. doctest::
|
||||
@ -523,7 +525,7 @@ unchanged:
|
||||
|
||||
>>> screen.delay()
|
||||
10
|
||||
@@ -1776,7 +1710,6 @@ Animation control
|
||||
@@ -1966,7 +1900,6 @@ Animation control
|
||||
:func:`delay`).
|
||||
|
||||
.. doctest::
|
||||
@ -531,7 +533,7 @@ unchanged:
|
||||
|
||||
>>> screen.tracer(8, 25)
|
||||
>>> dist = 2
|
||||
@@ -1813,7 +1746,6 @@ Using screen events
|
||||
@@ -2003,7 +1936,6 @@ Using screen events
|
||||
must have the focus. (See method :func:`listen`.)
|
||||
|
||||
.. doctest::
|
||||
@ -539,7 +541,7 @@ unchanged:
|
||||
|
||||
>>> def f():
|
||||
... fd(50)
|
||||
@@ -1834,7 +1766,6 @@ Using screen events
|
||||
@@ -2024,7 +1956,6 @@ Using screen events
|
||||
must have focus. (See method :func:`listen`.)
|
||||
|
||||
.. doctest::
|
||||
@ -547,7 +549,7 @@ unchanged:
|
||||
|
||||
>>> def f():
|
||||
... fd(50)
|
||||
@@ -1859,7 +1790,6 @@ Using screen events
|
||||
@@ -2049,7 +1980,6 @@ Using screen events
|
||||
named ``turtle``:
|
||||
|
||||
.. doctest::
|
||||
@ -555,7 +557,7 @@ unchanged:
|
||||
|
||||
>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will
|
||||
>>> # make the turtle move to the clicked point.
|
||||
@@ -1879,7 +1809,6 @@ Using screen events
|
||||
@@ -2069,7 +1999,6 @@ Using screen events
|
||||
Install a timer that calls *fun* after *t* milliseconds.
|
||||
|
||||
.. doctest::
|
||||
@ -563,7 +565,7 @@ unchanged:
|
||||
|
||||
>>> running = True
|
||||
>>> def f():
|
||||
@@ -1961,7 +1890,6 @@ Settings and special methods
|
||||
@@ -2151,7 +2080,6 @@ Settings and special methods
|
||||
============ ========================= ===================
|
||||
|
||||
.. doctest::
|
||||
@ -571,7 +573,7 @@ unchanged:
|
||||
|
||||
>>> mode("logo") # resets turtle heading to north
|
||||
>>> mode()
|
||||
@@ -1976,7 +1904,6 @@ Settings and special methods
|
||||
@@ -2166,7 +2094,6 @@ Settings and special methods
|
||||
values of color triples have to be in the range 0..*cmode*.
|
||||
|
||||
.. doctest::
|
||||
@ -579,7 +581,7 @@ unchanged:
|
||||
|
||||
>>> screen.colormode(1)
|
||||
>>> turtle.pencolor(240, 160, 80)
|
||||
@@ -1997,7 +1924,6 @@ Settings and special methods
|
||||
@@ -2187,7 +2114,6 @@ Settings and special methods
|
||||
do with a Tkinter Canvas.
|
||||
|
||||
.. doctest::
|
||||
@ -587,7 +589,7 @@ unchanged:
|
||||
|
||||
>>> cv = screen.getcanvas()
|
||||
>>> cv
|
||||
@@ -2009,7 +1935,6 @@ Settings and special methods
|
||||
@@ -2199,7 +2125,6 @@ Settings and special methods
|
||||
Return a list of names of all currently available turtle shapes.
|
||||
|
||||
.. doctest::
|
||||
@ -595,7 +597,7 @@ unchanged:
|
||||
|
||||
>>> screen.getshapes()
|
||||
['arrow', 'blank', 'circle', ..., 'turtle']
|
||||
@@ -2033,7 +1958,6 @@ Settings and special methods
|
||||
@@ -2223,7 +2148,6 @@ Settings and special methods
|
||||
coordinates: Install the corresponding polygon shape.
|
||||
|
||||
.. doctest::
|
||||
@ -603,7 +605,7 @@ unchanged:
|
||||
|
||||
>>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
|
||||
|
||||
@@ -2049,7 +1973,6 @@ Settings and special methods
|
||||
@@ -2239,7 +2163,6 @@ Settings and special methods
|
||||
Return the list of turtles on the screen.
|
||||
|
||||
.. doctest::
|
||||
@ -611,7 +613,7 @@ unchanged:
|
||||
|
||||
>>> for turtle in screen.turtles():
|
||||
... turtle.color("red")
|
||||
@@ -2111,7 +2034,6 @@ Methods specific to Screen, not inherite
|
||||
@@ -2301,7 +2224,6 @@ Methods specific to Screen, not inherite
|
||||
center window vertically
|
||||
|
||||
.. doctest::
|
||||
@ -619,7 +621,7 @@ unchanged:
|
||||
|
||||
>>> screen.setup (width=200, height=200, startx=0, starty=0)
|
||||
>>> # sets window to 200x200 pixels, in upper left of screen
|
||||
@@ -2127,7 +2049,6 @@ Methods specific to Screen, not inherite
|
||||
@@ -2317,7 +2239,6 @@ Methods specific to Screen, not inherite
|
||||
Set title of turtle window to *titlestring*.
|
||||
|
||||
.. doctest::
|
||||
@ -627,7 +629,7 @@ unchanged:
|
||||
|
||||
>>> screen.title("Welcome to the turtle zoo!")
|
||||
|
||||
@@ -2198,7 +2119,6 @@ Public classes
|
||||
@@ -2388,7 +2309,6 @@ Public classes
|
||||
Example:
|
||||
|
||||
.. doctest::
|
||||
@ -635,7 +637,7 @@ unchanged:
|
||||
|
||||
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
|
||||
>>> s = Shape("compound")
|
||||
@@ -2549,7 +2469,6 @@ Changes since Python 3.0
|
||||
@@ -2774,7 +2694,6 @@ Changes since Python 3.0
|
||||
|
||||
|
||||
.. doctest::
|
||||
|
@ -2,10 +2,10 @@
|
||||
Makefile.pre.in | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
Index: Python-3.12.0b1/Makefile.pre.in
|
||||
Index: Python-3.12.0rc1/Makefile.pre.in
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Makefile.pre.in
|
||||
+++ Python-3.12.0b1/Makefile.pre.in
|
||||
--- Python-3.12.0rc1.orig/Makefile.pre.in
|
||||
+++ Python-3.12.0rc1/Makefile.pre.in
|
||||
@@ -1332,11 +1332,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
|
||||
$(DTRACE_OBJS) \
|
||||
$(srcdir)/Modules/getbuildinfo.c
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: Python-3.12.0b1/Lib/site.py
|
||||
Index: Python-3.12.0rc1/Lib/site.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/site.py
|
||||
+++ Python-3.12.0b1/Lib/site.py
|
||||
--- Python-3.12.0rc1.orig/Lib/site.py
|
||||
+++ Python-3.12.0rc1/Lib/site.py
|
||||
@@ -76,7 +76,7 @@ import _sitebuiltins
|
||||
import io
|
||||
|
||||
|
@ -2,10 +2,10 @@
|
||||
Lib/test/test_posix.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: Python-3.12.0b1/Lib/test/test_posix.py
|
||||
Index: Python-3.12.0rc1/Lib/test/test_posix.py
|
||||
===================================================================
|
||||
--- Python-3.12.0b1.orig/Lib/test/test_posix.py
|
||||
+++ Python-3.12.0b1/Lib/test/test_posix.py
|
||||
--- Python-3.12.0rc1.orig/Lib/test/test_posix.py
|
||||
+++ Python-3.12.0rc1/Lib/test/test_posix.py
|
||||
@@ -431,7 +431,7 @@ class PosixTester(unittest.TestCase):
|
||||
def test_posix_fadvise(self):
|
||||
fd = os.open(os_helper.TESTFN, os.O_RDONLY)
|
||||
|
@ -1,3 +1,138 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 7 07:31:27 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
||||
|
||||
- Refresh all patches
|
||||
- Drop Revert-gh105127-left-tests.patch, in upstream now
|
||||
- Update to 3.12.0rc1:
|
||||
- Reverted the :mod:`email.utils` security improvement change
|
||||
released in 3.12beta4 that unintentionally caused
|
||||
:mod:`email.utils.getaddresses` to fail to parse email addresses
|
||||
with a comma in the quoted name field. See :gh:`106669`.
|
||||
- Start initializing ob_digit during creation of
|
||||
:c:type:`PyLongObject` objects. Patch by Illia Volochii.
|
||||
- Increase C recursion limit for functions other than the main
|
||||
interpreter from 800 to 1500. This should allow functions like
|
||||
list.__repr__ and json.dumps to handle all the inputs that they
|
||||
could prior to 3.12
|
||||
- Fix potential unaligned memory access on C APIs involving returned
|
||||
sequences of char * pointers within the :mod:`grp` and
|
||||
:mod:`socket` modules. These were revealed using a
|
||||
-fsaniziter=alignment build on ARM macOS. Patch by Christopher
|
||||
Chavez.
|
||||
- Add the exception as the third argument to PY_UNIND callbacks in
|
||||
sys.monitoring. This makes the PY_UNWIND callback consistent with
|
||||
the other exception hanlding callbacks.
|
||||
- Raise a ValueError when a monitoring callback funtion returns
|
||||
DISABLE for events that cannot be disabled locally.
|
||||
- Add a RERAISE event to sys.monitoring, which occurs when an
|
||||
exception is reraised, either explicitly by a plain raise
|
||||
statement, or implicitly in an except or finally block.
|
||||
- Unsupported modules now always fail to be imported.
|
||||
- Fix classmethod-style :func:`super` method calls (i.e., where the
|
||||
second argument to :func:`super`, or the implied second argument
|
||||
drawn from self/cls in the case of zero-arg super, is a type) when
|
||||
the target of the call is not a classmethod.
|
||||
- Python no longer crashes due an infrequent race when initialzing
|
||||
per-interpreter interned strings. The crash would manifest when
|
||||
the interpreter was finalized.
|
||||
- Python no longer crashes due to an infrequent race in setting
|
||||
Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors
|
||||
(both deprecated), when simultaneously initializing two isolated
|
||||
subinterpreters. Now they are only set during runtime
|
||||
initialization.
|
||||
- Fix a segmentation fault caused by a use-after-free bug in
|
||||
frame_dealloc when the trashcan delays the deallocation of a
|
||||
PyFrameObject.
|
||||
- No longer suppress arbitrary errors in the __annotations__ getter
|
||||
and setter in the type and module types.
|
||||
- Propagate frozen_modules to multiprocessing spawned process
|
||||
interpreters.
|
||||
- Prevent out-of-bounds memory access during mmap.find() calls.
|
||||
- Seems that in some conditions, OpenSSL will return
|
||||
SSL_ERROR_SYSCALL instead of SSL_ERROR_SSL when a certification
|
||||
verification has failed, but the error parameters will still
|
||||
contain ERR_LIB_SSL and SSL_R_CERTIFICATE_VERIFY_FAILED. We are
|
||||
now detecting this situation and raising the appropiate
|
||||
ssl.SSLCertVerificationError. Patch by Pablo Galindo
|
||||
- Fix :func:`types.get_original_bases` to only return
|
||||
:attr:`!__orig_bases__` if it is present on cls directly. Patch by
|
||||
James Hilton-Balfe.
|
||||
- Prevent memory leak and use-after-free when using pointers to
|
||||
pointers with ctypes
|
||||
- Make :func:`gettext.pgettext` search plural definitions when
|
||||
translation is not found.
|
||||
- Document behavior of :func:`shutil.disk_usage` for non-mounted
|
||||
filesystems on Unix.
|
||||
- Do not report MultipartInvariantViolationDefect defect when the
|
||||
:class:`email.parser.Parser` class is used to parse emails with
|
||||
headersonly=True.
|
||||
- Fix invalid result from :meth:`PurePath.relative_to` method when
|
||||
attempting to walk a ".." segment in other with walk_up enabled. A
|
||||
:exc:`ValueError` exception is now raised in this case.
|
||||
- Fix potential missing NULL check of d2i_SSL_SESSION result in
|
||||
_ssl.c.
|
||||
- Update the bundled copy of pip to version 23.2.1.
|
||||
- Fixed several bugs in zipfile.Path, including: in Path.match`,
|
||||
Windows separators are no longer honored (and never were meant to
|
||||
be); Fixed ``name/suffix/suffixes/stem operations when no filename
|
||||
is present and the Path is not at the root of the zipfile;
|
||||
Reworked glob for performance and more correct matching behavior.
|
||||
- Add __copy__ and __deepcopy__ in :mod:`enum`
|
||||
- Revert a change to :func:`colorsys.rgb_to_hls` that caused
|
||||
division by zero for certain almost-white inputs. Patch by Terry
|
||||
Jan Reedy.
|
||||
- Instances of :class:`typing.TypeVar`, :class:`typing.ParamSpec`,
|
||||
:class:`typing.ParamSpecArgs`, :class:`typing.ParamSpecKwargs`,
|
||||
and :class:`typing.TypeVarTuple` once again support weak
|
||||
references, fixing a regression introduced in Python 3.12.0 beta
|
||||
1. Patch by Jelle Zijlstra.
|
||||
- Detect possible memory allocation failure in the libtommath
|
||||
function :c:func:`mp_init` used by the _tkinter module.
|
||||
- Fix crash when calling repr with a manually constructed SignalDict
|
||||
object. Patch by Charlie Zhao.
|
||||
- Change the default return value of
|
||||
:meth:`http.client.HTTPConnection.get_proxy_response_headers` to
|
||||
be None and not {}.
|
||||
- Ensure gettext(msg) retrieve translations even if a plural form
|
||||
exists. In other words: gettext(msg) == ngettext(msg, '', 1).
|
||||
- Add documentation for :c:type:`PyInterpreterConfig` and
|
||||
:c:func:`Py_NewInterpreterFromConfig`. Also clarify some of the
|
||||
nearby docs relative to per-interpreter GIL.
|
||||
- Document the :mod:`curses` module variables :const:`~curses.LINES`
|
||||
and :const:`~curses.COLS`.
|
||||
- Add a number of standard external names to nitpick_ignore.
|
||||
- Add documentation on how to localize the :mod:`argparse` module.
|
||||
- test_logging: Fix test_udp_reconnection() by increasing the
|
||||
timeout from 100 ms to 5 minutes (LONG_TIMEOUT). Patch by Victor
|
||||
Stinner.
|
||||
- test_capi: Fix test_no_FatalError_infinite_loop() to no longer
|
||||
write a coredump, by using test.support.SuppressCrashReport. Patch
|
||||
by Victor Stinner.
|
||||
- Avoid creating a reference to the test object in
|
||||
:meth:`~unittest.TestResult.collectedDurations`.
|
||||
- Moved tests for zipfile.Path into Lib/test/test_zipfile/_path.
|
||||
Made zipfile._path a package.
|
||||
- Check for linux/limits.h before including it in
|
||||
Modules/posixmodule.c.
|
||||
- Detect MPI compilers in :file:`configure`.
|
||||
- Add experimental wasi-threads support. Patch by Takashi Yamamoto.
|
||||
- Update Windows build to use OpenSSL 3.0.9
|
||||
- Update macOS installer to use OpenSSL 3.0.9.
|
||||
- Fix bugs in the Argument Clinic destination <name> clear command;
|
||||
the destination buffers would never be cleared, and the
|
||||
destination directive parser would simply continue to the fault
|
||||
handler after processing the command. Patch by Erlend E. Aasland.
|
||||
- freeze now fetches CONFIG_ARGS from the original CPython instance
|
||||
the Makefile uses to call utility scripts. Patch by Ijtaba
|
||||
Hussain.
|
||||
- :c:func:`PyModule_AddObjectRef` is now only available in the
|
||||
limited API version 3.10 or later.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 4 06:37:41 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- add externally_managed.in to label this build as PEP-668 managed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 3 14:13:30 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
|
@ -105,7 +105,7 @@
|
||||
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
||||
%bcond_without profileopt
|
||||
Name: %{python_pkg_name}%{psuffix}
|
||||
Version: 3.12.0b4
|
||||
Version: 3.12.0rc1
|
||||
Release: 0
|
||||
Summary: Python 3 Interpreter
|
||||
License: Python-2.0
|
||||
@ -114,6 +114,7 @@ Source0: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.ta
|
||||
Source1: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz.asc
|
||||
Source2: baselibs.conf
|
||||
Source3: README.SUSE
|
||||
Source4: externally_managed.in
|
||||
Source7: macros.python3
|
||||
Source8: import_failed.py
|
||||
Source9: import_failed.map
|
||||
@ -162,9 +163,6 @@ Patch34: skip-test_pyobject_freed_is_freed.patch
|
||||
# PATCH-FIX-SLE fix_configure_rst.patch bpo#43774 mcepl@suse.com
|
||||
# remove duplicate link targets and make documentation with old Sphinx in SLE
|
||||
Patch35: fix_configure_rst.patch
|
||||
# PATCH-FIX-UPSTREAM Revert-gh105127-left-tests.patch bsc#1210638 mcepl@suse.com
|
||||
# Partially revert previous patch
|
||||
Patch41: Revert-gh105127-left-tests.patch
|
||||
BuildRequires: autoconf-archive
|
||||
BuildRequires: automake
|
||||
BuildRequires: fdupes
|
||||
@ -433,7 +431,6 @@ other applications.
|
||||
%patch34 -p1
|
||||
# %%endif
|
||||
%patch35 -p1
|
||||
%patch41 -p1
|
||||
|
||||
# drop Autoconf version requirement
|
||||
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
|
||||
@ -707,6 +704,9 @@ rm %{buildroot}%{_libdir}/libpython3.so
|
||||
rm %{buildroot}%{_libdir}/pkgconfig/{python3,python3-embed}.pc
|
||||
%endif
|
||||
|
||||
# PEP-0668 mark this as a distro maintained python
|
||||
sed -e 's,__PYTHONPREFIX__,%{python_pkg_name},' -e 's,__PYTHON__,python%{python_version},' < %{SOURCE4} > %{buildroot}%{sitedir}/EXTERNALLY-MANAGED
|
||||
|
||||
# link shared library instead of static library that tools expect
|
||||
ln -s ../../libpython%{python_abi}.so %{buildroot}%{_libdir}/python%{python_version}/config-%{python_abi}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}/libpython%{python_abi}.so
|
||||
|
||||
@ -902,6 +902,8 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo
|
||||
%{_mandir}/man1/python3.1%{?ext_man}
|
||||
%endif
|
||||
%{_mandir}/man1/python%{python_version}.1%{?ext_man}
|
||||
# PEP-0668
|
||||
%{sitedir}/EXTERNALLY-MANAGED
|
||||
# license text, not a doc because the code can use it at run-time
|
||||
%{sitedir}/LICENSE.txt
|
||||
# RPM macros
|
||||
|
@ -2,8 +2,10 @@
|
||||
Lib/test/test_capi/test_mem.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/Lib/test/test_capi/test_mem.py
|
||||
+++ b/Lib/test/test_capi/test_mem.py
|
||||
Index: Python-3.12.0rc1/Lib/test/test_capi/test_mem.py
|
||||
===================================================================
|
||||
--- Python-3.12.0rc1.orig/Lib/test/test_capi/test_mem.py
|
||||
+++ Python-3.12.0rc1/Lib/test/test_capi/test_mem.py
|
||||
@@ -110,6 +110,7 @@ class PyMemDebugTests(unittest.TestCase)
|
||||
def test_pyobject_forbidden_bytes_is_freed(self):
|
||||
self.check_pyobject_is_freed('check_pyobject_forbidden_bytes_is_freed')
|
||||
|
@ -2,8 +2,10 @@
|
||||
Lib/test/test_subprocess.py | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/Lib/test/test_subprocess.py
|
||||
+++ b/Lib/test/test_subprocess.py
|
||||
Index: Python-3.12.0rc1/Lib/test/test_subprocess.py
|
||||
===================================================================
|
||||
--- Python-3.12.0rc1.orig/Lib/test/test_subprocess.py
|
||||
+++ Python-3.12.0rc1/Lib/test/test_subprocess.py
|
||||
@@ -280,7 +280,8 @@ class ProcessTestCase(BaseTestCase):
|
||||
"time.sleep(3600)"],
|
||||
# Some heavily loaded buildbots (sparc Debian 3.x) require
|
||||
|
Loading…
Reference in New Issue
Block a user