numpy>=2.5.3 pandas>=2.0.0 httpx>=0.27.0 pydantic>=2.13.5 python-dotenv>=1.2.4 websockets>=17.4 duckdb>=1.5.6 flask>=3.0 ruff>=0.17.3 pytest>=9.2.0 pytest-asyncio>=1.4.1 # Parallel test execution (CI uses `-n auto`); harmless locally pytest-xdist>=3.5.0 # Randomised test order — exposes order-dependent flakes pytest-randomly>=5.0.0 # Per-test wall-clock timeout (60s default in CI; override via @pytest.mark.timeout) pytest-timeout>=2.3.0 anyio>=4.16.0 pyotp>=2.10.0 qrcode[svg]>=8.2 argon2-cffi>=23.1.0 PyJWT>=2.15.0 apscheduler>=3.11.3 jugaad-data>=0.37.0 Pillow>=12.1.1 cryptography>=50.0.2 sentence-transformers>=6.1.0 structlog>=26.1.0 flask-cors>=6.0.5 flask-limiter>=3.5 sentry-sdk[flask]>=2.71.0 # psutil for HealthMonitor.check_thread_count + check_memory; without it # the health monitor returns "skipped" and tests asserting baseline state # fail in CI environments that don't ship psutil by transitive pull-in. psutil>=5.9