#
# Dependencies Required to Use `pycommons`
#
# In this file we list all the libraries that are required to use `pycommons`.
# You must install them before using `pycommons`.
# If you install `pycommons` via pip, i.e., do `pip install pycommons`, then this
# is done automatically for you. Otherwise, you could do
# `pip install --no-input --timeout 360 --retries 100 -r requirements.txt`
# with a text file `requirements.txt` that has the exact same contents as this
# file here.
#
# `pycommons` is available at https://thomasweise.github.io/pycommons.
# This file is available at https://github.com/thomasWeise/pycommons.
#
# Below, we list each required library and specify the reason why it is
# needed. Notice that these libraries may, in turn, depend on other libraries.
# We cannot maintain a full list of these recursive dependencies.
# Here we only list the top-level dependencies that are actually used by
# `pycommons` directly.
#

# urllib3 and certifi are used to check the URLs in the [dev] extras variant
# of our package. They are used to check URL in markdown files.
urllib3 == 2.2.1
certifi == 2024.2.2

# these static analysis tools are also needed for the [dev] extras variant
# only
autoflake == 2.3.1
bandit == 1.7.8
coverage == 7.4.4
coverage-badge == 1.1.0
dlint == 0.14.1
dodgy == 0.2.1
flake8 == 7.0.0
flake8-bugbear == 24.2.6
flake8-eradicate == 1.5.0
flake8-use-fstring == 1.4
mypy == 1.9.0
pycodestyle == 2.11.1
pydocstyle == 6.3.0
pyflakes == 3.2.0
pylint == 3.1.0
pyroma == 4.2
ruff == 0.3.3
semgrep == 1.66.0
tryceratops == 2.3.2
unimport == 1.2.1
vulture == 2.11

# sphinx is needed for generating the documentation. Together with its
# modules, it parses the documentation root file as well as the code and
# generates the html files with the documentation. It therefore uses the
# docstrings and the type hints.
sphinx == 7.2.6
sphinx-autodoc-typehints == 2.0.0
# myst-parser is needed for including README.md into the documentation
myst-parser == 2.0.0

# minify_html is needed to minify html output in the [dev] option.
# Our documentation is fairly large. We apply this tool to try to reduce the
# file size of the documentation, by, e.g., removing useless white space.
minify_html == 0.15.0

# We need pytest to run the unit tests.
# Unit tests test components of our package, e.g., functions or objects, and
# compare their behavior with the expected behaviors in some test cases.
# This helps spotting errors where code behaves differently from the
# expectation. Of course, unit tests cannot guarantee that there are no
# errors. But they can at least check whether our code behaves as it should in
# some usual or border cases. Also, they can help us find out if changes in
# the code lead to changes in (tested/expected) behavior.
pytest == 8.1.1

# for converting the additional markdown files to HTML in the [dev] variant
markdown == 3.6

# setuptools, testresources, twine, virtualenv, and wheel are needed for
# generating the installable pip package in the [dev] variant.
setuptools == 69.2.0
testresources == 2.0.1
twine == 5.0.0
virtualenv == 20.25.1
wheel == 0.43.0

# psutil is used for getting information about the system configuration.
psutil == 5.9.5