class_docstr: A specification for a component executor.
  
  An instance of ExecutorSpec describes the implementation of a component.
class_docstr_tok: ["A","specification","for","a","component","executor",".","An","instance","of","ExecutorSpec","describes","the","implementation","of","a","component","."]
docstr: Makes a copy of the ExecutorSpec.
  
  An abstract method to implement to make a copy of the ExecutorSpec instance.
  Deepcopy is preferred in the implementation. But if for any reason a
  deepcopy is not able to be made because of some fields are not deepcopyable,
  it is OK to make a shallow copy as long as the subfield is consider
  globally immutable.
  
  Returns:
    A copy of ExecutorSpec.
docstr_tok: ["Makes","a","copy","of","the","ExecutorSpec",".","An","abstract","method","to","implement","to","make","a","copy","of","the","ExecutorSpec","instance",".","Deepcopy","is","preferred","in","the","implementation",".","But","if","for","any","reason","a","deepcopy","is","not","able","to","be","made","because","of","some","fields","are","not","deepcopyable",",","it","is","OK","to","make","a","shallow","copy","as","long","as","the","subfield","is","consider","globally","immutable",".","Returns",":","A","copy","of","ExecutorSpec","."]
code: def copy(self) -> "ExecutorSpec":
      """Makes a copy of the ExecutorSpec.
  
      An abstract method to implement to make a copy of the ExecutorSpec instance.
      Deepcopy is preferred in the implementation. But if for any reason a
      deepcopy is not able to be made because of some fields are not deepcopyable,
      it is OK to make a shallow copy as long as the subfield is consider
      globally immutable.
  
      Returns:
        A copy of ExecutorSpec.
  
      """
      return cast("ExecutorSpec", copy.deepcopy(self))
  
imports: import copy
  from typing import cast, Iterable, List, Optional, Type, Union
  from tfx import types
  from tfx.dsl.components.base import base_executor
  from tfx.dsl.placeholder import placeholder
  from tfx.proto.orchestration import executable_spec_pb2
  from tfx.proto.orchestration import placeholder_pb2
  from tfx.utils import import_utils
  from tfx.utils import json_utils
  from tfx.utils import name_utils
  from google.protobuf import message
label_desc: Use image node_id 2 for calling the ExecutorSpec obj's underlying member method code with example usage: obj.copy() and returns: cast