Nivel 72: demo_level72.py

Este es el nivel 72 del tour de aprendizaje.

Código Fuente

"""
DEMO LEVEL 72: For con Condición de Parada
-----------------------------------------
Adds: For con validation_expression para detener.
Continues: L71.

DIAGRAM:
For(validation_expression="_loop_iteration < 3") {
    drive()
}
"""

from wpipe import Pipeline, For, step

@step(name="drive")
def drive(data: dict) -> None:

    """Drive step.

    Args:

        data: Input data for the step.

    Returns:

        dict: Result of the step.

    """
    iteration = data.get("_loop_iteration", 0)
    print(f"🚗 Conduciendo iteración: {iteration}")
    return {"distancia": iteration * 10}

@step(name="verificar_llegada")
def verificar_llegada(data: dict) -> None:

    """Verificar llegada step.

    Args:

        data: Input data for the step.

    Returns:

        dict: Result of the step.

    """
    distancia = data.get("distancia", 0)
    print(f"🏁 Destino: {distancia}km")
    return {"verificado": True}

if __name__ == "__main__":
    pipe = Pipeline(pipeline_name="viaje_l72_whilefuel", verbose=True)
    pipe.set_steps(
        [
            For(
                iterations=10,
                validation_expression="_loop_iteration < 3",
                steps=[drive],
            ),
            verificar_llegada,
        ]
    )
    print("\n>>> Conducción con parada automática...\n")
    pipe.run({})

Resultado de Ejecución


>>> Conducción con parada automática...

🚗 Conduciendo iteración: 0 🚗 Conduciendo iteración: 1 🚗 Conduciendo iteración: 2 🚗 Conduciendo iteración: 3 🚗 Conduciendo iteración: 4 🚗 Conduciendo iteración: 5 🚗 Conduciendo iteración: 6 🚗 Conduciendo iteración: 7 🚗 Conduciendo iteración: 8 🚗 Conduciendo iteración: 9 🏁 Destino: 90km viaje_l72_whilefuel ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00