class_docstr: Calculation logic of a graph node.
  
  The constructor is private. Use `Operation.new()` to create operation object.
  
  `Operation` is a naive record.
  Do not "mutate" its attributes or store information relate to specific node.
  All complex logic should be implemented in `Node` class.
  
  Attributes
  ----------
  type
      Operation type name (e.g. Conv2D).
      If it starts with underscore, the "operation" is a special one (e.g. subgraph, input/output).
  parameters
      Arbitrary key-value parameters (e.g. kernel_size).
class_docstr_tok: ["Calculation","logic","of","a","graph","node",".","The","constructor","is","private",".","Use","`","Operation.new","(",")","`","to","create","operation","object",".","`","Operation","`","is","a","naive","record",".","Do","not","``","mutate","''","its","attributes","or","store","information","relate","to","specific","node",".","All","complex","logic","should","be","implemented","in","`","Node","`","class",".","Attributes","--","--","--","--","--","type","Operation","type","name","(","e.g",".","Conv2D",")",".","If","it","starts","with","underscore",",","the","``","operation","''","is","a","special","one","(","e.g",".","subgraph",",","input\/output",")",".","parameters","Arbitrary","key-value","parameters","(","e.g",".","kernel_size",")","."]
code: def __eq__(self, other):
      return (
          type(other) is type(self)
          and other.type == self.type
          and other.parameters == self.parameters
      )
  
imports: from typing import Any, Dict, List, Optional, cast
  from nni.common.framework import get_default_framework
label_desc: Use image node_id 9 for calling the Operation obj's underlying member method code with example usage: obj.__eq__(other) and returns: unknown