def execute_loaders( self, env=None, silent=None, key=None, filename=None, loaders=None ): """Execute all internal and registered loaders :param env: The environment to load :param silent: If loading erros is silenced :param key: if provided load a single key :param filename: optional custom filename to load :param loaders: optional list of loader modules """ if key is None: default_loader(self, self._defaults) env = (env or self.current_env).upper() silent = silent or self.SILENT_ERRORS_FOR_DYNACONF if loaders is None: self.pre_load(env, silent=silent, key=key) settings_loader( self, env=env, silent=silent, key=key, filename=filename ) self.load_extra_yaml(env, silent, key) # DEPRECATED enable_external_loaders(self) loaders = self.loaders for loader in loaders: loader.load(self, env, silent=silent, key=key) self.load_includes(env, silent=silent, key=key)
def execute_loaders(self, env=None, silent=None, key=None, filename=None): """Execute all internal and registered loaders :param env: The environment to load :param silent: If loading erros is silenced :param key: if provided load a single key :param filename: optional custom filename to load """ if key is None: default_loader(self, self._defaults) env = (env or self.current_env).upper() silent = silent or self.SILENT_ERRORS_FOR_DYNACONF self.pre_load(env, silent=silent, key=key) settings_loader(self, env=env, silent=silent, key=key, filename=filename) self.load_extra_yaml(env, silent, key) # DEPRECATED enable_external_loaders(self) for loader in self.loaders: self.logger.debug("Dynaconf executing: %s", loader.__name__) loader.load(self, env, silent=silent, key=key) self.load_includes(env, silent=silent, key=key) self.logger.debug("Loaded Files: %s", deduplicate(self._loaded_files))
def execute_loaders(self, namespace=None, silent=None, key=None): """Execute all internal and registered loaders""" silent = silent or self.SILENT_ERRORS_FOR_DYNACONF if key is None: default_loader(self, self._defaults) settings_loader(self, namespace=namespace, silent=silent, key=key) self.load_extra_yaml(namespace, silent, key) # DEPRECATED for loader in self.loaders: self.logger.debug('Loading %s', loader.__name__) loader.load(self, namespace, silent=silent, key=key)
def execute_loaders(self, namespace=None, silent=None, key=None): """Execute all internal and registered loaders""" default_loader(self) module_loader(self, namespace=namespace) if self.exists('YAML'): yaml_loader.load(self, namespace=namespace, filename=self.get('YAML')) silent = silent or self.DYNACONF_SILENT_ERRORS for loader in self.loaders: loader.load(self, namespace, silent=silent, key=key)
def execute_loaders(self, env=None, silent=None, key=None, filename=None): """Execute all internal and registered loaders :param env: The environment to load :param silent: If loading erros is silenced :param key: if provided load a single key :param filename: optinal custom filename to load """ if key is None: default_loader(self, self._defaults) silent = silent or self.SILENT_ERRORS_FOR_DYNACONF settings_loader(self, env=env, silent=silent, key=key, filename=filename) self.load_extra_yaml(env, silent, key) # DEPRECATED enable_external_loaders(self) for loader in self.loaders: self.logger.debug('Dynaconf executing: %s', loader.__name__) loader.load(self, env, silent=silent, key=key) # Do we have any nested includes we need to process? If so, # Remove any duplicate paths (while preserving definition order) # by converting to an ordered dict, and then converting back # to a list. includes = list(OrderedDict.fromkeys(self.get('DYNACONF_INCLUDE', []))) if includes: already_loaded = set() basepath = os.path.split(self.settings_module)[0] for include in includes: # Handle absolute and relative paths in the configuration. if os.path.isabs(include): # pragma: no cover included_filename = include else: included_filename = os.path.join(basepath, include) # Handle possible globs for path in glob.glob(included_filename): if path in already_loaded: # pragma: no cover continue settings_loader(obj=self, env=env, silent=silent, key=key, filename=path) already_loaded.add(path)
def execute_loaders(self, namespace=None, silent=None, key=None): default_loader(self) module_loader(self) silent = silent or self.DYNACONF_SILENT_ERRORS for loader in self.loaders: loader.load(self, namespace, silent=silent, key=key)
def configure_dynaconf(app): # extra vars in .secrets.yml override values on quokka.yml # secrets file is a hidden file and must be excluded on .gitignore # all password, token and other sensitive must go there # or exported as env var ex: QUOKKA_SECRET_KEY=12345 settings_file = 'quokka.yml,.secrets.yml' initial_envmode = app.config.get('ENVMODE') # Extension is supposed to override envmode FlaskDynaconf( app, ENVVAR_FOR_DYNACONF="QUOKKA_SETTINGS_MODULE", GLOBAL_ENV_FOR_DYNACONF='QUOKKA', SETTINGS_MODULE_FOR_DYNACONF=settings_file, SILENT_ERRORS_FOR_DYNACONF=True ) # Configure extra environment envmode = initial_envmode or app.config.get('ENVMODE') if envmode is not None: yaml_loader.load( obj=app.config, env=envmode, filename=settings_file ) # overload with envvars env_loader.load_from_env( identifier=envmode, key=None, env=f'quokka_{envmode}', obj=app.config, silent=True ) # configure theme options app.theme_context = DynaconfDict({ 'JINJA_ENVIRONMENT': app.jinja_env, 'DEFAULT_LANG': app.config.get('BABEL_DEFAULT_LOCALE'), 'default_locale': app.config.get('BABEL_DEFAULT_LOCALE'), 'PAGES': [], 'pages': [], 'tags': [], 'articles': [], 'categories': [], # https://github.com/getpelican/pelican-plugins/tree/master/tag_cloud 'tag_cloud': [], 'CATEGORIES_URL': 'categories/index.html', 'JINJA_EXTENSIONS': app.jinja_env.extensions, 'USE_LESS': False, # For some themes like bootstrap3 theme SITEURL must be '' 'SITEURL': 'http://localhost:5000', 'THEME_STATIC_DIR': 'theme', 'FAVICON': 'favicon.ico', 'FAVICON_IE': 'favicon.ico', 'FAVICON_FILENAME': 'favicon.ico', # 'AVATAR': 'LOAD FROM UPLOADS', 'NEWEST_FIRST_ARCHIVES': True }) default_loader(app.theme_context) # load theme variables from YAML file yaml_loader.load( obj=app.theme_context, env='theme', filename=app.config.get('SETTINGS_MODULE_FOR_DYNACONF') ) # overrride with QUOKKA_THEME_ prefixed env vars if exist env_loader.load_from_env( identifier='theme', key=None, env='quokka_theme', obj=app.theme_context, silent=True ) # remove prefix for pelican-themes active = app.theme_context.get('ACTIVE', 'default') if active.startswith('pelican'): active = active.lstrip('pelican-') app.theme_context['ACTIVE'] = active # load theme specific variables from YAML yaml_loader.load( obj=app.theme_context, env=f'theme_{app.theme_context.get("ACTIVE")}', filename=app.config.get('SETTINGS_MODULE_FOR_DYNACONF') ) # overrride with QUOKKA_THEME_THEMENAME prefixed env vars if exist env_loader.load_from_env( identifier=f'theme_{app.theme_context.get("ACTIVE")}', key=None, env=f'quokka_theme_{app.theme_context.get("ACTIVE")}', obj=app.theme_context, silent=True ) # mark strings as safe Markup for k, v in app.theme_context.items(): if isinstance(v, str): app.theme_context[k] = Markup(v)