content: [project]
  name = "MaiBot"
  version = "0.8.1"
  description = "MaiCore 是一个基于大语言模型的可交互智能体"
  requires-python = ">=3.10"
  dependencies = [
      "aiohttp>=3.12.14",
      "aiohttp-cors>=0.8.1",
      "apscheduler>=3.11.0",
      "asyncddgs>=0.1.0a1",
      "asyncio>=4.0.0",
      "beautifulsoup4>=4.13.4",
      "chromadb>=0.5.0",
      "colorama>=0.4.6",
      "cryptography>=45.0.5",
      "customtkinter>=5.2.2",
      "dotenv>=0.9.9",
      "exa-py>=1.14.20",
      "faiss-cpu>=1.11.0",
      "fastapi>=0.116.0",
      "google>=3.0.0",
      "google-genai>=1.29.0",
      "httpx>=0.28.1",
      "rjieba>=0.42.1",
      "json-repair>=0.47.6",
      "json5>=0.12.1",
      "jsonlines>=4.0.0",
      "langfuse==2.46.2",
      "lunar-python>=1.4.4",
      "lxml>=6.0.0",
      "maim-message>=0.3.8",
      "matplotlib>=3.10.3",
      "networkx>=3.4.2",
      "orjson>=3.10",
      "numpy>=2.2.6",
      "openai>=1.95.0",
      "opencv-python>=4.11.0.86",
      "packaging>=23.2",
      "pandas>=2.3.1",
      "peewee>=3.18.2",
      "pillow>=11.3.0",
      "pip-check-reqs>=2.5.5",
      "psutil>=7.0.0",
      "pyarrow>=20.0.0",
      "pydantic>=2.11.7",
      "pygments>=2.19.2",
      "pymongo>=4.13.2",
      "pymysql>=1.1.1",
      "pypinyin>=0.54.0",
      "python-dateutil>=2.9.0.post0",
      "python-dotenv>=1.1.1",
      "python-igraph>=0.11.9",
      "quick-algo>=0.1.3",
      "reportportal-client>=5.6.5",
      "requests>=2.32.4",
      "rich>=14.0.0",
      "ruff>=0.12.2",
      "scikit-learn>=1.7.0",
      "scipy>=1.15.3",
      "seaborn>=0.13.2",
      "setuptools>=80.9.0",
      "sqlalchemy>=2.0.42",
      "strawberry-graphql[fastapi]>=0.275.5",
      "structlog>=25.4.0",
      "tavily-python>=0.7.10",
      "toml>=0.10.2",
      "tomli>=2.2.1",
      "tomli-w>=1.2.0",
      "tomlkit>=0.13.3",
      "tqdm>=4.67.1",
      "urllib3>=2.5.0",
      "uvicorn>=0.35.0",
      "watchdog>=6.0.0",
      "websockets>=15.0.1",
      "aiomysql>=0.2.0",
      "aiosqlite>=0.21.0",
      "inkfox>=0.1.1",
      "rrjieba>=0.1.13",
      "mcp>=0.9.0",
      "sse-starlette>=2.2.1",
  ]
  
  [[tool.uv.index]]
  url = "https://pypi.tuna.tsinghua.edu.cn/simple"
  default = true
  
  [tool.uv.sources]
  amrita = { workspace = true }
  
  [tool.ruff]
  line-length = 120
  target-version = "py310"
  
  [tool.ruff.lint]
  select = [
      "F",     # Pyflakes
      "W",     # pycodestyle warnings
      "E",     # pycodestyle errors
      "UP",    # pyupgrade
      "ASYNC", # flake8-async
      "C4",    # flake8-comprehensions
      "T10",   # flake8-debugger
      "PYI",   # flake8-pyi
      "PT",    # flake8-pytest-style
      "Q",     # flake8-quotes
      "RUF",   # Ruff-specific rules
      "I",     # isort
      "PERF",  # pylint-performance
  ]
  ignore = [
      "E402",   # module-import-not-at-top-of-file
      "E501",   # line-too-long
      "UP037",  # quoted-annotation
      "RUF001", # ambiguous-unicode-character-string
      "RUF002", # ambiguous-unicode-character-docstring
      "RUF003", # ambiguous-unicode-character-comment
  ]
  
  
  # 如果一个变量的名称以下划线开头，即使它未被使用，也不应该被视为错误或警告。
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  [tool.ruff.format]
  docstring-code-format = true
  indent-style = "space"
  
  
  # 使用双引号表示字符串
  quote-style = "double"
  
  # 尊重魔法尾随逗号
  # 例如：
  # items = [
  #     "apple",
  #     "banana",
  #     "cherry",
  # ]
  skip-magic-trailing-comma = false
  
  # 自动检测合适的换行符
  line-ending = "auto"
  
  [dependency-groups]
  lint = ["loguru>=0.7.3"]
  