From 0c4c4ac657db4e187cdcad431e505486385ddce3 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 18 May 2022 23:14:15 +0300 Subject: [PATCH] Use globals() instead of sys.modules --- platformio/builder/tools/piolib.py | 8 ++++---- platformio/package/vcsclient.py | 5 ++--- platformio/platform/factory.py | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index 2372c3de..6529fbb0 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -60,16 +60,16 @@ class LibBuilderFactory(object): elif used_frameworks: clsname = "%sLibBuilder" % used_frameworks[0].capitalize() - obj = getattr(sys.modules[__name__], clsname)(env, path, verbose=verbose) + obj = globals()[clsname](env, path, verbose=verbose) # Handle PlatformIOLibBuilder.manifest.build.builder # pylint: disable=protected-access if isinstance(obj, PlatformIOLibBuilder) and obj._manifest.get("build", {}).get( "builder" ): - obj = getattr( - sys.modules[__name__], obj._manifest.get("build", {}).get("builder") - )(env, path, verbose=verbose) + obj = globals()[obj._manifest.get("build", {}).get("builder")]( + env, path, verbose=verbose + ) assert isinstance(obj, LibBuilderBase) return obj diff --git a/platformio/package/vcsclient.py b/platformio/package/vcsclient.py index ed7434b0..dc4c090d 100644 --- a/platformio/package/vcsclient.py +++ b/platformio/package/vcsclient.py @@ -15,7 +15,6 @@ import os import re import subprocess -import sys from urllib.parse import urlparse from platformio import proc @@ -47,12 +46,12 @@ class VCSClientFactory(object): if not type_: raise VCSBaseException("VCS: Unknown repository type %s" % remote_url) try: - obj = getattr(sys.modules[__name__], "%sClient" % type_.capitalize())( + obj = globals()["%sClient" % type_.capitalize()]( src_dir, remote_url, tag, silent ) assert isinstance(obj, VCSClientBase) return obj - except (AttributeError, AssertionError): + except (KeyError, AssertionError): raise VCSBaseException("VCS: Unknown repository type %s" % remote_url) diff --git a/platformio/platform/factory.py b/platformio/platform/factory.py index 7679b59f..0345cb2a 100644 --- a/platformio/platform/factory.py +++ b/platformio/platform/factory.py @@ -31,11 +31,11 @@ class PlatformFactory(object): @staticmethod def load_platform_module(name, path): - # support for legacy dev-platforms + # backward compatibiility with the legacy dev-platforms sys.modules["platformio.managers.platform"] = base try: return load_python_module("platformio.platform.%s" % name, path) - except ImportError as exc: + except ImportError: raise UnknownPlatform(name) @classmethod