epyr.plugins

Plugin Architecture for EPyR Tools

Extensible plugin system for adding support for new file formats, data processing methods, and export formats.

This module provides: - Base plugin interfaces and abstract classes - Plugin discovery and loading mechanism - Format handler registration system - Extension point management

Usage:

# Register a new file format plugin from epyr.plugins import PluginManager, FileFormatPlugin

class MyFormatPlugin(FileFormatPlugin):

format_name = “myformat” file_extensions = [“.myf”, “.myformat”]

def can_load(self, file_path: Path) -> bool:

return file_path.suffix.lower() in self.file_extensions

def load(self, file_path: Path) -> Tuple[np.ndarray, np.ndarray, dict]:

# Implementation here pass

# Register the plugin plugin_manager.register_plugin(MyFormatPlugin())

Classes

BasePlugin()

Base class for all EPyR Tools plugins.

CSVExportPlugin()

Built-in CSV export plugin.

ExportPlugin()

Base class for data export plugins.

FileFormatPlugin()

Base class for file format plugins.

PluginManager()

Manages plugin discovery, loading, and registration.

ProcessingPlugin()

Base class for data processing plugins.

class epyr.plugins.BasePlugin[source]

Base class for all EPyR Tools plugins.

plugin_version: str = '1.0.0'
plugin_description: str = ''
plugin_author: str = ''
__init__()[source]

Initialize the plugin.

plugin_name: str = ''
abstractmethod initialize()[source]

Initialize the plugin. Called when plugin is loaded.

Returns:

True if initialization successful, False otherwise

Return type:

bool

cleanup()[source]

Cleanup plugin resources. Called when plugin is unloaded.

get_info()[source]

Get plugin information.

Return type:

Dict[str, Any]

class epyr.plugins.FileFormatPlugin[source]

Base class for file format plugins.

format_name: str = ''
file_extensions: List[str] = []
supports_loading: bool = True
supports_saving: bool = False
abstractmethod can_load(file_path)[source]

Check if this plugin can load the given file.

Parameters:

file_path (Path) – Path to the file to check

Returns:

True if plugin can load this file

Return type:

bool

abstractmethod load(file_path, **kwargs)[source]

Load data from file.

Parameters:
  • file_path (Path) – Path to file to load

  • **kwargs – Additional loading options

Returns:

Tuple of (x_data, y_data, parameters)

Return type:

Tuple[ndarray | None, ndarray | List[ndarray] | None, Dict[str, Any] | None]

can_save(data_format)[source]

Check if this plugin can save data in the specified format.

Parameters:

data_format (str) – Format identifier

Returns:

True if plugin supports saving in this format

Return type:

bool

save(file_path, x_data, y_data, parameters, **kwargs)[source]

Save data to file.

Parameters:
  • file_path (Path) – Path where to save the file

  • x_data (ndarray) – X-axis data

  • y_data (ndarray) – Y-axis data

  • parameters (Dict[str, Any]) – Metadata parameters

  • **kwargs – Additional saving options

Returns:

True if save successful

Return type:

bool

class epyr.plugins.ProcessingPlugin[source]

Base class for data processing plugins.

processing_name: str = ''
input_requirements: List[str] = []
output_types: List[str] = []
abstractmethod process(data, **kwargs)[source]

Process EPR data.

Parameters:
  • data (Dict[str, Any]) – Input data dictionary

  • **kwargs – Processing parameters

Returns:

Dictionary with processed results

Return type:

Dict[str, Any]

validate_input(data)[source]

Validate input data requirements.

Parameters:

data (Dict[str, Any]) – Input data dictionary

Returns:

True if input data meets requirements

Return type:

bool

class epyr.plugins.ExportPlugin[source]

Base class for data export plugins.

export_format: str = ''
file_extension: str = ''
supports_metadata: bool = True
abstractmethod export(output_path, x_data, y_data, parameters, **kwargs)[source]

Export data to specified format.

Parameters:
  • output_path (Path) – Path for output file

  • x_data (ndarray) – X-axis data

  • y_data (ndarray) – Y-axis data

  • parameters (Dict[str, Any]) – Metadata parameters

  • **kwargs – Export options

Returns:

True if export successful

Return type:

bool

class epyr.plugins.PluginManager[source]

Manages plugin discovery, loading, and registration.

__init__()[source]

Initialize plugin manager.

file_format_plugins: Dict[str, FileFormatPlugin]
processing_plugins: Dict[str, ProcessingPlugin]
export_plugins: Dict[str, ExportPlugin]
loaded_plugins: Dict[str, BasePlugin]
register_plugin(plugin)[source]

Register a plugin instance.

Parameters:

plugin (BasePlugin) – Plugin instance to register

Returns:

True if registration successful

Return type:

bool

unregister_plugin(plugin_name)[source]

Unregister a plugin by name.

Parameters:

plugin_name (str) – Name of plugin to unregister

Returns:

True if unregistration successful

Return type:

bool

discover_plugins(plugin_directories=None)[source]

Discover and load plugins from specified directories.

Parameters:

plugin_directories (List[Path] | None) – List of directories to search for plugins

Returns:

Number of plugins loaded

Return type:

int

get_file_format_plugin(file_path)[source]

Get appropriate file format plugin for a file.

Parameters:

file_path (Path) – Path to file

Returns:

Plugin that can load the file, or None

Return type:

FileFormatPlugin | None

get_export_plugin(format_name)[source]

Get export plugin for specified format.

Parameters:

format_name (str) – Export format name

Returns:

Plugin that can export to format, or None

Return type:

ExportPlugin | None

get_processing_plugin(processing_name)[source]

Get processing plugin by name.

Parameters:

processing_name (str) – Processing method name

Returns:

Processing plugin, or None

Return type:

ProcessingPlugin | None

list_plugins()[source]

List all loaded plugins by category.

Returns:

Dictionary with plugin information by category

Return type:

Dict[str, List[Dict[str, Any]]]

get_supported_extensions()[source]

Get list of all supported file extensions.

Returns:

List of file extensions (including dots)

Return type:

List[str]

class epyr.plugins.CSVExportPlugin[source]

Built-in CSV export plugin.

plugin_name: str = 'CSV Exporter'
export_format: str = 'csv'
file_extension: str = '.csv'
initialize()[source]

Initialize the plugin. Called when plugin is loaded.

Returns:

True if initialization successful, False otherwise

Return type:

bool

export(output_path, x_data, y_data, parameters, **kwargs)[source]

Export data to CSV format.

Parameters:
Return type:

bool