Source code for dxtbx.model.profile

from __future__ import annotations

import importlib.metadata
import logging
import sys

# REMOVE and inline when Python 3.10 is minimum
if sys.version_info < (3, 10):
    profile_entry_points = importlib.metadata.entry_points().get(
        "dxtbx.profile_model", []
    )
else:
    profile_entry_points = importlib.metadata.entry_points(group="dxtbx.profile_model")


[docs] class ProfileModelFactory: """ A factory to create a profile model """
[docs] @staticmethod def from_dict(obj): """ Given a dictionary, convert to a profile model """ if obj is None: return None for entry_point in profile_entry_points: if entry_point.name == obj["__id__"]: return entry_point.load().from_dict(obj) logging.getLogger("dxtbx.model.profile").warn( "No profile class %s registered" % obj["__id__"] ) print( "dxtbx.model.profile: WARNING: No profile class %s registered" % obj["__id__"] ) return None