class_docstr: Result of spec parsing.
  
  ``functions'' is a mapping from function name to a tuple of signatures
  ``capsule'' is a mapping from function name to signature
class_docstr_tok: ["Result","of","spec","parsing",".","``","functions","''","is","a","mapping","from","function","name","to","a","tuple","of","signatures","``","capsule","''","is","a","mapping","from","function","name","to","signature"]
code: def __init__(self, functions, capsules=None):
      self.functions = dict(functions)
      self.capsules = capsules or dict()
  
      # normalize function signatures
      for fname, signatures in functions.items():
          if not isinstance(signatures, tuple):
              self.functions[fname] = (signatures,)
  
      if not self:
          from pythran.log import logger
  
          logger.warning(
              "No pythran specification, " "nothing will be exported"
          )
  
imports: from pythran.types.conversion import pytype_to_pretty_type
  from collections import defaultdict
  from itertools import product
  import re
  import ply.lex
  import ply.yacc
  from pythran.typing import List, Set, Dict, NDArray, Tuple, Pointer, Fun
  from pythran.syntax import PythranSyntaxError
  from pythran.config import cfg
label_desc: Use image node_id 1 to create a new Spec object from inherited base classes: object with example: obj = Spec(functions, capsules)