[project]
name = "file-upload-complete"
version = "1.0.0"
description = "Lambda function for processing completed file uploads"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "abacus-common-logic~=5.14.2",
    "boto3~=1.42.93",
    "botocore~=1.42.67",
    "datadog-lambda~=6.107.0",
    "ddtrace~=3.19",
    "flask>=3.1.3",
    "lambdacommon~=7.0",
    "owsclient~=0.9.0",
    "owsresponse~=3.0.4",
    "pydantic~=2.13",
    "pyjwt>=2.12.0",
    "python-dotenv~=1.2.2",
    "requests>=2.33.0",
    "secrets-manager~=1.4.6",
    "sentry-sdk~=2.48",
    "ujson>=5.12.0",
    "urllib3~=2.6.3",
    "werkzeug>=3.1.6",
]

[project.urls]
Repository = "https://github.com/theorchard/lambda-abacus"

[dependency-groups]
dev = [
    "pygments>=2.20.0",
    "pytest~=9.0",
    "pytest-cov~=6.3",
    "pytest-mock~=3.14.1",
    "ruff~=0.14",
]
integration = [
    {include-group = "dev"},
]

# --- Coverage ---

[tool.coverage.run]
omit = [
  "tests/*",
  "file_upload_complete/mysql/*",
  "file_upload_complete/snowflake/*",
]

# --- Pytest ---

[tool.pytest.ini_options]
testpaths = ["tests"]
norecursedirs = ["env/*"]

# --- Ruff ---

[tool.ruff]
line-length = 88
indent-width = 4

[tool.ruff.lint]
select = [
    # pycodestyle
    "E",
    "W",
    # pydocstyle
    "D",
    # isort
    "I",
    # builtins
    "A",
    # quotes
    "Q"
]
ignore = [
    # missing-blank-line-after-last-section
    "D413",
    # incorrect-blank-line-before-class, conflicts with D211
    "D203",
    # multi-line-summary-second-line, conflicts with D212
    "D213",
    # line-too-long, the formatter makes a best-effort at wrapping lines
    "E501",
]

[tool.ruff.lint.isort]
combine-as-imports = true
forced-separate = ["tests"]

[tool.ruff.lint.flake8-quotes]
inline-quotes = "single"

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

# --- uv ---

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