@@ -27,6 +27,7 @@ def __init__(self, *args, _root=None, **kwargs):
27
27
args .update (kwargs )
28
28
self .confs = {k : _root ._config_var_dict [k ] for k in args }
29
29
self .new_vals = args
30
+ self ._root = _root
30
31
31
32
def __call__ (self , f ):
32
33
@wraps (f )
@@ -39,18 +40,18 @@ def res(*args, **kwargs):
39
40
def __enter__ (self ):
40
41
self .old_vals = {}
41
42
for k , v in self .confs .items ():
42
- self .old_vals [k ] = v .__get__ (True , None )
43
+ self .old_vals [k ] = v .__get__ (self . _root , self . _root . __class__ )
43
44
try :
44
45
for k , v in self .confs .items ():
45
- v .__set__ (None , self .new_vals [k ])
46
+ v .__set__ (self . _root , self .new_vals [k ])
46
47
except Exception :
47
48
_logger .error (f"Failed to change flags for { self .confs } ." )
48
49
self .__exit__ ()
49
50
raise
50
51
51
52
def __exit__ (self , * args ):
52
53
for k , v in self .confs .items ():
53
- v .__set__ (None , self .old_vals [k ])
54
+ v .__set__ (self . _root , self .old_vals [k ])
54
55
55
56
56
57
def _hash_from_code (msg ):
@@ -84,7 +85,7 @@ def config_print(self, buf, print_doc=True):
84
85
print (cv , file = buf )
85
86
if print_doc :
86
87
print (" Doc: " , cv .doc , file = buf )
87
- print (" Value: " , cv .__get__ (True , None ), file = buf )
88
+ print (" Value: " , cv .__get__ (self , self . __class__ ), file = buf )
88
89
print ("" , file = buf )
89
90
90
91
def get_config_hash (self ):
@@ -104,7 +105,7 @@ def get_config_hash(self):
104
105
return _hash_from_code (
105
106
"\n " .join (
106
107
[
107
- "{} = {}" .format (cv .fullname , cv .__get__ (True , None ))
108
+ "{} = {}" .format (cv .fullname , cv .__get__ (self , self . __class__ ))
108
109
for cv in all_opts
109
110
]
110
111
)
0 commit comments