当前位置: 首页>>代码示例>>Python>>正文


Python requirements.Requirement方法代码示例

本文整理汇总了Python中packaging.requirements.Requirement方法的典型用法代码示例。如果您正苦于以下问题:Python requirements.Requirement方法的具体用法?Python requirements.Requirement怎么用?Python requirements.Requirement使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在packaging.requirements的用法示例。


在下文中一共展示了requirements.Requirement方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: version_info

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def version_info(parser):
    versions = OrderedDict()
    to_visit = {"tox"}
    while to_visit:
        current = to_visit.pop()
        current_dist = importlib_metadata.distribution(current)
        current_name = canonicalize_name(current_dist.metadata["name"])
        versions[current_name] = current_dist.version
        if current_dist.requires is not None:
            for require in current_dist.requires:
                pkg = Requirement(require)
                pkg_name = canonicalize_name(pkg.name)
                if (
                    pkg.marker is None or pkg.marker.evaluate({"extra": ""})
                ) and pkg_name not in versions:
                    to_visit.add(pkg_name)
    set_section(parser, "tox:versions", versions) 
开发者ID:tox-dev,项目名称:tox,代码行数:19,代码来源:show_config.py

示例2: test_format

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def test_format():
    root = RootDependency()
    text = (
        'hypothesis[django]<=3.0.0; '
        'python_version == "2.7" and '
        'platform_python_implementation == "CPython"'
    )
    req = PackagingRequirement(text)
    deps = DependencyMaker.from_requirement(root, req)

    # test dep
    assert deps[0].name == 'hypothesis'
    assert deps[1].name == 'hypothesis[django]'
    assert str(deps[0].constraint) == '<=3.0.0'
    assert str(deps[0].marker).startswith('python_version == "2.7"')

    # test format
    req = Requirement(dep=deps[0], lock=False)
    req.extra_deps = (deps[1], )
    result = PIPConverter(lock=False)._format_req(req=req)
    assert 'hypothesis[django]' in result
    assert '<=3.0.0' in result
    assert 'python_version == "2.7"' in result
    assert 'from root' not in result
    assert result.startswith(text) 
开发者ID:dephell,项目名称:dephell,代码行数:27,代码来源:test_pip.py

示例3: strip_extras_markers_from_requirement

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def strip_extras_markers_from_requirement(req):
    # type: (TRequirement) -> TRequirement
    """
    Strips extras markers from requirement instances.

    Given a :class:`~packaging.requirements.Requirement` instance with markers defining
    *extra == 'name'*, strip out the extras from the markers and return the cleaned
    requirement

    :param PackagingRequirement req: A packaging requirement to clean
    :return: A cleaned requirement
    :rtype: PackagingRequirement
    """
    if req is None:
        raise TypeError("Must pass in a valid requirement, received {0!r}".format(req))
    if getattr(req, "marker", None) is not None:
        marker = req.marker  # type: TMarker
        marker._markers = _strip_extras_markers(marker._markers)
        if not marker._markers:
            req.marker = None
        else:
            req.marker = marker
    return req 
开发者ID:pypa,项目名称:pipenv,代码行数:25,代码来源:utils.py

示例4: fix_requires_python_marker

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def fix_requires_python_marker(requires_python):
    from packaging.requirements import Requirement as PackagingRequirement

    marker_str = ""
    if any(requires_python.startswith(op) for op in Specifier._operators.keys()):
        spec_dict = defaultdict(set)
        # We are checking first if we have  leading specifier operator
        # if not, we can assume we should be doing a == comparison
        specifierset = list(SpecifierSet(requires_python))
        # for multiple specifiers, the correct way to represent that in
        # a specifierset is `Requirement('fakepkg; python_version<"3.0,>=2.6"')`
        marker_key = Variable("python_version")
        for spec in specifierset:
            operator, val = spec._spec
            cleaned_val = Value(val).serialize().replace('"', "")
            spec_dict[Op(operator).serialize()].add(cleaned_val)
        marker_str = " and ".join(
            [
                "{0}{1}'{2}'".format(marker_key.serialize(), op, ",".join(vals))
                for op, vals in spec_dict.items()
            ]
        )
    marker_to_add = PackagingRequirement("fakepkg; {0}".format(marker_str)).marker
    return marker_to_add 
开发者ID:pypa,项目名称:pipenv,代码行数:26,代码来源:utils.py

示例5: get_package_from_requirement

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def get_package_from_requirement(req):
    # type: (PackagingRequirement) -> Tuple[Package, Set[str]]
    versions = set()
    if is_pinned_requirement(req):
        version = get_pinned_version(req)
        versions.add(version)
        pkg = get_package_version(req.name, version)
    else:
        pkg = get_package(req.name)
        sorted_releases = list(
            sorted(pkg.releases, key=operator.attrgetter("parsed_version"), reverse=True)
        )
        versions = set(req.specifier.filter((r.version for r in sorted_releases)))
        version = next(iter(req.specifier.filter((r.version for r in sorted_releases))))
        if pkg.version not in versions:
            pkg = get_package_version(pkg.name, version)
    return pkg, versions 
开发者ID:pypa,项目名称:pipenv,代码行数:19,代码来源:metadata.py

示例6: dependencies

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def dependencies(self):
        # type: () -> Tuple[Dict[S, PackagingRequirement], List[Union[S, PackagingRequirement]], List[S]]
        build_deps = []  # type: List[Union[S, PackagingRequirement]]
        setup_deps = []  # type: List[S]
        deps = {}  # type: Dict[S, PackagingRequirement]
        if self.setup_info:
            setup_info = self.setup_info.as_dict()
            deps.update(setup_info.get("requires", {}))
            setup_deps.extend(setup_info.get("setup_requires", []))
            build_deps.extend(setup_info.get("build_requires", []))
            if self.extras and self.setup_info.extras:
                for dep in self.extras:
                    if dep not in self.setup_info.extras:
                        continue
                    extras_list = self.setup_info.extras.get(dep, [])  # type: ignore
                    for req_instance in extras_list:  # type: ignore
                        deps[req_instance.key] = req_instance
        if self.pyproject_requires:
            build_deps.extend(list(self.pyproject_requires))
        setup_deps = list(set(setup_deps))
        build_deps = list(set(build_deps))
        return deps, setup_deps, build_deps 
开发者ID:pypa,项目名称:pipenv,代码行数:24,代码来源:requirements.py

示例7: _reverse_dependencies

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def _reverse_dependencies(self, cache_keys):
        """
        Returns a lookup table of reverse dependencies for all the given cache keys.

        Example input:

            [('pep8', '1.5.7'),
             ('flake8', '2.4.0'),
             ('mccabe', '0.3'),
             ('pyflakes', '0.8.1')]

        Example output:

            {'pep8': ['flake8'],
             'flake8': [],
             'mccabe': ['flake8'],
             'pyflakes': ['flake8']}

        """
        # First, collect all the dependencies into a sequence of (parent, child) tuples, like [('flake8', 'pep8'),
        # ('flake8', 'mccabe'), ...]
        return lookup_table((key_from_req(Requirement(dep_name)), name)
                            for name, version_and_extras in cache_keys
                            for dep_name in self.cache[name][version_and_extras]) 
开发者ID:pypa,项目名称:pipenv,代码行数:26,代码来源:cache.py

示例8: main

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def main():
    """Resolve requirements as project names on PyPI.

    The requirements are taken as command-line arguments
    and the resolution result will be printed to stdout.
    """
    if len(sys.argv) == 1:
        print("Usage:", sys.argv[0], "<PyPI project name(s)>")
        return
    # Things I want to resolve.
    reqs = sys.argv[1:]
    requirements = [Requirement(r) for r in reqs]

    # Create the (reusable) resolver.
    provider = PyPIProvider()
    reporter = BaseReporter()
    resolver = Resolver(provider, reporter)

    # Kick off the resolution process, and get the final result.
    print("Resolving", ", ".join(reqs))
    result = resolver.resolve(requirements)
    display_resolution(result) 
开发者ID:sarugaku,项目名称:resolvelib,代码行数:24,代码来源:pypi_wheel_provider.py

示例9: _determine_filtered_package_requirements

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def _determine_filtered_package_requirements(self) -> List[Requirement]:
        """
        Parse the configuration file for [blacklist]packages

        Returns
        -------
        list of packaging.requirements.Requirement
            For all PEP440 package specifiers
        """
        filtered_requirements: Set[Requirement] = set()
        try:
            lines = self.configuration["blacklist"]["packages"]
            package_lines = lines.split("\n")
        except KeyError:
            package_lines = []
        for package_line in package_lines:
            package_line = package_line.strip()
            if not package_line or package_line.startswith("#"):
                continue
            filtered_requirements.add(Requirement(package_line))
        return list(filtered_requirements) 
开发者ID:pypa,项目名称:bandersnatch,代码行数:23,代码来源:blacklist_name.py

示例10: run

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def run(specs, requirements_file, *args, **kwargs):
    if not specs:  # then, assume all in the requirements file
        regex = re.compile(r"(^|\n|\n\r).*==")
        specs = []
        previous_versions = {}
        with open(requirements_file) as f:
            for line in f:
                if regex.search(line) and not line.lstrip().startswith("#"):
                    req = Requirement(line.split("\\")[0])
                    # Deliberately strip the specifier (aka. the version)
                    version = req.specifier
                    req.specifier = None
                    specs.append(str(req))
                    previous_versions[str(req)] = version
        kwargs["previous_versions"] = previous_versions

    if isinstance(specs, str):
        specs = [specs]

    return run_packages(specs, requirements_file, *args, **kwargs) 
开发者ID:peterbe,项目名称:hashin,代码行数:22,代码来源:hashin.py

示例11: test_interactive_upgrade_request_repeat_question

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def test_interactive_upgrade_request_repeat_question(capsys):
    old = Requirement("hashin==0.9")
    old_version = old.specifier
    new = Requirement("hashin==0.10")
    new_version = new.specifier

    questions = []

    def mock_input(question):
        questions.append(question)
        if len(questions) == 1:
            return "X"  # anything not recognized
        elif len(questions) == 2:
            return "Y"
        raise NotImplementedError(questions)

    with mock.patch("hashin.input") as mocked_input:
        mocked_input.side_effect = mock_input
        result = hashin.interactive_upgrade_request("hashin", old_version, new_version)
        assert result == "YES" 
开发者ID:peterbe,项目名称:hashin,代码行数:22,代码来源:test_cli.py

示例12: test_interactive_upgrade_request_help

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def test_interactive_upgrade_request_help(capsys):
    old = Requirement("hashin==0.9")
    old_version = old.specifier
    new = Requirement("hashin==0.10")
    new_version = new.specifier

    questions = []

    def mock_input(question):
        questions.append(question)
        if len(questions) == 1:
            return "?"
        elif len(questions) == 2:
            return "Y"
        raise NotImplementedError(questions)

    with mock.patch("hashin.input") as mocked_input:
        mocked_input.side_effect = mock_input
        result = hashin.interactive_upgrade_request("hashin", old_version, new_version)
        assert result == "YES" 
开发者ID:peterbe,项目名称:hashin,代码行数:22,代码来源:test_cli.py

示例13: _is_same_dep

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def _is_same_dep(cls, dep1, dep2):
        """Definitions are the same if they refer to the same package, even if versions differ."""
        dep1_name = canonicalize_name(requirements.Requirement(dep1).name)
        try:
            dep2_name = canonicalize_name(requirements.Requirement(dep2).name)
        except requirements.InvalidRequirement:
            # we couldn't parse a version, probably a URL
            return False
        return dep1_name == dep2_name 
开发者ID:tox-dev,项目名称:tox,代码行数:11,代码来源:__init__.py

示例14: ensure_requires_satisfied

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def ensure_requires_satisfied(config, requires, min_version):
        missing_requirements = []
        failed_to_parse = False
        deps = []
        exists = set()
        for require in requires + [min_version]:
            # noinspection PyBroadException
            try:
                package = requirements.Requirement(require)
                # check if the package even applies
                if package.marker and not package.marker.evaluate({"extra": ""}):
                    continue
                package_name = canonicalize_name(package.name)
                if package_name not in exists:
                    deps.append(DepConfig(require, None))
                    exists.add(package_name)
                    dist = importlib_metadata.distribution(package.name)
                    if not package.specifier.contains(dist.version, prereleases=True):
                        raise MissingDependency(package)
            except requirements.InvalidRequirement as exception:
                failed_to_parse = True
                error("failed to parse {!r}".format(exception))
            except Exception as exception:
                verbosity1("could not satisfy requires {!r}".format(exception))
                missing_requirements.append(str(requirements.Requirement(require)))
        if failed_to_parse:
            raise tox.exception.BadRequirement()
        if WITHIN_PROVISION and missing_requirements:
            msg = "break infinite loop provisioning within {} missing {}"
            raise tox.exception.Error(msg.format(sys.executable, missing_requirements))
        config.run_provision = bool(len(missing_requirements))
        return deps 
开发者ID:tox-dev,项目名称:tox,代码行数:34,代码来源:__init__.py

示例15: build

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import Requirement [as 别名]
def build(config, session):
    build_info = get_build_info(config.setupdir)
    package_venv = session.getvenv(config.isolated_build_env)
    package_venv.envconfig.deps_matches_subset = True

    # we allow user specified dependencies so the users can write extensions to
    # install additional type of dependencies (e.g. binary)
    user_specified_deps = package_venv.envconfig.deps
    package_venv.envconfig.deps = [DepConfig(r, None) for r in build_info.requires]
    package_venv.envconfig.deps.extend(user_specified_deps)

    if package_venv.setupenv():
        package_venv.finishvenv()
    if isinstance(package_venv.status, Exception):
        raise package_venv.status

    build_requires = get_build_requires(build_info, package_venv, config.setupdir)
    # we need to filter out requirements already specified in pyproject.toml or user deps
    base_build_deps = {
        canonicalize_name(Requirement(r.name).name) for r in package_venv.envconfig.deps
    }
    build_requires_dep = [
        DepConfig(r, None)
        for r in build_requires
        if canonicalize_name(Requirement(r).name) not in base_build_deps
    ]
    if build_requires_dep:
        with package_venv.new_action("build_requires", package_venv.envconfig.envdir) as action:
            package_venv.run_install_command(packages=build_requires_dep, action=action)
        package_venv.finishvenv()
    return perform_isolated_build(build_info, package_venv, config.distdir, config.setupdir) 
开发者ID:tox-dev,项目名称:tox,代码行数:33,代码来源:isolated.py


注:本文中的packaging.requirements.Requirement方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。