Skip to content

update_inputs

update_inputs

Service for updating inputs on a session.

Classes

UpdateInputsRunner

Bases: BaseRunner[Dict[str, Any]]

Runner for updating inputs on a scenario through the main scenario endpoint.

PUT /api/v3/scenarios/{scenario_id}

Functions
build_request staticmethod
build_request(scenario, inputs)

Build input update request for concurrent batching.

Parameters:

Name Type Description Default
scenario Any

The scenario object (must have an 'id' attribute)

required
inputs Dict[str, Any]

Dictionary of input updates to apply

required

Returns:

Type Description
Dict[str, Any]

Request dict ready for AsyncBatchRunner

Source code in src/pyetm/services/scenario_runners/update_inputs.py
@staticmethod
def build_request(scenario: Any, inputs: Dict[str, Any]) -> Dict[str, Any]:
    """
    Build input update request for concurrent batching.

    Args:
        scenario: The scenario object (must have an 'id' attribute)
        inputs: Dictionary of input updates to apply

    Returns:
        Request dict ready for AsyncBatchRunner
    """
    return {
        "method": "put",
        "path": f"/scenarios/{scenario.id}",
        "payload": {"scenario": {"user_values": inputs}},
        "kwargs": {},
    }
run staticmethod
run(client, scenario, inputs, **kwargs)

Update inputs for a scenario.

Parameters:

Name Type Description Default
client BaseClient

The HTTP client to use

required
scenario Any

The scenario object (must have an 'id' attribute)

required
inputs Dict[str, Any]

Dictionary of input updates to apply (input_key -> value)

required
**kwargs Any

Additional arguments passed to the request

{}
Example usage

result = UpdateInputsRunner.run( client=client, scenario=scenario, inputs={ "input_key_1": 42.5, "input_key_2": 100.0, } )

Source code in src/pyetm/services/scenario_runners/update_inputs.py
@staticmethod
def run(
    client: BaseClient, scenario: Any, inputs: Dict[str, Any], **kwargs: Any
) -> ServiceResult[Dict[str, Any]]:
    """
    Update inputs for a scenario.

    Args:
        client: The HTTP client to use
        scenario: The scenario object (must have an 'id' attribute)
        inputs: Dictionary of input updates to apply (input_key -> value)
        **kwargs: Additional arguments passed to the request

    Example usage:
        result = UpdateInputsRunner.run(
            client=client,
            scenario=scenario,
            inputs={
                "input_key_1": 42.5,
                "input_key_2": 100.0,
            }
        )
    """
    payload = {"scenario": {"user_values": inputs}}

    return UpdateInputsRunner._make_request(
        client=client,
        method="put",
        path=f"/scenarios/{scenario.id}",
        payload=payload,
    )