diff --git a/server_addon/houdini/client/ayon_houdini/api/plugin.py b/server_addon/houdini/client/ayon_houdini/api/plugin.py index 3c3ca0a81e..2c4b5749a6 100644 --- a/server_addon/houdini/client/ayon_houdini/api/plugin.py +++ b/server_addon/houdini/client/ayon_houdini/api/plugin.py @@ -14,10 +14,11 @@ from ayon_core.pipeline import ( CreatedInstance, AYON_INSTANCE_ID, AVALON_INSTANCE_ID, - load, + load ) from ayon_core.lib import BoolDef from .lib import imprint, read, lsattr, add_self_publish_button +import pyblish.api class Creator(LegacyCreator): @@ -355,3 +356,15 @@ class HoudiniLoader(load.LoaderPlugin): """Base class for most of the Houdini load plugins.""" settings_category = "houdini" + + +class HoudiniInstancePlugin(pyblish.api.InstancePlugin): + """Base class for most of the Houdini instance publish plugins.""" + + settings_category = "houdini" + + +class HoudiniContextPlugin(pyblish.api.ContextPlugin): + """Base class for most of the Houdini context publish plugins.""" + + settings_category = "houdini" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py index 7fda94b288..f0c8964af5 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py @@ -1,8 +1,9 @@ import pyblish.api +from ayon_houdini.api import plugin import hou -class CollectInstanceActiveState(pyblish.api.InstancePlugin): +class CollectInstanceActiveState(plugin.HoudiniInstancePlugin): """Collect default active state for instance from its node bypass state. This is done at the very end of the CollectorOrder so that any required diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py index 7b693c2d6f..c88f5d878f 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py @@ -4,12 +4,12 @@ import re import hou import pyblish.api -from ayon_houdini.api import colorspace +from ayon_houdini.api import colorspace, plugin from ayon_houdini.api.lib import ( evalParmNoFrame, get_color_management_preferences) -class CollectArnoldROPRenderProducts(pyblish.api.InstancePlugin): +class CollectArnoldROPRenderProducts(plugin.HoudiniInstancePlugin): """Collect Arnold ROP Render Products Collects the instance.data["files"] for the render products. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py index 81ee5a2315..b3a13ea290 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py @@ -4,9 +4,10 @@ import hou # noqa import pyblish.api from ayon_core.lib import BoolDef from ayon_core.pipeline import AYONPyblishPluginMixin +from ayon_houdini.api import plugin -class CollectAssetHandles(pyblish.api.InstancePlugin, +class CollectAssetHandles(plugin.HoudiniInstancePlugin, AYONPyblishPluginMixin): """Apply folder handles. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py index ea3c237b13..22ea4d82c0 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py @@ -2,9 +2,10 @@ import os import pyblish.api import hou from ayon_houdini.api import lib +from ayon_houdini.api import plugin -class CollectDataforCache(pyblish.api.InstancePlugin): +class CollectDataforCache(plugin.HoudiniInstancePlugin): """Collect data for caching to Deadline.""" # Run after Collect Frames diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_chunk_size.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_chunk_size.py index f6ae6246cd..8b9f193e99 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_chunk_size.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_chunk_size.py @@ -1,9 +1,10 @@ import pyblish.api from ayon_core.lib import NumberDef from ayon_core.pipeline import AYONPyblishPluginMixin +from ayon_houdini.api import plugin -class CollectChunkSize(pyblish.api.InstancePlugin, +class CollectChunkSize(plugin.HoudiniInstancePlugin, AYONPyblishPluginMixin): """Collect chunk size for cache submission to Deadline.""" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py index 7b55778803..70f96e0104 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py @@ -2,9 +2,10 @@ import os import hou import pyblish.api +from ayon_houdini.api import plugin -class CollectHoudiniCurrentFile(pyblish.api.ContextPlugin): +class CollectHoudiniCurrentFile(plugin.HoudiniContextPlugin): """Inject the current working file into context""" order = pyblish.api.CollectorOrder - 0.1 diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_farm_instances.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_farm_instances.py index 586aa2da57..6acf216ef3 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_farm_instances.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_farm_instances.py @@ -1,7 +1,8 @@ import pyblish.api +from ayon_houdini.api import plugin -class CollectFarmInstances(pyblish.api.InstancePlugin): +class CollectFarmInstances(plugin.HoudiniInstancePlugin): """Collect instances for farm render.""" order = pyblish.api.CollectorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_frames.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_frames.py index 7805d8ec35..3378657bfd 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_frames.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_frames.py @@ -5,10 +5,10 @@ import re import hou # noqa import pyblish.api -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin -class CollectFrames(pyblish.api.InstancePlugin): +class CollectFrames(plugin.HoudiniInstancePlugin): """Collect all frames which would be saved from the ROP nodes""" # This specific order value is used so that diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py index 6cf6bbf430..eb7d196d7f 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py @@ -1,7 +1,7 @@ from collections import deque import pyblish.api - +from ayon_houdini.api import plugin from ayon_core.pipeline import registered_host @@ -80,7 +80,7 @@ def iter_upstream(node): collected.update(ancestors) -class CollectUpstreamInputs(pyblish.api.InstancePlugin): +class CollectUpstreamInputs(plugin.HoudiniInstancePlugin): """Collect source input containers used for this publish. This will include `inputs` data of which loaded publishes were used in the diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_usd_layered.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_usd_layered.py index ddf4b60c66..dc344c15fb 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_usd_layered.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_usd_layered.py @@ -1,11 +1,11 @@ import hou import pyblish.api -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin import ayon_houdini.api.usd as hou_usdlib from ayon_core.pipeline import usdlib -class CollectInstancesUsdLayered(pyblish.api.ContextPlugin): +class CollectInstancesUsdLayered(plugin.HoudiniContextPlugin): """Collect Instances from a ROP Network and its configured layer paths. The output nodes of the ROP node will only be published when *any* of the diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py index 62ceed9999..0b2110df4e 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py @@ -9,11 +9,12 @@ from ayon_houdini.api.lib import ( get_color_management_preferences ) from ayon_houdini.api import ( - colorspace + colorspace, + plugin ) -class CollectKarmaROPRenderProducts(pyblish.api.InstancePlugin): +class CollectKarmaROPRenderProducts(plugin.HoudiniInstancePlugin): """Collect Karma Render Products Collects the instance.data["files"] for the multipart render product. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_local_render_instances.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_local_render_instances.py index 0b3eab725d..f94cb58202 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_local_render_instances.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_local_render_instances.py @@ -6,9 +6,10 @@ from ayon_core.pipeline.publish import ( get_plugin_settings, apply_plugin_settings_automatically ) +from ayon_houdini.api import plugin -class CollectLocalRenderInstances(pyblish.api.InstancePlugin): +class CollectLocalRenderInstances(plugin.HoudiniInstancePlugin): """Collect instances for local render. Agnostic Local Render Collector. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py index 09d4c82226..f9b6dd837d 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py @@ -9,11 +9,12 @@ from ayon_houdini.api.lib import ( get_color_management_preferences ) from ayon_houdini.api import ( - colorspace + colorspace, + plugin ) -class CollectMantraROPRenderProducts(pyblish.api.InstancePlugin): +class CollectMantraROPRenderProducts(plugin.HoudiniInstancePlugin): """Collect Mantra Render Products Collects the instance.data["files"] for the render products. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_output_node.py index 26381e065e..dba2f0bf39 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_output_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_output_node.py @@ -1,9 +1,9 @@ import pyblish.api - +from ayon_houdini.api import plugin from ayon_core.pipeline.publish import KnownPublishError -class CollectOutputSOPPath(pyblish.api.InstancePlugin): +class CollectOutputSOPPath(plugin.HoudiniInstancePlugin): """Collect the out node's SOP/COP Path value.""" order = pyblish.api.CollectorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_pointcache_type.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_pointcache_type.py index 3323e97c20..fa5a75d1f9 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_pointcache_type.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_pointcache_type.py @@ -4,9 +4,9 @@ This will add additional family to pointcache instance based on the creator_identifier parameter. """ import pyblish.api +from ayon_houdini.api import plugin - -class CollectPointcacheType(pyblish.api.InstancePlugin): +class CollectPointcacheType(plugin.HoudiniInstancePlugin): """Collect data type for pointcache instance.""" order = pyblish.api.CollectorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py index 7982b53a7e..c1d5267d0a 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py @@ -9,11 +9,12 @@ from ayon_houdini.api.lib import ( get_color_management_preferences ) from ayon_houdini.api import ( - colorspace + colorspace, + plugin ) -class CollectRedshiftROPRenderProducts(pyblish.api.InstancePlugin): +class CollectRedshiftROPRenderProducts(plugin.HoudiniInstancePlugin): """Collect USD Render Products Collects the instance.data["files"] for the render products. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py index 845a7c4a1f..b23c8f588a 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py @@ -2,10 +2,10 @@ import pyblish.api import hou from ayon_core.pipeline.publish import RepairAction -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin -class CollectRemotePublishSettings(pyblish.api.ContextPlugin): +class CollectRemotePublishSettings(plugin.HoudiniContextPlugin): """Collect custom settings of the Remote Publish node.""" order = pyblish.api.CollectorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_render_products.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_render_products.py index fcd80e0082..cded3ac509 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_render_products.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_render_products.py @@ -5,6 +5,7 @@ import hou import pxr.UsdRender import pyblish.api +from ayon_houdini.api import plugin def get_var_changed(variable=None): @@ -41,7 +42,7 @@ def get_var_changed(variable=None): return changed -class CollectRenderProducts(pyblish.api.InstancePlugin): +class CollectRenderProducts(plugin.HoudiniInstancePlugin): """Collect USD Render Products.""" label = "Collect Render Products" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_review_data.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_review_data.py index ed2de785a2..9a2af9b9d8 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_review_data.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_review_data.py @@ -1,8 +1,9 @@ import hou import pyblish.api +from ayon_houdini.api import plugin -class CollectHoudiniReviewData(pyblish.api.InstancePlugin): +class CollectHoudiniReviewData(plugin.HoudiniInstancePlugin): """Collect Review Data.""" label = "Collect Review Data" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_reviewable_instances.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_reviewable_instances.py index 78dc5fe11a..84cd8377a8 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_reviewable_instances.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_reviewable_instances.py @@ -1,7 +1,8 @@ import pyblish.api +from ayon_houdini.api import plugin -class CollectReviewableInstances(pyblish.api.InstancePlugin): +class CollectReviewableInstances(plugin.HoudiniInstancePlugin): """Collect Reviewable Instances. Basically, all instances of the specified families diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py index b0d69a14e7..01cf095da1 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py @@ -2,10 +2,10 @@ """Collector plugin for frames data on ROP instances.""" import hou # noqa import pyblish.api -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin -class CollectRopFrameRange(pyblish.api.InstancePlugin): +class CollectRopFrameRange(plugin.HoudiniInstancePlugin): """Collect all frames which would be saved from the ROP nodes""" hosts = ["houdini"] diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py index db9efec7a1..91203d88e2 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py @@ -2,9 +2,10 @@ """Collector for staticMesh types. """ import pyblish.api +from ayon_houdini.api import plugin -class CollectStaticMeshType(pyblish.api.InstancePlugin): +class CollectStaticMeshType(plugin.HoudiniInstancePlugin): """Collect data type for fbx instance.""" hosts = ["houdini"] diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_bootstrap.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_bootstrap.py index cd82f1679a..e6da8f665e 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_bootstrap.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_bootstrap.py @@ -1,10 +1,10 @@ import pyblish.api import ayon_api - +from ayon_houdini.api import plugin from ayon_core.pipeline import usdlib, KnownPublishError -class CollectUsdBootstrap(pyblish.api.InstancePlugin): +class CollectUsdBootstrap(plugin.HoudiniInstancePlugin): """Collect special Asset/Shot bootstrap instances if those are needed. Some specific products are intended to be part of the default structure diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py index 41990d84d9..38ca0e5764 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py @@ -1,12 +1,13 @@ import os import pyblish.api +from ayon_houdini.api import plugin import ayon_houdini.api.usd as usdlib import hou -class CollectUsdLayers(pyblish.api.InstancePlugin): +class CollectUsdLayers(plugin.HoudiniInstancePlugin): """Collect the USD Layers that have configured save paths.""" order = pyblish.api.CollectorOrder + 0.35 diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py index 2fd2dbd599..a340cf818e 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py @@ -9,11 +9,12 @@ from ayon_houdini.api.lib import ( get_color_management_preferences ) from ayon_houdini.api import ( - colorspace + colorspace, + plugin ) -class CollectVrayROPRenderProducts(pyblish.api.InstancePlugin): +class CollectVrayROPRenderProducts(plugin.HoudiniInstancePlugin): """Collect Vray Render Products Collects the instance.data["files"] for the render products. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py index aa533bcf1b..bfa1a754c3 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py @@ -1,9 +1,9 @@ import os import pyblish.api +from ayon_houdini.api import plugin - -class CollectWorkfile(pyblish.api.InstancePlugin): +class CollectWorkfile(plugin.HoudiniInstancePlugin): """Inject workfile representation into instance""" order = pyblish.api.CollectorOrder - 0.01 diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py index 6f6cc978cd..91ad0836bd 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py @@ -1,8 +1,9 @@ +from ayon_houdini.api import plugin import pyblish.api import hou -class CollectWorksceneFPS(pyblish.api.ContextPlugin): +class CollectWorksceneFPS(plugin.HoudiniContextPlugin): """Get the FPS of the work scene.""" label = "Workscene FPS" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_active_view_thumbnail.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_active_view_thumbnail.py index 172399479f..d126911f79 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_active_view_thumbnail.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_active_view_thumbnail.py @@ -1,11 +1,10 @@ import pyblish.api import tempfile -from ayon_core.pipeline import publish -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin from ayon_houdini.api.pipeline import IS_HEADLESS -class ExtractActiveViewThumbnail(publish.Extractor): +class ExtractActiveViewThumbnail(plugin.HoudiniInstancePlugin): """Set instance thumbnail to a screengrab of current active viewport. This makes it so that if an instance does not have a thumbnail set yet that diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py index 824ac468a2..0e658ec963 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py @@ -2,13 +2,13 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractAlembic(publish.Extractor): +class ExtractAlembic(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract Alembic" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py index 23fe6678d4..a2e574483d 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py @@ -2,13 +2,13 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractAss(publish.Extractor): +class ExtractAss(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder + 0.1 label = "Extract Ass" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py index e477b7a552..f3a3af6556 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py @@ -2,14 +2,13 @@ import os import pyblish.api -from ayon_core.pipeline import publish from ayon_houdini.api.lib import render_rop -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin import hou -class ExtractBGEO(publish.Extractor): +class ExtractBGEO(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract BGEO" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py index ca4c738a6a..b7061c6bcb 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py @@ -2,12 +2,13 @@ import os import pyblish.api from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop, splitext import hou -class ExtractComposite(publish.Extractor, +class ExtractComposite(plugin.HoudiniInstancePlugin, publish.ColormanagedPyblishPluginMixin): order = pyblish.api.ExtractorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py index de1d8d3b3b..638c3c82d2 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py @@ -3,13 +3,13 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractFBX(publish.Extractor): +class ExtractFBX(plugin.HoudiniInstancePlugin): label = "Extract FBX" families = ["fbx"] diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py index 5fe83e0dcf..3931edbb9e 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py @@ -2,11 +2,11 @@ import os from pprint import pformat import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin import hou -class ExtractHDA(publish.Extractor): +class ExtractHDA(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract HDA" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py index f0bcf4b371..40dcc3e426 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py @@ -2,12 +2,12 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin import hou -class ExtractMantraIFD(publish.Extractor): +class ExtractMantraIFD(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract Mantra ifd" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py index 6d608aacfa..c667ca3ca2 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py @@ -3,12 +3,13 @@ import os import pyblish.api from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractOpenGL(publish.Extractor, +class ExtractOpenGL(plugin.HoudiniInstancePlugin, publish.ColormanagedPyblishPluginMixin): order = pyblish.api.ExtractorOrder - 0.01 diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py index 634322b310..b445fdadb3 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py @@ -2,13 +2,13 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractRedshiftProxy(publish.Extractor): +class ExtractRedshiftProxy(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder + 0.1 label = "Extract Redshift Proxy" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py index 0506c7c8d5..6c5c0dbe00 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py @@ -1,12 +1,12 @@ import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou import os -class ExtractRender(publish.Extractor): +class ExtractRender(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract Render" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py index 54051934d7..74e89614a0 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py @@ -3,12 +3,12 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractUSD(publish.Extractor): +class ExtractUSD(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract USD" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py index df2bd0c4b6..40ae140a59 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py @@ -7,10 +7,8 @@ import hou import ayon_api import pyblish.api -from ayon_core.pipeline import ( - get_representation_path, - publish, -) +from ayon_core.pipeline import get_representation_path +from ayon_houdini.api import plugin import ayon_houdini.api.usd as hou_usdlib from ayon_houdini.api.lib import render_rop @@ -154,7 +152,7 @@ def parm_values(overrides): parm.set(value) -class ExtractUSDLayered(publish.Extractor): +class ExtractUSDLayered(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder label = "Extract Layered USD" @@ -312,3 +310,14 @@ class ExtractUSDLayered(publish.Extractor): return False return filecmp.cmp(old_file, new_file) + + def staging_dir(self, instance): + """Provide a temporary directory in which to store extracted files + + Upon calling this method the staging directory is stored inside + the instance.data['stagingDir'] + """ + + from ayon_core.pipeline.publish import get_instance_staging_dir + + return get_instance_staging_dir(instance) diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py index e1146e4978..148992001c 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py @@ -2,13 +2,13 @@ import os import pyblish.api -from ayon_core.pipeline import publish +from ayon_houdini.api import plugin from ayon_houdini.api.lib import render_rop import hou -class ExtractVDBCache(publish.Extractor): +class ExtractVDBCache(plugin.HoudiniInstancePlugin): order = pyblish.api.ExtractorOrder + 0.1 label = "Extract VDB Cache" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py index 3e9291d5c2..f858c11830 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py @@ -1,4 +1,5 @@ import pyblish.api +from ayon_houdini.api import plugin from ayon_core.lib import version_up from ayon_core.pipeline import registered_host @@ -6,7 +7,7 @@ from ayon_core.pipeline.publish import get_errored_plugins_from_context from ayon_core.pipeline.publish import KnownPublishError -class IncrementCurrentFile(pyblish.api.ContextPlugin): +class IncrementCurrentFile(plugin.HoudiniContextPlugin): """Increment the current file. Saves the current scene with an increased version number. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py index 7c453038ea..43e9b95068 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py @@ -1,9 +1,10 @@ import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import registered_host -class SaveCurrentScene(pyblish.api.ContextPlugin): +class SaveCurrentScene(plugin.HoudiniContextPlugin): """Save current scene""" label = "Save current file" diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_abc_primitive_to_detail.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_abc_primitive_to_detail.py index 18a459bf7b..a6b6530b78 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_abc_primitive_to_detail.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_abc_primitive_to_detail.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from collections import defaultdict from ayon_core.pipeline import PublishValidationError -class ValidateAbcPrimitiveToDetail(pyblish.api.InstancePlugin): +class ValidateAbcPrimitiveToDetail(plugin.HoudiniInstancePlugin): """Validate Alembic ROP Primitive to Detail attribute is consistent. The Alembic ROP crashes Houdini whenever an attribute in the "Primitive to diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_face_sets.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_face_sets.py index 40114bc40e..fa456ea395 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_face_sets.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_face_sets.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin import hou -class ValidateAlembicROPFaceSets(pyblish.api.InstancePlugin): +class ValidateAlembicROPFaceSets(plugin.HoudiniInstancePlugin): """Validate Face Sets are disabled for extraction to pointcache. When groups are saved as Face Sets with the Alembic these show up diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_input_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_input_node.py index dbc38058e6..967b82d573 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_input_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_input_node.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError import hou -class ValidateAlembicInputNode(pyblish.api.InstancePlugin): +class ValidateAlembicInputNode(plugin.HoudiniInstancePlugin): """Validate that the node connected to the output is correct. The connected node cannot be of the following types for Alembic: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py index 14bd3a05bd..e0c87f4962 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py @@ -1,11 +1,11 @@ import pyblish.api from ayon_core.pipeline.publish import PublishValidationError -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin import hou -class ValidateAnimationSettings(pyblish.api.InstancePlugin): +class ValidateAnimationSettings(plugin.HoudiniInstancePlugin): """Validate if the unexpanded string contains the frame ('$F') token This validator will only check the output parameter of the node if diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py index 8a83ff42fb..0be7a15cbc 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError import hou -class ValidateBypassed(pyblish.api.InstancePlugin): +class ValidateBypassed(plugin.HoudiniInstancePlugin): """Validate all primitives build hierarchy from attribute when enabled. The name of the attribute must exist on the prims and have the same name diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py index ad4ace988a..daa0f659f1 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- """Validator plugin for Houdini Camera ROP settings.""" import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError -class ValidateCameraROP(pyblish.api.InstancePlugin): +class ValidateCameraROP(plugin.HoudiniInstancePlugin): """Validate Camera ROP settings.""" order = pyblish.api.ValidatorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_cop_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_cop_output_node.py index 91bd36018a..9ed326e153 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_cop_output_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_cop_output_node.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- import hou import pyblish.api - +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError -class ValidateCopOutputNode(pyblish.api.InstancePlugin): +class ValidateCopOutputNode(plugin.HoudiniInstancePlugin): """Validate the instance COP Output Node. This will ensure: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py index 24d8c27bd6..2b2136c607 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py @@ -5,11 +5,12 @@ from ayon_houdini.api.action import ( SelectInvalidAction, SelectROPAction, ) +from ayon_houdini.api import plugin from ayon_houdini.api.lib import get_obj_node_output import hou -class ValidateFBXOutputNode(pyblish.api.InstancePlugin): +class ValidateFBXOutputNode(plugin.HoudiniInstancePlugin): """Validate the instance Output Node. This will ensure: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py index 43083feeea..0b9fa1fe9f 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py @@ -2,13 +2,13 @@ import os import pyblish.api -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin from ayon_core.pipeline import PublishValidationError import hou -class ValidateFileExtension(pyblish.api.InstancePlugin): +class ValidateFileExtension(plugin.HoudiniInstancePlugin): """Validate the output file extension fits the output family. File extensions: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py index 08f82e12b8..31a0ecd2de 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py @@ -3,7 +3,7 @@ import pyblish.api from ayon_core.pipeline import PublishValidationError from ayon_core.pipeline.publish import RepairAction from ayon_houdini.api.action import SelectInvalidAction - +from ayon_houdini.api import plugin import hou @@ -12,7 +12,7 @@ class DisableUseFolderHandlesAction(RepairAction): icon = "mdi.toggle-switch-off" -class ValidateFrameRange(pyblish.api.InstancePlugin): +class ValidateFrameRange(plugin.HoudiniInstancePlugin): """Validate Frame Range. Due to the usage of start and end handles, diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py index 1b8c167869..135062ff18 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py @@ -1,10 +1,10 @@ import pyblish.api -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin import hou -class ValidateFrameToken(pyblish.api.InstancePlugin): +class ValidateFrameToken(plugin.HoudiniInstancePlugin): """Validate if the unexpanded string contains the frame ('$F') token. This validator will *only* check the output parameter of the node if diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_houdini_license_category.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_houdini_license_category.py index 9a68c34405..b442dd1bc6 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_houdini_license_category.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_houdini_license_category.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError import hou -class ValidateHoudiniNotApprenticeLicense(pyblish.api.InstancePlugin): +class ValidateHoudiniNotApprenticeLicense(plugin.HoudiniInstancePlugin): """Validate the Houdini instance runs a non Apprentice license. USD ROPs: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py index 25f38c4600..0272765c47 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """Validate if instance asset is the same as context asset.""" -import pyblish.api +from ayon_houdini.api import plugin from ayon_houdini.api.action import SelectROPAction from ayon_core.pipeline.publish import ( RepairAction, @@ -11,7 +11,7 @@ from ayon_core.pipeline.publish import ( ) -class ValidateInstanceInContextHoudini(pyblish.api.InstancePlugin, +class ValidateInstanceInContextHoudini(plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin): """Validator to check if instance asset match context asset. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mesh_is_static.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mesh_is_static.py index 6f78b9f4ff..89f0d92140 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mesh_is_static.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mesh_is_static.py @@ -1,17 +1,17 @@ # -*- coding: utf-8 -*- """Validator for correct naming of Static Meshes.""" -import pyblish.api from ayon_core.pipeline import ( PublishValidationError, OptionalPyblishPluginMixin ) from ayon_core.pipeline.publish import ValidateContentsOrder +from ayon_houdini.api import plugin from ayon_houdini.api.action import SelectInvalidAction from ayon_houdini.api.lib import get_output_children -class ValidateMeshIsStatic(pyblish.api.InstancePlugin, +class ValidateMeshIsStatic(plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin): """Validate mesh is static. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py index 38f1c4e176..b4e48d1379 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError -class ValidateIntermediateDirectoriesChecked(pyblish.api.InstancePlugin): +class ValidateIntermediateDirectoriesChecked(plugin.HoudiniInstancePlugin): """Validate Create Intermediate Directories is enabled on ROP node.""" order = pyblish.api.ValidatorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py index ae1e5cad27..4ad5a70930 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import pyblish.api import hou +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError @@ -26,7 +27,7 @@ def get_errors(node): return node.errors() -class ValidateNoErrors(pyblish.api.InstancePlugin): +class ValidateNoErrors(plugin.HoudiniInstancePlugin): """Validate the Instance has no current cooking errors.""" order = pyblish.api.ValidatorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py index f63cb23138..47e1c8b4ac 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError from ayon_core.pipeline.publish import ( ValidateContentsOrder, @@ -14,7 +14,7 @@ class AddDefaultPathAction(RepairAction): icon = "mdi.pencil-plus-outline" -class ValidatePrimitiveHierarchyPaths(pyblish.api.InstancePlugin): +class ValidatePrimitiveHierarchyPaths(plugin.HoudiniInstancePlugin): """Validate all primitives build hierarchy from attribute when enabled. The name of the attribute must exist on the prims and have the same name diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py index 801ed08ce6..e254c4cc2f 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py @@ -1,14 +1,14 @@ # -*-coding: utf-8 -*- import pyblish.api -from ayon_houdini.api import lib +from ayon_houdini.api import lib, plugin from ayon_core.pipeline.publish import RepairContextAction from ayon_core.pipeline import PublishValidationError import hou -class ValidateRemotePublishOutNode(pyblish.api.ContextPlugin): +class ValidateRemotePublishOutNode(plugin.HoudiniContextPlugin): """Validate the remote publish out node exists for Deadline to trigger.""" order = pyblish.api.ValidatorOrder - 0.4 diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py index d4c6e7a45e..f47f1e46e3 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py @@ -2,11 +2,12 @@ import pyblish.api import hou +from ayon_houdini.api import plugin from ayon_core.pipeline.publish import RepairContextAction from ayon_core.pipeline import PublishValidationError -class ValidateRemotePublishEnabled(pyblish.api.ContextPlugin): +class ValidateRemotePublishEnabled(plugin.HoudiniContextPlugin): """Validate the remote publish node is *not* bypassed.""" order = pyblish.api.ValidatorOrder - 0.39 diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py index 30a8a35dca..a5d39378d2 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py @@ -9,6 +9,7 @@ from ayon_core.pipeline.publish import ( get_plugin_settings, apply_plugin_settings_automatically ) +from ayon_houdini.api import plugin from ayon_houdini.api.action import SelectROPAction import os @@ -20,7 +21,7 @@ class ResetViewSpaceAction(RepairAction): icon = "mdi.monitor" -class ValidateReviewColorspace(pyblish.api.InstancePlugin, +class ValidateReviewColorspace(plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin): """Validate Review Colorspace parameters. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py index 0b09306b0d..a1ce0978e7 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError import hou -class ValidateSceneReview(pyblish.api.InstancePlugin): +class ValidateSceneReview(plugin.HoudiniInstancePlugin): """Validator Some Scene Settings before publishing the review 1. Scene Path 2. Resolution diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py index 59fa8cb134..7d33f6ef79 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- import pyblish.api from ayon_core.pipeline import PublishValidationError + +from ayon_houdini.api import plugin from ayon_houdini.api.action import ( SelectInvalidAction, SelectROPAction, @@ -9,7 +11,7 @@ from ayon_houdini.api.action import ( import hou -class ValidateSopOutputNode(pyblish.api.InstancePlugin): +class ValidateSopOutputNode(plugin.HoudiniInstancePlugin): """Validate the instance SOP Output Node. This will ensure: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py index 3d284a4eec..ace888f6f6 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- """Validator for correct naming of Static Meshes.""" -import pyblish.api from ayon_core.pipeline import ( PublishValidationError, OptionalPyblishPluginMixin @@ -9,6 +8,7 @@ from ayon_core.pipeline.publish import ( ValidateContentsOrder, RepairAction, ) +from ayon_houdini.api import plugin from ayon_houdini.api.action import SelectInvalidAction from ayon_core.pipeline.create import get_product_name @@ -19,7 +19,7 @@ class FixProductNameAction(RepairAction): label = "Fix Product Name" -class ValidateSubsetName(pyblish.api.InstancePlugin, +class ValidateSubsetName(plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin): """Validate Product name. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_unreal_staticmesh_naming.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_unreal_staticmesh_naming.py index 6b7c980fa2..5cae07d708 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_unreal_staticmesh_naming.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_unreal_staticmesh_naming.py @@ -1,19 +1,19 @@ # -*- coding: utf-8 -*- """Validator for correct naming of Static Meshes.""" -import pyblish.api from ayon_core.pipeline import ( PublishValidationError, OptionalPyblishPluginMixin ) from ayon_core.pipeline.publish import ValidateContentsOrder +from ayon_houdini.api import plugin from ayon_houdini.api.action import SelectInvalidAction from ayon_houdini.api.lib import get_output_children import hou -class ValidateUnrealStaticMeshName(pyblish.api.InstancePlugin, +class ValidateUnrealStaticMeshName(plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin): """Validate name of Unreal Static Mesh. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_layer_path_backslashes.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_layer_path_backslashes.py index 3dcf7206f1..4ad977c8cc 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_layer_path_backslashes.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_layer_path_backslashes.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- import pyblish.api - +from ayon_houdini.api import plugin import ayon_houdini.api.usd as hou_usdlib from ayon_core.pipeline import PublishValidationError import hou -class ValidateUSDLayerPathBackslashes(pyblish.api.InstancePlugin): +class ValidateUSDLayerPathBackslashes(plugin.HoudiniInstancePlugin): """Validate USD loaded paths have no backslashes. This is a crucial validation for HUSK USD rendering as Houdini's diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_model_and_shade.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_model_and_shade.py index 34440b70b0..c37f278c7e 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_model_and_shade.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_model_and_shade.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- import pyblish.api - +from ayon_houdini.api import plugin import ayon_houdini.api.usd as hou_usdlib from ayon_core.pipeline import PublishValidationError @@ -17,7 +17,7 @@ def fullname(o): return module + "." + o.__name__ -class ValidateUsdModel(pyblish.api.InstancePlugin): +class ValidateUsdModel(plugin.HoudiniInstancePlugin): """Validate USD Model. Disallow Shaders, Render settings, products and vars and Lux lights. diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_output_node.py index 968d64e8fc..bede13a3ca 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_output_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_output_node.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError -class ValidateUSDOutputNode(pyblish.api.InstancePlugin): +class ValidateUSDOutputNode(plugin.HoudiniInstancePlugin): """Validate the instance USD LOPs Output Node. This will ensure: diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_render_product_names.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_render_product_names.py index 4825b7cc71..5f7d77de86 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_render_product_names.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_render_product_names.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- import os import pyblish.api - +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError -class ValidateUSDRenderProductNames(pyblish.api.InstancePlugin): +class ValidateUSDRenderProductNames(plugin.HoudiniInstancePlugin): """Validate USD Render Product names are correctly set absolute paths.""" order = pyblish.api.ValidatorOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py index dc773b6770..9cc5ab8b38 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- import pyblish.api - +from ayon_houdini.api import plugin import ayon_houdini.api.usd as hou_usdlib from ayon_core.pipeline import PublishValidationError -class ValidateUsdSetDress(pyblish.api.InstancePlugin): +class ValidateUsdSetDress(plugin.HoudiniInstancePlugin): """Validate USD Set Dress. Must only have references or payloads. May not generate new mesh or diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_model_exists.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_model_exists.py index 048d675c00..e56ed6cf89 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_model_exists.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_model_exists.py @@ -2,7 +2,7 @@ import re import ayon_api -import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline.publish import ( ValidateContentsOrder, @@ -11,7 +11,7 @@ from ayon_core.pipeline.publish import ( ) -class ValidateUSDShadeModelExists(pyblish.api.InstancePlugin): +class ValidateUSDShadeModelExists(plugin.HoudiniInstancePlugin): """Validate the Instance has no current cooking errors.""" order = ValidateContentsOrder diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_workspace.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_workspace.py index 2ea4b5d816..f33fde1ae8 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_workspace.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_workspace.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- import pyblish.api +from ayon_houdini.api import plugin from ayon_core.pipeline import PublishValidationError import hou -class ValidateUsdShadeWorkspace(pyblish.api.InstancePlugin): +class ValidateUsdShadeWorkspace(plugin.HoudiniInstancePlugin): """Validate USD Shading Workspace is correct version. There have been some issues with outdated/erroneous Shading Workspaces diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py index 5c662c0084..c570285cb7 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py @@ -5,6 +5,7 @@ import pyblish.api import hou from ayon_core.pipeline import PublishXmlValidationError +from ayon_houdini.api import plugin from ayon_houdini.api.action import SelectInvalidAction @@ -60,7 +61,7 @@ def get_geometry_at_frame(sop_node, frame, force=True): return sop_node.geometryAtFrame(frame) -class ValidateVDBOutputNode(pyblish.api.InstancePlugin): +class ValidateVDBOutputNode(plugin.HoudiniInstancePlugin): """Validate that the node connected to the output node is of type VDB. All primitives of the output geometry must be VDBs, no other primitive diff --git a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py index f2008b8281..232ae4782a 100644 --- a/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py +++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import pyblish.api import hou +from ayon_houdini.api import plugin from ayon_core.pipeline import ( PublishValidationError, OptionalPyblishPluginMixin @@ -9,7 +10,7 @@ from ayon_core.pipeline.publish import RepairAction class ValidateWorkfilePaths( - pyblish.api.InstancePlugin, OptionalPyblishPluginMixin): + plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin): """Validate workfile paths so they are absolute.""" order = pyblish.api.ValidatorOrder