Skip to content

update_saved_scenario

update_saved_scenario

Service for updating an existing saved scenario.

Classes

UpdateSavedScenarioRunner

Bases: BaseRunner[Dict[str, Any]]

Runner for updating a SavedScenario in MyETM.

PUT /api/v3/saved_scenarios/:id

Functions
run staticmethod
run(client, saved_scenario_id, update_data, **kwargs)

Update an existing SavedScenario in MyETM.

Parameters:

Name Type Description Default
client BaseClient

The HTTP client to use

required
saved_scenario_id int

ID of the SavedScenario to update

required
update_data Dict[str, Any]

Dictionary with fields to update (title, private, discarded)

required
**kwargs Any

Additional arguments passed to the request

{}
Example usage

result = UpdateSavedScenarioRunner.run( client=client, saved_scenario_id=123, update_data={ "title": "Updated Title", "private": False } )

Source code in src/pyetm/services/scenario_runners/update_saved_scenario.py
@staticmethod
def run(
    client: BaseClient,
    saved_scenario_id: int,
    update_data: Dict[str, Any],
    **kwargs: Any,
) -> ServiceResult[Dict[str, Any]]:
    """
    Update an existing SavedScenario in MyETM.

    Args:
        client: The HTTP client to use
        saved_scenario_id: ID of the SavedScenario to update
        update_data: Dictionary with fields to update (title, private, discarded)
        **kwargs: Additional arguments passed to the request

    Example usage:
        result = UpdateSavedScenarioRunner.run(
            client=client,
            saved_scenario_id=123,
            update_data={
                "title": "Updated Title",
                "private": False
            }
        )
    """
    if not update_data:
        return ServiceResult.fail(["No fields provided for update"])

    filtered_data, warnings = UpdateSavedScenarioRunner._filter_allowed_fields(
        update_data,
        UpdateSavedScenarioRunner.ALLOWED_KEYS,
        "update saved scenario",
    )

    if not filtered_data:
        return ServiceResult.fail(
            ["No valid fields provided for update"] + warnings
        )

    payload = {"saved_scenario": filtered_data}

    result = UpdateSavedScenarioRunner._make_request(
        client=client,
        method="put",
        path=f"/saved_scenarios/{saved_scenario_id}",
        payload=payload,
        **kwargs,
    )

    if result.success and warnings:
        combined_errors = list(result.errors) + warnings
        assert result.data is not None, "Success result must have data"
        return ServiceResult.ok(data=result.data, errors=combined_errors)

    return result