Compare commits

..

2 Commits

2 changed files with 11 additions and 2 deletions

View File

@ -1,7 +1,7 @@
"""
Module implementing tag related functions and classes.
"""
from typing import Type, TypeVar
from typing import Type, TypeVar, Optional
TagInst = TypeVar('TagInst', bound='Tag')
TagLineInst = TypeVar('TagLineInst', bound='TagLine')
@ -103,7 +103,8 @@ class TagLine(str):
new_tags.add(t[1])
return self.from_set(set(sorted(new_tags)))
def match_tags(self, tags_or: set[Tag], tags_and: set[Tag], tags_not: set[Tag]) -> bool:
def match_tags(self, tags_or: Optional[set[Tag]], tags_and: Optional[set[Tag]],
tags_not: Optional[set[Tag]]) -> bool:
"""
Checks if the current TagLine matches the given tag requirements:
- 'tags_or' : matches if this TagLine contains ANY of those tags

View File

@ -337,3 +337,11 @@ class TestTagLine(CmmTestCase):
tags_and = set()
tags_not = {Tag('tag2')}
self.assertFalse(tagline.match_tags(tags_or, tags_and, tags_not))
# Test case 8: 'tags_or' and 'tags_and' are None, match all tags
tags_not = set()
self.assertTrue(tagline.match_tags(None, None, tags_not))
# Test case 9: 'tags_or' and 'tags_and' are None, match all tags except excluded tags
tags_not = {Tag('tag2')}
self.assertFalse(tagline.match_tags(None, None, tags_not))