From 7cfe2c47750e7f836607c96d6f3590044216bdf5 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Thu, 26 Mar 2026 07:21:06 +0100 Subject: [PATCH] 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 --- src/python/jw/pkg/lib/App.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/python/jw/pkg/lib/App.py b/src/python/jw/pkg/lib/App.py index 98432d01..04463911 100644 --- a/src/python/jw/pkg/lib/App.py +++ b/src/python/jw/pkg/lib/App.py @@ -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