Skip to content

Commit 3fd77b4

Browse files
committed
Rewrote CLEM preprocessing results registration workflows to make use of entry points defined in pyproject.toml instead
1 parent 0811cba commit 3fd77b4

File tree

1 file changed

+29
-13
lines changed

1 file changed

+29
-13
lines changed

src/murfey/server/__init__.py

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import math
66
import os
77
import subprocess
8+
import sys
89
import time
910
from datetime import datetime
1011
from functools import partial, singledispatch
@@ -51,10 +52,6 @@
5152
get_microscope,
5253
get_security_config,
5354
)
54-
from murfey.workflows.clem.register_results import (
55-
register_lif_preprocessing_result,
56-
register_tiff_preprocessing_result,
57-
)
5855

5956
try:
6057
from murfey.server.ispyb import TransportManager # Session
@@ -65,6 +62,12 @@
6562
from murfey.util.spa_params import default_spa_parameters
6663
from murfey.util.state import global_state
6764

65+
# Import entry_points depending on Python version
66+
if sys.version_info < (3, 10):
67+
from importlib_metadata import EntryPoint, entry_points
68+
else:
69+
from importlib.metadata import EntryPoint, entry_points
70+
6871
try:
6972
from importlib.resources import files # type: ignore
7073
except ImportError:
@@ -2968,15 +2971,28 @@ def feedback_callback(header: dict, message: dict) -> None:
29682971
if _transport_object:
29692972
_transport_object.transport.ack(header)
29702973
return None
2971-
elif message["register"] == "register_lif_preprocessing_result":
2972-
register_lif_preprocessing_result(message, murfey_db)
2973-
if _transport_object:
2974-
_transport_object.transport.ack(header)
2975-
return None
2976-
elif message["register"] == "register_tiff_preprocessing_result":
2977-
register_tiff_preprocessing_result(message, murfey_db)
2978-
if _transport_object:
2979-
_transport_object.transport.ack(header)
2974+
elif message["register"] in (
2975+
"register_lif_preprocessing_result",
2976+
"register_tiff_preprocessing_result",
2977+
):
2978+
murfey_workflows = list(
2979+
entry_points().select(
2980+
group="murfey.workflows.clem", name=message["register"]
2981+
)
2982+
)
2983+
# Run the workflow if a match is found
2984+
if len(murfey_workflows) > 0:
2985+
workflow: EntryPoint = murfey_workflows[0]
2986+
workflow.load()(
2987+
message=message,
2988+
db=murfey_db,
2989+
)
2990+
if _transport_object:
2991+
_transport_object.transport.ack(header)
2992+
# Nack message if no workflow found for message
2993+
else:
2994+
if _transport_object:
2995+
_transport_object.transport.nack(header)
29802996
return None
29812997
if _transport_object:
29822998
_transport_object.transport.nack(header, requeue=False)

0 commit comments

Comments
 (0)