将类成员公开为结构任务

fabric-taskset的Python项目详细描述


Fabric有基于类的任务,但它们是 限制:任务类表示单个任务。

此模块使基于类的fabric任务集成为可能。

安装

pip install fabric-taskset

用法

TaskSet是一个可以将其方法公开为构造任务的类。

示例:

# fabfile.py
from fabric.api import local
from taskset import TaskSet, task_method

class SayBase(TaskSet):
    def say(self, what):
        raise NotImplementedError()

    @task_method(default=True, alias='hi')
    def hello(self):
        self.say('hello')

    @task_method
    def bye(self):
        self.say('goodbye')

class EchoSay(SayBase):
    def say(self, what):
        local('echo ' + what)

say = EchoSay().expose_as_module('say')

然后:

$ fab -l
Available commands:

    say
    say.bye
    say.hello
    say.hi

$ fab say.hi
hello

taskset.task_method是一个decorator,它将包装的方法声明为task。 它接受的参数与fabric.decorators.taskso相同 在方法上使用它,就像在函数上使用fabric的decorator一样。

您还可以创建一个“磁盘上”python模块,并用任务填充它:

# my_lib/say.py
from taskset import TaskSet, task_method

class SayBase(TaskSet):
    def say(self, what):
        raise NotImplementedError()

    @task_method(default=True, alias='hi')
    def hello(self):
        self.say('hello')

class EchoSay(SayBase):
    def say(self, what):
        local('echo ' + what)

instance = EchoSay()
instance.expose_to_current_module()

# fabfile.py
from mylib import say

致谢

https://github.com/ramusus/fabriclassed是一个非常相似的应用程序。 在撰写本文时,它主要关注旧式结构任务 并包含了一个小型的部署框架。

为了养活我的nih综合症,我创建了一个fabric任务集 公开新样式的fabric任务,提供稍有不同的api 多吃点东西。

然后,这个库演变为支持公开任务而不创建虚拟对象 磁盘模块(感谢丹尼斯·恩特夫斯基)。

变化

0.2.1(2012-09-21)

  • private_expose_to方法现在返回list,而不是generator。

0.2(2012-08-28)

  • @taskdecorator已弃用,并替换为@task_method。 这是个坏名字,因为@fabric.taskdecorator (谢谢丹尼斯·恩特夫斯基);
  • Taskset.expose_as_module方法,允许使用任务集实例 不在磁盘上创建虚拟模块的命令行 (谢谢丹尼斯·恩特夫斯基)。

0.1(2012-03-03)

初次发布。

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

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来