mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
test: add pytlint imports plugin and fix errors
This commit is contained in:
parent
856bbc30d4
commit
2ea8a4a07f
@ -83,6 +83,7 @@ limit-inference-results=100
|
|||||||
# usually to register additional checkers.
|
# usually to register additional checkers.
|
||||||
load-plugins=pylint.extensions.docparams,
|
load-plugins=pylint.extensions.docparams,
|
||||||
definition_order,
|
definition_order,
|
||||||
|
import_order,
|
||||||
|
|
||||||
# Pickle collected data for later comparisons.
|
# Pickle collected data for later comparisons.
|
||||||
persistent=yes
|
persistent=yes
|
||||||
|
@ -25,19 +25,19 @@ from pylint.lint import PyLinter
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
class MethodTypeOrder(StrEnum):
|
class MethodType(StrEnum):
|
||||||
"""
|
"""
|
||||||
method type enumeration
|
method type enumeration
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
Class(MethodTypeOrder): (class attribute) class method
|
Class(MethodType): (class attribute) class method
|
||||||
Delete(MethodTypeOrder): (class attribute) destructor-like methods
|
Delete(MethodType): (class attribute) destructor-like methods
|
||||||
Init(MethodTypeOrder): (class attribute) initialization method
|
Init(MethodType): (class attribute) initialization method
|
||||||
Magic(MethodTypeOrder): (class attribute) other magical methods
|
Magic(MethodType): (class attribute) other magical methods
|
||||||
New(MethodTypeOrder): (class attribute) constructor method
|
New(MethodType): (class attribute) constructor method
|
||||||
Normal(MethodTypeOrder): (class attribute) usual method
|
Normal(MethodType): (class attribute) usual method
|
||||||
Property(MethodTypeOrder): (class attribute) property method
|
Property(MethodType): (class attribute) property method
|
||||||
Static(MethodTypeOrder): (class attribute) static method
|
Static(MethodType): (class attribute) static method
|
||||||
"""
|
"""
|
||||||
|
|
||||||
Class = "classmethod"
|
Class = "classmethod"
|
||||||
@ -59,20 +59,20 @@ class DefinitionOrder(BaseRawFileChecker):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
DECORATED_METHODS_ORDER = {
|
DECORATED_METHODS_ORDER = {
|
||||||
"cached_property": MethodTypeOrder.Property,
|
"cached_property": MethodType.Property,
|
||||||
"classmethod": MethodTypeOrder.Class,
|
"classmethod": MethodType.Class,
|
||||||
"property": MethodTypeOrder.Property,
|
"property": MethodType.Property,
|
||||||
"staticmethod": MethodTypeOrder.Static,
|
"staticmethod": MethodType.Static,
|
||||||
}
|
}
|
||||||
|
|
||||||
name = "method-ordering"
|
|
||||||
msgs = {
|
msgs = {
|
||||||
"W6001": (
|
"W6001": (
|
||||||
"Invalid method order %s, expected %s",
|
"Invalid method order %s, expected %s",
|
||||||
"methods-out-of-order",
|
"methods-out-of-order",
|
||||||
"Methods are defined out of recommended order.",
|
"Methods are defined out of recommended order.",
|
||||||
)
|
),
|
||||||
}
|
}
|
||||||
|
name = "method-ordering"
|
||||||
options = (
|
options = (
|
||||||
(
|
(
|
||||||
"method-type-order",
|
"method-type-order",
|
||||||
@ -114,7 +114,7 @@ class DefinitionOrder(BaseRawFileChecker):
|
|||||||
return list(filter(is_defined_function, source))
|
return list(filter(is_defined_function, source))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def resolve_type(function: nodes.FunctionDef) -> MethodTypeOrder:
|
def resolve_type(function: nodes.FunctionDef) -> MethodType:
|
||||||
"""
|
"""
|
||||||
resolve type of the function
|
resolve type of the function
|
||||||
|
|
||||||
@ -122,15 +122,15 @@ class DefinitionOrder(BaseRawFileChecker):
|
|||||||
function(nodes.FunctionDef): function definition
|
function(nodes.FunctionDef): function definition
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
MethodTypeOrder: resolved function type
|
MethodType: resolved function type
|
||||||
"""
|
"""
|
||||||
# init methods
|
# init methods
|
||||||
if function.name in ("__init__", "__post_init__"):
|
if function.name in ("__init__", "__post_init__"):
|
||||||
return MethodTypeOrder.Init
|
return MethodType.Init
|
||||||
if function.name in ("__new__",):
|
if function.name in ("__new__",):
|
||||||
return MethodTypeOrder.New
|
return MethodType.New
|
||||||
if function.name in ("__del__",):
|
if function.name in ("__del__",):
|
||||||
return MethodTypeOrder.Delete
|
return MethodType.Delete
|
||||||
|
|
||||||
# decorated methods
|
# decorated methods
|
||||||
decorators = []
|
decorators = []
|
||||||
@ -142,10 +142,10 @@ class DefinitionOrder(BaseRawFileChecker):
|
|||||||
|
|
||||||
# magic methods
|
# magic methods
|
||||||
if function.name.startswith("__") and function.name.endswith("__"):
|
if function.name.startswith("__") and function.name.endswith("__"):
|
||||||
return MethodTypeOrder.Magic
|
return MethodType.Magic
|
||||||
|
|
||||||
# normal method
|
# normal method
|
||||||
return MethodTypeOrder.Normal
|
return MethodType.Normal
|
||||||
|
|
||||||
def check_class(self, clazz: nodes.ClassDef) -> None:
|
def check_class(self, clazz: nodes.ClassDef) -> None:
|
||||||
"""
|
"""
|
||||||
@ -184,7 +184,7 @@ class DefinitionOrder(BaseRawFileChecker):
|
|||||||
try:
|
try:
|
||||||
function_type_index = self.linter.config.method_type_order.index(function_type)
|
function_type_index = self.linter.config.method_type_order.index(function_type)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
function_type_index = 10 # not in the list
|
function_type_index = len(self.linter.config.method_type_order) # not in the list
|
||||||
|
|
||||||
return function_type_index, function.name
|
return function_type_index, function.name
|
||||||
|
|
||||||
|
196
pylint_plugins/import_order.py
Normal file
196
pylint_plugins/import_order.py
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2021-2023 ahriman team.
|
||||||
|
#
|
||||||
|
# This file is part of ahriman
|
||||||
|
# (see https://github.com/arcan1s/ahriman).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
from astroid import nodes
|
||||||
|
from collections.abc import Iterable
|
||||||
|
from enum import StrEnum
|
||||||
|
from pylint.checkers import BaseRawFileChecker
|
||||||
|
from pylint.lint import PyLinter
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
class ImportType(StrEnum):
|
||||||
|
"""
|
||||||
|
import type enumeration
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
Package(MethodTypeOrder): (class attribute) package import
|
||||||
|
PackageFrom(MethodTypeOrder): (class attribute) package import, from clause
|
||||||
|
System(ImportType): (class attribute) system installed packages
|
||||||
|
SystemFrom(MethodTypeOrder): (class attribute) system installed packages, from clause
|
||||||
|
"""
|
||||||
|
|
||||||
|
Package = "package"
|
||||||
|
PackageFrom = "package-from"
|
||||||
|
System = "system"
|
||||||
|
SystemFrom = "system-from"
|
||||||
|
|
||||||
|
|
||||||
|
class ImportOrder(BaseRawFileChecker):
|
||||||
|
"""
|
||||||
|
check if imports are defined in recommended order
|
||||||
|
"""
|
||||||
|
|
||||||
|
msgs = {
|
||||||
|
"W6002": (
|
||||||
|
"Invalid import order %s, expected before %s",
|
||||||
|
"imports-out-of-order",
|
||||||
|
"Imports are defined out of recommended order.",
|
||||||
|
),
|
||||||
|
"W6003": (
|
||||||
|
"Import contains more than one package: %s",
|
||||||
|
"multiple-package-imports",
|
||||||
|
"Multiple package imports are not allowed.",
|
||||||
|
),
|
||||||
|
"W6004": (
|
||||||
|
"Invalid from import order %s, expected %s",
|
||||||
|
"from-imports-out-of-order",
|
||||||
|
"From imports are defined out of recommended order.",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
name = "import-ordering"
|
||||||
|
options = (
|
||||||
|
(
|
||||||
|
"import-type-order",
|
||||||
|
{
|
||||||
|
"default": [
|
||||||
|
"system",
|
||||||
|
"system-from",
|
||||||
|
"package",
|
||||||
|
"package-from",
|
||||||
|
],
|
||||||
|
"type": "csv",
|
||||||
|
"metavar": "<comma-separated types>",
|
||||||
|
"help": "Import types order to check.",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"root-module",
|
||||||
|
{
|
||||||
|
"default": "ahriman",
|
||||||
|
"type": "string",
|
||||||
|
"help": "Root module name",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def imports(source: Iterable[Any], start_lineno: int = 0) -> list[nodes.Import | nodes.ImportFrom]:
|
||||||
|
"""
|
||||||
|
extract import nodes from list of raw nodes
|
||||||
|
|
||||||
|
Args:
|
||||||
|
source(Iterable[Any]): all available nodes
|
||||||
|
start_lineno(int, optional): minimal allowed line number (Default value = 0)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list[nodes.Import | nodes.ImportFrom]: list of import nodes
|
||||||
|
"""
|
||||||
|
|
||||||
|
def is_defined_import(imports: Any) -> bool:
|
||||||
|
return isinstance(imports, (nodes.Import, nodes.ImportFrom)) \
|
||||||
|
and imports.lineno is not None \
|
||||||
|
and imports.lineno >= start_lineno
|
||||||
|
|
||||||
|
return list(filter(is_defined_import, source))
|
||||||
|
|
||||||
|
def check_from_imports(self, imports: nodes.ImportFrom) -> None:
|
||||||
|
"""
|
||||||
|
check import from statement
|
||||||
|
|
||||||
|
Args:
|
||||||
|
imports(nodes.ImportFrom): import from node
|
||||||
|
"""
|
||||||
|
imported = [names for names, _ in imports.names]
|
||||||
|
for real, expected in zip(imported, sorted(imported)):
|
||||||
|
if real == expected:
|
||||||
|
continue
|
||||||
|
self.add_message("from-imports-out-of-order", line=imports.lineno, args=(real, expected))
|
||||||
|
break
|
||||||
|
|
||||||
|
def check_imports(self, imports: list[nodes.Import | nodes.ImportFrom], root_package: str) -> None:
|
||||||
|
"""
|
||||||
|
check imports
|
||||||
|
|
||||||
|
Args:
|
||||||
|
imports(list[nodes.Import | nodes.ImportFrom]): list of imports in their defined order
|
||||||
|
root_package(str): root package name
|
||||||
|
"""
|
||||||
|
last_statement: tuple[int, str] | None = None
|
||||||
|
|
||||||
|
for statement in imports:
|
||||||
|
# define types and perform specific checks
|
||||||
|
if isinstance(statement, nodes.ImportFrom):
|
||||||
|
import_name = statement.modname
|
||||||
|
root, *_ = import_name.split(".", maxsplit=1)
|
||||||
|
import_type = ImportType.PackageFrom if root_package == root else ImportType.SystemFrom
|
||||||
|
# check from import itself
|
||||||
|
self.check_from_imports(statement)
|
||||||
|
else:
|
||||||
|
import_name = next(name for name, _ in statement.names)
|
||||||
|
root, *_ = import_name.split(".", maxsplit=1)[0]
|
||||||
|
import_type = ImportType.Package if root_package == root else ImportType.System
|
||||||
|
# check import itself
|
||||||
|
self.check_package_imports(statement)
|
||||||
|
|
||||||
|
# extract index
|
||||||
|
try:
|
||||||
|
import_type_index = self.linter.config.import_type_order.index(import_type)
|
||||||
|
except ValueError:
|
||||||
|
import_type_index = len(self.linter.config.import_type_order)
|
||||||
|
|
||||||
|
# check ordering if possible
|
||||||
|
if last_statement is not None:
|
||||||
|
_, last_statement_name = last_statement
|
||||||
|
if last_statement > (import_type_index, import_name):
|
||||||
|
self.add_message("imports-out-of-order", line=statement.lineno,
|
||||||
|
args=(import_name, last_statement_name))
|
||||||
|
|
||||||
|
# update the last value
|
||||||
|
last_statement = import_type_index, import_name
|
||||||
|
|
||||||
|
def check_package_imports(self, imports: nodes.Import) -> None:
|
||||||
|
"""
|
||||||
|
check package import
|
||||||
|
|
||||||
|
Args:
|
||||||
|
imports(nodes.Import): package import node
|
||||||
|
"""
|
||||||
|
if len(imports.names) != 1:
|
||||||
|
self.add_message("multiple-package-imports", line=imports.lineno, args=(imports.names,))
|
||||||
|
|
||||||
|
def process_module(self, node: nodes.Module) -> None:
|
||||||
|
"""
|
||||||
|
process module
|
||||||
|
|
||||||
|
Args:
|
||||||
|
node(nodes.Module): module node to check
|
||||||
|
"""
|
||||||
|
root_module, *_ = node.qname().split(".")
|
||||||
|
self.check_imports(self.imports(node.values()), root_module)
|
||||||
|
|
||||||
|
|
||||||
|
def register(linter: PyLinter) -> None:
|
||||||
|
"""
|
||||||
|
register custom checker
|
||||||
|
|
||||||
|
Args:
|
||||||
|
linter(PyLinter): linter in which checker should be registered
|
||||||
|
"""
|
||||||
|
linter.register_checker(ImportOrder(linter))
|
@ -17,14 +17,13 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.application.handlers.handler import Handler
|
|
||||||
|
|
||||||
from ahriman.application.handlers.add import Add
|
from ahriman.application.handlers.add import Add
|
||||||
from ahriman.application.handlers.backup import Backup
|
from ahriman.application.handlers.backup import Backup
|
||||||
from ahriman.application.handlers.change import Change
|
from ahriman.application.handlers.change import Change
|
||||||
from ahriman.application.handlers.clean import Clean
|
from ahriman.application.handlers.clean import Clean
|
||||||
from ahriman.application.handlers.daemon import Daemon
|
from ahriman.application.handlers.daemon import Daemon
|
||||||
from ahriman.application.handlers.dump import Dump
|
from ahriman.application.handlers.dump import Dump
|
||||||
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.application.handlers.help import Help
|
from ahriman.application.handlers.help import Help
|
||||||
from ahriman.application.handlers.key_import import KeyImport
|
from ahriman.application.handlers.key_import import KeyImport
|
||||||
from ahriman.application.handlers.patch import Patch
|
from ahriman.application.handlers.patch import Patch
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.packagers import Packagers
|
from ahriman.models.packagers import Packagers
|
||||||
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
||||||
|
@ -23,7 +23,7 @@ import pwd
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from tarfile import TarFile
|
from tarfile import TarFile
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.database import SQLite
|
from ahriman.core.database import SQLite
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import ChangesPrinter
|
from ahriman.core.formatters import ChangesPrinter
|
||||||
from ahriman.models.action import Action
|
from ahriman.models.action import Action
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import argparse
|
|||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.application.updates_iterator import FixedUpdatesIterator, UpdatesIterator
|
from ahriman.application.application.updates_iterator import FixedUpdatesIterator, UpdatesIterator
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.application.handlers.update import Update
|
from ahriman.application.handlers.update import Update
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import ConfigurationPathsPrinter, ConfigurationPrinter, StringPrinter
|
from ahriman.core.formatters import ConfigurationPathsPrinter, ConfigurationPrinter, StringPrinter
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.build_tools.sources import Sources
|
from ahriman.core.build_tools.sources import Sources
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import PatchPrinter
|
from ahriman.core.formatters import PatchPrinter
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.build_status import BuildStatusEnum
|
from ahriman.models.build_status import BuildStatusEnum
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import StringPrinter
|
from ahriman.core.formatters import StringPrinter
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import RepositoryPrinter
|
from ahriman.core.formatters import RepositoryPrinter
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -21,7 +21,7 @@ import argparse
|
|||||||
|
|
||||||
from tarfile import TarFile
|
from tarfile import TarFile
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import shlex
|
import shlex
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -19,10 +19,10 @@
|
|||||||
#
|
#
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from dataclasses import fields
|
|
||||||
from collections.abc import Callable, Iterable
|
from collections.abc import Callable, Iterable
|
||||||
|
from dataclasses import fields
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.alpm.remote import AUR, Official
|
from ahriman.core.alpm.remote import AUR, Official
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.exceptions import OptionError
|
from ahriman.core.exceptions import OptionError
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman import __version__
|
from ahriman import __version__
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import UpdatePrinter
|
from ahriman.core.formatters import UpdatePrinter
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
|
@ -24,7 +24,7 @@ from pwd import getpwuid
|
|||||||
from urllib.parse import quote_plus as urlencode
|
from urllib.parse import quote_plus as urlencode
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.exceptions import MissingArchitectureError
|
from ahriman.core.exceptions import MissingArchitectureError
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -23,7 +23,7 @@ import sys
|
|||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import StringPrinter
|
from ahriman.core.formatters import StringPrinter
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import argparse
|
|||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import PackagePrinter, StatusPrinter
|
from ahriman.core.formatters import PackagePrinter, StatusPrinter
|
||||||
from ahriman.models.build_status import BuildStatus
|
from ahriman.models.build_status import BuildStatus
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.action import Action
|
from ahriman.models.action import Action
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import StringPrinter, TreePrinter
|
from ahriman.core.formatters import StringPrinter, TreePrinter
|
||||||
from ahriman.core.tree import Tree
|
from ahriman.core.tree import Tree
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
from ahriman.models.repository_paths import RepositoryPaths
|
from ahriman.models.repository_paths import RepositoryPaths
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
from ahriman.models.result import Result
|
from ahriman.models.result import Result
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import StringPrinter
|
from ahriman.core.formatters import StringPrinter
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -22,7 +22,7 @@ import argparse
|
|||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
|
||||||
from ahriman.application.application import Application
|
from ahriman.application.application import Application
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.models.packagers import Packagers
|
from ahriman.models.packagers import Packagers
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import getpass
|
import getpass
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.database import SQLite
|
from ahriman.core.database import SQLite
|
||||||
from ahriman.core.exceptions import PasswordError
|
from ahriman.core.exceptions import PasswordError
|
||||||
|
@ -22,7 +22,7 @@ import copy
|
|||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.configuration.schema import CONFIGURATION_SCHEMA, ConfigurationSchema
|
from ahriman.core.configuration.schema import CONFIGURATION_SCHEMA, ConfigurationSchema
|
||||||
from ahriman.core.configuration.validator import Validator
|
from ahriman.core.configuration.validator import Validator
|
||||||
|
@ -25,7 +25,7 @@ from collections.abc import Generator
|
|||||||
from importlib import metadata
|
from importlib import metadata
|
||||||
|
|
||||||
from ahriman import __version__
|
from ahriman import __version__
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.formatters import VersionPrinter
|
from ahriman.core.formatters import VersionPrinter
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
@ -21,7 +21,7 @@ import argparse
|
|||||||
|
|
||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
|
|
||||||
from ahriman.application.handlers import Handler
|
from ahriman.application.handlers.handler import Handler
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.spawn import Spawn
|
from ahriman.core.spawn import Spawn
|
||||||
from ahriman.core.triggers import TriggerLoader
|
from ahriman.core.triggers import TriggerLoader
|
||||||
|
@ -17,8 +17,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.alpm.remote.remote import Remote
|
|
||||||
|
|
||||||
from ahriman.core.alpm.remote.aur import AUR
|
from ahriman.core.alpm.remote.aur import AUR
|
||||||
from ahriman.core.alpm.remote.official import Official
|
from ahriman.core.alpm.remote.official import Official
|
||||||
from ahriman.core.alpm.remote.official_syncdb import OfficialSyncdb
|
from ahriman.core.alpm.remote.official_syncdb import OfficialSyncdb
|
||||||
|
from ahriman.core.alpm.remote.remote import Remote
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from ahriman.core.alpm.pacman import Pacman
|
from ahriman.core.alpm.pacman import Pacman
|
||||||
from ahriman.core.alpm.remote import Remote
|
from ahriman.core.alpm.remote.remote import Remote
|
||||||
from ahriman.core.exceptions import PackageInfoError, UnknownPackageError
|
from ahriman.core.exceptions import PackageInfoError, UnknownPackageError
|
||||||
from ahriman.models.aur_package import AURPackage
|
from ahriman.models.aur_package import AURPackage
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from ahriman.core.alpm.pacman import Pacman
|
from ahriman.core.alpm.pacman import Pacman
|
||||||
from ahriman.core.alpm.remote import Remote
|
from ahriman.core.alpm.remote.remote import Remote
|
||||||
from ahriman.core.exceptions import PackageInfoError, UnknownPackageError
|
from ahriman.core.exceptions import PackageInfoError, UnknownPackageError
|
||||||
from ahriman.models.aur_package import AURPackage
|
from ahriman.models.aur_package import AURPackage
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.alpm.pacman import Pacman
|
from ahriman.core.alpm.pacman import Pacman
|
||||||
from ahriman.core.alpm.remote import Official
|
from ahriman.core.alpm.remote.official import Official
|
||||||
from ahriman.core.exceptions import UnknownPackageError
|
from ahriman.core.exceptions import UnknownPackageError
|
||||||
from ahriman.models.aur_package import AURPackage
|
from ahriman.models.aur_package import AURPackage
|
||||||
|
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.database.operations.operations import Operations
|
|
||||||
|
|
||||||
from ahriman.core.database.operations.auth_operations import AuthOperations
|
from ahriman.core.database.operations.auth_operations import AuthOperations
|
||||||
from ahriman.core.database.operations.build_operations import BuildOperations
|
from ahriman.core.database.operations.build_operations import BuildOperations
|
||||||
from ahriman.core.database.operations.changes_operations import ChangesOperations
|
from ahriman.core.database.operations.changes_operations import ChangesOperations
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
from sqlite3 import Connection
|
from sqlite3 import Connection
|
||||||
|
|
||||||
from ahriman.core.database.operations import Operations
|
from ahriman.core.database.operations.operations import Operations
|
||||||
from ahriman.models.user import User
|
from ahriman.models.user import User
|
||||||
from ahriman.models.user_access import UserAccess
|
from ahriman.models.user_access import UserAccess
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
from sqlite3 import Connection
|
from sqlite3 import Connection
|
||||||
|
|
||||||
from ahriman.core.database.operations import Operations
|
from ahriman.core.database.operations.operations import Operations
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
from sqlite3 import Connection
|
from sqlite3 import Connection
|
||||||
|
|
||||||
from ahriman.core.database.operations import Operations
|
from ahriman.core.database.operations.operations import Operations
|
||||||
from ahriman.models.changes import Changes
|
from ahriman.models.changes import Changes
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
from sqlite3 import Connection
|
from sqlite3 import Connection
|
||||||
|
|
||||||
from ahriman.core.database.operations import Operations
|
from ahriman.core.database.operations.operations import Operations
|
||||||
from ahriman.models.log_record_id import LogRecordId
|
from ahriman.models.log_record_id import LogRecordId
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
from collections.abc import Generator, Iterable
|
from collections.abc import Generator, Iterable
|
||||||
from sqlite3 import Connection
|
from sqlite3 import Connection
|
||||||
|
|
||||||
from ahriman.core.database.operations import Operations
|
from ahriman.core.database.operations.operations import Operations
|
||||||
from ahriman.models.build_status import BuildStatus
|
from ahriman.models.build_status import BuildStatus
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
from ahriman.models.package_description import PackageDescription
|
from ahriman.models.package_description import PackageDescription
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from sqlite3 import Connection
|
from sqlite3 import Connection
|
||||||
|
|
||||||
from ahriman.core.database.operations import Operations
|
from ahriman.core.database.operations.operations import Operations
|
||||||
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.formatters.printer import Printer
|
|
||||||
|
|
||||||
from ahriman.core.formatters.aur_printer import AurPrinter
|
from ahriman.core.formatters.aur_printer import AurPrinter
|
||||||
from ahriman.core.formatters.build_printer import BuildPrinter
|
from ahriman.core.formatters.build_printer import BuildPrinter
|
||||||
from ahriman.core.formatters.changes_printer import ChangesPrinter
|
from ahriman.core.formatters.changes_printer import ChangesPrinter
|
||||||
@ -26,6 +24,7 @@ from ahriman.core.formatters.configuration_paths_printer import ConfigurationPat
|
|||||||
from ahriman.core.formatters.configuration_printer import ConfigurationPrinter
|
from ahriman.core.formatters.configuration_printer import ConfigurationPrinter
|
||||||
from ahriman.core.formatters.package_printer import PackagePrinter
|
from ahriman.core.formatters.package_printer import PackagePrinter
|
||||||
from ahriman.core.formatters.patch_printer import PatchPrinter
|
from ahriman.core.formatters.patch_printer import PatchPrinter
|
||||||
|
from ahriman.core.formatters.printer import Printer
|
||||||
from ahriman.core.formatters.repository_printer import RepositoryPrinter
|
from ahriman.core.formatters.repository_printer import RepositoryPrinter
|
||||||
from ahriman.core.formatters.status_printer import StatusPrinter
|
from ahriman.core.formatters.status_printer import StatusPrinter
|
||||||
from ahriman.core.formatters.string_printer import StringPrinter
|
from ahriman.core.formatters.string_printer import StringPrinter
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.formatters import Printer
|
from ahriman.core.formatters.printer import Printer
|
||||||
from ahriman.models.changes import Changes
|
from ahriman.models.changes import Changes
|
||||||
from ahriman.models.property import Property
|
from ahriman.models.property import Property
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.formatters import Printer
|
from ahriman.core.formatters.printer import Printer
|
||||||
|
|
||||||
|
|
||||||
class StringPrinter(Printer):
|
class StringPrinter(Printer):
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from logging import NullHandler
|
from logging import NullHandler # pylint: disable=imports-out-of-order
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.triggers import Trigger
|
|
||||||
from ahriman.core.report.report import Report
|
from ahriman.core.report.report import Report
|
||||||
|
from ahriman.core.triggers import Trigger
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
from ahriman.models.repository_id import RepositoryId
|
from ahriman.models.repository_id import RepositoryId
|
||||||
from ahriman.models.result import Result
|
from ahriman.models.result import Result
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#
|
#
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterable, Callable
|
from collections.abc import Callable, Iterable
|
||||||
from typing import Any, Self
|
from typing import Any, Self
|
||||||
|
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from secrets import token_urlsafe as generate_password
|
|
||||||
from dataclasses import dataclass, replace
|
from dataclasses import dataclass, replace
|
||||||
from passlib.hash import sha512_crypt
|
from passlib.hash import sha512_crypt
|
||||||
|
from secrets import token_urlsafe as generate_password
|
||||||
from typing import Self
|
from typing import Self
|
||||||
|
|
||||||
from ahriman.models.user_access import UserAccess
|
from ahriman.models.user_access import UserAccess
|
||||||
|
@ -35,7 +35,7 @@ from ahriman.web.schemas.package_names_schema import PackageNamesSchema
|
|||||||
from ahriman.web.schemas.package_patch_schema import PackagePatchSchema
|
from ahriman.web.schemas.package_patch_schema import PackagePatchSchema
|
||||||
from ahriman.web.schemas.package_properties_schema import PackagePropertiesSchema
|
from ahriman.web.schemas.package_properties_schema import PackagePropertiesSchema
|
||||||
from ahriman.web.schemas.package_schema import PackageSchema
|
from ahriman.web.schemas.package_schema import PackageSchema
|
||||||
from ahriman.web.schemas.package_status_schema import PackageStatusSimplifiedSchema, PackageStatusSchema
|
from ahriman.web.schemas.package_status_schema import PackageStatusSchema, PackageStatusSimplifiedSchema
|
||||||
from ahriman.web.schemas.pagination_schema import PaginationSchema
|
from ahriman.web.schemas.pagination_schema import PaginationSchema
|
||||||
from ahriman.web.schemas.patch_name_schema import PatchNameSchema
|
from ahriman.web.schemas.patch_name_schema import PatchNameSchema
|
||||||
from ahriman.web.schemas.patch_schema import PatchSchema
|
from ahriman.web.schemas.patch_schema import PatchSchema
|
||||||
|
@ -25,22 +25,6 @@ from ahriman.web.schemas.repository_id_schema import RepositoryIdSchema
|
|||||||
from ahriman.web.schemas.status_schema import StatusSchema
|
from ahriman.web.schemas.status_schema import StatusSchema
|
||||||
|
|
||||||
|
|
||||||
class PackageStatusSimplifiedSchema(Schema):
|
|
||||||
"""
|
|
||||||
special request package status schema
|
|
||||||
"""
|
|
||||||
|
|
||||||
package = fields.Nested(PackageSchema(), metadata={
|
|
||||||
"description": "Package description",
|
|
||||||
})
|
|
||||||
status = fields.Enum(BuildStatusEnum, by_value=True, required=True, metadata={
|
|
||||||
"description": "Current status",
|
|
||||||
})
|
|
||||||
repository = fields.Nested(RepositoryIdSchema(), required=True, metadata={
|
|
||||||
"description": "Repository identifier",
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
class PackageStatusSchema(Schema):
|
class PackageStatusSchema(Schema):
|
||||||
"""
|
"""
|
||||||
response package status schema
|
response package status schema
|
||||||
@ -55,3 +39,19 @@ class PackageStatusSchema(Schema):
|
|||||||
repository = fields.Nested(RepositoryIdSchema(), required=True, metadata={
|
repository = fields.Nested(RepositoryIdSchema(), required=True, metadata={
|
||||||
"description": "Repository identifier",
|
"description": "Repository identifier",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
class PackageStatusSimplifiedSchema(Schema):
|
||||||
|
"""
|
||||||
|
special request package status schema
|
||||||
|
"""
|
||||||
|
|
||||||
|
package = fields.Nested(PackageSchema(), metadata={
|
||||||
|
"description": "Package description",
|
||||||
|
})
|
||||||
|
status = fields.Enum(BuildStatusEnum, by_value=True, required=True, metadata={
|
||||||
|
"description": "Current status",
|
||||||
|
})
|
||||||
|
repository = fields.Nested(RepositoryIdSchema(), required=True, metadata={
|
||||||
|
"description": "Repository identifier",
|
||||||
|
})
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from aiohttp_cors import CorsViewMixin # type: ignore[import-untyped]
|
|
||||||
from aiohttp.web import HTTPBadRequest, HTTPNotFound, Request, StreamResponse, View
|
from aiohttp.web import HTTPBadRequest, HTTPNotFound, Request, StreamResponse, View
|
||||||
|
from aiohttp_cors import CorsViewMixin # type: ignore[import-untyped]
|
||||||
from collections.abc import Awaitable, Callable
|
from collections.abc import Awaitable, Callable
|
||||||
from typing import TypeVar
|
from typing import TypeVar
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
#
|
#
|
||||||
import aiohttp_apispec # type: ignore[import-untyped]
|
import aiohttp_apispec # type: ignore[import-untyped]
|
||||||
|
|
||||||
from collections.abc import Callable
|
|
||||||
from aiohttp.web import HTTPBadRequest, HTTPNoContent, Response, json_response
|
from aiohttp.web import HTTPBadRequest, HTTPNoContent, Response, json_response
|
||||||
|
from collections.abc import Callable
|
||||||
|
|
||||||
from ahriman.models.user_access import UserAccess
|
from ahriman.models.user_access import UserAccess
|
||||||
from ahriman.models.worker import Worker
|
from ahriman.models.worker import Worker
|
||||||
|
@ -22,7 +22,7 @@ import aiohttp_apispec # type: ignore[import-untyped]
|
|||||||
from aiohttp.web import HTTPBadRequest, Response, json_response
|
from aiohttp.web import HTTPBadRequest, Response, json_response
|
||||||
|
|
||||||
from ahriman.models.user_access import UserAccess
|
from ahriman.models.user_access import UserAccess
|
||||||
from ahriman.web.schemas import AuthSchema, ErrorSchema, ProcessIdSchema, UpdateFlagsSchema, RepositoryIdSchema
|
from ahriman.web.schemas import AuthSchema, ErrorSchema, ProcessIdSchema, RepositoryIdSchema, UpdateFlagsSchema
|
||||||
from ahriman.web.views.base import BaseView
|
from ahriman.web.views.base import BaseView
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
import aiohttp_apispec # type: ignore[import-untyped]
|
import aiohttp_apispec # type: ignore[import-untyped]
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
from collections.abc import Callable
|
|
||||||
from aiohttp.web import HTTPNoContent, Response, json_response
|
from aiohttp.web import HTTPNoContent, Response, json_response
|
||||||
|
from collections.abc import Callable
|
||||||
|
|
||||||
from ahriman.models.build_status import BuildStatus
|
from ahriman.models.build_status import BuildStatus
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
|
@ -26,7 +26,7 @@ from ahriman.models.build_status import BuildStatusEnum
|
|||||||
from ahriman.models.counters import Counters
|
from ahriman.models.counters import Counters
|
||||||
from ahriman.models.internal_status import InternalStatus
|
from ahriman.models.internal_status import InternalStatus
|
||||||
from ahriman.models.user_access import UserAccess
|
from ahriman.models.user_access import UserAccess
|
||||||
from ahriman.web.schemas import AuthSchema, ErrorSchema, InternalStatusSchema, StatusSchema, RepositoryIdSchema
|
from ahriman.web.schemas import AuthSchema, ErrorSchema, InternalStatusSchema, RepositoryIdSchema, StatusSchema
|
||||||
from ahriman.web.views.base import BaseView
|
from ahriman.web.views.base import BaseView
|
||||||
from ahriman.web.views.status_view_guard import StatusViewGuard
|
from ahriman.web.views.status_view_guard import StatusViewGuard
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from sqlite3 import Connection
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
from sqlite3 import Connection
|
||||||
from unittest.mock import call as MockCall
|
from unittest.mock import call as MockCall
|
||||||
|
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
|
@ -2,7 +2,7 @@ import pytest
|
|||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from ahriman.core.formatters import AurPrinter, ChangesPrinter, ConfigurationPrinter, ConfigurationPathsPrinter, \
|
from ahriman.core.formatters import AurPrinter, ChangesPrinter, ConfigurationPathsPrinter, ConfigurationPrinter, \
|
||||||
PackagePrinter, PatchPrinter, RepositoryPrinter, StatusPrinter, StringPrinter, TreePrinter, UpdatePrinter, \
|
PackagePrinter, PatchPrinter, RepositoryPrinter, StatusPrinter, StringPrinter, TreePrinter, UpdatePrinter, \
|
||||||
UserPrinter, ValidationPrinter, VersionPrinter
|
UserPrinter, ValidationPrinter, VersionPrinter
|
||||||
from ahriman.models.aur_package import AURPackage
|
from ahriman.models.aur_package import AURPackage
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
from pytest_mock import MockerFixture
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from ahriman.models.package_description import PackageDescription
|
from ahriman.models.package_description import PackageDescription
|
||||||
from ahriman.models.package_source import PackageSource
|
from ahriman.models.package_source import PackageSource
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from asyncio import BaseEventLoop
|
|
||||||
from aiohttp.web import Application, Resource, UrlMappingMatchInfo
|
|
||||||
from aiohttp.test_utils import TestClient
|
from aiohttp.test_utils import TestClient
|
||||||
|
from aiohttp.web import Application, Resource, UrlMappingMatchInfo
|
||||||
|
from asyncio import BaseEventLoop
|
||||||
from collections.abc import Awaitable, Callable
|
from collections.abc import Awaitable, Callable
|
||||||
from marshmallow import Schema
|
from marshmallow import Schema
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from unittest.mock import MagicMock, Mock
|
from unittest.mock import MagicMock, Mock
|
||||||
|
|
||||||
import ahriman.core.auth.helpers
|
from ahriman.core.auth import helpers
|
||||||
|
|
||||||
from ahriman.core.auth.oauth import OAuth
|
from ahriman.core.auth.oauth import OAuth
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.database import SQLite
|
from ahriman.core.database import SQLite
|
||||||
@ -130,7 +129,7 @@ def application(configuration: Configuration, spawner: Spawn, database: SQLite,
|
|||||||
configuration.set_option("web", "port", "8080")
|
configuration.set_option("web", "port", "8080")
|
||||||
mocker.patch("ahriman.core.database.SQLite.load", return_value=database)
|
mocker.patch("ahriman.core.database.SQLite.load", return_value=database)
|
||||||
mocker.patch("aiohttp_apispec.setup_aiohttp_apispec")
|
mocker.patch("aiohttp_apispec.setup_aiohttp_apispec")
|
||||||
mocker.patch.object(ahriman.core.auth.helpers, "_has_aiohttp_security", False)
|
mocker.patch.object(helpers, "_has_aiohttp_security", False)
|
||||||
_, repository_id = configuration.check_loaded()
|
_, repository_id = configuration.check_loaded()
|
||||||
|
|
||||||
return setup_server(configuration, spawner, [repository_id])
|
return setup_server(configuration, spawner, [repository_id])
|
||||||
@ -156,7 +155,7 @@ def application_with_auth(configuration: Configuration, user: User, spawner: Spa
|
|||||||
configuration.set_option("web", "port", "8080")
|
configuration.set_option("web", "port", "8080")
|
||||||
mocker.patch("ahriman.core.database.SQLite.load", return_value=database)
|
mocker.patch("ahriman.core.database.SQLite.load", return_value=database)
|
||||||
mocker.patch("aiohttp_apispec.setup_aiohttp_apispec")
|
mocker.patch("aiohttp_apispec.setup_aiohttp_apispec")
|
||||||
mocker.patch.object(ahriman.core.auth.helpers, "_has_aiohttp_security", True)
|
mocker.patch.object(helpers, "_has_aiohttp_security", True)
|
||||||
_, repository_id = configuration.check_loaded()
|
_, repository_id = configuration.check_loaded()
|
||||||
application = setup_server(configuration, spawner, [repository_id])
|
application = setup_server(configuration, spawner, [repository_id])
|
||||||
|
|
||||||
@ -185,7 +184,7 @@ def application_with_debug(configuration: Configuration, spawner: Spawn, databas
|
|||||||
configuration.set_option("web", "port", "8080")
|
configuration.set_option("web", "port", "8080")
|
||||||
mocker.patch("ahriman.core.database.SQLite.load", return_value=database)
|
mocker.patch("ahriman.core.database.SQLite.load", return_value=database)
|
||||||
mocker.patch("aiohttp_apispec.setup_aiohttp_apispec")
|
mocker.patch("aiohttp_apispec.setup_aiohttp_apispec")
|
||||||
mocker.patch.object(ahriman.core.auth.helpers, "_has_aiohttp_security", False)
|
mocker.patch.object(helpers, "_has_aiohttp_security", False)
|
||||||
_, repository_id = configuration.check_loaded()
|
_, repository_id = configuration.check_loaded()
|
||||||
|
|
||||||
return setup_server(configuration, spawner, [repository_id])
|
return setup_server(configuration, spawner, [repository_id])
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from multidict import MultiDict
|
|
||||||
from aiohttp.test_utils import TestClient
|
from aiohttp.test_utils import TestClient
|
||||||
from aiohttp.web import HTTPBadRequest, HTTPNotFound
|
from aiohttp.web import HTTPBadRequest, HTTPNotFound
|
||||||
|
from multidict import MultiDict
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
from unittest.mock import AsyncMock
|
from unittest.mock import AsyncMock
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user