cxr-draft-auditor / pyproject.toml
alex-feeel's picture
Upload pyproject.toml with huggingface_hub
3d6f096 verified
Raw
History Blame Contribute Delete
2.4 kB
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "cxr_auditor"
version = "0.1.0"
description = "Research/educational chest X-ray draft auditor: image-grounded findings vs draft impression, with a deterministic comparator. NOT a medical device."
readme = "README.md"
requires-python = ">=3.12"
license = { text = "Apache-2.0" }
authors = [{ name = "CXR Draft Auditor contributors" }]
keywords = ["chest-x-ray", "radiology", "vision-language-model", "medgemma", "audit", "hackathon"]
classifiers = [
"Programming Language :: Python :: 3.12",
"Intended Audience :: Science/Research",
"Topic :: Scientific/Engineering :: Medical Science Apps.",
"License :: OSI Approved :: Apache Software License",
]
# Core dependencies are deliberately dependency-light so that the pure-logic
# modules (findings, schema, prompts, and the downstream comparator/metrics)
# import and unit-test without any GPU, torch, transformers, or gradio stack.
dependencies = [
"numpy>=1.26",
"pydantic>=2.9",
"pillow>=10.3",
]
[project.optional-dependencies]
# Inference-time vision stack. Imported lazily inside functions so that
# importing a pure-logic module never pulls torch onto the import path.
vision = [
"torch>=2.4",
"transformers>=4.50",
"accelerate>=0.34",
"qwen-vl-utils>=0.0.8",
]
# Fine-tuning stack (Unsloth FastVisionModel QLoRA).
train = [
"unsloth>=2025.1.1",
"trl>=0.12",
"peft>=0.13",
"datasets>=3.0",
]
# Gradio app for local runs. On a Hugging Face Space the platform manages
# gradio/spaces/huggingface_hub; do not pin those in requirements.txt.
app = [
"gradio>=5.0",
]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"ruff>=0.8",
]
[project.urls]
Homepage = "https://huggingface.co/spaces"
[tool.hatch.build.targets.wheel]
packages = ["src/cxr_auditor"]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-v --cov=src/cxr_auditor --cov-report=term-missing --cov-fail-under=80"
pythonpath = ["src"]
[tool.coverage.run]
source = ["src/cxr_auditor"]
branch = true
omit = ["*/tests/*", "*/__pycache__/*"]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"if TYPE_CHECKING:",
"raise NotImplementedError",
]
[tool.ruff]
line-length = 127
target-version = "py312"
src = ["src", "tests"]
exclude = [".git", ".venv", "__pycache__", "build", "dist", "data"]