mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
docs: update booleans in docs
This commit is contained in:
parent
5f79cbc34b
commit
54a331cc96
@ -59,7 +59,7 @@ class Handler:
|
|||||||
repository_id(RepositoryId): repository unique identifier
|
repository_id(RepositoryId): repository unique identifier
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True on success, False otherwise
|
bool: ``True`` on success, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
configuration = Configuration.from_path(args.configuration, repository_id)
|
configuration = Configuration.from_path(args.configuration, repository_id)
|
||||||
@ -129,7 +129,7 @@ class Handler:
|
|||||||
check condition and flag and raise ExitCode exception in case if it is enabled and condition match
|
check condition and flag and raise ExitCode exception in case if it is enabled and condition match
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
enabled(bool): if False no check will be performed
|
enabled(bool): if ``False`` no check will be performed
|
||||||
predicate(bool): indicates condition on which exception should be thrown
|
predicate(bool): indicates condition on which exception should be thrown
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
|
@ -97,7 +97,7 @@ class Lock(LazyLogging):
|
|||||||
fd(int): file descriptor:
|
fd(int): file descriptor:
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if file is locked and False otherwise
|
bool: ``True`` in case if file is locked and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||||
@ -119,7 +119,7 @@ class Lock(LazyLogging):
|
|||||||
watch until lock disappear
|
watch until lock disappear
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if file is locked and False otherwise
|
bool: ``True`` in case if file is locked and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
# there are reasons why we are not using inotify here. First of all, if we would use it, it would bring to
|
# there are reasons why we are not using inotify here. First of all, if we would use it, it would bring to
|
||||||
# race conditions because multiple processes will be notified at the same time. Secondly, it is good library,
|
# race conditions because multiple processes will be notified at the same time. Secondly, it is good library,
|
||||||
@ -223,7 +223,7 @@ class Lock(LazyLogging):
|
|||||||
exc_tb(TracebackType): exception traceback if any
|
exc_tb(TracebackType): exception traceback if any
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Literal[False]: always False (do not suppress any exception)
|
Literal[False]: always ``False`` (do not suppress any exception)
|
||||||
"""
|
"""
|
||||||
self.clear()
|
self.clear()
|
||||||
status = BuildStatusEnum.Success if exc_val is None else BuildStatusEnum.Failed
|
status = BuildStatusEnum.Success if exc_val is None else BuildStatusEnum.Failed
|
||||||
|
@ -101,7 +101,7 @@ class PacmanDatabase(SyncHttpClient):
|
|||||||
local_path(Path): path to locally stored file
|
local_path(Path): path to locally stored file
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if remote file is newer than local file
|
bool: ``True`` in case if remote file is newer than local file
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
PacmanError: in case if no last-modified header was found
|
PacmanError: in case if no last-modified header was found
|
||||||
|
@ -96,7 +96,7 @@ class Auth(LazyLogging):
|
|||||||
password(str | None): entered password
|
password(str | None): entered password
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if password matches, False otherwise
|
bool: ``True`` in case if password matches, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
del username, password
|
del username, password
|
||||||
return True
|
return True
|
||||||
@ -109,7 +109,7 @@ class Auth(LazyLogging):
|
|||||||
username(str): username
|
username(str): username
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is known and can be authorized and False otherwise
|
bool: ``True`` in case if user is known and can be authorized and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
del username
|
del username
|
||||||
return True
|
return True
|
||||||
@ -124,7 +124,7 @@ class Auth(LazyLogging):
|
|||||||
context(str | None): URI request path
|
context(str | None): URI request path
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is allowed to do this request and False otherwise
|
bool: ``True`` in case if user is allowed to do this request and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
del username, required, context
|
del username, required, context
|
||||||
return True
|
return True
|
||||||
|
@ -38,7 +38,7 @@ async def authorized_userid(*args: Any, **kwargs: Any) -> Any:
|
|||||||
**kwargs(Any): named argument list as provided by authorized_userid function
|
**kwargs(Any): named argument list as provided by authorized_userid function
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Any: None in case if no aiohttp_security module found and function call otherwise
|
Any: ``None`` in case if no aiohttp_security module found and function call otherwise
|
||||||
"""
|
"""
|
||||||
if _has_aiohttp_security:
|
if _has_aiohttp_security:
|
||||||
return await aiohttp_security.authorized_userid(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
return await aiohttp_security.authorized_userid(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
||||||
@ -54,7 +54,7 @@ async def check_authorized(*args: Any, **kwargs: Any) -> Any:
|
|||||||
**kwargs(Any): named argument list as provided by authorized_userid function
|
**kwargs(Any): named argument list as provided by authorized_userid function
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Any: None in case if no aiohttp_security module found and function call otherwise
|
Any: ``None`` in case if no aiohttp_security module found and function call otherwise
|
||||||
"""
|
"""
|
||||||
if _has_aiohttp_security:
|
if _has_aiohttp_security:
|
||||||
return await aiohttp_security.check_authorized(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
return await aiohttp_security.check_authorized(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
||||||
@ -70,7 +70,7 @@ async def forget(*args: Any, **kwargs: Any) -> Any:
|
|||||||
**kwargs(Any): named argument list as provided by authorized_userid function
|
**kwargs(Any): named argument list as provided by authorized_userid function
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Any: None in case if no aiohttp_security module found and function call otherwise
|
Any: ``None`` in case if no aiohttp_security module found and function call otherwise
|
||||||
"""
|
"""
|
||||||
if _has_aiohttp_security:
|
if _has_aiohttp_security:
|
||||||
return await aiohttp_security.forget(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
return await aiohttp_security.forget(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
||||||
@ -86,7 +86,7 @@ async def remember(*args: Any, **kwargs: Any) -> Any:
|
|||||||
**kwargs(Any): named argument list as provided by authorized_userid function
|
**kwargs(Any): named argument list as provided by authorized_userid function
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Any: None in case if no aiohttp_security module found and function call otherwise
|
Any: ``None`` in case if no aiohttp_security module found and function call otherwise
|
||||||
"""
|
"""
|
||||||
if _has_aiohttp_security:
|
if _has_aiohttp_security:
|
||||||
return await aiohttp_security.remember(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
return await aiohttp_security.remember(*args, **kwargs) # pylint: disable=no-value-for-parameter
|
||||||
|
@ -57,7 +57,7 @@ class Mapping(Auth):
|
|||||||
password(str | None): entered password
|
password(str | None): entered password
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if password matches, False otherwise
|
bool: ``True`` in case if password matches, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
if password is None:
|
if password is None:
|
||||||
return False # invalid data supplied
|
return False # invalid data supplied
|
||||||
@ -72,7 +72,7 @@ class Mapping(Auth):
|
|||||||
username(str): username
|
username(str): username
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
User | None: user descriptor if username is known and None otherwise
|
User | None: user descriptor if username is known and ``None`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.database.user_get(username)
|
return self.database.user_get(username)
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ class Mapping(Auth):
|
|||||||
username(str): username
|
username(str): username
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is known and can be authorized and False otherwise
|
bool: ``True`` in case if user is known and can be authorized and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return username is not None and self.get_user(username) is not None
|
return username is not None and self.get_user(username) is not None
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ class Mapping(Auth):
|
|||||||
context(str | None): URI request path
|
context(str | None): URI request path
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is allowed to do this request and False otherwise
|
bool: ``True`` in case if user is allowed to do this request and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
user = self.get_user(username)
|
user = self.get_user(username)
|
||||||
return user is not None and user.verify_access(required)
|
return user is not None and user.verify_access(required)
|
||||||
|
@ -79,7 +79,7 @@ class PAM(Mapping):
|
|||||||
password(str | None): entered password
|
password(str | None): entered password
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if password matches, False otherwise
|
bool: ``True`` in case if password matches, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
if password is None:
|
if password is None:
|
||||||
return False # invalid data supplied
|
return False # invalid data supplied
|
||||||
@ -101,7 +101,7 @@ class PAM(Mapping):
|
|||||||
username(str): username
|
username(str): username
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is known and can be authorized and False otherwise
|
bool: ``True`` in case if user is known and can be authorized and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
_ = getpwnam(username)
|
_ = getpwnam(username)
|
||||||
@ -119,7 +119,7 @@ class PAM(Mapping):
|
|||||||
context(str | None): URI request path
|
context(str | None): URI request path
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is allowed to do this request and False otherwise
|
bool: ``True`` in case if user is allowed to do this request and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
# this method is basically inverted, first we check overrides in database and then fallback to the PAM logic
|
# this method is basically inverted, first we check overrides in database and then fallback to the PAM logic
|
||||||
if (user := self.get_user(username)) is not None:
|
if (user := self.get_user(username)) is not None:
|
||||||
|
@ -138,7 +138,7 @@ class Sources(LazyLogging):
|
|||||||
sources_dir(Path): local path to git repository
|
sources_dir(Path): local path to git repository
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if there is any remote and false otherwise
|
bool: ``True`` in case if there is any remote and false otherwise
|
||||||
"""
|
"""
|
||||||
instance = Sources()
|
instance = Sources()
|
||||||
remotes = check_output(*instance.git(), "remote", cwd=sources_dir, logger=instance.logger)
|
remotes = check_output(*instance.git(), "remote", cwd=sources_dir, logger=instance.logger)
|
||||||
@ -261,7 +261,7 @@ class Sources(LazyLogging):
|
|||||||
commit_author(tuple[str, str] | None, optional): optional commit author if any (Default value = None)
|
commit_author(tuple[str, str] | None, optional): optional commit author if any (Default value = None)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if changes have been committed and False otherwise
|
bool: ``True`` in case if changes have been committed and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
if not self.has_changes(sources_dir):
|
if not self.has_changes(sources_dir):
|
||||||
return False # nothing to commit
|
return False # nothing to commit
|
||||||
@ -351,7 +351,7 @@ class Sources(LazyLogging):
|
|||||||
sources_dir(Path): local path to git repository
|
sources_dir(Path): local path to git repository
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if there are uncommitted changes and False otherwise
|
bool: ``True`` if there are uncommitted changes and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
# there is --exit-code argument to diff, however, there might be other process errors
|
# there is --exit-code argument to diff, however, there might be other process errors
|
||||||
changes = check_output(*self.git(), "diff", "--cached", "--name-only", cwd=sources_dir, logger=self.logger)
|
changes = check_output(*self.git(), "diff", "--cached", "--name-only", cwd=sources_dir, logger=self.logger)
|
||||||
|
@ -149,7 +149,7 @@ class Validator(RootValidator):
|
|||||||
check if paths exists
|
check if paths exists
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
constraint(bool): True in case if path must exist and False otherwise
|
constraint(bool): ``True`` in case if path must exist and ``False`` otherwise
|
||||||
field(str): field name to be checked
|
field(str): field name to be checked
|
||||||
value(Path): value to be checked
|
value(Path): value to be checked
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class Operations(LazyLogging):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
query(Callable[[Connection], T]): function to be called with connection
|
query(Callable[[Connection], T]): function to be called with connection
|
||||||
commit(bool, optional): if True commit() will be called on success (Default value = False)
|
commit(bool, optional): if ``True`` commit() will be called on success (Default value = False)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
T: result of the ``query`` call
|
T: result of the ``query`` call
|
||||||
|
@ -32,7 +32,7 @@ class BuildPrinter(StringPrinter):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package(Package): built package
|
package(Package): built package
|
||||||
is_success(bool): True in case if build has success status and False otherwise
|
is_success(bool): ``True`` in case if build has success status and ``False`` otherwise
|
||||||
use_utf(bool): use utf instead of normal symbols
|
use_utf(bool): use utf instead of normal symbols
|
||||||
"""
|
"""
|
||||||
StringPrinter.__init__(self, f"{self.sign(is_success, use_utf)} {package.base}")
|
StringPrinter.__init__(self, f"{self.sign(is_success, use_utf)} {package.base}")
|
||||||
@ -43,7 +43,7 @@ class BuildPrinter(StringPrinter):
|
|||||||
generate sign according to settings
|
generate sign according to settings
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
is_success(bool): True in case if build has success status and False otherwise
|
is_success(bool): ``True`` in case if build has success status and ``False`` otherwise
|
||||||
use_utf(bool): use utf instead of normal symbols
|
use_utf(bool): use utf instead of normal symbols
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
@ -57,7 +57,7 @@ class ChangesPrinter(Printer):
|
|||||||
generate entry title from content
|
generate entry title from content
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str | None: content title if it can be generated and None otherwise
|
str | None: content title if it can be generated and ``None`` otherwise
|
||||||
"""
|
"""
|
||||||
if self.changes.is_empty:
|
if self.changes.is_empty:
|
||||||
return None
|
return None
|
||||||
|
@ -63,7 +63,7 @@ class Printer:
|
|||||||
generate entry title from content
|
generate entry title from content
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str | None: content title if it can be generated and None otherwise
|
str | None: content title if it can be generated and ``None`` otherwise
|
||||||
"""
|
"""
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -42,6 +42,6 @@ class StringPrinter(Printer):
|
|||||||
generate entry title from content
|
generate entry title from content
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str | None: content title if it can be generated and None otherwise
|
str | None: content title if it can be generated and ``None`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.content
|
return self.content
|
||||||
|
@ -85,7 +85,7 @@ class SyncHttpClient(LazyLogging):
|
|||||||
exception(requests.RequestException): exception raised
|
exception(requests.RequestException): exception raised
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: text of the response if it is not None and empty string otherwise
|
str: text of the response if it is not ``None`` and empty string otherwise
|
||||||
"""
|
"""
|
||||||
result: str = exception.response.text if exception.response is not None else ""
|
result: str = exception.response.text if exception.response is not None else ""
|
||||||
return result
|
return result
|
||||||
|
@ -38,8 +38,8 @@ class JinjaTemplate:
|
|||||||
|
|
||||||
* homepage - link to homepage, string, optional
|
* homepage - link to homepage, string, optional
|
||||||
* link_path - prefix fo packages to download, string, required
|
* link_path - prefix fo packages to download, string, required
|
||||||
* has_package_signed - True in case if package sign enabled, False otherwise, required
|
* has_package_signed - ``True`` in case if package sign enabled, ``False`` otherwise, required
|
||||||
* has_repo_signed - True in case if repository database sign enabled, False otherwise, required
|
* has_repo_signed - ``True`` in case if repository database sign enabled, ``False`` otherwise, required
|
||||||
* packages - sorted list of packages properties, required
|
* packages - sorted list of packages properties, required
|
||||||
* architecture, string
|
* architecture, string
|
||||||
* archive_size, pretty printed size, string
|
* archive_size, pretty printed size, string
|
||||||
|
@ -78,7 +78,7 @@ class RemoteCall(Report):
|
|||||||
process_id(str): remote process id
|
process_id(str): remote process id
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if remote process is alive and False otherwise
|
bool: ``True`` in case if remote process is alive and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
response = self.client.make_request("GET", f"{self.client.address}/api/v1/service/process/{process_id}")
|
response = self.client.make_request("GET", f"{self.client.address}/api/v1/service/process/{process_id}")
|
||||||
|
@ -72,7 +72,7 @@ class Spawn(Thread, LazyLogging):
|
|||||||
value(bool): command line argument value
|
value(bool): command line argument value
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: if ``value`` is True, then returns positive flag and negative otherwise
|
str: if ``value`` is ``True``, then returns positive flag and negative otherwise
|
||||||
"""
|
"""
|
||||||
return name if value else f"no-{name}"
|
return name if value else f"no-{name}"
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ class Spawn(Thread, LazyLogging):
|
|||||||
process_id(str): process id to be checked as returned by :func:`_spawn_process()`
|
process_id(str): process id to be checked as returned by :func:`_spawn_process()`
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if process still counts as active and False otherwise
|
bool: ``True`` in case if process still counts as active and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
with self._lock:
|
with self._lock:
|
||||||
return process_id in self.active
|
return process_id in self.active
|
||||||
|
@ -216,7 +216,7 @@ class Client:
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_base(str): package base
|
package_base(str): package base
|
||||||
version(str | None): package version to remove logs. If None set, all logs will be removed
|
version(str | None): package version to remove logs. If ``None`` is set, all logs will be removed
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
NotImplementedError: not implemented method
|
NotImplementedError: not implemented method
|
||||||
@ -245,7 +245,7 @@ class Client:
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_base(str): package base to update
|
package_base(str): package base to update
|
||||||
variable(str | None): patch name. If None set, all patches will be removed
|
variable(str | None): patch name. If ``None`` is set, all patches will be removed
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
NotImplementedError: not implemented method
|
NotImplementedError: not implemented method
|
||||||
|
@ -164,7 +164,7 @@ class LocalClient(Client):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_base(str): package base
|
package_base(str): package base
|
||||||
version(str | None): package version to remove logs. If None set, all logs will be removed
|
version(str | None): package version to remove logs. If ``None`` is set, all logs will be removed
|
||||||
"""
|
"""
|
||||||
self.database.logs_remove(package_base, version, self.repository_id)
|
self.database.logs_remove(package_base, version, self.repository_id)
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ class LocalClient(Client):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_base(str): package base to update
|
package_base(str): package base to update
|
||||||
variable(str | None): patch name. If None set, all patches will be removed
|
variable(str | None): patch name. If ``None`` is set, all patches will be removed
|
||||||
"""
|
"""
|
||||||
variables = [variable] if variable is not None else None
|
variables = [variable] if variable is not None else None
|
||||||
self.database.patches_remove(package_base, variables)
|
self.database.patches_remove(package_base, variables)
|
||||||
|
@ -338,7 +338,7 @@ class WebClient(Client, SyncAhrimanClient):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_base(str): package base
|
package_base(str): package base
|
||||||
version(str | None): package version to remove logs. If None set, all logs will be removed
|
version(str | None): package version to remove logs. If ``None`` is set, all logs will be removed
|
||||||
"""
|
"""
|
||||||
query = self.repository_id.query()
|
query = self.repository_id.query()
|
||||||
if version is not None:
|
if version is not None:
|
||||||
@ -373,7 +373,7 @@ class WebClient(Client, SyncAhrimanClient):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_base(str): package base to update
|
package_base(str): package base to update
|
||||||
variable(str | None): patch name. If None set, all patches will be removed
|
variable(str | None): patch name. If ``None`` is set, all patches will be removed
|
||||||
"""
|
"""
|
||||||
with contextlib.suppress(Exception):
|
with contextlib.suppress(Exception):
|
||||||
self.make_request("DELETE", self._patches_url(package_base, variable or ""))
|
self.make_request("DELETE", self._patches_url(package_base, variable or ""))
|
||||||
|
@ -64,7 +64,7 @@ class Leaf:
|
|||||||
packages(Iterable[Leaf]): list of known leaves
|
packages(Iterable[Leaf]): list of known leaves
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if package is dependency of others and False otherwise
|
bool: ``True`` in case if package is dependency of others and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
for leaf in packages:
|
for leaf in packages:
|
||||||
if leaf.dependencies.intersection(self.items):
|
if leaf.dependencies.intersection(self.items):
|
||||||
@ -79,7 +79,7 @@ class Leaf:
|
|||||||
packages(Iterable[Leaf]): list of known leaves
|
packages(Iterable[Leaf]): list of known leaves
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if any of packages is dependency of the leaf, False otherwise
|
bool: ``True`` if any of packages is dependency of the leaf, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
for leaf in packages:
|
for leaf in packages:
|
||||||
if self.dependencies.intersection(leaf.items):
|
if self.dependencies.intersection(leaf.items):
|
||||||
|
@ -160,7 +160,7 @@ class GitHub(Upload, HttpUpload):
|
|||||||
get release object if any
|
get release object if any
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict[str, Any] | None: GitHub API release object if release found and None otherwise
|
dict[str, Any] | None: GitHub API release object if release found and ``None`` otherwise
|
||||||
"""
|
"""
|
||||||
url = f"https://api.github.com/repos/{self.github_owner}/{
|
url = f"https://api.github.com/repos/{self.github_owner}/{
|
||||||
self.github_repository}/releases/tags/{self.github_release_tag}"
|
self.github_repository}/releases/tags/{self.github_release_tag}"
|
||||||
|
@ -225,8 +225,8 @@ def extract_user() -> str | None:
|
|||||||
extract user from system environment
|
extract user from system environment
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str | None: SUDO_USER in case if set and USER otherwise. It can return None in case if environment has been
|
str | None: SUDO_USER in case if set and USER otherwise. It can return ``None`` in case if environment has been
|
||||||
cleared before application start
|
cleared before application start
|
||||||
"""
|
"""
|
||||||
return os.getenv("SUDO_USER") or os.getenv("DOAS_USER") or os.getenv("USER")
|
return os.getenv("SUDO_USER") or os.getenv("DOAS_USER") or os.getenv("USER")
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ def package_like(filename: Path) -> bool:
|
|||||||
filename(Path): name of file to check
|
filename(Path): name of file to check
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if name contains ``.pkg.`` and not signature, False otherwise
|
bool: ``True`` in case if name contains ``.pkg.`` and not signature, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
name = filename.name
|
name = filename.name
|
||||||
return not name.startswith(".") and ".pkg." in name and not name.endswith(".sig")
|
return not name.startswith(".") and ".pkg." in name and not name.endswith(".sig")
|
||||||
|
@ -44,7 +44,7 @@ class AuthSettings(StrEnum):
|
|||||||
get enabled flag
|
get enabled flag
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: False in case if authorization is disabled and True otherwise
|
bool: ``False`` in case if authorization is disabled and ``True`` otherwise
|
||||||
"""
|
"""
|
||||||
return self != AuthSettings.Disabled
|
return self != AuthSettings.Disabled
|
||||||
|
|
||||||
|
@ -29,11 +29,15 @@ class EventType(StrEnum):
|
|||||||
predefined event types
|
predefined event types
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
|
PackageOutdated(EventType): (class attribute) package has been marked as out-of-date
|
||||||
PackageRemoved(EventType): (class attribute) package has been removed
|
PackageRemoved(EventType): (class attribute) package has been removed
|
||||||
|
PackageUpdateFailed(EventType): (class attribute) package update has been failed
|
||||||
PackageUpdated(EventType): (class attribute) package has been updated
|
PackageUpdated(EventType): (class attribute) package has been updated
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
PackageOutdated = "package-outdated"
|
||||||
PackageRemoved = "package-removed"
|
PackageRemoved = "package-removed"
|
||||||
|
PackageUpdateFailed = "package-update-failed"
|
||||||
PackageUpdated = "package-updated"
|
PackageUpdated = "package-updated"
|
||||||
|
|
||||||
|
|
||||||
@ -58,11 +62,10 @@ class Event:
|
|||||||
|
|
||||||
def __post_init__(self) -> None:
|
def __post_init__(self) -> None:
|
||||||
"""
|
"""
|
||||||
replace null data to empty dictionary
|
convert event type to enum if it is a well-known event type
|
||||||
"""
|
"""
|
||||||
if self.event in EventType:
|
if self.event in EventType:
|
||||||
object.__setattr__(self, "event", EventType(self.event))
|
object.__setattr__(self, "event", EventType(self.event))
|
||||||
object.__setattr__(self, "data", self.data or {})
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, dump: dict[str, Any]) -> Self:
|
def from_json(cls, dump: dict[str, Any]) -> Self:
|
||||||
|
@ -41,7 +41,7 @@ class MigrationResult:
|
|||||||
check migration and check if there are pending migrations
|
check migration and check if there are pending migrations
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if it requires migrations and False otherwise
|
bool: ``True`` in case if it requires migrations and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
self.validate()
|
self.validate()
|
||||||
return self.new_version > self.old_version
|
return self.new_version > self.old_version
|
||||||
|
@ -158,7 +158,7 @@ class Package(LazyLogging):
|
|||||||
get VCS flag based on the package base
|
get VCS flag based on the package base
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if package base looks like VCS package and False otherwise
|
bool: ``True`` in case if package base looks like VCS package and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.base.endswith("-bzr") \
|
return self.base.endswith("-bzr") \
|
||||||
or self.base.endswith("-csv")\
|
or self.base.endswith("-csv")\
|
||||||
@ -504,7 +504,7 @@ class Package(LazyLogging):
|
|||||||
timestamp(float | int): timestamp to check build date against
|
timestamp(float | int): timestamp to check build date against
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if package was built after the specified date and False otherwise. In case if build date
|
bool: ``True`` in case if package was built after the specified date and ``False`` otherwise. In case if build date
|
||||||
is not set by any of packages, it returns False
|
is not set by any of packages, it returns False
|
||||||
"""
|
"""
|
||||||
return any(
|
return any(
|
||||||
@ -528,7 +528,7 @@ class Package(LazyLogging):
|
|||||||
(Default value = True)
|
(Default value = True)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if the package is out-of-dated and False otherwise
|
bool: ``True`` if the package is out-of-dated and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
min_vcs_build_date = utcnow().timestamp() - vcs_allowed_age
|
min_vcs_build_date = utcnow().timestamp() - vcs_allowed_age
|
||||||
if calculate_version and not self.is_newer_than(min_vcs_build_date):
|
if calculate_version and not self.is_newer_than(min_vcs_build_date):
|
||||||
|
@ -55,7 +55,7 @@ class PkgbuildPatch:
|
|||||||
parse key and define whether it function or not
|
parse key and define whether it function or not
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if key ends with parentheses and False otherwise
|
bool: ``True`` in case if key ends with parentheses and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.key is not None and self.key.endswith("()")
|
return self.key is not None and self.key.endswith("()")
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ class PkgbuildPatch:
|
|||||||
check if patch is full diff one or just single-variable patch
|
check if patch is full diff one or just single-variable patch
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case key set and False otherwise
|
bool: ``True`` in case key set and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.key is None
|
return self.key is None
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ class Property:
|
|||||||
Attributes:
|
Attributes:
|
||||||
name(str): name of the property
|
name(str): name of the property
|
||||||
value(Any): property value
|
value(Any): property value
|
||||||
is_required(bool): if set to True then this property is required
|
is_required(bool): if set to ``True`` then this property is required
|
||||||
indent(int): property indentation level
|
indent(int): property indentation level
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ class RemoteSource:
|
|||||||
check if source is remote
|
check if source is remote
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if package is well-known remote source (e.g. AUR) and False otherwise
|
bool: ``True`` in case if package is well-known remote source (e.g. AUR) and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.source in (PackageSource.AUR, PackageSource.Repository)
|
return self.source in (PackageSource.AUR, PackageSource.Repository)
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ class RepositoryId:
|
|||||||
check if all data is supplied for the loading
|
check if all data is supplied for the loading
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if architecture or name are not set and False otherwise
|
bool: ``True`` in case if architecture or name are not set and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return not self.architecture or not self.name
|
return not self.architecture or not self.name
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ class RepositoryId:
|
|||||||
other(Any): other object to compare
|
other(Any): other object to compare
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if this is less than other and False otherwise
|
bool: ``True`` in case if this is less than other and ``False`` otherwise
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
TypeError: if other is different from RepositoryId type
|
TypeError: if other is different from RepositoryId type
|
||||||
|
@ -82,7 +82,7 @@ class Result:
|
|||||||
get if build result is empty or not
|
get if build result is empty or not
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if success list is empty and False otherwise
|
bool: ``True`` in case if success list is empty and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return not self._added and not self._updated
|
return not self._added and not self._updated
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ class Result:
|
|||||||
other(Any): other object instance
|
other(Any): other object instance
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if the other object is the same and False otherwise
|
bool: ``True`` if the other object is the same and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
if not isinstance(other, Result):
|
if not isinstance(other, Result):
|
||||||
return False
|
return False
|
||||||
|
@ -98,7 +98,7 @@ class User:
|
|||||||
salt(str): salt for hashed password
|
salt(str): salt for hashed password
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if password matches, False otherwise
|
bool: ``True`` in case if password matches, ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
verified: bool = self._HASHER.verify(password + salt, self.password)
|
verified: bool = self._HASHER.verify(password + salt, self.password)
|
||||||
@ -131,7 +131,7 @@ class User:
|
|||||||
required(UserAccess): required access level
|
required(UserAccess): required access level
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is allowed to do this request and False otherwise
|
bool: ``True`` in case if user is allowed to do this request and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return self.access.permits(required)
|
return self.access.permits(required)
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ class UserAccess(StrEnum):
|
|||||||
other(UserAccess): other permission to compare
|
other(UserAccess): other permission to compare
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if current permission allows the operation and False otherwise
|
bool: ``True`` in case if current permission allows the operation and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
for member in UserAccess:
|
for member in UserAccess:
|
||||||
if member == other:
|
if member == other:
|
||||||
|
@ -63,7 +63,7 @@ class _AuthorizationPolicy(aiohttp_security.AbstractAuthorizationPolicy):
|
|||||||
identity(str): username
|
identity(str): username
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str | None: user identity (username) in case if user exists and None otherwise
|
str | None: user identity (username) in case if user exists and ``None`` otherwise
|
||||||
"""
|
"""
|
||||||
return identity if await self.validator.known_username(identity) else None
|
return identity if await self.validator.known_username(identity) else None
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ class _AuthorizationPolicy(aiohttp_security.AbstractAuthorizationPolicy):
|
|||||||
context(str | None, optional): URI request path (Default value = None)
|
context(str | None, optional): URI request path (Default value = None)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if user is allowed to perform this request and False otherwise
|
bool: ``True`` in case if user is allowed to perform this request and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
# some methods for type checking and parent class compatibility
|
# some methods for type checking and parent class compatibility
|
||||||
if identity is None or not isinstance(permission, UserAccess):
|
if identity is None or not isinstance(permission, UserAccess):
|
||||||
|
@ -38,7 +38,7 @@ def _is_templated_unauthorized(request: Request) -> bool:
|
|||||||
request(Request): source request to check
|
request(Request): source request to check
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True in case if response should be rendered as html and False otherwise
|
bool: ``True`` in case if response should be rendered as html and ``False`` otherwise
|
||||||
"""
|
"""
|
||||||
return request.path in ("/api/v1/login", "/api/v1/logout") \
|
return request.path in ("/api/v1/login", "/api/v1/logout") \
|
||||||
and "application/json" not in request.headers.getall("accept", [])
|
and "application/json" not in request.headers.getall("accept", [])
|
||||||
|
@ -247,7 +247,7 @@ class BaseView(View, CorsViewMixin):
|
|||||||
extract username from request if any
|
extract username from request if any
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str | None: authorized username if any and None otherwise (e.g. if authorization is disabled)
|
str | None: authorized username if any and ``None`` otherwise (e.g. if authorization is disabled)
|
||||||
"""
|
"""
|
||||||
try: # try to read from payload
|
try: # try to read from payload
|
||||||
data: dict[str, str] = await self.request.json() # technically it is not, but we only need str here
|
data: dict[str, str] = await self.request.json() # technically it is not, but we only need str here
|
||||||
|
@ -3,9 +3,9 @@ from ahriman.models.event import Event, EventType
|
|||||||
|
|
||||||
def test_post_init() -> None:
|
def test_post_init() -> None:
|
||||||
"""
|
"""
|
||||||
must remove replace empty dictionary
|
must replace event type for known types
|
||||||
"""
|
"""
|
||||||
assert Event("", "").data == {}
|
assert Event("random", "")
|
||||||
assert isinstance(Event(str(EventType.PackageUpdated), "").event, EventType)
|
assert isinstance(Event(str(EventType.PackageUpdated), "").event, EventType)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user