class_docstr: Visit an AST and raise a PythranSyntaxError upon unsupported construct.
  
  Attributes
  ----------
  attributes : {str}
      Possible attributes from Pythonic modules/submodules.
docstr: Check if imported module exists in MODULES. 
docstr_tok: ["Check","if","imported","module","exists","in","MODULES","."]
code: def visit_Import(self, node):
      """Check if imported module exists in MODULES."""
      for alias in node.names:
          current_module = MODULES
          # Recursive check for submodules
          for path in alias.name.split("."):
              if path not in current_module:
                  raise PythranSyntaxError(
                      "Module '{0}' unknown.".format(alias.name), node
                  )
              else:
                  current_module = current_module[path]
  
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 17 for calling the SyntaxChecker obj's underlying member method code with example usage: obj.visit_Import(node) without return types