[project]
name = "calculate-payments"
version = "1.0.0"
readme = "README.md"
requires-python = ">=3.13,<3.14"

dependencies = [
    "abacus-common-logic>=5.4.0",
    "lambdacommon==4.5.0",
    "datadog-lambda==6.111.0",
    "python-dotenv==1.2.2",
    "pydantic==2.11.9",
    "sentry-sdk==2.14.0",
    "owsresponse~=3.0",
    "owsrequest~=2.1",
    "owsclient==0.7.0",
    "secrets_manager~=1.4.6"
]

[dependency-groups]
test = [
    "mypy==1.15.0",
    "pytest==9.0.3",
    "pytest-cov==5.0.0",
    "yamllint==1.35.1",
    "polyfactory==2.16.0",
    "ruff~=0.5.6"
]

[tool.uv]
override-dependencies = [
    "flask>=3.1.3",
]
constraint-dependencies = [
    "urllib3>=2.7.0",
    "marshmallow>=3.26.2",
    "protobuf>=6.33.5",
    "pyjwt>=2.13.0",
    "pyopenssl>=26.0.0",
    "werkzeug>=3.1.6",
    "cryptography>=49.0.0",
    "requests>=2.33.0",
    "ujson>=5.13.0",
    "idna>=3.15"
]

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

[tool.ruff]
line-length = 88

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

[tool.ruff.lint]
select = ["A", "I", "Q"]
ignore = ["D413"]

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

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

[tool.mypy]
python_version = "3.13"
strict = true
show_error_codes = true
plugins = "pydantic.mypy"

[[tool.mypy.overrides]]
module = [
    "boto3.*",
    "lambdacommon.*",
    "owsrequest.*",
]
ignore_missing_imports = true
