[project] name = "fuzzing-infra" version = "0.1.0" description = "Automated vulnerability discovery and fuzzing infrastructure" authors = [{ name = "Trail of Bits", email = "opensource@trailofbits.com" }] license = "AGPL-3.0-only" requires-python = ">=3.12,<3.13" dependencies = [ "common[full]", "redis ~=5.2.1", "pydantic-settings ~=2.10.1", "beautifulsoup4 ~=4.13.3", "lxml~=6.1.0", "cxxfilt>=0.3.0", ] [project.urls] Repository = "https://github.com/trailofbits/buttercup" Issues = "https://github.com/trailofbits/buttercup/issues" [project.scripts] buttercup-fuzzer-builder = "buttercup.fuzzing_infra.builder_bot:main" buttercup-fuzzer = "buttercup.fuzzing_infra.fuzzer_bot:main" buttercup-coverage-bot = "buttercup.fuzzing_infra.coverage_bot:main" buttercup-tracer-bot = "buttercup.fuzzing_infra.tracer_bot:main" buttercup-corpus-sync = "buttercup.fuzzing_infra.corpus_sync:main" buttercup-corpus-merger = "buttercup.fuzzing_infra.corpus_merger:main" buttercup-fuzzer-utils = "buttercup.fuzzing_infra.utils_cli:main" [tool.uv.sources] common = { path = "../common", editable = true } [tool.hatch.build.targets.wheel] packages = ["src/buttercup"] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [dependency-groups] dev = [ # Testing tools "pytest~=9.0.3", "pytest-cov ~=6.0.0", # Linting and type checking "ruff ~=0.14.0", "ty", # Astral type checker (replaces mypy) # Type stubs "types-redis ~=4.6.0", "hypothesis>=6.148.7", ] [tool.ruff] line-length = 120 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "W", "UP"] ignore = [ "COM812", "ISC001", # Formatter conflicts ] [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["S101", "D"] # Allow asserts, no docstrings in tests [tool.ty.environment] python-version = "3.12" [tool.ty.src] # Explicitly include src directory include = ["src"] [tool.ty.rules] # Start permissive, tighten over time unresolved-import = "warn" unresolved-attribute = "warn"