11#!/usr/bin/env python
22# -*- coding: utf-8 -*-
33#
4- # Copyright (c) 2020-2021 The WfCommons Team.
4+ # Copyright (c) 2020-2022 The WfCommons Team.
55#
66# This program is free software: you can redistribute it and/or modify
77# it under the terms of the GNU General Public License as published by
@@ -54,9 +54,9 @@ def __init__(self,
5454 ) -> None :
5555 """Create an object of a workflow representation."""
5656 self .description : Optional [
57- str ] = description if description else ' Instance generated with WfCommons - https://wfcommons.org'
57+ str ] = description if description else " Instance generated with WfCommons - https://wfcommons.org"
5858 self .created_at : str = str (datetime .utcnow ().isoformat ())
59- self .schema_version : str = "1.2 "
59+ self .schema_version : str = "1.3 "
6060 self .wms_name : Optional [str ] = "WfCommons" if not wms_name else wms_name
6161 self .wms_version : Optional [str ] = str (__version__ ) if not wms_version else wms_version
6262 self .wms_url : Optional [str ] = f"https://docs.wfcommons.org/en/v{ __version__ } /" if not wms_url else wms_url
@@ -76,23 +76,23 @@ def write_json(self, json_file_path: Optional[pathlib.Path] = None) -> None:
7676 workflow_tasks = []
7777
7878 workflow_json = {
79- ' name' : self .name ,
80- ' description' : self .description ,
81- ' createdAt' : self .created_at ,
82- ' schemaVersion' : self .schema_version ,
83- ' author' : {
84- ' name' : str (getpass .getuser ()),
85- ' email' : ' support@wfcommons.org'
79+ " name" : self .name ,
80+ " description" : self .description ,
81+ " createdAt" : self .created_at ,
82+ " schemaVersion" : self .schema_version ,
83+ " author" : {
84+ " name" : str (getpass .getuser ()),
85+ " email" : " support@wfcommons.org"
8686 },
87- ' wms' : {
88- ' name' : self .wms_name ,
89- ' version' : self .wms_version ,
90- ' url' : self .wms_url
87+ " wms" : {
88+ " name" : self .wms_name ,
89+ " version" : self .wms_version ,
90+ " url" : self .wms_url
9191 },
92- ' workflow' : {
93- ' executedAt' : self .executed_at ,
94- ' makespan' : self .makespan ,
95- 'jobs' : workflow_tasks
92+ " workflow" : {
93+ " executedAt" : self .executed_at ,
94+ " makespan" : self .makespan ,
95+ "tasks" : workflow_tasks
9696 }
9797 }
9898
@@ -101,18 +101,18 @@ def write_json(self, json_file_path: Optional[pathlib.Path] = None) -> None:
101101 for edge in self .edges :
102102 for task_name in edge :
103103 if task_name not in tasks_dependencies :
104- tasks_dependencies [task_name ] = {' parents' : [], ' children' : []}
105- tasks_dependencies [edge [0 ]][' children' ].append (edge [1 ])
106- tasks_dependencies [edge [1 ]][' parents' ].append (edge [0 ])
104+ tasks_dependencies [task_name ] = {" parents" : [], " children" : []}
105+ tasks_dependencies [edge [0 ]][" children" ].append (edge [1 ])
106+ tasks_dependencies [edge [1 ]][" parents" ].append (edge [0 ])
107107
108108 # add tasks to the workflow json object
109109 for node in self .nodes :
110- task : Task = self .nodes [node ][' task' ]
110+ task : Task = self .nodes [node ][" task" ]
111111 task_obj = task .as_dict ()
112112
113113 # manage task dependencies
114- task_obj [' parents' ] = tasks_dependencies [task .name ][' parents' ]
115- task_obj [' children' ] = tasks_dependencies [task .name ][' children' ]
114+ task_obj [" parents" ] = tasks_dependencies [task .name ][" parents" ]
115+ task_obj [" children" ] = tasks_dependencies [task .name ][" children" ]
116116
117117 workflow_tasks .append (task_obj )
118118
@@ -122,12 +122,12 @@ def write_json(self, json_file_path: Optional[pathlib.Path] = None) -> None:
122122 workflow_machines .append (task .machine .as_dict ())
123123
124124 if workflow_machines :
125- workflow_json [' workflow' ][ ' machines' ] = workflow_machines
125+ workflow_json [" workflow" ][ " machines" ] = workflow_machines
126126
127127 # write to file
128128 if not json_file_path :
129- json_file_path = pathlib .Path (f' { self .name .lower ()} .json' )
130- with open (json_file_path , 'w' ) as outfile :
129+ json_file_path = pathlib .Path (f" { self .name .lower ()} .json" )
130+ with open (json_file_path , "w" ) as outfile :
131131 outfile .write (json .dumps (workflow_json , indent = 4 ))
132132
133133 def write_dot (self , dot_file_path : Optional [pathlib .Path ] = None ) -> None :
0 commit comments