Example #1
0
    def extract_data(self):
        """Extracts data from archive.
        Returns:
            PackageData object containing the extracted data.
        """
        data = PackageData(self.local_file,
                           self.name,
                           self.name_convertor.rpm_name(self.name)
                           if self.rpm_name is None else self.rpm_name,
                           self.version)

        with self.archive:
            data.set_from(self.data_from_archive)

        if virtualenv is not None:
            data.set_from(self.data_from_venv, update=True)

        if "scripts" in data.data:
            setattr(data, "scripts", utils.remove_major_minor_suffix(data.data['scripts']))
        # for example nose has attribute `packages` but instead of name listing the pacakges
        # is using function to find them, that makes data.packages an empty set
        if data.has_packages and data.packages in ("TODO:", set()):
            data.packages = set([data.name])

        return data
Example #2
0
    def extract_data(self):
        """Extracts data from archive.
        Returns:
            PackageData object containing the extracted data.
        """
        data = PackageData(self.local_file,
                           self.name,
                           self.name_convertor.rpm_name(self.name)
                           if self.rpm_name is None else self.rpm_name,
                           self.version)

        with self.archive:
            data.set_from(self.data_from_archive)

        if virtualenv is not None:
            data.set_from(self.data_from_venv, update=True)

        if "scripts" in data.data:
            setattr(data, "scripts", utils.remove_major_minor_suffix(data.data['scripts']))
        # for example nose has attribute `packages` but instead of name listing the pacakges
        # is using function to find them, that makes data.packages an empty set
        if data.has_packages and data.packages == "TODO:":
            data.packages = set([data.name])

        return data
    def extract_data(self):
        """Extracts data from archive.
        Returns:
            PackageData object containing the extracted data.
        """
        data = PackageData(
            local_file=self.local_file,
            name=self.name,
            pkg_name=self.rpm_name or self.name_convertor.rpm_name(self.name),
            version=self.version,
            srcname=self.srcname)

        with self.archive:
            data.set_from(self.data_from_archive)

        if "scripts" in data.data:
            setattr(data, "scripts", utils.remove_major_minor_suffix(data.data['scripts']))
        # for example nose has attribute `packages` but instead of name listing the pacakges
        # is using function to find them, that makes data.packages an empty set
        # if virtualenv is disabled
        if virtualenv is None and getattr(data, "packages") == set():
            data.packages = set([data.name])

        return data
Example #4
0
 def test_remove_major_minor_suffix(self, input, expected):
     assert utils.remove_major_minor_suffix(input) == expected
Example #5
0
 def test_remove_major_minor_suffix(self, input, expected):
     assert utils.remove_major_minor_suffix(input) == expected
Example #6
0
    def extract_data(self):
        """Extracts data from PyPI and archive.
        Returns:
            PackageData object containing data extracted from PyPI and archive.
        """
        try:
            release_urls = self.client.release_urls(self.name, self.version)
            release_data = self.client.release_data(self.name, self.version)
        except:  # some kind of error with client => return TODO: log the failure
            logger.debug("Client: {0} Name: {1} Version: {2}.".format(self.client, self.name, self.version))
            logger.warn("Some kind of error while communicating with client: {0}.".format(self.client), exc_info=True)
            return PackageData(
                self.local_file,
                self.name,
                self.name_convertor.rpm_name(self.name) if self.rpm_name is None else self.rpm_name,
                self.version,
                "FAILED TO EXTRACT FROM PYPI",
                "FAILED TO EXTRACT FROM PYPI",
            )

        url = ""
        md5_digest = None

        if len(release_urls):
            for release_url in release_urls:
                if release_url["url"].endswith("tar.gz"):
                    url = release_url["url"]
                    md5_digest = release_url["md5_digest"]
            if url == "":
                url = release_urls[0]["url"]
                md5_digest = release_urls[0]["md5_digest"]
        elif release_data:
            url = release_data["download_url"]

        data = PackageData(
            self.local_file,
            self.name,
            self.name_convertor.rpm_name(self.name) if self.rpm_name is None else self.rpm_name,
            self.version,
            md5_digest,
            url,
        )
        for data_field in settings.PYPI_USABLE_DATA:
            setattr(data, data_field, release_data.get(data_field, ""))
        pypi_license = data.license

        with self.archive:
            data.set_from(self.data_from_archive)

        data.set_from(self.data_from_venv, update=True)

        setattr(data, "scripts", utils.remove_major_minor_suffix(data.data["scripts"]))

        data.data["build_deps"] += utils.runtime_to_build(data.data["runtime_deps"])
        setattr(data, "build_deps", utils.unique_deps(data.data["build_deps"]))
        # Append all runtime deps to build deps and unique the result

        # for example nose has attribute `packages` but instead of name listing the
        # packages is using function to find them, that makes data.packages an empty set
        if data.has_packages and not data.packages:
            data.packages.add(data.name)

        # we usually get better license representation from trove classifiers
        data.license = utils.license_from_trove(release_data.get("classifiers", "")) or data.license or pypi_license

        return data