diff --git a/src/python/jw/pkg/cmds/distro/Cmd.py b/src/python/jw/pkg/cmds/distro/Cmd.py index ce272181..70739f23 100644 --- a/src/python/jw/pkg/cmds/distro/Cmd.py +++ b/src/python/jw/pkg/cmds/distro/Cmd.py @@ -2,13 +2,15 @@ import os, importlib +from ...lib.log import * +from ...lib.distros.Util import Util + from ..Cmd import Cmd as Base from ..CmdDistro import CmdDistro -from .backend.Util import Util class Cmd(Base): # export - from .backend.Backend import Backend + from ...lib.distros.Backend import Backend def __init__(self, parent: CmdDistro, name: str, help: str) -> None: super().__init__(parent, name, help) @@ -35,16 +37,16 @@ class Cmd(Base): # export backend_id = 'redhat' case 'opensuse' | 'suse': backend_id = 'suse' - self.__backend_path = ( - os.path.splitext(__name__)[0] - + '.backend.' - + backend_id - + '.' - ) + self.__backend_path = 'jw.pkg.lib.distros.' + backend_id + '.' return self.__backend_path def _instantiate(self, name: str, *args, **kwargs): - module = importlib.import_module(self._backend_path + name) + module_path = self._backend_path + name + try: + module = importlib.import_module(module_path) + except Exception as e: + log(ERR, f'Failed to import module {module_path} ({str(e)})') + raise cls = getattr(module, name) return cls(self, *args, **kwargs) diff --git a/src/python/jw/pkg/cmds/distro/CmdSelect.py b/src/python/jw/pkg/cmds/distro/CmdSelect.py index 1cc38b23..544ff788 100644 --- a/src/python/jw/pkg/cmds/distro/CmdSelect.py +++ b/src/python/jw/pkg/cmds/distro/CmdSelect.py @@ -3,10 +3,10 @@ from argparse import Namespace, ArgumentParser import re +from ...lib.Package import Package +from ...lib.distros.BeSelect import BeSelect from ..CmdDistro import CmdDistro -from .lib.Package import Package from .Cmd import Cmd -from .backend.BeSelect import BeSelect class CmdSelect(Cmd): # export diff --git a/src/python/jw/pkg/cmds/distro/pkg/Cmd.py b/src/python/jw/pkg/cmds/distro/pkg/Cmd.py index 64b25d1c..bdd07682 100644 --- a/src/python/jw/pkg/cmds/distro/pkg/Cmd.py +++ b/src/python/jw/pkg/cmds/distro/pkg/Cmd.py @@ -7,7 +7,7 @@ from ..CmdPkg import CmdPkg as Parent class Cmd(Base): # export - from ..backend.Backend import Backend + from ....lib.distros.Backend import Backend def __init__(self, parent: Parent, name: str, help: str) -> None: super().__init__(parent, name, help) diff --git a/src/python/jw/pkg/cmds/distro/lib/Package.py b/src/python/jw/pkg/lib/Package.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/lib/Package.py rename to src/python/jw/pkg/lib/Package.py diff --git a/src/python/jw/pkg/cmds/distro/backend/Backend.py b/src/python/jw/pkg/lib/distros/Backend.py similarity index 94% rename from src/python/jw/pkg/cmds/distro/backend/Backend.py rename to src/python/jw/pkg/lib/distros/Backend.py index 4f5c057e..c1632a10 100644 --- a/src/python/jw/pkg/cmds/distro/backend/Backend.py +++ b/src/python/jw/pkg/lib/distros/Backend.py @@ -3,7 +3,7 @@ from __future__ import annotations from typing import TYPE_CHECKING -from ....lib.util import run_sudo +from ..util import run_sudo if TYPE_CHECKING: from ..Cmd import Cmd diff --git a/src/python/jw/pkg/cmds/distro/backend/BeDelete.py b/src/python/jw/pkg/lib/distros/BeDelete.py similarity index 86% rename from src/python/jw/pkg/cmds/distro/backend/BeDelete.py rename to src/python/jw/pkg/lib/distros/BeDelete.py index 46cc551e..c592ef17 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BeDelete.py +++ b/src/python/jw/pkg/lib/distros/BeDelete.py @@ -4,7 +4,7 @@ import abc from argparse import Namespace from .Backend import Backend as Base -from ..CmdDelete import CmdDelete as Parent +from ..Cmd import Cmd as Parent class BeDelete(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/BeDup.py b/src/python/jw/pkg/lib/distros/BeDup.py similarity index 88% rename from src/python/jw/pkg/cmds/distro/backend/BeDup.py rename to src/python/jw/pkg/lib/distros/BeDup.py index 89019286..d91213e3 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BeDup.py +++ b/src/python/jw/pkg/lib/distros/BeDup.py @@ -4,7 +4,7 @@ import abc from argparse import Namespace from .Backend import Backend as Base -from ..CmdDup import CmdDup as Parent +from ..Cmd import Cmd as Parent class BeDup(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/BeInstall.py b/src/python/jw/pkg/lib/distros/BeInstall.py similarity index 86% rename from src/python/jw/pkg/cmds/distro/backend/BeInstall.py rename to src/python/jw/pkg/lib/distros/BeInstall.py index 98a6f806..6b4ec0d6 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BeInstall.py +++ b/src/python/jw/pkg/lib/distros/BeInstall.py @@ -4,7 +4,7 @@ import abc from argparse import Namespace from .Backend import Backend as Base -from ..CmdInstall import CmdInstall as Parent +from ..Cmd import Cmd as Parent class BeInstall(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/BePkg.py b/src/python/jw/pkg/lib/distros/BePkg.py similarity index 90% rename from src/python/jw/pkg/cmds/distro/backend/BePkg.py rename to src/python/jw/pkg/lib/distros/BePkg.py index ac89ad4c..66ffe84e 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BePkg.py +++ b/src/python/jw/pkg/lib/distros/BePkg.py @@ -5,11 +5,11 @@ from typing import Iterable, TYPE_CHECKING import abc -from ..lib.Package import Package +from ..Package import Package from .Backend import Backend as Base if TYPE_CHECKING: - from ..CmdPkg import CmdPkg as Parent + from ..Cmd import Cmd as Parent class BePkg(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/BeRebootRequired.py b/src/python/jw/pkg/lib/distros/BeRebootRequired.py similarity index 83% rename from src/python/jw/pkg/cmds/distro/backend/BeRebootRequired.py rename to src/python/jw/pkg/lib/distros/BeRebootRequired.py index 5e658e2c..14009593 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BeRebootRequired.py +++ b/src/python/jw/pkg/lib/distros/BeRebootRequired.py @@ -4,7 +4,7 @@ import abc from argparse import Namespace from .Backend import Backend as Base -from ..CmdRebootRequired import CmdRebootRequired as Parent +from ..Cmd import Cmd as Parent class BeRebootRequired(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/BeRefresh.py b/src/python/jw/pkg/lib/distros/BeRefresh.py similarity index 86% rename from src/python/jw/pkg/cmds/distro/backend/BeRefresh.py rename to src/python/jw/pkg/lib/distros/BeRefresh.py index 496cc062..245cad38 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BeRefresh.py +++ b/src/python/jw/pkg/lib/distros/BeRefresh.py @@ -4,7 +4,7 @@ import abc from argparse import Namespace from .Backend import Backend as Base -from ..CmdRefresh import CmdRefresh as Parent +from ..Cmd import Cmd as Parent class BeRefresh(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/BeSelect.py b/src/python/jw/pkg/lib/distros/BeSelect.py similarity index 92% rename from src/python/jw/pkg/cmds/distro/backend/BeSelect.py rename to src/python/jw/pkg/lib/distros/BeSelect.py index fb8d1c8e..72cd5a26 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BeSelect.py +++ b/src/python/jw/pkg/lib/distros/BeSelect.py @@ -9,7 +9,7 @@ from typing import Iterable from .Backend import Backend as Base if TYPE_CHECKING: - from ..CmdSelect import CmdSelect as Parent + from ..Cmd import Cmd as Parent from .Package import Package class BeSelect(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/redhat/Makefile b/src/python/jw/pkg/lib/distros/Makefile similarity index 66% rename from src/python/jw/pkg/cmds/distro/backend/redhat/Makefile rename to src/python/jw/pkg/lib/distros/Makefile index d8d0e64b..7a83c333 100644 --- a/src/python/jw/pkg/cmds/distro/backend/redhat/Makefile +++ b/src/python/jw/pkg/lib/distros/Makefile @@ -1,4 +1,4 @@ -TOPDIR = ../../../../../../../.. +TOPDIR = ../../../../../.. include $(TOPDIR)/make/proj.mk include $(JWBDIR)/make/py-mod.mk diff --git a/src/python/jw/pkg/cmds/distro/backend/Util.py b/src/python/jw/pkg/lib/distros/Util.py similarity index 93% rename from src/python/jw/pkg/cmds/distro/backend/Util.py rename to src/python/jw/pkg/lib/distros/Util.py index 962c157b..4a54b1c7 100644 --- a/src/python/jw/pkg/cmds/distro/backend/Util.py +++ b/src/python/jw/pkg/lib/distros/Util.py @@ -3,7 +3,7 @@ from __future__ import annotations from typing import TYPE_CHECKING -from ....lib.util import run_sudo +from ..util import run_sudo if TYPE_CHECKING: from ..Cmd import Cmd diff --git a/src/python/jw/pkg/cmds/distro/backend/arch/Dup.py b/src/python/jw/pkg/lib/distros/arch/Dup.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/arch/Dup.py rename to src/python/jw/pkg/lib/distros/arch/Dup.py diff --git a/src/python/jw/pkg/cmds/distro/backend/arch/Install.py b/src/python/jw/pkg/lib/distros/arch/Install.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/arch/Install.py rename to src/python/jw/pkg/lib/distros/arch/Install.py diff --git a/src/python/jw/pkg/cmds/distro/backend/Makefile b/src/python/jw/pkg/lib/distros/arch/Makefile similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/Makefile rename to src/python/jw/pkg/lib/distros/arch/Makefile diff --git a/src/python/jw/pkg/cmds/distro/backend/arch/Refresh.py b/src/python/jw/pkg/lib/distros/arch/Refresh.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/arch/Refresh.py rename to src/python/jw/pkg/lib/distros/arch/Refresh.py diff --git a/src/python/jw/pkg/cmds/distro/backend/arch/Util.py b/src/python/jw/pkg/lib/distros/arch/Util.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/arch/Util.py rename to src/python/jw/pkg/lib/distros/arch/Util.py diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Delete.py b/src/python/jw/pkg/lib/distros/debian/Delete.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/debian/Delete.py rename to src/python/jw/pkg/lib/distros/debian/Delete.py diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Dup.py b/src/python/jw/pkg/lib/distros/debian/Dup.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/debian/Dup.py rename to src/python/jw/pkg/lib/distros/debian/Dup.py diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Install.py b/src/python/jw/pkg/lib/distros/debian/Install.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/debian/Install.py rename to src/python/jw/pkg/lib/distros/debian/Install.py diff --git a/src/python/jw/pkg/cmds/distro/lib/Makefile b/src/python/jw/pkg/lib/distros/debian/Makefile similarity index 100% rename from src/python/jw/pkg/cmds/distro/lib/Makefile rename to src/python/jw/pkg/lib/distros/debian/Makefile diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Pkg.py b/src/python/jw/pkg/lib/distros/debian/Pkg.py similarity index 83% rename from src/python/jw/pkg/cmds/distro/backend/suse/Pkg.py rename to src/python/jw/pkg/lib/distros/debian/Pkg.py index 2832f5b5..a3ffc812 100644 --- a/src/python/jw/pkg/cmds/distro/backend/suse/Pkg.py +++ b/src/python/jw/pkg/lib/distros/debian/Pkg.py @@ -3,8 +3,8 @@ from typing import Iterable from argparse import Namespace -from ...lib.Package import Package -from ...lib.rpm import list_files, query_packages +from ...Package import Package +from ...pm.dpkg import list_files, query_packages from ...Cmd import Cmd from ..BePkg import BePkg as Base diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/RebootRequired.py b/src/python/jw/pkg/lib/distros/debian/RebootRequired.py similarity index 97% rename from src/python/jw/pkg/cmds/distro/backend/debian/RebootRequired.py rename to src/python/jw/pkg/lib/distros/debian/RebootRequired.py index 533b1145..cda346a2 100644 --- a/src/python/jw/pkg/cmds/distro/backend/debian/RebootRequired.py +++ b/src/python/jw/pkg/lib/distros/debian/RebootRequired.py @@ -3,7 +3,7 @@ import os from argparse import Namespace -from .....lib.log import * +from ...log import * from ...Cmd import Cmd from ..BeRebootRequired import BeRebootRequired as Base diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Refresh.py b/src/python/jw/pkg/lib/distros/debian/Refresh.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/debian/Refresh.py rename to src/python/jw/pkg/lib/distros/debian/Refresh.py diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Select.py b/src/python/jw/pkg/lib/distros/debian/Select.py similarity index 82% rename from src/python/jw/pkg/cmds/distro/backend/suse/Select.py rename to src/python/jw/pkg/lib/distros/debian/Select.py index 913f48b9..7db5f76f 100644 --- a/src/python/jw/pkg/cmds/distro/backend/suse/Select.py +++ b/src/python/jw/pkg/lib/distros/debian/Select.py @@ -3,8 +3,8 @@ from typing import Iterable from argparse import Namespace -from ...lib.Package import Package -from ...lib.rpm import query_packages +from ...Package import Package +from ...pm.dpkg import query_packages from ...Cmd import Cmd from ..BeSelect import BeSelect as Base diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Util.py b/src/python/jw/pkg/lib/distros/debian/Util.py similarity index 94% rename from src/python/jw/pkg/cmds/distro/backend/debian/Util.py rename to src/python/jw/pkg/lib/distros/debian/Util.py index bf2c272a..3722363b 100644 --- a/src/python/jw/pkg/cmds/distro/backend/debian/Util.py +++ b/src/python/jw/pkg/lib/distros/debian/Util.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from ...Cmd import Cmd -from ...lib.dpkg import run_dpkg +from ...pm.dpkg import run_dpkg from ..Util import Util as Base class Util(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/redhat/Dup.py b/src/python/jw/pkg/lib/distros/redhat/Dup.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/redhat/Dup.py rename to src/python/jw/pkg/lib/distros/redhat/Dup.py diff --git a/src/python/jw/pkg/cmds/distro/backend/redhat/Install.py b/src/python/jw/pkg/lib/distros/redhat/Install.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/redhat/Install.py rename to src/python/jw/pkg/lib/distros/redhat/Install.py diff --git a/src/python/jw/pkg/cmds/distro/backend/arch/Makefile b/src/python/jw/pkg/lib/distros/redhat/Makefile similarity index 66% rename from src/python/jw/pkg/cmds/distro/backend/arch/Makefile rename to src/python/jw/pkg/lib/distros/redhat/Makefile index d8d0e64b..19fedac9 100644 --- a/src/python/jw/pkg/cmds/distro/backend/arch/Makefile +++ b/src/python/jw/pkg/lib/distros/redhat/Makefile @@ -1,4 +1,4 @@ -TOPDIR = ../../../../../../../.. +TOPDIR = ../../../../../../.. include $(TOPDIR)/make/proj.mk include $(JWBDIR)/make/py-mod.mk diff --git a/src/python/jw/pkg/cmds/distro/backend/redhat/Refresh.py b/src/python/jw/pkg/lib/distros/redhat/Refresh.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/redhat/Refresh.py rename to src/python/jw/pkg/lib/distros/redhat/Refresh.py diff --git a/src/python/jw/pkg/cmds/distro/backend/redhat/Util.py b/src/python/jw/pkg/lib/distros/redhat/Util.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/redhat/Util.py rename to src/python/jw/pkg/lib/distros/redhat/Util.py diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Delete.py b/src/python/jw/pkg/lib/distros/suse/Delete.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/suse/Delete.py rename to src/python/jw/pkg/lib/distros/suse/Delete.py diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Dup.py b/src/python/jw/pkg/lib/distros/suse/Dup.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/suse/Dup.py rename to src/python/jw/pkg/lib/distros/suse/Dup.py diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Install.py b/src/python/jw/pkg/lib/distros/suse/Install.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/suse/Install.py rename to src/python/jw/pkg/lib/distros/suse/Install.py diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Makefile b/src/python/jw/pkg/lib/distros/suse/Makefile similarity index 66% rename from src/python/jw/pkg/cmds/distro/backend/debian/Makefile rename to src/python/jw/pkg/lib/distros/suse/Makefile index d8d0e64b..19fedac9 100644 --- a/src/python/jw/pkg/cmds/distro/backend/debian/Makefile +++ b/src/python/jw/pkg/lib/distros/suse/Makefile @@ -1,4 +1,4 @@ -TOPDIR = ../../../../../../../.. +TOPDIR = ../../../../../../.. include $(TOPDIR)/make/proj.mk include $(JWBDIR)/make/py-mod.mk diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Pkg.py b/src/python/jw/pkg/lib/distros/suse/Pkg.py similarity index 83% rename from src/python/jw/pkg/cmds/distro/backend/debian/Pkg.py rename to src/python/jw/pkg/lib/distros/suse/Pkg.py index 030cd61b..32c9860f 100644 --- a/src/python/jw/pkg/cmds/distro/backend/debian/Pkg.py +++ b/src/python/jw/pkg/lib/distros/suse/Pkg.py @@ -3,8 +3,8 @@ from typing import Iterable from argparse import Namespace -from ...lib.Package import Package -from ...lib.dpkg import list_files, query_packages +from ...Package import Package +from ...pm.rpm import list_files, query_packages from ...Cmd import Cmd from ..BePkg import BePkg as Base diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/RebootRequired.py b/src/python/jw/pkg/lib/distros/suse/RebootRequired.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/suse/RebootRequired.py rename to src/python/jw/pkg/lib/distros/suse/RebootRequired.py diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Refresh.py b/src/python/jw/pkg/lib/distros/suse/Refresh.py similarity index 100% rename from src/python/jw/pkg/cmds/distro/backend/suse/Refresh.py rename to src/python/jw/pkg/lib/distros/suse/Refresh.py diff --git a/src/python/jw/pkg/cmds/distro/backend/debian/Select.py b/src/python/jw/pkg/lib/distros/suse/Select.py similarity index 82% rename from src/python/jw/pkg/cmds/distro/backend/debian/Select.py rename to src/python/jw/pkg/lib/distros/suse/Select.py index 4f3e740e..f20f16b3 100644 --- a/src/python/jw/pkg/cmds/distro/backend/debian/Select.py +++ b/src/python/jw/pkg/lib/distros/suse/Select.py @@ -3,8 +3,8 @@ from typing import Iterable from argparse import Namespace -from ...lib.Package import Package -from ...lib.dpkg import query_packages +from ...Package import Package +from ...pm.rpm import query_packages from ...Cmd import Cmd from ..BeSelect import BeSelect as Base diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Util.py b/src/python/jw/pkg/lib/distros/suse/Util.py similarity index 91% rename from src/python/jw/pkg/cmds/distro/backend/suse/Util.py rename to src/python/jw/pkg/lib/distros/suse/Util.py index e790982c..f2f140d0 100644 --- a/src/python/jw/pkg/cmds/distro/backend/suse/Util.py +++ b/src/python/jw/pkg/lib/distros/suse/Util.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -from .....lib.util import run_cmd +from ...util import run_cmd from ...Cmd import Cmd from ..Util import Util as Base -from ...lib.rpm import run_rpm +from ...pm.rpm import run_rpm class Util(Base): diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Makefile b/src/python/jw/pkg/lib/pm/Makefile similarity index 66% rename from src/python/jw/pkg/cmds/distro/backend/suse/Makefile rename to src/python/jw/pkg/lib/pm/Makefile index d8d0e64b..7a83c333 100644 --- a/src/python/jw/pkg/cmds/distro/backend/suse/Makefile +++ b/src/python/jw/pkg/lib/pm/Makefile @@ -1,4 +1,4 @@ -TOPDIR = ../../../../../../../.. +TOPDIR = ../../../../../.. include $(TOPDIR)/make/proj.mk include $(JWBDIR)/make/py-mod.mk diff --git a/src/python/jw/pkg/cmds/distro/lib/dpkg.py b/src/python/jw/pkg/lib/pm/dpkg.py similarity index 94% rename from src/python/jw/pkg/cmds/distro/lib/dpkg.py rename to src/python/jw/pkg/lib/pm/dpkg.py index 7e6d18cf..213b5789 100644 --- a/src/python/jw/pkg/cmds/distro/lib/dpkg.py +++ b/src/python/jw/pkg/lib/pm/dpkg.py @@ -2,9 +2,9 @@ from typing import Iterable -from ....lib.util import run_cmd, run_sudo +from ..util import run_cmd, run_sudo -from .Package import Package, meta_tags +from ..Package import Package, meta_tags _meta_map: dict[str, str]|None = None diff --git a/src/python/jw/pkg/cmds/distro/lib/rpm.py b/src/python/jw/pkg/lib/pm/rpm.py similarity index 93% rename from src/python/jw/pkg/cmds/distro/lib/rpm.py rename to src/python/jw/pkg/lib/pm/rpm.py index 2edda5c6..cd9ac70f 100644 --- a/src/python/jw/pkg/cmds/distro/lib/rpm.py +++ b/src/python/jw/pkg/lib/pm/rpm.py @@ -2,9 +2,9 @@ from typing import Iterable -from ....lib.util import run_cmd, run_sudo +from ..util import run_cmd, run_sudo -from .Package import Package, meta_tags +from ..Package import Package, meta_tags _meta_map: dict[str, str]|None = None