diff --git a/conf/templates/pyproject.toml b/conf/templates/pyproject.toml index 600f0c75..6b6a5d57 100644 --- a/conf/templates/pyproject.toml +++ b/conf/templates/pyproject.toml @@ -17,6 +17,9 @@ [tool.isort] + multi_line_output = 3 + line_length = 88 + lines_after_imports = 1 lines_between_sections = 1 lines_between_types = 1 diff --git a/make/defs.mk b/make/defs.mk index 2d135613..88f7cdb9 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -505,7 +505,8 @@ ifeq ($(CREATE_PKG_CONFIG),true) BUILD_PKG_CONFIGDIR = $(TOPDIR)/make endif LOCAL_PKG_CONFIG = $(PROJECT).pc - BUILD_PKG_CONFIG = $(BUILD_PKG_CONFIGDIR)/$(LOCAL_PKG_CONFIG) + # As of now, this is not used by any downstream project, so disable it to reduce complexity. + #BUILD_PKG_CONFIG = $(BUILD_PKG_CONFIGDIR)/$(LOCAL_PKG_CONFIG) INSTALLED_PKG_CONFIG = $(addprefix $(INSTALL_PKG_CONFIGDIR)/,$(PKG_CONFIG)) endif diff --git a/make/platform.mk b/make/platform.mk index 22d6846e..7b00642d 100644 --- a/make/platform.mk +++ b/make/platform.mk @@ -67,7 +67,7 @@ JWB_SCRIPT_DIR := $(firstword $(wildcard $(JWBDIR)/scripts $(JWBDIR include $(JWBDIR)/make/py-version.mk -JW_PKG_PY = $(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) --topdir-format absolute $(JW_PKG_PY_EXTRA_OPTS) +JW_PKG_PY = $(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) $(JW_PKG_PY_EXTRA_OPTS) # -- product diff --git a/make/projects-dir.mk b/make/projects-dir.mk index 115a0063..09c9e746 100644 --- a/make/projects-dir.mk +++ b/make/projects-dir.mk @@ -309,6 +309,8 @@ pull-all: purge git-get git-pull-all diff-all diff: $(SSH_WRAPPER_SH) $(PGIT_SH) --porcelain diff +diff-projects: + PGIT_SH_PROJECTS="$(patsubst %/.git,%,$(wildcard $(addsuffix /.git,$(shell make -s build-order))))" $(PGIT_SH) --porcelain diff get-official: git-get-official get-maintainer: git-get-maintainer diff --git a/make/py-check.mk b/make/py-check.mk index 1c4b4faf..35e5fc30 100644 --- a/make/py-check.mk +++ b/make/py-check.mk @@ -29,6 +29,10 @@ ifndef PY_CHECK_RUFF endif endif +ifndef PY_CHECK_ISORT + PY_CHECK_ISORT := $(firstword $(wildcard /usr/bin/isort)) +endif + ifndef PY_CHECK_YAPF PY_CHECK_YAPF := $(firstword $(wildcard /usr/bin/yapf /usr/bin/yapf3)) endif @@ -67,6 +71,9 @@ endif py-format: find . -type f -name '*.py' -print0 | \ xargs -0 sed -i -E '1{/^# -\*- coding: utf-8 -\*-$$/{:a;N;/\n[[:space:]]*$$/ba;s/^# -\*- coding: utf-8 -\*-\n([[:space:]]*\n)*/ /;s/^ //}}' +ifneq ($(PY_CHECK_ISORT),) + $(PY_CHECK_ISORT) $(PY_CHECK_ROOTS) +endif ifneq ($(PY_CHECK_YAPF),) $(PY_CHECK_YAPF) --in-place --recursive $(PY_CHECK_ROOTS) endif diff --git a/src/python/jw/pkg/App.py b/src/python/jw/pkg/App.py index cdc82c4d..2b9a2f48 100644 --- a/src/python/jw/pkg/App.py +++ b/src/python/jw/pkg/App.py @@ -10,7 +10,7 @@ import sys from enum import Enum, auto from functools import cache -from typing import Any, cast, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, cast, override from .lib.App import App as Base from .lib.Distro import Distro @@ -19,8 +19,8 @@ from .lib.ProjectConf import ProjectConf if TYPE_CHECKING: import argparse - from argparse import ArgumentParser + from argparse import ArgumentParser from typing import TypeAlias from .lib.ExecContext import ExecContext diff --git a/src/python/jw/pkg/CmdBase.py b/src/python/jw/pkg/CmdBase.py index 17f16759..db898e6c 100644 --- a/src/python/jw/pkg/CmdBase.py +++ b/src/python/jw/pkg/CmdBase.py @@ -1,4 +1,5 @@ from typing import override + from .App import App from .lib.Cmd import Cmd as Base diff --git a/src/python/jw/pkg/cmds/Cmd.py b/src/python/jw/pkg/cmds/Cmd.py index d9240e08..ece74670 100644 --- a/src/python/jw/pkg/cmds/Cmd.py +++ b/src/python/jw/pkg/cmds/Cmd.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override from ..App import App as Parent from ..CmdBase import CmdBase as Base @@ -8,6 +8,7 @@ from ..CmdBase import CmdBase as Base if TYPE_CHECKING: from argparse import Namespace from typing import Iterable + from ..lib.Distro import Distro class Cmd(Base): # export diff --git a/src/python/jw/pkg/cmds/pkg/CmdInstall.py b/src/python/jw/pkg/cmds/pkg/CmdInstall.py index 22e75800..066b8b8e 100644 --- a/src/python/jw/pkg/cmds/pkg/CmdInstall.py +++ b/src/python/jw/pkg/cmds/pkg/CmdInstall.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override from .Cmd import Cmd, Parent diff --git a/src/python/jw/pkg/cmds/posix/Cmd.py b/src/python/jw/pkg/cmds/posix/Cmd.py index 3093618b..9ae1b2c1 100644 --- a/src/python/jw/pkg/cmds/posix/Cmd.py +++ b/src/python/jw/pkg/cmds/posix/Cmd.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override from ...CmdBase import CmdBase as Base from ..CmdPosix import CmdPosix as Parent diff --git a/src/python/jw/pkg/cmds/posix/tar/Cmd.py b/src/python/jw/pkg/cmds/posix/tar/Cmd.py index cc6e1aed..63165ed5 100644 --- a/src/python/jw/pkg/cmds/posix/tar/Cmd.py +++ b/src/python/jw/pkg/cmds/posix/tar/Cmd.py @@ -1,7 +1,7 @@ from __future__ import annotations from contextlib import asynccontextmanager -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override from ....CmdBase import CmdBase as Base from ....lib.FileContext import FileContext diff --git a/src/python/jw/pkg/cmds/posix/tar/CmdExtract.py b/src/python/jw/pkg/cmds/posix/tar/CmdExtract.py index ace743f9..b901a72e 100644 --- a/src/python/jw/pkg/cmds/posix/tar/CmdExtract.py +++ b/src/python/jw/pkg/cmds/posix/tar/CmdExtract.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ....lib.log import DEBUG, log from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/Cmd.py b/src/python/jw/pkg/cmds/projects/Cmd.py index 97533bca..4a3a1059 100644 --- a/src/python/jw/pkg/cmds/projects/Cmd.py +++ b/src/python/jw/pkg/cmds/projects/Cmd.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override from ...CmdBase import CmdBase as Base from ..CmdProjects import CmdProjects as Parent diff --git a/src/python/jw/pkg/cmds/projects/CmdCanonicalizeRemotes.py b/src/python/jw/pkg/cmds/projects/CmdCanonicalizeRemotes.py index 7dbe24ba..b0fe24b3 100644 --- a/src/python/jw/pkg/cmds/projects/CmdCanonicalizeRemotes.py +++ b/src/python/jw/pkg/cmds/projects/CmdCanonicalizeRemotes.py @@ -2,10 +2,9 @@ from __future__ import annotations from typing import TYPE_CHECKING, override -from ...lib.base import InputMode +from ...lib.base import InputMode, Result from ...lib.log import NOTICE, log from .Cmd import Cmd, Parent -from ...lib.base import Result if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdCflags.py b/src/python/jw/pkg/cmds/projects/CmdCflags.py index 15c39a04..c0ec3fc2 100644 --- a/src/python/jw/pkg/cmds/projects/CmdCflags.py +++ b/src/python/jw/pkg/cmds/projects/CmdCflags.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...App import Scope from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdCheck.py b/src/python/jw/pkg/cmds/projects/CmdCheck.py index e53bbcba..47ce2c25 100644 --- a/src/python/jw/pkg/cmds/projects/CmdCheck.py +++ b/src/python/jw/pkg/cmds/projects/CmdCheck.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdCommands.py b/src/python/jw/pkg/cmds/projects/CmdCommands.py index c22101ef..e6ff980d 100644 --- a/src/python/jw/pkg/cmds/projects/CmdCommands.py +++ b/src/python/jw/pkg/cmds/projects/CmdCommands.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdExepath.py b/src/python/jw/pkg/cmds/projects/CmdExepath.py index ba2e6ea1..d5599817 100644 --- a/src/python/jw/pkg/cmds/projects/CmdExepath.py +++ b/src/python/jw/pkg/cmds/projects/CmdExepath.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...App import Scope from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdGetAuthInfo.py b/src/python/jw/pkg/cmds/projects/CmdGetAuthInfo.py index b2d6dc8a..1623fda1 100644 --- a/src/python/jw/pkg/cmds/projects/CmdGetAuthInfo.py +++ b/src/python/jw/pkg/cmds/projects/CmdGetAuthInfo.py @@ -1,11 +1,13 @@ from __future__ import annotations + import os import re +from typing import TYPE_CHECKING, override + from ...lib.log import DEBUG, log from ...lib.Uri import Uri from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdGetval.py b/src/python/jw/pkg/cmds/projects/CmdGetval.py index 54bfefba..5bf703f7 100644 --- a/src/python/jw/pkg/cmds/projects/CmdGetval.py +++ b/src/python/jw/pkg/cmds/projects/CmdGetval.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdHtdocsDir.py b/src/python/jw/pkg/cmds/projects/CmdHtdocsDir.py index 0322d93c..e91b10ab 100644 --- a/src/python/jw/pkg/cmds/projects/CmdHtdocsDir.py +++ b/src/python/jw/pkg/cmds/projects/CmdHtdocsDir.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdLdflags.py b/src/python/jw/pkg/cmds/projects/CmdLdflags.py index cf626801..009932da 100644 --- a/src/python/jw/pkg/cmds/projects/CmdLdflags.py +++ b/src/python/jw/pkg/cmds/projects/CmdLdflags.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...App import Scope from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdLdlibpath.py b/src/python/jw/pkg/cmds/projects/CmdLdlibpath.py index 01aa9785..064ff38f 100644 --- a/src/python/jw/pkg/cmds/projects/CmdLdlibpath.py +++ b/src/python/jw/pkg/cmds/projects/CmdLdlibpath.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...App import Scope from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdLibname.py b/src/python/jw/pkg/cmds/projects/CmdLibname.py index 68167261..e5968dd4 100644 --- a/src/python/jw/pkg/cmds/projects/CmdLibname.py +++ b/src/python/jw/pkg/cmds/projects/CmdLibname.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdListRepos.py b/src/python/jw/pkg/cmds/projects/CmdListRepos.py index 6324a81c..ebcf8dc6 100644 --- a/src/python/jw/pkg/cmds/projects/CmdListRepos.py +++ b/src/python/jw/pkg/cmds/projects/CmdListRepos.py @@ -1,12 +1,14 @@ from __future__ import annotations + import os import re +from typing import TYPE_CHECKING, override + from ...lib.log import DEBUG, log from ...lib.Uri import Uri from ...lib.util import get_password, get_username, run_curl_into from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdModules.py b/src/python/jw/pkg/cmds/projects/CmdModules.py index 835c0b95..c081b0cb 100644 --- a/src/python/jw/pkg/cmds/projects/CmdModules.py +++ b/src/python/jw/pkg/cmds/projects/CmdModules.py @@ -1,9 +1,11 @@ from __future__ import annotations + import re +from typing import TYPE_CHECKING, override + from ...lib.log import DEBUG, log from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdPath.py b/src/python/jw/pkg/cmds/projects/CmdPath.py index 9f1d5bea..05dedd84 100644 --- a/src/python/jw/pkg/cmds/projects/CmdPath.py +++ b/src/python/jw/pkg/cmds/projects/CmdPath.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...App import Scope from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdPkgConflicts.py b/src/python/jw/pkg/cmds/projects/CmdPkgConflicts.py index e1854bfb..ad54cb22 100644 --- a/src/python/jw/pkg/cmds/projects/CmdPkgConflicts.py +++ b/src/python/jw/pkg/cmds/projects/CmdPkgConflicts.py @@ -1,4 +1,5 @@ -from .BaseCmdPkgRelations import BaseCmdPkgRelations as Base, Parent +from .BaseCmdPkgRelations import BaseCmdPkgRelations as Base +from .BaseCmdPkgRelations import Parent class CmdPkgConflicts(Base): # export diff --git a/src/python/jw/pkg/cmds/projects/CmdPkgProvides.py b/src/python/jw/pkg/cmds/projects/CmdPkgProvides.py index ae5337f9..82746c1a 100644 --- a/src/python/jw/pkg/cmds/projects/CmdPkgProvides.py +++ b/src/python/jw/pkg/cmds/projects/CmdPkgProvides.py @@ -1,4 +1,5 @@ -from .BaseCmdPkgRelations import BaseCmdPkgRelations as Base, Parent +from .BaseCmdPkgRelations import BaseCmdPkgRelations as Base +from .BaseCmdPkgRelations import Parent class CmdPkgProvides(Base): # export diff --git a/src/python/jw/pkg/cmds/projects/CmdPkgRequires.py b/src/python/jw/pkg/cmds/projects/CmdPkgRequires.py index 53364580..421707c7 100644 --- a/src/python/jw/pkg/cmds/projects/CmdPkgRequires.py +++ b/src/python/jw/pkg/cmds/projects/CmdPkgRequires.py @@ -1,4 +1,5 @@ -from .BaseCmdPkgRelations import BaseCmdPkgRelations as Base, Parent +from .BaseCmdPkgRelations import BaseCmdPkgRelations as Base +from .BaseCmdPkgRelations import Parent class CmdPkgRequires(Base): # export diff --git a/src/python/jw/pkg/cmds/projects/CmdProjDir.py b/src/python/jw/pkg/cmds/projects/CmdProjDir.py index a3c39504..2a768687 100644 --- a/src/python/jw/pkg/cmds/projects/CmdProjDir.py +++ b/src/python/jw/pkg/cmds/projects/CmdProjDir.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...lib.log import WARNING, log from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdRequiredOsPkg.py b/src/python/jw/pkg/cmds/projects/CmdRequiredOsPkg.py index 17fe5e32..d66ec1d6 100644 --- a/src/python/jw/pkg/cmds/projects/CmdRequiredOsPkg.py +++ b/src/python/jw/pkg/cmds/projects/CmdRequiredOsPkg.py @@ -1,9 +1,10 @@ from __future__ import annotations +from typing import TYPE_CHECKING, override + from ...App import Scope from ...lib.log import DEBUG, log from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING, override if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdSummary.py b/src/python/jw/pkg/cmds/projects/CmdSummary.py index 0607bee0..d003729a 100644 --- a/src/python/jw/pkg/cmds/projects/CmdSummary.py +++ b/src/python/jw/pkg/cmds/projects/CmdSummary.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdTest.py b/src/python/jw/pkg/cmds/projects/CmdTest.py index d81c0c7b..34c13d02 100644 --- a/src/python/jw/pkg/cmds/projects/CmdTest.py +++ b/src/python/jw/pkg/cmds/projects/CmdTest.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/CmdTmplDir.py b/src/python/jw/pkg/cmds/projects/CmdTmplDir.py index b87b7447..7b3ae24d 100644 --- a/src/python/jw/pkg/cmds/projects/CmdTmplDir.py +++ b/src/python/jw/pkg/cmds/projects/CmdTmplDir.py @@ -1,8 +1,9 @@ from __future__ import annotations -from .Cmd import Cmd, Parent from typing import TYPE_CHECKING, override +from .Cmd import Cmd, Parent + if TYPE_CHECKING: from argparse import ArgumentParser, Namespace diff --git a/src/python/jw/pkg/cmds/projects/check/Cmd.py b/src/python/jw/pkg/cmds/projects/check/Cmd.py index 139f7f58..d721eac0 100644 --- a/src/python/jw/pkg/cmds/projects/check/Cmd.py +++ b/src/python/jw/pkg/cmds/projects/check/Cmd.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override from ....CmdBase import CmdBase as Base from ..CmdCheck import CmdCheck as Parent diff --git a/src/python/jw/pkg/cmds/projects/lib/templates.py b/src/python/jw/pkg/cmds/projects/lib/templates.py index 5d209d84..3df12aa5 100644 --- a/src/python/jw/pkg/cmds/projects/lib/templates.py +++ b/src/python/jw/pkg/cmds/projects/lib/templates.py @@ -1,4 +1,5 @@ import textwrap + from typing import Any, Iterable, TypeAlias, TypeGuard TupleList: TypeAlias = Iterable[tuple[str, str]] diff --git a/src/python/jw/pkg/cmds/secrets/Cmd.py b/src/python/jw/pkg/cmds/secrets/Cmd.py index c9bb7316..103b12b7 100644 --- a/src/python/jw/pkg/cmds/secrets/Cmd.py +++ b/src/python/jw/pkg/cmds/secrets/Cmd.py @@ -1,15 +1,15 @@ from __future__ import annotations from functools import cached_property -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override from ...CmdBase import CmdBase as Base from ..CmdSecrets import CmdSecrets as Parent from .lib.DistroContext import DistroContext if TYPE_CHECKING: - from collections.abc import Collection from argparse import ArgumentParser + from collections.abc import Collection from .lib.base import Attrs diff --git a/src/python/jw/pkg/cmds/secrets/lib/DistroContext.py b/src/python/jw/pkg/cmds/secrets/lib/DistroContext.py index 95edc540..67fe0648 100644 --- a/src/python/jw/pkg/cmds/secrets/lib/DistroContext.py +++ b/src/python/jw/pkg/cmds/secrets/lib/DistroContext.py @@ -12,9 +12,9 @@ from .FilesContext import FilesContext if TYPE_CHECKING: from collections.abc import Collection - from .base import Attrs from ....lib.Distro import Distro + from .base import Attrs class DistroContext(FilesContext): diff --git a/src/python/jw/pkg/cmds/secrets/lib/tar.py b/src/python/jw/pkg/cmds/secrets/lib/tar.py index 84cde315..aeca422c 100644 --- a/src/python/jw/pkg/cmds/secrets/lib/tar.py +++ b/src/python/jw/pkg/cmds/secrets/lib/tar.py @@ -6,8 +6,8 @@ import tarfile from tarfile import TarFile from typing import TYPE_CHECKING, Callable -from ....lib.log import DEBUG, log from ....lib.ExecContext import ExecContext +from ....lib.log import DEBUG, log if TYPE_CHECKING: from typing import Iterable diff --git a/src/python/jw/pkg/lib/App.py b/src/python/jw/pkg/lib/App.py index 016ddaa2..e0891f01 100644 --- a/src/python/jw/pkg/lib/App.py +++ b/src/python/jw/pkg/lib/App.py @@ -6,7 +6,7 @@ import os import sys from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser, Namespace -from typing import Any, cast, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, cast, override from .AsyncRunner import AsyncRunner from .log import ( @@ -21,14 +21,14 @@ from .log import ( set_log_flags, set_log_level ) - from .Types import LoadTypes from .util import pretty_cmd if TYPE_CHECKING: + import types + from collections.abc import Awaitable, Collection from typing import TypeVar - T = TypeVar('T') class App: # export @@ -119,8 +119,8 @@ class App: # export self.parser = parser title = 'Available subcommands' - if hasattr(parent, 'name'): - title += ' of ' + getattr(parent, 'name') + if isinstance(parent, AbstractCmd): + title += ' of ' + parent.name subparsers = parser.add_subparsers( title = title, metavar = '', dest = 'command' ) @@ -139,7 +139,7 @@ class App: # export sc.cmd, sc.parser, sc.cmd.children, all = all ) return - args, unknown = self.__parser.parse_known_args() + args, _ = self.__parser.parse_known_args() cmd_name = getattr(args, 'command', None) if cmd_name in scs: sc = scs[cmd_name] @@ -185,7 +185,7 @@ class App: # export ) self._add_arguments(self.__parser) - args, unknown = self.__parser.parse_known_args() + args, _ = self.__parser.parse_known_args() set_log_flags(args.log_flags) set_log_level(args.log_level) @@ -222,7 +222,12 @@ class App: # export async def __aenter__(self) -> None: pass - async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> None: + async def __aexit__( + self, + exc_type: type[BaseException] | None, + exc: BaseException | None, + tb: types.TracebackType | None, + ) -> None: pass async def __run(self, argv: list[str] | None = None) -> None: @@ -230,16 +235,13 @@ class App: # export try: # Import argcomplete only here to not require it to be compatible # with minimal environments - from argcomplete.completers import ( # type: ignore[import-not-found, unused-ignore] - BaseCompleter - ) + from argcomplete.completers import BaseCompleter # type: ignore[import-not-found, unused-ignore] # isort: skip class NoopCompleter(BaseCompleter): # type: ignore[misc, unused-ignore] @override def __call__( # pyright: ignore[reportGeneralTypeIssues] - self, *args: Any, **kwargs: Any - ) -> None: + self, *args: Any, **kwargs: Any) -> None: return None import argcomplete # type: ignore[import-not-found, unused-ignore] @@ -266,7 +268,7 @@ class App: # export if isinstance(ret, int) and ret >= 0 and ret <= 0xFF: exit_status = ret except Exception as e: - log_m(ERR, 'Failed: {}'.format(repr(e) if self.__back_trace else str(e))) + log_m(ERR, f'Failed: {repr(e) if self.__back_trace else str(e)}') exit_status = 1 # AssertionErrors are programming errors, hence a programmer should # get a chance to figure it out @@ -339,6 +341,7 @@ class App: # export self.__async_runner = None return ret + def run_sub_commands( # export description: str = '', name_filter: str = '^Cmd.*', diff --git a/src/python/jw/pkg/lib/AsyncRunner.py b/src/python/jw/pkg/lib/AsyncRunner.py index 66c723a2..fadfbbcd 100644 --- a/src/python/jw/pkg/lib/AsyncRunner.py +++ b/src/python/jw/pkg/lib/AsyncRunner.py @@ -4,7 +4,7 @@ import asyncio import concurrent.futures import contextlib -from typing import Any, TypeVar, TYPE_CHECKING, cast +from typing import TYPE_CHECKING, Any, TypeVar, cast if TYPE_CHECKING: from collections.abc import Awaitable, Generator diff --git a/src/python/jw/pkg/lib/Distro.py b/src/python/jw/pkg/lib/Distro.py index d45ae54f..04aad14f 100644 --- a/src/python/jw/pkg/lib/Distro.py +++ b/src/python/jw/pkg/lib/Distro.py @@ -8,8 +8,8 @@ import sys from functools import cached_property from typing import TYPE_CHECKING, Any -from .log import ERR, INFO, WARNING, log from .base import InputMode +from .log import ERR, INFO, WARNING, log if TYPE_CHECKING: from collections.abc import Collection diff --git a/src/python/jw/pkg/lib/ExecContext.py b/src/python/jw/pkg/lib/ExecContext.py index 855b30dc..35685cc7 100644 --- a/src/python/jw/pkg/lib/ExecContext.py +++ b/src/python/jw/pkg/lib/ExecContext.py @@ -5,7 +5,7 @@ import errno import sys from decimal import ROUND_FLOOR, Decimal -from typing import Any, override, TYPE_CHECKING, NamedTuple +from typing import TYPE_CHECKING, Any, NamedTuple, override if TYPE_CHECKING: from typing import Type diff --git a/src/python/jw/pkg/lib/FileContext.py b/src/python/jw/pkg/lib/FileContext.py index 0ba119ce..059152d7 100644 --- a/src/python/jw/pkg/lib/FileContext.py +++ b/src/python/jw/pkg/lib/FileContext.py @@ -4,11 +4,11 @@ import abc from enum import Enum, auto from functools import cached_property -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override from .log import DEBUG, ERR, log -from .Uri import Uri from .ProcFilter import ProcPipeline +from .Uri import Uri if TYPE_CHECKING: from .base import Result, StatResult diff --git a/src/python/jw/pkg/lib/Package.py b/src/python/jw/pkg/lib/Package.py index 1d3e9bbc..6fd19e24 100644 --- a/src/python/jw/pkg/lib/Package.py +++ b/src/python/jw/pkg/lib/Package.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import override, Any +from typing import Any, override meta_tags = [ 'name', diff --git a/src/python/jw/pkg/lib/PackageFilter.py b/src/python/jw/pkg/lib/PackageFilter.py index c17df3e7..c0b7eb51 100644 --- a/src/python/jw/pkg/lib/PackageFilter.py +++ b/src/python/jw/pkg/lib/PackageFilter.py @@ -1,4 +1,5 @@ from __future__ import annotations + import abc import re diff --git a/src/python/jw/pkg/lib/TarIo.py b/src/python/jw/pkg/lib/TarIo.py index 6e508c6a..e0aee4da 100644 --- a/src/python/jw/pkg/lib/TarIo.py +++ b/src/python/jw/pkg/lib/TarIo.py @@ -5,11 +5,11 @@ import io import tarfile from tarfile import TarFile, TarInfo +from typing import TYPE_CHECKING, Any, override from .CopyContext import CopyContext from .ExecContext import ExecContext from .log import DEBUG, ERR, log -from typing import TYPE_CHECKING, Any, override if TYPE_CHECKING: from .base import StatResult diff --git a/src/python/jw/pkg/lib/Types.py b/src/python/jw/pkg/lib/Types.py index 82073059..42caffcc 100644 --- a/src/python/jw/pkg/lib/Types.py +++ b/src/python/jw/pkg/lib/Types.py @@ -5,7 +5,7 @@ import os import re import sys -from typing import Any, override, TYPE_CHECKING, Generic, Iterable, TypeVar +from typing import TYPE_CHECKING, Any, Generic, Iterable, TypeVar, override from .log import ERR, OFF, log, parse_log_level diff --git a/src/python/jw/pkg/lib/Uri.py b/src/python/jw/pkg/lib/Uri.py index 54472535..6c299b31 100644 --- a/src/python/jw/pkg/lib/Uri.py +++ b/src/python/jw/pkg/lib/Uri.py @@ -3,7 +3,7 @@ from __future__ import annotations import copy from functools import cached_property -from typing import override, TYPE_CHECKING +from typing import TYPE_CHECKING, override if TYPE_CHECKING: import urllib.parse diff --git a/src/python/jw/pkg/lib/distros/arch/Distro.py b/src/python/jw/pkg/lib/distros/arch/Distro.py index c772a4f3..f7b10f8a 100644 --- a/src/python/jw/pkg/lib/distros/arch/Distro.py +++ b/src/python/jw/pkg/lib/distros/arch/Distro.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override from ...Distro import Distro as Base diff --git a/src/python/jw/pkg/lib/distros/debian/Distro.py b/src/python/jw/pkg/lib/distros/debian/Distro.py index 8cf88a18..d0f0291b 100644 --- a/src/python/jw/pkg/lib/distros/debian/Distro.py +++ b/src/python/jw/pkg/lib/distros/debian/Distro.py @@ -2,7 +2,7 @@ from __future__ import annotations import os -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override from ...Distro import Distro as Base from ...log import NOTICE, log diff --git a/src/python/jw/pkg/lib/ec/Curl.py b/src/python/jw/pkg/lib/ec/Curl.py index 6757008d..2637cf15 100644 --- a/src/python/jw/pkg/lib/ec/Curl.py +++ b/src/python/jw/pkg/lib/ec/Curl.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override from ..FileContext import FileContext as Base diff --git a/src/python/jw/pkg/lib/ec/ssh/AsyncSSH.py b/src/python/jw/pkg/lib/ec/ssh/AsyncSSH.py index c1e3fd99..a6ce7af5 100644 --- a/src/python/jw/pkg/lib/ec/ssh/AsyncSSH.py +++ b/src/python/jw/pkg/lib/ec/ssh/AsyncSSH.py @@ -215,7 +215,7 @@ class AsyncSSH(Base): return if proc.stdin is not None: proc.stdin.write(data) - await proc.stdin.drain() + await proc.stdin.drain() async def _pump_stdout() -> None: while True: diff --git a/src/python/jw/pkg/lib/ec/ssh/Exec.py b/src/python/jw/pkg/lib/ec/ssh/Exec.py index e431dc90..4e169551 100644 --- a/src/python/jw/pkg/lib/ec/ssh/Exec.py +++ b/src/python/jw/pkg/lib/ec/ssh/Exec.py @@ -2,7 +2,7 @@ from __future__ import annotations import os -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override from ...base import InputMode from ...util import run_cmd diff --git a/src/python/jw/pkg/lib/ec/ssh/Paramiko.py b/src/python/jw/pkg/lib/ec/ssh/Paramiko.py index 3b080da9..84ac0d9e 100644 --- a/src/python/jw/pkg/lib/ec/ssh/Paramiko.py +++ b/src/python/jw/pkg/lib/ec/ssh/Paramiko.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any, override, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, override # Tolerate missing paramiko imports. jw-pkg is designed to work with what it # finds. diff --git a/src/python/jw/pkg/lib/init.py b/src/python/jw/pkg/lib/init.py index 4d8f2d5a..8098f687 100644 --- a/src/python/jw/pkg/lib/init.py +++ b/src/python/jw/pkg/lib/init.py @@ -1,6 +1,7 @@ from __future__ import annotations import pkgutil + from importlib import import_module from typing import TYPE_CHECKING diff --git a/src/python/jw/pkg/lib/log.py b/src/python/jw/pkg/lib/log.py index 87371181..9ebb124a 100644 --- a/src/python/jw/pkg/lib/log.py +++ b/src/python/jw/pkg/lib/log.py @@ -5,9 +5,8 @@ import re import sys import syslog -from enum import Flag, auto - from datetime import datetime +from enum import Flag, auto from os.path import basename from typing import TYPE_CHECKING, cast, override diff --git a/src/python/jw/pkg/lib/pm/rpm.py b/src/python/jw/pkg/lib/pm/rpm.py index c326bba0..ece689ce 100644 --- a/src/python/jw/pkg/lib/pm/rpm.py +++ b/src/python/jw/pkg/lib/pm/rpm.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any, TYPE_CHECKING, Collection, Iterable, cast +from typing import TYPE_CHECKING, Any, Collection, Iterable, cast from ..base import InputMode from ..Package import Package diff --git a/src/python/jw/pkg/lib/util.py b/src/python/jw/pkg/lib/util.py index 27812391..8033902c 100644 --- a/src/python/jw/pkg/lib/util.py +++ b/src/python/jw/pkg/lib/util.py @@ -13,6 +13,7 @@ from .Uri import Uri if TYPE_CHECKING: from argparse import Namespace + from .ExecContext import ExecContext from .FileContext import FileContext from .ProcFilter import ProcFilter, ProcPipeline