-r base.txt

psycopg2-binary==2.9.12  # https://github.com/psycopg/psycopg2
watchfiles==1.2.0  # https://github.com/samuelcolvin/watchfiles

# Testing
# ------------------------------------------------------------------------------

mypy==2.1.0  # https://github.com/python/mypy
django-stubs==6.0.4  # https://github.com/typeddjango/django-stubs
pytest==9.0.3  # https://github.com/pytest-dev/pytest
pytest-cov==7.1.0  # https://github.com/pytest-dev/pytest-cov
pytest-xdist==3.8.0  # https://github.com/pytest-dev/pytest-xdist (parallel test execution)
djangorestframework-stubs==3.17.0  # https://github.com/typeddjango/djangorestframework-stubs
responses==0.26.0  # https://github.com/getsentry/responses
vcrpy==8.1.1

# Profiling
# ------------------------------------------------------------------------------
django-cprofile-middleware
django-silk==5.5.0

# Code quality
# ------------------------------------------------------------------------------
flake8==7.3.0 # https://github.com/PyCQA/flake8
flake8-isort==7.0.0  # https://github.com/gforcada/flake8-isort
coverage==7.14.0  # https://github.com/nedbat/coveragepy
black==26.5.1  # https://github.com/psf/black
pre-commit==4.6.0  # https://github.com/pre-commit/pre-commit

# Django
# ------------------------------------------------------------------------------
factory-boy==3.3.3  # https://github.com/FactoryBoy/factory_boy
django-extensions==4.1  # https://github.com/django-extensions/django-extensions
django-coverage-plugin==3.2.2  # https://github.com/nedbat/django_coverage_plugin
pytest-django==4.12.0  # https://github.com/pytest-dev/pytest-django

# PDFs
# ------------------------------------------------------------------------------

# Office files
# ------------------------------------------------------------------------------
python-docx
openpyxl
python-pptx

# Test-only — OCR pipeline used by tests/test_pdf_redaction.py to verify the
# docling-parser microservice's OCR behavior. Production OCR runs in the
# docling-parser container, so this is not needed in base.txt.
# ------------------------------------------------------------------------------
pytesseract

# Not directly required, pinned by Snyk to avoid a vulnerability
# ------------------------------------------------------------------------------
django==5.2.14  # https://www.djangoproject.com/
twisted>=26.4.0 # not directly required, pinned by Snyk to avoid a vulnerability
ipython>=9.13.0 # not directly required, pinned by Snyk to avoid a vulnerability
requests>=2.34.2,<3 # not directly required, pinned by Snyk to avoid a vulnerability
setuptools>=82.0.1 # not directly required, pinned by Snyk to avoid a vulnerability
sqlparse>=0.5.5 # not directly required, pinned by Snyk to avoid a vulnerability
tornado>=6.5.5 # not directly required, pinned by Snyk to avoid a vulnerability
urllib3>=2.7.0 # not directly required, pinned by Snyk to avoid a vulnerability
zipp>=4.1.0 # not directly required, pinned by Snyk to avoid a vulnerability
pillow>=12.2.0 # not directly required, pinned by Snyk to avoid a vulnerability
