Cybersecurity-Projects/PROJECTS/beginner/steganography-multi-tool/pyproject.toml

89 lines
1.7 KiB
TOML

[project]
name = "steganography-multi-tool"
version = "0.1.0"
description = "Multi-format steganography toolkit: hide and extract data across images, audio, text, QR codes, PDFs, and git metadata"
requires-python = ">=3.14"
dependencies = [
"typer>=0.15.0",
"rich>=14.0.0",
]
[project.scripts]
stego = "stego_multi.cli:app"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/stego_multi"]
[dependency-groups]
dev = [
"ruff>=0.11.0",
"mypy>=1.15.0",
"yapf>=0.43.0",
"pytest>=8.3.0",
"pytest-cov>=6.0.0",
"hypothesis>=6.130.0",
]
[tool.ruff]
line-length = 89
indent-width = 4
target-version = "py314"
src = ["src"]
[tool.ruff.lint]
select = [
"E", "W", "F", "B", "S", "C90", "N", "UP",
"SIM", "PTH", "PERF", "RUF", "PL", "TRY", "LOG",
]
ignore = [
"S101",
"TRY003",
"PLR2004",
"PLR0913",
"E501",
]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "PLR2004", "S105", "S106"]
[tool.ruff.lint.mccabe]
max-complexity = 12
[tool.mypy]
python_version = "3.14"
strict = true
warn_return_any = true
warn_unused_configs = true
show_error_codes = true
show_column_numbers = true
pretty = true
mypy_path = "src"
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = [
"--strict-markers",
"--tb=short",
]
markers = [
"unit: fast unit tests with no I/O",
"integration: tests requiring real file system",
"slow: long-running tests",
]
[tool.coverage.run]
source = ["src"]
branch = true
omit = ["*/tests/*"]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"if TYPE_CHECKING:",
"raise NotImplementedError",
"\\.\\.\\.",
]