def _get_info(self, fullmodname):
        """
        Internal helper for find_module() and load_module().

        Args:
          fullmodname: The dot-separated full module name, e.g. 'django.core.mail'.

        Returns:
          A tuple (submodname, is_package, relpath, fileobj) where:
            submodname: The final component of the module name, e.g. 'mail'.
            is_package: A bool indicating whether this is a package.
            relpath: The path to the module's source code within to the zipfile or tarfile.
            fileobj: The file object

        Raises:
          ImportError if the module is not found in the archive.
        """
        parts = fullmodname.split('.')
        submodname = parts[-1]
        for f in self._files:
            for prefix in self._prefixes[id(f)]:
                for suffix, is_package in _SEARCH_ORDER:
                    l = [prefix] + parts[:-1] + [submodname + suffix.replace('/', os.sep)]
                    relpath = os.path.join(*l)
                    try:
                        relpath = relpath.replace(os.sep, '/')
                        if isinstance(f, zipfile.ZipFile):
                            f.getinfo(relpath)
                        elif isinstance(f, tarfile.TarFile):
                            f.getmember(relpath)
                        else:
                            if relpath not in f:
                                raise KeyError
                    except KeyError:
                        pass
                    else:
                        return submodname, is_package, relpath, f

        msg = 'Can\'t find module %s' % fullmodname
        raise CompressImportError(msg)