Files
claude-scripts/pyproject.toml
2025-09-17 18:55:08 +00:00

157 lines
4.0 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "claude-scripts"
version = "0.1.0"
description = "A comprehensive Python code quality analysis toolkit for detecting duplicates, complexity metrics, and modernization opportunities"
authors = [{name = "Your Name", email = "your.email@example.com"}]
readme = "README.md"
license = {file = "LICENSE"}
requires-python = ">=3.12"
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Software Development :: Libraries :: Python Modules",
]
keywords = ["code-quality", "static-analysis", "duplicate-detection", "complexity", "refactoring"]
dependencies = [
"click>=8.0.0",
"pyyaml>=6.0",
"pydantic>=2.0.0",
"radon>=6.0.0",
"tomli>=2.0.0; python_version < '3.11'",
"python-Levenshtein>=0.20.0",
"datasketch>=1.5.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"ruff>=0.1.0",
"mypy>=1.5.0",
"pre-commit>=3.0.0",
"types-PyYAML>=6.0.0",
]
[project.urls]
Homepage = "https://github.com/yourusername/claude-scripts"
Repository = "https://github.com/yourusername/claude-scripts"
Issues = "https://github.com/yourusername/claude-scripts/issues"
Documentation = "https://github.com/yourusername/claude-scripts#readme"
[project.scripts]
claude-quality = "quality.cli.main:cli"
[tool.hatch.build.targets.sdist]
exclude = [
"/.github",
"/docs",
"/.vscode",
"/.pytest_cache",
"/.mypy_cache",
"/.ruff_cache",
]
[tool.hatch.build.targets.wheel]
packages = ["src/quality"]
[tool.ruff]
target-version = "py312"
line-length = 88
extend-include = ["*.ipynb"]
[tool.ruff.lint]
select = [
"E", "F", "W", "C90", "I", "N", "D", "UP", "YTT", "ANN", "S", "BLE",
"B", "A", "COM", "C4", "DTZ", "T10", "DJ", "EM", "EXE", "ISC", "ICN",
"G", "INP", "PIE", "T20", "PYI", "PT", "Q", "RSE", "RET", "SLF", "SIM",
"TID", "TCH", "INT", "ARG", "PTH", "PD", "PL", "TRY", "NPY", "RUF"
]
ignore = [
"D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107",
"S101", "B008", "PLR0913", "TRY003", "ANN204", "TID252", "RUF012",
"PLC0415", "PTH123", "PLW0603", "PLR0915", "PLR0912",
"PLR0911", "C901", "PLR2004", "PLW1514", "SIM108", "SIM117"
]
fixable = ["ALL"]
unfixable = []
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "D", "ANN"]
"src/quality/tests/**/*.py" = ["S101", "D", "ANN"]
[tool.ruff.lint.isort]
known-first-party = ["quality"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.mypy]
python_version = "3.12"
strict = true
warn_return_any = true
warn_unused_configs = true
no_implicit_reexport = true
namespace_packages = true
show_error_codes = true
show_column_numbers = true
pretty = true
[[tool.mypy.overrides]]
module = "radon.*"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "mando.*"
ignore_missing_imports = true
[tool.pytest.ini_options]
minversion = "7.0"
addopts = [
"-ra",
"--strict-markers",
"--cov=code_quality_guard",
"--cov-branch",
"--cov-report=term-missing:skip-covered",
"--cov-report=html",
"--cov-report=xml",
"--cov-fail-under=80",
]
testpaths = ["tests", "src/quality/tests"]
python_files = ["test_*.py", "*_test.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
[tool.coverage.run]
branch = true
source = ["src/quality"]
omit = ["*/tests/*", "*/test_*.py"]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"if __name__ == .__main__.:",
"raise NotImplementedError",
"pass",
"except ImportError:",
]
[dependency-groups]
dev = [
"sourcery>=1.37.0",
"basedpyright>=1.17.0",
"pyrefly>=0.2.0",
"pytest>=8.4.2",
]