17
17
import site
18
18
import sysconfig
19
19
20
- # deal with removal of imp from python 3.12
21
- try :
22
- import imp
23
- except ImportError :
24
- import _imp as imp
25
-
26
20
27
21
# Directories in which the standard library and installed packages may be located.
28
22
# Modules in these locations will be whitelisted:
@@ -63,16 +57,8 @@ def mainloop(self):
63
57
while True :
64
58
time .sleep (1 )
65
59
with self .lock :
66
- # Acquire the import lock so that we don't unload modules whilst an
67
- # import is in progess:
68
- imp .acquire_lock ()
69
- try :
70
- if self .check ():
71
- self .unload ()
72
- finally :
73
- # We're done mucking around with the cached modules, normal imports
74
- # in other threads may resume:
75
- imp .release_lock ()
60
+ if self .check ():
61
+ self .unload ()
76
62
77
63
def check (self ):
78
64
unload_required = False
@@ -138,3 +124,32 @@ def unload(self):
138
124
# code holds references to sys.meta_path, and to preserve order, since order
139
125
# is relevant.
140
126
sys .meta_path [:] = self .meta_whitelist
127
+
128
+ if __name__ == "__main__" :
129
+
130
+ from pathlib import Path
131
+ import time
132
+
133
+ dict1 = {'t' : 5 , 'val' : 10 }
134
+ dict2 = {'t' : 5 , 'val' : 11 }
135
+
136
+ print ('ModuleWatcher instatiated in debug mode' )
137
+ module_watcher = ModuleWatcher (debug = True )
138
+
139
+ # import a local module
140
+ import labscript_utils .dict_diff
141
+ print ('imported labscript_utils.dict_diff' )
142
+ print (labscript_utils .dict_diff .dict_diff (dict1 , dict2 ))
143
+ print ('used dict_diff function, waiting 2 seconds for module watcher to update' )
144
+ time .sleep (2 )
145
+
146
+ # now pretend it has been updated
147
+ ex_mod = Path ('dict_diff.py' )
148
+ ex_mod .touch ()
149
+ print ('dict_diff module touched, waiting 2 seconds for ModuleWatcher to notice' )
150
+ time .sleep (2 )
151
+
152
+ print (labscript_utils .dict_diff .dict_diff (dict1 , dict2 ))
153
+ print ('Used dict_diff again, waiting 2 seconds for ModuleWatcher to not do anything' )
154
+ time .sleep (2 )
155
+
0 commit comments