[project]
name = "dim-refresh-etl"
version = "0.2"
description = "Dimension Refresh ETL Flows"
readme = "README.md"
# python version (major.minor) should match base from Dockerfile
requires-python = "==3.13.*"

dependencies = [
    "snowflake_connector_etl==1.*",
    "snowflake-connector-python==4.*",
    "pyyaml==6.*",
    "boto3==1.*",
    "botocore==1.*",
    "garcon==1.*",
    "garcon_contrib==1.*",
    "smart-open==7.*",
    "sentry-sdk==2.*",
    "geocoder==1.*",
    "supervisor==4.*",
    "awscli==1.*",
]

[project.scripts]
dim-refresh = "dim_refresh_etl.cli:main"

[project.urls]
Repository = "https://github.com/theorchard/dim-refresh-etl"

[dependency-groups]
dev = [
    "flake8",
    "flake8-import-order",
    "freezegun",
    "pytest",
    "pytest-cov",
    "pytest-mock",
    "deptry",
]

[tool.uv]
package = false

[tool.uv.sources]
garcon_contrib = { index = "orchard" }
snowflake_connector_etl = { index = "orchard" }

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

[build-system]
requires = ["uv_build>=0.5,<0.9"]
build-backend = "uv_build"

[tool.uv.build-backend]
module-root = ""


[tool.deptry]
exclude = [
    'dev.py',
    'setup.py',
    '.venv',
    'itms/',
    'tmp/',
    'build/',
    'local/',
]
ignore = [
    "DEP004", # imported but declared as a dev dependency
]
ignore_notebooks = true

[tool.deptry.per_rule_ignores]
# DEP002: defined as a dependency but not used in the codebase
DEP002 = [
    'supervisor',  # used as command in Dockerfile
    'awscli',  # used as command in garcon-contrib
]
# DEP003: imported but it is a transitive dependency
DEP003 = [
    'distutils',  # dim_refresh_etl/flows/dynamo_sync/tasks.py
]
