Source code for eclypse.policies.degrade.reduce

"""Generic value-reduction policy."""

from __future__ import annotations

from typing import TYPE_CHECKING

from eclypse.policies.degrade._helpers import (
    build_configured_value_adjustment_policy,
)

if TYPE_CHECKING:
    from eclypse.policies._filters import (
        EdgeFilter,
        NodeFilter,
    )
    from eclypse.utils.types import (
        UpdatePolicy,
        ValueAdjustmentOverrides,
    )


[docs] def reduce( *, factor: float | None = None, target: float | None = None, epochs: int | None = None, node_assets: str | list[str] | None = None, edge_assets: str | list[str] | None = None, node_asset_overrides: ValueAdjustmentOverrides | None = None, edge_asset_overrides: ValueAdjustmentOverrides | None = None, node_ids: list[str] | None = None, node_filter: NodeFilter | None = None, edge_ids: list[tuple[str, str]] | None = None, edge_filter: EdgeFilter | None = None, ) -> UpdatePolicy: """Reduce selected asset values over a fixed number of epochs. The policy applies either a relative ``factor`` or an absolute ``target`` to the selected node and edge assets. Default parameters can be provided once and then refined with ``node_asset_overrides`` or ``edge_asset_overrides`` for specific assets. Args: factor (float | None): Relative multiplicative factor applied to each selected asset. Provide either ``factor`` or ``target``. target (float | None): Absolute value reached by each selected asset at the end of the adjustment horizon. Provide either ``factor`` or ``target``. epochs (int | None): Number of evolution steps over which the reduction is applied. node_assets (str | list[str] | None): Node asset names using the default adjustment configuration. edge_assets (str | list[str] | None): Edge asset names using the default adjustment configuration. node_asset_overrides (ValueAdjustmentOverrides | None): Per-node-asset overrides for ``factor``, ``target``, or ``epochs``. edge_asset_overrides (ValueAdjustmentOverrides | None): Per-edge-asset overrides for ``factor``, ``target``, or ``epochs``. node_ids (list[str] | None): Optional subset of node identifiers to update. node_filter (NodeFilter | None): Optional predicate used to select nodes dynamically. edge_ids (list[tuple[str, str]] | None): Optional subset of edge identifiers to update. edge_filter (EdgeFilter | None): Optional predicate used to select edges dynamically. Returns: A graph update policy that reduces the selected asset values. """ return build_configured_value_adjustment_policy( "reduce", factor=factor, target=target, epochs=epochs, node_assets=node_assets, edge_assets=edge_assets, node_asset_overrides=node_asset_overrides, edge_asset_overrides=edge_asset_overrides, node_ids=node_ids, node_filter=node_filter, edge_ids=edge_ids, edge_filter=edge_filter, )