code: def get_variable(assignable):
      """
      Return modified variable name.
  
      >>> import gast as ast
      >>> ref = ast.Subscript(
      ...     value=ast.Subscript(
      ...         value=ast.Name('a', ast.Load(), None, None),
      ...         slice=ast.Name('i', ast.Load(), None, None),
      ...         ctx=ast.Load()),
      ...     slice=ast.Name('j', ast.Load(), None, None),
      ...     ctx=ast.Load())
      >>> ast.dump(get_variable(ref))
      "Name(id='a', ctx=Load(), annotation=None, type_comment=None)"
      """
      msg = "Only name and subscript can be assigned."
      assert isinstance(assignable, (ast.Name, ast.Subscript)), msg
      while isinstance(assignable, ast.Subscript) or isattr(assignable):
          if isattr(assignable):
              assignable = assignable.args[0]
          else:
              assignable = assignable.value
      return assignable
  
imports: import gast
  from pythran.tables import MODULES
  from pythran.conversion import mangle, demangle
  from functools import reduce
  from contextlib import contextmanager
label_desc: Use image node_id 10 for calling a global function with example usage: get_variable(assignable) and returns: assignable