File: Expression.rst

package info (click to toggle)
ecflow 5.15.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 51,868 kB
  • sloc: cpp: 269,341; python: 22,756; sh: 3,609; perl: 770; xml: 333; f90: 204; ansic: 141; makefile: 70
file content (76 lines) | stat: -rw-r--r-- 2,276 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
ecflow.Expression
/////////////////


.. py:class:: Expression
   :module: ecflow

   Bases: :py:class:`~Boost.Python.instance`

Expression holds :term:`trigger` or :term:`complete expression`. Also see :py:class:`ecflow.Trigger`

Expressions can contain references to events, meters, user variables,repeat variables and generated variables.
Expressions hold a list of part expressions. This allows us to split a large trigger or complete
expression into smaller ones.

Constructor::

   Expression( expression )
      string expression  : This typically represents the complete expression
                           however part expression can still be added
   Expression( part )
      PartExpression part: The first part expression should have no 'and/or' set

Usage:
To add simple expression this class can be by passed, i.e. can use:

.. code-block:: python

  task = Task('t1')
  task.add_trigger( 't2 == active' )
  task.add_complete( 't2 == complete' )

  task = Task('t2')
  task.add_trigger( 't1 == active' )
  task.add_part_trigger( 't3 == active', True)

To store and add large expressions use a Expression with PartExpression:

.. code-block:: python

  big_expr = Expression( PartExpression('t1 == complete or t4 == complete') )
  big_expr.add( PartExpression('t5 == active',True) )
  big_expr.add( PartExpression('t7 == active',False) )
  task.add_trigger( big_expr)

In the example above the trigger for task is equivalent to
't1 == complete or t4 == complete and t5 == active or t7 == active'

.. code-block:: python

  big_expr2 = Expression('t0 == complete'))
  big_expr2.add( PartExpression('t1 == complete or t4 == complete',True) )
  big_expr2.add( PartExpression('t5 == active',False) )
  task2.add_trigger( big_expr2)

Here the trigger for task2 is equivalent to
't0 == complete and t1 == complete or t4 == complete or t5 == active'


.. py:method:: Expression.add( (Expression)arg1, (PartExpression)arg2) -> None :
   :module: ecflow

Add a part expression, the second and subsequent part expressions must have 'and/or' set


.. py:method:: Expression.get_expression( (Expression)arg1) -> str :
   :module: ecflow

returns the complete expression as a string


.. py:property:: Expression.parts
   :module: ecflow

Returns a list of PartExpression's