class_docstr: The vistor class to determine the declaration, r/w status, and last use of each variable
class_docstr_tok: ["The","vistor","class","to","determine","the","declaration",",","r\/w","status",",","and","last","use","of","each","variable"]
code: def visit_Name(self, node):
      # If it is True or False, we do not worry about it!
      if sys.version_info[0] == 2 and node.id in ["True", "False"]:
          return
      # If it is from the argument list or loop variable, we do not worry about it!
      if node.id in self._args.keys():
          return
      fors = [
          loop.target.id
          for loop in self.scope_level
          if isinstance(loop, ast.For)
      ]
      if node.id in fors:
          return
      # The loop variable cannot be overwritten when iteration
      _internal_assert(
          not isinstance(node.ctx, ast.Store) or node.id not in fors,
          "Iter var cannot be overwritten",
      )
  
      if node.id not in self.status.keys():
          # It is a captured value in closure
          if node.id in self.closure_vars:
              try:
                  ast.literal_eval(str(self.closure_vars[node.id]))
              except ValueError:
                  raise ValueError(
                      "Only support capturing constant values in closure"
                  )
              return
  
          _internal_assert(
              isinstance(node.ctx, ast.Store),
              f"Undeclared variable {node.id}",
          )
          if self.aug_assign_:
              raise ValueError('"First store" cannot be an AugAssign')
          self.status[node.id] = (node, self.scope_level[-1], set())
      else:
          decl, loop, usage = self.status[node.id]
          usage.add(type(node.ctx))
          _internal_assert(
              loop in self.scope_level,
              f"{node.id} is used out of the scope it is defined!",
          )
          self.status[node.id] = (decl, loop, usage)
  
file_path: tvm/python/tvm/te/hybrid/preprocessor.py
imports: import ast
  import sys
  from .runtime import HYBRID_GLOBALS
  from .utils import _internal_assert
label_desc: Use image node_id 6 for calling the PyVariableUsage obj's underlying member method code with example usage: obj.visit_Name(node) without return types