diff options
Diffstat (limited to 'gallery_dl/config.py')
| -rw-r--r-- | gallery_dl/config.py | 79 |
1 files changed, 37 insertions, 42 deletions
diff --git a/gallery_dl/config.py b/gallery_dl/config.py index da52f1e..785ffc3 100644 --- a/gallery_dl/config.py +++ b/gallery_dl/config.py @@ -57,7 +57,7 @@ def load(files=None, strict=False, fmt="json"): confdict = parsefunc(file) except OSError as exc: if strict: - log.error("%s", exc) + log.error(exc) sys.exit(1) except Exception as exc: log.warning("Could not parse '%s': %s", path, exc) @@ -75,62 +75,57 @@ def clear(): _config.clear() -def get(keys, default=None, conf=_config): +def get(path, key, default=None, *, conf=_config): """Get the value of property 'key' or a default value""" try: - for k in keys: - conf = conf[k] - return conf - except (KeyError, AttributeError): + for p in path: + conf = conf[p] + return conf[key] + except Exception: return default -def interpolate(keys, default=None, conf=_config): +def interpolate(path, key, default=None, *, conf=_config): """Interpolate the value of 'key'""" + if key in conf: + return conf[key] try: - lkey = keys[-1] - if lkey in conf: - return conf[lkey] - for k in keys: - if lkey in conf: - default = conf[lkey] - conf = conf[k] - return conf - except (KeyError, AttributeError): - return default + for p in path: + conf = conf[p] + if key in conf: + default = conf[key] + except Exception: + pass + return default -def set(keys, value, conf=_config): +def set(path, key, value, *, conf=_config): """Set the value of property 'key' for this session""" - for k in keys[:-1]: + for p in path: try: - conf = conf[k] + conf = conf[p] except KeyError: - temp = {} - conf[k] = temp - conf = temp - conf[keys[-1]] = value + conf[p] = conf = {} + conf[key] = value -def setdefault(keys, value, conf=_config): +def setdefault(path, key, value, *, conf=_config): """Set the value of property 'key' if it doesn't exist""" - for k in keys[:-1]: + for p in path: try: - conf = conf[k] + conf = conf[p] except KeyError: - temp = {} - conf[k] = temp - conf = temp - return conf.setdefault(keys[-1], value) + conf[p] = conf = {} + return conf.setdefault(key, value) -def unset(keys, conf=_config): +def unset(path, key, *, conf=_config): """Unset the value of property 'key'""" try: - for k in keys[:-1]: - conf = conf[k] - del conf[keys[-1]] - except (KeyError, AttributeError): + for p in path: + conf = conf[p] + del conf[key] + except Exception: pass @@ -143,13 +138,13 @@ class apply(): self.kvlist = kvlist def __enter__(self): - for key, value in self.kvlist: - self.original.append((key, get(key, self._sentinel))) - set(key, value) + for path, key, value in self.kvlist: + self.original.append((path, key, get(path, key, self._sentinel))) + set(path, key, value) def __exit__(self, etype, value, traceback): - for key, value in self.original: + for path, key, value in self.original: if value is self._sentinel: - unset(key) + unset(path, key) else: - set(key, value) + set(path, key, value) |
