class_docstr: deprecated: bentoml now requires signatures before saving a tf model
  reserve for now because tensorflow v1 has not been adopted yet
code: def __init__(
      self,
      origin_func: t.Callable[..., t.Any],
      arg_names: t.Optional[t.List[str]] = None,
      arg_specs: t.Optional[t.Tuple["tf_ext.TensorSpec"]] = None,
      kwarg_specs: t.Optional[t.Dict[str, "tf_ext.TensorSpec"]] = None,
  ) -> None:
      self.origin_func = origin_func
      self.arg_names = arg_names
      self.arg_specs = arg_specs
      self.kwarg_specs = {
          k: v for k, v in zip(arg_names or [], arg_specs or [])
      }
      self.kwarg_specs.update(kwarg_specs or {})
  
imports: from __future__ import annotations
  import importlib.metadata
  import importlib.util
  import logging
  import typing
  from typing import TYPE_CHECKING
  from bentoml.exceptions import BentoMLException
  from ...types import LazyType
  from ...utils.lazy_loader import LazyLoader
label_desc: Use image node_id 1 to create a new tf_function_wrapper object  with example: obj = tf_function_wrapper(origin_func, arg_names, arg_specs, kwarg_specs)