# Pip requirements file for development dependencies.


# Include install dependencies
-r requirements.txt


# Direct dependencies for development and indirect dependencies for development
# that are needed for some reason (must be consistent with minimum-constraints.txt)

# 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 == '2.7'
pytest>=4.3.1; python_version >= '3.6'
# funcsigs is already specified in requirements.txt due to a dependency issue.
# funcsigs>=1.0.2; python_version == '2.7'
# Pluggy 0.12.0 has a bug causing pytest plugins to fail loading on py38
pluggy>=0.13.0
# pylint>=2.15 requires colorama>=0.4.5
colorama>=0.3.9,<0.4.0; python_version == '2.7'
colorama>=0.4.5; python_version >= '3.6'
# flake8 up to 6.0.0 has not yet adjusted to the removed interfaces in importlib-metadata 5.0 and fails with AttributeError
# tox 3.14 requires importlib-metadata<1,>=0.12 on Python <=3.7
importlib-metadata>=2.1.3,<5.0.0; python_version <= '3.5'
importlib-metadata>=4.8.3,<5.0.0; python_version == '3.6'
importlib-metadata>=6.6.0; python_version >= '3.7'

# Coverage reporting (no imports, invoked via coveralls script):
# coverage is pinned to <7.0 to speed up pip; coveralls 3.3 also pins coverage<7.0
coverage>=5.0,<7.0
pytest-cov>=2.7.0
# coveralls 2.0 has removed support for Python 2.7
git+https://github.com/andy-maier/coveralls-python.git@andy/add-py27#egg=coveralls; python_version == '2.7'
coveralls>=3.3.0; python_version >= '3.6'

# Safety CI by pyup.io
# Safety is run only on Python >=3.7
# Safety 3.0.0 requires exact versions of authlib==1.2.0 and jwt==1.3.1.
safety>=3.0.1; python_version >= '3.7'
# typer >=0.17.0 causes import issue for safety, see https://github.com/pyupio/safety/issues/778
typer>=0.12.1,<0.17.0; python_version >= '3.7'
typer-cli>=0.12.1,<0.17.0; python_version >= '3.7'
typer-slim>=0.12.1,<0.17.0; python_version >= '3.7'

# Tox
tox==2.5.0
# tox 3.17 requires six>=1.14.0

# more-itertools version 8.11 requires python 3.6, See issue #2796
more-itertools>=4.0.0,!=8.11.0; python_version < '3.6'
more-itertools>=4.0.0; python_version >= '3.6'

# Virtualenv
virtualenv>=16.1.0,!=20.0.19,!=20.0.32; python_version <= '3.6'
virtualenv>=20.26.6; python_version >= '3.7'

# Sphinx (no imports, invoked via sphinx-build script):
# Sphinx is used only on Python>=3.8
# Sphinx 6.0.0 started requiring Python>=3.8
# Sphinx 7.2.0 started requiring Python>=3.9
Sphinx>=7.1.0; python_version == '3.8'
Sphinx>=7.2.0; python_version >= '3.9'
# Sphinx 7.1.0 pins docutils to <0.21
docutils>=0.18.1,<0.21; python_version == '3.8'
sphinx-git>=10.1.1; python_version >= '3.8'
GitPython>=3.1.41; python_version >= '3.8'
Pygments>=2.15.0; python_version >= '3.8'
sphinx-rtd-theme>=2.0.0; python_version >= '3.8'
sphinxcontrib-applehelp>=1.0.4; python_version >= '3.8'
sphinxcontrib-devhelp>=1.0.2; python_version >= '3.8'
sphinxcontrib-htmlhelp>=2.0.1; python_version >= '3.8'
sphinxcontrib-jquery>=4.1; python_version >= '3.8'
sphinxcontrib-jsmath>=1.0.1; python_version >= '3.8'
sphinxcontrib-qthelp>=1.0.3; python_version >= '3.8'
sphinxcontrib-serializinghtml>=1.1.5; python_version == '3.8'
sphinxcontrib-serializinghtml>=1.1.9; python_version >= '3.9'
sphinxcontrib-websupport>=1.2.4; python_version >= '3.8'
autodocsumm>=0.2.12; python_version >= '3.8'
Babel>=2.9.1; python_version >= '3.8'

# PyLint (no imports, invoked via pylint script)
# Pylint requires astroid
# Pylint 1.x / astroid 1.x supports py27 and py34/35/36
# Pylint 2.0 / astroid 2.0 removed py27, added py37
# Pylint 2.7 / astroid 2.5 removed support for py35
# Pylint 2.7-2.9 had issue https://github.com/PyCQA/pylint/issues/4118 (issues #2672, #2673)
# Pylint 2.14 / astroid 2.11 support wrapt 1.14 which is required for Python 3.11
# Pylint 2.15 / astroid 2.12 is needed to circumvent issue https://github.com/PyCQA/pylint/issues/7972 on Python 3.11
pylint>=2.13.0; python_version >= '3.6' and python_version <= '3.10'
pylint>=2.15.0; python_version == '3.11'
pylint>=3.0.1; python_version >= '3.12'
astroid>=2.11.0; python_version >= '3.6' and python_version <= '3.10'
astroid>=2.12.4; python_version == '3.11'
astroid>=3.0.1; python_version >= '3.12'
# astroid 2.13.0 uses typing-extensions on Python<=3.10 but misses to require it. See https://github.com/PyCQA/astroid/issues/1942
typing-extensions>=3.10; python_version >= '3.6' and python_version <= '3.10'
# typed-ast is used by astroid on py34..py37
typed-ast>=1.4.0,<1.5.0; python_version >= '3.6' and python_version < '3.8' and implementation_name=='cpython'
# lazy-object-proxy is used by astroid
lazy-object-proxy>=1.4.3; python_version >= '3.6'
# wrapt 1.13.0 started depending on MS Visual C++ 9.0 on Python 2.7 on Windows,
#   which is not available by default on GitHub Actions
# wrapt 1.14.0 started supporting Python 3.11 by accomodating the removed inspect.formatargspec
wrapt>=1.12; python_version >= '3.6' and python_version <= '3.10'
wrapt>=1.14; python_version >= '3.11'
# isort 5.0.0 removed support for py27,py35
# isort 4.2.8 fixes a pylint issue with false positive on import order of ssl on Windows
# isort 4.3.8 fixes an issue with py310 and works on py310 (Note that isort 5.10.0 has official support for py310)
isort>=4.3.8
# Pylint 2.14 uses tomlkit>=0.10.1 and requires py>=3.7
tomlkit>=0.10.1; python_version >= '3.7'
# dill is used by pylint >=2.13
dill>=0.3.4; python_version >= '3.6' and python_version <= '3.10'
dill>=0.3.6; python_version >= '3.11'
# platformdirs is used by pylint starting with its 2.10
platformdirs>=2.2.0; python_version == '3.6'
platformdirs>=3.9.1; python_version >= '3.7'

# Flake8 and dependents (no imports, invoked via flake8 script):
# flake8 4.0.0 fixes an AttributeError on Python 3.10.
# flake8 4.0.1 fixes a TypeError on files with incorrect syntax.
flake8>=3.8.0; python_version <= '3.9'
flake8>=5.0.0; python_version >= '3.10'
mccabe>=0.6.0; python_version <= '3.9'
mccabe>=0.7.0; python_version >= '3.10'
pycodestyle>=2.6.0,<2.8.0; python_version == '2.7'
pycodestyle>=2.6.0; python_version >= '3.6' and python_version <= '3.9'
pycodestyle>=2.9.0; python_version >= '3.10'
pyflakes>=2.2.0,<2.4.0; python_version == '2.7'
pyflakes>=2.2.0; python_version >= '3.6' and python_version <= '3.9'
pyflakes>=2.5.0; python_version >= '3.10'
entrypoints>=0.3.0
functools32>=3.2.3.post2; python_version == '2.7'  # technically: python_version < '3.2'

# Ruff checker
ruff>=0.3.5; python_version >= '3.7'

# Twine (no imports, invoked via twine script):
# twine 2.0.0 has removed support for Python 2.7, 3.5
twine>=1.15.0,<2.0.0; python_version == '2.7'
twine>=2.0.0; python_version >= '3.6'
# 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; python_version >= '3.6'

# Package dependency management tools
pipdeptree>=2.2.0
# pip-check-reqs 2.1.1 removed support for Python 2.7 but does not declare that.
# pip-check-reqs 2.0.4 (last version with Python 2.7 support) still uses
#   pip._internal.download which was removed in pip 20.0. That pip version does
#   not yet have proper dependency handling, so we do not install pip-check-reqs
#   on Python 2.7.
# pip-check-reqs 2.3.2 is needed to have proper support for pip<=21.3.
# pip-check-reqs 2.4.0 requires Python>=3.8.
# pip-check-reqs 2.4.3 fixes a speed issue on Python 3.11 and requires pip>=21.2.4
# pip-check-reqs 2.5.0 has issue https://github.com/r1chardj0n3s/pip-check-reqs/issues/143
pip-check-reqs>=2.3.2; python_version >= '3.6' and python_version <= '3.7'
pip-check-reqs>=2.4.3,!=2.5.0; python_version >= '3.8' and python_version <= '3.11'
pip-check-reqs>=2.5.1; python_version >= '3.12'

# Jinja2 is used by Sphinx, and pip needs explicit versions for this
# otherwise indirect dependency.
Jinja2>=2.8.1; python_version <= '3.6'
Jinja2>=3.1.6; python_version >= '3.7'

# subprocess backport from python 3.2 to 2.7. See issue #1329
subprocess32>=3.5.4; python_version == '2.7'
