ChatDev/requirements.txt
voidborne-d 646f0d6747 fix(server): cover nested paths and warn when watchfiles missing
Review feedback on #611:

1. `Path.match` (used by uvicorn to filter reload candidates) does not
   expand `**` on Python < 3.13, so the flat `WareHouse/*` default only
   caught direct children — the agent-generated files that actually
   triggered #569 live at `WareHouse/<project>/<file>` and deeper.
   Expand defaults to multi-depth glob patterns (up to 10 levels) for
   each excluded dir.

2. `--reload-exclude` is only honoured by the watchfiles-backed reloader;
   without watchfiles uvicorn silently falls back to StatReload and
   drops every exclude pattern. Add `watchfiles` to requirements.txt so
   the filter works out of the box, and log a WARNING when --reload
   runs without watchfiles installed instead of failing silently.

Test coverage:
- `TestExcludePatternDepth` parametrised over 4 WareHouse depths plus
  logs/data/node_modules cases; also asserts real source paths like
  `server/app.py` are NOT matched (no over-exclusion regression).
- `TestWatchfilesWarning` covers the new `_watchfiles_available` probe
  and the WARNING log path.

20/20 tests pass; 8 new.
2026-04-24 16:32:27 +08:00

31 lines
358 B
Plaintext
Executable File

pyyaml
openai
tenacity
mcp
fastmcp
faiss-cpu
fastapi==0.124.0
click>=8.1.8,<8.3
uvicorn
watchfiles
websockets
wsproto
pydantic==2.12.5
requests
pytest
ddgs
beautifulsoup4
matplotlib
networkx
cartopy
pandas>=2.3.3
openpyxl>=3.1.2
numpy>=2.3.5
seaborn>=0.13.2
google-genai>=1.52.0
chardet>=5.2.0
pygame>=2.6.1
filelock>=3.20.1
markdown>=3.10
xhtml2pdf>=0.2.17