def get_filter(self, option, default=unspecified, negate=False, filter_parser=str, filter_str=str.__str__, default_matcher='StartMatcher', default_filter='StrictListFilter', default_order=ListOrder.source, on_change=unspecified, **kwargs): matcher_opt = join_config_locations(option, 'matcher') matcher_obj = self.get_plugin(matcher_opt, default_matcher, cls=Matcher, pargs=(matcher_opt,), pkwargs=kwargs, on_change=on_change) filter_expr = self.get(option, default, str2obj=filter_parser, obj2str=filter_str, on_change=on_change, **kwargs) filter_order = self.get_enum(join_config_locations(option, 'order'), ListOrder, default_order, on_change=on_change, **kwargs) return self.get_plugin(join_config_locations(option, 'plugin'), default_filter, cls=ListFilter, pargs=(filter_expr, matcher_obj, filter_order, negate), on_change=on_change, **kwargs)
def get_matcher(self, option, default=unspecified, default_matcher='StartMatcher', negate=False, filter_parser=None, filter_str=str.__str__, on_change=unspecified, **kwargs): matcher_opt = join_config_locations(option, 'matcher') matcher_obj = self.get_plugin(matcher_opt, default_matcher, cls=Matcher, pargs=(matcher_opt, ), pkwargs=kwargs, on_change=on_change) def _filter_parser(value): return str.join(' ', value.split()) filter_expr = self.get(option, default, str2obj=filter_parser or _filter_parser, obj2str=filter_str, on_change=on_change, **kwargs) return matcher_obj.create_matcher(filter_expr)
def get_command(self, option, default=unspecified, **kwargs): script_type = self.get_enum(join_config_locations(option, 'type'), CommandType, CommandType.executable, **kwargs) if script_type == CommandType.executable: return self.get_path(option, default, **kwargs) return os.path.expandvars(self.get(option, default, **kwargs))
def __init__(self, config, option_prefix, case_override=None, **kwargs): Matcher.__init__(self, config, option_prefix, case_override, **kwargs) self._base_matcher = config.get_plugin( join_config_locations(option_prefix, 'mode'), 'start', cls=Matcher, pargs=(option_prefix, self._case), pkwargs=kwargs, **kwargs)
def get_lookup(self, option, default=unspecified, default_matcher='StartMatcher', single=True, include_default=False, on_change=unspecified, **kwargs): matcher_args = {} if 'on_change' in kwargs: matcher_args['on_change'] = kwargs['on_change'] matcher_opt = join_config_locations(option, 'matcher') matcher_obj = self.get_plugin(matcher_opt, default_matcher, cls=Matcher, pargs=(matcher_opt,), on_change=on_change, **matcher_args) (source_dict, source_order) = self.get_dict(option, default, on_change=on_change, **kwargs) return DictLookup(source_dict, source_order, matcher_obj, single, include_default)
def __init__(self, config, option_prefix, case_override=None, **kwargs): ConfigurablePlugin.__init__(self, config) self._case = case_override if case_override is None: self._case = config.get_bool(join_config_locations(option_prefix, 'case sensitive'), default=True, **kwargs) self._log = logging.getLogger('matcher.%s.%s' % (self.__class__.__name__, option_prefix[0].replace(' ', '_'))) if not self._log.isEnabledFor(logging.DEBUG1): self._log = None
def get_matcher(self, option, default=unspecified, default_matcher='StartMatcher', negate=False, filter_parser=None, filter_str=str.__str__, on_change=unspecified, **kwargs): matcher_opt = join_config_locations(option, 'matcher') matcher_obj = self.get_plugin(matcher_opt, default_matcher, cls=Matcher, pargs=(matcher_opt,), pkwargs=kwargs, on_change=on_change) def _filter_parser(value): return str.join(' ', value.split()) filter_expr = self.get(option, default, str2obj=filter_parser or _filter_parser, obj2str=filter_str, on_change=on_change, **kwargs) return matcher_obj.create_matcher(filter_expr)
def __init__(self, config, option_prefix, case_override=None, **kwargs): ConfigurablePlugin.__init__(self, config) self._case = case_override if case_override is None: self._case = config.get_bool(join_config_locations( option_prefix, 'case sensitive'), default=True, **kwargs) self._log = logging.getLogger( 'matcher.%s.%s' % (self.__class__.__name__, option_prefix[0].replace(' ', '_'))) if not self._log.isEnabledFor(logging.DEBUG1): self._log = None
def is_interactive(self, option, default): option_list_all = self.get_option_list() if isinstance(option, list): user_option_exists = any(imap(option_list_all.__contains__, option)) else: user_option_exists = option in option_list_all # global switch to enable / disable interactive option queries config_interactive = self.change_view(interface_cls=TypedConfigInterface, view_class=SimpleConfigView, set_sections=['interactive']) if self._interactive_enabled is None: self._interactive_enabled = config_interactive.get_bool('default', True, on_change=None) icfg = config_interactive.get_bool(join_config_locations(option, 'interactive'), self._interactive_enabled and default, on_change=None) return icfg and not user_option_exists
def get_filter(self, option, default=unspecified, negate=False, filter_parser=str, filter_str=str.__str__, default_matcher='StartMatcher', default_filter='StrictListFilter', default_order=ListOrder.source, on_change=unspecified, **kwargs): matcher_opt = join_config_locations(option, 'matcher') matcher_obj = self.get_plugin(matcher_opt, default_matcher, cls=Matcher, pargs=(matcher_opt, ), pkwargs=kwargs, on_change=on_change) filter_expr = self.get(option, default, str2obj=filter_parser, obj2str=filter_str, on_change=on_change, **kwargs) filter_order = self.get_enum(join_config_locations(option, 'order'), ListOrder, default_order, on_change=on_change, **kwargs) return self.get_plugin(join_config_locations(option, 'plugin'), default_filter, cls=ListFilter, pargs=(filter_expr, matcher_obj, filter_order, negate), on_change=on_change, **kwargs)
def get_composited_plugin(self, option, default=unspecified, default_compositor=unspecified, option_compositor=None, cls=Plugin, require_plugin=True, pargs=None, pkwargs=None, bind_args=None, bind_kwargs=None, **kwargs): # Return composite class - default classes are also given in string form! cls_list = [] for factory in self._get_plugin_factory_list(option, default, cls, require_plugin, single_plugin=False, desc='composite plugin', bind_args=bind_args, bind_kwargs=bind_kwargs, **kwargs): cls_list.append(factory.create_instance_bound(*(pargs or ()), **(pkwargs or {}))) if len(cls_list) == 1: return cls_list[0] elif not cls_list: # require_plugin == False return None if not option_compositor: option_compositor = join_config_locations(option, 'manager') return self.get_plugin(option_compositor, default_compositor, cls, pargs=tuple([cls_list] + list(pargs or [])), bind_args=bind_args, bind_kwargs=bind_kwargs, **kwargs)
def is_interactive(self, option, default): option_list_all = self.get_option_list() if isinstance(option, list): user_option_exists = any(imap(option_list_all.__contains__, option)) else: user_option_exists = option in option_list_all # global switch to enable / disable interactive option queries config_interactive = self.change_view( interface_cls=TypedConfigInterface, view_class=SimpleConfigView, set_sections=['interactive']) if self._interactive_enabled is None: self._interactive_enabled = config_interactive.get_bool( 'default', True, on_change=None) icfg = config_interactive.get_bool(join_config_locations( option, 'interactive'), self._interactive_enabled and default, on_change=None) return icfg and not user_option_exists
def get_composited_plugin(self, option, default=unspecified, default_compositor=unspecified, option_compositor=None, cls=Plugin, require_plugin=True, pargs=None, pkwargs=None, bind_args=None, bind_kwargs=None, **kwargs): # Return composite class - default classes are also given in string form! cls_list = [] for factory in self._get_plugin_factory_list(option, default, cls, require_plugin, single_plugin=False, desc='composite plugin', bind_args=bind_args, bind_kwargs=bind_kwargs, **kwargs): cls_list.append( factory.create_instance_bound(*(pargs or ()), **(pkwargs or {}))) if len(cls_list) == 1: return cls_list[0] elif not cls_list: # require_plugin == False return None if not option_compositor: option_compositor = join_config_locations(option, 'manager') return self.get_plugin(option_compositor, default_compositor, cls, pargs=tuple([cls_list] + list(pargs or [])), bind_args=bind_args, bind_kwargs=bind_kwargs, **kwargs)
def get_lookup(self, option, default=unspecified, default_matcher='StartMatcher', single=True, include_default=False, on_change=unspecified, **kwargs): matcher_args = {} if 'on_change' in kwargs: matcher_args['on_change'] = kwargs['on_change'] matcher_opt = join_config_locations(option, 'matcher') matcher_obj = self.get_plugin(matcher_opt, default_matcher, cls=Matcher, pargs=(matcher_opt, ), on_change=on_change, **matcher_args) (source_dict, source_order) = self.get_dict(option, default, on_change=on_change, **kwargs) return DictLookup(source_dict, source_order, matcher_obj, single, include_default)
def get_command(self, option, default=unspecified, **kwargs): script_type = self.get_enum(join_config_locations(option, 'type'), CommandType, CommandType.executable, **kwargs) if script_type == CommandType.executable: return self.get_path(option, default, **kwargs) return os.path.expandvars(self.get(option, default, **kwargs))
def __init__(self, config, option_prefix, case_override=None, **kwargs): Matcher.__init__(self, config, option_prefix, case_override, **kwargs) self._base_matcher = config.get_plugin(join_config_locations(option_prefix, 'mode'), 'start', cls=Matcher, pargs=(option_prefix, self._case), pkwargs=kwargs, **kwargs)