Source code for dtale.predefined_filters

import inspect

from six import PY3

PREDEFINED_FILTERS = []


[docs]class PredefinedFilter(object): def __init__( self, name=None, description=None, handler=None, column=None, input_type=None, default=None, active=True, ): assert name is not None assert column is not None assert handler is not None and callable(handler) if PY3: assert len(inspect.signature(handler).parameters) == 2 else: assert len(inspect.getargspec(handler).args) == 2 assert input_type is not None assert input_type in ["input", "select", "multiselect"] self.name = name self.description = description self.handler = handler self.column = column self.input_type = input_type self.default = default self.active = active
[docs] def asdict(self): return { "name": self.name, "description": self.description, "column": self.column, "inputType": self.input_type, "default": self.default, "active": self.active, }
[docs]def get_filters(): global PREDEFINED_FILTERS return PREDEFINED_FILTERS
[docs]def set_filters(filters): global PREDEFINED_FILTERS PREDEFINED_FILTERS = [PredefinedFilter(**filter_spec) for filter_spec in filters]
[docs]def add_filters(filters): global PREDEFINED_FILTERS valid_filters = [] for filter_spec in filters: new_filter = PredefinedFilter(**filter_spec) if next( ( curr_filter for curr_filter in PREDEFINED_FILTERS if curr_filter.name == new_filter.name ), None, ): raise ValueError( "A predefined_filters filter already exists for {}".format( new_filter.name ) ) valid_filters.append(new_filter) PREDEFINED_FILTERS += valid_filters
[docs]def init_filters(): global PREDEFINED_FILTERS return { f.name: dict(value=f.default, active=f.active) if f.default is not None else dict(active=f.active) for f in PREDEFINED_FILTERS }