python实用程序带

pub的Python项目详细描述


pub是一个工具,可以帮助您自动执行那些不想执行的任务 手动操作。它试图为您的 建立、清洁和部署需求。

pub代码只是python代码,允许您利用 你已经熟悉的工具。

只需安装pub,在目录中保存一个pub.py文件,然后启动 编码。

下面是一个pub.py示例,有两个任务,一个用于构建项目,另一个用于 要将其部署到服务器:

from pub import task
from pub.shortcuts import mkdir, cp, rsync

@task
def build():
    mkdir("build")
    cp("src/binary", "build")

@task("build")
def deploy():
    rsync("build", "user@server:~")

pub.shortcuts模块为我们提供了访问命令行的便捷快捷方式 功能。

deploy任务依赖于build任务,因此调用 pub deploy将首先运行生成任务,然后部署。

安装

pip install pub

任务

pub模块中的taskdecorator将是代码的主 与pub的接口。

您可以创建一个没有参数的任务:

from pub import task

@task
def zomg():
    print "omgbbq"

如果对包含此函数的pub.py文件运行pub zomg,则 将看到“omgbbq”打印出来。

也可以创建带有参数的任务。每个参数都应该是 另一个函数的名称。参数列表中的函数都是 在执行任务之前执行。

例如:

from pub import task

@task
def foo():
    print "foo"

@task("foo")
def bar():
    print "bar"

@task("foo", "bar")
def baz():
    print "baz"

如果运行pub foo,您将看到“foo”。

如果运行pub bar,您将看到“foo”后跟“bar”。

如果您运行pub baz,您将看到“foo”后跟“bar”后跟 “巴兹”。

依赖关系将从左到右解析,这意味着 依赖项列表中每个项在其左侧的隐含依赖项 邻居。注意不要创建循环依赖项 所以:

from pub import task

@task
def foo():
    print "foo"

@task("foo")
def bar():
    print "bar"

@task("bar", "foo")
def baz():
    print "baz"

在这种情况下,bar依赖于foo定义的bar, 但是foo根据baz的定义依赖于bar。酒吧将是 对这种情况感到困惑,然后用一个 错误。

有两个合法关键字可用于任务装饰器: privatedefaultprivate只表示pub -l 不会列出您的任务;如果您有一个pub.py文件,如:

from pub import task

@task(private=True)
def private_func(): pass

然后运行pub -l,它通常列出所有任务,private_func 不会被列出。

default将任务标记为默认操作。如果你有一个pub.py 例如:

from pub import task

@task(default=True)
def do_something(): print "got here"

运行pub,不带任何参数,您应该会看到“got here”被打印出来。

您可以将任意数量的任务标记为default;如果 pub调用时没有参数。而他们的依赖信息 永远不会被忽视,没有明确的顺序 快跑。

任务只是通过给它们docstring来记录的。鉴于此 pub.py

from pub import task

@task
def gotit():
    """You've got it!"""
    pass

@task
def noyou():
    """I thought you had it."""
    pass

我们可以通过pub:

$ pub -l
gotit: You've got it!
noyou: I thought you had it.

快捷键

pub.shortcuts模块建立在@kennethritz的fine上 envoy模块提供 方便的pub命令行界面。

您可以看到所有可用的命令in the source, 或者您可以自己制作:

from pub.shortcuts import make_shortcut

gcc = make_shortcut("gcc")

#then use it like so:
gcc("-o guildenstern.exe rosencrantz.c")

最后对gccfunciton的调用将转换为 gcc -o guildenstern.exe rosencrantz.c然后运行。

我们还可以使用快捷方式检查输入、输出和状态 命令的代码;快捷方式的返回值将是 envoy结果。检查他们的 有关详细信息的文档,但基本上可以使用以下命令查看其输出:

from pub.shortcuts import make_shortcut

echo = make_shortcut("echo")

out = echo("A conspiracy of cartographers")

assert out.std_out == "A conspiracy of cartographers\n"

pub.shortcuts模块还包含一个实用函数, newer。它只接受两个参数,如果mtime 第一个的时间比第二个的时间新。它的全部定义 如下:

def newer(f1, f2):
    return stat(f1).st_mtime > stat(f2).st_mtime

pub命令

pub命令最好通过其--helpoutput:

usage: pub [-h] [-l] [-f FILE] [task [task ...]]

Python Utility Belt v0.0.4

positional arguments:
  task                  the tasks to run

optional arguments:
  -h, --help            show this help message and exit
  -l                    list available tasks
  -f FILE, --pubfile FILE
                        The file to use as a pubfile

贡献

求你了!补丁和问题将欣然接受。

要运行pub的测试,只需运行pub test;您需要 先安装nose

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

推荐PyPI第三方库


热门话题
调整大小时清除java JFrame图像   java Inmemory数据库和编程语言内存管理/垃圾收集   如何在Java中循环参数   java嵌套回收视图未获得焦点   hadoop和spark现在支持IPv6吗?   java允许在类中使用动态值。名字?   java中的Zookeeper连接   java如何从特定格式的字符串中提取数字?   java我在编译时没有收到错误,但当我运行程序时,我收到错误   用于指定身份验证架构的java Swagger配置   java AWS:elastic beanstalk是否隐式使用s3(存储)?   java如何向另一个servlet发送http请求   java写和写的区别是什么?   java在PCAP上循环了两次,这在io上是不可能的。pkts?   java ExecutionException SocketTimeoutException,同时尝试使用CompletableFuture异步调用10个不同的rest服务   svn中的eclipse Java项目,将其与maven结合   java Android数学简单   hadoop中的java多路输出格式