コード例 #1
0
ファイル: legacy_repository.py プロジェクト: bersace/poetry
    def find_packages(self, name, constraint=None, extras=None):
        packages = []

        if constraint is not None and not isinstance(constraint,
                                                     BaseConstraint):
            version_parser = VersionParser()
            constraint = version_parser.parse_constraints(constraint)

        key = name
        if constraint:
            key = f'{key}:{str(constraint)}'

        if self._cache.store('matches').has(key):
            versions = self._cache.store('matches').get(key)
        else:
            candidates = [str(c.version) for c in self._repository.find_all_candidates(name)]

            versions = []
            for version in candidates:
                if version in versions:
                    continue

                if (
                    not constraint
                    or (constraint and constraint.matches(Constraint('=', version)))
                ):
                    versions.append(version)

            self._cache.store('matches').put(key, versions, 5)

        for version in versions:
            packages.append(self.package(name, version, extras=extras))

        return packages
コード例 #2
0
    def apt_get_packages(self, name: str) -> list:
        system_name = PACKAGE_MAP.get(name, name)

        try:
            output = tools.cmd('apt-cache',
                               'policy',
                               system_name,
                               errors_are_fatal=False)
        except subprocess.CalledProcessError:
            return []
        else:
            policy = self._parse_apt_policy_output(output.strip())
            if not policy:
                return []
            else:
                packages = []
                for pkgmeta in policy:
                    for version in pkgmeta['versions']:
                        norm_version = _debian_version_to_pep440(version)
                        pkg = SystemPackage(name,
                                            norm_version,
                                            pretty_version=version,
                                            system_name=pkgmeta['name'])
                        packages.append(pkg)

                return packages
コード例 #3
0
    def find_packages(self,
                      name,
                      constraint=None,
                      extras=None,
                      allow_prereleases=False):
        packages = []

        if constraint is None:
            constraint = "*"

        if not isinstance(constraint, VersionConstraint):
            constraint = parse_constraint(constraint)

        if isinstance(constraint, VersionRange):
            if (constraint.max is not None and constraint.max.is_prerelease()
                    or constraint.min is not None
                    and constraint.min.is_prerelease()):
                allow_prereleases = True

        key = name
        if not constraint.is_any():
            key = "{}:{}".format(key, str(constraint))

        if self._cache.store("matches").has(key):
            versions = self._cache.store("matches").get(key)
        else:
            page = self._get("/{}/".format(
                canonicalize_name(name).replace(".", "-")))
            if page is None:
                return []

            versions = []
            for version in page.versions:
                if version.is_prerelease() and not allow_prereleases:
                    continue

                if constraint.allows(version):
                    versions.append(version)

            self._cache.store("matches").put(key, versions, 5)

        for version in versions:
            package = Package(name, version)
            package.source_type = "legacy"
            package.source_reference = self.name
            package.source_url = self._url

            if extras is not None:
                package.requires_extras = extras

            packages.append(package)

        self._log(
            "{} packages found for {} {}".format(len(packages), name,
                                                 str(constraint)),
            level="debug",
        )

        return packages
コード例 #4
0
    def find_packages(
        self, name, constraint=None, extras=None, allow_prereleases=False
    ):
        packages = []

        if constraint is not None and not isinstance(constraint, VersionConstraint):
            constraint = parse_constraint(constraint)

        key = name
        if constraint:
            key = "{}:{}".format(key, str(constraint))

        if self._cache.store("matches").has(key):
            versions = self._cache.store("matches").get(key)
        else:
            page = self._get("/{}/".format(canonicalize_name(name).replace(".", "-")))
            if page is None:
                return []

            versions = []
            for version in page.versions:
                if not constraint or (constraint and constraint.allows(version)):
                    versions.append(version)

            self._cache.store("matches").put(key, versions, 5)

        for version in versions:
            package = Package(name, version)
            package.source_type = "legacy"
            package.source_url = self._url

            if extras is not None:
                package.requires_extras = extras

            packages.append(package)

        self._log(
            "{} packages found for {} {}".format(len(packages), name, str(constraint)),
            level="debug",
        )

        return packages
コード例 #5
0
ファイル: legacy_repository.py プロジェクト: uSpike/poetry
    def find_packages(self,
                      name,
                      constraint=None,
                      extras=None,
                      allow_prereleases=False):
        packages = []

        if constraint is not None and not isinstance(constraint,
                                                     VersionConstraint):
            constraint = parse_constraint(constraint)

        key = name
        if constraint:
            key = "{}:{}".format(key, str(constraint))

        if self._cache.store("matches").has(key):
            versions = self._cache.store("matches").get(key)
        else:
            page = self._get("/{}".format(
                canonicalize_name(name).replace(".", "-")))
            if page is None:
                raise ValueError('No package named "{}"'.format(name))

            versions = []
            for version in page.versions:
                if not constraint or (constraint
                                      and constraint.allows(version)):
                    versions.append(version)

            self._cache.store("matches").put(key, versions, 5)

        for version in versions:
            package = Package(name, version)
            package.source_type = "legacy"
            package.source_url = self._url

            if extras is not None:
                package.requires_extras = extras

            packages.append(package)

        return packages
コード例 #6
0
ファイル: __init__.py プロジェクト: pombredanne/metapkg
    def apt_get_packages(self, name: str) -> list:
        system_name = PACKAGE_MAP.get(name, name)

        try:
            output = tools.cmd('yum', '--showduplicates', 'list', system_name,
                               errors_are_fatal=False, hide_stderr=True)
        except subprocess.CalledProcessError:
            return []
        else:
            policy = self._parse_yum_list_output(output.strip())
            if not policy:
                return []
            else:
                packages = []
                for version in policy['versions']:
                    norm_version = _rpm_version_to_pep440(version)
                    pkg = SystemPackage(
                        name, norm_version, pretty_version=version,
                        system_name=system_name)
                    packages.append(pkg)

                return packages