Skip to content

Commit 7712e28

Browse files
Fix watchdog auto-reloading
1 parent 33c62da commit 7712e28

File tree

2 files changed

+8
-30
lines changed

2 files changed

+8
-30
lines changed

bpython/curtsies.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def _schedule_refresh(self, when: float) -> None:
106106
return self._schedule_refresh_callback(when)
107107

108108
def _request_reload(self, files_modified: Sequence[str]) -> None:
109-
return self._request_reload_callback(files_modified)
109+
return self._request_reload_callback(files_modified=files_modified)
110110

111111
def interrupting_refresh(self) -> None:
112112
return self._interrupting_refresh_callback()

bpython/curtsiesfrontend/repl.py

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -269,54 +269,39 @@ def __init__(self, watcher, loader):
269269
def __getattr__(self, name):
270270
if name == "create_module" and hasattr(self.loader, name):
271271
return self._create_module
272-
if name == "load_module" and hasattr(self.loader, name):
273-
return self._load_module
274272
return getattr(self.loader, name)
275273

276274
def _create_module(self, spec):
277-
spec = self.loader.create_module(spec)
275+
module_object = self.loader.create_module(spec)
278276
if (
279277
getattr(spec, "origin", None) is not None
280278
and spec.origin != "builtin"
281279
):
282280
self.watcher.track_module(spec.origin)
283-
return spec
284-
285-
def _load_module(self, name):
286-
module = self.loader.load_module(name)
287-
if hasattr(module, "__file__"):
288-
self.watcher.track_module(module.__file__)
289-
return module
281+
return module_object
290282

291283

292284
class ImportFinder:
293-
"""Wrapper for finders in sys.meta_path to replace wrap all loaders with ImportLoader."""
285+
"""Wrapper for finders in sys.meta_path to wrap all loaders with ImportLoader."""
294286

295-
def __init__(self, finder, watcher):
287+
def __init__(self, watcher, finder):
296288
self.watcher = watcher
297289
self.finder = finder
298290

299291
def __getattr__(self, name):
300292
if name == "find_spec" and hasattr(self.finder, name):
301293
return self._find_spec
302-
if name == "find_module" and hasattr(self.finder, name):
303-
return self._find_module
304294
return getattr(self.finder, name)
305295

306296
def _find_spec(self, fullname, path, target=None):
307297
# Attempt to find the spec
308298
spec = self.finder.find_spec(fullname, path, target)
309299
if spec is not None:
310-
if getattr(spec, "__loader__", None) is not None:
300+
if getattr(spec, "loader", None) is not None:
311301
# Patch the loader to enable reloading
312-
spec.__loader__ = ImportLoader(self.watcher, spec.__loader__)
302+
spec.loader = ImportLoader(self.watcher, spec.loader)
313303
return spec
314304

315-
def _find_module(self, fullname, path=None):
316-
loader = self.finder.find_module(fullname, path)
317-
if loader is not None:
318-
return ImportLoader(self.watcher, loader)
319-
320305

321306
def _process_ps(ps, default_ps: str):
322307
"""Replace ps1/ps2 with the default if the user specified value contains control characters."""
@@ -607,14 +592,7 @@ def __enter__(self):
607592
if self.watcher:
608593
meta_path = []
609594
for finder in sys.meta_path:
610-
# All elements get wrapped in ImportFinder instances execepted for instances of
611-
# _SixMetaPathImporter (from six). When importing six, it will check if the importer
612-
# is already part of sys.meta_path and will remove instances. We do not want to
613-
# break this feature (see also #874).
614-
if type(finder).__name__ == "_SixMetaPathImporter":
615-
meta_path.append(finder)
616-
else:
617-
meta_path.append(ImportFinder(finder, self.watcher))
595+
meta_path.append(ImportFinder(self.watcher, finder))
618596
sys.meta_path = meta_path
619597

620598
sitefix.monkeypatch_quit()

0 commit comments

Comments
 (0)