一个扩展模块,用于单击以启用通过setuptools入口点注册cli命令。

click-plugins的Python项目详细描述


https://travis-ci.org/click-contrib/click-plugins.svg?branch=masterhttps://coveralls.io/repos/click-contrib/click-plugins/badge.svg?branch=master&service=github

用于click注册的扩展模块 通过setuptools入口点的外部cli命令。

为什么?

假设您开发了一个命令行接口,有人请求一个新功能 这与你的项目绝对相关,但会产生负面影响 像其他的依赖关系,主要的重构,或者可能只是它的域 特定于直接支持。而不是单独开发一个独立的 你可以提供一个setuptools entry point 它允许其他人使用您的命令行实用程序作为他们相关的 子命令。您可以选择这些子命令或子组的位置 已注册,但插件开发人员可以选择它们已注册。你 可以让所有插件在核心命令旁边注册,在一个特殊的 子组,跨多个子组,或某些组合。

启用插件

有关更详细的示例,请参见examples部分。

唯一的要求是用^{tt2}装饰click.group()。$ 它处理附加外部命令和组。在本例中,核心cli开发人员 从core_package.cli_plugins注册cli插件。

frompkg_resourcesimportiter_entry_pointsimportclickfromclick_pluginsimportwith_plugins@with_plugins(iter_entry_points('core_package.cli_plugins'))@click.group()defcli():"""Commandline interface for yourpackage."""@cli.command()defsubcommand():"""Subcommand that does something."""

开发插件

插件开发人员需要将其子命令或子组注册到 核心包加载的入口点setup.py

fromsetuptoolsimportsetupsetup(name='yourscript',version='0.1',py_modules=['yourscript'],install_requires=['click',],entry_points='''
        [core_package.cli_plugins]
        cool_subcommand=yourscript.cli:cool_subcommand
        another_subcommand=yourscript.cli:another_subcommand
    ''',)

损坏且不兼容的插件

任何无法加载的子命令或子组都将被捕获并转换为 一个click_plugins.core.BrokenCommand(),而不是把整个 克利。短帮助将转换为警告消息,如:

Warning: could not load plugin. See ``<CLI> <command/group> --help``.

如果执行子命令或组,则打印整个回溯。

最佳实践和额外积分

向插件打开cli可以鼓励其他开发人员独立扩展 功能独立,但不能保证这些新功能 要“有品牌”。插件开发人员几乎肯定已经在使用功能了 在核心包中,cli属于定义常用参数和 一个地方的选项允许插件开发人员重用这些标志来生成更多 内聚cli。如果cli很简单,可以在 yourpackage/cli.py或更复杂的包,如 yourpackage/cli/options.py。这些常见的选项需要容易找到 并且有很好的文档记录,以便插件开发人员知道要给什么变量 他们的子命令的功能,以及他们期望接收的对象。不要 忘记记录不明显的回调。

请记住,插件开发人员也可以访问父组的 ctx.obj,对于传递详细级别或 配置子命令周围的值。

下面是一些子命令可以重用的代码:

frommultiprocessingimportcpu_countimportclickjobs_opt=click.option('-j','--jobs',metavar='CORES',type=click.IntRange(min=1,max=cpu_count()),default=1,show_default=True,help="Process data across N cores.")

插件开发人员可以使用:

importclickimportparent_cli_package.cli.options@click.command()@parent_cli_package.cli.options.jobs_optdefsubcommand(jobs):"""I do something domain specific."""

安装

使用pip

$ pip install click-plugins

来源:

$ git clone https://github.com/click-contrib/click-plugins.git
$cd click-plugins
$ python setup.py install

开发

$ git clone https://github.com/click-contrib/click-plugins.git
$cd click-plugins
$ pip install -e .\[dev\]$ pytest tests --cov click_plugins --cov-report term-missing

更改日志

CHANGES.txt

作者

AUTHORS.txt

许可证

LICENSE.txt

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在jframe中模糊的背景上创建一个透明的矩形   java和super之间有区别。getX()和简单的x?   使用ant的java删除eclipse项目   java找不到。txt文件?   多线程Java wait()notify()   带按钮的java透明控件   java Android Studio 3无法构建我的项目   性能最佳(最快且节省内存)的Java收集/数据结构,可同时插入和删除项   spring+hibernate集成中的java ClassNotFoundException   java如何在Android上建立异步URL连接?   java当我选择contacts选项卡时,选项卡栏消失了   java根据数据库中的日期获取结果,不考虑时间   java如何访问WebChromeClient中的方法?   java如何在安卓中使用两行列表项?   spring Swagger Java日期格式验证引发异常