code: def cached_property(fn, *args, **kwargs):
      """
      Decorator to make a function a "cached property".
  
      This means that it is a property whose return value is cached after the
      first time it is called.
  
      Args:
          fn: The function to be made a cached property
          *args: Any args for the function
          **kwargs: Any kwargs for the function
  
      Returns:
          function
      """
      return property(functools.lru_cache()(fn, *args, **kwargs))
  
imports: import contextlib
  import copy
  import functools
  from collections import defaultdict
  from typing import Union, Callable
  from google.protobuf.any_pb2 import Any
  from tensorflow.core.framework.graph_pb2 import GraphDef
  from tensorflow.core.framework.variable_pb2 import VariableDef
  from tensorflow.core.protobuf.saver_pb2 import SaverDef
  from tensorflow.python.framework import ops
  from tensorflow.python.framework.importer import import_graph_def
  from tensorflow.python.ops.resource_variable_ops import _from_proto_fn
  from tensorflow.python.ops.variables import Variable
  from autodist.const import COLOCATION_PREFIX
  from autodist.kernel.common import op_info
  from autodist.kernel.common.utils import parse_name_scope, get_op_name
  from autodist.proto import graphitem_pb2
  from autodist.utils import logging
label_desc: Use image node_id 1 for calling a global function with example usage: cached_property(fn) and returns: property