[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", ]