Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_struct():
from muffin.utils import Struct, LStruct
data = Struct({'test': 42})
assert data.test == 42
data.test = 21
assert data.test == 21
settings = LStruct({'option': 'value'})
assert settings.option == 'value'
settings.option2 = 'value2'
settings.lock()
settings.lock()
with pytest.raises(RuntimeError):
settings.test = 42
logging.config.dictConfig(LOGGING_CFG)
# Setup CLI
self.manage = Manager(self)
self._error_handlers = {}
# Setup static files
if isinstance(self.cfg.STATIC_FOLDERS, str):
self.cfg.STATIC_FOLDERS = [self.cfg.STATIC_FOLDERS]
elif not isinstance(self.cfg.STATIC_FOLDERS, list):
self.cfg.STATIC_FOLDERS = list(self.cfg.STATIC_FOLDERS)
# Setup plugins
self.plugins = self.ps = LStruct()
for plugin in self.cfg.PLUGINS:
try:
self.install(plugin)
except Exception as exc: # noqa
self.logger.error('Plugin is invalid: %s', plugin)
self.logger.exception(exc)
def __init__(self, app=None, **options):
"""Save application and create he plugin's configuration."""
self.config = self.cfg = LStruct(options)
self.app = app
if app is not None:
app.install(self)
def cfg(self):
"""Load the application configuration.
This method loads configuration from python module.
"""
config = LStruct(self.defaults)
module = config['CONFIG'] = os.environ.get(
CONFIGURATION_ENVIRON_VARIABLE, config['CONFIG'])
if module:
try:
module = import_module(module)
config.update({
name: getattr(module, name) for name in dir(module)
if name == name.upper() and not name.startswith('_')
})
except ImportError as exc:
config.CONFIG = None
self.logger.error("Error importing %s: %s", module, exc)
# Patch configuration from ENV