Skip to content

Commit

Permalink
Python version friendly entry points
Browse files Browse the repository at this point in the history
  • Loading branch information
dangunter committed Jun 17, 2024
1 parent 7c20035 commit d5aa3ad
Showing 1 changed file with 12 additions and 21 deletions.
33 changes: 12 additions & 21 deletions backend/app/internal/flowsheet_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
try:
from importlib import metadata
except ImportError:
from importlib_metadata import metadata
c
from pathlib import Path
import time
from types import ModuleType
Expand Down Expand Up @@ -426,31 +426,22 @@ def _get_flowsheet_interfaces(
Mapping with keys the module names and values FlowsheetInterface objects
"""
# Find the entry points for the package
ep = metadata.entry_points()
group_name = package_name + ".flowsheets"

def match_group(e, g):
result = None
if isinstance(e, str):
_log.warning(f"While matching to group {g}: "
f"EntryPoint object expected, got string '{e}'")
result = e == g
else:
result = e.matches(group=g)
return result

package_ep = [e for e in ep if match_group(e, group_name)]
eps = metadata.entry_points
project_pkg = package_name + ".flowsheets"
try:
pkg_eps = eps()[project_pkg] # old Python <= 3.9
except KeyError:
pkg_eps = eps(group=project_pkg) # new Python >= 3.10

# If none are found print an erorr and abort
if not package_ep:
_log.error(f"No interfaces found for: {package_name}, group={group_name}. "
f"All groups = {ep.groups}")
if not pkg_eps:
_log.error(f"No entry points found for package {project_pkg}")
return {}

interfaces = {}
_log.debug(f"Loading {len(list(package_ep))} entry points")
for ep in package_ep:
_log.debug(f"ep = {ep}")
_log.debug(f"Loading {len(list(pkg_eps))} entry points")
for ep in pkg_eps:
_log.debug(f"flowsheet-entry-point={ep}")
module_name = ep.value
try:
module = ep.load()
Expand Down

0 comments on commit d5aa3ad

Please sign in to comment.