Пример #1
0
    def _generate_metadata(self):
        # type: () -> str
        """Invokes metadata generator functions, with the required arguments.
        """
        if not self.use_pep517:
            assert self.unpacked_source_directory

            if not self._check_setup_py_or_cfg_exists():
                raise InstallationError(
                    f'File "setup.py" or "setup.cfg" not found for legacy '
                    f'project {self}.')

            return generate_metadata_legacy(
                build_env=self.build_env,
                setup_py_path=self.setup_py_path,
                source_dir=self.unpacked_source_directory,
                isolated=self.isolated,
                details=self.name or f"from {self.link}")

        assert self.pep517_backend is not None

        return generate_metadata(
            build_env=self.build_env,
            backend=self.pep517_backend,
        )
Пример #2
0
    def prepare_metadata(self) -> None:
        """Ensure that project metadata is available.

        Under PEP 517 and PEP 660, call the backend hook to prepare the metadata.
        Under legacy processing, call setup.py egg-info.
        """
        assert self.source_dir
        details = self.name or f"from {self.link}"

        if self.use_pep517:
            assert self.pep517_backend is not None
            if (
                self.editable
                and self.permit_editable_wheels
                and self.supports_pyproject_editable()
            ):
                self.metadata_directory = generate_editable_metadata(
                    build_env=self.build_env,
                    backend=self.pep517_backend,
                    details=details,
                )
            else:
                self.metadata_directory = generate_metadata(
                    build_env=self.build_env,
                    backend=self.pep517_backend,
                    details=details,
                )
        else:
            self.metadata_directory = generate_metadata_legacy(
                build_env=self.build_env,
                setup_py_path=self.setup_py_path,
                source_dir=self.unpacked_source_directory,
                isolated=self.isolated,
                details=details,
            )

        # Act on the newly generated metadata, based on the name and version.
        if not self.name:
            self._set_requirement()
        else:
            self.warn_on_mismatching_name()

        self.assert_source_matches_version()
Пример #3
0
    def _generate_metadata(self):
        # type: () -> str
        """Invokes metadata generator functions, with the required arguments.
        """
        if not self.use_pep517:
            assert self.unpacked_source_directory

            return generate_metadata_legacy(
                build_env=self.build_env,
                setup_py_path=self.setup_py_path,
                source_dir=self.unpacked_source_directory,
                isolated=self.isolated,
                details=self.name or "from {}".format(self.link),
            )

        assert self.pep517_backend is not None

        return generate_metadata(build_env=self.build_env,
                                 backend=self.pep517_backend)
Пример #4
0
    def _generate_metadata(self) -> str:
        """Invokes metadata generator functions, with the required arguments."""
        if self.use_pep517:
            assert self.pep517_backend is not None
            try:
                return generate_metadata(
                    build_env=self.build_env,
                    backend=self.pep517_backend,
                )
            except HookMissing as e:
                raise InstallationError(
                    f"Project {self} has a pyproject.toml but its build "
                    f"backend is missing the required {e} hook.")
        elif not os.path.exists(self.setup_py_path):
            raise InstallationError(
                f"File 'setup.py' not found for legacy project {self}.")

        return generate_metadata_legacy(
            build_env=self.build_env,
            setup_py_path=self.setup_py_path,
            source_dir=self.unpacked_source_directory,
            isolated=self.isolated,
            details=self.name or f"from {self.link}",
        )