# Library dependencies for the python code.  You need to install these with
# `pip install -r requirements.txt` before you can run this.

#### ESSENTIAL LIBRARIES FOR MAIN FUNCTIONALITY ####

# Neural net and related libraries.
keras==2.0.5
h5py
scikit-learn

## Tensorflow Requirements ##
# Tensorflow is required to run this code but depends on specific configurations. Install from:
# https://www.tensorflow.org/get_started/os_setup#overview
# If you want to use the GPU version, you will also need Nvidia's CUDA toolkit and cuDNN:
# https://developer.nvidia.com/cuda-downloads
# https://developer.nvidia.com/cudnn
# Note that if you want to use the GPU version, you have to `pip uninstall tensorflow`
# and `pip install tensorflow-gpu`, since both cannot coexist. 
tensorflow>=1.0.1

# These are for running this as an Aristo solver using gRPC.
grpcio
grpcio-tools
pyhocon

# Used to pickle more complex structures
dill

# Type checking for python
typing

#### NICE-TO-HAVE LIBRARIES FOR MAIN CODE ####

# Adds an @overrides decorator for better documentation and error checking when using subclasses.
overrides

# Used by some old code.  We moved away from it because it's too slow, but some old code still
# imports this.
nltk

# Mainly used for the faster tokenizer.
spacy

# Used by span prediction models.
numpy
matplotlib

# aws commandline tools for running on Docker remotely.
awscli>=1.11.91

#### TESTING-RELATED PACKAGES ####

# Checks style, syntax, and other useful errors
pylint==1.6.5

# We'll use pytest to run our tests; this isn't really necessary to run the code, but it is to run
# the tests.  With this here, you can run the tests with `py.test` from the base directory.
pytest

# Makes it so that pytest can handle the code structure we use, with src/main/python, and src/test.
pytest-pythonpath

# Allows generation of coverage reports with pytest.
pytest-cov

# Allows marking tests as flaky, to be rerun if they fail
flaky

# Allows codecov to generate coverage reports
coverage
codecov

#### LIBRARIES USED IN SCRIPTS ####
# argument parsing in for data cleaning scripts
argparse

# Used to read the NewsQA CSV and output a clean one.
pandas==0.19.2

# progress bars in data cleaning scripts
tqdm

#### DOC-RELATED PACKAGES ####

# Builds our documentation.
sphinx==1.5.3

# Watches the documentation directory and rebuilds on changes.
sphinx-autobuild

# enables numpydoc formatting in sphinx
numpydoc

# doc theme
sphinx_rtd_theme

# Only used to convert our readme to reStructuredText on Pypi.
pypandoc

# Pypi uploads
twine
