# 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>=3.3.0,<5.0.0; python_version <= '3.4'
pytest>=3.3.0; python_version >= '3.5'
funcsigs>=1.0.2; python_version == '2'

# Note: python-coveralls 2.9.1 has requirement coverage==4.0.3, and therefore
# must be stated before pytest-cov, whose 2.5.1 specifies requirement
# coverage>=3.7.1 and thus would get coverage 4.5 1 if processed first.
python-coveralls>=2.8.0;

# Safety CI by pyup.io
safety>=1.8.4

# TODO: Remove the pinning of the pytest-cov version again once issue
#       https://github.com/z4r/python-coveralls/issues/66
#       is resolved.
#       Background: pytest-cov 2.6.0 has increased the version
#       requirement for the coverage package from >=3.7.1 to
#       >=4.4, which is in conflict with the version requirement
#       defined by the python-coveralls package for coverage==4.0.3.
pytest-cov>=2.4.0,<2.6

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

# 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.2.1;

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

# 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'

