Skip to main content

A functional interface for creating doit tasks

Project description

https://github.com/tillahoffmann/doit_interface/actions/workflows/main.yml/badge.svg https://img.shields.io/pypi/v/doit_interface.svg?style=flat https://readthedocs.org/projects/doit-interface/badge/?version=latest

This package provides a functional interface for reducing boilerplate in dodo.py of the pydoit build system. In short, all tasks are created and managed using a doit_interface.Manager. Most features<features> are exposed using python context manager, e.g., grouping tasks.

Example

>>> import doit_interface as di


>>> manager = di.Manager.get_instance()

>>> # Create a single task.
>>> manager(basename="create_foo", actions=["touch foo"], targets=["foo"])
{'basename': 'create_foo', 'actions': ['touch foo'], 'targets': ['foo'], ...}

>>> # Group multiple tasks.
>>> with di.group_tasks("my_group") as my_group:
...     manager(basename="member")
{'basename': 'member', ...}
>>> my_group
<doit_interface.contexts.group_tasks object at 0x...> named `my_group` with 1 task
>>> # Show the task we implicitly constructed using `group_tasks`.
>>> dict(my_group)
{'basename': 'my_group', 'actions': [], 'task_dep': ['member'], ...}

Features

  • Traceback for failed tasks using doit_interface.DoitInterfaceReporter.

  • Group tasks to easily execute all of them using doit_interface.group_tasks.

  • Automatically create directories for targets using doit_interface.create_target_dirs.

  • Share default values amongst tasks, such as file_dep or basename using doit_interface.defaults.

  • Use task dicts as dependencies in file_dep or task_dep using doit_interface.normalize_dependencies.

  • Apply prefixes using doit_interface.path_prefix or doit_interface.prefix.

  • Use global environments and extensive variable substitution for command line tasks using doit_interface.SubprocessAction. You can also use doit_interface.SubprocessAction by default using the doit_interface.SubprocessAction.use_as_default context manager.

Interface

doit_interface
 :members:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

doit_interface-0.1.3.tar.gz (9.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page