From 6521268e21990c2bc68cf13c89fe2547a045cc48 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 2 Jul 2023 18:11:45 +0200 Subject: [PATCH 01/10] 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 02/10] 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 e0b1eb89cf6c05a..3c9658ebd72105e 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 03/10] 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 3c9658ebd72105e..e0b1eb89cf6c05a 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 04/10] 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 d02cac284a909ac..c4c132d39142f77 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 05/10] 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 c4c132d39142f77..10f7f32722a05aa 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 e88981d298ad52e..d4b35a17b0d5ee4 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 06/10] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20b?= =?UTF-8?q?lurb=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 000000000000000..7beb7532cd89fea --- /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 07/10] 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 10f7f32722a05aa..91786eee2c7ffb6 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 d4b35a17b0d5ee4..6537363faa16195 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 08/10] 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 7beb7532cd89fea..f547b0799d29437 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. From 132b82d2e7dc54928f4d3ee1d3331f179f75f615 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Sun, 13 Jul 2025 17:29:20 +0100 Subject: [PATCH 09/10] gh-133244: Update TPen.pensize doc (turtle module) --- Doc/library/turtle.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index fea6b57edf0f1fc..5e436a68ba8cbbc 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -1079,6 +1079,8 @@ Drawing state :param width: a positive number + :raises TurtleGraphicsError: If *width* is less than zero. + Set the line thickness to *width* or return it. If resizemode is set to "auto" and turtleshape is a polygon, that polygon is drawn with the same line thickness. If no argument is given, the current pensize is returned. @@ -1090,6 +1092,9 @@ Drawing state 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn + .. versionchanged:: next + Raise :exc:`TurtleGraphicsError` if *width* is less than zero. + .. function:: pen(pen=None, **pendict) From 75fec258795f28b98db929b551c79e77aa17ca4a Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Mon, 24 Aug 2026 09:44:09 -0300 Subject: [PATCH 10/10] Update Lib/turtle.py Co-authored-by: Stan Ulbrych --- Lib/turtle.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Lib/turtle.py b/Lib/turtle.py index 6537363faa16195..62f9abf31601c76 100644 --- a/Lib/turtle.py +++ b/Lib/turtle.py @@ -2142,8 +2142,9 @@ def pensize(self, width=None): if width is None: return self._pensize elif width < 0: - msg = f"width argument must be a positive number, but got {width}." - raise TurtleGraphicsError(msg) + raise TurtleGraphicsError( + f"width argument must be a non-negative number, but got {width!r}." + ) else: self.pen(pensize=width)