🎨 Simplified SourceIterator-s
- Using generator functions - Common generator init and next in base class - Explicited that error handling should happen in generator
This commit is contained in:
@@ -38,7 +38,7 @@ class HeroicSubSource(TypedDict):
|
||||
|
||||
class HeroicSourceIterator(SourceIterator):
|
||||
source: "HeroicSource"
|
||||
generator: Generator = None
|
||||
|
||||
sub_sources: dict[str, HeroicSubSource] = {
|
||||
"sideload": {
|
||||
"service": "sideload",
|
||||
@@ -89,9 +89,10 @@ class HeroicSourceIterator(SourceIterator):
|
||||
|
||||
return Game(values, allow_side_effects=False)
|
||||
|
||||
def sub_sources_generator(self):
|
||||
def generator_builder(self):
|
||||
"""Generator method producing games from all the Heroic sub-sources"""
|
||||
for _key, sub_source in self.sub_sources.items():
|
||||
|
||||
for sub_source in self.sub_sources.values():
|
||||
# Skip disabled sub-sources
|
||||
if not shared.schema.get_boolean("heroic-import-" + sub_source["service"]):
|
||||
continue
|
||||
@@ -112,17 +113,6 @@ class HeroicSourceIterator(SourceIterator):
|
||||
continue
|
||||
yield game
|
||||
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
super().__init__(*args, **kwargs)
|
||||
self.generator = self.sub_sources_generator()
|
||||
|
||||
def __next__(self) -> Optional[Game]:
|
||||
try:
|
||||
game = next(self.generator)
|
||||
except StopIteration:
|
||||
raise
|
||||
return game
|
||||
|
||||
|
||||
class HeroicSource(Source):
|
||||
"""Generic heroic games launcher source"""
|
||||
|
||||
Reference in New Issue
Block a user