From 8103b62ce49233adac03d6b74d51d62b8b02b3ab Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 8 Nov 2024 15:58:03 +0000 Subject: [PATCH 1/4] Replaced 'entry_points' instances with those from 'backports.entry_points_selectable'; added comments to note when external entry points are being looked for --- src/murfey/client/context.py | 5 +++-- src/murfey/server/main.py | 9 ++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/murfey/client/context.py b/src/murfey/client/context.py index 675f07679..8331ec4e4 100644 --- a/src/murfey/client/context.py +++ b/src/murfey/client/context.py @@ -4,7 +4,7 @@ from pathlib import Path from typing import Any, Dict, List, NamedTuple -import importlib_metadata +from backports.entry_points_selectable import entry_points from murfey.client.instance_environment import MurfeyInstanceEnvironment @@ -41,7 +41,8 @@ def __init__(self, name: str, acquisition_software: str): self.name = name def post_transfer(self, transferred_file: Path, role: str = "", **kwargs): - for h in importlib_metadata.entry_points(group="murfey.post_transfer_hooks"): + # Search other packages in this environment for additional hooks to include in Murfey + for h in entry_points(group="murfey.post_transfer_hooks"): if h.name == self.name: h.load()(transferred_file, role=role, **kwargs) diff --git a/src/murfey/server/main.py b/src/murfey/server/main.py index 040bd313d..5318709cb 100644 --- a/src/murfey/server/main.py +++ b/src/murfey/server/main.py @@ -2,8 +2,8 @@ import logging import os -import sys +from backports.entry_points_selectable import entry_points from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles @@ -23,12 +23,6 @@ from murfey.server import template_files from murfey.util.config import get_security_config -# Use importlib_metadata based on Python version -if sys.version_info < (3, 10): - from importlib_metadata import entry_points -else: - from importlib.metadata import entry_points - # Import Murfey server or demo server based on settings if os.getenv("MURFEY_DEMO"): from murfey.server.demo_api import router @@ -82,5 +76,6 @@ class Settings(BaseSettings): app.include_router(murfey.server.api.hub.router) app.include_router(murfey.server.websocket.ws) +# Search other packages in this environment for additional routers to include in Murfey for r in entry_points(group="murfey.routers"): app.include_router(r.load()) From 6bf7fb7b43eeb1af8ed1e1babec05aa5d320138a Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 8 Nov 2024 16:05:20 +0000 Subject: [PATCH 2/4] Removed 'importlib_resources' as Python 3.8 no longer supported --- src/murfey/server/__init__.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index be4cc10c3..d509d24c1 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -56,17 +56,13 @@ from murfey.server.ispyb import TransportManager # Session except AttributeError: pass +from importlib.resources import files + import murfey.util.db as db from murfey.util import LogFilter from murfey.util.spa_params import default_spa_parameters from murfey.util.state import global_state -try: - from importlib.resources import files # type: ignore -except ImportError: - # Fallback for Python 3.8 - from importlib_resources import files # type: ignore - logger = logging.getLogger("murfey.server") template_files = files("murfey") / "templates" From 961a83ccc64434571111adf44f49867dc69959d3 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 8 Nov 2024 16:06:03 +0000 Subject: [PATCH 3/4] Moved 'backports.entry_points_selectable' under 'dependencies' since it is also used on client side --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4bda7566e..e33ac1195 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", ] dependencies = [ + "backports.entry_points_selectable", "defusedxml", # For safely parsing XML files "pydantic<2", # Locked to <2 by zocalo "requests", @@ -55,7 +56,6 @@ developer = [ server = [ # "matplotlib", # For visual statistical analysis of images "aiohttp", - "backports.entry_points_selectable", "cryptography", "fastapi[standard]", "ispyb", # Responsible for setting requirements for SQLAlchemy and mysql-connector-python; v10.0.0: sqlalchemy <2, mysql-connector-python >=8.0.32 From 7a78f945c120c22e2d819373c97f89eb14515d25 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Mon, 11 Nov 2024 09:41:13 +0000 Subject: [PATCH 4/4] Shortened explanatory comments --- src/murfey/client/context.py | 2 +- src/murfey/server/main.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/murfey/client/context.py b/src/murfey/client/context.py index 8331ec4e4..5230a89bb 100644 --- a/src/murfey/client/context.py +++ b/src/murfey/client/context.py @@ -41,7 +41,7 @@ def __init__(self, name: str, acquisition_software: str): self.name = name def post_transfer(self, transferred_file: Path, role: str = "", **kwargs): - # Search other packages in this environment for additional hooks to include in Murfey + # Search external packages for additional hooks to include in Murfey for h in entry_points(group="murfey.post_transfer_hooks"): if h.name == self.name: h.load()(transferred_file, role=role, **kwargs) diff --git a/src/murfey/server/main.py b/src/murfey/server/main.py index 5318709cb..61ab08201 100644 --- a/src/murfey/server/main.py +++ b/src/murfey/server/main.py @@ -76,6 +76,6 @@ class Settings(BaseSettings): app.include_router(murfey.server.api.hub.router) app.include_router(murfey.server.websocket.ws) -# Search other packages in this environment for additional routers to include in Murfey +# Search external packages for additional routers to include in Murfey for r in entry_points(group="murfey.routers"): app.include_router(r.load())