mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-28 09: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()
|
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")
|
||||||
|
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user