class_docstr: A Signature object represents the overall signature of a function.
  It stores a Parameter object for each parameter accepted by the
  function, as well as information specific to the function itself.
  
  A Signature object has the following public attributes:
  
  parameters : :class:`collections.OrderedDict`
    An ordered mapping of parameters' names to the corresponding
    Parameter objects (keyword-only arguments are in the same order
    as listed in `code.co_varnames`).
  return_annotation
    The annotation for the return type of the function if specified.
    If the function has no annotation for its return type, this
    attribute is not set.
class_docstr_tok: ["A","Signature","object","represents","the","overall","signature","of","a","function",".","It","stores","a","Parameter","object","for","each","parameter","accepted","by","the","function",",","as","well","as","information","specific","to","the","function","itself",".","A","Signature","object","has","the","following","public","attributes",":","parameters",":",":","class",":","`","collections.OrderedDict","`","An","ordered","mapping","of","parameters","'","names","to","the","corresponding","Parameter","objects","(","keyword-only","arguments","are","in","the","same","order","as","listed","in","`","code.co_varnames","`",")",".","return_annotation","The","annotation","for","the","return","type","of","the","function","if","specified",".","If","the","function","has","no","annotation","for","its","return","type",",","this","attribute","is","not","set","."]
code: def __eq__(self, other):
      if (
          not issubclass(type(other), Signature)
          or self.return_annotation != other.return_annotation
          or len(self.parameters) != len(other.parameters)
      ):
          return False
  
      other_positions = dict(
          (param, idx)
          for idx, param in enumerate(other.parameters.keys())
      )
  
      for idx, (param_name, param) in enumerate(
          self.parameters.items()
      ):
          if param.kind == _KEYWORD_ONLY:
              try:
                  other_param = other.parameters[param_name]
              except KeyError:
                  return False
              else:
                  if param != other_param:
                      return False
          else:
              try:
                  other_idx = other_positions[param_name]
              except KeyError:
                  return False
              else:
                  if (
                      idx != other_idx
                      or param != other.parameters[param_name]
                  ):
                      return False
  
      return True
  
imports: from __future__ import absolute_import, division, print_function
  import itertools
  import functools
  import re
  import types
  import inspect
  from collections import OrderedDict
label_desc: Use image node_id 7 for calling the Signature obj's underlying member method code with example usage: obj.__eq__(other) and returns: True, False, False, False, False, False