Skip to content

Commit

Permalink
pythongh-78889: Stop IDLE Shell freezes from sys.stdout.shell.xyz
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 committed Jul 16, 2024
1 parent 69c68de commit c6d6df4
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Lib/idlelib/News3.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ Released on 2024-10-xx
=========================


gh-78889: Stop Shell freezes by blocking user access to 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 sys.stdout.shell attributes,
which are all private.

0 comments on commit c6d6df4

Please sign in to comment.