def _add_style(style_name, style_def): if not isinstance(style_def, dict): log.expected("dict", "styles", style_def) return STYLES[style_name] = { key: style_def.get(key) for key in ["color", "background", "attrs"] }
def parse_timedelta(config): args = {k: int(v) for (k, v) in config.items()} try: delta = datetime.timedelta(**args) except TypeError as e: log.expected("valid arguments", "time delta", args) log.exception(e) return datetime.timedelta() else: return delta
def _set_options_list_words(words): if isinstance(words, str): clean_words = [words] else: clean_words = words if not isinstance(clean_words, list): log.expected("string or list of strings", "list words", words) for w in clean_words: if isinstance(w, str): _list_words.append(f" {w.strip()} ")
def _ensure_valid_entry(cls, entry): num, names = entry num = int(num) if isinstance(names, str): return (num, [names]) elif isinstance(names, list): return (num, names) else: log.expected("string or list of strings", "names by number", names) return None
def set_options(handlers, actions): if not isinstance(actions, list): log.expected("list", "connection handlers", actions) return for entry in actions: if isinstance(entry, dict): handlers.apply_action(entry) else: log.expected( "dictionary", "connection handler", entry )
def _determine_action(self, entry): """Call the action defined by 'action' attribute.""" action = entry.get("action") if not action: log.expected("attribute 'action'", "action", entry) return call = { "register": self.register, "prepend": self.prepend, "append": self.append, "remove": self.remove, }.get(action) return call
def _init_preferences(self): self._preferences = [] values = self._clean_data.get("prefer") or [] if not isinstance(values, list): # wrap a single entry in a list: values = [values] for value in values: if isinstance(value, dict): pref = TimePreference.from_dict(value) elif isinstance(value, str): pref = TimePreference.from_str(value) else: log.expected("string or dictionary", "time preference specification", value) pref = None if pref and pref.is_nontrivial: self._preferences.append(pref)
def to_pair(entries, default=(None, None)): """Converts a list into a pair if it has at most two entries. Otherwise the default pair is returned. >>> to_pair([1]) (1, 1) >>> to_pair([1, 2]) (1, 2) >>> to_pair([1, 2, 3]) (None, None) >>> to_pair([1, 2, 3], (8,9)) (8, 9) """ if len(entries) == 1: # make start point also end point return (entries[0], entries[0]) if len(entries) == 2: return (entries[0], entries[1]) else: log.expected("pair", "", entries) return default
def get_action_class(data): action_name = data.get("action") if not action_name: log.expected("action name", "attribute 'action'", data) return _action_classes.get(action_name)
def set_options(actions): if not isinstance(actions, list): log.expected("list", "actions", actions) else: for data in actions: try_to_add_action(data)
def set_options(config): """Set options for module `connect`.""" if isinstance(config, dict): connect_handlers.set_options(handlers, config.get("handlers") or []) else: log.expected("dictionary", "connect", config)
def _add_style(style_name, style_def): if not isinstance(style_def, dict): log.expected("dict", "styles", style_def) return STYLES[style_name] = {key: style_def.get(key) for key in ATTRIBUTES}
def set_options(config): if not isinstance(config, dict): log.expected("dict", "cli", config) else: for k, v in config.items(): _add_style(k, v)