class_docstr: Visit an AST and raise a PythranSyntaxError upon unsupported construct.
  
  Attributes
  ----------
  attributes : {str}
      Possible attributes from Pythonic modules/submodules.
docstr: Check validity of imported functions.
  
  Check:
      - no level specific value are provided.
      - a module is provided
      - module/submodule exists in MODULES
      - imported function exists in the given module/submodule
docstr_tok: ["Check","validity","of","imported","functions",".","Check",":","-","no","level","specific","value","are","provided",".","-","a","module","is","provided","-","module\/submodule","exists","in","MODULES","-","imported","function","exists","in","the","given","module\/submodule"]
code: def visit_ImportFrom(self, node):
      """
      Check validity of imported functions.
  
      Check:
          - no level specific value are provided.
          - a module is provided
          - module/submodule exists in MODULES
          - imported function exists in the given module/submodule
      """
      if node.level:
          raise PythranSyntaxError(
              "Relative import not supported", node
          )
      if not node.module:
          raise PythranSyntaxError("import from without module", node)
      module = node.module
      current_module = MODULES
      # Check if module exists
      for path in module.split("."):
          if path not in current_module:
              raise PythranSyntaxError(
                  "Module '{0}' unknown.".format(module), node
              )
          else:
              current_module = current_module[path]
  
      # Check if imported functions exist
      for alias in node.names:
          if alias.name == "*":
              continue
          elif alias.name not in current_module:
              raise PythranSyntaxError(
                  "identifier '{0}' not found in module '{1}'".format(
                      alias.name, module
                  ),
                  node,
              )
  
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 18 for calling the SyntaxChecker obj's underlying member method code with example usage: obj.visit_ImportFrom(node) without return types