# Library dependencies for the python code.  You need to install these with
# `pip install -r requirements.txt` before you can run this.
# NOTE: all essential packages must be placed under a section named 'ESSENTIAL ...'
# so that the script `./scripts/check_requirements_and_setup.py` can find them.

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

# This installs Pytorch for CUDA 8 only. If you are using a newer version,
# please visit http://pytorch.org/ and install the relevant version.
torch>=0.4.1,<0.5.0

# Parameter parsing (but not on Windows).
jsonnet==0.10.0 ; sys.platform != 'win32'

# 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>=2.0,<2.1

# Used by span prediction models.
numpy

# Used for reading configuration info out of numpy-style docstrings.
numpydoc==0.8.0

# Used in coreference resolution evaluation metrics.
scipy
scikit-learn

# Write logs for training visualisation with the Tensorboard application
# Install the Tensorboard application separately (part of tensorflow) to view them.
tensorboardX==1.2

# Required by torch.utils.ffi
cffi==1.11.2

# aws commandline tools for running on Docker remotely.
# second requirement is to get botocore < 1.11, to avoid the below bug
awscli>=1.11.91

# Accessing files from S3 directly.
boto3

# REST interface for models
flask==0.12.4
flask-cors==3.0.3
gevent==1.3.6

# Used by semantic parsing code to strip diacritics from unicode strings.
unidecode

# Used by semantic parsing code to parse SQL
parsimonious==0.8.0

# Used by semantic parsing code to format and postprocess SQL
sqlparse==0.2.4

# For text normalization
ftfy

#### ESSENTIAL LIBRARIES USED IN SCRIPTS ####

# Plot graphs for learning rate finder
matplotlib==2.2.3

# Used for downloading datasets over HTTP
requests>=2.18

# progress bars in data cleaning scripts
tqdm>=4.19

# In SQuAD eval script, we use this to see if we likely have some tokenization problem.
editdistance

# For pretrained model weights
h5py

# For timezone utilities
pytz==2017.3

# Reads Universal Dependencies files.
conllu==0.11

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

# 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

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

# Required to mock out `requests` calls
responses>=0.7

# For mocking s3.
moto==1.3.4

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

# Checks style, syntax, and other useful errors.
pylint==1.8.1

# Tutorial notebooks
# see: https://github.com/jupyter/jupyter/issues/370 for ipykernel
ipykernel<5.0.0
jupyter

# Static type checking
mypy==0.521

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

# Allows codecov to generate coverage reports
coverage
codecov

# Required to run sanic tests
aiohttp

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

# Builds our documentation.
sphinx==1.5.3

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

# doc theme
sphinx_rtd_theme

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

# Pypi uploads
twine==1.11.0

#### GENERATOR-RELATED PACKAGES ####

# Used by AddSent.
psutil
pattern

# Used by SWAG.
allennlp
num2words
