Compare commits

..

4 Commits

3 changed files with 28 additions and 2 deletions

26
chatmastermind/message.py Normal file
View 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

View File

@ -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

View File

@ -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: