[project] name = "WordAgent" version = "1.0.0" description = "WenCe AI Writing Assistant - 智能写作助手" readme = "README.md" requires-python = ">=3.11" license = { text = "Apache2.0" } authors = [{ name = "WenCe AI Team" }] dependencies = [ "fastapi>=0.104.0", "uvicorn[standard]>=0.24.0", "pydantic>=2.0.0", "pydantic-settings>=2.0.0", "openai>=1.0.0", "sqlalchemy>=2.0.0", "aiosqlite>=0.19.0", "langchain>=0.1.0", "langchain-openai>=0.0.5", "langchain-anthropic>=0.1.0", "langchain-core>=0.1.0", "langchain-experimental>=0.0.10", "httpx[socks]>=0.28.1", "pyside6>=6.10.0", "pyside6-fluent-widgets>=1.11.1", "python-dotenv>=1.0.0", "langsmith>=0.1.0", "cryptography>=41.0.0", "langchain-mcp-adapters>=0.2.0", "python-multipart>=0.0.22", "pymupdf>=1.27.2.2", "python-docx>=1.2.0", "rapidocr-onnxruntime", "matplotlib>=3.10.9", "tqdm>=4.67.3", "seaborn>=0.13.2", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "black>=23.0.0", "ruff>=0.1.0", "mypy>=1.0.0", ] [project.scripts] wence = "app.main:start" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] [tool.black] line-length = 120 target-version = ["py310", "py311"] [tool.ruff] line-length = 120 target-version = "py310" select = ["E", "F", "I", "N", "W", "UP", "B", "C4", "SIM"] ignore = ["E501", "B008"] [tool.ruff.per-file-ignores] "__init__.py" = ["F401"] [tool.ruff.isort] known-first-party = ["app"] [tool.mypy] python_version = "3.11" ignore_missing_imports = true show_error_codes = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false