[project]
name = "share-audience"
version = "0.1.0"
description = ""
authors = [{ name = "The Orchard", email = "webdev@theorchard.com" }]
requires-python = "~=3.12"
readme = "README.md"
dependencies = [
    "pydantic>=2.4.2,<3",
    "pydantic-settings>=2.0.3,<3",
    "fansifter-common[crypto]>=0.61.1,<0.62",
    "owsclient>=0.1.0,<0.2",
    "anydi>=0.39.3,<0.40",
    "sentry-sdk>=2.12.0,<3",
    "datadog-lambda>=6.105.0,<7",
    "boto3>=1.28.63,<2",
    "pandas>=2.2.3,<3",
    "idna==3.7",
]

[dependency-groups]
dev = [
    "mypy[faster-cache]>=1.15.0,<2",
    "ruff>=0.9.6,<0.10",
    "pytest>=8.3.4,<9",
    "pytest-cov>=6.0.0,<7",
    "pytest-env>=1.1.5,<2",
    "boto3-stubs[s3, kms]>=1.26.10,<2",
    "polyfactory>=2.19.0,<3",
    "pandas-stubs>=2.1.1.230928,<3",
    "freezegun>=1.2.2,<2",
    "dirty-equals>=0.9.0,<0.10",
]

[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 = "py312"

[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.mypy]
python_version = "3.12"
strict = true
show_error_codes = true
plugins = ["pydantic.mypy"]

[[tool.mypy.overrides]]
module = []
ignore_missing_imports = true

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