Plugin Metadata

Data structures for plugin metadata

PluginMeta

The PluginMeta dataclass stores metadata about a plugin, including its name, version, and runtime state.


source

PluginMeta


def PluginMeta(
    name:str, version:str, description:str='', author:str='', package_name:str='', category:str='', interface:str='',
    config_schema:Optional=None, instance:Optional=None, enabled:bool=True, last_executed:float=0.0
)->None:

Metadata about a plugin.

Example: Creating Plugin Metadata

# Create plugin metadata
meta = PluginMeta(
    name="example_plugin",
    version="1.0.0",
    description="An example plugin",
    author="Example Author",
    category="transcription",
    interface="cjm_transcription_plugin_system.plugin_interface.TranscriptionPlugin",
    config_schema={
        "type": "object",
        "properties": {
            "model": {"type": "string", "default": "base"},
            "device": {"type": "string", "enum": ["cpu", "cuda"]}
        }
    }
)

print("PluginMeta instance:")
print(meta)
print(f"\nName: {meta.name}")
print(f"Version: {meta.version}")
print(f"Category: {meta.category}")
print(f"Interface: {meta.interface}")
print(f"Config Schema: {meta.config_schema}")
print(f"Enabled: {meta.enabled}")
print(f"Instance: {meta.instance}")
PluginMeta instance:
PluginMeta(name='example_plugin', version='1.0.0', description='An example plugin', author='Example Author', package_name='', category='transcription', interface='cjm_transcription_plugin_system.plugin_interface.TranscriptionPlugin', config_schema={'type': 'object', 'properties': {'model': {'type': 'string', 'default': 'base'}, 'device': {'type': 'string', 'enum': ['cpu', 'cuda']}}}, instance=None, enabled=True, last_executed=0.0)

Name: example_plugin
Version: 1.0.0
Category: transcription
Interface: cjm_transcription_plugin_system.plugin_interface.TranscriptionPlugin
Config Schema: {'type': 'object', 'properties': {'model': {'type': 'string', 'default': 'base'}, 'device': {'type': 'string', 'enum': ['cpu', 'cuda']}}}
Enabled: True
Instance: None
# Test with minimal arguments
minimal_meta = PluginMeta(name="minimal", version="0.1.0")
print(f"Minimal PluginMeta: {minimal_meta}")

# Test equality
meta_copy = PluginMeta(name="minimal", version="0.1.0")
print(f"\nEquality test: {minimal_meta == meta_copy}")
Minimal PluginMeta: PluginMeta(name='minimal', version='0.1.0', description='', author='', package_name='', category='', interface='', config_schema=None, instance=None, enabled=True, last_executed=0.0)

Equality test: True