@@ -501,6 +501,7 @@ def __init__(self, nodeType, position=None, parent=None, uid=None, **kwargs):
501501
502502 self .packageName = self .packageVersion = ""
503503 self ._internalFolder = ""
504+ self ._sourceCodeFolder = ""
504505
505506 self ._name = None
506507 self .graph = None
@@ -757,6 +758,8 @@ def _buildAttributeCmdVars(cmdVars, name, attr):
757758
758759 """ Generate command variables using input attributes and resolved output attributes names and values. """
759760 self ._cmdVars ["uid" ] = self ._uid
761+ self ._cmdVars ["nodeCacheFolder" ] = self .internalFolder
762+ self ._cmdVars ["nodeSourceCodeFolder" ] = self .sourceCodeFolder
760763
761764 # Evaluate input params
762765 for name , attr in self ._attributes .objects .items ():
@@ -766,7 +769,11 @@ def _buildAttributeCmdVars(cmdVars, name, attr):
766769
767770 # For updating output attributes invalidation values
768771 cmdVarsNoCache = self ._cmdVars .copy ()
769- cmdVarsNoCache ['cache' ] = ''
772+ cmdVarsNoCache ["cache" ] = ""
773+
774+ # Use "self._internalFolder" instead of "self.internalFolder" because we do not want it to be
775+ # resolved with the {cache} information ("self.internalFolder" resolves "self._internalFolder")
776+ cmdVarsNoCache ["nodeCacheFolder" ] = self ._internalFolder .format (** cmdVarsNoCache )
770777
771778 # Evaluate output params
772779 for name , attr in self ._attributes .objects .items ():
@@ -1021,8 +1028,10 @@ def updateInternals(self, cacheDir=None):
10211028
10221029 # Update command variables / output attributes
10231030 self ._cmdVars = {
1024- 'cache' : cacheDir or self .graph .cacheDir ,
1025- 'nodeType' : self .nodeType ,
1031+ "cache" : cacheDir or self .graph .cacheDir ,
1032+ "nodeType" : self .nodeType ,
1033+ "nodeCacheFolder" : self ._internalFolder ,
1034+ "nodeSourceCodeFolder" : self .sourceCodeFolder
10261035 }
10271036 self ._computeUid ()
10281037 self ._buildCmdVars ()
@@ -1039,6 +1048,10 @@ def updateInternalAttributes(self):
10391048 def internalFolder (self ):
10401049 return self ._internalFolder .format (** self ._cmdVars )
10411050
1051+ @property
1052+ def sourceCodeFolder (self ):
1053+ return self ._sourceCodeFolder
1054+
10421055 def updateStatusFromCache (self ):
10431056 """
10441057 Update node status based on status file content/existence.
@@ -1440,7 +1453,8 @@ def __init__(self, nodeType, position=None, parent=None, uid=None, **kwargs):
14401453
14411454 self .packageName = self .nodeDesc .packageName
14421455 self .packageVersion = self .nodeDesc .packageVersion
1443- self ._internalFolder = self .nodeDesc .internalFolder
1456+ self ._internalFolder = "{cache}/{nodeType}/{uid}"
1457+ self ._sourceCodeFolder = self .nodeDesc .sourceCodeFolder
14441458
14451459 for attrDesc in self .nodeDesc .inputs :
14461460 self ._attributes .add (attributeFactory (attrDesc , kwargs .get (attrDesc .name , None ), isOutput = False , node = self ))
0 commit comments