App, lib, cmds: Fix mypy.explicit-override fallout
This commit adds @override decorators to approximately 300 methods across 76 files that inherit from base classes such as AbstractCmd, FileContext, ExecContext, Distro, SSHClient, and others. The decorator ensures the type checker can verify that overridden methods have compatible signatures and prevents accidental shadowing of inherited methods without intent. Files modified include command classes, library modules, distro implementations, and SSH client implementations. Assisted-by: unsloth/Qwen3.6-35B-A3B-GGUF:IQ4_NL with pi.dev v Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
30a00df5c7
commit
5fa008be5a
78 changed files with 263 additions and 81 deletions
|
|
@ -10,7 +10,7 @@ import sys
|
|||
|
||||
from enum import Enum, auto
|
||||
from functools import cache
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import override, TYPE_CHECKING
|
||||
|
||||
from .lib.App import App as Base
|
||||
from .lib.Distro import Distro
|
||||
|
|
@ -374,11 +374,13 @@ class App(Base):
|
|||
default_pkg_filter = pkg_filter,
|
||||
)
|
||||
|
||||
@override
|
||||
async def __aexit__(self, exc_type, exc, tb) -> None:
|
||||
if self.__exec_context is not None:
|
||||
await self.__exec_context.close()
|
||||
self.__exec_context = None
|
||||
|
||||
@override
|
||||
def _add_arguments(self, parser) -> None:
|
||||
super()._add_arguments(parser)
|
||||
parser.add_argument('-t', '--topdir', default = None, help = 'Project Path')
|
||||
|
|
@ -421,6 +423,7 @@ class App(Base):
|
|||
help = 'Default filter for all distribution package-related operations',
|
||||
)
|
||||
|
||||
@override
|
||||
async def _run(self, args: argparse.Namespace) -> None:
|
||||
self.___topdir = args.topdir
|
||||
self.___pretty_topdir = self.__format_topdir(self.___topdir, args.topdir_format)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
from typing import override
|
||||
from .App import App
|
||||
from .lib.Cmd import Cmd as Base
|
||||
|
||||
class CmdBase(Base):
|
||||
|
||||
@override # pyright: ignore[reportArgumentType]
|
||||
@property
|
||||
def app(self) -> App:
|
||||
ret = super().app
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import override, TYPE_CHECKING
|
||||
|
||||
from ..App import App as Parent
|
||||
from ..CmdBase import CmdBase as Base
|
||||
|
|
@ -20,6 +20,7 @@ class Cmd(Base): # export
|
|||
) -> None:
|
||||
super().__init__(parent, name, help, aliases = aliases)
|
||||
|
||||
@override
|
||||
async def _run(self, args):
|
||||
# Missing subcommand
|
||||
self.print_help(1)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -18,6 +18,7 @@ class CmdPkg(Cmd): # export
|
|||
)
|
||||
self.load_subcommands()
|
||||
|
||||
@override
|
||||
async def _run(self, args):
|
||||
import sys
|
||||
|
||||
|
|
@ -25,5 +26,6 @@ class CmdPkg(Cmd): # export
|
|||
self.parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -15,6 +15,7 @@ class CmdPlatform(Cmd): # export
|
|||
)
|
||||
self.load_subcommands()
|
||||
|
||||
@override
|
||||
async def _run(self, args):
|
||||
import sys
|
||||
|
||||
|
|
@ -22,5 +23,6 @@ class CmdPlatform(Cmd): # export
|
|||
self.parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -20,6 +20,7 @@ class CmdPosix(Cmd): # export
|
|||
)
|
||||
self.load_subcommands()
|
||||
|
||||
@override
|
||||
async def _run(self, args):
|
||||
import sys
|
||||
|
||||
|
|
@ -27,5 +28,6 @@ class CmdPosix(Cmd): # export
|
|||
self.parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -17,6 +17,7 @@ class CmdProjects(Cmd): # export
|
|||
)
|
||||
self.load_subcommands()
|
||||
|
||||
@override
|
||||
async def _run(self, args):
|
||||
import sys
|
||||
|
||||
|
|
@ -24,5 +25,6 @@ class CmdProjects(Cmd): # export
|
|||
self.parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -13,6 +13,7 @@ class CmdSecrets(Cmd): # export
|
|||
super().__init__(parent, 'secrets', help = 'Manage package secrets')
|
||||
self.load_subcommands()
|
||||
|
||||
@override
|
||||
async def _run(self, args):
|
||||
import sys
|
||||
|
||||
|
|
@ -20,5 +21,6 @@ class CmdSecrets(Cmd): # export
|
|||
self.parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -12,11 +12,13 @@ class CmdDelete(Cmd): # export
|
|||
def __init__(self, parent: Parent) -> None:
|
||||
super().__init__(parent, 'delete', help = 'Delete packages by name')
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument(
|
||||
'names', nargs = '*', help = 'Names of packages to be deleted'
|
||||
)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
return await self.distro.delete(args.names)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -12,6 +12,7 @@ class CmdDup(Cmd): # export
|
|||
def __init__(self, parent: Parent) -> None:
|
||||
super().__init__(parent, 'dup', help = 'Upgrade distribution')
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument(
|
||||
|
|
@ -21,5 +22,6 @@ class CmdDup(Cmd): # export
|
|||
help = "Only download packages from the repos, don't install them, yet",
|
||||
)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
return await self.distro.dup(download_only = args.download_only)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import override, TYPE_CHECKING
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -16,6 +16,7 @@ class CmdInstall(Cmd): # export
|
|||
help = "Install the distribution's notion of available packages",
|
||||
)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument('names', nargs = '*', help = 'Packages to be installed')
|
||||
|
|
@ -32,6 +33,7 @@ class CmdInstall(Cmd): # export
|
|||
help = "Don't expand macros in <names>",
|
||||
)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
names = (
|
||||
args.names if args.fixed_strings else self.distro.expand_macros(args.names)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .NamedPkgsCmd import NamedPkgsCmd
|
||||
|
||||
|
|
@ -14,9 +14,11 @@ class CmdLs(NamedPkgsCmd): # export
|
|||
def __init__(self, parent: Parent) -> None:
|
||||
super().__init__(parent, 'ls', help = 'List package contents')
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
for name in args.names:
|
||||
print('\n'.join(await self.distro.pkg_files(name)))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .NamedPkgsCmd import NamedPkgsCmd, Parent
|
||||
|
||||
|
|
@ -12,9 +12,11 @@ class CmdMeta(NamedPkgsCmd): # export
|
|||
def __init__(self, parent: Parent) -> None:
|
||||
super().__init__(parent, 'meta', help = 'List package metadata')
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
names = await self.distro.select(args.names)
|
||||
for name in names:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -16,8 +16,10 @@ class CmdRebootRequired(Cmd): # export
|
|||
help = 'Check whether the machine needs rebooting'
|
||||
)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
await self.distro.reboot_required()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -16,8 +16,10 @@ class CmdRefresh(Cmd): # export
|
|||
help = "Refresh the distribution's notion of available packages",
|
||||
)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
return await self.distro.ref()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from ...lib.PackageFilter import PackageFilterString
|
||||
from .Cmd import Cmd, Parent
|
||||
|
|
@ -13,10 +13,12 @@ class CmdSelect(Cmd): # export
|
|||
def __init__(self, parent: Parent) -> None:
|
||||
super().__init__(parent, 'select', help = 'Select packages by filter')
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument('filter', help = 'Package filter string')
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
filter = PackageFilterString(args.filter) if args.filter else None
|
||||
for p in await self.distro.select(filter = filter):
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from .Cmd import Cmd, Parent
|
||||
|
||||
|
|
@ -12,6 +12,7 @@ class NamedPkgsCmd(Cmd): # export
|
|||
def __init__(self, parent: Parent, name: str, help: str) -> None:
|
||||
super().__init__(parent, name, help)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument('names', nargs = '*', help = 'Package names')
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from ...lib.Distro import Distro
|
||||
from .Cmd import Cmd, Parent
|
||||
|
|
@ -15,6 +15,7 @@ class CmdInfo(Cmd): # export
|
|||
parent, 'info', help = 'Retrieve information about target platform'
|
||||
)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument(
|
||||
|
|
@ -23,5 +24,6 @@ class CmdInfo(Cmd): # export
|
|||
help = f'Format string, expanding macros {", ".join(Distro.macros())}',
|
||||
)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
print(self.app.distro.expand_macros(args.format))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import override, TYPE_CHECKING
|
||||
|
||||
from ...CmdBase import CmdBase as Base
|
||||
from ..CmdPosix import CmdPosix as Parent
|
||||
|
|
@ -13,6 +13,7 @@ class Cmd(Base): # export
|
|||
def __init__(self, parent: Parent, name: str, help: str) -> None:
|
||||
super().__init__(parent, name, help)
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, override
|
||||
|
||||
from ...lib.util import copy
|
||||
from .Cmd import Cmd, Parent
|
||||
|
|
@ -13,6 +13,7 @@ class CmdCopy(Cmd): # export
|
|||
def __init__(self, parent: Parent) -> None:
|
||||
super().__init__(parent, 'copy', help = 'Copy files')
|
||||
|
||||
@override
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument('src', help = 'Source file URI')
|
||||
|
|
@ -33,6 +34,7 @@ class CmdCopy(Cmd): # export
|
|||
help = "Don't expand macros in <src> and <dst>",
|
||||
)
|
||||
|
||||
@override
|
||||
async def _run(self, args: Namespace) -> None:
|
||||
|
||||
def __expand(url: str) -> str:
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue