The text examples allow indentation. In python indentation affects the logical meaning of the program.
However we can use python with statement to provide the indentation.
Here is the previous example using the with statement:
#!/usr/bin/env python2.7
import os
import ecflow
import sys
version = sys.version_info
if version[1] < 7:
print "This example requires python version 2.7, but found : " + str(version)
exit(0)
print "Creating suite definition"
with ecflow.Defs() as defs:
with defs.add_suite("test") as suite:
suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"), "course"))
suite.add_variable("ECF_HOME", os.path.join(os.getenv("HOME"), "course"))
with suite.add_family("f1") as f1:
f1.add_variable("SLEEP", 20)
f1.add_task("t1").add_meter("progress", 1, 100, 90)
f1.add_task("t2").add_trigger("t1 eq complete").add_event("a").add_event("b")
f1.add_task("t3").add_trigger("t2:a")
f1.add_task("t4").add_trigger("t2 eq complete").add_complete("t2:b")
f1.add_task("t5").add_trigger("t1:progress ge 30")
f1.add_task("t6").add_trigger("t1:progress ge 60")
f1.add_task("t7").add_trigger("t1:progress ge 90")
with suite.add_family("f2") as f2:
f2.add_variable("SLEEP", 20)
f2.add_task("t1").add_time("00:30 23:30 00:30")
f2.add_task("t2").add_day("sunday")
f2.add_task("t3").add_date(1, 0, 0).add_time(12, 0)
f2.add_task("t4").add_time(0, 2, True)
f2.add_task("t5").add_time(0, 2)
print defs
print "Checking job creation: .ecf -> .job0"
print defs.check_job_creation()
print "Checking trigger expressions"
print defs.check()
print "Saving definition to file 'test.def'"
defs.save_as_defs("test.def")
Alternative styles:
Using add to provide indentation #!/usr/bin/env python2.7 import os for ecflow import * print "Creating suite definition" home = os.path.join(os.getenv("HOME"), "course") defs = Defs().add( Suite("test").add( Edit(ECF_INCLUDE=home,ECF_HOME=home), Family("f1").add( Edit(SLEEP=20), Task("t1").add(Meter("progress", 1, 100, 90)), Task("t2").add( Trigger("t1 == complete"), Event("a"),Event("b")), Task("t3").add(Trigger("t2:a")), Task("t4").add(Trigger("t2 == complete"), Complete("t2:b")), Task("t5").add(Trigger("t1:progress ge 30")), Task("t6").add(Trigger("t1:progress ge 60")), Task("t7").add(Trigger("t1:progress ge 90")),), Family("f2").add( Edit(SLEEP=20), Task("t1").add(Time( "00:30 23:30 00:30" )), Task("t2").add(Day( "sunday" )), Task("t3").add(Date("1.*.*"), Time("12:00")), Task("t4").add(Time("+00:02")), Task("t5").add(Time("00:02"))))) print defs print "Checking job creation: .ecf -> .job0" print defs.check_job_creation() print "Saving definition to file 'test.def'" defs.save_as_defs("test.def") | #!/usr/bin/env python2.7 import os for ecflow import * print "Creating suite definition" home = os.path.join(os.getenv("HOME"), "course") with Defs() as defs: with defs.add_suite("test") as suite: suite += [ Edit(ECF_INCLUDE=home,ECF_HOME=home) ] with suite.add_family("f1") as f1: f1 += [ Task("t{}".format(i)) for i in range(1,8) ] f1 += [ Edit(SLEEP=20) ] f1.t1 += [ Meter("progress", 1, 100, 90) ] f1.t2 += [ Trigger(["t1"]), Event("a"), Event("b") ] f1.t3 += [ Trigger("t2:a") ] f1.t4 += [ Trigger(["t2"]), Complete("t2:b") ] f1.t5 += [ Trigger("t1:progress ge 30") ] f1.t6 += [ Trigger("t1:progress ge 60") ] f1.t7 += [ Trigger("t1:progress ge 90") ] with suite.add_family("f2") as f2: f2 += [ Edit(SLEEP=20),[ Task("t{}".format(i)) for i in range(1,6)] ] f2.t1 += [ Time( "00:30 23:30 00:30" )] f2.t2 += [ Day( "sunday" ) ] f2.t3 += [ Date("1.*.*"), Time("12:00") ] f2.t4 += [ Time("+00:02") ] f2.t5 += [ Time("00:02") ] print defs print "Checking job creation: .ecf -> .job0" print defs.check_job_creation() print "Saving definition to file 'test.def'" defs.save_as_defs("test.def") |