Exemplo n.º 1
0
 def check(self):
     """ Verify options exists
     """
     for opt in self.spec_options:
         try:
             # Support new option format
             key = opt["key"]
             is_required = opt.get("required", False)
             deep_get(self.spec, key)
         except (KeyError, TypeError):
             if is_required:
                 raise SpecConfigException(f"A required {key} not found, stopping.")
Exemplo n.º 2
0
 def get_compose_version(self):
     compose_version = deep_get(self.docker, 'compose.version')
     if compose_version:
         if float(compose_version) < deep_get(
                 self.defaults, 'docker-compose.version.minimum'):
             raise Exception(
                 f"devdock requires at least version "
                 f"{deep_get(self.defaults, 'docker-compose.version.minimum')} "
                 f"for docker-compose format")
     else:
         compose_version = str(
             deep_get(self.defaults, 'docker-compose.version.auto'))
     return compose_version
Exemplo n.º 3
0
def expand_employee(target, paths):
    """
    get the values given a path from the target, likely to be an integer key.
    lookup the "foreign" keys from in-memory db
    set the values given a path to the target.
    :param target: employee
    :param paths: dot noted keys
    :return: enritched employee
    """
    # resolve the path for each recursive key path
    obj = target.copy()
    for key_path in paths:
        _id = dict_deep.deep_get(obj, key_path)
        if type(_id) is dict:
            _id = _id['id']

        # skip also null "foreign keys"
        if not _id:
            continue

        # root key comes first
        db_key = key_path.split(".")[-1]

        try:
            record = db[db_key][_id].copy()
        except KeyError:
            raise KeyError(f"Could not resolve path for '{key_path}'")
        except Exception:
            raise

        dict_deep.deep_set(obj, key_path, record)
    return obj
Exemplo n.º 4
0
 def get_plugin_option(self, key):
     """ Return option defined within a spec plugin
     """
     try:
         val = deep_get(self.spec, key)
         return self._convert_to_env(val)
     except (KeyError, TypeError):
         app.log.debug(f"Option {key} - unavailable, skipping")
         return None
Exemplo n.º 5
0
    def extract_from_tags(self, metadata) -> Dict[str, Any]:
        tags = {
            "authors": ["author"],
            "description": ["description"],
            "type": ["og.type"],
            "url": ["og.url"],
            "site": ["og.site_name"],
            "site_twitter": ["twitter.site"],
        }
        result = {}
        for key, locations in tags.items():
            for loc in locations:
                x = deep_get(metadata, loc)
                if x is not None:
                    result[key] = x
                    break

        if "authors" in result and type(result["authors"]) is not list:
            result["authors"] = [result["authors"]]

        return result
Exemplo n.º 6
0
 def try_get(self, prop, default):
     if '.' in prop:
         value = deep_get(self._data, prop)
         return value if value else default
     else:
         return self._data[prop] if prop in self._data else default
Exemplo n.º 7
0
def get_config(prop_path, default_value=None):
    v = deep_get(cfg, prop_path)

    if v is None:
        return default_value
    return v