11import threading
2- import typing
3-
4- from traincheck .utils import typename
5-
6- if typing .TYPE_CHECKING :
7- from .proxy import Proxy
82
93
104class RegistryEntry :
11- """A class to store the proxy object and its associated metadata"""
5+ """A class to store the tracked object and its associated metadata"""
126
13- def __init__ (self , proxy : "Proxy" , stale : bool ):
14- self .proxy = proxy
7+ def __init__ (self , obj , var_name , var_type , stale ):
8+ self .var = obj
9+ self .var_name = var_name
10+ self .var_type = var_type
1511 self .stale = stale
1612
1713
@@ -30,14 +26,18 @@ def __init__(self):
3026 self .registry : dict [str , RegistryEntry ] = {}
3127 self .registry_lock = threading .Lock ()
3228
33- def add_var (self , var : "Proxy" , var_name : str ):
29+ def add_var (self , var , var_name : str , var_type : str ):
3430 """Add a new proxy variable to the registry"""
3531 with self .registry_lock :
3632 if var_name in self .registry :
37- self .registry [var_name ].proxy = var
33+ self .registry [var_name ].var = var
34+ self .registry [var_name ].var_name = var_name
35+ self .registry [var_name ].var_type = var_type
3836 self .registry [var_name ].stale = False
3937 else :
40- self .registry [var_name ] = RegistryEntry (proxy = var , stale = False )
38+ self .registry [var_name ] = RegistryEntry (
39+ var , var_name , var_type , stale = False
40+ )
4141
4242 def dump_sample (self , dump_loc = None ):
4343 """A complete dump of all present proxy objects
@@ -48,7 +48,7 @@ def dump_sample(self, dump_loc=None):
4848 with self .registry_lock :
4949 for _ , entry in self .registry .items ():
5050 entry .stale = True
51- entry .proxy .dump_trace (phase = "sample" , dump_loc = dump_loc )
51+ entry .var .dump_trace (phase = "sample" , dump_loc = dump_loc )
5252
5353 def dump_modified (self , dump_loc = None , dump_config = None ):
5454 """Dump only the proxy variables that might be modified since last dump
@@ -73,16 +73,16 @@ def dump_modified(self, dump_loc=None, dump_config=None):
7373 """
7474 to_dump_types = set (dump_config .keys ())
7575 with self .registry_lock :
76- for var_name , entry in self .registry .items ():
77- var_type = typename ( entry .proxy . _obj , is_runtime = True )
76+ for _ , entry in self .registry .items ():
77+ var_type = entry .var_type
7878 if var_type not in to_dump_types :
7979 continue
8080
8181 if entry .stale :
8282 continue
8383
8484 entry .stale = True
85- entry .proxy .dump_trace (phase = "selective-sample" , dump_loc = dump_loc )
85+ entry .var .dump_trace (phase = "selective-sample" , dump_loc = dump_loc )
8686 if not dump_config [var_type ]["dump_unchanged" ]:
8787 # remove the var from to_dump_types so that we don't dump the same type twice
8888 to_dump_types .remove (var_type )
0 commit comments