Skip to content

Commit b0e2632

Browse files
authored
use PythonJob explicitly (#132)
* use `PythonJob` explicitly * drop `run_remotely`
1 parent 9281465 commit b0e2632

File tree

11 files changed

+818
-858
lines changed

11 files changed

+818
-858
lines changed

aiida_workgraph/collection.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ def new(
1313
identifier: Union[Callable, str],
1414
name: Optional[str] = None,
1515
uuid: Optional[str] = None,
16-
run_remotely: Optional[bool] = False,
1716
**kwargs: Any
1817
) -> Any:
1918
from aiida_workgraph.decorator import (
@@ -25,15 +24,8 @@ def new(
2524
# build the task on the fly if the identifier is a callable
2625
if callable(identifier):
2726
identifier = build_task_from_callable(identifier)
28-
if run_remotely:
29-
if identifier.node.node_type.upper() == "GRAPH_BUILDER":
30-
raise ValueError(
31-
"GraphBuilder task cannot be run remotely. Please set run_remotely=False."
32-
)
33-
# this is a PythonJob
34-
identifier, _ = build_pythonjob_task(identifier)
3527
return super().new(identifier, name, uuid, **kwargs)
36-
if isinstance(identifier, str) and identifier.upper() == "PythonJob":
28+
if isinstance(identifier, str) and identifier.upper() == "PYTHONJOB":
3729
identifier, _ = build_pythonjob_task(kwargs.pop("function"))
3830
return super().new(identifier, name, uuid, **kwargs)
3931
if isinstance(identifier, str) and identifier.upper() == "SHELLJOB":

aiida_workgraph/decorator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,13 @@ def build_pythonjob_task(func: Callable) -> Task:
260260
from aiida_workgraph.calculations.python import PythonJob
261261
from copy import deepcopy
262262

263+
# if the function is not a task, build a task from the function
264+
if not hasattr(func, "node"):
265+
TaskDecoratorCollection.decorator_task()(func)
266+
if func.node.node_type.upper() == "GRAPH_BUILDER":
267+
raise ValueError(
268+
"GraphBuilder task cannot be run remotely. Please remove 'PythonJob'."
269+
)
263270
tdata = {"executor": PythonJob, "task_type": "CALCJOB"}
264271
_, tdata_py = build_task_from_AiiDA(tdata)
265272
tdata = deepcopy(func.tdata)

docs/source/blog/aiida_python.ipynb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@
104104
],
105105
"source": [
106106
"wg = WorkGraph(\"atomization_energy\")\n",
107-
"pw_atom = wg.tasks.new(emt, name=\"emt_atom\", run_remotely=True)\n",
108-
"pw_mol = wg.tasks.new(emt, name=\"emt_mol\", run_remotely=True)\n",
107+
"pw_atom = wg.tasks.new(\"PythonJob\", function=emt, name=\"emt_atom\")\n",
108+
"pw_mol = wg.tasks.new(\"PythonJob\", function=emt, name=\"emt_mol\")\n",
109109
"# create the task to calculate the atomization energy\n",
110110
"wg.tasks.new(\"PythonJob\", function=atomization_energy, name=\"atomization_energy\",\n",
111111
" energy_atom=pw_atom.outputs[\"result\"],\n",
@@ -272,10 +272,9 @@
272272
" return x*y + z\n",
273273
"\n",
274274
"wg = WorkGraph(\"PythonJob_parent_folder\")\n",
275-
"wg.tasks.new(add, name=\"add\", run_remotely=True)\n",
276-
"wg.tasks.new(multiply, name=\"multiply\",\n",
275+
"wg.tasks.new(\"PythonJob\", function=add, name=\"add\")\n",
276+
"wg.tasks.new(\"PythonJob\", function=multiply, name=\"multiply\",\n",
277277
" parent_folder=wg.tasks[\"add\"].outputs[\"remote_folder\"],\n",
278-
" run_remotely=True,\n",
279278
" )\n",
280279
"\n",
281280
"wg.to_html()"
@@ -325,7 +324,7 @@
325324
"name": "python",
326325
"nbconvert_exporter": "python",
327326
"pygments_lexer": "ipython3",
328-
"version": "3.11.0"
327+
"version": "3.1.-1"
329328
},
330329
"vscode": {
331330
"interpreter": {

docs/source/built-in/html/PythonJob_parent_folder.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
const { RenderUtils } = ReteRenderUtils;
6060
const styled = window.styled;
6161

62-
const workgraphData = {"name": "PythonJob_parent_folder", "uuid": "33cac690-3b79-11ef-a514-906584de3e5b", "state": "CREATED", "nodes": {"add": {"label": "add", "inputs": [{"name": "x", "identifier": "General", "uuid": "33cd3fba-3b79-11ef-a514-906584de3e5b", "node_uuid": "33cd37a4-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "33cd40fa-3b79-11ef-a514-906584de3e5b", "node_uuid": "33cd37a4-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "remote_folder"}], "position": [30, 30]}, "multiply": {"label": "multiply", "inputs": [{"name": "x", "identifier": "General", "uuid": "33cfb5b0-3b79-11ef-a514-906584de3e5b", "node_uuid": "33cfb056-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "33cfb678-3b79-11ef-a514-906584de3e5b", "node_uuid": "33cfb056-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "parent_folder"}], "outputs": [], "position": [60, 60]}}, "links": [{"from_socket": "remote_folder", "from_node": "add", "from_socket_uuid": "33cd6134-3b79-11ef-a514-906584de3e5b", "to_socket": "parent_folder", "to_node": "multiply", "state": false}]}
62+
const workgraphData = {"name": "PythonJob_parent_folder", "uuid": "064dfe3a-3cf0-11ef-a650-906584de3e5b", "state": "CREATED", "nodes": {"add": {"label": "add", "inputs": [{"name": "x", "identifier": "General", "uuid": "06510512-3cf0-11ef-a650-906584de3e5b", "node_uuid": "0650d628-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "06510648-3cf0-11ef-a650-906584de3e5b", "node_uuid": "0650d628-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "remote_folder"}], "position": [30, 30]}, "multiply": {"label": "multiply", "inputs": [{"name": "x", "identifier": "General", "uuid": "0653a83a-3cf0-11ef-a650-906584de3e5b", "node_uuid": "0653a2d6-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "0653a916-3cf0-11ef-a650-906584de3e5b", "node_uuid": "0653a2d6-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "parent_folder"}], "outputs": [], "position": [60, 60]}}, "links": [{"from_socket": "remote_folder", "from_node": "add", "from_socket_uuid": "06512132-3cf0-11ef-a650-906584de3e5b", "to_socket": "parent_folder", "to_node": "multiply", "state": false}]}
6363

6464
// Define Schemes to use in vanilla JS
6565
const Schemes = {

docs/source/built-in/html/PythonJob_shell_command.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
const { RenderUtils } = ReteRenderUtils;
6060
const styled = window.styled;
6161

62-
const workgraphData = {"name": "PythonJob_shell_command", "uuid": "47bd7346-3b79-11ef-a514-906584de3e5b", "state": "CREATED", "nodes": {"add": {"label": "add", "inputs": [{"name": "x", "identifier": "General", "uuid": "47bff27e-3b79-11ef-a514-906584de3e5b", "node_uuid": "47bfec8e-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "47bff364-3b79-11ef-a514-906584de3e5b", "node_uuid": "47bfec8e-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "result"}], "position": [30, 30]}, "multiply": {"label": "multiply", "inputs": [{"name": "x", "identifier": "General", "uuid": "47c1fbdc-3b79-11ef-a514-906584de3e5b", "node_uuid": "47c1f70e-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [{"from_node": "add", "from_socket": "result", "from_socket_uuid": "47c012ea-3b79-11ef-a514-906584de3e5b"}], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "47c1fca4-3b79-11ef-a514-906584de3e5b", "node_uuid": "47c1f70e-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "x"}], "outputs": [], "position": [60, 60]}}, "links": [{"from_socket": "result", "from_node": "add", "from_socket_uuid": "47c012ea-3b79-11ef-a514-906584de3e5b", "to_socket": "x", "to_node": "multiply", "state": false}]}
62+
const workgraphData = {"name": "PythonJob_shell_command", "uuid": "1984ae4c-3cee-11ef-8178-906584de3e5b", "state": "CREATED", "nodes": {"add": {"label": "add", "inputs": [{"name": "x", "identifier": "General", "uuid": "1986e932-3cee-11ef-8178-906584de3e5b", "node_uuid": "1986e3ba-3cee-11ef-8178-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "1986ea22-3cee-11ef-8178-906584de3e5b", "node_uuid": "1986e3ba-3cee-11ef-8178-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "result"}], "position": [30, 30]}, "multiply": {"label": "multiply", "inputs": [{"name": "x", "identifier": "General", "uuid": "198912b6-3cee-11ef-8178-906584de3e5b", "node_uuid": "19890dfc-3cee-11ef-8178-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [{"from_node": "add", "from_socket": "result", "from_socket_uuid": "1987080e-3cee-11ef-8178-906584de3e5b"}], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "y", "identifier": "General", "uuid": "19891374-3cee-11ef-8178-906584de3e5b", "node_uuid": "19890dfc-3cee-11ef-8178-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "x"}], "outputs": [], "position": [60, 60]}}, "links": [{"from_socket": "result", "from_node": "add", "from_socket_uuid": "1987080e-3cee-11ef-8178-906584de3e5b", "to_socket": "x", "to_node": "multiply", "state": false}]}
6363

6464
// Define Schemes to use in vanilla JS
6565
const Schemes = {

docs/source/built-in/html/atomization_energy.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
const { RenderUtils } = ReteRenderUtils;
6060
const styled = window.styled;
6161

62-
const workgraphData = {"name": "atomization_energy", "uuid": "3e35451a-3b79-11ef-a514-906584de3e5b", "state": "CREATED", "nodes": {"emt_atom": {"label": "emt_atom", "inputs": [{"name": "atoms", "identifier": "General", "uuid": "3e38dcd4-3b79-11ef-a514-906584de3e5b", "node_uuid": "3e38d5d6-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "result"}], "position": [30, 30]}, "emt_mol": {"label": "emt_mol", "inputs": [{"name": "atoms", "identifier": "General", "uuid": "3e3d5980-3b79-11ef-a514-906584de3e5b", "node_uuid": "3e3d5016-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "result"}], "position": [60, 60]}, "atomization_energy": {"label": "atomization_energy", "inputs": [{"name": "mol", "identifier": "General", "uuid": "3e40541e-3b79-11ef-a514-906584de3e5b", "node_uuid": "3e404f00-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "energy_molecule", "identifier": "General", "uuid": "3e4054dc-3b79-11ef-a514-906584de3e5b", "node_uuid": "3e404f00-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [{"from_node": "emt_mol", "from_socket": "result", "from_socket_uuid": "3e3d85f4-3b79-11ef-a514-906584de3e5b"}], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "energy_atom", "identifier": "General", "uuid": "3e405540-3b79-11ef-a514-906584de3e5b", "node_uuid": "3e404f00-3b79-11ef-a514-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [{"from_node": "emt_atom", "from_socket": "result", "from_socket_uuid": "3e38f8fe-3b79-11ef-a514-906584de3e5b"}], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "energy_atom"}, {"name": "energy_molecule"}], "outputs": [], "position": [90, 90]}}, "links": [{"from_socket": "result", "from_node": "emt_atom", "from_socket_uuid": "3e38f8fe-3b79-11ef-a514-906584de3e5b", "to_socket": "energy_atom", "to_node": "atomization_energy", "state": false}, {"from_socket": "result", "from_node": "emt_mol", "from_socket_uuid": "3e3d85f4-3b79-11ef-a514-906584de3e5b", "to_socket": "energy_molecule", "to_node": "atomization_energy", "state": false}]}
62+
const workgraphData = {"name": "atomization_energy", "uuid": "127e0556-3cf0-11ef-a650-906584de3e5b", "state": "CREATED", "nodes": {"emt_atom": {"label": "emt_atom", "inputs": [{"name": "atoms", "identifier": "General", "uuid": "1280368c-3cf0-11ef-a650-906584de3e5b", "node_uuid": "12802fc0-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "result"}], "position": [30, 30]}, "emt_mol": {"label": "emt_mol", "inputs": [{"name": "atoms", "identifier": "General", "uuid": "1282706e-3cf0-11ef-a650-906584de3e5b", "node_uuid": "12826b1e-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}], "outputs": [{"name": "result"}], "position": [60, 60]}, "atomization_energy": {"label": "atomization_energy", "inputs": [{"name": "mol", "identifier": "General", "uuid": "12858bf0-3cf0-11ef-a650-906584de3e5b", "node_uuid": "1285843e-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "energy_molecule", "identifier": "General", "uuid": "12858d1c-3cf0-11ef-a650-906584de3e5b", "node_uuid": "1285843e-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [{"from_node": "emt_mol", "from_socket": "result", "from_socket_uuid": "128288b0-3cf0-11ef-a650-906584de3e5b"}], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "energy_atom", "identifier": "General", "uuid": "12858df8-3cf0-11ef-a650-906584de3e5b", "node_uuid": "1285843e-3cf0-11ef-a650-906584de3e5b", "type": "INPUT", "link_limit": 1, "links": [{"from_node": "emt_atom", "from_socket": "result", "from_socket_uuid": "1280557c-3cf0-11ef-a650-906584de3e5b"}], "serialize": {"path": "node_graph.serializer", "name": "serialize_pickle"}, "deserialize": {"path": "node_graph.serializer", "name": "deserialize_pickle"}}, {"name": "energy_atom"}, {"name": "energy_molecule"}], "outputs": [], "position": [90, 90]}}, "links": [{"from_socket": "result", "from_node": "emt_atom", "from_socket_uuid": "1280557c-3cf0-11ef-a650-906584de3e5b", "to_socket": "energy_atom", "to_node": "atomization_energy", "state": false}, {"from_socket": "result", "from_node": "emt_mol", "from_socket_uuid": "128288b0-3cf0-11ef-a650-906584de3e5b", "to_socket": "energy_molecule", "to_node": "atomization_energy", "state": false}]}
6363

6464
// Define Schemes to use in vanilla JS
6565
const Schemes = {

0 commit comments

Comments
 (0)