[build-system] requires = ["setuptools>=64", "setuptools-scm>=8"] build-backend = "setuptools.build_meta" [project] name = "culprit" dynamic = ["version"] description = "Root-cause analysis for a PR or branch: classify feature vs bugfix, find the introducing commit (suspect set) or the blast radius." readme = "README.md" requires-python = ">=3.9" license = "MIT" license-files = ["LICENSE"] authors = [{ name = "Noordeen" }] keywords = ["git", "rca", "root-cause", "pull-request", "regression", "blame"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Topic :: Software Development :: Version Control :: Git", "Topic :: Software Development :: Quality Assurance", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Operating System :: OS Independent", "Environment :: Console", ] dependencies = [] [project.urls] Homepage = "https://github.com/noordeen123/culprit" Repository = "https://github.com/noordeen123/culprit" Issues = "https://github.com/noordeen123/culprit/issues" [project.optional-dependencies] # Only needed for the standalone (non-Claude-Code) reasoning layer. api = ["anthropic>=0.40"] # MCP server — works with any MCP-compatible client (Claude Code, Cursor, Windsurf, VS Code, etc.). Requires Python 3.10+. # Capped below 2.x: mcp 2 removed mcp.server.fastmcp and renamed FastMCP to MCPServer. mcp = ["mcp>=1.0,<2; python_version >= '3.10'"] dev = ["pytest>=7", "ruff>=0.4", "yamllint>=1.35"] [project.scripts] rca = "culprit.cli:main" culprit = "culprit.cli:main" culprit-mcp = "culprit.mcp_server:main" [tool.setuptools.packages.find] include = ["culprit*"] [tool.setuptools.package-data] culprit = ["templates/*.html"] # Version is derived from the git tag (vX.Y.Z) by setuptools-scm, so there is no # hardcoded version anywhere. To release: tag the commit and cut the release. [tool.ruff.lint] select = ["E", "F", "I"] ignore = ["E501"] [tool.setuptools_scm]