class_docstr: Represents partial access of user input based on an index (int),
   object attribute or dict key (str).
  
  Examples:
  
      .. code-block:: python
  
          with InputNode() as dag_input:
              a = dag_input[0]
              b = dag_input.x
              ray_dag = add.bind(a, b)
  
          # This makes a = 1 and b = 2
          ray_dag.execute(1, x=2)
  
          with InputNode() as dag_input:
              a = dag_input[0]
              b = dag_input[1]
              ray_dag = add.bind(a, b)
  
          # This makes a = 2 and b = 3
          ray_dag.execute(2, 3)
  
          # Alternatively, you can input a single object
          # and the inputs are automatically indexed from the object:
          # This makes a = 2 and b = 3
          ray_dag.execute([2, 3])
class_docstr_tok: ["Represents","partial","access","of","user","input","based","on","an","index","(","int",")",",","object","attribute","or","dict","key","(","str",")",".","Examples",":","..","code-block",":",":","python","with","InputNode","(",")","as","dag_input",":","a","=","dag_input","[","0","]","b","=","dag_input.x","ray_dag","=","add.bind","(","a",",","b",")","#","This","makes","a","=","1","and","b","=","2","ray_dag.execute","(","1",",","x=2",")","with","InputNode","(",")","as","dag_input",":","a","=","dag_input","[","0","]","b","=","dag_input","[","1","]","ray_dag","=","add.bind","(","a",",","b",")","#","This","makes","a","=","2","and","b","=","3","ray_dag.execute","(","2",",","3",")","#","Alternatively",",","you","can","input","a","single","object","#","and","the","inputs","are","automatically","indexed","from","the","object",":","#","This","makes","a","=","2","and","b","=","3","ray_dag.execute","(","[","2",",","3","]",")"]
docstr: Executor of InputAttributeNode.
  
  Args and kwargs are to match base class signature, but not in the
  implementation. All args and kwargs should be resolved and replaced
  with value in bound_args and bound_kwargs via bottom-up recursion when
  current node is executed.
docstr_tok: ["Executor","of","InputAttributeNode",".","Args","and","kwargs","are","to","match","base","class","signature",",","but","not","in","the","implementation",".","All","args","and","kwargs","should","be","resolved","and","replaced","with","value","in","bound_args","and","bound_kwargs","via","bottom-up","recursion","when","current","node","is","executed","."]
code: def _execute_impl(self, *args, **kwargs):
      """Executor of InputAttributeNode.
  
      Args and kwargs are to match base class signature, but not in the
      implementation. All args and kwargs should be resolved and replaced
      with value in bound_args and bound_kwargs via bottom-up recursion when
      current node is executed.
      """
  
      if isinstance(self._dag_input_node, DAGInputData):
          return self._dag_input_node[self._key]
      else:
          # dag.execute() is called with only one arg, thus when an
          # InputAttributeNode is executed, its dependent InputNode is
          # resolved with original user input python object.
          user_input_python_object = self._dag_input_node
          if isinstance(self._key, str):
              if self._accessor_method == "__getitem__":
                  return user_input_python_object[self._key]
              elif self._accessor_method == "__getattr__":
                  return getattr(user_input_python_object, self._key)
          elif isinstance(self._key, int):
              return user_input_python_object[self._key]
          else:
              raise ValueError(
                  "Please only use int index or str as first-level key to "
                  "access fields of dag input."
              )
  
imports: from typing import Any, Dict, List, Union, Optional
  from ray.dag import DAGNode
  from ray.dag.format_utils import get_dag_node_str
  from ray.experimental.gradio_utils import type_to_string
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 3 for calling the InputAttributeNode obj's underlying member method code with example usage: obj._execute_impl() and returns: self, user_input_python_object, user_input_python_object, getattr