@@ -19,17 +19,20 @@ def __init__(self, paths, on_change):
1919 self .observer = Observer ()
2020 self .old_dirs = defaultdict (set )
2121 self .started = False
22+ self .activated = False
2223 for path in paths :
23- self .add_module (path )
24+ self ._add_module (path )
2425
2526 def reset (self ):
2627 self .dirs = defaultdict (set )
2728 del self .modules_to_add_later [:]
2829 self .old_dirs = defaultdict (set )
2930 self .observer .unschedule_all ()
3031
31- def add_module (self , path ):
32- """Add a python module to track changes to"""
32+ def _add_module (self , path ):
33+ """Add a python module to track changes to
34+
35+ Can"""
3336 path = os .path .abspath (path )
3437 for suff in importcompletion .SUFFIXES :
3538 if path .endswith (suff ):
@@ -40,24 +43,36 @@ def add_module(self, path):
4043 self .observer .schedule (self , dirname , recursive = False )
4144 self .dirs [os .path .dirname (path )].add (path )
4245
43- def add_module_later (self , path ):
46+ def _add_module_later (self , path ):
4447 self .modules_to_add_later .append (path )
48+
49+ def track_module (self , path ):
50+ """
51+ Begins tracking this if activated, or remembers to track later.
52+ """
53+ if self .activated :
54+ self ._add_module (path )
55+ else :
56+ self ._add_module_later (path )
4557
4658 def activate (self ):
59+ if self .activated :
60+ raise ValueError ("%r is already activated." % (self ,))
4761 if not self .started :
4862 self .started = True
4963 self .observer .start ()
50- self .dirs = self .old_dirs
5164 for dirname in self .dirs :
5265 self .observer .schedule (self , dirname , recursive = False )
5366 for module in self .modules_to_add_later :
54- self .add_module (module )
67+ self ._add_module (module )
5568 del self .modules_to_add_later [:]
69+ self .activated = True
5670
5771 def deactivate (self ):
72+ if not self .activated :
73+ raise ValueError ("%r is not activated." % (self ,))
5874 self .observer .unschedule_all ()
59- self .old_dirs = self .dirs
60- self .dirs = defaultdict (set )
75+ self .activated = False
6176
6277 def on_any_event (self , event ):
6378 dirpath = os .path .dirname (event .src_path )
@@ -66,12 +81,5 @@ def on_any_event(self, event):
6681 self .on_change (files_modified = [event .src_path ])
6782
6883if __name__ == '__main__' :
69- m = ModuleChangedEventHandler ([])
70- m .add_module ('./wdtest.py' )
71- try :
72- while True :
73- time .sleep (1 )
74- except KeyboardInterrupt :
75- m .observer .stop ()
76- m .observer .join ()
84+ pass
7785
0 commit comments