<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def deploy(self):
 """ Open a ZIP archive, validate requirements then deploy the webfont into project static files """

        self._info("* Opening archive: {}", self.archive_path)
        if not os.path.exists(self.archive_path):
            self._error("Given path does not exists: {}", self.archive_path)

        with zipfile.ZipFile(self.archive_path, 'r') as zip_archive:
            font_dir = self.requirements['font_dir']+'/'
            allowed_extensions = ['.'+item for item in self.requirements['extensions']]
            members = [member for member in zip_archive.namelist()]

            if settings.ICOMOON_MANIFEST_FILENAME not in members:
                raise self._error("Icomoon archive must contain a JSON manifest '{}'", settings.ICOMOON_MANIFEST_FILENAME)

            if font_dir not in members:
                raise self._error("Icomoon archive must contain the font directory '{}'", font_dir)

            # Scan for supported font files
            font_files = []
            for item in members:
                # Dont catch the font_dir itself nor sub directories, just files with allowed extensions
                if item.startswith(font_dir) and not item.endswith('/') and os.path.splitext(item)[-1] in allowed_extensions:
                    font_files.append(item)

            if not font_files:
                self._error("Font dir does not contain any supported format: {}", ', '.join(allowed_extensions))
            else:
                self._debug("* Finded font files in archive: {}", ', '.join(font_files))

            # Extract files from archive
            tmp_container, css_content = self.extract(zip_archive, font_files)

        # Install files
        self.install(tmp_container, font_dir, css_content)