| [build-system] | |
| requires = ["setuptools>=42", "wheel"] | |
| build-backend = "setuptools.build_meta" | |
| [project] | |
| name = "bp-monitoring-pipeline" | |
| version = "1.0.0" | |
| description = "Blood Pressure Monitoring Pipeline β PPG signal ingestion, processing, and AI-based ABP prediction" | |
| authors = [{ name = "Data Engineering Team" }] | |
| requires-python = ">=3.11" | |
| readme = "README.md" | |
| license = { text = "MIT" } | |
| dependencies = [ | |
| # ββ Web Framework βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "fastapi>=0.110.0", | |
| "uvicorn[standard]>=0.29.0", | |
| # ββ Database β Supabase / PostgreSQL / SQLite βββββββββββββββββββββββββββββ | |
| "sqlalchemy>=2.0.0", | |
| "asyncpg>=0.29.0", # Async PostgreSQL driver (Supabase production) | |
| "alembic>=1.13.0", # Schema migrations (production deploys) | |
| "aiosqlite>=0.20.0", # SQLite async driver (local dev fallback) | |
| # ββ Message Broker ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "aio-pika>=9.4.0", # Async RabbitMQ / CloudAMQP (AMQP + AMQPS) | |
| # ββ Validation & Settings βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "pydantic>=2.0.0", | |
| "pydantic-settings>=2.0.0", | |
| "python-dotenv>=1.0.0", | |
| # ββ Signal Processing βββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "scipy>=1.12.0", # Butterworth filter, interpolation, segmentation | |
| "numpy>=1.26.0", # Numerical arrays throughout the pipeline | |
| # ββ Image Processing (VG adjacency matrix β PIL β torchvision tensor) ββββ | |
| "Pillow>=10.0.0", # PIL.Image used in numba_vgtlnet_preprocessor.py | |
| # ββ HTTP Client (scripts/mock_iot_sender.py) ββββββββββββββββββββββββββββββ | |
| "httpx>=0.27.0", | |
| ] | |
| [project.optional-dependencies] | |
| # ββ GPU / AI Model dependencies βββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Install with: pip install -e ".[gpu]" | |
| # Required for GANVGTLNetService (production inference). | |
| # NOT needed for the FastAPI / ETL #1 container β only the Colab consumer. | |
| gpu = [ | |
| "torch>=2.0.0", | |
| "torchvision>=0.15.0", # torchvision.transforms used in vgtlnet preprocessor | |
| "timm>=0.9.0", # timm.create_model("convnextv2_tiny...") in vgtlnet.py | |
| "numba>=0.59.0", # @njit JIT compiler for visibility graph (optional speedup) | |
| ] | |
| # ββ Development & Testing dependencies βββββββββββββββββββββββββββββββββββββββ | |
| # Install with: pip install -e ".[dev]" | |
| dev = [ | |
| "pytest>=8.0.0", | |
| "pytest-asyncio>=0.23.0", | |
| "pytest-cov>=5.0.0", | |
| "httpx>=0.27.0", # Async HTTP client for API integration tests | |
| "anyio>=4.0.0", # Async test backend | |
| "ruff>=0.4.0", # Linter + formatter | |
| "mypy>=1.10.0", # Static type checker | |
| ] | |
| # ββ All extras combined (convenience) ββββββββββββββββββββββββββββββββββββββββ | |
| # Install with: pip install -e ".[all]" | |
| all = [ | |
| "torch>=2.0.0", | |
| "torchvision>=0.15.0", | |
| "timm>=0.9.0", | |
| "numba>=0.59.0", | |
| "pytest>=8.0.0", | |
| "pytest-asyncio>=0.23.0", | |
| "pytest-cov>=5.0.0", | |
| "httpx>=0.27.0", | |
| "anyio>=4.0.0", | |
| "ruff>=0.4.0", | |
| "mypy>=1.10.0", | |
| ] | |
| [tool.setuptools.packages.find] | |
| where = ["."] | |
| include = ["src*", "scripts*"] | |
| [tool.pytest.ini_options] | |
| asyncio_mode = "auto" | |
| testpaths = ["tests"] | |
| python_files = ["test_*.py"] | |
| python_classes = ["Test*"] | |
| python_functions = ["test_*"] | |
| [tool.ruff] | |
| line-length = 100 | |
| target-version = "py311" | |
| select = ["E", "F", "I", "UP", "B"] | |
| [tool.mypy] | |
| python_version = "3.11" | |
| strict = true | |
| ignore_missing_imports = true | |