question_cmd: tag options without a tag (e. g. '-t') now select ALL tags
This commit is contained in:
parent
6d085a6c80
commit
d8aeb6cb0c
@ -125,7 +125,7 @@ def make_msg_args(msg: Message, args: argparse.Namespace) -> argparse.Namespace:
|
||||
msg_args.AI = msg.ai
|
||||
if args.model is None and msg.model is not None:
|
||||
msg_args.model = msg.model
|
||||
if (args.output_tags is None or len(args.output_tags) == 0) and msg.tags is not None:
|
||||
if args.output_tags is None and msg.tags is not None:
|
||||
msg_args.output_tags = msg.tags
|
||||
return msg_args
|
||||
|
||||
@ -151,13 +151,34 @@ def repeat_messages(messages: list[Message], chat: ChatDB, args: argparse.Namesp
|
||||
make_request(ai, chat, message, args)
|
||||
|
||||
|
||||
def modify_tag_args(args: argparse.Namespace) -> None:
|
||||
"""
|
||||
Changes the semantics of the INPUT tags for this command:
|
||||
* not tags specified on the CLI -> no tags are selected
|
||||
* empty tags specified on the CLI -> all tags are selected
|
||||
"""
|
||||
if args.or_tags is None:
|
||||
args.or_tags = set()
|
||||
elif len(args.or_tags) == 0:
|
||||
args.or_tags = None
|
||||
if args.and_tags is None:
|
||||
args.and_tags = set()
|
||||
elif len(args.and_tags) == 0:
|
||||
args.and_tags = None
|
||||
if args.exclude_tags is None:
|
||||
args.exclude_tags = set()
|
||||
elif len(args.exclude_tags) == 0:
|
||||
args.exclude_tags = None
|
||||
|
||||
|
||||
def question_cmd(args: argparse.Namespace, config: Config) -> None:
|
||||
"""
|
||||
Handler for the 'question' command.
|
||||
"""
|
||||
mfilter = MessageFilter(tags_or=args.or_tags if args.or_tags is not None else set(),
|
||||
tags_and=args.and_tags if args.and_tags is not None else set(),
|
||||
tags_not=args.exclude_tags if args.exclude_tags is not None else set())
|
||||
modify_tag_args(args)
|
||||
mfilter = MessageFilter(tags_or=args.or_tags,
|
||||
tags_and=args.and_tags,
|
||||
tags_not=args.exclude_tags)
|
||||
chat = ChatDB.from_dir(cache_path=Path(config.cache),
|
||||
db_path=Path(config.db),
|
||||
mfilter=mfilter)
|
||||
|
||||
@ -34,13 +34,13 @@ def create_parser() -> argparse.ArgumentParser:
|
||||
|
||||
# a parent parser for all commands that support tag selection
|
||||
tag_parser = argparse.ArgumentParser(add_help=False)
|
||||
tag_arg = tag_parser.add_argument('-t', '--or-tags', nargs='+',
|
||||
tag_arg = tag_parser.add_argument('-t', '--or-tags', nargs='*',
|
||||
help='List of tags (one must match)', metavar='OTAGS')
|
||||
tag_arg.completer = tags_completer # type: ignore
|
||||
atag_arg = tag_parser.add_argument('-k', '--and-tags', nargs='+',
|
||||
atag_arg = tag_parser.add_argument('-k', '--and-tags', nargs='*',
|
||||
help='List of tags (all must match)', metavar='ATAGS')
|
||||
atag_arg.completer = tags_completer # type: ignore
|
||||
etag_arg = tag_parser.add_argument('-x', '--exclude-tags', nargs='+',
|
||||
etag_arg = tag_parser.add_argument('-x', '--exclude-tags', nargs='*',
|
||||
help='List of tags to exclude', metavar='XTAGS')
|
||||
etag_arg.completer = tags_completer # type: ignore
|
||||
otag_arg = tag_parser.add_argument('-o', '--output-tags', nargs='+',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user