# Additional pip requirements file for pywbemtools development dependencies.
#
# The order of packages is significant, because pip processes them in the order
# of appearance.

# Make sure that the package versions in minimum-constraints.txt are also
# the minimum versions required in requirements.txt and dev-requirements.txt.


# Direct dependencies:

# Unit test (imports into testcases):
# pytest 5.0.0 requires Python version 3.5
# pytest 4.3.1 solves an issue on Python 3 with minimum package levels
pytest>=4.3.1,<5.0.0; python_version < '3.5'
pytest>=4.3.1; python_version >= '3.5'
funcsigs>=1.0.2; python_version == '2'
# Pluggy 0.12.0 has a bug causing pytest plugins to fail loading on py38
pluggy>=0.13.0

# Coverage reporting (no imports, invoked via coveralls script):
# coverage 5.0 has removed support for py34
coverage>=4.5.2,<5.0
# python-coveralls 2.9.2 no longer has requirement coverage==4.0.3.
python-coveralls>=2.9.2
pytest-cov>=2.7.0

# Safety CI by pyup.io
safety>=1.8.4
# dparse 0.5.0 has an infinite recursion issue on Python 2.7,
#   see https://github.com/pyupio/dparse/issues/46
dparse>=0.4.1,<0.5.0; python_version == '2.7'
dparse>=0.4.1; python_version >= '3.4'

# 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.4.0 has removed support for Python 3.4
Pygments>=2.1.3; python_version == '2.7'
Pygments>=2.1.3,<2.4.0; python_version == '3.4'
Pygments>=2.1.3; python_version >= '3.5'

# PyLint (no imports, invoked via pylint script)
# Pylint requires astroid
# Pylint 1.x supports py2.7 and py3.4/5/6 but not py3.7+
# Pylint 2.x supports py3.4+
pylint>=1.6.4,<2.0.0; python_version == '2.7'
pylint>=2.2.2; python_version >= '3.4'

# Flake8 and dependents (no imports, invoked via flake8 script):
flake8>=3.7.9
mccabe>=0.6.0
pycodestyle>=2.5.0
pyflakes>=2.1.0
entrypoints>=0.3.0

# Twine (no imports, invoked via twine script):
twine>=1.8.1
# readme-renderer 25.0 has removed support for Python 3.4
# readme-renderer 23.0 has made cmarkgfm part of extras (it fails on Cygwin)
readme-renderer>=23.0; python_version == '2.7'
readme-renderer>=23.0,<25.0; python_version == '3.4'
readme-renderer>=23.0; python_version >= '3.5'

# Jupyter Notebook (no imports, invoked via jupyter script)
# TODO Future: currently jupyter not used by pywbemtools
# jupyter>=1.0.0


# Temporary workarounds on indirectly used packages:

# The tornado package is used by ipykernel which is used by jupyter.
# Tornado 5.0.0 and 5.0.1 rejects installation if the Python ssl module
# does not have certain symbols required by Tornado. This issue exists for
# example with Python 2.7.6 on Ubuntu 14.04, but not with Python 2.7.5 on
# RHEL 7.4. This can be checked with:
#   python -c "import ssl; ssl.SSLContext; ssl.create_default_context; ssl.match_hostname"
# Other projects have the same issue:
#   https://github.com/floydhub/dl-docker/issues/84
# The following is a circumvention of this issue that nails the tornado
# version to below 5.0 on Python 2.
# TODO: Follow up on resolution of this issue.
# TODO Future: enable with ipythontornado<5.0; python_version <= '2.7'
