lib.App._run(): default_completer=NoopCompleter()

By default, argcomplete uses argcomplete.FilesCompleter as default
for every argument. This mixes accessible files into the list of
possible completions. For most of jw-pkg's commands, that's unwanted,
so turn it off by defining a NoopCompleter class which does nothing,
and by set every arguments's default completer to a NoopCompleter
instance. If desired, completing files can be restored for an
argument by

   parser.add_argument("some-arg").completer = FilesCompleter()

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-03-26 07:21:06 +01:00
commit 7cfe2c4775

View file

@ -103,8 +103,11 @@ class App: # export
async def __run(self, argv=None) -> None:
try:
class NoopCompleter:
def __call__(self, **kwargs):
return ()
import argcomplete # Don't require it to be compatible with minimal environments
argcomplete.autocomplete(self.__parser)
argcomplete.autocomplete(self.__parser, default_completer=NoopCompleter())
except:
pass