[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project]
name = "smolagents"
version = "1.7.0.dev0"
description = "🤗 smolagents: a barebones library for agents. Agents write python code to call tools or orchestrate other agents."
authors = [
  { name="Aymeric Roucher", email="aymeric@hf.co" }, { name="Thomas Wolf"},
]
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
  "huggingface-hub>=0.28.0",
  "requests>=2.32.3",
  "rich>=13.9.4",
  "pandas>=2.2.3",
  "jinja2>=3.1.4",
  "pillow>=11.0.0",
  "markdownify>=0.14.1",
  "duckduckgo-search>=6.3.7",
]

[project.optional-dependencies]
torch = [
  "torch",
  "torchvision",
]
audio = [
  "soundfile",
  "smolagents[torch]",
]
transformers = [
  "accelerate",
  "transformers>=4.0.0",
  "smolagents[torch]",
]
e2b = [
  "e2b-code-interpreter>=1.0.3",
  "python-dotenv>=1.0.1",
]
gradio = [
  "gradio>=5.13.2",
]
litellm = [
  "litellm>=1.55.10",
]
mcp = [
  "mcpadapt>=0.0.6",
  "mcp",
]
openai = [
  "openai>=1.58.1"
]
telemetry = [
  "arize-phoenix",
  "opentelemetry-sdk", 
  "opentelemetry-exporter-otlp",
  "openinference-instrumentation-smolagents>=0.1.1"
]
quality = [
  "ruff>=0.9.0",
]
all = [
  "smolagents[accelerate,audio,e2b,gradio,litellm,mcp,openai,transformers,telemetry]",
]
test = [
  "ipython>=8.31.0", # for interactive environment tests
  "pytest>=8.1.0",
  "python-dotenv>=1.0.1", # For test_all_docs
  "smolagents[all]",
  "rank-bm25", # For test_all_docs
]
dev = [
  "smolagents[quality,test]",
  "sqlalchemy", # for ./examples
]

[tool.pytest.ini_options]
# Add the specified `OPTS` to the set of command line arguments as if they had been specified by the user.
addopts = "-sv --durations=0"

[tool.ruff]
line-length = 119
lint.ignore = [
  "F403", # undefined-local-with-import-star
  "E501", # line-too-long
]
lint.select = ["E", "F", "I", "W"]

[tool.ruff.lint.per-file-ignores]
"examples/*" = [
  "E402", # module-import-not-at-top-of-file
]

[tool.ruff.lint.isort]
known-first-party = ["smolagents"]
lines-after-imports = 2
