[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "magentic_ui" license = "MIT" dynamic = ["version"] description = "A research prototype of a human-centered interface powered by a multi-agent system" readme = "README.md" requires-python = ">=3.12" keywords = ["agents", "browser-use", "multi-agent", "ai-assistant", "playwright", "web-automation"] authors = [ {name = "Microsoft Corporation", email = "magui@service.microsoft.com"} ] classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Topic :: Internet :: WWW/HTTP :: Browsers", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "openai>=1.0.0", "azure-identity", "markitdown~=0.1.5", "aioconsole", "nest_asyncio", "playwright>=1.58,<1.61", "loguru", "pydantic", "pydantic-settings", "fastapi[standard]", "typer", "aiofiles", "python-dotenv", "websockets", "sqlmodel", "psycopg", "alembic", "pyyaml", "html2text", "psutil", "pillow", "tenacity", "jsonschema", "tiktoken>=0.12,<0.14", "quick-sandbox[qemu,cua]~=0.11.14", "quicksand-cua>=0.3.10", "pip>=24", ] [project.urls] Homepage = "https://github.com/microsoft/magentic-ui" Repository = "https://github.com/microsoft/magentic-ui" Issues = "https://github.com/microsoft/magentic-ui/issues" [project.scripts] magentic = "magentic_ui.backend.cli:run" magentic-ui = "magentic_ui.backend.cli:run" [tool.uv] dev-dependencies = [ "poethepoet", "pyright==1.1.401", "ruff==0.4.8", "pytest_asyncio", "pytest-cov", "pytest", "sphinx", "sphinx-autodoc-typehints", "sphinx_rtd_theme", "types-aiofiles", "types-PyYaml", "flake8", ] [tool.hatch.metadata] allow-direct-references = true [tool.poe.tasks] fmt = "ruff format src tests" format.ref = "fmt" lint = "ruff check src tests" pyright = "pyright src" test.sequence = [ "playwright install", "pytest tests --cov=src --cov-report=xml --cov-report=term-missing", ] test.default_item_type = "cmd" check = ["fmt", "lint", "pyright", "test"] [tool.pytest.ini_options] pythonpath = ["src", "."] asyncio_default_fixture_loop_scope = "function" [tool.pyright] include = ["src", "tests"] exclude = ["src/magentic_ui/backend/web/routes", "src/magentic_ui/agents/web_surfer/fara", "src/magentic_ui/tools/playwright/playwright_controller_fara.py"] typeCheckingMode = "strict" reportUnnecessaryIsInstance = false reportMissingTypeStubs = false [tool.hatch.build.targets.wheel] include-package-data = true packages = ["src/magentic_ui"] [tool.hatch.version] path = "src/magentic_ui/version.py" [tool.hatch.build] include = [ "src/magentic_ui/**/*.py", "src/magentic_ui/**/*.yaml", "src/magentic_ui/**/*.json", "src/magentic_ui/**/*.js", "src/magentic_ui/**/*.txt", "src/magentic_ui/**/*.sh", "src/magentic_ui/backend/web/ui/**/*", ] exclude = [ "src/magentic_ui/tests/**", "**/__pycache__", "**/.*.swp", ] ignore-vcs = true