[project]
name = "python-sentry-scrubber"
version = "1.1.0"
description = "Python library for scrubbing sensitive data from Sentry events and general data structures"
authors = [
    {name = "Sony Music PDE", email = "webdev@theorchard.com"}
]
readme = "README.md"
requires-python = ">=3.11"
keywords = ["sentry", "security", "data-scrubbing", "privacy", "logging"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: System :: Logging",
    "Topic :: Security",
]

dependencies = []

[project.optional-dependencies]
dev = [
    "ruff>=0.5.4",
    "mypy>=1.11.0",
    "pytest>=8.3.1",
    "pytest-cov>=5.0.0",
    "pytest-mock>=3.14.0",
    "bump2version>=1.0.1",
]

[tool.hatch.build.targets.wheel]
packages = ["sentry_scrubber"]

[dependency-groups]
dev = [
    "ruff>=0.5.4",
    "mypy>=1.11.0",
    "pytest>=8.3.1",
    "pytest-cov>=5.0.0",
    "pytest-mock>=3.14.0",
    "bump2version>=1.0.1",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.ruff]
line-length = 88

[tool.ruff.lint]
select = ["C", "E", "F", "W", "B", "I", "UP", "T20", "TID252", "G", "D"]
ignore = ["E501", "B008", "B009", "D203", "D213", "D407"]

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

[tool.mypy]
python_version = "3.11"
strict = true
pretty = true
color_output = true
show_error_codes = true

[[tool.mypy.overrides]]
module = "tests.*"
check_untyped_defs = false
disallow_untyped_defs = false

[tool.pytest.ini_options]
addopts = [
    "--strict-config",
    "--strict-markers",
]
xfail_strict = true
junit_family = "xunit2"

[tool.coverage.report]
exclude_also = [
    "@abstractmethod",
    "@abc.abstractmethod",
    "if TYPE_CHECKING",
    "raise NotImplementedError",
]
