Skip to content

Pheval class resolver

PhevalClassResolver

Bases: ClassResolver

Source code in src/pheval/implementations/pheval_class_resolver.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class PhevalClassResolver(ClassResolver):
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)

    # Modified _from_entrypoint method to raise error instead of warning
    @staticmethod
    def _from_entrypoint_custom(group: str) -> set[X]:
        elements: set[X] = set()
        eps = entry_points()
        for entry in eps.select(group=group):
            try:
                element = entry.load()
                logger.info(f"Loaded {entry.name} correctly")
            except (ImportError, AttributeError):
                logger.warn(f"could not load {entry.name}. See error message below.")
                raise
            else:
                elements.add(element)
        return elements

    def register_entrypoint(self, group: str) -> None:
        """Register additional entries from an entrypoint."""
        for element in self._from_entrypoint_custom(group).difference(self.lookup_dict.values()):
            self.register(element)

register_entrypoint(group)

Register additional entries from an entrypoint.

Source code in src/pheval/implementations/pheval_class_resolver.py
38
39
40
41
def register_entrypoint(self, group: str) -> None:
    """Register additional entries from an entrypoint."""
    for element in self._from_entrypoint_custom(group).difference(self.lookup_dict.values()):
        self.register(element)