Metadata-Version: 2.1
Name: dequindre
Version: 0.9.0
Summary: Dequindre /de-KWIN-der/ (n.): A minimalist scheduler.
Home-page: https://github.com/vogt4nick/dequindre
Author: Nick Vogt
Author-email: vogt4nick@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/x-rst

=====================================================
Dequindre /de-KWIN-der/ (n.): A minimalist scheduler.
=====================================================

.. image:: https://img.shields.io/pypi/pyversions/dequindre.svg
    :alt: Supported Versions
    :target: https://pypi.org/project/dequindre/

.. image:: https://img.shields.io/readthedocs/dequindre.svg
    :alt: Documentation
    :target: https://dequindre.readthedocs.io/en/latest/

.. image:: https://img.shields.io/pypi/v/dequindre.svg?color=blue
    :alt: Version
    :target: https://pypi.org/project/dequindre/

.. .. image:: https://img.shields.io/github/last-commit/vogt4nick/dequindre.svg
..     :alt: Last Commit
..     :target: https://github.com/vogt4nick/dequindre

.. image:: https://img.shields.io/github/license/vogt4nick/dequindre.svg
    :alt: License
    :target: https://github.com/vogt4nick/dequindre

.. image:: https://img.shields.io/pypi/dw/dequindre.svg
    :alt: PyPI - Downloads
    :target: https://pypi.org/project/dequindre/

.. .. image:: https://img.shields.io/github/issues/vogt4nick/dequindre.svg
..     :alt: Count Open Issues
..     :target: https://pypi.org/project/dequindre/


Vision: Simplify Workflow Automation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``dequindre`` aims to simplify workflow automation. It is part of a larger 
vision to teach the fundamentals and best practices to practicing and aspiring
data scientists and data engineers.


What is dequindre?
^^^^^^^^^^^^^^^^^^

``dequindre`` is a minimalist scheduler you can use to:

- quickly configure python workflows at home or at work,
- run dependent tasks in separate python environments, and
- learn the fundamentals and best practices of scheduling workflows.


Features
^^^^^^^^

- **Automated workflow scheduling**
- **Pure Python**: Relies entirely on Python built-ins
    - This reduces bugs, complexity, and prevents dependency hell
- **Cross-Python compatible**: Supports Python 2 and Python 3
- **Cross-platform**: Windows and Unix style OS environments
- **Run your Python tasks in any pre-defined environments**
    - dequindre facilitates **virtualenv**, **conda**, and **pipenv** environments
- **Supports dynamic workflow configuration** also seen in Airflow
- **Documented** examples and configuration


Getting Started
^^^^^^^^^^^^^^^

Installation
~~~~~~~~~~~~

Install dequindre from PyPI with

.. code-block:: bash

    $ pip install dequindre

Conda users can use pip too. Since dequindre has no third-party dependencies, 
conda doesn't benefit from tracking dequindre's dependencies.

Basic Example
~~~~~~~~~~~~~

In the REPL or in a ``schedule.py`` file,  

.. code-block:: python

    >>> from dequindre import Task, DAG, Dequindre

    >>> ## define tasks and environments
    >>> pour_water = Task('./tea-tasks/pour_water.py')
    >>> boil_water = Task('./tea-tasks/boil_water.py')
    >>> prep_infuser = Task('./tea-tasks/prep_infuser.py')
    >>> steep_tea = Task('./tea-tasks/steep_tea.py')

    >>> ## define runtime dependencies
    >>> make_tea = DAG(dependencies={
    ...     boil_water: {pour_water},
    ...     steep_tea: {boil_water, prep_infuser}
    ... })

    >>> ## run tasks
    >>> dq = Dequindre(make_tea)
    >>> dq.get_schedules()
    defaultdict(<class 'set'>, {
        1: {Task(prep_infuser.py), Task(pour_water.py)},  
        2: {Task(boil_water.py)},  
        3: {Task(steep_tea.py)}})

    >>> ## dq.run_tasks() can run the files if they exist. 


License
^^^^^^^

This project is licensed under the MIT License - see the LICENSE_ file for details.

.. _LICENSE: https://github.com/vogt4nick/dequindre/blob/master/LICENSE


Versioning
^^^^^^^^^^

We use SemVer_ for versioning. For the versions available, see the `tags on this repository`_.

.. _SemVer: http://semver.org/
.. _tags on this repository: https://github.com/vogt4nick/dequindre/tags


Contribute
^^^^^^^^^^

If you're interested in contributing to Dequindre, `raise an issue`_, make a 
pull request to `dev`, and reach out to the author, vogt4nick.

.. _raise an issue: https://github.com/vogt4nick/dequindre/issues

Please read `our contribution guidelines`_ for details on our code of conduct, 
and the process for submitting pull requests to us.

.. _our contribution guidelines: https://github.com/vogt4nick/dequindre/blob/master/CONTRIBUTE.rst


Acknowledgements
^^^^^^^^^^^^^^^^

Thank you, Dynatrace, for facilitating the early development of Dequindre 
during Innovation Day, February 2019.  


