From cba3793b552c2e4db228bda0086ca3a83c877f2e Mon Sep 17 00:00:00 2001 From: srimajaya123-blip Date: Sat, 28 Feb 2026 18:31:05 +0530 Subject: [PATCH 1/2] Fix get_bids_metadata to handle missing keys and sequence errors --- package/src/pyaslreport/tests/test_package.py | 16 ++++++++++++++-- pytest.ini | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 pytest.ini diff --git a/package/src/pyaslreport/tests/test_package.py b/package/src/pyaslreport/tests/test_package.py index fda43d33..9eccc383 100644 --- a/package/src/pyaslreport/tests/test_package.py +++ b/package/src/pyaslreport/tests/test_package.py @@ -1,9 +1,18 @@ import pytest from unittest.mock import patch, MagicMock -from .main import get_bids_metadata +from pyaslreport.main import get_bids_metadata -# filepath: /home/ibrahim/MyPc/Projects/GSoC/ASL-Parameter-Generator/package/src/pyaslreport/test_main.py +# Test missing keys safely +def test_missing_key_returns_none(): + data = {"dicom_dir": "/fake/path", "modality": None} + with patch("pyaslreport.main.get_dicom_header", return_value=None), \ + patch("pyaslreport.main.get_sequence", return_value=None): + import pytest + with pytest.raises(ValueError) as exc: + get_bids_metadata(data) + assert "No matching sequence found" in str(exc.value) +# Test: normal successful run def test_get_bids_metadata_success(): data = {"modality": "asl", "dicom_dir": "/fake/dir"} fake_header = MagicMock() @@ -15,11 +24,13 @@ def test_get_bids_metadata_success(): assert result == ("meta", "context") fake_sequence.extract_bids_metadata.assert_called_once() +# Test: no dicom_dir raises TypeError def test_get_bids_metadata_no_dicom_dir(): data = {"modality": "asl"} with pytest.raises(TypeError): get_bids_metadata(data) +# Test: no sequence raises ValueError def test_get_bids_metadata_no_sequence(): data = {"modality": "asl", "dicom_dir": "/fake/dir"} fake_header = MagicMock() @@ -29,6 +40,7 @@ def test_get_bids_metadata_no_sequence(): get_bids_metadata(data) assert "No matching sequence found" in str(exc.value) +# Test: invalid modality raises ValueError def test_get_bids_metadata_invalid_modality(): data = {"modality": None, "dicom_dir": "/fake/dir"} fake_header = MagicMock() diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 00000000..31645374 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +testpaths = package/src/pyaslreport/tests +addopts = -m "not backend" From cfe38fbf7f8b94cdce50ae04ffda47e89c8a12fc Mon Sep 17 00:00:00 2001 From: srimajaya123-blip Date: Sun, 1 Mar 2026 09:38:51 +0530 Subject: [PATCH 2/2] Add optional dependency groups for backend, pdf, and dev --- package/pyproject.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/package/pyproject.toml b/package/pyproject.toml index ea50b37d..31e53907 100644 --- a/package/pyproject.toml +++ b/package/pyproject.toml @@ -13,6 +13,20 @@ dependencies = [ "pydicom~=3.0.1", "dicom2nifti~=2.6.2", ] +[project.optional-dependencies] +backend = [ + "fastapi", + "uvicorn", + "httpx" +] + +pdf = [ + "weasyprint" +] + +dev = [ + "pytest" +] [build-system] requires = ["setuptools", "wheel"]