# cjm-system-monitor-nvidia


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Install

``` bash
pip install cjm_system_monitor_nvidia
```

## Project Structure

    nbs/
    ├── meta.ipynb   # Metadata introspection for the NVIDIA monitor plugin used by cjm-ctl to generate the registration manifest
    └── plugin.ipynb # Plugin implementation for NVIDIA GPU monitoring using nvitop

Total: 2 notebooks

## Module Dependencies

``` mermaid
graph LR
    meta[meta<br/>meta]
    plugin[plugin<br/>plugin]
```

No cross-module dependencies detected.

## CLI Reference

No CLI commands found in this project.

## Module Overview

Detailed documentation for each module in the project:

### meta (`meta.ipynb`)

> Metadata introspection for the NVIDIA monitor plugin used by cjm-ctl
> to generate the registration manifest

#### Import

``` python
from cjm_system_monitor_nvidia.meta import (
    get_plugin_metadata
)
```

#### Functions

``` python
def get_plugin_metadata() -> Dict[str, Any]:  # Plugin metadata for manifest generation
    """Return metadata required to register this plugin with the PluginManager."""
    # Fallback base path (current behavior for backward compatibility)
    base_path = os.path.dirname(os.path.dirname(sys.executable))
    
    # Use CJM config if available, else fallback to env-relative paths
    cjm_data_dir = os.environ.get("CJM_DATA_DIR")
    
    # Plugin data directory
    plugin_name = "cjm-system-monitor-nvidia"
    if cjm_data_dir
    "Return metadata required to register this plugin with the PluginManager."
```

### plugin (`plugin.ipynb`)

> Plugin implementation for NVIDIA GPU monitoring using nvitop

#### Import

``` python
from cjm_system_monitor_nvidia.plugin import (
    NvidiaMonitorPlugin
)
```

#### Classes

``` python
class NvidiaMonitorPlugin:
    def __init__(self):
        """Initialize the NVIDIA monitor plugin."""
        self.logger = logging.getLogger(f"{__name__}.{type(self).__name__}")
        self.config = {}

    @property
    def name(self) -> str:  # Plugin identifier
    "NVIDIA System Monitor using nvitop."
    
    def __init__(self):
            """Initialize the NVIDIA monitor plugin."""
            self.logger = logging.getLogger(f"{__name__}.{type(self).__name__}")
            self.config = {}
    
        @property
        def name(self) -> str:  # Plugin identifier
        "Initialize the NVIDIA monitor plugin."
    
    def name(self) -> str:  # Plugin identifier
            """Plugin name."""
            return "sys-mon-nvidia"
        
        @property
        def version(self) -> str:  # Plugin version
        "Plugin name."
    
    def version(self) -> str:  # Plugin version
            """Plugin version."""
            return "1.0.0"
    
        def initialize(
            self,
            config: Optional[Dict[str, Any]] = None  # Configuration dictionary
        ) -> None
        "Plugin version."
    
    def initialize(
            self,
            config: Optional[Dict[str, Any]] = None  # Configuration dictionary
        ) -> None
        "Initialize or reconfigure the plugin."
    
    def get_config_schema(self) -> Dict[str, Any]:  # JSON Schema
            """Return JSON Schema for configuration."""
            return {}  # No config needed for monitoring
    
        def get_current_config(self) -> Dict[str, Any]:  # Current config
        "Return JSON Schema for configuration."
    
    def get_current_config(self) -> Dict[str, Any]:  # Current config
            """Return current configuration."""
            return self.config
    
        def cleanup(self) -> None
        "Return current configuration."
    
    def cleanup(self) -> None:
            """Clean up resources."""
            pass
    
        def _get_gpu_info_internal(self) -> Dict[str, Any]:  # Raw GPU data
        "Clean up resources."
    
    def execute(
            self,
            command: str = "get_system_status",  # Command to execute
            **kwargs
        ) -> Dict[str, Any]:  # SystemStats as dictionary
        "Collect stats and return standardized SystemStats dictionary."
```
