18
18
absolute_import )
19
19
from builtins import object
20
20
21
- from future import standard_library
22
- standard_library .install_aliases ()
23
-
24
21
from copy import deepcopy
25
22
import re
26
23
import numpy as np
27
- from ... import logging
24
+ from future import standard_library
25
+
28
26
from ...interfaces .base import DynamicTraitedSpec
29
27
from ...utils .filemanip import loadpkl , savepkl
30
28
31
- logger = logging . getLogger ( 'workflow' )
29
+ standard_library . install_aliases ( )
32
30
33
31
34
32
class EngineBase (object ):
@@ -47,35 +45,37 @@ def __init__(self, name=None, base_dir=None):
47
45
default=None, which results in the use of mkdtemp
48
46
49
47
"""
48
+ self ._hierarchy = None
49
+ self ._name = None
50
+
50
51
self .base_dir = base_dir
51
52
self .config = None
52
- self ._verify_name (name )
53
53
self .name = name
54
- # for compatibility with node expansion using iterables
55
- self ._id = self .name
56
- self ._hierarchy = None
57
54
58
55
@property
59
- def inputs (self ):
60
- raise NotImplementedError
56
+ def name (self ):
57
+ return self . _name
61
58
62
- @property
63
- def outputs (self ):
64
- raise NotImplementedError
59
+ @name .setter
60
+ def name (self , name ):
61
+ if name and bool (re .match (r'^[\w_]+$' , name )):
62
+ self ._name = name
63
+ else :
64
+ raise ValueError ('[Workflow|Node] name "%s" is not valid.' % name )
65
65
66
66
@property
67
67
def fullname (self ):
68
- fullname = self .name
69
68
if self ._hierarchy :
70
- fullname = self . _hierarchy + '.' + self .name
71
- return fullname
69
+ return '%s.%s' % ( self ._hierarchy , self . name )
70
+ return self . name
72
71
73
72
@property
74
- def itername (self ):
75
- itername = self ._id
76
- if self ._hierarchy :
77
- itername = self ._hierarchy + '.' + self ._id
78
- return itername
73
+ def inputs (self ):
74
+ raise NotImplementedError
75
+
76
+ @property
77
+ def outputs (self ):
78
+ raise NotImplementedError
79
79
80
80
def clone (self , name ):
81
81
"""Clone an EngineBase object
@@ -86,13 +86,10 @@ def clone(self, name):
86
86
name : string (mandatory)
87
87
A clone of node or workflow must have a new name
88
88
"""
89
- if (name is None ) or (name == self .name ):
90
- raise Exception ('Cloning requires a new name' )
91
- self ._verify_name (name )
89
+ if name == self .name :
90
+ raise ValueError ('Cloning requires a new name, "%s" is in use.' % name )
92
91
clone = deepcopy (self )
93
92
clone .name = name
94
- clone ._id = name
95
- clone ._hierarchy = None
96
93
return clone
97
94
98
95
def _check_outputs (self , parameter ):
@@ -103,17 +100,8 @@ def _check_inputs(self, parameter):
103
100
return True
104
101
return hasattr (self .inputs , parameter )
105
102
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 )
103
+ def __str__ (self ):
104
+ return self .fullname
117
105
118
106
def save (self , filename = None ):
119
107
if filename is None :
0 commit comments