content: [build-system]
  requires = ["setuptools>=61.0"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "llama-verifications"
  version = "0.1.2"
  authors = [{ name = "Meta Llama", email = "llama-oss@meta.com" }]
  description = "Llama Verifications"
  readme = "README.md"
  requires-python = ">=3.12"
  license = { "text" = "MIT" }
  classifiers = [
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3",
      "Operating System :: OS Independent",
      "Intended Audience :: Developers",
      "Intended Audience :: Information Technology",
      "Intended Audience :: Science/Research",
      "Topic :: Scientific/Engineering :: Artificial Intelligence",
      "Topic :: Scientific/Engineering :: Information Analysis",
  ]
  dependencies = [
      "h11>=0.16.0", # security
      "pydantic>=2",
      "rich",
      "setuptools",
      "jsonlines",
      "tqdm",
      "loguru",
      "datasets",
      "click",
      "openai",
      "httpcore>=0.15.0",
      "langdetect",
      "emoji",
      "nltk",
      "pythainlp",
      "pillow",
      "sacrebleu",
      "setuptools",
      "tree-sitter",
      "tree-sitter-java",
      "tree-sitter-javascript",
      "dotenv",
      "pytest-json-report>=1.5.0",
  ]
  
  [project.optional-dependencies]
  dev = [
      "bfcl-eval",
      "pytest",
      "pytest-asyncio",
      "nbval",            # For notebook testing
      "black",
      "ruff",
      "types-requests",
      "types-setuptools",
      "pre-commit",
      "pip-tools",
  ]
  
  [tool.setuptools]
  package-dir = {"llama_verifications" = "llama_verifications"}
  packages = {find = {}}
  package-data = {"llama_verifications" = ["provider_confs/*.yaml"]}
  
  
  [project.scripts]
  llama-verifications = "llama_verifications.cli.main:cli"
  
  
  [tool.ruff]
  line-length = 120
  exclude = [
      "./.git",
      "./docs/*",
      "./build",
      "./venv",
      "*.pyi",
      ".pre-commit-config.yaml",
      "*.md",
      ".flake8",
  ]
  
  [tool.ruff.lint]
  select = [
      "UP",      # pyupgrade
      "B",       # flake8-bugbear
      "B9",      # flake8-bugbear subset
      "C",       # comprehensions
      "E",       # pycodestyle
      "F",       # Pyflakes
      "N",       # Naming
      "W",       # Warnings
      "DTZ",     # datetime rules
      "I",       # isort (imports order)
      "RUF001",  # Checks for ambiguous Unicode characters in strings
      "RUF002",  # Checks for ambiguous Unicode characters in docstrings
      "RUF003",  # Checks for ambiguous Unicode characters in comments
      "PLC2401", # Checks for the use of non-ASCII characters in variable names
      "PLC2403", # Checks for the use of non-ASCII characters in import statements
      "PLE2510", # Checks for strings that contain the control character BS.
      "PLE2512", # Checks for strings that contain the raw control character SUB.
      "PLE2513", # Checks for strings that contain the raw control character ESC.
      "PLE2514", # Checks for strings that contain the raw control character NUL (0 byte).
      "PLE2515", # Checks for strings that contain the zero width space character.
  ]
  ignore = [
      # The following ignores are desired by the project maintainers.
      "E402", # Module level import not at top of file
      "E501", # Line too long
      "F405", # Maybe undefined or defined from star import
      "C408", # Ignored because we like the dict keyword argument syntax
      "N812", # Ignored because import torch.nn.functional as F is PyTorch convention
  
      # These are the additional ones we started ignoring after moving to ruff. We should look into each one of them later.
      "C901", # Complexity of the function is too high
  ]
  unfixable = [
      "PLE2515",
  ] # Do not fix this automatically since ruff will replace the zero-width space with \u200b - let's do it manually
  
  [tool.ruff.lint.per-file-ignores]
  "llama_verifications/benchmarks/benchmarks/ifeval/utils/ifeval_utils.py" = [
      "RUF001",
      "UP028",
  ]
  "llama_verifications/benchmarks/benchmarks/common/graders/regex_parser_multiple_choice_grader.py" = [
      "RUF001",
      "PLE2515"
  ]
  