mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
simplify typed get
This commit is contained in:
parent
e53f744f9a
commit
4938f8ffe7
@ -267,9 +267,9 @@ class Package(LazyLogging):
|
||||
for package, properties in pkgbuild.packages().items()
|
||||
}
|
||||
version = full_version(
|
||||
pkgbuild.get_as("epoch", str, default=None),
|
||||
pkgbuild.get_as("pkgver", str),
|
||||
pkgbuild.get_as("pkgrel", str),
|
||||
pkgbuild.get_as("epoch", default=None),
|
||||
pkgbuild.get_as("pkgver"),
|
||||
pkgbuild.get_as("pkgrel"),
|
||||
)
|
||||
|
||||
remote = RemoteSource(
|
||||
@ -281,7 +281,7 @@ class Package(LazyLogging):
|
||||
)
|
||||
|
||||
return cls(
|
||||
base=pkgbuild.get_as("pkgbase", str),
|
||||
base=pkgbuild.get_as("pkgbase"),
|
||||
version=version,
|
||||
remote=remote,
|
||||
packages=packages,
|
||||
@ -440,9 +440,9 @@ class Package(LazyLogging):
|
||||
pkgbuild = Pkgbuild.from_file(paths.cache_for(self.base) / "PKGBUILD")
|
||||
|
||||
return full_version(
|
||||
pkgbuild.get_as("epoch", str, default=None),
|
||||
pkgbuild.get_as("pkgver", str),
|
||||
pkgbuild.get_as("pkgrel", str),
|
||||
pkgbuild.get_as("epoch", default=None),
|
||||
pkgbuild.get_as("pkgver"),
|
||||
pkgbuild.get_as("pkgrel"),
|
||||
)
|
||||
except Exception:
|
||||
self.logger.exception("cannot determine version of VCS package")
|
||||
|
@ -227,13 +227,12 @@ class Pkgbuild(Mapping[str, str | list[str]]):
|
||||
case None:
|
||||
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
|
||||
|
||||
Args:
|
||||
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
|
||||
|
||||
Returns:
|
||||
@ -242,8 +241,6 @@ class Pkgbuild(Mapping[str, str | list[str]]):
|
||||
Raises:
|
||||
KeyError: if no key found and no default has been provided
|
||||
"""
|
||||
del return_type
|
||||
|
||||
if key not in self:
|
||||
if "default" in kwargs:
|
||||
return kwargs["default"]
|
||||
@ -262,7 +259,7 @@ class Pkgbuild(Mapping[str, str | list[str]]):
|
||||
|
||||
def io(package_name: str) -> IO[str]:
|
||||
# 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 {package: self.from_io(io(package)) for package in packages}
|
||||
|
Loading…
Reference in New Issue
Block a user