Compare commits
4 Commits
6a4bbf1e60
...
0d5ba8b921
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d5ba8b921 | |||
| 604e5ccf73 | |||
| ef46f5efc9 | |||
| b13a68836a |
26
chatmastermind/message.py
Normal file
26
chatmastermind/message.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""
|
||||
Module implementing message related functions and classes.
|
||||
"""
|
||||
from typing import Type, TypeVar
|
||||
|
||||
QuestionInst = TypeVar('QuestionInst', bound='Question')
|
||||
|
||||
|
||||
class MessageError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class Question(str):
|
||||
"""
|
||||
A single question with a defined prefix.
|
||||
"""
|
||||
prefix = '=== QUESTION ==='
|
||||
|
||||
def __new__(cls: Type[QuestionInst], string: str) -> QuestionInst:
|
||||
"""
|
||||
Make sure the tag string does not contain the default separator.
|
||||
"""
|
||||
if cls.prefix in string:
|
||||
raise MessageError(f"Question '{string}' contains the prefix '{cls.prefix}'")
|
||||
instance = super().__new__(cls, string)
|
||||
return instance
|
||||
@ -25,7 +25,7 @@ class Tag(str):
|
||||
Make sure the tag string does not contain the default separator.
|
||||
"""
|
||||
if cls.default_separator in string:
|
||||
raise TypeError(f"Tag '{string}' contains the separator char '{cls.default_separator}'")
|
||||
raise TagError(f"Tag '{string}' contains the separator char '{cls.default_separator}'")
|
||||
instance = super().__new__(cls, string)
|
||||
return instance
|
||||
|
||||
|
||||
@ -240,7 +240,7 @@ class TestTag(CmmTestCase):
|
||||
self.assertEqual(tag, 'mytag')
|
||||
|
||||
def test_invalid_tag(self) -> None:
|
||||
with self.assertRaises(TypeError):
|
||||
with self.assertRaises(TagError):
|
||||
Tag('tag with space')
|
||||
|
||||
def test_default_separator(self) -> None:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user