Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/planemo/config.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/config.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -"""Module defines abstractions for configuring Planemo.""" - -import os - -import aenum -import click -import yaml - -PLANEMO_CONFIG_ENV_PROP = "PLANEMO_GLOBAL_CONFIG_PATH" -DEFAULT_CONFIG = { -} - -VALUE_UNSET = object() - - -OptionSource = aenum.Enum( - "OptionSource", 'cli profile global_config default' -) - - -def _default_callback( - default, use_global_config=False, resolve_path=False, extra_global_config_vars=[], -): - - def callback(ctx, param, value): - planemo_ctx = ctx.obj - param_name = param.name - if value is not None: - result = value - option_source = OptionSource.cli - else: - result, option_source = _find_default( - planemo_ctx, - param, - use_global_config=use_global_config, - extra_global_config_vars=extra_global_config_vars, - ) - - if result is VALUE_UNSET: - result = default - option_source = OptionSource.default - - assert option_source is not None - assert result is not VALUE_UNSET - - if resolve_path and result is not None: - result = os.path.abspath(result) - - planemo_ctx.set_option_source(param_name, option_source) - return result - - return callback - - -def _find_default(ctx, param, use_global_config, extra_global_config_vars): - if use_global_config: - global_config = ctx.global_config - global_config_keys = ["default_%s" % param.name] + extra_global_config_vars - for global_config_key in global_config_keys: - if global_config_key in global_config: - default_value = global_config[global_config_key] - return default_value, OptionSource.global_config - - return VALUE_UNSET, None - - -def planemo_option(*args, **kwargs): - """Extend ``click.option`` with planemo-config aware configuration. - - This extends click.option to use a callback when assigning default - values, add ``use_global_config`` keyword argument to allow reading - defaults from ~/.planemo.yml, and tracks how parameters are specified - using the Planemo Context object. - """ - option_type = kwargs.get("type", None) - use_global_config = kwargs.pop("use_global_config", False) - use_env_var = kwargs.pop("use_env_var", False) - extra_global_config_vars = kwargs.pop("extra_global_config_vars", []) - - default_specified = "default" in kwargs - default = None - if default_specified: - default = kwargs.pop("default") - - if default_specified or use_global_config or use_env_var: - outer_callback = kwargs.pop("callback", None) - - def callback(ctx, param, value): - resolve_path = option_type and getattr(option_type, "resolve_path", False) - result = _default_callback( - default, - use_global_config=use_global_config, - extra_global_config_vars=extra_global_config_vars, - resolve_path=resolve_path, - )(ctx, param, value) - - if outer_callback is not None: - result = outer_callback(ctx, param, result) - - return result - - kwargs["callback"] = callback - - if default_specified: - kwargs["default"] = None - - if use_env_var: - name = None - for arg in args: - if arg.startswith("--"): - name = arg[len("--"):] - assert name - kwargs["envvar"] = "PLANEMO_%s" % name.upper() - - option = click.option(*args, **kwargs) - return option - - -def global_config_path(config_path=None): - if not config_path: - config_path = os.environ.get( - PLANEMO_CONFIG_ENV_PROP, - "~/.planemo.yml" - ) - config_path = os.path.expanduser(config_path) - return config_path - - -def read_global_config(config_path): - config_path = global_config_path(config_path) - if not os.path.exists(config_path): - return DEFAULT_CONFIG - - with open(config_path) as f: - return yaml.safe_load(f) - - -__all__ = ( - "global_config_path", - "read_global_config", - "planemo_option", -)