summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/Delegator.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2016-05-16 02:06:49 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2016-05-16 02:06:49 (GMT)
commit33a8fb9920efc4e4f8c6afa1062c966b27f222a9 (patch)
tree23f5170e25b3b3f1ee5a0ab5e634bc32b7ea5b8c /Lib/idlelib/Delegator.py
parent5f4ac9fcf3fbd90a25db7e17060df935506835c9 (diff)
downloadcpython-33a8fb9920efc4e4f8c6afa1062c966b27f222a9.zip
cpython-33a8fb9920efc4e4f8c6afa1062c966b27f222a9.tar.gz
cpython-33a8fb9920efc4e4f8c6afa1062c966b27f222a9.tar.bz2
Issue #23977: Tweak IDLE Delegator and its test.
Diffstat (limited to 'Lib/idlelib/Delegator.py')
-rw-r--r--Lib/idlelib/Delegator.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/Lib/idlelib/Delegator.py b/Lib/idlelib/Delegator.py
index c476516..dc2a1aa 100644
--- a/Lib/idlelib/Delegator.py
+++ b/Lib/idlelib/Delegator.py
@@ -1,10 +1,10 @@
class Delegator:
- # The cache is only used to be able to change delegates!
-
def __init__(self, delegate=None):
self.delegate = delegate
self.__cache = set()
+ # Cache is used to only remove added attributes
+ # when changing the delegate.
def __getattr__(self, name):
attr = getattr(self.delegate, name) # May raise AttributeError
@@ -13,6 +13,9 @@ class Delegator:
return attr
def resetcache(self):
+ "Removes added attributes while leaving original attributes."
+ # Function is really about resetting delagator dict
+ # to original state. Cache is just a means
for key in self.__cache:
try:
delattr(self, key)
@@ -21,5 +24,10 @@ class Delegator:
self.__cache.clear()
def setdelegate(self, delegate):
+ "Reset attributes and change delegate."
self.resetcache()
self.delegate = delegate
+
+if __name__ == '__main__':
+ from unittest import main
+ main('idlelib.idle_test.test_delegator', verbosity=2)