[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "paperbanana" version = "0.1.2" description = "Agentic framework for automated academic illustration generation" readme = "README.md" license = "MIT" requires-python = ">=3.10" authors = [ { name = "PaperBanana Contributors" }, ] keywords = ["academic", "illustration", "diagram", "paper", "ai", "agent"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Visualization", ] dependencies = [ "pydantic>=2.0", "pydantic-settings>=2.0", "pyyaml>=6.0", "google-genai>=1.65", "pillow>=10.0", "typer>=0.12", "rich>=13.0", "httpx>=0.27", "aiofiles>=23.0", "matplotlib>=3.8", "pandas>=2.0", "tenacity>=8.0", "structlog>=24.0", "python-dotenv>=1.0", "platformdirs>=4.0", ] [project.optional-dependencies] google = ["google-genai>=1.65"] openai = ["openai>=1.0"] bedrock = ["boto3>=1.34"] anthropic = ["anthropic>=0.83"] litellm = ["litellm>=1.67.0,<2.0"] all-providers = [ "google-genai>=1.65", "openai>=1.0", "boto3>=1.34", "anthropic>=0.83", "litellm>=1.67.0,<2.0", ] mcp = ["fastmcp>=2.0"] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "pytest-cov>=4.0", "ruff>=0.4", "pymupdf>=1.24", "gradio>=4.44", ] pdf = ["pymupdf>=1.24"] studio = ["gradio>=4.44"] [project.urls] Homepage = "https://github.com/llmsresearch/paperbanana" Repository = "https://github.com/llmsresearch/paperbanana" Issues = "https://github.com/llmsresearch/paperbanana/issues" [project.scripts] paperbanana = "paperbanana.cli:app" paperbanana-mcp = "mcp_server.server:main" [tool.hatch.build.targets.wheel] packages = ["paperbanana", "mcp_server"] [tool.hatch.build.targets.wheel.force-include] "prompts" = "prompts" "data" = "data" "configs" = "configs" [tool.ruff] target-version = "py310" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "W"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]