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","."]
docstr: Constructs Signature from the given list of Parameter
  objects and 'return_annotation'.  All arguments are optional.
code: def __init__(
      self,
      parameters=None,
      return_annotation=_empty,
      __validate_parameters__=True,
  ):
      """Constructs Signature from the given list of Parameter
      objects and 'return_annotation'.  All arguments are optional.
      """
  
      if parameters is None:
          params = OrderedDict()
      else:
          if __validate_parameters__:
              params = OrderedDict()
              top_kind = _POSITIONAL_ONLY
  
              for idx, param in enumerate(parameters):
                  kind = param.kind
                  if kind < top_kind:
                      msg = "wrong parameter order: {0} before {1}"
                      msg = msg.format(top_kind, param.kind)
                      raise ValueError(msg)
                  else:
                      top_kind = kind
  
                  name = param.name
                  if name is None:
                      name = str(idx)
                      param = param.replace(name=name)
  
                  if name in params:
                      msg = "duplicate parameter name: {0!r}".format(
                          name
                      )
                      raise ValueError(msg)
                  params[name] = param
          else:
              params = OrderedDict(
                  ((param.name, param) for param in parameters)
              )
  
      self._parameters = params
      self._return_annotation = return_annotation
  
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 1 to create a new Signature object from inherited base classes: object with example: obj = Signature(parameters, return_annotation, __validate_parameters__)