Пример #1
0
    def _add_metas(self, _metas: Optional[Dict]):
        from jina.serve.executors.metas import get_default_metas

        tmp = get_default_metas()

        if _metas:
            tmp.update(_metas)

        unresolved_attr = False
        target = SimpleNamespace()
        # set self values filtered by those non-exist, and non-expandable
        for k, v in tmp.items():
            if k == 'workspace' and not (v is None or v == ''):
                warnings.warn(
                    'Setting `workspace` via `metas.workspace` is deprecated. '
                    'Instead, use `f.add(..., workspace=...)` when defining a a Flow in Python; '
                    'the `workspace` parameter when defining a Flow using YAML; '
                    'or `--workspace` when starting an Executor using the CLI.',
                    category=DeprecationWarning,
                )
            if not hasattr(target, k):
                if isinstance(v, str):
                    if not env_var_regex.findall(v):
                        setattr(target, k, v)
                    else:
                        unresolved_attr = True
                else:
                    setattr(target, k, v)
            elif type(getattr(target, k)) == type(v):
                setattr(target, k, v)

        if unresolved_attr:
            _tmp = vars(self)
            _tmp['metas'] = tmp
            new_metas = JAML.expand_dict(_tmp)['metas']

            for k, v in new_metas.items():
                if not hasattr(target, k):
                    if isinstance(v, str):
                        if not (env_var_regex.findall(v)
                                or internal_var_regex.findall(v)):
                            setattr(target, k, v)
                        else:
                            raise ValueError(
                                f'{k}={v} is not substitutable or badly referred'
                            )
                    else:
                        setattr(target, k, v)
        # `name` is important as it serves as an identifier of the executor
        # if not given, then set a name by the rule
        if not getattr(target, 'name', None):
            setattr(target, 'name', self.__class__.__name__)

        self.metas = target
Пример #2
0
Файл: v1.py Проект: srbhr/jina
 def parse(self, cls: Type['JAMLCompatible'],
           data: Dict) -> 'JAMLCompatible':
     """
     :param cls: target class type to parse into, must be a :class:`JAMLCompatible` type
     :param data: flow yaml file loaded as python dict
     :return: the YAML parser given the syntax version number
     """
     expanded_data = JAML.expand_dict(data, None)
     if 'with' in data:
         obj = cls(**expanded_data.get('with', {}))
     else:
         obj = cls(**expanded_data)
     return obj
Пример #3
0
    def _add_metas(self, _metas: Optional[Dict]):
        from jina.serve.executors.metas import get_default_metas

        tmp = get_default_metas()

        if _metas:
            tmp.update(_metas)

        unresolved_attr = False
        target = SimpleNamespace()
        # set self values filtered by those non-exist, and non-expandable
        for k, v in tmp.items():
            if not hasattr(target, k):
                if isinstance(v, str):
                    if not env_var_regex.findall(v):
                        setattr(target, k, v)
                    else:
                        unresolved_attr = True
                else:
                    setattr(target, k, v)
            elif type(getattr(target, k)) == type(v):
                setattr(target, k, v)

        if unresolved_attr:
            _tmp = vars(self)
            _tmp['metas'] = tmp
            new_metas = JAML.expand_dict(_tmp)['metas']

            for k, v in new_metas.items():
                if not hasattr(target, k):
                    if isinstance(v, str):
                        if not (
                            env_var_regex.findall(v) or internal_var_regex.findall(v)
                        ):
                            setattr(target, k, v)
                        else:
                            raise ValueError(
                                f'{k}={v} is not substitutable or badly referred'
                            )
                    else:
                        setattr(target, k, v)
        # `name` is important as it serves as an identifier of the executor
        # if not given, then set a name by the rule
        if not getattr(target, 'name', None):
            setattr(target, 'name', self.__class__.__name__)

        self.metas = target
Пример #4
0
Файл: v1.py Проект: jina-ai/jina
 def parse(
     self,
     cls: Type['JAMLCompatible'],
     data: Dict,
     runtime_args: Optional[Dict[str, Any]] = None,
 ) -> 'JAMLCompatible':
     """
     :param cls: target class type to parse into, must be a :class:`JAMLCompatible` type
     :param data: flow yaml file loaded as python dict
     :param runtime_args: Optional runtime_args to be directly passed without being parsed into a yaml config
     :return: the YAML parser given the syntax version number
     """
     expanded_data = JAML.expand_dict(data, None)
     if 'with' in data:
         obj = cls(**expanded_data.get('with', {}))
     else:
         obj = cls(**expanded_data)
     return obj