code: def check(self, check_all=False, do_reload=True):
          
  
          if not self.enabled and not check_all:
              return
  
          if check_all or self.check_all:
              modules = list(sys.modules.keys())
          else:
              modules = list(self.modules.keys())
  
          for modname in modules:
  
              m = sys.modules.get(modname, None)
              if modname in self.skip_modules:
                  continue
  
              py_filename, pymtime = self.filename_and_mtime(m)
              if py_filename is None:
                  continue
  
              try:
                  if pymtime <= self.modules_mtimes[modname]:
                      continue
              except KeyError:
                  self.modules_mtimes[modname] = pymtime
                  continue
              else:
                  if self.failed.get(py_filename, None) == pymtime:
                      continue
  
              self.modules_mtimes[modname] = pymtime
  
              # If we've reached this point, we should try to reload the module
              if do_reload:
                  try:
                      if self.debug:
                          print("Reloading {}".format(m))
                      superreload(m, reload, self.old_objects)
                      if py_filename in self.failed:
                          del self.failed[py_filename]
                  except:
                      print("[autoreload of %s failed: %s]" % (
                          modname, traceback.format_exc(10)))
                      self.failed[py_filename] = pymtime
docs: Check whether some modules need to be reloaded.