Adding Variables

Listing 97 Use key value arguments on node creation
from ecflow import Defs, Suite, Variable, Edit

defs = Defs(
   Suite("s1", HELLO="world", FRED="bloggs", BILL=1, NAME="value", NAME2="value2")
)
defs.s1.add_variable("NAME4", 4)
defs.s1 += Edit(NAME3="value3")

The following examples show alternative styles that produce the same definition:

Listing 98 Using add() with Edit
defs = Defs().add(
   Suite("s1").add(
      Edit(
            HELLO="world",
            FRED="bloggs",
            BILL=1,
            NAME="value",
            NAME2="value2",
            NAME3="value3",
            NAME4=4,
      )
   )
)
Listing 99 Using += with dictionary
defs = Defs() + Suite("s1")
defs.s1 += {
   "HELLO": "world",
   "NAME": "value",
   "NAME2": "value2",
   "NAME3": "value3",
   "NAME4": 4,
   "BILL": 1,
   "FRED": "bloggs",
}
Listing 100 Using Edit() on node creation and += with list
defs = Defs() + Suite("s1", Edit(HELLO="world"))
defs.s1 += [
   Edit({"NAME": "value", "NAME2": "value2", "NAME3": "value3", "NAME4": 4}, BILL=1),
   Edit(FRED="bloggs"),
]

Note

Although we are using class Edit as a short cut, the objects that are added are still of type Variable.

Warning

In the example above we use ‘defs.s1’ to reference a node by name. This is useful in small designs but will produce maintenance issues in large designs IF the node names are changed.