# 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
#
# Info: Python version supported by base packages (added / removed)
# * Python 2.6 support:
#   pip         ? / 10.0.0
#   setuptools  ? / 37.0.0
#   wheel       ? / 0.30.0
# * Python 2.7 support:
#   pip         ?
#   setuptools  ? / 45.0.0
#   wheel       ?
# * Python 3.4 support:
#   pip         ? / 19.2
#   setuptools  ? / 44.0.0
#   wheel       ? / 0.34.0
# * Python 3.5 support:
#   pip         8.0
#   setuptools  18.3
#   wheel       0.30.0
# * Python 3.6 support:
#   pip         10.0.0
#   setuptools  34.0.0
#   wheel       0.30.0
# * Python 3.7 support:
#   pip         18.1
#   setuptools  40.6.0
#   wheel       0.32.0
# * Python 3.8 support:
#   pip         19.3.1
#   setuptools  41.5.0
#   wheel       0.33.5

# For the base packages, we use the versions from Ubuntu 18.04 as a general
# minimum, and then increase it to the first version that introduced support
# for a particular Python version:
pip==9.0.1; python_version <= '3.5'
pip==10.0.0; python_version == '3.6'
pip==18.1; python_version == '3.7'
pip==19.3.1; python_version >= '3.8'
setuptools==33.1.1; python_version == '2.6'
setuptools==39.0.1; python_version >= '2.7' and python_version <= '3.6'
setuptools==40.6.0; python_version == '3.7'
setuptools==41.5.0; python_version >= '3.8'
wheel==0.29.0; python_version == '2.6'
wheel==0.30.0; python_version >= '2.7' and python_version <= '3.6'
wheel==0.32.0; python_version == '3.7'
wheel==0.33.5; 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.3; python_version == '2.7'  # PyYAML 5.3 fixes narrow build error
PyYAML==5.1; python_version >= '3.4'
six==1.10.0; python_version <= '3.7'
six==1.10.0; python_version < '3.8'
six==1.12.0; python_version >= '3.8'  # required by virtualenv==20.0.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):
packaging==16.6
funcsigs==1.0.2; python_version < '3.3'
unittest2==1.1.0; python_version == '2.6'
pytest==3.2.0; python_version == '2.6'
pytest==4.3.1; python_version >= '2.7' and python_version <= '3.6'
pytest==4.4.0; python_version >= '3.7'
# py version is determined by pytest:
py==1.4.34; python_version == '2.6'
py==1.5.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.3; python_version >= '3.8'
requests==2.19.1; python_version == '2.6'
requests==2.20.1; python_version > '2.6'
importlib-metadata==0.12; python_version >= '2.7' and python_version <= '3.7'
pytz==2016.10

# Virtualenv
virtualenv==14.0.0; python_version < '3.5'
virtualenv==16.1.0; python_version >= '3.5' and python_version < '3.8'
virtualenv==20.0.0; python_version >= '3.8'  # requires six<2,>=1.12.0

# Unit test (indirect dependencies):
pluggy==0.5.0; python_version == '2.6'
pluggy==0.7.1; python_version >= '2.7' and python_version <= '3.6'
pluggy==0.13.0; python_version >= '3.7'
decorator==4.0.11
yamlordereddictloader==0.4.0; python_version == '2.6'
yamlloader==0.5.5; python_version > '2.6'
# PyYAML is covered in direct deps for install
FormEncode==1.3.1

# Coverage reporting (no imports, invoked via coveralls script):
coverage==4.5
python-coveralls==2.9.2
pytest-cov==2.4.0; python_version == '2.6'
pytest-cov==2.7.0; python_version >= '2.7'

# Safety CI by pyup.io
safety==1.8.4; python_version >= '2.7'
dparse==0.4.1; python_version >= '2.7'

# Tox
tox==2.5.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
Pygments==2.1.3

# 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==3.7.0; python_version >= '2.7'
mccabe==0.6.1; python_version >= '2.7'
pycodestyle==2.5.0; python_version >= '2.7'
pyflakes==2.1.1; python_version >= '2.7'
entrypoints==0.3.0; python_version >= '2.7'
functools32==3.2.3.post2; python_version < '3.2'

# Twine (no imports, invoked via twine script):
twine==1.8.1; python_version >= '2.7'
readme-renderer==23.0; python_version >= '2.7'

# Jupyter Notebook (no imports, invoked via jupyter script):
# The jupyter package is not installed on Python 3.4 on Windows, because its
# (indirectly) dependent pywin32 package is not available on Pypi for
# Python 3.4.
jupyter==1.0.0; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
ipython==5.1.0; python_version == '2.7'
ipython==6.0; python_version == '3.4' and sys_platform != 'win32'
ipython==7.0; python_version == '3.5'
ipython==7.10; python_version >= '3.6'
ipykernel==4.5.2; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
ipython_genutils==0.1.0; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
ipywidgets==5.2.2; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
jupyter_console==5.0.0; python_version == '2.7'
jupyter_console==5.0.0; python_version == '3.4' and sys_platform != 'win32'
jupyter_console==6.0.0; python_version >= '3.5'
jupyter_client==4.4.0; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
jupyter_core==4.2.1; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
nbconvert==5.0.0; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
nbformat==4.2.0; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
notebook==4.3.1; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')
pyrsistent==0.14.0; python_version >= '2.7' and (python_version != '3.4' or sys_platform != 'win32')

# 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.
# There is no version of pywin32 for py34.
pywin32==222; sys_platform == 'win32' and python_version == '2.7'
pywin32==222; sys_platform == 'win32' and python_version >= '3.5' 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
docutils==0.13.1
filelock==3.0.0
gitdb2==2.0.0
html5lib==0.999999999
idna==2.5
imagesize==0.7.1
ipykernel==4.5.2
ipython_genutils==0.1.0
ipywidgets==5.2.2
Jinja2==2.8
jsonschema==2.5.1
jupyter_client==4.4.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==2.0.1
ptyprocess==0.5.1
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
wcwidth==0.1.7
widgetsnbextension==1.2.6
