Metadata-Version: 2.1
Name: yenta
Version: 0.3.2
Summary: Yet 'Nother Taskrunner
Home-page: https://github.com/grapesmoker/yenta
Author: Jerry Vinokurov
Author-email: grapesmoker@gmail.com
License: MIT license
Keywords: yenta
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
Requires-Dist: Click (>=7.0)
Requires-Dist: networkx (~=2.5)
Requires-Dist: colorama (~=0.4.4)
Requires-Dist: pydot (~=1.4.1)
Requires-Dist: rich (~=9.11.0)
Requires-Dist: more-itertools (~=8.7.0)

=====
Yenta
=====


.. image:: https://img.shields.io/pypi/v/yenta.svg
        :target: https://pypi.python.org/pypi/yenta

.. image:: https://img.shields.io/travis/grapesmoker/yenta.svg
        :target: https://travis-ci.com/grapesmoker/yenta

.. image:: https://readthedocs.org/projects/yenta/badge/?version=latest
        :target: https://yenta.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status




Yet 'Nother Taskrunner


* Free software: MIT license
* Documentation: https://yenta.readthedocs.io.

Introduction
------------

Yenta is YEt 'Nother TAskrunner; it executes a pipeline, defined by a series of tasks and dependencies among them.
The goal of Yenta is to provide a reasonable feature set while maintaining simplicity and usability. Yenta tasks are
simply functions decorated with the :code:`@task` decorator and complying with a specific format for their arguments.

Yenta is inspired in part by the functional state management pattern used in projects like Redux. Although I would
hesitate to call Yenta "functional" in the strict sense, it does use a caching logic according to which identical
inputs are assumed to produce identical outputs under default conditions. This means that Yenta will automatically
reuse the cached output of a task if nothing about the inputs has changed.

The name "Yenta" is an old Yiddish name; in the American Yiddish theater of the 30s, a character named Yenta
was depicted as a busy-body, so the name became a byword for someone who won't mind their own business.

Features
--------

* Graph-based task execution
* Lightweight
* Idempotent tasks
* Simple, intuitive API

Credits
-------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage


=======
History
=======

0.1.0 (2020-05-27)
------------------

* First release on PyPI.
* Working pipeline execution with caching and reuse of results

0.2.0 (2020-07-01)
------------------

* Selector functionality implemented

0.2.1 (2020-07-10)
------------------

* Write intermediate pipeline results to a temp file and catch the case
  where a non-serializable object is returned

0.2.2 (2020-07-10)
------------------

* Append running dir to sys.path

0.2.3 (2020-07-10)
------------------

* Initialize artifact date_created by default

0.2.4 (2020-07-16)
------------------

* FileArtifacts can be directories
* Artifacts now have a `meta` field to which arbitrary JSON-serializable information can be attached
* If an exception is raised during task execution, the stack trace is printed
* pydot is now used for graph generation
* Artifact equality is checked by comparing location and hash

0.3.0 (2020-10-31)
------------------

* Serialization scheme moved from JSON to pickle to improve performance.
* "Values" no longer explicitly exist; anything that can be pickled is a valid value.
* Multiple pipelines with different names can be used in the same project.


