[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "course-agent-backend" version = "0.1.0" description = "国土空间规划课程智能体后端服务" readme = "README.md" requires-python = ">=3.12" dependencies = [ "fastapi>=0.110.0", "uvicorn[standard]>=0.27.1", "langchain>=1.0.0", "langchain-openai>=0.3.0", "langchain-community>=0.3.0", "langchain-chroma>=0.2.0", "langchain-text-splitters>=0.3.0", "langgraph>=0.3.5", "chromadb>=0.4.0", "sentence-transformers>=2.2.2", "pypdf2>=3.0.0", "python-jose[cryptography]>=3.3.0", "passlib[bcrypt]>=1.7.4", "python-multipart>=0.0.6", "sqlalchemy>=2.0.0", "psycopg[binary]>=3.1.0", "sse-starlette>=1.6.5", "pydantic[email]>=2.5.0", "pydantic-settings>=2.1.0", "python-dotenv>=1.0.1", "httpx>=0.28.1", "jinja2>=3.1.3", "markdownify>=1.1.0", "watchdog>=3.0.0", "numpy>=2.2.3", "pandas>=2.2.3", "zstandard>=0.25.0", "lxml>=6.0.2", "python-docx>=1.2.0", "bcrypt==4.0.1", "duckduckgo-search>=6.0.0", "docx2txt>=0.9", "pypdf>=6.12.0", "pymupdf>=1.27.2.3", "pdf2image>=1.17.0", "opencv-python-headless>=4.13.0.92", ] [project.optional-dependencies] dev = [ "pytest>=7.4.0", "pytest-asyncio>=1.0.0", "pytest-cov>=6.0.0", "black>=24.0.0", "ruff>=0.1.0", "mypy>=1.8.0" ] [tool.hatch.build.targets.wheel] packages = ["src"] [tool.uv] required-version = ">=0.6.15" [[tool.uv.index]] url = "https://mirrors.aliyun.com/pypi/simple/" default = true [tool.ruff] line-length = 88 indent-width = 4 target-version = "py312" [tool.ruff.format] indent-style = "space" line-ending = "auto"