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