# Pip requirements file for development.
#
# The order of packages is significant, because pip processes them in the order
# of appearance.
#
# Make sure that the minimum versions required in this file are consistent with
# the minimum versions specified in minimum-constraints.txt.

-r test-requirements.txt


# Indirect dependencies that must be handled early:

# importlib-metadata
# importlib.metadata was integrated to standard Python in Python 3.8, so as a
#   package it is only needed in Python<=3.7.
# importlib-metadata 5.0 removed interfaces, and in the version integrated to
#   Python, that was done in Python 3.12 which integrated importlib-metadata 6.5.
# flake8 4.0/5.0 requires importlib-metadata>=1.1.0,<4.3 on Python<=3.7. flake8
#   pins importlib-metadata (at least) because flake8 <6.0 has not yet adjusted
#   to the removed interfaces in importlib-metadata 5.0 / Python 3.12.
# virtualenv 20.16.3 started requiring importlib-metadata>=4.8.3
# virtualenv 20.22.0 started requiring importlib-metadata>=6.4.1
importlib-metadata>=2.1.3,<5; python_version <= '3.7'


# Direct dependencies:

# Coverage reporting (no imports, invoked via coveralls script):
# coveralls 3.3.0 pins coverage to <7.0, causing pip backtracking to happen. Pinning
#   it to <7.0 in this file saves the time for backtracking, but requires to
#   occasionally check for new versions of coveralls without pinning.
coverage>=5.0,<7.0
pytest-cov>=2.7.0
coveralls>=3.3.0

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

# Click is used by safety
# safety 2.2.0 requires Click >=8.0.2
Click>=8.0.2

# PyYAML is pulled in by dparse
# PyYAML 5.3.1 addressed issue 38100 reported by safety
PyYAML>=5.3.1

# Tox
# tox 3.17 requires six>=1.14.0 - covered in requirements.txt
# tox 3.21 requires importlib-metadata>=0.12 on Python<=3.7
tox>=3.21.0

# 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 2.10/ astroid 2.7 addresses issue https://github.com/PyCQA/pylint/issues/4118
# Pylint 2.14 / astroid 2.11 support wrapt 1.14 which is required for Python 3.11, but in addition:
# 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'
pylint>=2.15.0; python_version >= '3.7' and python_version <= '3.11'
pylint>=3.0.3; python_version >= '3.12'
astroid>=2.11.0; python_version == '3.6'
astroid>=2.12.4; python_version >= '3.7' and python_version <= '3.11'
astroid>=3.0.2; 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.7' and implementation_name=='cpython'
# lazy-object-proxy is used by astroid
lazy-object-proxy>=1.4.3
# wrapt 1.14.0 started supporting Python 3.11 by accomodating the removed inspect.formatargspec
wrapt>=1.14
# 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
# dill is used by pylint >=2.13
dill>=0.3.4; python_version == '3.6'
dill>=0.3.6; python_version >= '3.7' and python_version <= '3.11'
dill>=0.3.7; python_version >= '3.12'
# platformdirs is used by pylint starting with its 2.10
platformdirs>=2.2.0; python_version <= '3.11'
platformdirs>=3.9.1; python_version >= '3.12'

# Flake8 and dependents (no imports, invoked via flake8 script):
# flake8 6.0.0 dropped support for Python<=3.7
# flake8 4.0.0 fixed an AttributeError on Python 3.10
# flake8 4.0/5.0 requires importlib-metadata>=1.1.0,<4.3 on Python<=3.7. flake8
#   pins importlib-metadata (at least) because flake8 <6.0 has not yet adjusted
#   to the removed interfaces in importlib-metadata 5.0 / Python 3.12.
# flake8 3.8 requires pyflakes>=2.2.0,<2.3.0 and pycodestyle>=2.6.0a1,<2.7.0 and mccabe>=0.6.0,<0.7.0
# flake8 3.9 requires pyflakes>=2.3.0,<2.4.0 and pycodestyle>=2.7.0,<2.8.0 and mccabe>=0.6.0,<0.7.0
# flake8 4.0 requires pyflakes>=2.4.0,<2.5.0 and pycodestyle>=2.8.0,<2.9.0 and mccabe>=0.6.0,<0.7.0
# flake8 5.0 requires pyflakes>=2.5.0,<2.6.0 and pycodestyle>=2.9.0,<2.10.0 and mccabe>=0.7.0,<0.8.0
flake8>=3.9.0,<4.0.0; python_version <= '3.7'
flake8>=4.0.0,<5.0.0; python_version >= '3.8' and 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.7.0; python_version <= '3.7'
pycodestyle>=2.8.0; python_version >= '3.8' and python_version <= '3.9'
pycodestyle>=2.9.0; python_version >= '3.10'
pyflakes>=2.3.0; python_version <= '3.7'
pyflakes>=2.4.0; python_version >= '3.8' and python_version <= '3.9'
pyflakes>=2.5.0; python_version >= '3.10'
entrypoints>=0.3.0

# Twine (no imports, invoked via twine script):
twine>=3.0.0
# readme-renderer 23.0 has made cmarkgfm part of extras (it fails on Cygwin)
readme-renderer>=23.0

# Mypy (no imports, invoked via mypy script)
# Mypy 0.981 removed support for py36
mypy>=0.971; python_version == '3.6'
mypy>=1.2.0; python_version >= '3.7'

# Package dependency management tools
pipdeptree>=2.2.0
# pip-check-reqs 2.3.2 is needed to have proper support for pip>=21.3 and below.
# pip-check-reqs 2.4.3 fixes a speed issue on Python 3.11.
# 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'


# Indirect dependencies with special constraints:

# pytz (used by TBD)
pytz>=2019.1

# colorama (used by tox, pytest)
# tox 3.21.0 depends on colorama>=0.4.1 for platform_system == "Windows"
# pylint>=2.15 requires colorama>=0.4.5
colorama>=0.4.5


# Additional indirect dependencies are not specified in this file:

# alabaster
# args
# babel
# bleach
# certifi
# chardet
# contextlib2
# docopt
# gitdb
# idna
# imagesize
# isort
# Jinja2
# keyring
# lazy-object-proxy
# MarkupSafe
# pkginfo
# pyparsing
# requests
# requests-toolbelt
# rfc3986
# smmap
# snowballstemmer
# sphinxcontrib-applehelp
# sphinxcontrib-devhelp
# sphinxcontrib-htmlhelp
# sphinxcontrib-jsmath
# sphinxcontrib-qthelp
# sphinxcontrib-serializinghtml
# toml
# tqdm
# urllib3
# webencodings
# zipp
