Skip to content

Commit

Permalink
gh-78889: Stop IDLE Shell freezes from sys.stdout.shell.xyz (#121876)
Browse files Browse the repository at this point in the history
Problem occurred when attribute xyz could not be pickled.
Since this is not trivial to selectively fix, block all
attributes (other than 'width').  IDLE does not access them
and they are private implementation details.
  • Loading branch information
terryjreedy authored Jul 17, 2024
1 parent 6682d91 commit 58753f3
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Lib/idlelib/News3.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Released on 2024-10-xx
=========================


gh-78889: Stop Shell freezes by blocking user access to non-method
sys.stdout.shell attributes, which are all private.

gh-78955: Use user-selected color theme for Help => IDLE Doc.

gh-96905: In idlelib code, stop redefining built-ins 'dict' and 'object'.
Expand Down
3 changes: 3 additions & 0 deletions Lib/idlelib/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,9 @@ class StdioFile(io.TextIOBase):

def __init__(self, shell, tags, encoding='utf-8', errors='strict'):
self.shell = shell
# GH-78889: accessing unpickleable attributes freezes Shell.
# IDLE only needs methods; allow 'width' for possible use.
self.shell._RPCProxy__attributes = {'width': 1}
self.tags = tags
self._encoding = encoding
self._errors = errors
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Stop Shell freezes by blocking user access to non-method sys.stdout.shell attributes,
which are all private.

0 comments on commit 58753f3

Please sign in to comment.