[project]
name = "renew-manager"
version = "0.1.0"
description = "ECS daemon that renews encoding jobs from the queue"
requires-python = ">=3.14,<3.15"
dependencies = [
    "aioboto3",
    "PyMySQL~=1.1.1",
    "datadog~=0.47.0",
    "ddtrace (>=4.0,<5.0)",
    "lambdacommon~=4.0",
    "vector_utils~=9.3.0",
    "secrets_manager~=1.4.4",
]

[project.optional-dependencies]
dev = [
    "ruff~=0.14",
    "pytest~=9.0",
    "pytest-asyncio~=1.2",
    "pytest-cov~=7.0",
    "pytest-mock~=3.14",
    "mypy~=1.19",
    "yamllint~=1.38",
    "types-aioboto3[sqs]~=15.0",
]

[tool.poetry]
package-mode = false

[[tool.poetry.source]]
name = "theorchard"
url = "https://pypi.theorchard.io/pypi/"
priority = "supplemental"

[[tool.poetry.source]]
name = "PyPI"
priority = "primary"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.ruff]
target-version = "py314"
src = ["src", "tests"]

[tool.ruff.lint]
select = ["C4", "E", "F", "W", "B", "I", "T20", "TID252", "UP", "SIM", "RUF", "PT", "DTZ", "PERF", "LOG"]
ignore = ["E501"]

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

[tool.mypy]
python_version = "3.14"
strict = true
explicit_package_bases = true
exclude = ["(^|/)\\.venv/", "^build/"]

[[tool.mypy.overrides]]
module = [
    "lambdacommon.*",
    "vector_utils.*",
    "secrets_manager.*",
    "datadog.*",
    "owslogger.*",
    "pymysql.*",
    "aioboto3",
    "aioboto3.*",
]
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "tests.unit.*"
disable_error_code = ["abstract"]

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = ["-ra", "--strict-markers", "--strict-config"]
asyncio_mode = "auto"
