simplified SourceIterator
This commit is contained in:
@@ -26,17 +26,13 @@ import yaml
|
|||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
from src.importer.sources.location import Location
|
from src.importer.sources.location import Location
|
||||||
from src.importer.sources.source import (
|
from src.importer.sources.source import SourceIterator, URLExecutableSource
|
||||||
SourceIterationResult,
|
|
||||||
SourceIterator,
|
|
||||||
URLExecutableSource,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class BottlesSourceIterator(SourceIterator):
|
class BottlesSourceIterator(SourceIterator):
|
||||||
source: "BottlesSource"
|
source: "BottlesSource"
|
||||||
|
|
||||||
def generator_builder(self) -> SourceIterationResult:
|
def __iter__(self):
|
||||||
"""Generator method producing games"""
|
"""Generator method producing games"""
|
||||||
|
|
||||||
data = self.source.data_location["library.yml"].read_text("utf-8")
|
data = self.source.data_location["library.yml"].read_text("utf-8")
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ from gi.repository import GLib, Gtk
|
|||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
from src.importer.sources.location import Location
|
from src.importer.sources.location import Location
|
||||||
from src.importer.sources.source import Source, SourceIterationResult, SourceIterator
|
from src.importer.sources.source import Source, SourceIterator
|
||||||
|
|
||||||
|
|
||||||
class FlatpakSourceIterator(SourceIterator):
|
class FlatpakSourceIterator(SourceIterator):
|
||||||
source: "FlatpakSource"
|
source: "FlatpakSource"
|
||||||
|
|
||||||
def generator_builder(self) -> SourceIterationResult:
|
def __iter__(self):
|
||||||
"""Generator method producing games"""
|
"""Generator method producing games"""
|
||||||
|
|
||||||
added_time = int(time())
|
added_time = int(time())
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ from hashlib import sha256
|
|||||||
from json import JSONDecodeError
|
from json import JSONDecodeError
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from time import time
|
from time import time
|
||||||
from typing import Optional, TypedDict, Generator, Iterable
|
from typing import Optional, TypedDict, Iterable
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
|
||||||
from src import shared
|
from src import shared
|
||||||
@@ -118,7 +118,7 @@ class SubSource(Iterable):
|
|||||||
|
|
||||||
return (game, additional_data)
|
return (game, additional_data)
|
||||||
|
|
||||||
def __iter__(self) -> Generator[SourceIterationResult, None, None]:
|
def __iter__(self):
|
||||||
"""
|
"""
|
||||||
Iterate through the installed games with a generator
|
Iterate through the installed games with a generator
|
||||||
:raises InvalidLibraryFileError: on initial call if the library file is bad
|
:raises InvalidLibraryFileError: on initial call if the library file is bad
|
||||||
|
|||||||
@@ -25,18 +25,14 @@ from time import time
|
|||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
from src.importer.sources.location import Location
|
from src.importer.sources.location import Location
|
||||||
from src.importer.sources.source import (
|
from src.importer.sources.source import SourceIterator, URLExecutableSource
|
||||||
SourceIterationResult,
|
|
||||||
SourceIterator,
|
|
||||||
URLExecutableSource,
|
|
||||||
)
|
|
||||||
from src.utils.sqlite import copy_db
|
from src.utils.sqlite import copy_db
|
||||||
|
|
||||||
|
|
||||||
class ItchSourceIterator(SourceIterator):
|
class ItchSourceIterator(SourceIterator):
|
||||||
source: "ItchSource"
|
source: "ItchSource"
|
||||||
|
|
||||||
def generator_builder(self) -> SourceIterationResult:
|
def __iter__(self):
|
||||||
"""Generator method producing games"""
|
"""Generator method producing games"""
|
||||||
|
|
||||||
# Query the database
|
# Query the database
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import json
|
|||||||
import logging
|
import logging
|
||||||
from json import JSONDecodeError
|
from json import JSONDecodeError
|
||||||
from time import time
|
from time import time
|
||||||
from typing import Generator
|
|
||||||
|
|
||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
@@ -65,7 +64,7 @@ class LegendarySourceIterator(SourceIterator):
|
|||||||
game = Game(values)
|
game = Game(values)
|
||||||
return (game, data)
|
return (game, data)
|
||||||
|
|
||||||
def generator_builder(self) -> Generator[SourceIterationResult, None, None]:
|
def __iter__(self):
|
||||||
# Open library
|
# Open library
|
||||||
file = self.source.config_location["installed.json"]
|
file = self.source.config_location["installed.json"]
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -24,18 +24,14 @@ from time import time
|
|||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
from src.importer.sources.location import Location
|
from src.importer.sources.location import Location
|
||||||
from src.importer.sources.source import (
|
from src.importer.sources.source import SourceIterator, URLExecutableSource
|
||||||
SourceIterationResult,
|
|
||||||
SourceIterator,
|
|
||||||
URLExecutableSource,
|
|
||||||
)
|
|
||||||
from src.utils.sqlite import copy_db
|
from src.utils.sqlite import copy_db
|
||||||
|
|
||||||
|
|
||||||
class LutrisSourceIterator(SourceIterator):
|
class LutrisSourceIterator(SourceIterator):
|
||||||
source: "LutrisSource"
|
source: "LutrisSource"
|
||||||
|
|
||||||
def generator_builder(self) -> SourceIterationResult:
|
def __iter__(self):
|
||||||
"""Generator method producing games"""
|
"""Generator method producing games"""
|
||||||
|
|
||||||
# Query the database
|
# Query the database
|
||||||
|
|||||||
@@ -29,25 +29,16 @@ from src.importer.sources.location import Location
|
|||||||
SourceIterationResult = None | Game | tuple[Game, tuple[Any]]
|
SourceIterationResult = None | Game | tuple[Game, tuple[Any]]
|
||||||
|
|
||||||
|
|
||||||
class SourceIterator(Iterator):
|
class SourceIterator:
|
||||||
"""Data producer for a source of games"""
|
"""Data producer for a source of games"""
|
||||||
|
|
||||||
source: "Source" = None
|
source: "Source" = None
|
||||||
generator: Generator = None
|
|
||||||
|
|
||||||
def __init__(self, source: "Source") -> None:
|
def __init__(self, source: "Source") -> None:
|
||||||
super().__init__()
|
|
||||||
self.source = source
|
self.source = source
|
||||||
self.generator = self.generator_builder()
|
|
||||||
|
|
||||||
def __iter__(self) -> "SourceIterator":
|
|
||||||
return self
|
|
||||||
|
|
||||||
def __next__(self) -> SourceIterationResult:
|
|
||||||
return next(self.generator)
|
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def generator_builder(self) -> Generator[SourceIterationResult, None, None]:
|
def __iter__(self) -> Generator[SourceIterationResult, None, None]:
|
||||||
"""
|
"""
|
||||||
Method that returns a generator that produces games
|
Method that returns a generator that produces games
|
||||||
* Should be implemented as a generator method
|
* Should be implemented as a generator method
|
||||||
@@ -108,7 +99,7 @@ class Source(Iterable):
|
|||||||
if location is None:
|
if location is None:
|
||||||
continue
|
continue
|
||||||
location.resolve()
|
location.resolve()
|
||||||
return self.iterator_class(self)
|
return iter(self.iterator_class(self))
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=abstract-method
|
# pylint: disable=abstract-method
|
||||||
|
|||||||
@@ -27,11 +27,7 @@ from typing import Iterable
|
|||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
from src.importer.sources.location import Location
|
from src.importer.sources.location import Location
|
||||||
from src.importer.sources.source import (
|
from src.importer.sources.source import SourceIterator, URLExecutableSource
|
||||||
SourceIterationResult,
|
|
||||||
SourceIterator,
|
|
||||||
URLExecutableSource,
|
|
||||||
)
|
|
||||||
from src.utils.steam import SteamFileHelper, SteamInvalidManifestError
|
from src.utils.steam import SteamFileHelper, SteamInvalidManifestError
|
||||||
|
|
||||||
|
|
||||||
@@ -63,7 +59,7 @@ class SteamSourceIterator(SourceIterator):
|
|||||||
)
|
)
|
||||||
return manifests
|
return manifests
|
||||||
|
|
||||||
def generator_builder(self) -> SourceIterationResult:
|
def __iter__(self):
|
||||||
"""Generator method producing games"""
|
"""Generator method producing games"""
|
||||||
appid_cache = set()
|
appid_cache = set()
|
||||||
manifests = self.get_manifests()
|
manifests = self.get_manifests()
|
||||||
|
|||||||
Reference in New Issue
Block a user