From ddab9240a1d1c51c06787ae24f9d17767bdb7a28 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 3 May 2023 18:35:22 +0200 Subject: [PATCH] Extract iter_expected_files --- .../plugins/publish/submit_maya_deadline.py | 15 +++------------ .../publish/create_maya_royalrender_job.py | 13 ++----------- .../plugins/publish/create_nuke_deadline_job.py | 7 +++++-- openpype/pipeline/farm/tools.py | 10 ++++++++++ 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index a6cdcb7e71..16fba382e4 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -39,6 +39,7 @@ from openpype_modules.deadline import abstract_submit_deadline from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo from openpype.tests.lib import is_in_tests from openpype.lib import is_running_from_build +from openpype.pipeline.farm.tools import iter_expected_files def _validate_deadline_bool_value(instance, attribute, value): @@ -198,7 +199,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): # Add list of expected files to job # --------------------------------- exp = instance.data.get("expectedFiles") - for filepath in self._iter_expected_files(exp): + for filepath in iter_expected_files(exp): job_info.OutputDirectory += os.path.dirname(filepath) job_info.OutputFilename += os.path.basename(filepath) @@ -254,7 +255,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): # TODO: Avoid the need for this logic here, needed for submit publish # Store output dir for unified publisher (filesequence) expected_files = instance.data["expectedFiles"] - first_file = next(self._iter_expected_files(expected_files)) + first_file = next(iter_expected_files(expected_files)) output_dir = os.path.dirname(first_file) instance.data["outputDir"] = output_dir instance.data["toBeRenderedOn"] = "deadline" @@ -772,16 +773,6 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): end=int(self._instance.data["frameEndHandle"]), ) - @staticmethod - def _iter_expected_files(exp): - if isinstance(exp[0], dict): - for _aov, files in exp[0].items(): - for file in files: - yield file - else: - for file in exp: - yield file - def _format_tiles( filename, diff --git a/openpype/modules/royalrender/plugins/publish/create_maya_royalrender_job.py b/openpype/modules/royalrender/plugins/publish/create_maya_royalrender_job.py index 6e23fb0b74..8461e74d6d 100644 --- a/openpype/modules/royalrender/plugins/publish/create_maya_royalrender_job.py +++ b/openpype/modules/royalrender/plugins/publish/create_maya_royalrender_job.py @@ -11,6 +11,7 @@ from openpype.pipeline.publish.lib import get_published_workfile_instance from openpype.pipeline.publish import KnownPublishError from openpype.modules.royalrender.api import Api as rrApi from openpype.modules.royalrender.rr_job import RRJob, CustomAttribute +from openpype.pipeline.farm.tools import iter_expected_files class CreateMayaRoyalRenderJob(InstancePlugin): @@ -43,7 +44,7 @@ class CreateMayaRoyalRenderJob(InstancePlugin): return "linux" expected_files = self._instance.data["expectedFiles"] - first_file = next(self._iter_expected_files(expected_files)) + first_file = next(iter_expected_files(expected_files)) output_dir = os.path.dirname(first_file) self._instance.data["outputDir"] = output_dir workspace = self._instance.context.data["workspaceDir"] @@ -125,16 +126,6 @@ class CreateMayaRoyalRenderJob(InstancePlugin): self._instance.data["rrJobs"] += self.get_job() - @staticmethod - def _iter_expected_files(exp): - if isinstance(exp[0], dict): - for _aov, files in exp[0].items(): - for file in files: - yield file - else: - for file in exp: - yield file - @staticmethod def _resolve_rr_path(context, rr_path_name): # type: (Context, str) -> str diff --git a/openpype/modules/royalrender/plugins/publish/create_nuke_deadline_job.py b/openpype/modules/royalrender/plugins/publish/create_nuke_deadline_job.py index 9f49294459..217ebed057 100644 --- a/openpype/modules/royalrender/plugins/publish/create_nuke_deadline_job.py +++ b/openpype/modules/royalrender/plugins/publish/create_nuke_deadline_job.py @@ -19,9 +19,11 @@ from openpype.lib import ( BoolDef, NumberDef ) +from openpype.pipeline import OpenPypePyblishPluginMixin +from openpype.pipeline.farm.tools import iter_expected_files -class CreateNukeRoyalRenderJob(InstancePlugin): +class CreateNukeRoyalRenderJob(InstancePlugin, OpenPypePyblishPluginMixin): label = "Create Nuke Render job in RR" order = IntegratorOrder + 0.1 hosts = ["nuke"] @@ -208,7 +210,8 @@ class CreateNukeRoyalRenderJob(InstancePlugin): # this will append expected files to instance as needed. expected_files = self.expected_files( render_path, start_frame, end_frame) - first_file = next(self._iter_expected_files(expected_files)) + self._instance.data["expectedFiles"].extend(expected_files) + first_file = next(iter_expected_files(expected_files)) job = RRJob( Software="Nuke", diff --git a/openpype/pipeline/farm/tools.py b/openpype/pipeline/farm/tools.py index 506f95d6b2..6f9e0ac393 100644 --- a/openpype/pipeline/farm/tools.py +++ b/openpype/pipeline/farm/tools.py @@ -100,3 +100,13 @@ def from_published_scene(instance, replace_in_path=True): instance.data["publishRenderMetadataFolder"] = metadata_folder return file_path + + +def iter_expected_files(exp): + if isinstance(exp[0], dict): + for _aov, files in exp[0].items(): + for file in files: + yield file + else: + for file in exp: + yield file