code: def _var_changes(self):
                 
          result = []
          variables = self.shell.run_line_magic("who_ls", "")
          if variables is None:
              return result
  
          import inspect
          for varname in variables:
              varobj = self.shell.user_ns.get(varname, None)
              if varobj is None:
                  continue
  
              #We need to make sure that the objects have types that make
              #sense. We auto-decorate all classes and functions; also modules and
              #other programming constructs are not variables.
              keep = False
              for ifunc in inspectors:
                  if getattr(inspect, ifunc)(varobj):
                      break
              else:
                  keep = True    
  
              if keep:
                  whoid = id(varobj)
                  if varname not in self.who or self.who[varname] != whoid:
                      result.append((varname, varobj))
                      self.who[varname] = whoid
          return result
docs: Determines the list of variables whose values have changed since the
          last cell execution.