[project]
name = "internal-attachments"
version = "0.1.0"
description = "Lambda function that handles internal attachments for statements and uploads them to S3"
requires-python = "~=3.14.0"
dependencies = [
  "audience-common==3.5.0",
  "boto3==1.35.81",
  "botocore==1.35.81",
  "datadog-lambda==6.111.0",
  "jwtauth==0.2.1-rc0",
  "lambdacommon==4.5.0",
  "owsclient==0.6.0",
  "pythonfeatures==5.0.0",
  "raven==6.10.0",
  "python-dotenv==1.2.2",
  # versions locked due to CVEs
  "setuptools==82.0.0",
  "urllib3>=2.6.0",
  "jaraco.context==6.1.0",
  "wheel==0.46.2",
]

[dependency-groups]
dev = [
  "ruff==0.12.0",
  "pytest==9.0.3",
  "pytest-cov==6.0.0",
  "pytest-mock==3.14.0",
  "mypy==1.16.1",
  "yamllint==1.35.1",
]

[[tool.uv.index]]
name = "theorchard"
url = "https://pypi.theorchard.io/pypi/"

[tool.ruff]
line-length = 100
src = ["src", "tests"]

[tool.ruff.format]
quote-style = "single"

[tool.ruff.lint]
select = ["E", "F", "I", "D"]
ignore = ["D203", "D213", "E203"]

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.ruff.lint.isort]
force-single-line = true
force-sort-within-sections = true
order-by-type = false
known-first-party = ["config", "src", "tests"]

[tool.mypy]
python_version = "3.14"
check_untyped_defs = true
disallow_untyped_defs = true
ignore_missing_imports = true
explicit_package_bases = true
exclude = ["(^|/)env/"]

[tool.pytest.ini_options]
pythonpath = ["."]

[tool.coverage.run]
source = ["src"]
omit = ["src/config.py", "**/__init__.py"]
