[elbe-devel] [PATCH] elbepack: make use of importlib.import_module
Eduard Krein
eduard.krein at linutronix.de
Mon Apr 8 12:41:04 CEST 2024
Am Mittwoch, dem 20.03.2024 um 08:45 +0100 schrieb Thomas Weißschuh:
> Instead of manually messing with __import__ and sys.modules use
> importlib which provides a nice interface for the module loader.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>
Reviewed-by: Eduard Krein <eduard.krein at linutronix.de>
> ---
> elbe | 11 ++---------
> elbepack/commands/daemon.py | 5 ++---
> elbepack/directories.py | 2 +-
> 3 files changed, 5 insertions(+), 13 deletions(-)
>
> diff --git a/elbe b/elbe
> index d688b5d105f2..9f4905743681 100755
> --- a/elbe
> +++ b/elbe
> @@ -4,15 +4,9 @@
> # SPDX-License-Identifier: GPL-3.0-or-later
> # SPDX-FileCopyrightText: 2013-2017 Linutronix GmbH
>
> +import importlib
> import sys
>
> -# We need to import elbepack.commands so that
> -# elbepack/commands/__init__.py is run and the commands package is
> -# register into the elbepack namespace. This is later use by
> -# get_cmd_list() and the magic stuff with __import__() at the end of
> -# this file
> -#
> -import elbepack.commands # noqa: F401
> from elbepack.directories import get_cmdlist
> from elbepack.version import elbe_version
>
> @@ -42,7 +36,6 @@ if sys.argv[1] not in cmd_list:
>
> modname = 'elbepack.commands.' + sys.argv[1]
>
> -mod = __import__(modname)
> -cmdmod = sys.modules[modname]
> +cmdmod = importlib.import_module(modname)
>
> cmdmod.run_command(sys.argv[2:])
> diff --git a/elbepack/commands/daemon.py
> b/elbepack/commands/daemon.py
> index edcfbf168d77..04bc1a6c6987 100644
> --- a/elbepack/commands/daemon.py
> +++ b/elbepack/commands/daemon.py
> @@ -2,7 +2,7 @@
> # SPDX-License-Identifier: GPL-3.0-or-later
> # SPDX-FileCopyrightText: 2014, 2017 Linutronix GmbH
>
> -import sys
> +import importlib
> from optparse import OptionParser
> from pkgutil import iter_modules
>
> @@ -37,8 +37,7 @@ def run_command(argv):
> for d in daemons:
> print(f'enable {d}')
> module = 'elbepack.daemons.' + str(d)
> - _ = __import__(module)
> - cmdmod = sys.modules[module]
> + cmdmod = importlib.import_module(module)
> cherrypy.tree.graft(
> cmdmod.get_app(cherrypy.engine), '/' + str(d))
>
> diff --git a/elbepack/directories.py b/elbepack/directories.py
> index 2501ff6e21af..207c4d53b097 100644
> --- a/elbepack/directories.py
> +++ b/elbepack/directories.py
> @@ -8,7 +8,7 @@ import subprocess
> import sys
> from pkgutil import iter_modules
>
> -import elbepack
> +import elbepack.commands
>
>
> # set global variables that are used in other modules via imports
>
> ---
> base-commit: 0494866f13a20374514e056391138199803f0060
> change-id: 20240319-importlib-118e75f390ff
>
> Best regards,
--
Eduard Krein
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 19; Fax.: +49 7556 25 999 99
Hinweise zum Datenschutz finden Sie hier (Informations on data privacy
can be found here): https://linutronix.de/legal/data-protection.php
Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen |
Registergericht (Registration Court): Amtsgericht Freiburg i.Br.,
HRB700 806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas
Gleixner, Tiffany Silva, Sean Fennelly, Jeffrey Schneiderman
More information about the elbe-devel
mailing list