[project]
name = "kinesis_to_neo4j"
version = "0.1.0"
description = "Lambda that processes Kinesis messages from Maxwell's Daemon to sync Art Relations MySQL changes with Neo4j."
readme = "README.md"
requires-python = "~=3.13.0"
dependencies = [
    "aws-kinesis-agg==1.2.3",
    "backoff~=2.1",
    "datadog-lambda==6.111.0",
    "lambdacommon==7.1.0",
    "neo4j==5.28.0",
    "neobolt==1.7.17",
    "protobuf==5.29.6",
    "pythonfeatures==5.0.0",
    "secrets-manager==1.4.4",
    "sentry-sdk~=2.14",
]

[dependency-groups]
dev = [
    "ruff==0.12.0",
    "pytest>=9.0.3",
    "pytest-cov>=6.1.1,<7",
    "pytest-mock",
    "mypy==1.16.1",
    "yamllint==1.35.1",
    "flexmock==0.11.2",
    "aws-testing-utils==5.2.0",
    "python-lambda-local",
]

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

[tool.ruff]
line-length = 120
src = [".", "src", "tests"]
exclude = ["helpers", "for_testing", "index_test.py", "exp.py", "env", "src/logic/art_relations/queries/generate_db_pr.py", "src/logic/art_relations/queries/generate_db_pr_config.py", "src/logic/art_relations/dev.py"]

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

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

[tool.ruff.lint.per-file-ignores]
"tests/**" = ["D"]

[tool.mypy]
python_version = "3.13"
check_untyped_defs = true
disallow_untyped_defs = false
ignore_missing_imports = true
disable_error_code = ["import-untyped"]
exclude = ["(^|/)\\.venv/"]

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