Check whether some modules need to be reloaded.
(self, check_all=False, do_reload=True, execution_info=None)
| 270 | return py_filename, pymtime |
| 271 | |
| 272 | def check(self, check_all=False, do_reload=True, execution_info=None): |
| 273 | """Check whether some modules need to be reloaded.""" |
| 274 | |
| 275 | if not self.enabled and not check_all: |
| 276 | return |
| 277 | |
| 278 | if check_all or self.check_all: |
| 279 | modules = list(sys.modules.keys()) |
| 280 | else: |
| 281 | modules = list(self.modules.keys()) |
| 282 | |
| 283 | # Use the persistent import_from_tracker |
| 284 | import_from_tracker = ( |
| 285 | self.import_from_tracker if self.import_from_tracker.imports_froms else None |
| 286 | ) |
| 287 | for modname in modules: |
| 288 | m = sys.modules.get(modname, None) |
| 289 | |
| 290 | if modname in self.skip_modules: |
| 291 | continue |
| 292 | |
| 293 | py_filename, pymtime = self.filename_and_mtime(m) |
| 294 | if py_filename is None: |
| 295 | continue |
| 296 | |
| 297 | try: |
| 298 | if pymtime <= self.modules_mtimes[modname]: |
| 299 | continue |
| 300 | except KeyError: |
| 301 | self.modules_mtimes[modname] = pymtime |
| 302 | continue |
| 303 | else: |
| 304 | if self.failed.get(py_filename, None) == pymtime: |
| 305 | continue |
| 306 | |
| 307 | self.modules_mtimes[modname] = pymtime |
| 308 | |
| 309 | # If we've reached this point, we should try to reload the module |
| 310 | if do_reload: |
| 311 | self._report(f"Reloading '{modname}'.") |
| 312 | try: |
| 313 | if self.autoload_obj: |
| 314 | superreload( |
| 315 | m, |
| 316 | reload, |
| 317 | self.old_objects, |
| 318 | self.shell, |
| 319 | import_from_tracker=import_from_tracker, |
| 320 | ) |
| 321 | # if not using autoload, check if deduperreload is viable for this module |
| 322 | elif self.deduper_reloader.maybe_reload_module(m): |
| 323 | pass |
| 324 | else: |
| 325 | superreload(m, reload, self.old_objects) |
| 326 | if py_filename in self.failed: |
| 327 | del self.failed[py_filename] |
| 328 | except: |
| 329 | if not self.hide_errors: |
no test coverage detected