fastapi==0.111.0 PyMySQL==1.2.0 uvicorn[standard]==0.29.0 pydantic==2.7.1 pydantic-settings==2.2.1 sqlalchemy==2.0.30 smartapi-python==1.3.4 # smartapi-python's own metadata declares only python-dateutil, requests and # six — but `SmartApi/__init__.py` imports `SmartApi.smartApiWebsocket`, which # imports `websocket`. That module ships in `websocket-client`, so every # `from SmartApi import SmartConnect` needs it and pip will not bring it in. # It is a genuine runtime dependency of the broker layer, declared here # because upstream does not declare it. # # NOTE: `websockets` further down is a DIFFERENT package (module `websockets`, # used by uvicorn) and does not satisfy `import websocket`. Removing either one # because the other looks like a duplicate will break something. websocket-client==1.9.0 pyotp==2.9.0 apscheduler==3.10.4 pandas==2.2.2 numpy==1.26.4 scipy==1.13.0 python-dotenv==1.0.1 loguru==0.7.2 pytz==2024.1 websockets==12.0 requests==2.32.3 yfinance==0.2.54 anthropic passlib[bcrypt]==1.7.4 bcrypt==4.0.1 python-jose[cryptography]==3.3.0 cryptography==42.0.8 python-multipart==0.0.9 redis>=5.0 stripe>=7.0 # --- V2 CI tooling (Phase 1 Kickoff §4 tasks 36 + 39) --------------------- # import-linter runs the dependency-graph contracts in backend/.importlinter # (Task 36). pytest-cov drives the 80% line-coverage gate for backend/v2/ # (Task 39). Both are required by scripts/ci/check_v2_importlinter.sh and # scripts/ci/check_v2_coverage.sh respectively. import-linter>=2.0 pytest-cov>=5.0