gh-78889: Stop IDLE Shell freezes from sys.stdout.shell.xyz (GH-121876)
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.
(cherry picked from commit
58753f33e47fe48906883dc010771f68c13b7e52)
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
=========================
+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'.
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
--- /dev/null
+Stop Shell freezes by blocking user access to non-method sys.stdout.shell attributes,
+which are all private.