fix: fall back to jfjoch default when n_images_per_file is not configured #256

Merged
leonarski_f merged 1 commits from fix/jfjoch-images-per-file-default into main 2026-11-04 17:02:00 +01:00
2 changed files with 35 additions and 6 deletions

No files matched your search

+14 -5
View File
@@ -64,6 +64,19 @@ class JFJochWrapper:
logger.exception("Failed to create aare config client")
self._config_client = None
def _get_images_per_file(self) -> int | None:
"""Images per file from aare config; None (JFJoch default) if unavailable."""
if self._config_client is None:
return None
try:
return self._config_client.jfjoch.n_images_per_file or None
except Exception:
logger.warning(
"jfjoch/n_images_per_file not available from aare config; using JFJoch default",
exc_info=True,
)
return None
def connect(self) -> None:
"""Connect to JFJoch on first use; a no-op once the client exists."""
if self._connected:
@@ -186,11 +199,7 @@ class JFJochWrapper:
)
else:
smargon_phi_chi = None
images_per_file = (
self._config_client.jfjoch.n_images_per_file
if self._config_client is not None
else None
) or None
images_per_file = self._get_images_per_file()
dataset_settings = jfjoch_client.DatasetSettings(
beam_x_pxl=s.diffraction.beam_center_pxl[0],
beam_y_pxl=s.diffraction.beam_center_pxl[1],
+21 -1
View File
@@ -1,4 +1,4 @@
from unittest.mock import MagicMock, patch
from unittest.mock import MagicMock, PropertyMock, patch
import pytest
from aarecommon.errors.exception_handler import JFJochCommunicationError
@@ -123,6 +123,26 @@ def test_client_is_created_lazily(mock_jfjoch_client):
assert wrapper._api is api
def test_images_per_file_from_config(jfjoch_wrapper):
jfjoch_wrapper._config_client = MagicMock()
jfjoch_wrapper._config_client.jfjoch.n_images_per_file = 500
assert jfjoch_wrapper._get_images_per_file() == 500
def test_images_per_file_without_config_client(jfjoch_wrapper):
jfjoch_wrapper._config_client = None
assert jfjoch_wrapper._get_images_per_file() is None
def test_images_per_file_falls_back_when_key_not_set(jfjoch_wrapper):
# e.g. x06da, where jfjoch/n_images_per_file is not set and has no default
jfjoch_wrapper._config_client = MagicMock()
type(jfjoch_wrapper._config_client.jfjoch).n_images_per_file = PropertyMock(
side_effect=KeyError("jfjoch/n_images_per_file is not set and has no default")
)
assert jfjoch_wrapper._get_images_per_file() is None
def test_initialize(jfjoch_wrapper, mock_jfjoch_client):
mock_jfjoch_client.initialize_post.reset_mock()
jfjoch_wrapper.initialize()