1818 absolute_import )
1919from builtins import object
2020
21- from future import standard_library
22- standard_library .install_aliases ()
23-
2421from copy import deepcopy
2522import re
2623import numpy as np
27- from ... import logging
24+
25+ from ... import config
2826from ...interfaces .base import DynamicTraitedSpec
2927from ...utils .filemanip import loadpkl , savepkl
3028
31- logger = logging .getLogger ('workflow' )
32-
3329
3430class EngineBase (object ):
3531 """Defines common attributes and functions for workflows and nodes."""
@@ -47,35 +43,36 @@ def __init__(self, name=None, base_dir=None):
4743 default=None, which results in the use of mkdtemp
4844
4945 """
46+ self ._hierarchy = None
47+ self ._name = None
48+
5049 self .base_dir = base_dir
51- self .config = None
52- self ._verify_name (name )
50+ self .config = deepcopy (config ._sections )
5351 self .name = name
54- # for compatibility with node expansion using iterables
55- self ._id = self .name
56- self ._hierarchy = None
5752
5853 @property
59- def inputs (self ):
60- raise NotImplementedError
54+ def name (self ):
55+ return self . _name
6156
62- @property
63- def outputs (self ):
64- raise NotImplementedError
57+ @name .setter
58+ def name (self , name ):
59+ if not name or not re .match (r'^[\w-]+$' , name ):
60+ raise ValueError ('[Workflow|Node] name "%s" is not valid.' % name )
61+ self ._name = name
6562
6663 @property
6764 def fullname (self ):
68- fullname = self .name
6965 if self ._hierarchy :
70- fullname = self . _hierarchy + '.' + self .name
71- return fullname
66+ return '%s.%s' % ( self ._hierarchy , self . name )
67+ return self . name
7268
7369 @property
74- def itername (self ):
75- itername = self ._id
76- if self ._hierarchy :
77- itername = self ._hierarchy + '.' + self ._id
78- return itername
70+ def inputs (self ):
71+ raise NotImplementedError
72+
73+ @property
74+ def outputs (self ):
75+ raise NotImplementedError
7976
8077 def clone (self , name ):
8178 """Clone an EngineBase object
@@ -86,13 +83,10 @@ def clone(self, name):
8683 name : string (mandatory)
8784 A clone of node or workflow must have a new name
8885 """
89- if (name is None ) or (name == self .name ):
90- raise Exception ('Cloning requires a new name' )
91- self ._verify_name (name )
86+ if name == self .name :
87+ raise ValueError ('Cloning requires a new name, "%s" is in use.' % name )
9288 clone = deepcopy (self )
9389 clone .name = name
94- clone ._id = name
95- clone ._hierarchy = None
9690 return clone
9791
9892 def _check_outputs (self , parameter ):
@@ -103,17 +97,8 @@ def _check_inputs(self, parameter):
10397 return True
10498 return hasattr (self .inputs , parameter )
10599
106- def _verify_name (self , name ):
107- valid_name = bool (re .match ('^[\w-]+$' , name ))
108- if not valid_name :
109- raise ValueError ('[Workflow|Node] name \' %s\' contains'
110- ' special characters' % name )
111-
112- def __repr__ (self ):
113- if self ._hierarchy :
114- return '.' .join ((self ._hierarchy , self ._id ))
115- else :
116- return '{}' .format (self ._id )
100+ def __str__ (self ):
101+ return self .fullname
117102
118103 def save (self , filename = None ):
119104 if filename is None :
0 commit comments