From c4e554b0a9e51aa792f19e9d7d68463a695fba88 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Wed, 7 Aug 2019 15:49:39 -0700 Subject: [PATCH 1/4] Local config no longer fails to import silently --- superset/config.py | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/superset/config.py b/superset/config.py index 01bc16a587d53..d6ad07e3792c9 100644 --- a/superset/config.py +++ b/superset/config.py @@ -23,7 +23,9 @@ """ from collections import OrderedDict import imp +import importlib.util import json +import logging import os import sys @@ -622,29 +624,31 @@ class CeleryConfig(object): # SQLALCHEMY_DATABASE_URI by default if set to `None` SQLALCHEMY_EXAMPLES_URI = None -try: - if CONFIG_PATH_ENV_VAR in os.environ: - # Explicitly import config module that is not in pythonpath; useful - # for case where app is being executed via pex. - print( - "Loaded your LOCAL configuration at [{}]".format( - os.environ[CONFIG_PATH_ENV_VAR] - ) - ) +if CONFIG_PATH_ENV_VAR in os.environ: + # Explicitly import config module that is not necessarily in pythonpath; useful + # for case where app is being executed via pex. + try: + cfg_path = os.environ[CONFIG_PATH_ENV_VAR] module = sys.modules[__name__] - override_conf = imp.load_source( - "superset_config", os.environ[CONFIG_PATH_ENV_VAR] - ) + override_conf = imp.load_source("superset_config", cfg_path) for key in dir(override_conf): if key.isupper(): setattr(module, key, getattr(override_conf, key)) - else: + print("Loaded your LOCAL configuration at [{}]".format(cfg_path)) + except Exception: + logging.exception( + "Failed to import config for {}={}".format(CONFIG_PATH_ENV_VAR, cfg_path) + ) + raise +elif importlib.util.find_spec("superset_config"): + try: from superset_config import * # noqa import superset_config print( "Loaded your LOCAL configuration at [{}]".format(superset_config.__file__) ) -except ImportError: - pass + except Exception: + logging.exception("Failed to import local superset_confg") + raise From bcf0991e8ee9a9f571aa8a70050514f9d328a068 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Wed, 7 Aug 2019 17:09:39 -0700 Subject: [PATCH 2/4] fix types, use f-strings --- superset/config.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/superset/config.py b/superset/config.py index d6ad07e3792c9..397cbfec60d7c 100644 --- a/superset/config.py +++ b/superset/config.py @@ -635,20 +635,18 @@ class CeleryConfig(object): if key.isupper(): setattr(module, key, getattr(override_conf, key)) - print("Loaded your LOCAL configuration at [{}]".format(cfg_path)) + print(f"Loaded your LOCAL configuration at [{cfg_path}]") except Exception: logging.exception( - "Failed to import config for {}={}".format(CONFIG_PATH_ENV_VAR, cfg_path) + f"Failed to import config for {CONFIG_PATH_ENV_VAR}={cfg_path}" ) raise elif importlib.util.find_spec("superset_config"): try: from superset_config import * # noqa - import superset_config + import superset_config # noqa - print( - "Loaded your LOCAL configuration at [{}]".format(superset_config.__file__) - ) + print(f"Loaded your LOCAL configuration at [{superset_config.__file__}]") except Exception: - logging.exception("Failed to import local superset_confg") + logging.exception("Failed to import local superset_config") raise From 71e4f03e7c2898fbf604e7c177bc58b4e99b20e2 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Wed, 7 Aug 2019 22:08:42 -0700 Subject: [PATCH 3/4] fix unhelpful pylint import error --- superset/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset/config.py b/superset/config.py index 397cbfec60d7c..698c72d30cd41 100644 --- a/superset/config.py +++ b/superset/config.py @@ -643,8 +643,8 @@ class CeleryConfig(object): raise elif importlib.util.find_spec("superset_config"): try: - from superset_config import * # noqa - import superset_config # noqa + from superset_config import * # noqa pylint: disable=import-error + import superset_config # noqa pylint: disable=import-error print(f"Loaded your LOCAL configuration at [{superset_config.__file__}]") except Exception: From ac6998cf140121a39dbe81616252be81c66559b0 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Thu, 8 Aug 2019 07:55:16 -0700 Subject: [PATCH 4/4] tweaked comment --- superset/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/config.py b/superset/config.py index 698c72d30cd41..bcdd0f63c6805 100644 --- a/superset/config.py +++ b/superset/config.py @@ -648,5 +648,5 @@ class CeleryConfig(object): print(f"Loaded your LOCAL configuration at [{superset_config.__file__}]") except Exception: - logging.exception("Failed to import local superset_config") + logging.exception("Found but failed to import local superset_config") raise