code: def _check_parse_modtime(self, filepath, fname):
                 
          #We also want to perform a reparse if the XML documentation file for the
          #module changed, since the docs are also cached.
          file_mtime = self._get_mod_mtime(filepath)
          
          #If we have parsed this file and have its modules in memory, its
          #filepath will be in self._parsed. Otherwise we can load it from
          #file or from a cached pickle version.
          if filepath.lower() in self._parsed: 
              #Get the name of the first module in that file from the modulefiles
              #list. Find out when it was last modified.
              module_mtime = None
              if fname in self._modulefiles:
                  if len(self._modulefiles[fname]) == 0:
                      msg.warn("Module file {} has no modules defined inside of it!".format(fname))
                      return None
                  
                  modulename = self._modulefiles[fname][0]
                  if modulename in self.modules:
                      #Make sure that if there are modules with the same name but different
                      #files, that we are working with the correct one.
                      if filepath.lower() != self.modules[modulename].filepath:
                          msg.warn("module {} parsed ".format(modulename) + 
                                   "from {}, not {}".format(self.modules[modulename].filepath,
                                                            filepath))
                      module_mtime = self.modules[modulename].change_time
  
              if module_mtime is not None:
                  if module_mtime < file_mtime:
                      #The file has been modified since we reloaded the module.
                      #Return the two times we used for the comparison so the
                      #module file can be reloaded.
                      return [module_mtime, file_mtime]
                  else:
                      return None
          else:
              #The file has never been parsed by this CodeParser. We can
              #either do a full parse or a pickle load.
              return [file_mtime]
docs: Checks whether the modules in the specified file path need
          to be reparsed because the file was changed since it was
          last loaded.