# hydra-zen
![image](brand/Hydra-Zen_logo_full_filled_bkgrnd_small.png)


<p align="center">
  <a href="https://pypi.python.org/pypi/hydra-zen">
    <img src="https://img.shields.io/pypi/v/hydra-zen.svg" alt="PyPI" />
  </a>
  <a>
    <img src="https://img.shields.io/badge/python-3.6%20&#8208;%203.9-blue.svg" alt="Python version support" />
  </a>
  <a href="https://github.com/mit-ll-responsible-ai/hydra-zen/actions?query=workflow%3ATests+branch%3Amain">
    <img src="https://github.com/mit-ll-responsible-ai/hydra-zen/workflows/Tests/badge.svg" alt="GitHub Actions" />
  <a href="https://github.com/mit-ll-responsible-ai/hydra-zen/actions?query=workflow%3ATests+branch%3Amain">
    <img src="https://img.shields.io/badge/coverage-100%25-green.svg" alt="Code Coverage" />
  <a href="https://hypothesis.readthedocs.io/">
    <img src="https://img.shields.io/badge/hypothesis-tested-brightgreen.svg" alt="Tested with Hypothesis" />
  </a>
  <a href="https://zenodo.org/badge/latestdoi/354130346">
    <img src="https://zenodo.org/badge/354130346.svg" alt="Cite Us" />
  </a>
  <p align="center">
    A library that facilitates configurable, reproducible, and scalable workflows, using Hydra.
  </p>
  <p align="center">
    Check out our <a href="https://mit-ll-responsible-ai.github.io/hydra-zen/">documentation</a> for more information.
  </p>
  <p align="center">
    Interested in machine learning? Check out our guide <a href="https://mit-ll-responsible-ai.github.io/hydra-zen/how_to/pytorch_lightning.html">for using PyTorch Lightning with hydra-zen.⚡</a>
  </p>
</p>


hydra-zen is a Python library that simplifies the process of writing code (research-grade or production-grade) that is:

- **Configurable**: you can configure all aspects of your code from a single interface (the command line or a single Python function).
- **Repeatable**: each run of your code will be self-documenting; the full configuration of your software is saved alongside your results.
- **Scalable**: launch multiple runs of your software, be it on your local machine or across multiple nodes on a cluster.

It builds off – and is fully compatible with – [Hydra](https://hydra.cc/), a framework for elegantly 
configuring complex applications. 

hydra-zen helps simplify the process of using Hydra by providing 
convenient functions for creating and validating configs, as well as launching Hydra jobs. It also provides novel 
functionality such as wrapped instantiation and meta fields in configs.
    
## Installation
`hydra-zen` is lightweight: its only dependencies are `hydra-core` and `typing-extensions`.

```shell script
pip install hydra-zen
```

## Contributing

(Still working on these docs...)

## Join the Discussion

Share ideas, ask questions, and chat with us over at [hydra-zen's discussion board](https://github.com/mit-ll-responsible-ai/hydra-zen/discussions).


## Disclaimer

DISTRIBUTION STATEMENT A. Approved for public release. Distribution is unlimited.

This material is based upon work supported by the Under Secretary of Defense for Research and Engineering under Air Force Contract No. FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Under Secretary of Defense for Research and Engineering.

A portion of this research was sponsored by the United States Air Force Research Laboratory and the United States Air Force Artificial Intelligence Accelerator and was accomplished under Cooperative Agreement Number FA8750-19-2-1000. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the United States Air Force or the U.S. Government. The U.S. Government is authorized to reproduce and distribute reprints for Government purposes notwithstanding any copyright notation herein.

© 2022 Massachusetts Institute of Technology.

Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014)

The software/firmware is provided to you on an As-Is basis

Delivered to the U.S. Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of this work other than as specifically authorized by the U.S. Government may violate any copyrights that exist in this work.

