code: def store_init_kwargs(
      func: typing.Callable, taboo: Optional[typing.Set] = None
  ) -> typing.Callable:
      """Mark the args and kwargs of :func:`__init__` later to be stored via :func:`save_config` in YAML
      :param func: the function to decorate
      :param taboo: class taboo set of parameters
      :return: the wrapped function
      """
      taboo = taboo or {}
  
      @functools.wraps(func)
      def arg_wrapper(self, *args, **kwargs):
          if func.__name__ != "__init__":
              raise TypeError(
                  "this decorator should only be used on __init__ method"
              )
          all_pars = inspect.signature(func).parameters
          tmp = {
              k: v.default
              for k, v in all_pars.items()
              if k not in taboo
          }
          tmp_list = [k for k in all_pars.keys() if k not in taboo]
          # set args by aligning tmp_list with arg values
          for k, v in zip(tmp_list, args):
              tmp[k] = v
          # set kwargs
          for k, v in kwargs.items():
              if k in tmp:
                  tmp[k] = v
          if hasattr(self, "_init_kwargs_dict"):
              self._init_kwargs_dict.update(tmp)
          else:
              self._init_kwargs_dict = tmp
          convert_tuple_to_list(self._init_kwargs_dict)
          f = func(self, *args, **kwargs)
          return f
  
      return arg_wrapper
  
file_path: jina/jina/serve/helper.py
imports: import functools
  import inspect
  import os
  import typing
  from typing import Any, Dict, List, Optional, Tuple, Union
  import grpc
  from jina.helper import convert_tuple_to_list
  from contextlib import nullcontext
label_desc: Use image node_id 3 for calling a global function with example usage: store_init_kwargs(func, taboo) and returns: arg_wrapper, f