Ejemplo n.º 1
0
    def decorator(func):
        _api_name = func.__name__ if api_name is None else api_name
        validate_inference_api_name(_api_name)

        if input is None:
            # Raise error when input adapter class passed without instantiation
            if not args or not (inspect.isclass(args[0])
                                and issubclass(args[0], BaseInputAdapter)):
                raise InvalidArgument(
                    "BentoService @api decorator first parameter must "
                    "be an instance of a class derived from "
                    "bentoml.adapters.BaseInputAdapter ")

            # noinspection PyPep8Naming
            InputAdapter = args[0]
            input_adapter = InputAdapter(*args[1:], **kwargs)
            output_adapter = DefaultOutput()
        else:
            assert isinstance(input, BaseInputAdapter), (
                "API input parameter must be an instance of a class derived from "
                "bentoml.adapters.BaseInputAdapter")
            input_adapter = input
            output_adapter = output or DefaultOutput()

        setattr(func, "_is_api", True)
        setattr(func, "_input_adapter", input_adapter)
        setattr(func, "_output_adapter", output_adapter)
        setattr(func, "_api_name", _api_name)
        setattr(func, "_api_doc", api_doc)
        setattr(func, "_mb_max_batch_size", mb_max_batch_size)
        setattr(func, "_mb_max_latency", mb_max_latency)
        setattr(func, "_batch", batch)

        return func
Ejemplo n.º 2
0
 def _make_api(input_adapter, user_func):
     return InferenceAPI(
         None,
         "test_api",
         "",
         input_adapter=input_adapter,
         user_func=user_func,
         output_adapter=DefaultOutput(),
     )
Ejemplo n.º 3
0
 def _make_api(input_adapter, user_func):
     if not input_adapter.BATCH_MODE_SUPPORTED and batch_mode:
         pytest.skip()
     if not input_adapter.SINGLE_MODE_SUPPORTED and not batch_mode:
         pytest.skip()
     return InferenceAPI(
         None,
         "test_api",
         "",
         input_adapter=input_adapter,
         user_func=user_func,
         output_adapter=DefaultOutput(),
         batch=batch_mode,
     )
Ejemplo n.º 4
0
 def _make_api(input_adapter, user_func, output_adapter=None, **kwargs):
     if not input_adapter.BATCH_MODE_SUPPORTED and batch_mode:
         pytest.skip()
     if not input_adapter.SINGLE_MODE_SUPPORTED and not batch_mode:
         pytest.skip()
     if output_adapter is None:
         output_adapter = DefaultOutput()
     return InferenceAPI(
         service_mock,
         "test_api",
         "",
         input_adapter=input_adapter,
         user_func=user_func,
         output_adapter=output_adapter,
         batch=batch_mode,
         **kwargs,
     )