[build-system] requires = ["hatchling", "hatch-fancy-pypi-readme"] build-backend = "hatchling.build" [project] name = "flakestorm" version = "2.0.0" description = "The Agent Reliability Engine - Chaos Engineering for AI Agents" readme = "README.md" license = "Apache-2.0" requires-python = ">=3.10" authors = [ { name = "flakestorm Team" } ] keywords = [ "ai", "agents", "testing", "chaos-engineering", "fuzzing", "reliability", "llm", "adversarial-testing" ] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Testing", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "typer>=0.9.0", "rich>=13.0.0", "pydantic>=2.0.0", "pydantic-settings>=2.0.0", "httpx>=0.25.0", "pyyaml>=6.0", "jinja2>=3.1.0", "aiofiles>=23.0.0", "ollama>=0.3.0", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "pytest-cov>=4.0.0", "black>=23.0.0", "ruff>=0.1.0", "mypy>=1.0.0", "pre-commit>=3.0.0", "maturin>=1.4.0", ] semantic = [ "sentence-transformers>=2.2.0", "numpy>=1.24.0", ] huggingface = [ "huggingface-hub>=0.19.0", ] openai = [ "openai>=1.0.0", ] anthropic = [ "anthropic>=0.18.0", ] google = [ "google-generativeai>=0.8.0", ] langsmith = [ "langsmith>=0.1.0", ] all = [ "flakestorm[dev,semantic,huggingface,openai,anthropic,google,langsmith]", ] [project.scripts] flakestorm = "flakestorm.cli.main:app" [project.urls] Homepage = "https://github.com/flakestorm/flakestorm" Documentation = "https://flakestorm.dev/docs" Repository = "https://github.com/flakestorm/flakestorm" Issues = "https://github.com/flakestorm/flakestorm/issues" [tool.hatch.build.targets.wheel] # Hatchling should auto-discover all subpackages when you specify the parent # However, if pip install . fails but pip install -e . works, use editable mode for development packages = ["src/flakestorm"] [tool.hatch.build.targets.sdist] include = [ "/src", "/tests", "/README.md", "/LICENSE", ] [tool.black] line-length = 88 target-version = ["py310", "py311", "py312"] include = '\.pyi?$' [tool.ruff] line-length = 88 target-version = "py310" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long (handled by black) "B008", # do not perform function calls in argument defaults "B904", # exception chaining (too strict for CLI apps) ] [tool.ruff.lint.isort] known-first-party = ["flakestorm"] [tool.mypy] python_version = "3.10" warn_return_any = false warn_unused_configs = true disallow_untyped_defs = false ignore_missing_imports = true plugins = ["pydantic.mypy"] [[tool.mypy.overrides]] module = [ "ollama.*", "httpx.*", "typer.*", "rich.*", "jinja2.*", "sentence_transformers.*", "numpy.*", "huggingface_hub.*", ] ignore_missing_imports = true [tool.bandit] exclude_dirs = ["tests", "examples"] skips = ["B101"] # Skip assert warnings (used in tests) [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" addopts = "-v --cov=src/flakestorm --cov-report=term-missing"