class_docstr: Converter to wrap a callable with arbitrary arguments.
  
  This class accepts arbitrary arguments and pass-through to the underlying
  callable, with device argument replaced.
class_docstr_tok: ["Converter","to","wrap","a","callable","with","arbitrary","arguments",".","This","class","accepts","arbitrary","arguments","and","pass-through","to","the","underlying","callable",",","with","device","argument","replaced","."]
code: def __call__(self, *args, **kwargs):
      base_callable = self.base_callable
  
      # Normalize the 'device' argument
      if len(args) >= 2:
          # specified as a positional argument
          args = list(args)
          args[1] = _get_device(args[1])
      elif "device" in kwargs:
          kwargs["device"] = _get_device(kwargs["device"])
      return base_callable(*args, **kwargs)
  
imports: import collections
  import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
label_desc: Use image node_id 2 for calling the _ArbitraryCallableConverter obj's underlying member method code with example usage: obj.__call__() and returns: base_callable