entertainment_decider/models: Clean code for mypy

- add return types
- rename used TypeVar to avoid override
- adapt type of MediaCollection.creator to reflect Optionality
master
Felix Stupp 3 years ago
parent c59000847d
commit 7c5d8e7748
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -241,7 +241,7 @@ class Tagable:
return self.__tag_hierachy[1] return self.__tag_hierachy[1]
T = TypeVar("T", bound=Tagable) T_tagged = TypeVar("T_tagged", bound=Tagable)
@dataclass @dataclass
@ -270,11 +270,11 @@ class PreferenceScore:
self.points[tag] for tag in object.all_tags if tag in self.points self.points[tag] for tag in object.all_tags if tag in self.points
) )
def order_by_score(self, objects: Iterable[T]) -> List[T]: def order_by_score(self, objects: Iterable[T_tagged]) -> List[T_tagged]:
return sorted(objects, key=lambda o: self.calculate_score(o)) return sorted(objects, key=self.calculate_score)
def get_first_by_score(self, objects: Iterable[T]) -> List[T]: def get_first_by_score(self, objects: Iterable[T_tagged]) -> T_tagged:
return min(objects, key=lambda o: self.calculate_score(o)) return min(objects, key=self.calculate_score)
@classmethod @classmethod
def from_json(cls, data: str) -> PreferenceScore: def from_json(cls, data: str) -> PreferenceScore:
@ -313,7 +313,7 @@ class PreferenceScoreAppender:
for preference in args: for preference in args:
self.__append(preference) self.__append(preference)
def __append(self, preference: PreferenceScoreCompatible): def __append(self, preference: PreferenceScoreCompatible) -> None:
if isinstance(preference, PreferenceScore): if isinstance(preference, PreferenceScore):
self.points_list.append(preference) self.points_list.append(preference)
elif isinstance(preference, PreferenceScoreAppender): elif isinstance(preference, PreferenceScoreAppender):
@ -469,11 +469,11 @@ class MediaCollectionLink(db.Entity):
orm.composite_index(season, episode) orm.composite_index(season, episode)
@property @property
def element_id(self): def element_id(self) -> int:
return self.element.id return self.element.id
@property @property
def element_release_date(self): def element_release_date(self) -> datetime:
return self.element.release_date return self.element.release_date
@staticmethod @staticmethod
@ -669,7 +669,7 @@ class MediaElement(db.Entity, UriHolder, Tagable):
### own methods ### own methods
def merge_to(self, other: MediaElement): def merge_to(self, other: MediaElement) -> None:
if self.watched: if self.watched:
other.watched = True other.watched = True
if self.ignored: if self.ignored:
@ -699,14 +699,14 @@ class MediaElement(db.Entity, UriHolder, Tagable):
) # TODO may replace with merge call ) # TODO may replace with merge call
return False return False
def before_insert(self): def before_insert(self) -> None:
self.before_update() self.before_update()
def before_update(self): def before_update(self) -> None:
self.add_single_uri(self.uri) self.add_single_uri(self.uri)
@property @property
def info_link(self): def info_link(self) -> str:
return f"/media/{self.id}" return f"/media/{self.id}"
@ -747,7 +747,7 @@ class MediaThumbnail(db.Entity):
def from_uri(cls, uri: str) -> MediaThumbnail: def from_uri(cls, uri: str) -> MediaThumbnail:
return cls.get(uri=uri) or MediaThumbnail(uri=uri) return cls.get(uri=uri) or MediaThumbnail(uri=uri)
def access(self): def access(self) -> None:
self.last_accessed = datetime.now() self.last_accessed = datetime.now()
def download(self) -> bool: def download(self) -> bool:
@ -765,7 +765,7 @@ class MediaThumbnail(db.Entity):
return True return True
return self.download() return self.download()
def access_data(self): def access_data(self) -> None:
self.prepare() self.prepare()
self.access() self.access()
@ -802,7 +802,7 @@ class MediaCollection(db.Entity, UriHolder, Tagable):
) )
notes: str = orm.Optional(str) notes: str = orm.Optional(str)
release_date: datetime = orm.Optional(datetime) release_date: datetime = orm.Optional(datetime)
creator: MediaCollection = orm.Optional( creator: Optional[MediaCollection] = orm.Optional(
lambda: MediaCollection, lambda: MediaCollection,
nullable=True, nullable=True,
) )

Loading…
Cancel
Save