content: [project]
  name = "mirascope"
  version = "1.25.6"
  description = "LLM abstractions that aren't obstructions"
  readme = "README.md"
  license = { file = "LICENSE" }
  requires-python = ">=3.10"
  authors = [
      { name = "William Bakst", email = "william@mirascope.com" },
      { name = "Brendan Kao", email = "brendan@mirascope.com" },
  ]
  maintainers = [{ name = "William Bakst", email = "william@mirascope.com" }]
  keywords = [
      "agents",
      "anthropic",
      "artificial intelligence",
      "bedrock",
      "cohere",
      "developer tools",
      "gemini",
      "groq",
      "llm",
      "llm tools",
      "mistral",
      "openai",
      "prompt engineering",
      "pydantic",
      "vertex",
  ]
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Framework :: Pydantic :: 2",
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Topic :: File Formats :: JSON",
      "Topic :: File Formats :: JSON :: JSON Schema",
      "Topic :: Scientific/Engineering :: Artificial Intelligence",
      "Topic :: Software Development :: Libraries",
  ]
  dependencies = [
      "pydantic>=2.7.4,<3.0",
      "docstring-parser>=0.15,<1.0",
      "jiter>=0.5.0",
      "typing-extensions>=4.10.0",
  ]
  
  [project.urls]
  Homepage = "https://mirascope.com"
  Documentation = "https://mirascope.com/WELCOME"
  Repository = "https://github.com/Mirascope/mirascope"
  Issues = "https://github.com/Mirascope/mirascope/issues"
  Changelog = "https://github.com/Mirascope/mirascope/releases"
  
  [project.optional-dependencies]
  anthropic = ["anthropic>=0.29.0,<1.0"]
  azure = ["azure-ai-inference>=1.0.0b4,<2.0", "aiohttp>=3.10.5,<4.0"]
  bedrock = [
      "boto3>=1.34.70,<2",
      "aioboto3>=13.1.1,<14",
      "boto3-stubs[bedrock-runtime]>=1.35.32,<2",
      "types-aioboto3[bedrock-runtime]>=13.1.1,<14",
  ]
  cohere = ["cohere>=5.5.8,<6"]
  gemini = ["google-generativeai>=0.4.0,<1", "pillow>=10.4.0,<11"]
  google = ["google-genai>=1.2.0,<2", "pillow>=10.4.0,<11", "proto-plus>=1.24.0"]
  groq = ["groq>=0.9.0,<1"]
  tenacity = ["tenacity>=8.4.2,<9"]
  hyperdx = ["hyperdx-opentelemetry>=0.1.0,<1"]
  langfuse = ["langfuse>=2.30.0,<3"]
  litellm = ["litellm>=1.42.12,<2"]
  logfire = ["logfire>=1.0.0,<4"]
  mistral = ["mistralai>=1.0.0,<2"]
  openai = ["openai>=1.6.0,<2"]
  opentelemetry = ["opentelemetry-api>=1.22.0,<2", "opentelemetry-sdk>=1.22.0,<2"]
  vertex = ["google-cloud-aiplatform>=1.38.0,<2"]
  realtime = [
      "numpy>=1.26.4,<2",
      "pydub>=0.25.1,<1",
      "sounddevice>=0.5.1,<1",
      "websockets>=13.1,<14",
  ]
  mcp = ["mcp>=1.3.0"]
  xai = ["openai>=1.6.0,<2"]
  
  [tool.uv]
  dev-dependencies = [
      "ruff>=0.9.7",
      "pytest>=8.3.2",
      "pyright>=1.1.396",
      "pytest-asyncio>=0.23.8",
      "pytest-cov>=5.0.0",
      "pre-commit>=3.8.0",
      "mkdocs>=1.6.0",
      "mkdocs-material[imaging]>=9.5.32",
      "mkdocstrings>=0.25.2",
      "mkdocstrings-python>=1.10.8",
      "mkdocs-macros-plugin>=1.2.0",
      "mkdocs-jupyter>=0.25.0",
      "mkdocs-exclude>=1.0.2",
      "black>=24.8.0",
      "weaviate-client>=4.7.1",
      "chromadb>=1.0.0",
      "pinecone-client>=5.0.1",
      "scikit-learn>=1.5.1",
      "duckduckgo-search>=6.2.10,<7",
      "requests>=2.32.3",
      "beautifulsoup4>=4.12.3",
      "matplotlib>=3.9.2",
      "networkx>=3.3",
      "pandas>=2.2.2",
      "llama-index>=0.10.67.post1",
      "llama-index-llms-ollama>=0.2.2",
      "llama-index-embeddings-huggingface>=0.2.3",
      "slack-bolt>=1.20.0",
      "sqlmodel>=0.0.21",
      "azure-identity>=1.17.1",
      "pillow>=10.4.0",
      "notebook>=7.2.2",
      "nbconvert>=7.16.4",
      "docker>=7.1.0",
  ]
  
  [tool.uv.sources]
  mirascope = { workspace = true }
  
  [tool.pytest.ini_options]
  filterwarnings = ["ignore::DeprecationWarning"]
  
  [tool.ruff]
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".git-rewrite",
      ".hg",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "venv",
  ]
  line-length = 88
  target-version = "py310"
  
  [tool.ruff.lint.per-file-ignores]
  "__init__.py" = ["F401"]
  "tests/*.py" = ["S101", "ANN"]
  "examples/*.{py,ipynb}" = ["T201", "ANN"]
  "docs/*.{py,ipynb}" = ["T201", "ANN"]
  "mirascope/experimental/*.py" = ["T201"]
  
  [tool.ruff.lint]
  select = [
      "E",
      "F",
      "I",
      "UP",
      "YTT",
      "B",
      "T10",
      "T20",
      "C4",
      "PYI006",
      "SIM",
      "ANN",
      "RUF022",
  ]
  ignore = ['D105', 'D107', 'D205', 'D415', 'E501', 'B011', 'B028', 'B904']
  fixable = ["ALL"]
  pydocstyle = { convention = 'google' }
  unfixable = []
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  [tool.ruff.format]
  quote-style = "double"
  indent-style = "space"
  skip-magic-trailing-comma = false
  line-ending = "auto"
  
  [tool.ruff.lint.isort]
  known-first-party = ['mirascope', 'tests', 'examples']
  
  [tool.pyright]
  exclude = [
      "mirascope/beta",
      "examples/learn/calls/basic_usage/official_sdk/bedrock_sdk.py",
      "examples/learn/tools/basic_usage/official_sdk/bedrock_sdk.py",
      "examples/learn/response_models/basic_usage/official_sdk/bedrock_sdk.py",
      ".venv",
      "build",
  ]
  venvPath = "."
  venv = ".venv"
  
  [tool.codespell]
  skip = [".git", "*.lock"]
  ignore-words-list = 'EHR,reworkd,ROUGE,rouge,Rouge'
  ignore-regex = 'and buyed some milk'
  
  [tool.coverage.run]
  omit = [
      "mirascope/beta/*",
      "mirascope/experimental/*",
      "mirascope/v0/*",
      "mirascope/integrations/tenacity.py",
  ]
  
  [tool.coverage.report]
  exclude_also = ["@overload", "@abstractmethod", "if TYPE_CHECKING:"]
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  