simplify typed get

This commit is contained in:
Evgenii Alekseev 2024-09-11 03:14:23 +03:00
parent e53f744f9a
commit 4938f8ffe7
2 changed files with 9 additions and 12 deletions

View File

@ -267,9 +267,9 @@ class Package(LazyLogging):
for package, properties in pkgbuild.packages().items() for package, properties in pkgbuild.packages().items()
} }
version = full_version( version = full_version(
pkgbuild.get_as("epoch", str, default=None), pkgbuild.get_as("epoch", default=None),
pkgbuild.get_as("pkgver", str), pkgbuild.get_as("pkgver"),
pkgbuild.get_as("pkgrel", str), pkgbuild.get_as("pkgrel"),
) )
remote = RemoteSource( remote = RemoteSource(
@ -281,7 +281,7 @@ class Package(LazyLogging):
) )
return cls( return cls(
base=pkgbuild.get_as("pkgbase", str), base=pkgbuild.get_as("pkgbase"),
version=version, version=version,
remote=remote, remote=remote,
packages=packages, packages=packages,
@ -440,9 +440,9 @@ class Package(LazyLogging):
pkgbuild = Pkgbuild.from_file(paths.cache_for(self.base) / "PKGBUILD") pkgbuild = Pkgbuild.from_file(paths.cache_for(self.base) / "PKGBUILD")
return full_version( return full_version(
pkgbuild.get_as("epoch", str, default=None), pkgbuild.get_as("epoch", default=None),
pkgbuild.get_as("pkgver", str), pkgbuild.get_as("pkgver"),
pkgbuild.get_as("pkgrel", str), pkgbuild.get_as("pkgrel"),
) )
except Exception: except Exception:
self.logger.exception("cannot determine version of VCS package") self.logger.exception("cannot determine version of VCS package")

View File

@ -227,13 +227,12 @@ class Pkgbuild(Mapping[str, str | list[str]]):
case None: case None:
raise StopIteration raise StopIteration
def get_as(self, key: str, return_type: type[T], **kwargs: T | U) -> T | U: def get_as(self, key: str, **kwargs: T | U) -> T | U:
""" """
type guard for getting value by key type guard for getting value by key
Args: Args:
key(str): key name key(str): key name
return_type(type[T]): return type, either ``str`` or ``list[str]``
default(U, optional): default value to return if no key found default(U, optional): default value to return if no key found
Returns: Returns:
@ -242,8 +241,6 @@ class Pkgbuild(Mapping[str, str | list[str]]):
Raises: Raises:
KeyError: if no key found and no default has been provided KeyError: if no key found and no default has been provided
""" """
del return_type
if key not in self: if key not in self:
if "default" in kwargs: if "default" in kwargs:
return kwargs["default"] return kwargs["default"]
@ -262,7 +259,7 @@ class Pkgbuild(Mapping[str, str | list[str]]):
def io(package_name: str) -> IO[str]: def io(package_name: str) -> IO[str]:
# try to read package specific function and fallback to default otherwise # try to read package specific function and fallback to default otherwise
content = self.get_as(f"package_{package_name}", str, default=None) or self.get_as("package", str) content = self.get_as(f"package_{package_name}", default=None) or self.get_as("package")
return StringIO(content) return StringIO(content)
return {package: self.from_io(io(package)) for package in packages} return {package: self.from_io(io(package)) for package in packages}