From 6521268e21990c2bc68cf13c89fe2547a045cc48 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 2 Jul 2023 18:11:45 +0200 Subject: [PATCH 1/8] gh-106320: Remove private _PyInterpreterState functions (#106335) Remove private _PyThreadState and _PyInterpreterState C API functions: move them to the internal C API (pycore_pystate.h and pycore_interp.h). Don't export most of these functions anymore, but still export functions used by tests. Remove _PyThreadState_Prealloc() and _PyThreadState_Init() from the C API, but keep it in the stable API. From 789038897bb34e5b0cae867421d1d814d967c580 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Sat, 30 Dec 2023 16:00:03 +0000 Subject: [PATCH 2/8] Doc: minor change --- Doc/library/array.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/Doc/library/array.rst b/Doc/library/array.rst index e0b1eb89cf6c05..3c9658ebd72105 100644 --- a/Doc/library/array.rst +++ b/Doc/library/array.rst @@ -279,3 +279,4 @@ Examples:: `NumPy `_ The NumPy package defines another array type. + From 50763c4e426d27c1839eda708fa68ee451e69150 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Mon, 25 Mar 2024 19:23:48 +0000 Subject: [PATCH 3/8] Revert "Doc: minor change" This reverts commit ebfa0937c2caf0110ab1540f14956d56fe925092. --- Doc/library/array.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/Doc/library/array.rst b/Doc/library/array.rst index 3c9658ebd72105..e0b1eb89cf6c05 100644 --- a/Doc/library/array.rst +++ b/Doc/library/array.rst @@ -279,4 +279,3 @@ Examples:: `NumPy `_ The NumPy package defines another array type. - From 558d97f1c82b3fdbebc4cf710a238ad2f1c2b1c2 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Sun, 8 Jun 2025 15:23:54 +0100 Subject: [PATCH 4/8] gh-133244: Add TPen.pensize tests --- Lib/test/test_turtle.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Lib/test/test_turtle.py b/Lib/test/test_turtle.py index d02cac284a909a..c4c132d39142f7 100644 --- a/Lib/test/test_turtle.py +++ b/Lib/test/test_turtle.py @@ -480,6 +480,21 @@ def test_teleport(self): tpen.teleport(-100, -100, fill_gap=fill_gap_value) self.assertTrue(tpen.isdown()) + def test_pensize_with_positive_numbers(self): + tpen = turtle.TPen() + + tpen.pensize(42) + self.assertEqual(42, tpen.pensize()) + + def test_pensize_with_nonpositive_numbers(self): + tpen = turtle.TPen() + + tpen.pensize(0) + self.assertEqual(0, tpen.pensize()) + + tpen.pensize(-1) + self.assertEqual(-1, tpen.pensize()) + class TestTurtleScreen(unittest.TestCase): def test_save_raises_if_wrong_extension(self) -> None: From 08c5c480302b6fa13766808f5bb3d362c244554b Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Sun, 8 Jun 2025 16:11:46 +0100 Subject: [PATCH 5/8] gh-133244 TPen.pensize raises TurtleGraphicsError if called with a negative number --- Lib/test/test_turtle.py | 8 ++++++-- Lib/turtle.py | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_turtle.py b/Lib/test/test_turtle.py index c4c132d39142f7..10f7f32722a05a 100644 --- a/Lib/test/test_turtle.py +++ b/Lib/test/test_turtle.py @@ -492,8 +492,12 @@ def test_pensize_with_nonpositive_numbers(self): tpen.pensize(0) self.assertEqual(0, tpen.pensize()) - tpen.pensize(-1) - self.assertEqual(-1, tpen.pensize()) + width = -1 + msg = f"width argument must be a positive number. It was {width}." + with self.assertRaisesRegex(turtle.TurtleGraphicsError, re.escape(msg)): + tpen.pensize(width) + + self.assertEqual(0, tpen.pensize()) class TestTurtleScreen(unittest.TestCase): diff --git a/Lib/turtle.py b/Lib/turtle.py index e88981d298ad52..d4b35a17b0d5ee 100644 --- a/Lib/turtle.py +++ b/Lib/turtle.py @@ -2141,7 +2141,10 @@ def pensize(self, width=None): """ if width is None: return self._pensize - self.pen(pensize=width) + elif width < 0: + raise TurtleGraphicsError(f"width argument must be a positive number. It was {width}.") + else: + self.pen(pensize=width) def penup(self): From 130e36d88d3664a84793cb0569f721380375b8ec Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 08:11:48 +0000 Subject: [PATCH 6/8] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst diff --git a/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst b/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst new file mode 100644 index 00000000000000..7beb7532cd89fe --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst @@ -0,0 +1 @@ +TPen.pensize raises TurtleGraphicsError if called with a negative number From f021b16747644a1b4673dc81fa833c3a79e84aa7 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Mon, 9 Jun 2025 09:05:15 +0100 Subject: [PATCH 7/8] gh-133244: Replace 'it was' by 'but got' in error message --- Lib/test/test_turtle.py | 2 +- Lib/turtle.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_turtle.py b/Lib/test/test_turtle.py index 10f7f32722a05a..91786eee2c7ffb 100644 --- a/Lib/test/test_turtle.py +++ b/Lib/test/test_turtle.py @@ -493,7 +493,7 @@ def test_pensize_with_nonpositive_numbers(self): self.assertEqual(0, tpen.pensize()) width = -1 - msg = f"width argument must be a positive number. It was {width}." + msg = f"width argument must be a positive number, but got {width}." with self.assertRaisesRegex(turtle.TurtleGraphicsError, re.escape(msg)): tpen.pensize(width) diff --git a/Lib/turtle.py b/Lib/turtle.py index d4b35a17b0d5ee..6537363faa1619 100644 --- a/Lib/turtle.py +++ b/Lib/turtle.py @@ -2142,7 +2142,8 @@ def pensize(self, width=None): if width is None: return self._pensize elif width < 0: - raise TurtleGraphicsError(f"width argument must be a positive number. It was {width}.") + msg = f"width argument must be a positive number, but got {width}." + raise TurtleGraphicsError(msg) else: self.pen(pensize=width) From 952ec27604c78c16859634ce3292770bac793dd1 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Mon, 9 Jun 2025 15:04:01 +0100 Subject: [PATCH 8/8] gh-133244: Update news about TPen.pensize Co-authored-by: Peter Bierma --- .../next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst b/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst index 7beb7532cd89fe..f547b0799d2943 100644 --- a/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst +++ b/Misc/NEWS.d/next/Library/2025-06-09-08-11-47.gh-issue-133244.GINMl-.rst @@ -1 +1 @@ -TPen.pensize raises TurtleGraphicsError if called with a negative number +:meth:`!turtle.TPen.pensize` raises an exception if called with a negative *width* argument.