[project]
name = "generate-payments"
version = "1.0.0"
readme = "README.md"
requires-python = ">=3.13"

dependencies = [
    "lambdacommon~=7.0",
    "abacus-common-logic==5.13.0",
    "cryptography~=46.0",
    "datadog-lambda>=6.95.0,<7.0.0",
    "pydantic~=2.11.9",
    "python-dateutil~=2.9",
    "boto3~=1.40",
    "python-dotenv==1.2.2",
    "sentry-sdk~=2.38",
    "owsresponse~=3.0",
    "owsrequest~=2.1",
    "owsclient~=0.6",
    "secrets-manager==1.4.4",
    "snowflake-connector-etl>=1.2.0",
    "snowflake-connector-python~=4.0",
    "tenacity>=9.1.4",
    "pyrate-limiter>=4.1.0",
    "aws-secretsmanager-caching>=1.1.3",
]

[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",
    "types-python-dateutil~=2.9.0"
]

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

[tool.uv]
override-dependencies = [
    "flask>=3.1.3",
]
constraint-dependencies = [
    "pyopenssl>=26.0.0",
    "urllib3>=2.7.0",
    "ujson>=5.12.1",
    "idna>=3.15",
]

[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

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

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