class_docstr: The definition of an operation.
  
  This class contains all the information needed to run an operation, except
  the number of inputs and their values.  A subclass should document
  
    - How many inputs it expects, and what they should contain.
    - What it outputs, as a function of its inputs.
  
  An OperationDef is just a specification and does not contain the actual
  computation.
docstr: A CacheCoder object used to cache outputs returned by this operation.
  
  If this doesn't return None, then:
    * num_outputs has to be 1
    * is_partitionable has to be True.
docstr_tok: ["A","CacheCoder","object","used","to","cache","outputs","returned","by","this","operation",".","If","this","does","n't","return","None",",","then",":","*","num_outputs","has","to","be","1","*","is_partitionable","has","to","be","True","."]
code: def cache_coder(self) -> Optional[object]:
      """A CacheCoder object used to cache outputs returned by this operation.
  
      If this doesn't return None, then:
        * num_outputs has to be 1
        * is_partitionable has to be True.
      """
      return None
  
imports: import abc
  import collections
  import dataclasses
  from typing import Any, Collection, Dict, List, Optional, Tuple
  import pydot
label_desc: Use image node_id 5 for calling the OperationDef obj's underlying member method code with example usage: obj.cache_coder() and returns: None