Esempio n. 1
0
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"]
    }
Esempio n. 2
0
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
Esempio n. 3
0
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()} ")
Esempio n. 4
0
 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
Esempio n. 5
0
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
            )
Esempio n. 6
0
    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
Esempio n. 7
0
 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)
Esempio n. 8
0
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
Esempio n. 9
0
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)
Esempio n. 10
0
def set_options(actions):
    if not isinstance(actions, list):
        log.expected("list", "actions", actions)
    else:
        for data in actions:
            try_to_add_action(data)
Esempio n. 11
0
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)
Esempio n. 12
0
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}
Esempio n. 13
0
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)