Skip to content

Commit

Permalink
Add orm.List ad orm.Dict socket and into type_mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
superstar54 committed Dec 4, 2024
1 parent 23bf553 commit 32a137e
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 2 deletions.
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@ workgraph = "aiida_workgraph.cli.cmd_workgraph:workgraph"
"workgraph.aiida_bool" = "aiida_workgraph.properties.builtins:PropertyAiiDABool"
"workgraph.aiida_int_vector" = "aiida_workgraph.properties.builtins:PropertyAiiDAIntVector"
"workgraph.aiida_float_vector" = "aiida_workgraph.properties.builtins:PropertyAiiDAFloatVector"
"workgraph.aiida_aiida_dict" = "aiida_workgraph.properties.builtins:PropertyAiiDADict"
"workgraph.aiida_list" = "aiida_workgraph.properties.builtins:PropertyAiiDAList"
"workgraph.aiida_dict" = "aiida_workgraph.properties.builtins:PropertyAiiDADict"
"workgraph.aiida_structuredata" = "aiida_workgraph.properties.builtins:PropertyStructureData"

[project.entry-points."aiida_workgraph.socket"]
Expand All @@ -138,6 +139,8 @@ workgraph = "aiida_workgraph.cli.cmd_workgraph:workgraph"
"workgraph.aiida_bool" = "aiida_workgraph.sockets.builtins:SocketAiiDABool"
"workgraph.aiida_int_vector" = "aiida_workgraph.sockets.builtins:SocketAiiDAIntVector"
"workgraph.aiida_float_vector" = "aiida_workgraph.sockets.builtins:SocketAiiDAFloatVector"
"workgraph.aiida_list" = "aiida_workgraph.sockets.builtins:SocketAiiDAList"
"workgraph.aiida_dict" = "aiida_workgraph.sockets.builtins:SocketAiiDADict"
"workgraph.aiida_structuredata" = "aiida_workgraph.sockets.builtins:SocketStructureData"


Expand Down
2 changes: 2 additions & 0 deletions src/aiida_workgraph/decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
orm.Float: "workgraph.aiida_float",
orm.Str: "workgraph.aiida_string",
orm.Bool: "workgraph.aiida_bool",
orm.List: "workgraph.aiida_list",
orm.Dict: "workgraph.aiida_dict",
orm.StructureData: "workgraph.aiida_structuredata",
}

Expand Down
12 changes: 12 additions & 0 deletions src/aiida_workgraph/properties/builtins.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,18 @@ def validate(self, value: any) -> None:
)


class PropertyAiiDAList(TaskProperty):
"""A new class for List type."""

identifier: str = "workgraph.aiida_list"
allowed_types = (list, orm.List, str, type(None))

def set_value(self, value: Union[list, orm.List, str] = None) -> None:
if isinstance(value, (list)):
value = orm.List(list=value)
super().set_value(value)


class PropertyAiiDADict(TaskProperty):
"""A new class for Dict type."""

Expand Down
14 changes: 14 additions & 0 deletions src/aiida_workgraph/sockets/builtins.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,20 @@ class SocketAiiDABool(TaskSocket):
property_identifier: str = "workgraph.aiida_bool"


class SocketAiiDAList(TaskSocket):
"""AiiDAList socket."""

identifier: str = "workgraph.aiida_list"
property_identifier: str = "workgraph.aiida_list"


class SocketAiiDADict(TaskSocket):
"""AiiDADict socket."""

identifier: str = "workgraph.aiida_dict"
property_identifier: str = "workgraph.aiida_dict"


class SocketAiiDAIntVector(TaskSocket):
"""Socket with a AiiDAIntVector property."""

Expand Down
6 changes: 6 additions & 0 deletions tests/test_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
def test_load_config():
from aiida_workgraph.config import load_config

config = load_config()
assert isinstance(config, dict)
assert config == {}
2 changes: 2 additions & 0 deletions tests/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
(orm.Str, "abc", "workgraph.aiida_string"),
(orm.Bool, True, "workgraph.aiida_bool"),
(orm.Bool, "{{variable}}", "workgraph.aiida_bool"),
(orm.List, [1, 2, 3], "workgraph.aiida_list"),
(orm.Dict, {"a": 1}, "workgraph.aiida_dict"),
),
)
def test_type_mapping(data_type, data, identifier) -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/widget/test_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ def test_workgraph_task(wg_calcfunction):
data = wg.tasks["sumdiff2"].to_html()
assert isinstance(data, IFrame)
# check _repr_mimebundle_ is working
data = wg._repr_mimebundle_()
data = wg.tasks["sumdiff2"]._repr_mimebundle_()

0 comments on commit 32a137e

Please sign in to comment.