Compare commits
4 Commits
1fd615baaa
...
d6e6e0f3ce
| Author | SHA1 | Date | |
|---|---|---|---|
| d6e6e0f3ce | |||
| 8396a3f403 | |||
| 24df4be80b | |||
| 935f1ee18a |
@ -111,7 +111,9 @@ def hist_cmd(args: argparse.Namespace, config: Config) -> None:
|
||||
|
||||
mfilter = MessageFilter(tags_or=args.tags,
|
||||
tags_and=args.atags,
|
||||
tags_not=args.etags)
|
||||
tags_not=args.etags,
|
||||
question_contains=args.question,
|
||||
answer_contains=args.answer)
|
||||
chat = ChatDB.from_dir(Path('.'),
|
||||
Path(config.db),
|
||||
mfilter=mfilter)
|
||||
@ -192,6 +194,8 @@ def create_parser() -> argparse.ArgumentParser:
|
||||
action='store_true')
|
||||
hist_cmd_parser.add_argument('-S', '--source-code-only', help='Print only source code',
|
||||
action='store_true')
|
||||
hist_cmd_parser.add_argument('-A', '--answer', help='Search for answer substring')
|
||||
hist_cmd_parser.add_argument('-Q', '--question', help='Search for question substring')
|
||||
|
||||
# 'tags' command parser
|
||||
tags_cmd_parser = cmdparser.add_parser('tags',
|
||||
|
||||
@ -96,7 +96,7 @@ class AILine(str):
|
||||
|
||||
def __new__(cls: Type[AILineInst], string: str) -> AILineInst:
|
||||
if not string.startswith(cls.prefix):
|
||||
raise TagError(f"AILine '{string}' is missing prefix '{cls.prefix}'")
|
||||
raise MessageError(f"AILine '{string}' is missing prefix '{cls.prefix}'")
|
||||
instance = super().__new__(cls, string)
|
||||
return instance
|
||||
|
||||
@ -116,7 +116,7 @@ class ModelLine(str):
|
||||
|
||||
def __new__(cls: Type[ModelLineInst], string: str) -> ModelLineInst:
|
||||
if not string.startswith(cls.prefix):
|
||||
raise TagError(f"ModelLine '{string}' is missing prefix '{cls.prefix}'")
|
||||
raise MessageError(f"ModelLine '{string}' is missing prefix '{cls.prefix}'")
|
||||
instance = super().__new__(cls, string)
|
||||
return instance
|
||||
|
||||
@ -133,7 +133,7 @@ class Answer(str):
|
||||
A single answer with a defined header.
|
||||
"""
|
||||
tokens: int = 0 # tokens used by this answer
|
||||
txt_header: ClassVar[str] = '=== ANSWER ==='
|
||||
txt_header: ClassVar[str] = '==== ANSWER ===='
|
||||
yaml_key: ClassVar[str] = 'answer'
|
||||
|
||||
def __new__(cls: Type[AnswerInst], string: str) -> AnswerInst:
|
||||
@ -355,17 +355,20 @@ class Message():
|
||||
try:
|
||||
pos = fd.tell()
|
||||
ai = AILine(fd.readline()).ai()
|
||||
except TagError:
|
||||
except MessageError:
|
||||
fd.seek(pos)
|
||||
# ModelLine (Optional)
|
||||
try:
|
||||
pos = fd.tell()
|
||||
model = ModelLine(fd.readline()).model()
|
||||
except TagError:
|
||||
except MessageError:
|
||||
fd.seek(pos)
|
||||
# Question and Answer
|
||||
text = fd.read().strip().split('\n')
|
||||
question_idx = text.index(Question.txt_header) + 1
|
||||
try:
|
||||
question_idx = text.index(Question.txt_header) + 1
|
||||
except ValueError:
|
||||
raise MessageError(f"Question header '{Question.txt_header}' not found in '{file_path}'")
|
||||
try:
|
||||
answer_idx = text.index(Answer.txt_header)
|
||||
question = Question.from_list(text[question_idx:answer_idx])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user