# Requirements only for development (upload library to Nexus, testing, code style, ...)
#   python_version: 3.8
# ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────

# --------------------------------------------------------------------------------------------------------------------
# --- Utilities
# --------------------------------------------------------------------------------------------------------------------

# Command line utility to show dependency tree of packages
pipdeptree==2.23.3

# --------------------------------------------------------------------------------------------------------------------
# --- Code Style Tools:
# --------------------------------------------------------------------------------------------------------------------

# Tool for catch errors and ensure that the code is idiomatic Python (ie PEP8)
flake8==7.1.1

# Google tool for finding bugs and style problems in Python source code.
# also suggests avoiding some tricky-but-useful features
pylint==3.2.7

# Mypy has a powerful type system with features such as type inference,
# gradual typing, generics and union types.
mypy==1.11.2

pydantic==1.10.13

# Black applyies automatic formatting to the codebase
black==24.8.0

# --------------------------------------------------------------------------------------------------------------------
# --- Testing:
# --------------------------------------------------------------------------------------------------------------------

# Framework to write small tests, yet scales to support complex functional testing for applications and libraries.
pytest==8.3.2

# Pytest plugin for measuring coverage.
pytest-cov==5.0.0

# Pytest plugin for paralell execution
pytest-xdist==3.6.1

# Pytest pluging in order to split test execution
pytest-split==0.9.0

# Mocking module for pytest
pytest-mock==3.14.0

# Faker is a Python package that generates fake data for you.
Faker>=6.5.0

# --------------------------------------------------------------------------------------------------------------------
# --- Documentation:
# --------------------------------------------------------------------------------------------------------------------

#Generate the documentation for the project from code comments.
sphinx==7.1.2; python_version < "3.9"
sphinx==8.0.2; python_version >= "3.9"

# --------------------------------------------------------------------------------------------------------------------
# Uploading PyPI Package to Nexus
# --------------------------------------------------------------------------------------------------------------------

# Client tool to upload them to a hosted repository on the repository manager
twine==5.1.1

# --------------------------------------------------------------------------------------------------------------------
# Management of commit hooks.
# --------------------------------------------------------------------------------------------------------------------

# A framework for managing and maintaining multi-language pre-commit hooks.
pre-commit==3.5.0; python_version < "3.9"
pre-commit==3.8.0; python_version >= "3.9"
