class_docstr: Decorator for preprocessing ops, which adds `inkey` and `outkey` arguments.
  
  Note: Only supports single-input single-output ops.
class_docstr_tok: ["Decorator","for","preprocessing","ops",",","which","adds","`","inkey","`","and","`","outkey","`","arguments",".","Note",":","Only","supports","single-input","single-output","ops","."]
code: def __call__(self, orig_get_pp_fn):
      def get_ikok_pp_fn(
          *args,
          key=None,
          inkey=self.indefault,
          outkey=self.outdefault,
          **kw,
      ):
          # Support legacy arg from BatchedPreprocessing
          key = kw.pop("data_key", key)
  
          orig_pp_fn = orig_get_pp_fn(*args, **kw)
  
          def _ikok_pp_fn(data):
              if not self.uses_rngkey:
                  data[key or outkey] = orig_pp_fn(data[key or inkey])
              else:
                  data[key or outkey], data["_rngkey"] = orig_pp_fn(
                      data[key or inkey], data["_rngkey"]
                  )
              return data
  
          return _ikok_pp_fn
  
      return get_ikok_pp_fn
  
file_path: scenic/scenic/dataset_lib/big_transfer/preprocessing/utils.py
imports: from collections import abc
  import functools
  import tensorflow.compat.v1
label_desc: Use image node_id 2 for calling the InKeyOutKey obj's underlying member method code with example usage: obj.__call__(orig_get_pp_fn) and returns: get_ikok_pp_fn, _ikok_pp_fn, data