-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Martijn Govers <Martijn.Govers@Alliander.com>
- Loading branch information
Showing
3 changed files
with
115 additions
and
86 deletions.
There are no files selected for viewing
94 changes: 94 additions & 0 deletions
94
code_generation/templates/src/power_grid_model/_core/dataset_class_maps.py.jinja
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
"""Data types for power grid model dataset and component types.""" | ||
|
||
# This file is automatically generated. DO NOT modify it manually! | ||
|
||
{%- set dataset_types = all_map.keys() %} | ||
{%- set components = all_map['input'].keys() %} | ||
|
||
from enum import Enum, EnumMeta | ||
from typing import Any, Mapping, TypeAlias, TypeVar | ||
|
||
# fmt: off | ||
|
||
# pylint: disable=invalid-name | ||
|
||
class _MetaEnum(EnumMeta): | ||
def __contains__(cls, member): | ||
""" | ||
Check if member is part of the Enum. | ||
|
||
Args: | ||
member: Member to check. | ||
|
||
Returns: | ||
bool: True if the member is part of the Enum, False otherwise. | ||
""" | ||
return member in cls.__members__.keys() | ||
|
||
|
||
class DatasetType(str, Enum, metaclass=_MetaEnum): | ||
""" | ||
A DatasetType is the type of a :class:`Dataset` in power grid model. | ||
|
||
- Examples: | ||
|
||
- DatasetType.input = "input" | ||
- DatasetType.update = "update" | ||
""" | ||
{% for dataset_type in dataset_types %} | ||
{{ dataset_type }} = "{{ dataset_type }}" | ||
{%- endfor %} | ||
|
||
|
||
class ComponentType(str, Enum, metaclass=_MetaEnum): | ||
""" | ||
A ComponentType is the type of a grid component. | ||
|
||
- Examples: | ||
|
||
- ComponentType.node = "node" | ||
- ComponentType.line = "line" | ||
""" | ||
{% for component in components %} | ||
{{ component }} = "{{ component }}" | ||
{%- endfor %} | ||
|
||
|
||
# pylint: enable=invalid-name | ||
|
||
DatasetTypeLike: TypeAlias = DatasetType | str | ||
DatasetTypeVar = TypeVar("DatasetTypeVar", bound=DatasetTypeLike) # helper used for type deduction | ||
|
||
ComponentTypeLike: TypeAlias = ComponentType | str | ||
ComponentTypeVar = TypeVar("ComponentTypeVar", bound=ComponentTypeLike) # helper used for type deduction | ||
|
||
|
||
def _str_to_datatype(data_type: DatasetTypeLike) -> DatasetType: | ||
"""Helper function to transform data_type str to DatasetType.""" | ||
if isinstance(data_type, DatasetType): | ||
return data_type | ||
return DatasetType[data_type] | ||
|
||
|
||
def _map_to_datatypes(data: Mapping[DatasetTypeVar, Any]) -> dict[DatasetType, Any]: | ||
"""Helper function to map datatype str keys to DatasetType.""" | ||
return {_str_to_datatype(key): value for key, value in data.items()} | ||
|
||
|
||
def _str_to_component_type(component: ComponentTypeLike) -> ComponentType: | ||
"""Helper function to transform component str to ComponentType.""" | ||
if isinstance(component, ComponentType): | ||
return component | ||
return ComponentType[component] | ||
|
||
|
||
def _map_to_component_types(data: Mapping[ComponentTypeVar, Any]) -> dict[ComponentType, Any]: | ||
"""Helper function to map componenttype str keys to ComponentType.""" | ||
return {_str_to_component_type(key): value for key, value in data.items()} | ||
|
||
# fmt: on | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters