cli.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:reqwire 作者: darvid 项目源码 文件源码
def main_add(ctx,                      # type: click.Context
             options,                  # type: Dict[str, Any]
             build,                    # type: bool
             editable,                 # type: Iterable[str]
             tag,                      # type: Iterable[str]
             install,                  # type: bool
             pre,                      # type: bool
             resolve_canonical_names,  # type: bool
             resolve_versions,         # type: bool
             specifiers,               # type: Tuple[str, ...]
             ):
    # type: (...) -> None
    """Add packages to requirement source files."""
    if not options['directory'].exists():
        console.error('run `{} init\' first', ctx.find_root().info_name)
        ctx.abort()

    specifiers = tuple('-e {}'.format(e) for e in editable) + specifiers

    if install:
        pip_args = tuple(shlex.split(' '.join(specifiers)))
        if pre:
            pip_args = ('--pre',) + pip_args
        pip_install(ctx, *pip_args)

    if not tag:
        tag = ('main',)

    pip_options, session = reqwire.helpers.requirements.build_pip_session()
    src_dir = options['directory'] / options['source_dir']
    lookup_index_urls = set()  # type: Set[str]

    for tag_name in tag:
        filename = src_dir / ''.join((tag_name, options['extension']))
        if not filename.exists():
            continue
        _, finder = reqwire.helpers.requirements.parse_requirements(
            filename=str(filename))
        lookup_index_urls |= set(finder.index_urls)

    try:
        for tag_name in tag:
            console.info('saving requirement(s) to {}', tag_name)
            reqwire.scaffold.extend_source_file(
                working_directory=str(options['directory']),
                tag_name=tag_name,
                specifiers=specifiers,
                extension=options['extension'],
                lookup_index_urls=lookup_index_urls,
                prereleases=pre,
                resolve_canonical_names=resolve_canonical_names,
                resolve_versions=resolve_versions)
    except piptools.exceptions.NoCandidateFound as err:
        console.error(str(err))
        ctx.abort()

    if build:
        ctx.invoke(main_build, all=False, tag=tag)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号