Skip to main content

"A Make-like tool with a syntax similar to Drake."

Project description

https://badge.fury.io/py/faz.png https://travis-ci.org/hmartiniano/faz.png?branch=master https://badge.fury.io/py/faz.svg

Faz is a data workflow tool heavily inspired in .. _Drake: https://github.com/Factual/drake

The intended use is combining data treatment scripts in bash, python, ruby (or anything else, with a little coding) into a single text file.

The name “faz” is portuguese for “do” or “make”.

The various steps can be separated into tasks, with defined inputs and outputs. Dependencies between the tasks are determined from inputs and outputs of every task. The program executes all tasks in the appropriate order, checking for the existence of output and input files.

Why?

  • Because I like Drake but can’t stand the startup time of java.

  • Because I can (actually to see if I can, but it turns out I can).

Features

  • simple but robust functionality

  • easy to use and extend (the code, minus the tests, is around 300 lines of python)

  • fast startup time (compared to Drake)

  • Documentation: https://faz.readthedocs.org.

Installation

Using pypi

pip install faz

Usage

From the command line, just type

faz

without arguments, the program will read the tasks from a file called “fazfile”. If you want to use another filename, just give that as an argumento to the program

faz <filename>

to get a list of command line arguments type

faz -h

Task file basics

The task file is a plain text file, with a syntax similar to Drake input files. The following is an example with two tasks

# file1 <-
touch file1

# file2 <- file1
cat file1 > file2

Lines starting with “#” and having the symbols “<-” signal a task. On the left of the “<-” is a (comma separated) list of the files produced by the task. On the right are the task dependencies, the files needed to run that task. In the above example the first task has no dependencies, and produces a file called “file1”. The second task has “file1” as a dependency, and has as output a file called “file2”.

The outputs and inputs and inputs of each task are used by the program to estabilish the order by which the tasks have to be run, and if they need to be run. In the example above, if a file called “file1” was already present in the directory the program was run, the first task would not be executed.

The code sections, are all the lines in betweeen the two task lines. In these two tasks, they are just are just plain bash commands but could be, for example, python code

# file1 <-
touch file1

# file2 <- file1 :python
f1 = open("file1")
text = file1.read()
f2 = open("file2", "w")
f2.write(text)

note that, in the second task, there’s an extra option “:python”, wich indicates to the program that the code from this task is python code. Options are a list of (comma separated) keywords follwing the “:”, and must be placed after the inputs.

History

0.1.0 (2014-01-11)

  • First release.

0.1.1 (2015-03-20)

  • Bug fixes.

0.1.2 (2015-10-17)

  • Project name change.

0.1.3 (2016-03-26)

  • NetworkX dependency removed.

0.1.4 (2016-05-19)

  • Input and output names added to task environment.

0.1.5 (2016-05-19)

  • Bug Fixes in variable expansion code.

0.1.6 (2016-07-18)

  • Added a mechanism to include other task files.

0.1.7 (2016-07-20)

  • dependencies and outputs can now be on different directories.

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

faz-0.1.7.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

faz-0.1.7-py2.py3-none-any.whl (11.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file faz-0.1.7.tar.gz.

File metadata

  • Download URL: faz-0.1.7.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for faz-0.1.7.tar.gz
Algorithm Hash digest
SHA256 1fbb111342fca023434e458c9f102a474187a1219b5a4f06357ebebb10a0d337
MD5 ba1d3052f9cf527ebdce7e6ea5170c78
BLAKE2b-256 41ce15e8ae74952df9f3a08f4359289d0d851fdbbf2f2d4e75d1385f8c819401

See more details on using hashes here.

File details

Details for the file faz-0.1.7-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for faz-0.1.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 15b1e6c4bf385260c24bba072e96268a802c4cda3c6f386015d8b1e735693cae
MD5 8de3c5f8481604cc8b09d35882b1be52
BLAKE2b-256 7207317d69156ed2c96cb926c0533cf115debfdcfd373d521032f6a41da96c80

See more details on using hashes here.

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