Skip to main content

Fabric-taskset

Fabric has class-based tasks but they are limited: Task class represents a single task.

This module make it possible to have class-based Fabric task sets.

Installation

pip install fabric-taskset

Usage

TaskSet is a class that can expose its methods as Fabric tasks.

Example:

# 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')

and then:

$ fab -l
Available commands:

    say
    say.bye
    say.hello
    say.hi

$ fab say.hi
hello

taskset.task_method is a decorator declaring the wrapped method to be task. It acceps the same arguments as fabric.decorators.task so use it on methods just like fabric’s decorator is used on functions.

You can also create an “on-disk” Python module and populate it with tasks:

# 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

Acknowledgements

https://github.com/ramusus/fabriclassed is a very similar app. At the time of writing it is focused on old-style Fabric tasks and has a small deployment framework included.

In order to feed my NIH syndrome I create Fabric-taskset which exposes new-style Fabric tasks, provides slightly different API and doesn’t have extra goodies.

This library then evolved to support exposing tasks without creating dummy on-disk modules (thanks to Denis Untevskiy).

Changes

0.2.1 (2012-09-21)

  • private _expose_to method now returns list, not generator.

0.2 (2012-08-28)

  • @task decorator is deprecated and replaced with @task_method. This was a bad name because of @fabric.task decorator (thanks Denis Untevskiy);

  • Taskset.expose_as_module method that allows to use TaskSet instances from command line without creating dummy modules on disk (thanks Denis Untevskiy).

0.1 (2012-03-03)

Initial release.

Release files for fabric-taskset 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fabric-taskset 0.2.1
File Size Uploaded
fabric-taskset-0.2.1.tar.gz 4.2 kB Details

Release files / fabric-taskset-0.2.1.tar.gz

Download URL fabric-taskset-0.2.1.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ead6bd24f081cffe5950eda4a3d2b48a65affbee7627557f4e5450aa1b628025
BLAKE2b-256 checksum
How to use checksums
1fcaf9551cb12fd3ca7ef36f131cc7f4fe4fcec9b0e574dfb37b6721a357be2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page