Fixes 2 bugs in no_subclasses context mgr (__exit__ swallows exception + repair feature)

This commit is contained in:
Bastien Gérard
2018-09-01 23:30:50 +02:00
parent 1b0c761fc0
commit a7852a89cc
2 changed files with 38 additions and 15 deletions

View File

@@ -145,18 +145,17 @@ class no_sub_classes(object):
:param cls: the class to turn querying sub classes on
"""
self.cls = cls
self.cls_initial_subclasses = None
def __enter__(self):
"""Change the objects default and _auto_dereference values."""
self.cls._all_subclasses = self.cls._subclasses
self.cls._subclasses = (self.cls,)
self.cls_initial_subclasses = self.cls._subclasses
self.cls._subclasses = (self.cls._class_name,)
return self.cls
def __exit__(self, t, value, traceback):
"""Reset the default and _auto_dereference values."""
self.cls._subclasses = self.cls._all_subclasses
delattr(self.cls, '_all_subclasses')
return self.cls
self.cls._subclasses = self.cls_initial_subclasses
class query_counter(object):