Skip to content

Commit 7407e21

Browse files
committed
MyPy fixes
1 parent d4d654f commit 7407e21

3 files changed

Lines changed: 23 additions & 17 deletions

File tree

tests/test_filtering.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ def test_new_syntax(self):
175175
event_list = get_events(~(filtering.events.s.matches(r'^Go.*') & (filtering.events.h == 30)))
176176
self.assertListEqual(event_list, [events[0], events[1]])
177177

178-
178+
with self.assertRaises(ValueError):
179+
get_events('start' in filtering.events)
179180

180181
def test_get_only_manually_added_events_from_dynamic_catalogue(self):
181182
cat = create_catalogue('T', 'A')
@@ -188,6 +189,7 @@ def test_get_only_manually_added_events_from_dynamic_catalogue(self):
188189

189190
assert get_events(cat, assigned_only=True)[0] == [events[1]]
190191

192+
191193
@ddt
192194
class TestStringListAttributes(unittest.TestCase):
193195
@classmethod

tscat/base.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ def create_event(start: dt.datetime, stop: dt.datetime,
282282
products: Optional[Iterable[str]] = None,
283283
rating: Optional[int] = None, **kwargs) -> _Event:
284284
"""Create a new event in the database.
285-
285+
286286
Parameters
287287
----------
288288
start: datetime
@@ -413,11 +413,16 @@ def remove_events_from_catalogue(catalogue: Union[_Catalogue, str], events: Unio
413413
add_events_to_catalogue: For adding events to a catalogue.
414414
"""
415415
with Session() as s:
416+
if isinstance(catalogue, str):
417+
c = get_catalogue(uuid=catalogue)
418+
if not c:
419+
raise ValueError(f"Catalogue with UUID '{catalogue}' not found.")
420+
catalogue = c
416421
s.remove_events_from_catalogue(catalogue, events)
417422

418423

419424
def get_catalogue(uuid: Optional[str] = None, name: Optional[str] = None, predicate: Optional[Predicate] = None) -> \
420-
Optional[_Catalogue]:
425+
Optional[_Catalogue]:
421426
"""Get a catalogue by its UUID or name or using a predicate. If more than one catalogue matches the criteria, only the first one is returned.
422427
423428
Parameters
@@ -441,7 +446,7 @@ def get_catalogue(uuid: Optional[str] = None, name: Optional[str] = None, predic
441446
"""
442447
if sum(v is not None for v in (uuid, name, predicate)) != 1:
443448
raise ValueError("Exactly one of uuid, name or predicate must be provided.")
444-
base_dict = {}
449+
base_dict: Dict[str, Any] = {}
445450
if uuid:
446451
base_dict['uuid'] = uuid
447452
elif name:
@@ -451,9 +456,8 @@ def get_catalogue(uuid: Optional[str] = None, name: Optional[str] = None, predic
451456

452457
base_dict['removed'] = False # only get non-removed catalogues
453458

454-
cat = backend().get_catalogues(base_dict)
455-
if len(cat):
456-
cat = cat[0]
459+
if (cats := backend().get_catalogues(base_dict)) and len(cats) > 0:
460+
cat: Dict[Any, Any] = cats[0]
457461
c = _Catalogue(cat['name'], cat['author'], cat['uuid'], cat['tags'], cat['predicate'],
458462
_insert=False, **cat['attributes'])
459463
c._backend_entity = cat['entity']

tscat/filtering.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ class _Member:
1313
def __init__(self, name: str):
1414
self.value = name
1515

16-
def __eq__(self, other: MemberValueType) -> 'Predicate':
16+
def __eq__(self, other: MemberValueType) -> 'Predicate': # type: ignore[override]
1717
return Comparison('==', self, other)
1818

19-
def __ne__(self, other) -> 'Predicate':
19+
def __ne__(self, other) -> 'Predicate': # type: ignore[override]
2020
return Comparison('!=', self, other)
2121

2222
def __gt__(self, other) -> 'Predicate':
@@ -35,6 +35,7 @@ def matches(self, value: str) -> 'Predicate':
3535
return Match(self, value)
3636

3737

38+
3839
class Field(_Member):
3940
def __init__(self, name: str):
4041
super().__init__(name)
@@ -171,25 +172,24 @@ def __init__(self, message: str):
171172

172173

173174

174-
class _Catalogue:
175+
class _CatalogueToken:
175176
def __init__(self):
176177
pass
177178

178-
def __contains__(self, item: "_Event") -> Predicate:
179-
return InCatalogue(item)
180-
181179
def __getattr__(self, item) -> _Member:
182180
if item in ('name', 'author', 'uuid', 'tags', 'predicate', 'attributes'):
183181
return Field(item)
184182
return Attribute(item)
185183

186184

187-
class _Events:
185+
class _EventsToken:
188186
def __init__(self):
189187
pass
190188

191189
def __contains__(self, item: str) -> Predicate:
192-
return self[item].exists()
190+
if item in ('start', 'stop', 'author', 'tags', 'products', 'rating', 'uuid'):
191+
raise ValueError(f"'{item}' is always present in events, therefore cannot be used in 'in' checks.")
192+
return Attribute(item).exists()
193193

194194
def __getattr__(self, item) -> _Member:
195195
if item in ('start', 'stop', 'author', 'tags', 'products', 'rating', 'uuid'):
@@ -198,6 +198,6 @@ def __getattr__(self, item) -> _Member:
198198

199199

200200
# tokens to create predicates from Python code
201-
catalogue = _Catalogue()
202-
events = _Events()
201+
catalogue = _CatalogueToken()
202+
events = _EventsToken()
203203
event = events

0 commit comments

Comments
 (0)