From 40a50c966c7c92b1abe695fe34a09c72000958f3 Mon Sep 17 00:00:00 2001 From: Thomas Ballinger Date: Thu, 18 Nov 2021 12:16:48 -0800 Subject: [PATCH] __main__ behavior for importcompletion.py --- bpython/importcompletion.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/bpython/importcompletion.py b/bpython/importcompletion.py index c5dc28f0..aac0b3b8 100644 --- a/bpython/importcompletion.py +++ b/bpython/importcompletion.py @@ -66,6 +66,7 @@ def __init__( skiplist if skiplist is not None else tuple() ) self.fully_loaded = False + self.print_packages_traversed = False if paths is None: self.modules.update(sys.builtin_module_names) @@ -220,6 +221,8 @@ def find_modules( continue if (stat.st_dev, stat.st_ino) not in self.paths: self.paths.add((stat.st_dev, stat.st_ino)) + if (self.print_packages_traversed): + print(path_real) for subname in self.find_modules(path_real): if subname is None: yield None # take a break to avoid unresponsiveness @@ -250,3 +253,33 @@ def find_coroutine(self) -> Optional[bool]: self.fully_loaded = True return True + + +def discover( + skiplist: Optional[Sequence[str]] = None, + print_packages_traversed=True + ): + module_gatherer = ModuleGatherer(skiplist=skiplist) + module_gatherer.print_packages_traversed = print_packages_traversed + while module_gatherer.find_coroutine(): + pass + + +if __name__ == "__main__": + import argparse + from pathlib import Path + + from bpython.config import Config, default_config_path + + parser = argparse.ArgumentParser() + parser.add_argument( + "--config", + default=default_config_path(), + type=Path, + help="Use CONFIG instead of default config file.", + ) + config = Config(default_config_path()) + discover( + config.import_completion_skiplist, + print_packages_traversed=True + )