# Pip constraints file.
#
# This file specifies constraints that define the minimum versions of any
# direct and indirect dependent packages for both install and develop.
# They are used when setting up test environments with the minimum versions of
# any dependent packages.


# Dependencies for installation with Pip (must be installed in a separate pip call)
#
# Info: OS-installed package versions for some Linux distros:
# * RHEL/CentOS 7.4.1708:
#   Python      2.7.5     2013-05-15
#   pip         8.1.2     2016-05-11 (epel)
#   setuptools  0.9.8     2013-07-25
#   wheel       0.24.0    2014-07-06 (epel)
# * Ubuntu 16.04.03:
#   Python      2.7.12    2016-11-19
#   pip         8.1.1     2016-03-17
#   setuptools  20.7.0    2016-04-10
#   wheel       0.29.0    2016-02-06
# * Ubuntu 17.04:
#   Python      2.7.12    2016-11-19
#   pip         9.0.1     2016-11-06
#   setuptools  33.1.1    2017-01-16
#   wheel       0.29.0    2016-02-06
# * Ubuntu 18.04:
#   Python      2.7.15
#   Python3     3.6.5
#   pip         9.0.1     (py2+py3)
#   setuptools  39.0.1    (py2+py3)
#   wheel       0.30.0    (py2+py3)
# * Ubuntu 19.04:
#   Python      2.7.16
#   Python3     3.7.3
#   pip         18.1      (py2+py3)
#   setuptools  40.8.0    (py2+py3)
#   wheel       0.32.3    (py2+py3)
# * Versions installed on Python 3.8 on Appveyor
#   Python38    3.8.0
#   pip         19.3.1
#   setuptools  41.6.0
#   wheel       0.33.6

# For Python up to Python 3.7, we use the versions from Ubuntu 17.04:
pip==9.0.1; python_version <= '3.7'
setuptools==33.1.1; python_version <= '3.7'
wheel==0.29.0; python_version <= '3.7'

# For Python 3.8 and above, we use the versions from Python 3.8.0:
pip==19.3.1; python_version >= '3.8'
setuptools==41.6.0; python_version >= '3.8'
wheel==0.33.6; python_version >= '3.8'


# Direct dependencies for install (must be consistent with requirements.txt)

M2Crypto==0.31.0
mock==2.0.0
ordereddict==1.1
ply==3.10
PyYAML==3.11; python_version == '2.6'
PyYAML==5.1; python_version >= '2.7'
six==1.10.0
backport_collections==0.1; python_version == '2.6'

# Indirect dependencies for install (not in requirements.txt)

typing==3.6.1  # from M2Crypto
# funcsigs; is covered in direct deps for develop, from mock


# Direct dependencies for develop (must be consistent with dev-requirements.txt)

# Unit test (imports into testcases):
unittest2==1.1.0
pytest==3.0.7; python_version == '2.6'
pytest==4.3.1; python_version > '2.6'
testfixtures==4.3.3; python_version == '2.6'
testfixtures==6.9.0; python_version > '2.6'
httpretty==0.8.14; python_version == '2.6'
httpretty==0.9.5; python_version > '2.6'
lxml==4.2.4; python_version <= '3.7'
lxml==4.4.1; python_version >= '3.8'
requests==2.19.1; python_version == '2.6'
requests==2.20.1; python_version > '2.6'
decorator==4.0.11
yamlordereddictloader==0.4.0
funcsigs==1.0.2
FormEncode==1.3.1

# Coverage reporting (no imports, invoked via coveralls script):
python-coveralls==2.9.2
coverage==4.5.3

# Safety CI by pyup.io
safety==1.8.4
dparse==0.4.1

# Unit test (no imports, invoked via py.test script):
pytest-cov==2.4.0

# Tox
tox==2.0.0

# Sphinx (no imports, invoked via sphinx-build script):
Sphinx==1.7.6
sphinx-git==10.1.1
GitPython==2.1.1
sphinxcontrib-fulltoc>=1.2.0

# PyLint (no imports, invoked via pylint script) - does not support py3:
pylint==1.6.4; python_version == '2.7'
pylint==2.2.2; python_version >= '3.4'
astroid==1.4.9; python_version == '2.7'
astroid==2.1.0; python_version >= '3.4'

# Flake8 and dependents (no imports, invoked via flake8 script):
#
flake8==2.6.2; python_version == '2.6'
mccabe==0.5.3; python_version == '2.6'
pycodestyle==2.0.0; python_version == '2.6'
pyflakes==1.2.3; python_version == '2.6'
#
flake8==3.7.0; python_version > '2.6'
mccabe==0.6.1; python_version > '2.6'
pycodestyle==2.5.0; python_version > '2.6'
pyflakes==2.1.1; python_version > '2.6'

# Twine (no imports, invoked via twine script):
twine==1.8.1

# Jupyter Notebook (no imports, invoked via jupyter script):
jupyter==1.0.0

# Pywin32 is used (at least?) by jupyter.
# Pywin32 version 226 needs to be excluded, see issue #1946.
# Pywin32 version 222 is inconsistent in its 32-bit/64-bit support on py37
# Pywin32 version 225+ provides wheel files for py38, but does not advertise
# py38 on Pypi. That causes pip to fail with any use of it in the constraints
# file.
pywin32==222; sys_platform == 'win32' and python_version <= '3.6'
pywin32==223; sys_platform == 'win32' and python_version == '3.7'
# TODO: Re-enable once pywin32 fixes its Python version advertising on Pypi
#       (see issue #1975).
# pywin32==225; sys_platform == 'win32' and python_version >= '3.8'

# Table output formatter used by the manual performance tests to display
# timing results
tabulate >= 0.8.3

# Performance profiling tools
pyinstrument >=3.0.1
pyinstrument-cext==0.2.0  # from pyinstrument

typed-ast==1.3.0; python_version >= '3.4' and python_version < '3.8'
typed-ast==1.4.0; python_version >= '3.8'

# Indirect dependencies for develop (not in dev-requirements.txt)

alabaster==0.7.9
appnope==0.1.0
args==0.1.0
Babel==2.3.4
bleach==2.1.4
chardet==3.0.2
clint==0.5.1
coverage==4.0.3
decorator==4.0.10
docutils==0.13.1
entrypoints==0.2.2
filelock==3.0.0
gitdb2==2.0.0
html5lib==0.999999999
idna==2.5
imagesize==0.7.1
ipykernel==4.5.2
ipython==5.1.0
ipython_genutils==0.1.0
ipywidgets==5.2.2
Jinja2==2.8
jsonschema==2.5.1
jupyter_client==4.4.0
jupyter_console==5.0.0
jupyter_core==4.2.1
linecache2==1.0.0
MarkupSafe==0.23
mistune==0.8.1
nbconvert==5.0.0
nbformat==4.2.0
notebook==4.3.1
pandocfilters==1.4.1
pexpect==4.2.1
pickleshare==0.7.4
pkginfo==1.4.1
prompt-toolkit==1.0.15
ptyprocess==0.5.1
# py version is determined by pytest:
py==1.4.32; python_version == '2.6'
py==1.5.1; python_version > '2.6'
Pygments==2.1.3
pytz==2016.10
pyzmq==16.0.4
qtconsole==4.2.1
requests-toolbelt==0.7.0
sh==1.12.14
simplegeneric==0.8.1
smmap2==2.0.1
snowballstemmer==1.2.1
terminado==0.6
testpath==0.3
toml==0.10.0
tornado==4.4.2
traceback2==1.4.0
traitlets==4.3.1
urllib3==1.23
virtualenv==14.0.0
wcwidth==0.1.7
widgetsnbextension==1.2.6
