> This page is for version 0.5.0.
> For other versions, use one of these documentation indexes:
> - Main (default): https://docs.nvidia.com/nemo/gym/main/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo/gym/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo/gym/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo/gym/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo/gym/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo/gym/v0.3.0/llms.txt
> - 0.2.1: https://docs.nvidia.com/nemo/gym/v0.2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/gym/_mcp/server.

# nemo_gym.dataset_metrics

Dependency-light, environment-owned dataset metric hooks.

## Module Contents

### Classes

| Name                                                                           | Description                                                          |
| ------------------------------------------------------------------------------ | -------------------------------------------------------------------- |
| [`DatasetMetricsHookError`](#nemo_gym-dataset_metrics-DatasetMetricsHookError) | An environment's dataset metrics hook does not satisfy the protocol. |

### Functions

| Name                                                                               | Description                                                 |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [`load_dataset_metrics_hook`](#nemo_gym-dataset_metrics-load_dataset_metrics_hook) | Load an owning server's optional dataset-metrics hook once. |

### Data

[`DATASET_METRICS_EXPORT_NAME`](#nemo_gym-dataset_metrics-DATASET_METRICS_EXPORT_NAME)

[`DATASET_METRICS_MODULE_NAME`](#nemo_gym-dataset_metrics-DATASET_METRICS_MODULE_NAME)

[`DatasetMetricHook`](#nemo_gym-dataset_metrics-DatasetMetricHook)

[`DatasetMetricScalar`](#nemo_gym-dataset_metrics-DatasetMetricScalar)

[`DatasetMetricValue`](#nemo_gym-dataset_metrics-DatasetMetricValue)

### API

```python
class nemo_gym.dataset_metrics.DatasetMetricsHookError()
```

Exception

**Bases:** `Exception`

An environment's dataset metrics hook does not satisfy the protocol.

```python
nemo_gym.dataset_metrics.load_dataset_metrics_hook(
    server_dir: pathlib.Path
) -> nemo_gym.dataset_metrics.DatasetMetricHook | None
```

Load an owning server's optional dataset-metrics hook once.

The server may export `compute_task_metrics(task_input)` from
`dataset_metrics.py`. It receives one materialized row's `task_input` mapping
and returns a mapping from display names to scalar values, lists of scalar values,
or `None`. Numeric values produce numeric summaries; strings produce bounded
categorical summaries.

```python
nemo_gym.dataset_metrics.DATASET_METRICS_EXPORT_NAME = 'compute_task_metrics'
```

```python
nemo_gym.dataset_metrics.DATASET_METRICS_MODULE_NAME = 'dataset_metrics'
```

```python
nemo_gym.dataset_metrics.DatasetMetricHook: TypeAlias = Callable[[Mapping[str, object]], Mapping[str, DatasetMetricValue]]
```

```python
nemo_gym.dataset_metrics.DatasetMetricScalar: TypeAlias = bool | int | float | str
```

```python
nemo_gym.dataset_metrics.DatasetMetricValue: TypeAlias = DatasetMetricScalar | list[DatasetMetricScalar] | None
```