##// END OF EJS Templates
Add `%averbose` magic command.
Emilio Graff -
Show More
@@ -70,6 +70,18 b' The following magic commands are provided:'
70
70
71 Mark module 'foo' to not be autoreloaded.
71 Mark module 'foo' to not be autoreloaded.
72
72
73 ``%averbose off``
74
75 Perform autoreload tasks quietly
76
77 ``%averbose on``
78
79 Report activity with `print` statements.
80
81 ``%averbose log``
82
83 Report activity with the logger.
84
73 Caveats
85 Caveats
74 =======
86 =======
75
87
@@ -123,6 +135,7 b' import traceback'
123 import types
135 import types
124 import weakref
136 import weakref
125 import gc
137 import gc
138 import logging
126 from importlib import import_module, reload
139 from importlib import import_module, reload
127 from importlib.util import source_from_cache
140 from importlib.util import source_from_cache
128
141
@@ -154,6 +167,9 b' class ModuleReloader:'
154 self.modules_mtimes = {}
167 self.modules_mtimes = {}
155 self.shell = shell
168 self.shell = shell
156
169
170 # Reporting callable for verbosity
171 self._report = lambda msg: None # by default, be quiet.
172
157 # Cache module modification times
173 # Cache module modification times
158 self.check(check_all=True, do_reload=False)
174 self.check(check_all=True, do_reload=False)
159
175
@@ -252,6 +268,7 b' class ModuleReloader:'
252
268
253 # If we've reached this point, we should try to reload the module
269 # If we've reached this point, we should try to reload the module
254 if do_reload:
270 if do_reload:
271 self._report(f"Reloading '{modname}'.")
255 try:
272 try:
256 if self.autoload_obj:
273 if self.autoload_obj:
257 superreload(m, reload, self.old_objects, self.shell)
274 superreload(m, reload, self.old_objects, self.shell)
@@ -608,6 +625,29 b' class AutoreloadMagics(Magics):'
608 # Inject module to user namespace
625 # Inject module to user namespace
609 self.shell.push({top_name: top_module})
626 self.shell.push({top_name: top_module})
610
627
628 @line_magic
629 def averbose(self, parameter_s=""):
630 r"""%averbose => Turn verbosity on/off for autoreloading.
631
632 %averbose 0 or %averbose off
633 Turn off any reporting during autoreload.
634
635 %averbose 1 or %averbose on
636 Report autoreload activity via print statements.
637
638 %averbose 2 or %averbose log
639 Report autoreload activity via logging.
640 """
641
642 if parameter_s == "0" or parameter_s.lower() == "off":
643 self._reloader._report = lambda msg: None
644 elif parameter_s == "1" or parameter_s.lower() == "on":
645 self._reloader._report = lambda msg: print(msg)
646 elif parameter_s == "2" or parameter_s.lower() == "log":
647 self._reloader._report = lambda msg: logging.getLogger('autoreload').info(msg)
648 else:
649 raise ValueError(f'Unrecognized parameter "{parameter_s}".')
650
611 def pre_run_cell(self):
651 def pre_run_cell(self):
612 if self._reloader.enabled:
652 if self._reloader.enabled:
613 try:
653 try:
General Comments 0
You need to be logged in to leave comments. Login now