# This takes the format of a pip requirements.txt file, but it's not
# used for that because some of these requirements are not pip-installable.
# It's used by our script check_dependencies.py.

# This file also contains documentation on why we pin to the versions
# we do. Ubuntu 14.04 LTS is the linux distro we officially support, so we
# pay attention to the package versions available on that platform. As of
# this writing, Ubuntu 14.04 is exactly 2 years old so its packages are
# getting a bit out of date. A lot of our minimum versions are bounded by
# what Ubuntu 14.04 supports.

# Packaging is only used by the dependency checker which uses some simple
# core functionality to read this file. Any version will work.
packaging

# PyDicom is pure Python and is on PyPI, so it's easy to get any version
# we want. It has been known to make API changes in micro revisions that
# can break code so it's a good idea to pin to a specific version.
pydicom==0.9.9

# PyGamma has wheels on PyPI as of version 4.3.3. Older versions work fine too.
pygamma>=4.3.2

# HLSVDPro has wheels on PyPI. Since we distribute it and it doesn't yet have
# any users outside of Vespa, the latest version will be Vespa-compatible.
hlsvdpro

# Ubuntu 14.04 has numpy 1.8.1, so that sets the lower bound. Even though
# numpy 2.0 doesn't exist yet, we assume it might contain breaking API
# changes so we avoid using it.
numpy>=1.8.0,<2.0

# The same logic that applies to numpy applies to scipy as well. Ubuntu 14.04
# has scipy 0.13.0. We have no upper bound since there's no obvious version
# number at which it might introduce a breaking change.
scipy>=0.13.0

# Ubuntu 14.04 has matplotlib 1.3, so that sets the lower bound. matplotlib 1.5
# requires wxPython to be at least 2.8.12, according to this:
# http://matplotlib.org/users/whats_new.html#new-in-matplotlib-1-5
# Fortunately that's Vespa's lower bound on wxPython (see below), so we don't
# have a version conflict with matplotlib 1.5. As of this writing (April 2016),
# 1.5.1 is the most current version of matplotlib. We set <1.6 as an upper
# bound because we don't know what changes it will contain.
matplotlib==2.2.3

# We would like to pin to PyWavelets 0.3.0, but Ubuntu 14.04 only offers
# PyWavelets 0.2.2, thus the range below.
PyWavelets>=0.2.2,<=0.3.0

# We would like to move to wx >= 3.0, but Ubuntu 14.04 only offers 2.8.12.
# As of this writing (April 2016), wx 3.1 does not yet exist so we don't know
# whether or not we're compatible with it.
wxPython>=4.0.4,<=4.0.6


# Proposed versions of these packages in Ubuntu 16.04 (xenial) which is neither
# finalized nor released yet, are similar to those in Anaconda 4.0.0.
# Package      Ubuntu 16.04   Anaconda 4.0
# -----------+--------------+--------------
# numpy      |    1.11.0    |    1.10.4
# scipy      |    0.17.0    |    0.17.0
# matplotlib |     1.5.1    |     1.5.1
# PyWavelets |     0.3.0    |     N/A
# wxPython   |     3.0.2    |     3.0.0
