From c304ccabcdc81094b0f9776f4c79668a2afb0eb8 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 29 Mar 2023 23:17:59 +0200 Subject: [PATCH 1/7] Change node type for OpenPypeContext `null` -> `subnet` - Plugins sometimes tend to add spare parameters to node, like Redshift making querying our custom parameters trickier since it's mixed in there. --- openpype/hosts/houdini/api/pipeline.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/openpype/hosts/houdini/api/pipeline.py b/openpype/hosts/houdini/api/pipeline.py index 9793679b45..45e2f8f87f 100644 --- a/openpype/hosts/houdini/api/pipeline.py +++ b/openpype/hosts/houdini/api/pipeline.py @@ -144,13 +144,10 @@ class HoudiniHost(HostBase, IWorkfileHost, ILoadHost, IPublishHost): """ obj_network = hou.node("/obj") - op_ctx = obj_network.createNode("null", node_name="OpenPypeContext") - - # A null in houdini by default comes with content inside to visualize - # the null. However since we explicitly want to hide the node lets - # remove the content and disable the display flag of the node - for node in op_ctx.children(): - node.destroy() + op_ctx = obj_network.createNode("subnet", + node_name="OpenPypeContext", + run_init_scripts=False, + load_contents=False) op_ctx.moveToGoodPosition() op_ctx.setBuiltExplicitly(False) From 3b680e2afaff0bcaebfeeb980d1e82cfa9abaa42 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 4 Apr 2023 12:58:07 +0100 Subject: [PATCH 2/7] Replace hardcode with find_root_template_from_path --- .../plugins/publish/submit_publish_job.py | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/openpype/modules/deadline/plugins/publish/submit_publish_job.py b/openpype/modules/deadline/plugins/publish/submit_publish_job.py index 41bc103d5c..4765772bcf 100644 --- a/openpype/modules/deadline/plugins/publish/submit_publish_job.py +++ b/openpype/modules/deadline/plugins/publish/submit_publish_job.py @@ -944,17 +944,28 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): # we cannot attach AOVs to other subsets as we consider every # AOV subset of its own. - config = instance.data["colorspaceConfig"] additional_data = { "renderProducts": instance.data["renderProducts"], "colorspaceConfig": instance.data["colorspaceConfig"], "display": instance.data["colorspaceDisplay"], - "view": instance.data["colorspaceView"], - "colorspaceTemplate": config.replace( - str(context.data["anatomy"].roots["work"]), "{root[work]}" - ) + "view": instance.data["colorspaceView"] } + # Get templated path from absolute config path. + anatomy = instance.context.data["anatomy"] + colorspaceTemplate = instance.data["colorspaceConfig"] + success, rootless_staging_dir = ( + anatomy.find_root_template_from_path(colorspaceTemplate) + ) + if success: + colorspaceTemplate = rootless_staging_dir + else: + self.log.warning(( + "Could not find root path for remapping \"{}\"." + " This may cause issues on farm." + ).format(colorspaceTemplate)) + additional_data["colorspaceTemplate"] = colorspaceTemplate + if len(data.get("attachTo")) > 0: assert len(data.get("expectedFiles")[0].keys()) == 1, ( "attaching multiple AOVs or renderable cameras to " From 49ff12da3cebedc5e41b57f8b7c1dd7401ce204d Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 4 Apr 2023 15:19:36 +0200 Subject: [PATCH 3/7] Documentation: Move publisher related tips to publisher area (#4772) * Move publisher related documentation to the publisher block * Fix typo --- website/docs/artist_hosts_aftereffects.md | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/website/docs/artist_hosts_aftereffects.md b/website/docs/artist_hosts_aftereffects.md index 939ef4034c..d9522d5765 100644 --- a/website/docs/artist_hosts_aftereffects.md +++ b/website/docs/artist_hosts_aftereffects.md @@ -90,7 +90,7 @@ If there is an option of automatic repair, there will be `Repair` button on the There are currently 2 options of `render` item: - Render of farm - allows offload rendering and publishing to Deadline - requires Deadline module being enabled -- Validate Scene Settings - enables validation plugin which controls setting in DB (or asset control system like Ftrak) and scene itself +- Validate Scene Settings - enables validation plugin which controls setting in DB (or asset control system like Ftrack) and scene itself ![Configuration of render instance](assets/aftereffects_render_instance.png) @@ -100,6 +100,23 @@ There are currently 2 options of `render` item: - `Validate` - if you would like to run only collecting and validating phases (nothing will be published yet) - `Publish` - standard way how to kick off full publishing process +#### Support help +If you would like to ask for help admin or support, you could use any of the three options on the `Note` button on bottom left: +- `Go to details` - switches into a more detailed list of published instances and plugins. +- `Copy report` - stash full publishing log to a clipboard +- `Export report` - save log into a file for sending it via mail or any communication tool + +If you are able to fix the workfile yourself, use the first button on the right to set the UI to initial state before publish. (Click the `Publish` button to start again.) + +#### Legacy instances + +All screenshots from Publish are from updated dialog, before publishing was being done by regular `Pyblish` tool. +New publishing process should be backward compatible, eg. if you have a workfile with instances created in the previous publishing approach, they will be translated automatically and +could be used right away. + +If you hit on unexpected behaviour with old instances, contact support first, then you could try to delete and recreate instances from scratch. +Nuclear option is to purge workfile metadata in `Window > Metadata > Basic > Label`. This is only for most determined daredevils though! + ### Load When you want to load existing published work, you can use the `Loader` tool. You can reach it in the extension's panel. @@ -134,20 +151,3 @@ You can switch to a previous version of the image or update to the latest. ![Loader](assets/photoshop_manage_switch.gif) ![Loader](assets/photoshop_manage_update.gif) - -#### Support help -If you would like to ask for help admin or support, you could use any of the three options on the `Note` button on bottom left: -- `Go to details` - switches into a more detailed list of published instances and plugins. -- `Copy report` - stash full publishing log to a clipboard -- `Export report` - save log into a file for sending it via mail or any communication tool - -If you are able to fix the workfile yourself, use the first button on the right to set the UI to initial state before publish. (Click the `Publish` button to start again.) - -#### Legacy instances - -All screenshots from Publish are from updated dialog, before publishing was being done by regular `Pyblish` tool. -New publishing process should be backward compatible, eg. if you have a workfile with instances created in the previous publishing approach, they will be translated automatically and -could be used right away. - -If you hit on unexpected behaviour with old instances, contact support first, then you could try to delete and recreate instances from scratch. -Nuclear option is to purge workfile metadata in `Window > Metadata > Basic > Label`. This is only for most determined daredevils though! From a708885abb91ff4f8bf0212857ed3d134088db2c Mon Sep 17 00:00:00 2001 From: Ynbot Date: Wed, 5 Apr 2023 03:25:57 +0000 Subject: [PATCH 4/7] [Automated] Bump version --- openpype/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/version.py b/openpype/version.py index 77b853aa9c..d9e29d691e 100644 --- a/openpype/version.py +++ b/openpype/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring Pype version.""" -__version__ = "3.15.4-nightly.2" +__version__ = "3.15.4-nightly.3" From 0cdeda539693632ade1d012713b98a000503d89f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 5 Apr 2023 11:06:43 +0200 Subject: [PATCH 5/7] remove UnknownDef attributes on pop from attributes value (#4776) --- openpype/pipeline/create/context.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openpype/pipeline/create/context.py b/openpype/pipeline/create/context.py index 22cab28e4b..382bbea05e 100644 --- a/openpype/pipeline/create/context.py +++ b/openpype/pipeline/create/context.py @@ -596,7 +596,14 @@ class AttributeValues(object): self[_key] = _value def pop(self, key, default=None): - return self._data.pop(key, default) + value = self._data.pop(key, default) + # Remove attribute definition if is 'UnknownDef' + # - gives option to get rid of unknown values + attr_def = self._attr_defs_by_key.get(key) + if isinstance(attr_def, UnknownDef): + self._attr_defs_by_key.pop(key) + self._attr_defs.remove(attr_def) + return value def reset_values(self): self._data = {} From 1944643d780a4e711c473963102f0a67af06ecc0 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 5 Apr 2023 11:39:28 +0200 Subject: [PATCH 6/7] make label key optional on instance.data --- openpype/plugins/publish/collect_otio_review.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpype/plugins/publish/collect_otio_review.py b/openpype/plugins/publish/collect_otio_review.py index 4d8147e70d..f0157282a1 100644 --- a/openpype/plugins/publish/collect_otio_review.py +++ b/openpype/plugins/publish/collect_otio_review.py @@ -87,7 +87,9 @@ class CollectOtioReview(pyblish.api.InstancePlugin): otio_review_clips.append(otio_gap) if otio_review_clips: - instance.data["label"] += " (review)" + # add review track to instance and change label to reflect it + label = instance.data.get("label", instance.data["subset"]) + instance.data["label"] = label + " (review)" instance.data["families"] += ["review", "ftrack"] instance.data["otioReviewClips"] = otio_review_clips self.log.info( From 68caaf65c8a2e486d6a86b85012ad1493f6f3608 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 5 Apr 2023 12:14:54 +0200 Subject: [PATCH 7/7] fixing skipping of project actions --- .github/workflows/project_actions.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/project_actions.yml b/.github/workflows/project_actions.yml index b21946f0ee..3589b4acc2 100644 --- a/.github/workflows/project_actions.yml +++ b/.github/workflows/project_actions.yml @@ -25,7 +25,11 @@ jobs: if: | (github.event_name == 'issue_comment' && github.event.pull_request.head.repo.owner.login == 'ynput' && github.event.comment.user.id != 82967070) || (github.event_name == 'pull_request_review_comment' && github.event.pull_request.head.repo.owner.login == 'ynput' && github.event.comment.user.type != 'Bot') || - (github.event_name == 'pull_request_review' && github.event.pull_request.head.repo.owner.login == 'ynput' && github.event.review.state != 'changes_requested' && github.event.review.user.type != 'Bot') + (github.event_name == 'pull_request_review' && + github.event.pull_request.head.repo.owner.login == 'ynput' && + github.event.review.state != 'changes_requested' && + github.event.review.state != 'approved' && + github.event.review.user.type != 'Bot') steps: - name: Move PR to 'Review In Progress' uses: leonsteinhaeuser/project-beta-automations@v2.1.0 @@ -70,10 +74,7 @@ jobs: size-label: name: pr_size_label runs-on: ubuntu-latest - if: | - (github.event_name == 'pull_request' && github.event.action == 'assigned') || - (github.event_name == 'pull_request' && github.event.action == 'opened') - + if: github.event.action == 'assigned' || github.event.action == 'opened' steps: - name: Add size label uses: "pascalgn/size-label-action@v0.4.3" @@ -94,9 +95,7 @@ jobs: label_prs_branch: name: pr_branch_label runs-on: ubuntu-latest - if: | - (github.event_name == 'pull_request' && github.event.action == 'assigned') || - (github.event_name == 'pull_request' && github.event.action == 'opened') + if: github.event.action == 'assigned' || github.event.action == 'opened' steps: - name: Label PRs - Branch name detection uses: ffittschen/pr-branch-labeler@v1 @@ -106,9 +105,7 @@ jobs: label_prs_globe: name: pr_globe_label runs-on: ubuntu-latest - if: | - (github.event_name == 'pull_request' && github.event.action == 'assigned') || - (github.event_name == 'pull_request' && github.event.action == 'opened') + if: github.event.action == 'assigned' || github.event.action == 'opened' steps: - name: Label PRs - Globe detection uses: actions/labeler@v4.0.3