Пример #1
0
	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))
Пример #4
0
 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)
Пример #5
0
	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)
Пример #6
0
	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
Пример #7
0
	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)
Пример #8
0
 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
Пример #9
0
	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
Пример #10
0
 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)
Пример #11
0
	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)
Пример #12
0
 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
Пример #13
0
 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)
Пример #14
0
 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)
Пример #15
0
	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))
Пример #16
0
	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)