[project]
name = "sendgrid-webhooks-inbound"
version = "0.1.0"
description = ""
authors = [{ name = "The Orchard", email = "webdev@theorchard.com" }]
requires-python = "~=3.13.0"
readme = "README.md"
dependencies = [
    "boto3>=1.35.8,<2",
    "datadog-lambda>=8.123.0,<9",
    "pydantic[email]>=2.8.2,<3",
    "pydantic-settings>=2.4.0,<3",
    "sentry-sdk>=2.13.0,<3",
    "anydi==0.74.2",
    "fansifter-common[db]==0.145.0",
    "confluent-kafka>=2.13.2,<3",
    "streaming-form-data>=1.16.0,<2",
    "cryptography>=46.0.5,<47",
    "snowflake-sqlalchemy>=1.8.2,<2",
    "owslogger==4.3.1",
    "rich>=14.3.3,<15",
    "redis>=7.3.0,<8",
]

[dependency-groups]
dev = [
    "ruff>=0.15.7,<1",
    "pytest>=8.3.2,<9",
    "pyright[nodejs]>=1.1.408,<2",
    "pytest-cov>=7.1.0,<8",
    "pytest-env>=1.1.3,<2",
    "types-confluent-kafka>=1.4.0",
    "boto3-stubs[s3]>=1.42.53",
]

[tool.uv]

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

[tool.hatch.build.targets.sdist]
include = ["./app"]

[tool.hatch.build.targets.wheel]
include = ["./app"]

[tool.hatch.build.targets.wheel.sources]
"./app" = "app"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.ruff]
line-length = 88
target-version = "py313"

[tool.ruff.lint]
select = ["C", "E", "F", "W", "B", "I", "UP", "T20", "TID252", "G"]
ignore = ["E501", "B008", "B009"]

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

[tool.pyright]
include = [
    "app/**/*.py",
    "tests/**/*.py",
]
strict = [
    "app/**/*.py",
]
pythonVersion = "3.13"
typeCheckingMode = "standard"

[tool.pytest.ini_options]
addopts = ["--strict-config", "--strict-markers", "-p no:anydi"]
xfail_strict = true
junit_family = "xunit2"
env = [
    "ENVIRONMENT = test",
    "LOG_FORMAT = console",
    "REPLY_TO_SECRET_KEY = test"
]
