Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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
Expand Down
5 changes: 3 additions & 2 deletions src/murfey/client/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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 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)

Expand Down
19 changes: 7 additions & 12 deletions src/murfey/server/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import time
from datetime import datetime
from functools import partial, singledispatch
from importlib.resources import files
from pathlib import Path
from threading import Thread
from typing import Any, Dict, List, NamedTuple, Tuple
Expand All @@ -17,8 +18,10 @@
import uvicorn
import workflows
import zocalo.configuration
from backports.entry_points_selectable import entry_points
from fastapi import Request
from fastapi.templating import Jinja2Templates
from importlib_metadata import EntryPoint # For type hinting only
from ispyb.sqlalchemy._auto_db_schema import (
AutoProcProgram,
Base,
Expand All @@ -42,33 +45,25 @@
import murfey
import murfey.server.prometheus as prom
import murfey.server.websocket
import murfey.util.db as db
from murfey.client.contexts.tomo import _midpoint
from murfey.server.murfey_db import url # murfey_db
from murfey.util import LogFilter
from murfey.util.config import (
MachineConfig,
get_hostname,
get_machine_config,
get_microscope,
get_security_config,
)
from murfey.util.spa_params import default_spa_parameters
from murfey.util.state import global_state

try:
from murfey.server.ispyb import TransportManager # Session
except AttributeError:
pass
from backports.entry_points_selectable import entry_points
from importlib_metadata import EntryPoint # For type hinting only

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")

Expand Down
9 changes: 2 additions & 7 deletions src/murfey/server/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -82,5 +76,6 @@ class Settings(BaseSettings):
app.include_router(murfey.server.api.hub.router)
app.include_router(murfey.server.websocket.ws)

# Search external packages for additional routers to include in Murfey
for r in entry_points(group="murfey.routers"):
app.include_router(r.load())