Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@

<!-- Here goes the main new features and examples or instructions on how to use them -->

* Added client methods for the new `platformassets.v1alpha1` RPCs:
`list_gridpools()`, `list_gridpool_energy_schedules()`,
`list_market_topology_relations()`, `list_microgrids()`, and
`list_microgrid_sensors()`.
* Added `component_ids` and `categories` filters to
`list_microgrid_electrical_components()`.

## Bug Fixes

<!-- Here goes notable bug fixes that are worth a special mention or explanation -->
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ dependencies = [
"frequenz-api-assets >= 0.3.0, < 0.4.0",
"frequenz-api-common >= 0.8.9, < 1",
"frequenz-client-base >= 0.11.0, < 0.12.0",
"frequenz-client-common >= 0.3.6, < 0.4.0",
"grpcio >= 1.80.0, < 2",
"frequenz-client-common >= 0.3.8, < 0.4.0",
"grpcio >= 1.81.0, < 2",
]
dynamic = ["version"]

Expand Down
30 changes: 30 additions & 0 deletions src/frequenz/client/assets/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,48 @@

"""Assets API client."""

from ._balancing_group import BalancingGroup
from ._client import AssetsApiClient
from ._delivery_area import DeliveryArea, EnergyMarketCodeType
from ._gridpool import Gridpool
from ._gridpool_energy_schedule import (
DeliveryDuration,
GridpoolEnergySchedule,
GridpoolEnergyScheduleDirection,
GridpoolEnergyScheduleTimeSeriesEntry,
)
from ._interval import Interval
from ._lifetime import Lifetime
from ._location import Location
from ._market_location import MarketLocation, MarketLocationId, MarketLocationIdType
from ._market_topology import (
MarketParticipation,
MarketParticipationType,
MarketTopologyRelation,
)
from ._microgrid import Microgrid, MicrogridStatus
from ._sensor import Sensor

__all__ = [
"AssetsApiClient",
"BalancingGroup",
"DeliveryArea",
"DeliveryDuration",
"EnergyMarketCodeType",
"Gridpool",
"GridpoolEnergySchedule",
"GridpoolEnergyScheduleDirection",
"GridpoolEnergyScheduleTimeSeriesEntry",
"Interval",
"Microgrid",
"MicrogridStatus",
"Location",
"Lifetime",
"MarketLocation",
"MarketLocationId",
"MarketLocationIdType",
"MarketParticipation",
"MarketParticipationType",
"MarketTopologyRelation",
"Sensor",
]
19 changes: 19 additions & 0 deletions src/frequenz/client/assets/_balancing_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# License: MIT
# Copyright © 2026 Frequenz Energy-as-a-Service GmbH

"""Balancing group definitions."""

from dataclasses import dataclass

from ._delivery_area import EnergyMarketCodeType


@dataclass(frozen=True, kw_only=True)
class BalancingGroup:
"""A market balancing group identified by its market code."""

code: str | None
"""The balancing group code."""

code_type: EnergyMarketCodeType | int
"""The type of market code used to identify the balancing group."""
20 changes: 20 additions & 0 deletions src/frequenz/client/assets/_balancing_group_proto.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# License: MIT
# Copyright © 2026 Frequenz Energy-as-a-Service GmbH

"""Conversion of BalancingGroup objects from protobuf messages."""

from frequenz.api.common.v1alpha8.grid import balancing_group_pb2
from frequenz.client.common.proto import enum_from_proto

from ._balancing_group import BalancingGroup
from ._delivery_area import EnergyMarketCodeType


def balancing_group_from_proto(
message: balancing_group_pb2.BalancingGroup,
) -> BalancingGroup:
"""Convert a protobuf balancing group message to a balancing group object."""
return BalancingGroup(
code=message.code or None,
code_type=enum_from_proto(message.code_type, EnergyMarketCodeType),
)
Loading
Loading