content: [project]
  name = "modelbench"
  requires-python = ">=3.10, !=3.12.5, <3.13"
  
  [tool.poetry]
  name = "modelbench"
  version = "1.0.0"
  description = "Run benchmarks and generate reports measuring the behavior of many AI Systems."
  license = "Apache-2.0"
  authors = ["MLCommons AI Safety <ai-safety-engineering@mlcommons.org>"]
  readme = "README.md"
  repository = "https://github.com/mlcommons/modelbench"
  keywords = [
      "AI",
      "GenAI",
      "LLM",
      "NLP",
      "evaluate",
      "measure",
      "quality",
      "testing",
      "prompt",
      "safety",
      "compare",
      "artificial",
      "intelligence",
      "Large",
      "Language",
      "Models",
  ]
  classifiers = [
      "Development Status :: 4 - Beta",
      "Intended Audience :: Developers",
      "Intended Audience :: Information Technology",
      "Intended Audience :: Science/Research",
      "Natural Language :: English",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3",
      "Topic :: Scientific/Engineering",
      "Topic :: Scientific/Engineering :: Artificial Intelligence",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Topic :: System :: Benchmark",
      "Typing :: Typed",
  ]
  packages = [
      { include = "modelbench", from = "src"  },
      { include = "modelgauge", from = "src"  }
  
  ]
  
  [tool.poetry.dependencies]
  python = ">=3.10,!=3.12.5,<3.13"
  jq = "^1.6.0"
  click = "^8.3.0"
  casefy = "^1.0.0"
  termcolor = ">=2.4,<4.0"
  pip = ">=24,<26"
  jinja2 = "^3.1.3"
  scipy = "^1.12.0"
  retry = "^0.9.2"
  tabulate = "^0.9.0"
  
  zstandard = { extras = ["cffi"], version = ">=0.23" }
  
  tqdm = ">=4.66.1"
  types-tqdm = "^4.66.0.0"
  pydantic = "^2.6.0"
  sqlitedict = "^2.1.0"
  gdown = ">=5.1.0"
  tomli = "^2.0.1"
  typing-extensions = "^4.10.0"
  tenacity = "^9.0.0"
  jsonlines = "^4.0.0"
  diskcache = "^5.6.3"
  starlette = ">=0.41"
  fastapi = ">=0.115"
  together = "^1.2.3"
  anthropic = "*"
  azure-ai-ml = "^1.22"
  google-api-python-client = ">=2.179.0"
  google-generativeai = "^0.8.0"
  google-genai = "^1.17.0"
  google-auth = "^2.36.0"
  mistralai = "1.6.0"
  typing-inspect = "^0.9.0"
  boto3 = "^1.36.25"
  prometheus-client = ">=0.21.1,<0.23.0"
  llama-api-client = ">=0.1.1,<0.4.0"
  huggingface-hub = "^0.34.4"
  openai = "^1.8.0"
  pyarrow = ">=20,<22"
  tiktoken = "^0.11.0"
  
  [tool.poetry.group.dev.dependencies]
  pytest-datafiles = "^3.0.0"
  pytest = "^8.0.1"
  pytest-mock = "^3.12.0"
  pytest-timeout = "^2.3.1"
  mypy = "^1.7.1"
  black = "^25.1.0"
  beautifulsoup4 = "^4.12.3"
  flaky = "^3.8.1"
  types-beautifulsoup4 = "^4.12.0.20240229"
  httpx = ">=0.27.2,<0.29.0"
  freezegun = "^1.5.5"
  
  [tool.poetry.scripts]
  modelbench = "modelbench.cli:cli"
  modelgauge = "modelgauge.cli:cli"
  
  [tool.pytest.ini_options]
  addopts = [
      "--import-mode=importlib",
      "--ignore=src/modelgauge/",
  ]
  pythonpath = [
      "src", "tests", "tests/modelbench_tests", "tests/modelgauge_tests",
  ]
  [build-system]
  requires = ["poetry-core"]
  build-backend = "poetry.core.masonry.api"
  
  [tool.black]
  line-length = 120
  
  [tool.mypy]
  # Using namespace packages to do plugins requires us not to have __init__.py files.
  # However, by default mypy uses those to map file paths to modules. This override fixes that.
  # https://mypy.readthedocs.io/en/stable/config_file.html#confval-explicit_package_bases
  explicit_package_bases = true
  mypy_path = "., src, tests"
  
  [[tool.mypy.overrides]]
  module = "modelgauge.tests.*,modelgauge.annotators.*,modelgauge.safety_model_response"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  # The SUTs, when they were separate plugins, generally weren't written to 
  # comply; ignoring errors here for now.
  module = "modelgauge.suts.*"
  ignore_errors = true
  