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


Python requirements.InvalidRequirement方法代码示例

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


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

示例1: parse

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [as 别名]
def parse(cls, line):
        """

        :param line:
        :return:
        """
        try:
            # setuptools requires a space before the comment. If this isn't the case, add it.
            if "\t#" in line:
                parsed, = setuptools_parse_requirements_backport(line.replace("\t#", "\t #"))
            else:
                parsed, = setuptools_parse_requirements_backport(line)
        except InvalidRequirement:
            return None
        dep = Dependency(
            name=parsed.name,
            specs=parsed.specifier,
            line=line,
            extras=parsed.extras,
            dependency_type=filetypes.requirements_txt
        )
        return dep 
开发者ID:pypa,项目名称:pipenv,代码行数:24,代码来源:parser.py

示例2: _is_same_dep

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [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

示例3: ensure_requires_satisfied

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [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

示例4: _convert_deps

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [as 别名]
def _convert_deps(*, deps, name, version, extra):

        # filter result
        result = []
        for dep in deps:
            try:
                req = Requirement(dep)
            except InvalidRequirement as e:
                msg = 'cannot parse requirement: {} from {} {}'
                try:
                    # try to parse with dropped out markers
                    req = Requirement(dep.split(';')[0])
                except InvalidRequirement:
                    raise ValueError(msg.format(dep, name, version)) from e
                else:
                    logger.warning('cannot parse marker', extra=dict(
                        requirement=dep,
                        source_name=name,
                        source_version=version,
                    ))

            try:
                dep_extras = req.marker and Markers(req.marker).get_strings('extra')
            except ValueError:  # unsupported operation for version marker python_version: in
                dep_extras = set()

            # it's not extra and we want not extra too
            if not dep_extras and extra is None:
                result.append(req)
                continue
            # it's extra, but we want not the extra
            # or it's not the extra, but we want extra.
            if not dep_extras or extra is None:
                continue
            # it's extra and we want this extra
            for dep_extra in dep_extras:
                if dep_extra == extra:
                    result.append(req)
                    break

        return tuple(result) 
开发者ID:dephell,项目名称:dephell,代码行数:43,代码来源:_base.py

示例5: _make_req

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [as 别名]
def _make_req(test_id, i, name, req_str):
    try:
        return Requirement(req_str)
    except InvalidRequirement as e:
        raise MalformedYAML(test_id, "{} has invalid requirement {!r}", name, req_str) 
开发者ID:pradyunsg,项目名称:zazo,代码行数:7,代码来源:translate.py

示例6: _validate_plugins

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [as 别名]
def _validate_plugins(self) -> None:
        required_plugins = sorted(self.getini("required_plugins"))
        if not required_plugins:
            return

        # Imported lazily to improve start-up time.
        from packaging.version import Version
        from packaging.requirements import InvalidRequirement, Requirement

        plugin_info = self.pluginmanager.list_plugin_distinfo()
        plugin_dist_info = {dist.project_name: dist.version for _, dist in plugin_info}

        missing_plugins = []
        for required_plugin in required_plugins:
            spec = None
            try:
                spec = Requirement(required_plugin)
            except InvalidRequirement:
                missing_plugins.append(required_plugin)
                continue

            if spec.name not in plugin_dist_info:
                missing_plugins.append(required_plugin)
            elif Version(plugin_dist_info[spec.name]) not in spec.specifier:
                missing_plugins.append(required_plugin)

        if missing_plugins:
            fail(
                "Missing required plugins: {}".format(", ".join(missing_plugins)),
                pytrace=False,
            ) 
开发者ID:pytest-dev,项目名称:pytest,代码行数:33,代码来源:__init__.py

示例7: parse_info

# 需要导入模块: from packaging import requirements [as 别名]
# 或者: from packaging.requirements import InvalidRequirement [as 别名]
def parse_info(cls, content: str, root=None, urls: Dict[str, str] = None) -> RootDependency:
        if urls is None:
            urls = dict()

        info = Parser().parsestr(content)
        root = RootDependency(
            raw_name=cls._get(info, 'Name'),
            version=cls._get(info, 'Version') or '0.0.0',

            description=cls._get(info, 'Summary'),
            license=cls._get(info, 'License'),

            keywords=cls._get(info, 'Keywords').split(','),
            classifiers=cls._get_list(info, 'Classifier'),
            platforms=cls._get_list(info, 'Platform'),
        )

        # links
        fields = (
            (HOMEPAGE_FIELD, 'Home-Page'),
            (DOWNLOAD_FIELD, 'Download-URL'),
        )
        for key, name in fields:
            link = cls._get(info, name)
            if link:
                root.links[key] = link
        for link in cls._get_list(info, 'Project-URL'):
            key, url = link.split(', ')
            root.links[key.lower()] = url

        # authors
        for name in ('author', 'maintainer'):
            author = cls._get(info, name)
            if author:
                root.authors += (
                    Author(name=author, mail=cls._get(info, name + '_email')),
                )

        # dependencies
        deps = []
        for req in cls._get_list(info, 'Requires-Dist'):
            try:
                req = PackagingRequirement(req)
            except InvalidRequirement:
                cls.logger.warning('invalid requirement', extra=dict(
                    requirement=req,
                    package_name=root.name,
                    package_version=root.version,
                ))
                continue
            deps.extend(DependencyMaker.from_requirement(
                source=root,
                req=req,
                url=urls.get(req.name),
            ))
        root.attach_dependencies(deps)
        return root 
开发者ID:dephell,项目名称:dephell,代码行数:59,代码来源:egginfo.py


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