ID 569026 - NukeShotExporter.outputRange() doesn't work when called from a preset/token, saying 'NukeShotExporter' object has no attribute '_collate'

Follow

Problem summary
NukeShotExporter.outputRange() doesn't work when called from a preset/token, saying 'NukeShotExporter' object has no attribute '_collate'
 
Customer reported version
nuke.13.2v8
 
Customer reported platform
windows10
 
Steps to reproduce
 
1) Open Nuke Studio

2) Import and footage and add it to the timeline

3) In the Script Editor, run the following code:
 

from hiero.exporters.FnShotProcessor import ShotProcessorPresetdef shot_addUserResolveEntries(self, resolver):    resolver.addResolver("{outputrange}", "Output range of the export item", lambda keyword, task: str(task.outputRange()))ShotProcessorPreset.addUserResolveEntries = shot_addUserResolveEntries
 
4) Select the clip>Right Click>Export...
 
5) Select the Transcode Shots DPX default preset, and add the {outputrange} token to the export path:
 

It works as expected, generating a preview path

 
6) Change the CONTENT/task frome Transcode images to Nuke Project File, in now displays no preview path and errors in the command line:


ERROR:Hiero:Error generating path previewTraceback (most recent call last):  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\ui\FnProcessorUI.py", line 510, in updatePathPreview    tasks = processor.startProcessing(self._exportItems, preview=True)  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\exporters\FnShotProcessor.py", line 403, in startProcessing    task = hiero.core.taskRegistry.createTaskFromPreset(preset, taskData)  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnExportRegistry.py", line 713, in createTaskFromPreset    return (taskType)(initDictionary)  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\exporters\FnNukeShotExporter.py", line 50, in __init__    FnShotExporter.ShotTask.__init__( self, initDict )  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\exporters\FnShotExporter.py", line 12, in __init__    hiero.core.TaskBase.__init__( self, initDict )  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnExporterBase.py", line 270, in __init__    self.setDestinationDescription(os.path.dirname(self.resolvedExportPath()))  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnExporterBase.py", line 490, in resolvedExportPath    return self.resolvePath(self._exportPath)  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnExporterBase.py", line 467, in resolvePath    path = self._resolver.resolve(self, path, isPath=True)  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnResolveTable.py", line 174, in resolve    resolved = dict([(name, resolver.resolve(task)) for name, resolver in self._resolvers.items() ])  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnResolveTable.py", line 174, in <listcomp>    resolved = dict([(name, resolver.resolve(task)) for name, resolver in self._resolvers.items() ])  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\core\FnResolveTable.py", line 63, in resolve    return self._resolver(self._name, task)  File "<string>", line 7, in <lambda>  File "C:\Program Files\Nuke15.0v4\pythonextensions\site-packages\hiero\exporters\FnNukeShotExporter.py", line 1306, in outputRange    if isinstance(self._item, hiero.core.Sequence) or self._collate:AttributeError: 'NukeShotExporter' object has no attribute '_collate'
 
7) If you try to export, you will get the same error:
 

 
 
Expected behaviour
For the outputRange() function to work correctly
 
Actual behaviour
It errors saying: AttributeError: 'NukeShotExporter' object has no attribute '_collate'
 
Workaround
try calling task.outputRangeForTrackItem() instead, for example:
 
from hiero.exporters.FnShotProcessor import ShotProcessorPresetdef shot_addUserResolveEntries(self, resolver):    def newOutputRange(task):        try:           outputRange = task.outputRange()        except:           outputRange = task.outputRangeForTrackItem()        return outputRange    resolver.addResolver("{outputrange}", "Output range of the export item", lambda keyword, task: str(newOutputRange(task)))# This token will only be applied to the Shot ProcessorShotProcessorPreset.addUserResolveEntries = shot_addUserResolveEntries
 
Reproduced by support
This bug has been reproduced in:
Nuke Studio 15.0v4 - Windows 10, Rocky 9, macOS Monterey
Nuke Studio 10.0v1 - Windows 10, CentOS 7
 
Earliest version tested
Nuke Studio 10.0v1 - This issue appears to be in all tested versions of the product
 

    We're sorry to hear that

    Please tell us why