[project]
name = "custom_reports"
version = "0.1.0"
description = "Lambda function that generates custom reports from Snowflake data and stores them in S3"
requires-python = "~=3.14.0"
dependencies = [
  "owsclient==0.6.0",
  "jwtauth==0.2.1-rc0",
  "boto3==1.43.37",
  "datadog-lambda==8.125.0",
  "lambdacommon==6.0.0",
  "owsrequest==2.10.1",
  "owsresponse==3.0.4",
  "pandas==3.0.3",
  "polars==1.42.1",
  "pyarrow==24.0.0",
  "numpy==2.3.3",
  "pyOpenSSL==26.3.0",
  "pythonfeatures==5.0.0",
  "secrets-manager==1.4.4",
  "snowflake-connector-python==4.6.0",
  # versions locked due to CVEs
  "cryptography==49.0.0",
  "jaraco.context==6.1.2",
  "setuptools==82.0.1",
  "urllib3>=2.7.0",
  "wheel==0.47.0",
]

[dependency-groups]
dev = [
  "ruff==0.12.0",
  "pytest==9.0.3",
  "pytest-cov==6.0.0",
  "pytest-mock==3.14.0",
  "mypy==1.16.1",
  "yamllint==1.35.1",
  "python-dotenv==1.2.2",
]

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

[tool.ruff]
line-length = 100
src = ["src", "tests"]

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

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

[tool.ruff.lint.pydocstyle]
convention = "google"

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

[tool.mypy]
python_version = "3.14"
check_untyped_defs = true
disallow_untyped_defs = true
ignore_missing_imports = true
explicit_package_bases = true
exclude = ["(^|/)env/"]

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

[tool.coverage.run]
source = ["src"]
omit = ["src/config.py", "**/__init__.py"]
