Nivel 27: demo_level27.py

Este es el nivel 27 del tour de aprendizaje.

Código Fuente

"""
DEMO LEVEL 27: Efficiency Log (Metrics)
---------------------------------------
Adds: Real-time numerical metrics recording.
Accumulates: Dashboard (L26).

DIAGRAM:
(drive)
   |-- Metric.record("consumption") -> 6.5 L
   |-- Metric.record("speed") -> 120 km/h
"""

import random
from typing import Any, Dict

from wpipe import Metric, Pipeline, step

@step(name="measure_efficiency")
def measure_efficiency(data: Any) -> Dict[str, float]:
    """Measure efficiency step recording fuel and speed metrics.

    Args:
        data: Input data for the step.

    Returns:
        Dict[str, float]: Efficiency data.
    """
    consumption = random.uniform(5.5, 9.0)
    speed = random.randint(100, 130)

    # NEW IN L27: Record numerical data for subsequent analytics
    Metric.record("fuel_consumption", consumption, unit="L/100km")
    Metric.record("average_speed", speed, unit="km/h")

    print(f"📊 Telemetry: {speed} km/h | {consumption:.1f} L/100km")
    return {"fuel": consumption, "speed": float(speed)}

if __name__ == "__main__":
    pipe = Pipeline(
        pipeline_name="trip_efficiency_l27",
        tracking_db="output/car_telemetry.db",
        verbose=True,
    )
    pipe.set_steps([measure_efficiency])
    pipe.run({})

Resultado de Ejecución


[PIPELINE STATUS] Registered: PIPE-2FD8827B [METRIC] fuel_consumption: 8.896367744950066 L/100km [METRIC] average_speed: 129 km/h 📊 Telemetry: 129 km/h | 8.9 L/100km trip_efficiency_l27 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00 [PIPELINE STATUS] PIPE-2FD8827B: COMPLETED