NRLMMD-GEOIPS / NRLMMD-GEOIPS/pluginify
`retry_get_plugin` raises `TypeError` when called for yaml-based interfaces
Open
@coleman-m is already working on this.
Since May 22, 2026.
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Requested Update
Description
- When
get_yaml_pluginfalls back toretry_get_plugin, the fallback attemptsinterface_obj.__class__.__base__(), which raisesTypeError: Can't instantiate abstract class BaseYamlInterface with abstract method validator. This masks the real error and prevents any useful diagnostic from reaching the caller.
Background and Motivation
BaseYamlInterfaceinherits fromBaseInterfaceand has an abstractvalidatormethod. Calling__base__()on a concrete interface subclass therefore tries to instantiateBaseYamlInterfacedirectly, which fails.- This path is only hit when the happy path of
get_yaml_pluginfails (e.g. plugin name not found in the registered file), so it is normally hidden behind successful lookups. It surfaced while developing tests for PR #17.
Code to demonstrate issue
- Trigger any path that causes
get_yaml_pluginto fall through toretry_get_pluginfor a yaml-based interface. For example, splice a fake registry entry whosenamefield in the on-disk YAML does not match the registry key, then call:
self.real_reg_validator.get_yaml_plugin(configs, "<mismatched-name>")
Expected: a helpful error indicating the plugin could not be found. Actual:
TypeError: Can't instantiate abstract class BaseYamlInterface with abstract method validator
raised from pluginify/plugin_registry.py:847 at the line base_interface_class = interface_obj.__class__.__base__().
Checklist for Completion
- Investigate the intent of the
__base__()call inretry_get_plugin-- it appears to assume the base class is concrete, which is not true for yaml-based interfaces. - Replace the abstract-class instantiation with a working construct (likely just use
interface_objitself, or look up the class without instantiating). - Add a regression test that exercises the fallback path for a yaml-based interface.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.