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

# tox and flake8 have requirements on importlib-metadata
importlib-metadata>=1.1.0,<4.3; python_version <= '3.7'


# Direct dependencies:

# Coverage reporting (no imports, invoked via coveralls script):
coverage>=5.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.5'

# Safety CI by pyup.io
# safety 1.9.0 removed support for Python 2.7 (and now also enforces that)
# safety 2.2.0 resolves safety issue #51358
safety>=1.8.7,<1.9.0; python_version == '2.7'
safety>=1.9.0,<2.0.0; python_version == '3.5'
safety>=2.2.0; python_version >= '3.6'
# dparse 0.5.0 has an infinite recursion issue on Python 2.7,
#   see https://github.com/pyupio/dparse/issues/46
# safety 1.9.0 requires dparse>=0.5.1
# safety 2.2.0 requires dparse>=0.6.2
dparse>=0.4.1,<0.5.0; python_version == '2.7'
dparse>=0.5.1; python_version == '3.5'
dparse>=0.6.2; python_version >= '3.6'

# Click is used by safety
# safety 2.2.0 requires Click >=8.0.2
Click>=7.0; python_version <= '3.5'
Click>=8.0.2; python_version >= '3.6'

# PyYAML is pulled in by dparse
# PyYAML 5.3 fixed narrow build error on Python 2.7
# PyYAML 5.3.1 addressed issue 38100 reported by safety
# PyYAML 5.2 addressed issue 38639 reported by safety
PyYAML>=5.3.1; python_version == '2.7'
PyYAML>=5.3.1; python_version >= '3.5'

# Tox
# tox 3.17 requires six>=1.14.0 - covered in requirements.txt
# tox 3.14 requires importlib-metadata<1,>=0.12 on py<3.8
# tox 3.21 requires importlib-metadata>=0.12 on py<3.8
tox>=3.14.0; python_version == '2.7'
tox>=3.21.0; python_version >= '3.5'

# Sphinx (no imports, invoked via sphinx-build script):
# Keep in sync with rtd-requirements.txt

# Sphinx 2.0.0 removed support for Python 2.7
# Sphinx 4.0.0 breaks autodocsumm and needs to be excluded
# Sphinx <4.2.0 fails on Python 3.10 because it tries to import non-existing
#   types.Union. This also drives docutils>=0.14.
# Sphinx pins docutils to <0.18 (some versions even to <0.17) but the package
#   version resolver in the pip version used on py27 ignores package dependencies
Sphinx>=1.7.6,<2.0.0; python_version == '2.7'
Sphinx>=3.5.4,!=4.0.0; python_version >= '3.5' and python_version <= '3.9'
Sphinx>=4.2.0; python_version >= '3.10'
docutils>=0.13.1,<0.17; python_version == '2.7'
docutils>=0.13.1; python_version >= '3.5' and python_version <= '3.9'
docutils>=0.14,<0.17; python_version == '3.10'
docutils>=0.16,<0.17; python_version >= '3.11'
sphinx-git>=10.1.1
GitPython>=2.1.1
sphinxcontrib-fulltoc>=1.2.0
sphinxcontrib-websupport>=1.1.2
Pygments>=2.1.3; python_version == '2.7'
Pygments>=2.7.4; python_version >= '3.5'
sphinx-rtd-theme>=1.0.0
# Babel 2.7.0 fixes an ImportError for MutableMapping which starts failing on Python 3.10
Babel>=2.7.0

# PyLint (no imports, invoked via pylint script)
# Pylint requires astroid
# Pylint 2.0 / astroid 2.0 removed py27, added py37
# Pylint 2.7 / astroid 2.5 removed support for py35
# 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.5.2; python_version == '3.5'
pylint>=2.10.0; python_version >= '3.6' and python_version <= '3.10'
pylint>=2.15.0; python_version >= '3.11'
astroid>=2.4.0; python_version == '3.5'
astroid>=2.7.2; python_version >= '3.6' and python_version <= '3.10'
astroid>=2.12.4; python_version >= '3.11'
# astroid 2.13.0 uses typing-extensions on Python<3.11 but misses to require it on 3.10. See https://github.com/PyCQA/astroid/issues/1942
typing-extensions>=3.10; python_version <= '3.10'
# typed-ast is used by astroid on py35..py37
typed-ast>=1.4.0,<1.5.0; python_version >= '3.5' and python_version <= '3.7' and implementation_name=='cpython'
# lazy-object-proxy is used by astroid
lazy-object-proxy>=1.4.3; python_version >= '3.5'
# 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.5' 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.2; 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'

# Flake8 and dependents (no imports, invoked via flake8 script):
# flake8 4.0.0 fixes an AttributeError on Python 3.10.
# flake8 5.0.4 requires importlib-metadata>=1.1.0,<4.3 on py<3.8
flake8>=3.8.0; python_version == '2.7'
flake8>=3.8.0; python_version >= '3.5' and python_version <= '3.9'
flake8>=4.0.0; python_version >= '3.10'
mccabe>=0.6.0; python_version == '2.7'
mccabe>=0.6.0; python_version >= '3.5'
pycodestyle>=2.6.0; python_version == '2.7'
pycodestyle>=2.6.0; python_version >= '3.5' and python_version <= '3.9'
pycodestyle>=2.8.0; python_version >= '3.10'
pyflakes>=2.2.0; python_version == '2.7'
pyflakes>=2.2.0; python_version >= '3.5' and python_version <= '3.9'
pyflakes>=2.4.0; python_version >= '3.10'
entrypoints>=0.3.0
functools32>=3.2.3.post2; python_version == '2.7'

# Twine (no imports, invoked via twine script):
twine>=1.8.1
# 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.5'


# Indirect dependencies with special constraints:

# safety 2.3.5 started pinning packaging to <22.0 and requires >=21.0
packaging>=17.0; python_version == '2.7'
packaging>=17.0; python_version == '3.5'
packaging>=21.0,<22.0; python_version == '3.6'
packaging>=22.0; python_version >= '3.7'

# pytz (used by TBD)
pytz>=2016.10; python_version <= '3.9'
pytz>=2019.1; python_version >= '3.10'

# 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.3.9,<0.4.0; python_version == '2.7'
colorama>=0.4.5; python_version >= '3.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
