# Pip requirements file for development dependencies.


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

# Build distribution archive
build>=1.1.1

# Change log
towncrier>=22.8.0

# Cythonize
Cython>=3.0.0

# Vendorize
vendorize>=0.3.0

# 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>=6.5.0,<7.0
pytest-cov>=4.0.0
coveralls>=3.3.0

more-itertools>=4.0.0

# Safety CI by pyup.io
# safety 3.6.1 fixes the issue with typer >=0.17.0, see https://github.com/pyupio/safety/issues/778
# pydantic 2.8.0 fixes an install issue on Python 3.13.
safety>=3.6.1
safety-schemas>=0.0.14
dparse>=0.6.4
ruamel.yaml>=0.17.21
click>=8.0.2
Authlib>=1.3.1
marshmallow>=3.15.0
pydantic>=2.8.0
pydantic_core>=2.20.0
#safety 3.6.1 depends on typer>=0.16.0
typer>=0.16.0
typer-cli>=0.16.0
typer-slim>=0.16.0
psutil>=6.1.0
filelock>=3.16.1

# Tox
tox>=2.5.0

# Sphinx (no imports, invoked via sphinx-build script):
# Sphinx 6.0.0 started requiring Python>=3.8
# Sphinx 7.2.0 started requiring Python>=3.9
# Sphinx>=8.0.0 fails on autodocsumm with TypeError: "cannot unpack non-iterable ObjectMember object"
Sphinx>=7.1.0,!=7.2.0,!=7.2.1,!=7.2.2,!=7.2.3; python_version == '3.8'
Sphinx>=7.2.4,<8.0.0; python_version >= '3.9'
# Sphinx 7.1.0 pins docutils to <0.21
docutils>=0.18.1,<0.21; python_version == '3.8'
docutils>=0.18.1; python_version >= '3.9'
sphinx-git>=10.1.1
GitPython>=3.1.41
Pygments>=2.15.0
sphinx-rtd-theme>=2.0.0
sphinxcontrib-applehelp>=1.0.4
sphinxcontrib-devhelp>=1.0.2
sphinxcontrib-htmlhelp>=2.0.1
sphinxcontrib-jquery>=4.1
sphinxcontrib-jsmath>=1.0.1
sphinxcontrib-qthelp>=1.0.3
sphinxcontrib-serializinghtml>=1.1.5; python_version == '3.8'
sphinxcontrib-serializinghtml>=1.1.9; python_version >= '3.9'
sphinxcontrib-websupport>=1.2.4
autodocsumm>=0.2.12
Babel>=2.11.0

# PyLint (no imports, invoked via pylint script)
pylint>=3.0.1; python_version == '3.8'
pylint>=3.3.3; python_version >= '3.9'
astroid>=3.0.1; python_version == '3.8'
astroid>=3.3.8; python_version >= '3.9'
lazy-object-proxy>=1.4.3
wrapt>=1.17.0
# platformdirs is also used by tox
platformdirs>=4.1.0
# 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
tomlkit>=0.10.1
dill>=0.3.7

# Flake8 and dependents (no imports, invoked via flake8 script):
# flake8 5.x and 6.x report false positive E231 "missing whitespace after ':'"
#   for ':' used in f-strings. This was fixed in pycodestyle 2.11.0, which
#   requires using flake8>=7.0.0.
# Dependencies on mccabe:
#   pylint 2.15.0 depends on mccabe >=0.6,<0.8 (python 3.11)
#                 and on astroid>=2.12.4,<=2.14.0-dev0
#   pylint 3.0.1 depends on mccabe >=0.6,<0.8
#   flake8 7.0.0 depends on mccabe >=0.7.0,<0.8.0
flake8>=7.0.0
mccabe>=0.7.0
pycodestyle>=2.11.0
pyflakes>=3.2.0

# entrypoints is used by keyring
entrypoints>=0.3.0

# Ruff checker
ruff>=0.3.5

# Jupyter Notebook (no imports, invoked via jupyter script):

jupyter>=1.0.0
# ipython 8.13.1 removed support for Python 3.8
# ipython 8.20.0 removed support for Python 3.9
ipython>=8.10.0
ipykernel>=6.17.0
ipython-genutils>=0.2.0
ipywidgets>=8.0.0
jupyter-console>=6.5.0
jupyter_client>=8.0.3
jupyter_core>=5.1.0
jupyterlab_pygments>=0.3.0
jupyterlab-widgets>=3.0.3
jupyter-server>=2.14.1
# notebook 6.5.1 started using nbclassic
nbclassic>=1.0.0
nbclient>=0.8.0
nbconvert>=7.7.3
nbformat>=5.9.0
notebook>=7.2.2
notebook-shim>=0.2.3
jupyterlab-server>=2.27.1,<3
# notebook 7.1.0 depends on jupyterlab<4.2 and >=4.1.1
jupyterlab>=4.2.6,<5

pyrsistent>=0.19.1

# Pywin32 is used (at least?) by jupyter.
# Pywin32 version 226 needs to be excluded, see issues #1946 and #1975.
# Issue #2675: Pywin32 version 225+ provides wheel files for py38, but does not
#   advertise py38 on Pypi. That causes pywin32==225 to fail but pywin32>=225
#   to work.
#   Reported to pywin32 as https://github.com/mhammond/pywin32/issues/1448.
#   Addressed by increasing the minimum version of pywin32 to >=227 on Python >=3.8.
# pywin32 version 302 added support for Python 3.10 (lower pywin32 versions could not be installed there)
# pywin32 version 303 added support for Python 3.11 (lower pywin32 versions could not be installed there)
# pywin32 version 306 added support for Python 3.12 (lower pywin32 versions could not be installed there)
# pywin32 version 307 added support for Python 3.13 (lower pywin32 versions could not be installed there)
pywin32>=227; sys_platform == 'win32' and python_version <= '3.9'
pywin32>=306; sys_platform == 'win32' and python_version >= '3.10' and python_version <= '3.12'
pywin32>=307; sys_platform == 'win32' and python_version >= '3.13'

# The tornado package is used by ipykernel which is used by jupyter.
tornado>=6.4.2; python_version <= '3.8'
tornado>=6.5; python_version >= '3.9'

# Table output formatter used by the manual performance tests to display timing results
tabulate>=0.8.3

# Performance profiling tools
# pyinstrument 4.7.2 added wheel files for Python 3.13
pyinstrument>=3.0.1; python_version <= '3.11'
pyinstrument-cext>=0.2.2; python_version <= '3.11'  # from pyinstrument
pyinstrument>=4.7.2; python_version >= '3.12'    # pyinstrument-cext integrated

# Package dependency management tools
pipdeptree>=2.24.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.4.3,!=2.5.0; python_version <= '3.11'
pip-check-reqs>=2.5.1; python_version >= '3.12'

# notebook 6.4.10 depends on pyzmq>=17
# pyzmq 26.1.0 added wheel archives for Python 3.13
pyzmq>=26.1.0

# bleach is used by nbconvert
bleach>=3.3.0

# pywinpty is used by terminado <- notebook <- jupyter
# pywinpty 2.0.14 has an issue with latest maturin on Python 3.8, see https://github.com/andfoy/pywinpty/issues/486
# pywinpty <2.0.14 has the above issue on Python 3.13
pywinpty>=2.0.12,!=2.0.14; os_name == "nt" and python_version == '3.8'
pywinpty>=2.0.12; os_name == "nt" and python_version >= '3.9' and python_version <= '3.12'
pywinpty>=2.0.14; os_name == "nt" and python_version >= '3.13'

# notebook 6.4.10 depends on terminado>=0.8.3
# terminado 0.10.0 requires pywinpty>=1.1.0, see issue there
terminado>=0.8.3,<0.10.0


# Dependencies to reduce backtracking time (must be consistent with minimum-constraints-develop.txt)

# jupyter-server 1.24.0 depends on anyio>=3.1.0,<4
anyio>=3.1.0
distlib>=0.3.7
gitdb>=4.0.8
# nbconvert 6.5.1 depends on traitlets>=5.0
# jupyter-server 1.17.0 depends on traitlets>=5.1
traitlets>=5.6.0
