class_docstr: Visit an AST and raise a PythranSyntaxError upon unsupported construct.
  
  Attributes
  ----------
  attributes : {str}
      Possible attributes from Pythonic modules/submodules.
docstr: Gather attributes from MODULES content. 
docstr_tok: ["Gather","attributes","from","MODULES","content","."]
code: def __init__(self):
      """Gather attributes from MODULES content."""
      self.attributes = set()
  
      def save_attribute(module):
          """Recursively save Pythonic keywords as possible attributes."""
          self.attributes.update(module.keys())
          for signature in module.values():
              if isinstance(signature, dict):
                  save_attribute(signature)
              elif isinstance(signature, Class):
                  save_attribute(signature.fields)
  
      for module in MODULES.values():
          save_attribute(module)
  
imports: from pythran.tables import MODULES
  from pythran.intrinsic import Class
  from pythran.typing import Tuple, List, Set, Dict
  from pythran.utils import isstr
  from pythran import metadata
  import beniget
  import gast
  import logging
  import numpy
label_desc: Use image node_id 1 to create a new SyntaxChecker object from inherited base classes: ast with example: obj = SyntaxChecker()