diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py
index fcd41c5f7d..ccd73d456a 100644
--- a/client/ayon_core/addon/base.py
+++ b/client/ayon_core/addon/base.py
@@ -54,12 +54,16 @@ MOVED_ADDON_MILESTONE_VERSIONS = {
"celaction": VersionInfo(0, 2, 0),
"clockify": VersionInfo(0, 2, 0),
"flame": VersionInfo(0, 2, 0),
+ "fusion": VersionInfo(0, 2, 0),
"max": VersionInfo(0, 2, 0),
+ "photoshop": VersionInfo(0, 2, 0),
"traypublisher": VersionInfo(0, 2, 0),
"tvpaint": VersionInfo(0, 2, 0),
"maya": VersionInfo(0, 2, 0),
"nuke": VersionInfo(0, 2, 0),
+ "resolve": VersionInfo(0, 2, 0),
"substancepainter": VersionInfo(0, 2, 0),
+ "houdini": VersionInfo(0, 3, 0),
}
diff --git a/client/ayon_core/hosts/resolve/__init__.py b/client/ayon_core/hosts/resolve/__init__.py
deleted file mode 100644
index b4a994bbaa..0000000000
--- a/client/ayon_core/hosts/resolve/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from .addon import ResolveAddon
-
-
-__all__ = (
- "ResolveAddon",
-)
diff --git a/client/ayon_core/modules/deadline/plugins/publish/submit_fusion_deadline.py b/client/ayon_core/modules/deadline/plugins/publish/submit_fusion_deadline.py
index 6c70119628..9eea4d6549 100644
--- a/client/ayon_core/modules/deadline/plugins/publish/submit_fusion_deadline.py
+++ b/client/ayon_core/modules/deadline/plugins/publish/submit_fusion_deadline.py
@@ -79,7 +79,7 @@ class FusionSubmitDeadline(
else:
context.data[key] = True
- from ayon_core.hosts.fusion.api.lib import get_frame_path
+ from ayon_fusion.api.lib import get_frame_path
deadline_url = instance.data["deadline"]["url"]
assert deadline_url, "Requires Deadline Webservice URL"
diff --git a/client/ayon_core/plugins/publish/validate_version.py b/client/ayon_core/plugins/publish/validate_version.py
index c2f7d5bf44..0359f8fb53 100644
--- a/client/ayon_core/plugins/publish/validate_version.py
+++ b/client/ayon_core/plugins/publish/validate_version.py
@@ -3,9 +3,9 @@ import pyblish.api
from ayon_core.lib import filter_profiles
from ayon_core.pipeline.publish import (
PublishValidationError,
- OptionalPyblishPluginMixin,
- get_current_host_name,
+ OptionalPyblishPluginMixin
)
+from ayon_core.pipeline import get_current_host_name
class ValidateVersion(pyblish.api.InstancePlugin, OptionalPyblishPluginMixin):
diff --git a/client/ayon_core/hosts/fusion/__init__.py b/server_addon/fusion/client/ayon_fusion/__init__.py
similarity index 63%
rename from client/ayon_core/hosts/fusion/__init__.py
rename to server_addon/fusion/client/ayon_fusion/__init__.py
index 1da11ba9d1..f2ddccdd87 100644
--- a/client/ayon_core/hosts/fusion/__init__.py
+++ b/server_addon/fusion/client/ayon_fusion/__init__.py
@@ -1,14 +1,17 @@
+from .version import __version__
from .addon import (
get_fusion_version,
FusionAddon,
- FUSION_HOST_DIR,
+ FUSION_ADDON_ROOT,
FUSION_VERSIONS_DICT,
)
__all__ = (
+ "__version__",
+
"get_fusion_version",
"FusionAddon",
- "FUSION_HOST_DIR",
+ "FUSION_ADDON_ROOT",
"FUSION_VERSIONS_DICT",
)
diff --git a/client/ayon_core/hosts/fusion/addon.py b/server_addon/fusion/client/ayon_fusion/addon.py
similarity index 91%
rename from client/ayon_core/hosts/fusion/addon.py
rename to server_addon/fusion/client/ayon_fusion/addon.py
index 54e48ea7bf..ffc70b6ff4 100644
--- a/client/ayon_core/hosts/fusion/addon.py
+++ b/server_addon/fusion/client/ayon_fusion/addon.py
@@ -3,7 +3,9 @@ import re
from ayon_core.addon import AYONAddon, IHostAddon
from ayon_core.lib import Logger
-FUSION_HOST_DIR = os.path.dirname(os.path.abspath(__file__))
+from .version import __version__
+
+FUSION_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
# FUSION_VERSIONS_DICT is used by the pre-launch hooks
# The keys correspond to all currently supported Fusion versions
@@ -50,12 +52,13 @@ def get_fusion_version(app_name):
class FusionAddon(AYONAddon, IHostAddon):
name = "fusion"
+ version = __version__
host_name = "fusion"
def get_launch_hook_paths(self, app):
if app.host_name != self.host_name:
return []
- return [os.path.join(FUSION_HOST_DIR, "hooks")]
+ return [os.path.join(FUSION_ADDON_ROOT, "hooks")]
def add_implementation_envs(self, env, app):
# Set default values if are not already set via settings
diff --git a/client/ayon_core/hosts/fusion/api/__init__.py b/server_addon/fusion/client/ayon_fusion/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/api/__init__.py
rename to server_addon/fusion/client/ayon_fusion/api/__init__.py
diff --git a/client/ayon_core/hosts/fusion/api/action.py b/server_addon/fusion/client/ayon_fusion/api/action.py
similarity index 98%
rename from client/ayon_core/hosts/fusion/api/action.py
rename to server_addon/fusion/client/ayon_fusion/api/action.py
index a0c6aafcb5..02cd96f56c 100644
--- a/client/ayon_core/hosts/fusion/api/action.py
+++ b/server_addon/fusion/client/ayon_fusion/api/action.py
@@ -1,7 +1,7 @@
import pyblish.api
-from ayon_core.hosts.fusion.api.lib import get_current_comp
+from ayon_fusion.api.lib import get_current_comp
from ayon_core.pipeline.publish import get_errored_instances_from_context
diff --git a/client/ayon_core/hosts/fusion/api/lib.py b/server_addon/fusion/client/ayon_fusion/api/lib.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/api/lib.py
rename to server_addon/fusion/client/ayon_fusion/api/lib.py
diff --git a/client/ayon_core/hosts/fusion/api/menu.py b/server_addon/fusion/client/ayon_fusion/api/menu.py
similarity index 98%
rename from client/ayon_core/hosts/fusion/api/menu.py
rename to server_addon/fusion/client/ayon_fusion/api/menu.py
index 6a64ad2120..38d8c36bb1 100644
--- a/client/ayon_core/hosts/fusion/api/menu.py
+++ b/server_addon/fusion/client/ayon_fusion/api/menu.py
@@ -6,10 +6,10 @@ from qtpy import QtWidgets, QtCore, QtGui
from ayon_core.tools.utils import host_tools
from ayon_core.style import load_stylesheet
from ayon_core.lib import register_event_callback
-from ayon_core.hosts.fusion.scripts import (
+from ayon_fusion.scripts import (
duplicate_with_inputs,
)
-from ayon_core.hosts.fusion.api.lib import (
+from ayon_fusion.api.lib import (
set_current_context_framerange,
set_current_context_resolution,
)
diff --git a/client/ayon_core/hosts/fusion/api/pipeline.py b/server_addon/fusion/client/ayon_fusion/api/pipeline.py
similarity index 98%
rename from client/ayon_core/hosts/fusion/api/pipeline.py
rename to server_addon/fusion/client/ayon_fusion/api/pipeline.py
index 2d1073ec7d..04f0d3db9a 100644
--- a/client/ayon_core/hosts/fusion/api/pipeline.py
+++ b/server_addon/fusion/client/ayon_fusion/api/pipeline.py
@@ -22,9 +22,9 @@ from ayon_core.pipeline import (
AVALON_CONTAINER_ID,
)
from ayon_core.pipeline.load import any_outdated_containers
-from ayon_core.hosts.fusion import FUSION_HOST_DIR
from ayon_core.host import HostBase, IWorkfileHost, ILoadHost, IPublishHost
from ayon_core.tools.utils import host_tools
+from ayon_fusion import FUSION_ADDON_ROOT
from .lib import (
@@ -35,7 +35,7 @@ from .lib import (
log = Logger.get_logger(__name__)
-PLUGINS_DIR = os.path.join(FUSION_HOST_DIR, "plugins")
+PLUGINS_DIR = os.path.join(FUSION_ADDON_ROOT, "plugins")
PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish")
LOAD_PATH = os.path.join(PLUGINS_DIR, "load")
@@ -80,7 +80,7 @@ class FusionHost(HostBase, IWorkfileHost, ILoadHost, IPublishHost):
and loaders into fusion.
It is called automatically when installing via
- `ayon_core.pipeline.install_host(ayon_core.hosts.fusion.api)`
+ `ayon_core.pipeline.install_host(ayon_fusion.api)`
See the Maya equivalent for inspiration on how to implement this.
@@ -127,7 +127,7 @@ class FusionHost(HostBase, IWorkfileHost, ILoadHost, IPublishHost):
def open_workfile(self, filepath):
# Hack to get fusion, see
- # ayon_core.hosts.fusion.api.pipeline.get_current_comp()
+ # ayon_fusion.api.pipeline.get_current_comp()
fusion = getattr(sys.modules["__main__"], "fusion", None)
return fusion.LoadComp(filepath)
diff --git a/client/ayon_core/hosts/fusion/api/plugin.py b/server_addon/fusion/client/ayon_fusion/api/plugin.py
similarity index 99%
rename from client/ayon_core/hosts/fusion/api/plugin.py
rename to server_addon/fusion/client/ayon_fusion/api/plugin.py
index efe8269120..48e133cc63 100644
--- a/client/ayon_core/hosts/fusion/api/plugin.py
+++ b/server_addon/fusion/client/ayon_fusion/api/plugin.py
@@ -1,7 +1,7 @@
from copy import deepcopy
import os
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
get_current_comp,
comp_lock_and_undo_chunk,
)
diff --git a/client/ayon_core/hosts/fusion/api/pulse.py b/server_addon/fusion/client/ayon_fusion/api/pulse.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/api/pulse.py
rename to server_addon/fusion/client/ayon_fusion/api/pulse.py
diff --git a/client/ayon_core/hosts/fusion/deploy/MenuScripts/README.md b/server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/README.md
similarity index 100%
rename from client/ayon_core/hosts/fusion/deploy/MenuScripts/README.md
rename to server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/README.md
diff --git a/client/ayon_core/hosts/fusion/deploy/MenuScripts/install_pyside2.py b/server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/install_pyside2.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/deploy/MenuScripts/install_pyside2.py
rename to server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/install_pyside2.py
diff --git a/client/ayon_core/hosts/fusion/deploy/MenuScripts/launch_menu.py b/server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/launch_menu.py
similarity index 81%
rename from client/ayon_core/hosts/fusion/deploy/MenuScripts/launch_menu.py
rename to server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/launch_menu.py
index 640f78eeb8..0c5010f6a7 100644
--- a/client/ayon_core/hosts/fusion/deploy/MenuScripts/launch_menu.py
+++ b/server_addon/fusion/client/ayon_fusion/deploy/MenuScripts/launch_menu.py
@@ -5,10 +5,9 @@ if sys.version_info < (3, 7):
# hack to handle discrepancy between distributed libraries and Python 3.6
# mostly because wrong version of urllib3
# TODO remove when not necessary
- from ayon_core import AYON_CORE_ROOT
- FUSION_HOST_DIR = os.path.join(AYON_CORE_ROOT, "hosts", "fusion")
+ from ayon_fusion import FUSION_ADDON_ROOT
- vendor_path = os.path.join(FUSION_HOST_DIR, "vendor")
+ vendor_path = os.path.join(FUSION_ADDON_ROOT, "vendor")
if vendor_path not in sys.path:
sys.path.insert(0, vendor_path)
@@ -26,8 +25,8 @@ def main(env):
# However the contents of that folder can conflict with Qt library dlls
# so we make sure to move out of it to avoid DLL Load Failed errors.
os.chdir("..")
- from ayon_core.hosts.fusion.api import FusionHost
- from ayon_core.hosts.fusion.api import menu
+ from ayon_fusion.api import FusionHost
+ from ayon_fusion.api import menu
# activate resolve from pype
install_host(FusionHost())
diff --git a/client/ayon_core/hosts/fusion/deploy/ayon/Config/menu.fu b/server_addon/fusion/client/ayon_fusion/deploy/ayon/Config/menu.fu
similarity index 100%
rename from client/ayon_core/hosts/fusion/deploy/ayon/Config/menu.fu
rename to server_addon/fusion/client/ayon_fusion/deploy/ayon/Config/menu.fu
diff --git a/client/ayon_core/hosts/fusion/deploy/ayon/fusion_shared.prefs b/server_addon/fusion/client/ayon_fusion/deploy/ayon/fusion_shared.prefs
similarity index 100%
rename from client/ayon_core/hosts/fusion/deploy/ayon/fusion_shared.prefs
rename to server_addon/fusion/client/ayon_fusion/deploy/ayon/fusion_shared.prefs
diff --git a/client/ayon_core/hosts/fusion/hooks/pre_fusion_launch_menu_hook.py b/server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_launch_menu_hook.py
similarity index 93%
rename from client/ayon_core/hosts/fusion/hooks/pre_fusion_launch_menu_hook.py
rename to server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_launch_menu_hook.py
index 113a1ffe59..035cbb8d97 100644
--- a/client/ayon_core/hosts/fusion/hooks/pre_fusion_launch_menu_hook.py
+++ b/server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_launch_menu_hook.py
@@ -1,6 +1,6 @@
import os
from ayon_applications import PreLaunchHook
-from ayon_core.hosts.fusion import FUSION_HOST_DIR
+from ayon_fusion import FUSION_ADDON_ROOT
class FusionLaunchMenuHook(PreLaunchHook):
@@ -28,7 +28,7 @@ class FusionLaunchMenuHook(PreLaunchHook):
"Validation for Fusion version 18+ for /execute "
"prelaunch argument skipped.")
- path = os.path.join(FUSION_HOST_DIR,
+ path = os.path.join(FUSION_ADDON_ROOT,
"deploy",
"MenuScripts",
"launch_menu.py").replace("\\", "/")
diff --git a/client/ayon_core/hosts/fusion/hooks/pre_fusion_profile_hook.py b/server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_profile_hook.py
similarity index 98%
rename from client/ayon_core/hosts/fusion/hooks/pre_fusion_profile_hook.py
rename to server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_profile_hook.py
index 1064d0a83a..7758798bb6 100644
--- a/client/ayon_core/hosts/fusion/hooks/pre_fusion_profile_hook.py
+++ b/server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_profile_hook.py
@@ -2,8 +2,8 @@ import os
import shutil
import platform
from pathlib import Path
-from ayon_core.hosts.fusion import (
- FUSION_HOST_DIR,
+from ayon_fusion import (
+ FUSION_ADDON_ROOT,
FUSION_VERSIONS_DICT,
get_fusion_version,
)
@@ -163,7 +163,7 @@ class FusionCopyPrefsPrelaunch(PreLaunchHook):
master_prefs_variable = f"FUSION{profile_version}_MasterPrefs"
master_prefs = Path(
- FUSION_HOST_DIR, "deploy", "ayon", "fusion_shared.prefs")
+ FUSION_ADDON_ROOT, "deploy", "ayon", "fusion_shared.prefs")
self.log.info(f"Setting {master_prefs_variable}: {master_prefs}")
self.launch_context.env[master_prefs_variable] = str(master_prefs)
diff --git a/client/ayon_core/hosts/fusion/hooks/pre_fusion_setup.py b/server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_setup.py
similarity index 92%
rename from client/ayon_core/hosts/fusion/hooks/pre_fusion_setup.py
rename to server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_setup.py
index ef084b0483..25cf40f18d 100644
--- a/client/ayon_core/hosts/fusion/hooks/pre_fusion_setup.py
+++ b/server_addon/fusion/client/ayon_fusion/hooks/pre_fusion_setup.py
@@ -4,8 +4,8 @@ from ayon_applications import (
LaunchTypes,
ApplicationLaunchFailed,
)
-from ayon_core.hosts.fusion import (
- FUSION_HOST_DIR,
+from ayon_fusion import (
+ FUSION_ADDON_ROOT,
FUSION_VERSIONS_DICT,
get_fusion_version,
)
@@ -67,5 +67,5 @@ class FusionPrelaunch(PreLaunchHook):
# for hook installing PySide2
self.data["fusion_python3_home"] = py3_dir
- self.log.info(f"Setting AYON_FUSION_ROOT: {FUSION_HOST_DIR}")
- self.launch_context.env["AYON_FUSION_ROOT"] = FUSION_HOST_DIR
+ self.log.info(f"Setting AYON_FUSION_ROOT: {FUSION_ADDON_ROOT}")
+ self.launch_context.env["AYON_FUSION_ROOT"] = FUSION_ADDON_ROOT
diff --git a/client/ayon_core/hosts/fusion/hooks/pre_pyside_install.py b/server_addon/fusion/client/ayon_fusion/hooks/pre_pyside_install.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/hooks/pre_pyside_install.py
rename to server_addon/fusion/client/ayon_fusion/hooks/pre_pyside_install.py
diff --git a/client/ayon_core/hosts/fusion/plugins/create/create_image_saver.py b/server_addon/fusion/client/ayon_fusion/plugins/create/create_image_saver.py
similarity index 96%
rename from client/ayon_core/hosts/fusion/plugins/create/create_image_saver.py
rename to server_addon/fusion/client/ayon_fusion/plugins/create/create_image_saver.py
index 729843d078..d88219b268 100644
--- a/client/ayon_core/hosts/fusion/plugins/create/create_image_saver.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/create/create_image_saver.py
@@ -1,6 +1,6 @@
from ayon_core.lib import NumberDef
-from ayon_core.hosts.fusion.api.plugin import GenericCreateSaver
+from ayon_fusion.api.plugin import GenericCreateSaver
class CreateImageSaver(GenericCreateSaver):
diff --git a/client/ayon_core/hosts/fusion/plugins/create/create_saver.py b/server_addon/fusion/client/ayon_fusion/plugins/create/create_saver.py
similarity index 97%
rename from client/ayon_core/hosts/fusion/plugins/create/create_saver.py
rename to server_addon/fusion/client/ayon_fusion/plugins/create/create_saver.py
index 20c7b99851..3e7d9486ce 100644
--- a/client/ayon_core/hosts/fusion/plugins/create/create_saver.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/create/create_saver.py
@@ -4,8 +4,8 @@ from ayon_core.lib import (
EnumDef
)
-from ayon_core.hosts.fusion.api.plugin import GenericCreateSaver
-from ayon_core.hosts.fusion.api.lib import get_current_comp
+from ayon_fusion.api.plugin import GenericCreateSaver
+from ayon_fusion.api.lib import get_current_comp
class CreateSaver(GenericCreateSaver):
diff --git a/client/ayon_core/hosts/fusion/plugins/create/create_workfile.py b/server_addon/fusion/client/ayon_fusion/plugins/create/create_workfile.py
similarity index 99%
rename from client/ayon_core/hosts/fusion/plugins/create/create_workfile.py
rename to server_addon/fusion/client/ayon_fusion/plugins/create/create_workfile.py
index a2fe027ef4..3dc14861df 100644
--- a/client/ayon_core/hosts/fusion/plugins/create/create_workfile.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/create/create_workfile.py
@@ -1,6 +1,6 @@
import ayon_api
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
get_current_comp
)
from ayon_core.pipeline import (
diff --git a/client/ayon_core/hosts/fusion/plugins/inventory/select_containers.py b/server_addon/fusion/client/ayon_fusion/plugins/inventory/select_containers.py
similarity index 92%
rename from client/ayon_core/hosts/fusion/plugins/inventory/select_containers.py
rename to server_addon/fusion/client/ayon_fusion/plugins/inventory/select_containers.py
index 167cd3be1f..e863c58ab3 100644
--- a/client/ayon_core/hosts/fusion/plugins/inventory/select_containers.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/inventory/select_containers.py
@@ -8,7 +8,7 @@ class FusionSelectContainers(InventoryAction):
color = "#d8d8d8"
def process(self, containers):
- from ayon_core.hosts.fusion.api import (
+ from ayon_fusion.api import (
get_current_comp,
comp_lock_and_undo_chunk
)
diff --git a/client/ayon_core/hosts/fusion/plugins/inventory/set_tool_color.py b/server_addon/fusion/client/ayon_fusion/plugins/inventory/set_tool_color.py
similarity index 97%
rename from client/ayon_core/hosts/fusion/plugins/inventory/set_tool_color.py
rename to server_addon/fusion/client/ayon_fusion/plugins/inventory/set_tool_color.py
index 7167cf0fc5..2c02afe32c 100644
--- a/client/ayon_core/hosts/fusion/plugins/inventory/set_tool_color.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/inventory/set_tool_color.py
@@ -2,7 +2,7 @@ from qtpy import QtGui, QtWidgets
from ayon_core.pipeline import InventoryAction
from ayon_core import style
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
get_current_comp,
comp_lock_and_undo_chunk
)
diff --git a/client/ayon_core/hosts/fusion/plugins/load/actions.py b/server_addon/fusion/client/ayon_fusion/plugins/load/actions.py
similarity index 95%
rename from client/ayon_core/hosts/fusion/plugins/load/actions.py
rename to server_addon/fusion/client/ayon_fusion/plugins/load/actions.py
index 95400ea41c..dfa73e0b7a 100644
--- a/client/ayon_core/hosts/fusion/plugins/load/actions.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/load/actions.py
@@ -27,7 +27,7 @@ class FusionSetFrameRangeLoader(load.LoaderPlugin):
def load(self, context, name, namespace, data):
- from ayon_core.hosts.fusion.api import lib
+ from ayon_fusion.api import lib
version_attributes = context["version"]["attrib"]
@@ -63,7 +63,7 @@ class FusionSetFrameRangeWithHandlesLoader(load.LoaderPlugin):
def load(self, context, name, namespace, data):
- from ayon_core.hosts.fusion.api import lib
+ from ayon_fusion.api import lib
version_attributes = context["version"]["attrib"]
start = version_attributes.get("frameStart", None)
diff --git a/client/ayon_core/hosts/fusion/plugins/load/load_alembic.py b/server_addon/fusion/client/ayon_fusion/plugins/load/load_alembic.py
similarity index 98%
rename from client/ayon_core/hosts/fusion/plugins/load/load_alembic.py
rename to server_addon/fusion/client/ayon_fusion/plugins/load/load_alembic.py
index 312362caca..2e763b5330 100644
--- a/client/ayon_core/hosts/fusion/plugins/load/load_alembic.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/load/load_alembic.py
@@ -2,7 +2,7 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
imprint_container,
get_current_comp,
comp_lock_and_undo_chunk
diff --git a/client/ayon_core/hosts/fusion/plugins/load/load_fbx.py b/server_addon/fusion/client/ayon_fusion/plugins/load/load_fbx.py
similarity index 98%
rename from client/ayon_core/hosts/fusion/plugins/load/load_fbx.py
rename to server_addon/fusion/client/ayon_fusion/plugins/load/load_fbx.py
index a84e7e0914..a080fa3983 100644
--- a/client/ayon_core/hosts/fusion/plugins/load/load_fbx.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/load/load_fbx.py
@@ -2,7 +2,7 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
imprint_container,
get_current_comp,
comp_lock_and_undo_chunk,
diff --git a/client/ayon_core/hosts/fusion/plugins/load/load_sequence.py b/server_addon/fusion/client/ayon_fusion/plugins/load/load_sequence.py
similarity index 99%
rename from client/ayon_core/hosts/fusion/plugins/load/load_sequence.py
rename to server_addon/fusion/client/ayon_fusion/plugins/load/load_sequence.py
index 7c70b54e48..233f1d7021 100644
--- a/client/ayon_core/hosts/fusion/plugins/load/load_sequence.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/load/load_sequence.py
@@ -1,7 +1,7 @@
import contextlib
import ayon_core.pipeline.load as load
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
imprint_container,
get_current_comp,
comp_lock_and_undo_chunk,
diff --git a/client/ayon_core/hosts/fusion/plugins/load/load_usd.py b/server_addon/fusion/client/ayon_fusion/plugins/load/load_usd.py
similarity index 96%
rename from client/ayon_core/hosts/fusion/plugins/load/load_usd.py
rename to server_addon/fusion/client/ayon_fusion/plugins/load/load_usd.py
index 309b0c094c..42ce339faf 100644
--- a/client/ayon_core/hosts/fusion/plugins/load/load_usd.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/load/load_usd.py
@@ -2,12 +2,12 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
imprint_container,
get_current_comp,
comp_lock_and_undo_chunk
)
-from ayon_core.hosts.fusion.api.lib import get_fusion_module
+from ayon_fusion.api.lib import get_fusion_module
class FusionLoadUSD(load.LoaderPlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/load/load_workfile.py b/server_addon/fusion/client/ayon_fusion/plugins/load/load_workfile.py
similarity index 95%
rename from client/ayon_core/hosts/fusion/plugins/load/load_workfile.py
rename to server_addon/fusion/client/ayon_fusion/plugins/load/load_workfile.py
index 818fbcb187..c728f6b4aa 100644
--- a/client/ayon_core/hosts/fusion/plugins/load/load_workfile.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/load/load_workfile.py
@@ -5,7 +5,7 @@ is no update or reload function added for this plugin
from ayon_core.pipeline import load
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
get_current_comp,
get_bmd_library,
)
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/collect_comp.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_comp.py
similarity index 91%
rename from client/ayon_core/hosts/fusion/plugins/publish/collect_comp.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/collect_comp.py
index 591c460d5a..2e5bcd63db 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/collect_comp.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_comp.py
@@ -1,6 +1,6 @@
import pyblish.api
-from ayon_core.hosts.fusion.api import get_current_comp
+from ayon_fusion.api import get_current_comp
class CollectCurrentCompFusion(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/collect_comp_frame_range.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_comp_frame_range.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/collect_comp_frame_range.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/collect_comp_frame_range.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/collect_inputs.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_inputs.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/collect_inputs.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/collect_inputs.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/collect_instances.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_instances.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/collect_instances.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/collect_instances.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/collect_render.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_render.py
similarity index 99%
rename from client/ayon_core/hosts/fusion/plugins/publish/collect_render.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/collect_render.py
index 9c04e59717..af52aee861 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/collect_render.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_render.py
@@ -4,7 +4,7 @@ import pyblish.api
from ayon_core.pipeline import publish
from ayon_core.pipeline.publish import RenderInstance
-from ayon_core.hosts.fusion.api.lib import get_frame_path
+from ayon_fusion.api.lib import get_frame_path
@attr.s
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/collect_workfile.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/collect_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/collect_workfile.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/collect_workfile.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/extract_render_local.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/extract_render_local.py
similarity index 97%
rename from client/ayon_core/hosts/fusion/plugins/publish/extract_render_local.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/extract_render_local.py
index 39fa20cfc0..bbcba5366d 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/extract_render_local.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/extract_render_local.py
@@ -5,8 +5,8 @@ import collections
import pyblish.api
from ayon_core.pipeline import publish
-from ayon_core.hosts.fusion.api import comp_lock_and_undo_chunk
-from ayon_core.hosts.fusion.api.lib import get_frame_path, maintained_comp_range
+from ayon_fusion.api import comp_lock_and_undo_chunk
+from ayon_fusion.api.lib import get_frame_path, maintained_comp_range
log = logging.getLogger(__name__)
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/increment_current_file.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/increment_current_file.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/increment_current_file.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/increment_current_file.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/save_scene.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/save_scene.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/save_scene.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/save_scene.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_background_depth.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_background_depth.py
similarity index 95%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_background_depth.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_background_depth.py
index d588748cfa..90b6b110a4 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_background_depth.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_background_depth.py
@@ -6,7 +6,7 @@ from ayon_core.pipeline import (
PublishValidationError,
)
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateBackgroundDepth(
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_comp_saved.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_comp_saved.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_comp_saved.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_comp_saved.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_create_folder_checked.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_create_folder_checked.py
similarity index 95%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_create_folder_checked.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_create_folder_checked.py
index 13ea85b48c..1b910123f0 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_create_folder_checked.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_create_folder_checked.py
@@ -3,7 +3,7 @@ import pyblish.api
from ayon_core.pipeline.publish import RepairAction
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateCreateFolderChecked(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_expected_frames_existence.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_expected_frames_existence.py
similarity index 96%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_expected_frames_existence.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_expected_frames_existence.py
index 83d1feaefd..6dc9642581 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_expected_frames_existence.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_expected_frames_existence.py
@@ -4,7 +4,7 @@ import pyblish.api
from ayon_core.pipeline.publish import RepairAction
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateLocalFramesExistence(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_filename_has_extension.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_filename_has_extension.py
similarity index 94%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_filename_has_extension.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_filename_has_extension.py
index 17b1aa47c8..471c0ca31a 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_filename_has_extension.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_filename_has_extension.py
@@ -3,7 +3,7 @@ import os
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateFilenameHasExtension(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_image_frame.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_image_frame.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_image_frame.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_image_frame.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_instance_frame_range.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_instance_frame_range.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_instance_frame_range.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_instance_frame_range.py
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_instance_in_context.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_instance_in_context.py
similarity index 97%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_instance_in_context.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_instance_in_context.py
index 3aa6fb452f..7b8b70b2fb 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_instance_in_context.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_instance_in_context.py
@@ -2,7 +2,7 @@
"""Validate if instance context is the same as publish context."""
import pyblish.api
-from ayon_core.hosts.fusion.api.action import SelectToolAction
+from ayon_fusion.api.action import SelectToolAction
from ayon_core.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_saver_has_input.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_has_input.py
similarity index 93%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_saver_has_input.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_has_input.py
index a8977e4747..de2cd1d862 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_saver_has_input.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_has_input.py
@@ -1,7 +1,7 @@
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateSaverHasInput(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_saver_passthrough.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_passthrough.py
similarity index 96%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_saver_passthrough.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_passthrough.py
index acafe3308f..caa17168bc 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_saver_passthrough.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_passthrough.py
@@ -1,7 +1,7 @@
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateSaverPassthrough(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_saver_resolution.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_resolution.py
similarity index 96%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_saver_resolution.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_resolution.py
index 17992b123c..15d96a9afc 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_saver_resolution.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_saver_resolution.py
@@ -4,8 +4,8 @@ from ayon_core.pipeline import (
OptionalPyblishPluginMixin,
)
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
-from ayon_core.hosts.fusion.api import comp_lock_and_undo_chunk
+from ayon_fusion.api.action import SelectInvalidAction
+from ayon_fusion.api import comp_lock_and_undo_chunk
class ValidateSaverResolution(
diff --git a/client/ayon_core/hosts/fusion/plugins/publish/validate_unique_subsets.py b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_unique_subsets.py
similarity index 97%
rename from client/ayon_core/hosts/fusion/plugins/publish/validate_unique_subsets.py
rename to server_addon/fusion/client/ayon_fusion/plugins/publish/validate_unique_subsets.py
index bcd9abd8b0..dd7df54da5 100644
--- a/client/ayon_core/hosts/fusion/plugins/publish/validate_unique_subsets.py
+++ b/server_addon/fusion/client/ayon_fusion/plugins/publish/validate_unique_subsets.py
@@ -3,7 +3,7 @@ from collections import defaultdict
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.fusion.api.action import SelectInvalidAction
+from ayon_fusion.api.action import SelectInvalidAction
class ValidateUniqueSubsets(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/fusion/scripts/__init__.py b/server_addon/fusion/client/ayon_fusion/scripts/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/scripts/__init__.py
rename to server_addon/fusion/client/ayon_fusion/scripts/__init__.py
diff --git a/client/ayon_core/hosts/fusion/scripts/duplicate_with_inputs.py b/server_addon/fusion/client/ayon_fusion/scripts/duplicate_with_inputs.py
similarity index 97%
rename from client/ayon_core/hosts/fusion/scripts/duplicate_with_inputs.py
rename to server_addon/fusion/client/ayon_fusion/scripts/duplicate_with_inputs.py
index 727fd335ea..78edb1b3ba 100644
--- a/client/ayon_core/hosts/fusion/scripts/duplicate_with_inputs.py
+++ b/server_addon/fusion/client/ayon_fusion/scripts/duplicate_with_inputs.py
@@ -1,4 +1,4 @@
-from ayon_core.hosts.fusion.api import (
+from ayon_fusion.api import (
comp_lock_and_undo_chunk,
get_current_comp
)
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/__init__.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/__init__.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/__init__.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/__init__.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_cmp.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_cmp.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_cmp.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_cmp.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_cmp.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/_cmp.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_cmp.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_cmp.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_compat.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_compat.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_compat.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_compat.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_config.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_config.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_config.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_config.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_funcs.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_funcs.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_funcs.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_funcs.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_make.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_make.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_make.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_make.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_next_gen.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_next_gen.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_next_gen.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_next_gen.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_version_info.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/_version_info.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_version_info.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_version_info.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/_version_info.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/_version_info.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/_version_info.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/_version_info.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/converters.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/converters.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/converters.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/converters.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/converters.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/converters.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/converters.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/converters.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/exceptions.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/exceptions.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/exceptions.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/exceptions.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/exceptions.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/exceptions.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/exceptions.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/exceptions.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/filters.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/filters.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/filters.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/filters.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/filters.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/filters.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/filters.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/filters.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/py.typed b/server_addon/fusion/client/ayon_fusion/vendor/attr/py.typed
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/py.typed
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/py.typed
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/setters.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/setters.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/setters.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/setters.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/setters.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/setters.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/setters.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/setters.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/validators.py b/server_addon/fusion/client/ayon_fusion/vendor/attr/validators.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/validators.py
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/validators.py
diff --git a/client/ayon_core/hosts/fusion/vendor/attr/validators.pyi b/server_addon/fusion/client/ayon_fusion/vendor/attr/validators.pyi
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/attr/validators.pyi
rename to server_addon/fusion/client/ayon_fusion/vendor/attr/validators.pyi
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/_collections.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/_collections.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/_collections.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/_collections.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/_version.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/_version.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/_version.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/_version.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/connection.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/connection.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/connection.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/connection.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/connectionpool.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/connectionpool.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/connectionpool.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/connectionpool.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_appengine_environ.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_appengine_environ.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_appengine_environ.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_appengine_environ.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_securetransport/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_securetransport/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_securetransport/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_securetransport/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_securetransport/bindings.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_securetransport/bindings.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_securetransport/bindings.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_securetransport/bindings.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_securetransport/low_level.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_securetransport/low_level.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/_securetransport/low_level.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/_securetransport/low_level.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/appengine.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/appengine.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/appengine.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/appengine.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/ntlmpool.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/ntlmpool.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/ntlmpool.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/ntlmpool.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/pyopenssl.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/pyopenssl.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/pyopenssl.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/pyopenssl.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/securetransport.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/securetransport.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/securetransport.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/securetransport.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/contrib/socks.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/socks.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/contrib/socks.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/contrib/socks.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/exceptions.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/exceptions.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/exceptions.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/exceptions.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/fields.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/fields.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/fields.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/fields.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/filepost.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/filepost.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/filepost.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/filepost.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/packages/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/packages/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/packages/backports/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/backports/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/packages/backports/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/backports/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/packages/backports/makefile.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/backports/makefile.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/packages/backports/makefile.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/backports/makefile.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/packages/six.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/six.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/packages/six.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/six.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/packages/ssl_match_hostname/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/ssl_match_hostname/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/packages/ssl_match_hostname/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/ssl_match_hostname/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/packages/ssl_match_hostname/_implementation.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/ssl_match_hostname/_implementation.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/packages/ssl_match_hostname/_implementation.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/packages/ssl_match_hostname/_implementation.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/poolmanager.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/poolmanager.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/poolmanager.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/poolmanager.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/request.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/request.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/request.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/request.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/response.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/response.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/response.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/response.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/__init__.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/__init__.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/__init__.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/connection.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/connection.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/connection.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/connection.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/proxy.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/proxy.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/proxy.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/proxy.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/queue.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/queue.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/queue.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/queue.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/request.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/request.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/request.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/request.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/response.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/response.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/response.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/response.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/retry.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/retry.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/retry.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/retry.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/ssl_.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/ssl_.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/ssl_.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/ssl_.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/ssltransport.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/ssltransport.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/ssltransport.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/ssltransport.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/timeout.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/timeout.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/timeout.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/timeout.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/url.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/url.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/url.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/url.py
diff --git a/client/ayon_core/hosts/fusion/vendor/urllib3/util/wait.py b/server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/wait.py
similarity index 100%
rename from client/ayon_core/hosts/fusion/vendor/urllib3/util/wait.py
rename to server_addon/fusion/client/ayon_fusion/vendor/urllib3/util/wait.py
diff --git a/server_addon/fusion/client/ayon_fusion/version.py b/server_addon/fusion/client/ayon_fusion/version.py
new file mode 100644
index 0000000000..209eddcdb6
--- /dev/null
+++ b/server_addon/fusion/client/ayon_fusion/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'fusion' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/fusion/package.py b/server_addon/fusion/package.py
index 9e7a46df2c..e82e9bf0f6 100644
--- a/server_addon/fusion/package.py
+++ b/server_addon/fusion/package.py
@@ -1,3 +1,10 @@
name = "fusion"
title = "Fusion"
-version = "0.1.5"
+version = "0.2.0"
+
+client_dir = "ayon_fusion"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/client/ayon_core/hosts/houdini/__init__.py b/server_addon/houdini/client/ayon_houdini/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/__init__.py
rename to server_addon/houdini/client/ayon_houdini/__init__.py
diff --git a/client/ayon_core/hosts/houdini/addon.py b/server_addon/houdini/client/ayon_houdini/addon.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/addon.py
rename to server_addon/houdini/client/ayon_houdini/addon.py
diff --git a/client/ayon_core/hosts/houdini/api/__init__.py b/server_addon/houdini/client/ayon_houdini/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/api/__init__.py
rename to server_addon/houdini/client/ayon_houdini/api/__init__.py
diff --git a/client/ayon_core/hosts/houdini/api/action.py b/server_addon/houdini/client/ayon_houdini/api/action.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/api/action.py
rename to server_addon/houdini/client/ayon_houdini/api/action.py
diff --git a/client/ayon_core/hosts/houdini/api/colorspace.py b/server_addon/houdini/client/ayon_houdini/api/colorspace.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/api/colorspace.py
rename to server_addon/houdini/client/ayon_houdini/api/colorspace.py
index 66581d6f20..ec6e4c2091 100644
--- a/client/ayon_core/hosts/houdini/api/colorspace.py
+++ b/server_addon/houdini/client/ayon_houdini/api/colorspace.py
@@ -1,6 +1,6 @@
import attr
import hou
-from ayon_core.hosts.houdini.api.lib import get_color_management_preferences
+from ayon_houdini.api.lib import get_color_management_preferences
from ayon_core.pipeline.colorspace import get_display_view_colorspace_name
@attr.s
diff --git a/client/ayon_core/hosts/houdini/api/creator_node_shelves.py b/server_addon/houdini/client/ayon_houdini/api/creator_node_shelves.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/api/creator_node_shelves.py
rename to server_addon/houdini/client/ayon_houdini/api/creator_node_shelves.py
index 72c157f187..4d5a706749 100644
--- a/client/ayon_core/hosts/houdini/api/creator_node_shelves.py
+++ b/server_addon/houdini/client/ayon_houdini/api/creator_node_shelves.py
@@ -35,7 +35,7 @@ CATEGORY_GENERIC_TOOL = {
CREATE_SCRIPT = """
-from ayon_core.hosts.houdini.api.creator_node_shelves import create_interactive
+from ayon_houdini.api.creator_node_shelves import create_interactive
create_interactive("{identifier}", **kwargs)
"""
@@ -153,7 +153,7 @@ def install():
This function is re-entrant and can be called again to reinstall and
update the node definitions. For example during development it can be
useful to call it manually:
- >>> from ayon_core.hosts.houdini.api.creator_node_shelves import install
+ >>> from ayon_houdini.api.creator_node_shelves import install
>>> install()
Returns:
diff --git a/client/ayon_core/hosts/houdini/api/lib.py b/server_addon/houdini/client/ayon_houdini/api/lib.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/api/lib.py
rename to server_addon/houdini/client/ayon_houdini/api/lib.py
index 7ca8f7f8f0..671265fae9 100644
--- a/client/ayon_core/hosts/houdini/api/lib.py
+++ b/server_addon/houdini/client/ayon_houdini/api/lib.py
@@ -1027,7 +1027,7 @@ def add_self_publish_button(node):
button_parm = hou.ButtonParmTemplate(
"ayon_self_publish",
"{} Publish".format(label),
- script_callback="from ayon_core.hosts.houdini.api.lib import "
+ script_callback="from ayon_houdini.api.lib import "
"self_publish; self_publish()",
script_callback_language=hou.scriptLanguage.Python,
join_with_next=True
@@ -1070,7 +1070,7 @@ def sceneview_snapshot(
Example:
This is how the function can be used::
- from ayon_core.hosts.houdini.api import lib
+ from ayon_houdini.api import lib
sceneview = hou.ui.paneTabOfType(hou.paneTabType.SceneViewer)
lib.sceneview_snapshot(sceneview)
diff --git a/client/ayon_core/hosts/houdini/api/pipeline.py b/server_addon/houdini/client/ayon_houdini/api/pipeline.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/api/pipeline.py
rename to server_addon/houdini/client/ayon_houdini/api/pipeline.py
index 4797cf36a0..6af4993d25 100644
--- a/client/ayon_core/hosts/houdini/api/pipeline.py
+++ b/server_addon/houdini/client/ayon_houdini/api/pipeline.py
@@ -17,8 +17,8 @@ from ayon_core.pipeline import (
AYON_CONTAINER_ID,
)
from ayon_core.pipeline.load import any_outdated_containers
-from ayon_core.hosts.houdini import HOUDINI_HOST_DIR
-from ayon_core.hosts.houdini.api import lib, shelves, creator_node_shelves
+from ayon_houdini import HOUDINI_HOST_DIR
+from ayon_houdini.api import lib, shelves, creator_node_shelves
from ayon_core.lib import (
register_event_callback,
@@ -26,7 +26,7 @@ from ayon_core.lib import (
)
-log = logging.getLogger("ayon_core.hosts.houdini")
+log = logging.getLogger("ayon_houdini")
AVALON_CONTAINERS = "/obj/AVALON_CONTAINERS"
CONTEXT_CONTAINER = "/obj/OpenPypeContext"
diff --git a/client/ayon_core/hosts/houdini/api/plugin.py b/server_addon/houdini/client/ayon_houdini/api/plugin.py
similarity index 90%
rename from client/ayon_core/hosts/houdini/api/plugin.py
rename to server_addon/houdini/client/ayon_houdini/api/plugin.py
index a9c8c313b9..9c6bba925a 100644
--- a/client/ayon_core/hosts/houdini/api/plugin.py
+++ b/server_addon/houdini/client/ayon_houdini/api/plugin.py
@@ -7,6 +7,7 @@ from abc import (
import six
import hou
+import pyblish.api
from ayon_core.pipeline import (
CreatorError,
LegacyCreator,
@@ -14,11 +15,17 @@ from ayon_core.pipeline import (
CreatedInstance,
AYON_INSTANCE_ID,
AVALON_INSTANCE_ID,
+ load,
+ publish
)
from ayon_core.lib import BoolDef
+
from .lib import imprint, read, lsattr, add_self_publish_button
+SETTINGS_CATEGORY = "houdini"
+
+
class Creator(LegacyCreator):
"""Creator plugin to create instances in Houdini
@@ -169,6 +176,8 @@ class HoudiniCreator(NewCreator, HoudiniCreatorBase):
settings_name = None
add_publish_button = False
+ settings_category = SETTINGS_CATEGORY
+
def create(self, product_name, instance_data, pre_create_data):
try:
self.selected_nodes = []
@@ -347,3 +356,39 @@ class HoudiniCreator(NewCreator, HoudiniCreatorBase):
for key, value in settings.items():
setattr(self, key, value)
+
+
+class HoudiniLoader(load.LoaderPlugin):
+ """Base class for Houdini load plugins."""
+
+ hosts = ["houdini"]
+ settings_category = SETTINGS_CATEGORY
+
+
+class HoudiniInstancePlugin(pyblish.api.InstancePlugin):
+ """Base class for Houdini instance publish plugins."""
+
+ hosts = ["houdini"]
+ settings_category = SETTINGS_CATEGORY
+
+
+class HoudiniContextPlugin(pyblish.api.ContextPlugin):
+ """Base class for Houdini context publish plugins."""
+
+ hosts = ["houdini"]
+ settings_category = SETTINGS_CATEGORY
+
+
+class HoudiniExtractorPlugin(publish.Extractor):
+ """Base class for Houdini extract plugins.
+
+ Note:
+ The `HoudiniExtractorPlugin` is a subclass of `publish.Extractor`,
+ which in turn is a subclass of `pyblish.api.InstancePlugin`.
+ Should there be a requirement to create an extractor that operates
+ as a context plugin, it would be beneficial to incorporate
+ the functionalities present in `publish.Extractor`.
+ """
+
+ hosts = ["houdini"]
+ settings_category = SETTINGS_CATEGORY
diff --git a/client/ayon_core/hosts/houdini/api/shelves.py b/server_addon/houdini/client/ayon_houdini/api/shelves.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/api/shelves.py
rename to server_addon/houdini/client/ayon_houdini/api/shelves.py
index b178139020..2987568af1 100644
--- a/client/ayon_core/hosts/houdini/api/shelves.py
+++ b/server_addon/houdini/client/ayon_houdini/api/shelves.py
@@ -12,7 +12,7 @@ import hou
from .lib import get_current_context_template_data_with_folder_attrs
-log = logging.getLogger("ayon_core.hosts.houdini.shelves")
+log = logging.getLogger("ayon_houdini.shelves")
def generate_shelves():
diff --git a/client/ayon_core/hosts/houdini/api/usd.py b/server_addon/houdini/client/ayon_houdini/api/usd.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/api/usd.py
rename to server_addon/houdini/client/ayon_houdini/api/usd.py
diff --git a/client/ayon_core/hosts/houdini/hooks/set_default_display_and_view.py b/server_addon/houdini/client/ayon_houdini/hooks/set_default_display_and_view.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/hooks/set_default_display_and_view.py
rename to server_addon/houdini/client/ayon_houdini/hooks/set_default_display_and_view.py
diff --git a/client/ayon_core/hosts/houdini/hooks/set_paths.py b/server_addon/houdini/client/ayon_houdini/hooks/set_paths.py
similarity index 100%
rename from client/ayon_core/hosts/houdini/hooks/set_paths.py
rename to server_addon/houdini/client/ayon_houdini/hooks/set_paths.py
diff --git a/client/ayon_core/hosts/houdini/plugins/create/convert_legacy.py b/server_addon/houdini/client/ayon_houdini/plugins/create/convert_legacy.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/convert_legacy.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/convert_legacy.py
index 1a4761172a..4c8c8062ce 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/convert_legacy.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/convert_legacy.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Converter for legacy Houdini products."""
from ayon_core.pipeline.create.creator_plugins import ProductConvertorPlugin
-from ayon_core.hosts.houdini.api.lib import imprint
+from ayon_houdini.api.lib import imprint
class HoudiniLegacyConvertor(ProductConvertorPlugin):
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_alembic_camera.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_alembic_camera.py
index 0ab5e2794e..4a92e24671 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_alembic_camera.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating alembic camera products."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.pipeline import CreatorError
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_arnold_ass.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_arnold_ass.py
index be5604c01c..4f5fb5833e 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_arnold_ass.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating Arnold ASS files."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_arnold_rop.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_arnold_rop.py
index 1208cfc1ea..43875ccbd6 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_arnold_rop.py
@@ -1,4 +1,4 @@
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import EnumDef, BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_bgeo.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_bgeo.py
index 3749598b1d..93cf0e0998 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_bgeo.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating pointcache bgeo files."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.pipeline import CreatorError
import hou
from ayon_core.lib import EnumDef, BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_composite.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_composite.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/create/create_composite.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_composite.py
index a25faf0e8e..8c0ee8a099 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_composite.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_composite.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating composite sequences."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.pipeline import CreatorError
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_hda.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_hda.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/create_hda.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_hda.py
index d399aa5e15..6a1adce8cc 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_hda.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_hda.py
@@ -3,7 +3,7 @@
import ayon_api
from ayon_core.pipeline import CreatorError
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_karma_rop.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_karma_rop.py
index 48cf5057ab..693e6295e2 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_karma_rop.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin to create Karma ROP."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef, EnumDef, NumberDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_mantra_ifd.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_mantra_ifd.py
index e0cf035c35..fc5c4819d0 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_mantra_ifd.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating pointcache alembics."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_mantra_rop.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_mantra_rop.py
index 05b4431aba..ce1c96f8b2 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_mantra_rop.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin to create Mantra ROP."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import EnumDef, BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_model.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_model.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/plugins/create/create_model.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_model.py
index 74d067b133..ed6b2096c5 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_model.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_model.py
@@ -11,7 +11,7 @@ Note:
It's considered to support multiple representations in the future.
"""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_pointcache.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_pointcache.py
index 9e0a335c3a..6a63659053 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_pointcache.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating pointcache alembics."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef
import hou
@@ -105,7 +105,7 @@ class CreatePointCache(plugin.HoudiniCreator):
elif len(outputs) == 1:
return outputs[0]
- # if there are more than one, then it have multiple ouput nodes
+ # if there are more than one, then it have multiple output nodes
# return the one with the minimum 'outputidx'
else:
return min(outputs,
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_redshift_proxy.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_redshift_proxy.py
index 6a9321b95a..0e3eb03ddd 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_redshift_proxy.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating Redshift proxies."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
import hou
from ayon_core.lib import BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_redshift_rop.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_redshift_rop.py
index 3ecb09ee9b..d63e584692 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_redshift_rop.py
@@ -3,7 +3,7 @@
import hou # noqa
from ayon_core.pipeline import CreatorError
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import EnumDef, BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_review.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_review.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/create/create_review.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_review.py
index f5e4d4ce64..b27264f400 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_review.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_review.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating openGL reviews."""
-from ayon_core.hosts.houdini.api import lib, plugin
+from ayon_houdini.api import lib, plugin
from ayon_core.lib import EnumDef, BoolDef, NumberDef
import os
@@ -103,7 +103,7 @@ class CreateReview(plugin.HoudiniCreator):
# cls.review_color_space is an empty string
# when the imageio/workfile setting is disabled or
# when the Review colorspace setting is empty.
- from ayon_core.hosts.houdini.api.colorspace import get_default_display_view_colorspace # noqa
+ from ayon_houdini.api.colorspace import get_default_display_view_colorspace # noqa
self.review_color_space = get_default_display_view_colorspace()
lib.set_review_color_space(instance_node,
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_staticmesh.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_staticmesh.py
index 3271107c6e..17b646040c 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_staticmesh.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator for Unreal Static Meshes."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef, EnumDef
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_usd.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_usd.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/create/create_usd.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_usd.py
index 700f7eefd6..b8aede677b 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_usd.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_usd.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating USDs."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_usdrender.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_usdrender.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/create/create_usdrender.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_usdrender.py
index 36197e349e..a34de1fec4 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_usdrender.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_usdrender.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating USD renders."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
class CreateUSDRender(plugin.HoudiniCreator):
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_vbd_cache.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_vbd_cache.py
index c34cd2b4b5..e8c0920ec8 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_vbd_cache.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Creator plugin for creating VDB Caches."""
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.lib import BoolDef
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_vray_rop.py
similarity index 99%
rename from client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_vray_rop.py
index 9e4633e745..d15ee23825 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_vray_rop.py
@@ -2,7 +2,7 @@
"""Creator plugin to create VRay ROP."""
import hou
-from ayon_core.hosts.houdini.api import plugin
+from ayon_houdini.api import plugin
from ayon_core.pipeline import CreatorError
from ayon_core.lib import EnumDef, BoolDef
diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_workfile.py b/server_addon/houdini/client/ayon_houdini/plugins/create/create_workfile.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/create/create_workfile.py
rename to server_addon/houdini/client/ayon_houdini/plugins/create/create_workfile.py
index 40a607e81a..babf602855 100644
--- a/client/ayon_core/hosts/houdini/plugins/create/create_workfile.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/create/create_workfile.py
@@ -2,9 +2,9 @@
"""Creator plugin for creating workfiles."""
import ayon_api
-from ayon_core.hosts.houdini.api import plugin
-from ayon_core.hosts.houdini.api.lib import read, imprint
-from ayon_core.hosts.houdini.api.pipeline import CONTEXT_CONTAINER
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import read, imprint
+from ayon_houdini.api.pipeline import CONTEXT_CONTAINER
from ayon_core.pipeline import CreatedInstance, AutoCreator
import hou
diff --git a/client/ayon_core/hosts/houdini/plugins/inventory/set_camera_resolution.py b/server_addon/houdini/client/ayon_houdini/plugins/inventory/set_camera_resolution.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/inventory/set_camera_resolution.py
rename to server_addon/houdini/client/ayon_houdini/plugins/inventory/set_camera_resolution.py
index 4cebd537bb..e2f8fcfa9b 100644
--- a/client/ayon_core/hosts/houdini/plugins/inventory/set_camera_resolution.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/inventory/set_camera_resolution.py
@@ -1,5 +1,5 @@
from ayon_core.pipeline import InventoryAction
-from ayon_core.hosts.houdini.api.lib import (
+from ayon_houdini.api.lib import (
get_camera_from_container,
set_camera_resolution
)
diff --git a/client/ayon_core/hosts/houdini/plugins/load/actions.py b/server_addon/houdini/client/ayon_houdini/plugins/load/actions.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/load/actions.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/actions.py
index 3e9cc35504..5fe545ced9 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/actions.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/actions.py
@@ -2,10 +2,10 @@
"""
-from ayon_core.pipeline import load
+from ayon_houdini.api import plugin
-class SetFrameRangeLoader(load.LoaderPlugin):
+class SetFrameRangeLoader(plugin.HoudiniLoader):
"""Set frame range excluding pre- and post-handles"""
product_types = {
@@ -42,7 +42,7 @@ class SetFrameRangeLoader(load.LoaderPlugin):
hou.playbar.setPlaybackRange(start, end)
-class SetFrameRangeWithHandlesLoader(load.LoaderPlugin):
+class SetFrameRangeWithHandlesLoader(plugin.HoudiniLoader):
"""Set frame range including pre- and post-handles"""
product_types = {
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_alembic.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_alembic.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/load/load_alembic.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_alembic.py
index 5f04781501..7db2fe93ed 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_alembic.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_alembic.py
@@ -1,12 +1,12 @@
import os
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class AbcLoader(load.LoaderPlugin):
+class AbcLoader(plugin.HoudiniLoader):
"""Load Alembic"""
product_types = {"model", "animation", "pointcache", "gpuCache"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_alembic_archive.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_alembic_archive.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/load/load_alembic_archive.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_alembic_archive.py
index a231bd9993..a34a43e48a 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_alembic_archive.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_alembic_archive.py
@@ -1,12 +1,13 @@
+
import os
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class AbcArchiveLoader(load.LoaderPlugin):
+class AbcArchiveLoader(plugin.HoudiniLoader):
"""Load Alembic as full geometry network hierarchy """
product_types = {"model", "animation", "pointcache", "gpuCache"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_ass.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_ass.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/load/load_ass.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_ass.py
index 6e0922e305..5fd97bc2a6 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_ass.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_ass.py
@@ -1,14 +1,14 @@
import os
import re
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class AssLoader(load.LoaderPlugin):
+class AssLoader(plugin.HoudiniLoader):
"""Load .ass with Arnold Procedural"""
product_types = {"ass"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_bgeo.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_bgeo.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/load/load_bgeo.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_bgeo.py
index a318b71963..7119612cda 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_bgeo.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_bgeo.py
@@ -2,14 +2,14 @@
import os
import re
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class BgeoLoader(load.LoaderPlugin):
+class BgeoLoader(plugin.HoudiniLoader):
"""Load bgeo files to Houdini."""
label = "Load bgeo"
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_camera.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_camera.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/load/load_camera.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_camera.py
index b7912f88f1..b597519813 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_camera.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_camera.py
@@ -1,16 +1,15 @@
-from ayon_core.pipeline import (
- load,
- get_representation_path,
-)
-from ayon_core.hosts.houdini.api import pipeline
+import hou
+from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.houdini.api.lib import (
+from ayon_houdini.api import (
+ pipeline,
+ plugin
+)
+from ayon_houdini.api.lib import (
set_camera_resolution,
get_camera_from_container
)
-import hou
-
ARCHIVE_EXPRESSION = ('__import__("_alembic_hom_extensions")'
'.alembicGetCameraDict')
@@ -84,7 +83,7 @@ def transfer_non_default_values(src, dest, ignore=None):
dest_parm.setFromParm(parm)
-class CameraLoader(load.LoaderPlugin):
+class CameraLoader(plugin.HoudiniLoader):
"""Load camera from an Alembic file"""
product_types = {"camera"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_fbx.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_fbx.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/load/load_fbx.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_fbx.py
index 398019a3bd..273ca43bc4 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_fbx.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_fbx.py
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-
"""Fbx Loader for houdini. """
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class FbxLoader(load.LoaderPlugin):
+class FbxLoader(plugin.HoudiniLoader):
"""Load fbx files. """
label = "Load FBX"
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_filepath.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_filepath.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/load/load_filepath.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_filepath.py
index d189a027fd..2ce9bd7ffb 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_filepath.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_filepath.py
@@ -1,13 +1,14 @@
import os
import re
-
-from ayon_core.pipeline import load
-from ayon_core.hosts.houdini.api import pipeline
-
import hou
+from ayon_houdini.api import (
+ pipeline,
+ plugin
+)
-class FilePathLoader(load.LoaderPlugin):
+
+class FilePathLoader(plugin.HoudiniLoader):
"""Load a managed filepath to a null node.
This is useful if for a particular workflow there is no existing loader
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_hda.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_hda.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/load/load_hda.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_hda.py
index 10fc03be03..b04e211aa4 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_hda.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_hda.py
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-
import os
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class HdaLoader(load.LoaderPlugin):
+class HdaLoader(plugin.HoudiniLoader):
"""Load Houdini Digital Asset file."""
product_types = {"hda"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_image.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_image.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/load/load_image.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_image.py
index dfbd3c11eb..9d4cd2fb18 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_image.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_image.py
@@ -1,14 +1,16 @@
import os
import re
+import hou
from ayon_core.pipeline import (
- load,
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.houdini.api import lib, pipeline
-
-import hou
+from ayon_houdini.api import (
+ pipeline,
+ plugin,
+ lib
+)
def get_image_avalon_container():
@@ -42,7 +44,7 @@ def get_image_avalon_container():
return image_container
-class ImageLoader(load.LoaderPlugin):
+class ImageLoader(plugin.HoudiniLoader):
"""Load images into COP2"""
product_types = {
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_redshift_proxy.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_redshift_proxy.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/load/load_redshift_proxy.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_redshift_proxy.py
index f09856a970..514dbe109f 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_redshift_proxy.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_redshift_proxy.py
@@ -1,16 +1,17 @@
import os
import re
-from ayon_core.pipeline import (
- load,
- get_representation_path,
-)
-from ayon_core.hosts.houdini.api import pipeline
-from ayon_core.pipeline.load import LoadError
-
import hou
+from ayon_core.pipeline import get_representation_path
+from ayon_core.pipeline.load import LoadError
-class RedshiftProxyLoader(load.LoaderPlugin):
+from ayon_houdini.api import (
+ pipeline,
+ plugin
+)
+
+
+class RedshiftProxyLoader(plugin.HoudiniLoader):
"""Load Redshift Proxy"""
product_types = {"redshiftproxy"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_usd_layer.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_layer.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/load/load_usd_layer.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_layer.py
index 4e6954c531..fb302fd943 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_usd_layer.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_layer.py
@@ -1,12 +1,14 @@
from ayon_core.pipeline import (
- load,
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.houdini.api import lib
+from ayon_houdini.api import (
+ plugin,
+ lib
+)
-class USDSublayerLoader(load.LoaderPlugin):
+class USDSublayerLoader(plugin.HoudiniLoader):
"""Sublayer USD file in Solaris"""
product_types = {
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_usd_reference.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_reference.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/load/load_usd_reference.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_reference.py
index 7e82a6abd0..690f6ce187 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_usd_reference.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_reference.py
@@ -1,12 +1,14 @@
from ayon_core.pipeline import (
- load,
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.houdini.api import lib
+from ayon_houdini.api import (
+ plugin,
+ lib
+)
-class USDReferenceLoader(load.LoaderPlugin):
+class USDReferenceLoader(plugin.HoudiniLoader):
"""Reference USD file in Solaris"""
product_types = {
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_usd_sop.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_sop.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/load/load_usd_sop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_sop.py
index 506f6140bf..347e3283de 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_usd_sop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_usd_sop.py
@@ -1,10 +1,12 @@
import os
-from ayon_core.pipeline import load
-from ayon_core.hosts.houdini.api import pipeline
+from ayon_houdini.api import (
+ pipeline,
+ plugin
+)
-class SopUsdImportLoader(load.LoaderPlugin):
+class SopUsdImportLoader(plugin.HoudiniLoader):
"""Load USD to SOPs via `usdimport`"""
label = "Load USD to SOPs"
diff --git a/client/ayon_core/hosts/houdini/plugins/load/load_vdb.py b/server_addon/houdini/client/ayon_houdini/plugins/load/load_vdb.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/load/load_vdb.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/load_vdb.py
index 0008f0d5f8..9014f4c5e2 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/load_vdb.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/load_vdb.py
@@ -1,14 +1,14 @@
import os
import re
-from ayon_core.pipeline import (
- load,
- get_representation_path,
+from ayon_core.pipeline import get_representation_path
+from ayon_houdini.api import (
+ pipeline,
+ plugin
)
-from ayon_core.hosts.houdini.api import pipeline
-class VdbLoader(load.LoaderPlugin):
+class VdbLoader(plugin.HoudiniLoader):
"""Load VDB"""
product_types = {"vdbcache"}
diff --git a/client/ayon_core/hosts/houdini/plugins/load/show_usdview.py b/server_addon/houdini/client/ayon_houdini/plugins/load/show_usdview.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/load/show_usdview.py
rename to server_addon/houdini/client/ayon_houdini/plugins/load/show_usdview.py
index 0158a6b963..4e18bc038a 100644
--- a/client/ayon_core/hosts/houdini/plugins/load/show_usdview.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/load/show_usdview.py
@@ -3,10 +3,10 @@ import platform
import subprocess
from ayon_core.lib.vendor_bin_utils import find_executable
-from ayon_core.pipeline import load
+from ayon_houdini.api import plugin
-class ShowInUsdview(load.LoaderPlugin):
+class ShowInUsdview(plugin.HoudiniLoader):
"""Open USD file in usdview"""
label = "Show in usdview"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_active_state.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_active_state.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py
index 7fda94b288..e09a347e9f 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_active_state.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_active_state.py
@@ -1,8 +1,10 @@
-import pyblish.api
import hou
+import pyblish.api
+from ayon_houdini.api import plugin
-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
@@ -14,7 +16,6 @@ class CollectInstanceActiveState(pyblish.api.InstancePlugin):
order = pyblish.api.CollectorOrder + 0.299
families = ["*"]
- hosts = ["houdini"]
label = "Instance Active State"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_arnold_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_arnold_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py
index 53a3e52717..10c6d91d26 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_arnold_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_arnold_rop.py
@@ -4,12 +4,14 @@ import re
import hou
import pyblish.api
-from ayon_core.hosts.houdini.api import colorspace
-from ayon_core.hosts.houdini.api.lib import (
- evalParmNoFrame, get_color_management_preferences)
+from ayon_houdini.api import colorspace, plugin
+from ayon_houdini.api.lib import (
+ get_color_management_preferences,
+ evalParmNoFrame
+)
-class CollectArnoldROPRenderProducts(pyblish.api.InstancePlugin):
+class CollectArnoldROPRenderProducts(plugin.HoudiniInstancePlugin):
"""Collect Arnold ROP Render Products
Collects the instance.data["files"] for the render products.
@@ -23,7 +25,6 @@ class CollectArnoldROPRenderProducts(pyblish.api.InstancePlugin):
# This specific order value is used so that
# this plugin runs after CollectFrames
order = pyblish.api.CollectorOrder + 0.11
- hosts = ["houdini"]
families = ["arnold_rop"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_asset_handles.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_asset_handles.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py
index 943a29952e..db9bde8595 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_asset_handles.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_asset_handles.py
@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
"""Collector plugin for frames data on ROP instances."""
-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.
@@ -23,8 +23,6 @@ class CollectAssetHandles(pyblish.api.InstancePlugin,
the exclusive frame range and actual handle ranges.
"""
- hosts = ["houdini"]
-
# This specific order value is used so that
# this plugin runs after CollectAnatomyInstanceData
order = pyblish.api.CollectorOrder + 0.499
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py
index e1782b2bb3..ecfebccfef 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_cache_farm.py
@@ -1,10 +1,13 @@
import os
-import pyblish.api
import hou
-from ayon_core.hosts.houdini.api import lib
+import pyblish.api
+from ayon_houdini.api import (
+ lib,
+ plugin
+)
-class CollectDataforCache(pyblish.api.InstancePlugin):
+class CollectDataforCache(plugin.HoudiniInstancePlugin):
"""Collect data for caching to Deadline."""
# Run after Collect Frames
@@ -12,7 +15,6 @@ class CollectDataforCache(pyblish.api.InstancePlugin):
families = ["ass", "pointcache",
"mantraifd", "redshiftproxy",
"vdbcache", "model"]
- hosts = ["houdini"]
targets = ["local", "remote"]
label = "Collect Data for Cache"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_chunk_size.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_chunk_size.py
similarity index 91%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_chunk_size.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_chunk_size.py
index f0913f2f0a..6ff53b7695 100644
--- a/client/ayon_core/hosts/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."""
@@ -11,7 +12,6 @@ class CollectChunkSize(pyblish.api.InstancePlugin,
families = ["ass", "pointcache",
"vdbcache", "mantraifd",
"redshiftproxy", "model"]
- hosts = ["houdini"]
targets = ["local", "remote"]
label = "Collect Chunk Size"
chunk_size = 999999
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_current_file.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_current_file.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py
index 7b55778803..8e339e0e04 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_current_file.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_current_file.py
@@ -2,14 +2,14 @@ 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
label = "Houdini Current File"
- hosts = ["houdini"]
def process(self, context):
"""Inject the current working file"""
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_farm_instances.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_farm_instances.py
similarity index 90%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_farm_instances.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_farm_instances.py
index 586aa2da57..8fdae06f90 100644
--- a/client/ayon_core/hosts/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
@@ -11,7 +12,6 @@ class CollectFarmInstances(pyblish.api.InstancePlugin):
"arnold_rop",
"vray_rop"]
- hosts = ["houdini"]
targets = ["local", "remote"]
label = "Collect farm instances"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_frames.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_frames.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_frames.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_frames.py
index b38ebc6e2f..3378657bfd 100644
--- a/client/ayon_core/hosts/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_core.hosts.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/client/ayon_core/hosts/houdini/plugins/publish/collect_inputs.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_inputs.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py
index 6cf6bbf430..f2904a68f6 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_inputs.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_inputs.py
@@ -1,8 +1,8 @@
from collections import deque
import pyblish.api
-
from ayon_core.pipeline import registered_host
+from ayon_houdini.api import plugin
def get_container_members(container):
@@ -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
@@ -91,7 +91,6 @@ class CollectUpstreamInputs(pyblish.api.InstancePlugin):
label = "Collect Inputs"
order = pyblish.api.CollectorOrder + 0.4
- hosts = ["houdini"]
def process(self, instance):
# We can't get the "inputAncestors" directly from the ROP
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_instances_type.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_type.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_instances_type.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_type.py
index 07851387fe..542abf8139 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_instances_type.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_type.py
@@ -10,7 +10,6 @@ class CollectPointcacheType(pyblish.api.InstancePlugin):
"""Collect data type for different instances."""
order = pyblish.api.CollectorOrder
- hosts = ["houdini"]
families = ["pointcache", "model"]
label = "Collect instances types"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_instances_usd_layered.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_usd_layered.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_instances_usd_layered.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_instances_usd_layered.py
index 9377a9fcd0..4f85a629fb 100644
--- a/client/ayon_core/hosts/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_core.hosts.houdini.api import lib
-import ayon_core.hosts.houdini.api.usd as hou_usdlib
from ayon_core.pipeline import usdlib
+from ayon_houdini.api import lib, plugin
+import ayon_houdini.api.usd as hou_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
@@ -32,7 +32,6 @@ class CollectInstancesUsdLayered(pyblish.api.ContextPlugin):
order = pyblish.api.CollectorOrder - 0.01
label = "Collect Instances (USD Configured Layers)"
- hosts = ["houdini"]
def process(self, context):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_karma_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_karma_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py
index 662ed7ae30..60fec9d2e0 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_karma_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_karma_rop.py
@@ -4,16 +4,17 @@ import os
import hou
import pyblish.api
-from ayon_core.hosts.houdini.api.lib import (
+from ayon_houdini.api.lib import (
evalParmNoFrame,
get_color_management_preferences
)
-from ayon_core.hosts.houdini.api import (
- colorspace
+from ayon_houdini.api import (
+ 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.
@@ -27,7 +28,6 @@ class CollectKarmaROPRenderProducts(pyblish.api.InstancePlugin):
# This specific order value is used so that
# this plugin runs after CollectFrames
order = pyblish.api.CollectorOrder + 0.11
- hosts = ["houdini"]
families = ["karma_rop"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_local_render_instances.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_local_render_instances.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_local_render_instances.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_local_render_instances.py
index 474002e1ee..259b2378bb 100644
--- a/client/ayon_core/hosts/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.
@@ -22,7 +23,6 @@ class CollectLocalRenderInstances(pyblish.api.InstancePlugin):
"arnold_rop",
"vray_rop"]
- hosts = ["houdini"]
label = "Collect local render instances"
use_deadline_aov_filter = False
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_mantra_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_mantra_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py
index 7b247768fc..f7feeee63b 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_mantra_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_mantra_rop.py
@@ -4,16 +4,17 @@ import os
import hou
import pyblish.api
-from ayon_core.hosts.houdini.api.lib import (
+from ayon_houdini.api.lib import (
evalParmNoFrame,
get_color_management_preferences
)
-from ayon_core.hosts.houdini.api import (
- colorspace
+from ayon_houdini.api import (
+ colorspace,
+ plugin
)
-class CollectMantraROPRenderProducts(pyblish.api.InstancePlugin):
+class CollectMantraROPRenderProducts(plugin.HoudiniInstancePlugin):
"""Collect Mantra Render Products
Collects the instance.data["files"] for the render products.
@@ -27,7 +28,6 @@ class CollectMantraROPRenderProducts(pyblish.api.InstancePlugin):
# This specific order value is used so that
# this plugin runs after CollectFrames
order = pyblish.api.CollectorOrder + 0.11
- hosts = ["houdini"]
families = ["mantra_rop"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_output_node.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_output_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_output_node.py
index 289222f32b..ff51669376 100644
--- a/client/ayon_core/hosts/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_core.pipeline.publish import KnownPublishError
+from ayon_houdini.api import plugin
-class CollectOutputSOPPath(pyblish.api.InstancePlugin):
+class CollectOutputSOPPath(plugin.HoudiniInstancePlugin):
"""Collect the out node's SOP/COP Path value."""
order = pyblish.api.CollectorOrder
@@ -19,7 +19,6 @@ class CollectOutputSOPPath(pyblish.api.InstancePlugin):
"model"
]
- hosts = ["houdini"]
label = "Collect Output Node Path"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_redshift_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_redshift_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py
index ce90ae2413..96cb6ebeaf 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_redshift_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_redshift_rop.py
@@ -4,16 +4,17 @@ import os
import hou
import pyblish.api
-from ayon_core.hosts.houdini.api.lib import (
+from ayon_houdini.api.lib import (
evalParmNoFrame,
get_color_management_preferences
)
-from ayon_core.hosts.houdini.api import (
- colorspace
+from ayon_houdini.api import (
+ colorspace,
+ plugin
)
-class CollectRedshiftROPRenderProducts(pyblish.api.InstancePlugin):
+class CollectRedshiftROPRenderProducts(plugin.HoudiniInstancePlugin):
"""Collect USD Render Products
Collects the instance.data["files"] for the render products.
@@ -27,7 +28,6 @@ class CollectRedshiftROPRenderProducts(pyblish.api.InstancePlugin):
# This specific order value is used so that
# this plugin runs after CollectFrames
order = pyblish.api.CollectorOrder + 0.11
- hosts = ["houdini"]
families = ["redshift_rop"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_remote_publish.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py
similarity index 83%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_remote_publish.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py
index 5d459f525e..e695b57518 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_remote_publish.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_remote_publish.py
@@ -1,16 +1,15 @@
+import hou
import pyblish.api
-import hou
from ayon_core.pipeline.publish import RepairAction
-from ayon_core.hosts.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
families = ["*"]
- hosts = ["houdini"]
targets = ["deadline"]
label = "Remote Publish Submission Settings"
actions = [RepairAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_render_products.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_render_products.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_render_products.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_render_products.py
index fcd80e0082..e84f6c6f84 100644
--- a/client/ayon_core/hosts/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,12 +42,11 @@ 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"
order = pyblish.api.CollectorOrder + 0.4
- hosts = ["houdini"]
families = ["usdrender"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_review_data.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_review_data.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_review_data.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_review_data.py
index ed2de785a2..cca55463e6 100644
--- a/client/ayon_core/hosts/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"
@@ -10,7 +11,6 @@ class CollectHoudiniReviewData(pyblish.api.InstancePlugin):
# this plugin runs after CollectRopFrameRange
# Also after CollectLocalRenderInstances
order = pyblish.api.CollectorOrder + 0.13
- hosts = ["houdini"]
families = ["review"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_reviewable_instances.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_reviewable_instances.py
similarity index 84%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_reviewable_instances.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_reviewable_instances.py
index 78dc5fe11a..84cd8377a8 100644
--- a/client/ayon_core/hosts/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/client/ayon_core/hosts/houdini/plugins/publish/collect_rop_frame_range.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py
similarity index 88%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_rop_frame_range.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py
index 44afaf2466..c0f8d7aef9 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_rop_frame_range.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_rop_frame_range.py
@@ -2,13 +2,12 @@
"""Collector plugin for frames data on ROP instances."""
import hou # noqa
import pyblish.api
-from ayon_core.hosts.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"]
order = pyblish.api.CollectorOrder
label = "Collect RopNode Frame Range"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_staticmesh_type.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py
similarity index 84%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_staticmesh_type.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py
index db9efec7a1..1aab655532 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_staticmesh_type.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_staticmesh_type.py
@@ -2,12 +2,12 @@
"""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"]
families = ["staticMesh"]
label = "Collect type of staticMesh"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_usd_bootstrap.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_bootstrap.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_usd_bootstrap.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_bootstrap.py
index cd82f1679a..5067b9aab2 100644
--- a/client/ayon_core/hosts/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_core.pipeline import usdlib, KnownPublishError
+from ayon_houdini.api import plugin
-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
@@ -21,7 +21,6 @@ class CollectUsdBootstrap(pyblish.api.InstancePlugin):
order = pyblish.api.CollectorOrder + 0.35
label = "Collect USD Bootstrap"
- hosts = ["houdini"]
families = ["usd", "usd.layered"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_usd_layers.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_usd_layers.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py
index 93add6806e..7ecf5fbb02 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_usd_layers.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_usd_layers.py
@@ -1,17 +1,15 @@
import os
-
-import pyblish.api
-import ayon_core.hosts.houdini.api.usd as usdlib
-
import hou
+import pyblish.api
+from ayon_houdini.api import plugin
+import ayon_houdini.api.usd as usdlib
-class CollectUsdLayers(pyblish.api.InstancePlugin):
+class CollectUsdLayers(plugin.HoudiniInstancePlugin):
"""Collect the USD Layers that have configured save paths."""
order = pyblish.api.CollectorOrder + 0.35
label = "Collect USD Layers"
- hosts = ["houdini"]
families = ["usd"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_vray_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_vray_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py
index c39b1db103..2f9c2bb18e 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_vray_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_vray_rop.py
@@ -4,16 +4,17 @@ import os
import hou
import pyblish.api
-from ayon_core.hosts.houdini.api.lib import (
+from ayon_houdini.api.lib import (
evalParmNoFrame,
get_color_management_preferences
)
-from ayon_core.hosts.houdini.api import (
- colorspace
+from ayon_houdini.api import (
+ colorspace,
+ plugin
)
-class CollectVrayROPRenderProducts(pyblish.api.InstancePlugin):
+class CollectVrayROPRenderProducts(plugin.HoudiniInstancePlugin):
"""Collect Vray Render Products
Collects the instance.data["files"] for the render products.
@@ -27,7 +28,6 @@ class CollectVrayROPRenderProducts(pyblish.api.InstancePlugin):
# This specific order value is used so that
# this plugin runs after CollectFrames
order = pyblish.api.CollectorOrder + 0.11
- hosts = ["houdini"]
families = ["vray_rop"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_workfile.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py
similarity index 91%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_workfile.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py
index aa533bcf1b..8d0939a803 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_workfile.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workfile.py
@@ -1,14 +1,13 @@
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
label = "Houdini Workfile Data"
- hosts = ["houdini"]
families = ["workfile"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_workscene_fps.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py
similarity index 75%
rename from client/ayon_core/hosts/houdini/plugins/publish/collect_workscene_fps.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py
index 6f6cc978cd..0091eb0abb 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/collect_workscene_fps.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/collect_workscene_fps.py
@@ -1,13 +1,13 @@
-import pyblish.api
import hou
+import pyblish.api
+from ayon_houdini.api import plugin
-class CollectWorksceneFPS(pyblish.api.ContextPlugin):
+class CollectWorksceneFPS(plugin.HoudiniContextPlugin):
"""Get the FPS of the work scene."""
label = "Workscene FPS"
order = pyblish.api.CollectorOrder
- hosts = ["houdini"]
def process(self, context):
fps = hou.fps()
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_active_view_thumbnail.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_active_view_thumbnail.py
similarity index 88%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_active_view_thumbnail.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_active_view_thumbnail.py
index aedcb1da02..c4d51c0808 100644
--- a/client/ayon_core/hosts/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_core.hosts.houdini.api import lib
-from ayon_core.hosts.houdini.api.pipeline import IS_HEADLESS
+import pyblish.api
+from ayon_houdini.api import lib, plugin
+from ayon_houdini.api.pipeline import IS_HEADLESS
-class ExtractActiveViewThumbnail(publish.Extractor):
+class ExtractActiveViewThumbnail(plugin.HoudiniExtractorPlugin):
"""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
@@ -16,7 +15,6 @@ class ExtractActiveViewThumbnail(publish.Extractor):
order = pyblish.api.ExtractorOrder + 0.49
label = "Extract Active View Thumbnail"
families = ["workfile"]
- hosts = ["houdini"]
def process(self, instance):
if IS_HEADLESS:
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_alembic.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py
similarity index 89%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_alembic.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py
index 7ae476d2b4..e82f07284a 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_alembic.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_alembic.py
@@ -1,18 +1,16 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractAlembic(publish.Extractor):
+class ExtractAlembic(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract Alembic"
- hosts = ["houdini"]
families = ["abc", "camera"]
targets = ["local", "remote"]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_ass.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_ass.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py
index 24b956ad81..a796bbf4b3 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_ass.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_ass.py
@@ -1,19 +1,17 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractAss(publish.Extractor):
+class ExtractAss(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder + 0.1
label = "Extract Ass"
families = ["ass"]
- hosts = ["houdini"]
targets = ["local", "remote"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_bgeo.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py
similarity index 85%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_bgeo.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py
index 448cf97848..ab8837065d 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_bgeo.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_bgeo.py
@@ -1,19 +1,15 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-from ayon_core.hosts.houdini.api import lib
-
-import hou
+from ayon_houdini.api import lib, plugin
-class ExtractBGEO(publish.Extractor):
+class ExtractBGEO(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract BGEO"
- hosts = ["houdini"]
families = ["bgeo"]
def process(self, instance):
@@ -32,7 +28,7 @@ class ExtractBGEO(publish.Extractor):
file_name, staging_dir))
# write files
- render_rop(ropnode)
+ lib.render_rop(ropnode)
output = instance.data["frames"]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_composite.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_composite.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py
index 0fab69ef4a..cab462aef6 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_composite.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_composite.py
@@ -1,18 +1,17 @@
import os
+import hou
import pyblish.api
from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop, splitext
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop, splitext
-class ExtractComposite(publish.Extractor,
+class ExtractComposite(plugin.HoudiniExtractorPlugin,
publish.ColormanagedPyblishPluginMixin):
order = pyblish.api.ExtractorOrder
label = "Extract Composite (Image Sequence)"
- hosts = ["houdini"]
families = ["imagesequence"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_fbx.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py
similarity index 90%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_fbx.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py
index 7ef004d7cb..49b3fa07ca 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_fbx.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_fbx.py
@@ -2,18 +2,16 @@
"""Fbx Extractor for houdini. """
import os
-import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-
import hou
+import pyblish.api
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractFBX(publish.Extractor):
+class ExtractFBX(plugin.HoudiniExtractorPlugin):
label = "Extract FBX"
families = ["fbx"]
- hosts = ["houdini"]
order = pyblish.api.ExtractorOrder + 0.1
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_hda.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_hda.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py
index 5fe83e0dcf..e4449d11f8 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_hda.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_hda.py
@@ -1,16 +1,15 @@
# -*- coding: utf-8 -*-
import os
from pprint import pformat
-import pyblish.api
-from ayon_core.pipeline import publish
import hou
+import pyblish.api
+from ayon_houdini.api import plugin
-class ExtractHDA(publish.Extractor):
+class ExtractHDA(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract HDA"
- hosts = ["houdini"]
families = ["hda"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_mantra_ifd.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_mantra_ifd.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py
index f0bcf4b371..b424f2e452 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_mantra_ifd.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_mantra_ifd.py
@@ -1,17 +1,15 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-
-import hou
+from ayon_houdini.api import plugin
-class ExtractMantraIFD(publish.Extractor):
+class ExtractMantraIFD(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract Mantra ifd"
- hosts = ["houdini"]
families = ["mantraifd"]
targets = ["local", "remote"]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_opengl.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_opengl.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py
index 26a216e335..bee1bf871f 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_opengl.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_opengl.py
@@ -1,20 +1,19 @@
import os
+import hou
import pyblish.api
from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractOpenGL(publish.Extractor,
+class ExtractOpenGL(plugin.HoudiniExtractorPlugin,
publish.ColormanagedPyblishPluginMixin):
order = pyblish.api.ExtractorOrder - 0.01
label = "Extract OpenGL"
families = ["review"]
- hosts = ["houdini"]
def process(self, instance):
ropnode = hou.node(instance.data.get("instance_node"))
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_redshift_proxy.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py
similarity index 90%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_redshift_proxy.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py
index e08a73ae8e..3e8a79df00 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_redshift_proxy.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_redshift_proxy.py
@@ -1,19 +1,17 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractRedshiftProxy(publish.Extractor):
+class ExtractRedshiftProxy(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder + 0.1
label = "Extract Redshift Proxy"
families = ["redshiftproxy"]
- hosts = ["houdini"]
targets = ["local", "remote"]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_render.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py
index 7b4762a25f..8ff8590650 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_render.py
@@ -1,16 +1,16 @@
+import os
+import hou
+
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-import hou
-import os
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractRender(publish.Extractor):
+class ExtractRender(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract Render"
- hosts = ["houdini"]
families = ["mantra_rop",
"karma_rop",
"redshift_rop",
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_usd.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py
similarity index 87%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_usd.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py
index 0aeed06643..40e6211e63 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_usd.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd.py
@@ -1,17 +1,16 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-import hou
-class ExtractUSD(publish.Extractor):
+class ExtractUSD(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract USD"
- hosts = ["houdini"]
families = ["usd",
"usdModel",
"usdSetDress"]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_usd_layered.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_usd_layered.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py
index 2e5c9a892c..6a377c57cf 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_usd_layered.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_usd_layered.py
@@ -7,12 +7,10 @@ import hou
import ayon_api
import pyblish.api
-from ayon_core.pipeline import (
- get_representation_path,
- publish,
-)
-import ayon_core.hosts.houdini.api.usd as hou_usdlib
-from ayon_core.hosts.houdini.api.lib import render_rop
+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
class ExitStack(object):
@@ -154,11 +152,10 @@ def parm_values(overrides):
parm.set(value)
-class ExtractUSDLayered(publish.Extractor):
+class ExtractUSDLayered(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder
label = "Extract Layered USD"
- hosts = ["houdini"]
families = ["usdLayered", "usdShade"]
# Force Output Processors so it will always save any file
@@ -312,3 +309,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/client/ayon_core/hosts/houdini/plugins/publish/extract_vdb_cache.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py
similarity index 89%
rename from client/ayon_core/hosts/houdini/plugins/publish/extract_vdb_cache.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py
index 4544d33e57..a944d81e9b 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/extract_vdb_cache.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/extract_vdb_cache.py
@@ -1,19 +1,17 @@
import os
+import hou
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.houdini.api.lib import render_rop
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.lib import render_rop
-class ExtractVDBCache(publish.Extractor):
+class ExtractVDBCache(plugin.HoudiniExtractorPlugin):
order = pyblish.api.ExtractorOrder + 0.1
label = "Extract VDB Cache"
families = ["vdbcache"]
- hosts = ["houdini"]
def process(self, instance):
if instance.data.get("farm"):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/help/validate_vdb_output_node.xml b/server_addon/houdini/client/ayon_houdini/plugins/publish/help/validate_vdb_output_node.xml
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/publish/help/validate_vdb_output_node.xml
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/help/validate_vdb_output_node.xml
index eb83bfffe3..8aac9a6a07 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/help/validate_vdb_output_node.xml
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/help/validate_vdb_output_node.xml
@@ -25,4 +25,4 @@ ROP node `{rop_path}` is set to export SOP path `{sop_path}`.
-
\ No newline at end of file
+
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/increment_current_file.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py
similarity index 86%
rename from client/ayon_core/hosts/houdini/plugins/publish/increment_current_file.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py
index 3e9291d5c2..878500f605 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/increment_current_file.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/increment_current_file.py
@@ -2,11 +2,15 @@ import pyblish.api
from ayon_core.lib import version_up
from ayon_core.pipeline import registered_host
-from ayon_core.pipeline.publish import get_errored_plugins_from_context
-from ayon_core.pipeline.publish import KnownPublishError
+from ayon_core.pipeline.publish import (
+ get_errored_plugins_from_context,
+ KnownPublishError
+)
+
+from ayon_houdini.api import plugin
-class IncrementCurrentFile(pyblish.api.ContextPlugin):
+class IncrementCurrentFile(plugin.HoudiniContextPlugin):
"""Increment the current file.
Saves the current scene with an increased version number.
@@ -15,7 +19,6 @@ class IncrementCurrentFile(pyblish.api.ContextPlugin):
label = "Increment current file"
order = pyblish.api.IntegratorOrder + 9.0
- hosts = ["houdini"]
families = ["workfile",
"usdrender",
"mantra_rop",
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/save_scene.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py
similarity index 89%
rename from client/ayon_core/hosts/houdini/plugins/publish/save_scene.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py
index 7c453038ea..e0734da5d1 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/save_scene.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/save_scene.py
@@ -2,13 +2,14 @@ import pyblish.api
from ayon_core.pipeline import registered_host
+from ayon_houdini.api import plugin
-class SaveCurrentScene(pyblish.api.ContextPlugin):
+
+class SaveCurrentScene(plugin.HoudiniContextPlugin):
"""Save current scene"""
label = "Save current file"
order = pyblish.api.ExtractorOrder - 0.49
- hosts = ["houdini"]
def process(self, context):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_abc_primitive_to_detail.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_abc_primitive_to_detail.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_abc_primitive_to_detail.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_abc_primitive_to_detail.py
index 18a459bf7b..51885a963e 100644
--- a/client/ayon_core/hosts/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,13 @@
# -*- coding: utf-8 -*-
-import pyblish.api
-
from collections import defaultdict
+
+import pyblish.api
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-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
@@ -18,7 +20,6 @@ class ValidateAbcPrimitiveToDetail(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder + 0.1
families = ["abc"]
- hosts = ["houdini"]
label = "Validate Primitive to Detail (Abc)"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_alembic_face_sets.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_face_sets.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_alembic_face_sets.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_face_sets.py
index 40114bc40e..00ce554ff1 100644
--- a/client/ayon_core/hosts/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,10 @@
# -*- coding: utf-8 -*-
-import pyblish.api
import hou
+import pyblish.api
+from ayon_houdini.api import plugin
-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
@@ -19,7 +21,6 @@ class ValidateAlembicROPFaceSets(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder + 0.1
families = ["abc"]
- hosts = ["houdini"]
label = "Validate Alembic ROP Face Sets"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_alembic_input_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_input_node.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_alembic_input_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_alembic_input_node.py
index dbc38058e6..aab3068171 100644
--- a/client/ayon_core/hosts/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,12 @@
# -*- coding: utf-8 -*-
+import hou
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-import hou
+
+from ayon_houdini.api import plugin
-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:
@@ -15,7 +17,6 @@ class ValidateAlembicInputNode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder + 0.1
families = ["abc"]
- hosts = ["houdini"]
label = "Validate Input Node (Abc)"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_animation_settings.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_animation_settings.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py
index e28c38ece0..1cc9e24dc9 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_animation_settings.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_animation_settings.py
@@ -1,11 +1,12 @@
-import pyblish.api
-
-from ayon_core.pipeline.publish import PublishValidationError
-from ayon_core.hosts.houdini.api import lib
import hou
+import pyblish.api
+from ayon_core.pipeline.publish import PublishValidationError
-class ValidateAnimationSettings(pyblish.api.InstancePlugin):
+from ayon_houdini.api import lib, plugin
+
+
+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/client/ayon_core/hosts/houdini/plugins/publish/validate_bypass.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_bypass.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py
index 8a83ff42fb..f3856b4147 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_bypass.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_bypass.py
@@ -1,10 +1,13 @@
# -*- coding: utf-8 -*-
+import hou
+
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-import hou
+from ayon_houdini.api import plugin
-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
@@ -15,7 +18,6 @@ class ValidateBypassed(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder - 0.1
families = ["*"]
- hosts = ["houdini"]
label = "Validate ROP Bypass"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_camera_rop.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_camera_rop.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py
index ad4ace988a..f21addb11d 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_camera_rop.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_camera_rop.py
@@ -3,13 +3,14 @@
import pyblish.api
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-class ValidateCameraROP(pyblish.api.InstancePlugin):
+
+class ValidateCameraROP(plugin.HoudiniInstancePlugin):
"""Validate Camera ROP settings."""
order = pyblish.api.ValidatorOrder
families = ["camera"]
- hosts = ["houdini"]
label = "Camera ROP"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_cop_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_cop_output_node.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_cop_output_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_cop_output_node.py
index 91bd36018a..1d63e15d90 100644
--- a/client/ayon_core/hosts/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,13 @@
# -*- coding: utf-8 -*-
import hou
-import pyblish.api
+import pyblish.api
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-class ValidateCopOutputNode(pyblish.api.InstancePlugin):
+
+class ValidateCopOutputNode(plugin.HoudiniInstancePlugin):
"""Validate the instance COP Output Node.
This will ensure:
@@ -17,7 +19,6 @@ class ValidateCopOutputNode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["imagesequence"]
- hosts = ["houdini"]
label = "Validate COP Output Node"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_export_is_a_single_frame.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_export_is_a_single_frame.py
index b188055bc7..b26c60320b 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_export_is_a_single_frame.py
@@ -6,7 +6,7 @@ from ayon_core.pipeline import (
OptionalPyblishPluginMixin
)
from ayon_core.pipeline.publish import ValidateContentsOrder
-from ayon_core.hosts.houdini.api.action import SelectInvalidAction
+from ayon_houdini.api.action import SelectInvalidAction
class ValidateSingleFrame(pyblish.api.InstancePlugin,
@@ -18,7 +18,6 @@ class ValidateSingleFrame(pyblish.api.InstancePlugin,
"""
families = ["model"]
- hosts = ["houdini"]
label = "Validate Single Frame"
order = ValidateContentsOrder + 0.1
actions = [SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_fbx_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_fbx_output_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py
index 08eaa182c0..1c236bb8f7 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_fbx_output_node.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_fbx_output_node.py
@@ -1,15 +1,16 @@
# -*- coding: utf-8 -*-
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.houdini.api.action import (
+from ayon_houdini.api.action import (
SelectInvalidAction,
SelectROPAction,
)
-from ayon_core.hosts.houdini.api.lib import get_obj_node_output
+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:
@@ -22,7 +23,6 @@ class ValidateFBXOutputNode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["fbx"]
- hosts = ["houdini"]
label = "Validate FBX Output Node"
actions = [SelectROPAction, SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_file_extension.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_file_extension.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py
index e9a0397a58..1b3a58f4b3 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_file_extension.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_file_extension.py
@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*-
import os
-import pyblish.api
-
-from ayon_core.hosts.houdini.api import lib
-from ayon_core.pipeline import PublishValidationError
-
import hou
+import pyblish.api
+from ayon_core.pipeline import PublishValidationError
-class ValidateFileExtension(pyblish.api.InstancePlugin):
+from ayon_houdini.api import lib, plugin
+
+
+class ValidateFileExtension(plugin.HoudiniInstancePlugin):
"""Validate the output file extension fits the output family.
File extensions:
@@ -20,7 +20,6 @@ class ValidateFileExtension(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["camera", "vdbcache"]
- hosts = ["houdini"]
label = "Output File Extension"
family_extensions = {
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_frame_range.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_frame_range.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py
index 2a3418ee7e..9435fa033a 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_frame_range.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_range.py
@@ -1,10 +1,13 @@
# -*- coding: utf-8 -*-
+import hou
+
import pyblish.api
from ayon_core.pipeline import PublishValidationError
from ayon_core.pipeline.publish import RepairAction
-from ayon_core.hosts.houdini.api.action import SelectInvalidAction
-import hou
+from ayon_houdini.api.action import SelectInvalidAction
+from ayon_houdini.api import plugin
+
class DisableUseFolderHandlesAction(RepairAction):
@@ -12,7 +15,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,
@@ -21,7 +24,6 @@ class ValidateFrameRange(pyblish.api.InstancePlugin):
"""
order = pyblish.api.ValidatorOrder - 0.1
- hosts = ["houdini"]
label = "Validate Frame Range"
actions = [DisableUseFolderHandlesAction, SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_frame_token.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_frame_token.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py
index 20fb859146..46c02ba6f2 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_frame_token.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_frame_token.py
@@ -1,10 +1,11 @@
-import pyblish.api
-
-from ayon_core.hosts.houdini.api import lib
import hou
+import pyblish.api
-class ValidateFrameToken(pyblish.api.InstancePlugin):
+from ayon_houdini.api import lib, plugin
+
+
+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/client/ayon_core/hosts/houdini/plugins/publish/validate_houdini_license_category.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_houdini_license_category.py
similarity index 91%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_houdini_license_category.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_houdini_license_category.py
index 9a68c34405..d76f8a0072 100644
--- a/client/ayon_core/hosts/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,13 @@
# -*- coding: utf-8 -*-
-import pyblish.api
-from ayon_core.pipeline import PublishValidationError
import hou
+import pyblish.api
+from ayon_core.pipeline import PublishValidationError
-class ValidateHoudiniNotApprenticeLicense(pyblish.api.InstancePlugin):
+from ayon_houdini.api import plugin
+
+
+class ValidateHoudiniNotApprenticeLicense(plugin.HoudiniInstancePlugin):
"""Validate the Houdini instance runs a non Apprentice license.
USD ROPs:
@@ -21,7 +24,6 @@ class ValidateHoudiniNotApprenticeLicense(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["usd", "abc", "fbx", "camera"]
- hosts = ["houdini"]
label = "Houdini Apprentice License"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_instance_in_context.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_instance_in_context.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py
index 26708e306b..7566dff240 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_instance_in_context.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_instance_in_context.py
@@ -1,8 +1,5 @@
# -*- coding: utf-8 -*-
"""Validate if instance asset is the same as context asset."""
-
-import pyblish.api
-from ayon_core.hosts.houdini.api.action import SelectROPAction
from ayon_core.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
@@ -10,8 +7,11 @@ from ayon_core.pipeline.publish import (
OptionalPyblishPluginMixin
)
+from ayon_houdini.api import plugin
+from ayon_houdini.api.action import SelectROPAction
-class ValidateInstanceInContextHoudini(pyblish.api.InstancePlugin,
+
+class ValidateInstanceInContextHoudini(plugin.HoudiniInstancePlugin,
OptionalPyblishPluginMixin):
"""Validator to check if instance asset match context asset.
@@ -24,7 +24,6 @@ class ValidateInstanceInContextHoudini(pyblish.api.InstancePlugin,
order = ValidateContentsOrder
label = "Instance in same Context"
optional = True
- hosts = ["houdini"]
actions = [SelectROPAction, RepairAction]
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_mesh_is_static.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mesh_is_static.py
similarity index 87%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_mesh_is_static.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mesh_is_static.py
index 9652367bfe..b6725bc36c 100644
--- a/client/ayon_core/hosts/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_core.hosts.houdini.api.action import SelectInvalidAction
-from ayon_core.hosts.houdini.api.lib import get_output_children
+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.
@@ -23,7 +23,6 @@ class ValidateMeshIsStatic(pyblish.api.InstancePlugin,
families = ["staticMesh",
"model"]
- hosts = ["houdini"]
label = "Validate Mesh is Static"
order = ValidateContentsOrder + 0.1
actions = [SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py
similarity index 89%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py
index 5e59eb505f..4573d4ba0b 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_mkpaths_toggled.py
@@ -1,14 +1,16 @@
# -*- coding: utf-8 -*-
import pyblish.api
+
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-class ValidateIntermediateDirectoriesChecked(pyblish.api.InstancePlugin):
+
+class ValidateIntermediateDirectoriesChecked(plugin.HoudiniInstancePlugin):
"""Validate Create Intermediate Directories is enabled on ROP node."""
order = pyblish.api.ValidatorOrder
families = ["pointcache", "camera", "vdbcache", "model"]
- hosts = ["houdini"]
label = "Create Intermediate Directories Checked"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_no_errors.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_no_errors.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py
index ae1e5cad27..ef66665d7b 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_no_errors.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_no_errors.py
@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
-import pyblish.api
import hou
+
+import pyblish.api
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
+
def cook_in_range(node, start, end):
current = hou.intFrame()
@@ -26,11 +29,10 @@ 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
- hosts = ["houdini"]
label = "Validate no errors"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_primitive_hierarchy_paths.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py
similarity index 98%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_primitive_hierarchy_paths.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py
index f63cb23138..9daab2a1a3 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_primitive_hierarchy_paths.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_primitive_hierarchy_paths.py
@@ -1,20 +1,20 @@
# -*- coding: utf-8 -*-
-import pyblish.api
+import hou
+
+from ayon_houdini.api import plugin
from ayon_core.pipeline import PublishValidationError
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
RepairAction,
)
-import hou
-
class AddDefaultPathAction(RepairAction):
label = "Add a default path attribute"
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
@@ -25,7 +25,6 @@ class ValidatePrimitiveHierarchyPaths(pyblish.api.InstancePlugin):
order = ValidateContentsOrder + 0.1
families = ["abc"]
- hosts = ["houdini"]
label = "Validate Prims Hierarchy Path"
actions = [AddDefaultPathAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_remote_publish.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_remote_publish.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py
index 133b45e8c3..08597c0a6f 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_remote_publish.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish.py
@@ -1,19 +1,18 @@
# -*-coding: utf-8 -*-
-import pyblish.api
+import hou
-from ayon_core.hosts.houdini.api import lib
+import pyblish.api
from ayon_core.pipeline.publish import RepairContextAction
from ayon_core.pipeline import PublishValidationError
-import hou
+from ayon_houdini.api import lib, plugin
-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
families = ["*"]
- hosts = ["houdini"]
targets = ["deadline"]
label = "Remote Publish ROP node"
actions = [RepairContextAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_remote_publish_enabled.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py
similarity index 91%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_remote_publish_enabled.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py
index d4c6e7a45e..dc5666609f 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_remote_publish_enabled.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_remote_publish_enabled.py
@@ -1,17 +1,18 @@
# -*- coding: utf-8 -*-
-import pyblish.api
-
import hou
+
+import pyblish.api
from ayon_core.pipeline.publish import RepairContextAction
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-class ValidateRemotePublishEnabled(pyblish.api.ContextPlugin):
+
+class ValidateRemotePublishEnabled(plugin.HoudiniContextPlugin):
"""Validate the remote publish node is *not* bypassed."""
order = pyblish.api.ValidatorOrder - 0.39
families = ["*"]
- hosts = ["houdini"]
targets = ["deadline"]
label = "Remote Publish ROP enabled"
actions = [RepairContextAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_review_colorspace.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_review_colorspace.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py
index fa532c5437..e96b222446 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_review_colorspace.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_review_colorspace.py
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
+import os
+import hou
+
import pyblish.api
from ayon_core.pipeline import (
PublishValidationError,
@@ -9,10 +12,9 @@ from ayon_core.pipeline.publish import (
get_plugin_settings,
apply_plugin_settings_automatically
)
-from ayon_core.hosts.houdini.api.action import SelectROPAction
-import os
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.action import SelectROPAction
class ResetViewSpaceAction(RepairAction):
@@ -20,7 +22,7 @@ class ResetViewSpaceAction(RepairAction):
icon = "mdi.monitor"
-class ValidateReviewColorspace(pyblish.api.InstancePlugin,
+class ValidateReviewColorspace(plugin.HoudiniInstancePlugin,
OptionalPyblishPluginMixin):
"""Validate Review Colorspace parameters.
@@ -29,7 +31,6 @@ class ValidateReviewColorspace(pyblish.api.InstancePlugin,
order = pyblish.api.ValidatorOrder + 0.1
families = ["review"]
- hosts = ["houdini"]
label = "Validate Review Colorspace"
actions = [ResetViewSpaceAction, SelectROPAction]
@@ -123,14 +124,14 @@ class ValidateReviewColorspace(pyblish.api.InstancePlugin,
As if OCIO is disabled the whole validation is skipped
and this repair action won't show up.
"""
- from ayon_core.hosts.houdini.api.lib import set_review_color_space
+ from ayon_houdini.api.lib import set_review_color_space
# Fall to the default value if cls.review_color_space is empty.
if not cls.review_color_space:
# cls.review_color_space is an empty string
# when the imageio/workfile setting is disabled or
# when the Review colorspace setting is empty.
- from ayon_core.hosts.houdini.api.colorspace import get_default_display_view_colorspace # noqa
+ from ayon_houdini.api.colorspace import get_default_display_view_colorspace # noqa
cls.review_color_space = get_default_display_view_colorspace()
rop_node = hou.node(instance.data["instance_node"])
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_scene_review.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_scene_review.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py
index 0b09306b0d..f45cd1c97d 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_scene_review.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_scene_review.py
@@ -1,10 +1,13 @@
# -*- coding: utf-8 -*-
-import pyblish.api
-from ayon_core.pipeline import PublishValidationError
import hou
+import pyblish.api
+from ayon_core.pipeline import PublishValidationError
-class ValidateSceneReview(pyblish.api.InstancePlugin):
+from ayon_houdini.api import plugin
+
+
+class ValidateSceneReview(plugin.HoudiniInstancePlugin):
"""Validator Some Scene Settings before publishing the review
1. Scene Path
2. Resolution
@@ -12,7 +15,6 @@ class ValidateSceneReview(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["review"]
- hosts = ["houdini"]
label = "Scene Setting for review"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py
index d67192d28e..7d37927058 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_sop_output_node.py
@@ -1,15 +1,17 @@
# -*- coding: utf-8 -*-
+import hou
+
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-from ayon_core.hosts.houdini.api.action import (
+
+from ayon_houdini.api import plugin
+from ayon_houdini.api.action import (
SelectInvalidAction,
SelectROPAction,
)
-import hou
-
-class ValidateSopOutputNode(pyblish.api.InstancePlugin):
+class ValidateSopOutputNode(plugin.HoudiniInstancePlugin):
"""Validate the instance SOP Output Node.
This will ensure:
@@ -23,7 +25,6 @@ class ValidateSopOutputNode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["pointcache", "vdbcache", "model"]
- hosts = ["houdini"]
label = "Validate Output Node (SOP)"
actions = [SelectROPAction, SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_subset_name.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_subset_name.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py
index 0481929824..dfd353bddf 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_subset_name.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_subset_name.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
"""Validator for correct naming of Static Meshes."""
-import pyblish.api
+import hou
+
from ayon_core.pipeline import (
PublishValidationError,
OptionalPyblishPluginMixin
@@ -9,24 +10,23 @@ from ayon_core.pipeline.publish import (
ValidateContentsOrder,
RepairAction,
)
-from ayon_core.hosts.houdini.api.action import SelectInvalidAction
-from ayon_core.pipeline.create import get_product_name
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.action import SelectInvalidAction
+from ayon_core.pipeline.create import get_product_name
class FixProductNameAction(RepairAction):
label = "Fix Product Name"
-class ValidateSubsetName(pyblish.api.InstancePlugin,
+class ValidateSubsetName(plugin.HoudiniInstancePlugin,
OptionalPyblishPluginMixin):
"""Validate Product name.
"""
families = ["staticMesh"]
- hosts = ["houdini"]
label = "Validate Product Name"
order = ValidateContentsOrder + 0.1
actions = [FixProductNameAction, SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_unreal_staticmesh_naming.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_unreal_staticmesh_naming.py
similarity index 91%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_unreal_staticmesh_naming.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_unreal_staticmesh_naming.py
index ae00bc9db4..a3d971695d 100644
--- a/client/ayon_core/hosts/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
+import hou
+
from ayon_core.pipeline import (
PublishValidationError,
OptionalPyblishPluginMixin
)
from ayon_core.pipeline.publish import ValidateContentsOrder
-from ayon_core.hosts.houdini.api.action import SelectInvalidAction
-from ayon_core.hosts.houdini.api.lib import get_output_children
-
-import hou
+from ayon_houdini.api import plugin
+from ayon_houdini.api.action import SelectInvalidAction
+from ayon_houdini.api.lib import get_output_children
-class ValidateUnrealStaticMeshName(pyblish.api.InstancePlugin,
+class ValidateUnrealStaticMeshName(plugin.HoudiniInstancePlugin,
OptionalPyblishPluginMixin):
"""Validate name of Unreal Static Mesh.
@@ -29,7 +29,6 @@ class ValidateUnrealStaticMeshName(pyblish.api.InstancePlugin,
"""
families = ["staticMesh"]
- hosts = ["houdini"]
label = "Unreal Static Mesh Name (FBX)"
order = ValidateContentsOrder + 0.1
actions = [SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_layer_path_backslashes.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_layer_path_backslashes.py
similarity index 91%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_layer_path_backslashes.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_layer_path_backslashes.py
index 2b727670ad..4da67ff199 100644
--- a/client/ayon_core/hosts/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,14 @@
# -*- coding: utf-8 -*-
-import pyblish.api
-
-import ayon_core.hosts.houdini.api.usd as hou_usdlib
-from ayon_core.pipeline import PublishValidationError
-
import hou
+import pyblish.api
+from ayon_core.pipeline import PublishValidationError
-class ValidateUSDLayerPathBackslashes(pyblish.api.InstancePlugin):
+from ayon_houdini.api import plugin
+import ayon_houdini.api.usd as hou_usdlib
+
+
+class ValidateUSDLayerPathBackslashes(plugin.HoudiniInstancePlugin):
"""Validate USD loaded paths have no backslashes.
This is a crucial validation for HUSK USD rendering as Houdini's
@@ -22,7 +23,6 @@ class ValidateUSDLayerPathBackslashes(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["usdSetDress", "usdShade", "usd", "usdrender"]
- hosts = ["houdini"]
label = "USD Layer path backslashes"
optional = True
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_model_and_shade.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_model_and_shade.py
similarity index 93%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_model_and_shade.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_model_and_shade.py
index dc1a19cae0..935bd39e23 100644
--- a/client/ayon_core/hosts/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,12 +1,12 @@
# -*- coding: utf-8 -*-
-import pyblish.api
-
-import ayon_core.hosts.houdini.api.usd as hou_usdlib
-from ayon_core.pipeline import PublishValidationError
-
+import hou
from pxr import UsdShade, UsdRender, UsdLux
-import hou
+import pyblish.api
+from ayon_core.pipeline import PublishValidationError
+
+from ayon_houdini.api import plugin
+import ayon_houdini.api.usd as hou_usdlib
def fullname(o):
@@ -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.
@@ -26,7 +26,6 @@ class ValidateUsdModel(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["usdModel"]
- hosts = ["houdini"]
label = "Validate USD Model"
optional = True
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_output_node.py
similarity index 94%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_output_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_output_node.py
index 968d64e8fc..88d549d46c 100644
--- a/client/ayon_core/hosts/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,12 @@
# -*- coding: utf-8 -*-
import pyblish.api
+
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-class ValidateUSDOutputNode(pyblish.api.InstancePlugin):
+
+class ValidateUSDOutputNode(plugin.HoudiniInstancePlugin):
"""Validate the instance USD LOPs Output Node.
This will ensure:
@@ -15,7 +18,6 @@ class ValidateUSDOutputNode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["usd"]
- hosts = ["houdini"]
label = "Validate Output Node (USD)"
def process(self, instance):
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_render_product_names.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_render_product_names.py
similarity index 89%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_render_product_names.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_render_product_names.py
index 4825b7cc71..eb46b266e2 100644
--- a/client/ayon_core/hosts/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,16 +1,17 @@
# -*- coding: utf-8 -*-
import os
-import pyblish.api
+import pyblish.api
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
-class ValidateUSDRenderProductNames(pyblish.api.InstancePlugin):
+
+class ValidateUSDRenderProductNames(plugin.HoudiniInstancePlugin):
"""Validate USD Render Product names are correctly set absolute paths."""
order = pyblish.api.ValidatorOrder
families = ["usdrender"]
- hosts = ["houdini"]
label = "Validate USD Render Product Names"
optional = True
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_setdress.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_setdress.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py
index 40b67e896a..3e91f0418f 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_setdress.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_setdress.py
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
import pyblish.api
-
-import ayon_core.hosts.houdini.api.usd as hou_usdlib
from ayon_core.pipeline import PublishValidationError
+from ayon_houdini.api import plugin
+import ayon_houdini.api.usd as hou_usdlib
-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
@@ -15,14 +16,13 @@ class ValidateUsdSetDress(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
families = ["usdSetDress"]
- hosts = ["houdini"]
label = "Validate USD Set Dress"
optional = True
def process(self, instance):
- from pxr import UsdGeom
import hou
+ from pxr import UsdGeom
rop = hou.node(instance.data.get("instance_node"))
lop_path = hou_usdlib.get_usd_rop_loppath(rop)
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_shade_model_exists.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_model_exists.py
similarity index 92%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_shade_model_exists.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_model_exists.py
index 048d675c00..8a93d3b4a1 100644
--- a/client/ayon_core/hosts/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,20 +2,19 @@
import re
import ayon_api
-import pyblish.api
-
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
KnownPublishError,
PublishValidationError,
)
+from ayon_houdini.api import plugin
-class ValidateUSDShadeModelExists(pyblish.api.InstancePlugin):
+
+class ValidateUSDShadeModelExists(plugin.HoudiniInstancePlugin):
"""Validate the Instance has no current cooking errors."""
order = ValidateContentsOrder
- hosts = ["houdini"]
families = ["usdShade"]
label = "USD Shade model exists"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_usd_shade_workspace.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_workspace.py
similarity index 95%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_usd_shade_workspace.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_usd_shade_workspace.py
index 2ea4b5d816..8972941253 100644
--- a/client/ayon_core/hosts/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,13 @@
# -*- coding: utf-8 -*-
+import hou
+
import pyblish.api
from ayon_core.pipeline import PublishValidationError
-import hou
+from ayon_houdini.api import plugin
-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
@@ -14,7 +16,6 @@ class ValidateUsdShadeWorkspace(pyblish.api.InstancePlugin):
"""
order = pyblish.api.ValidatorOrder
- hosts = ["houdini"]
families = ["usdShade"]
label = "USD Shade Workspace"
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_vdb_output_node.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py
similarity index 97%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_vdb_output_node.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py
index 319a9a4b50..c4ed9d2fb8 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_vdb_output_node.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_vdb_output_node.py
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
import contextlib
-
-import pyblish.api
import hou
+import pyblish.api
from ayon_core.pipeline import PublishXmlValidationError
-from ayon_core.hosts.houdini.api.action import SelectInvalidAction
+
+from ayon_houdini.api import plugin
+from ayon_houdini.api.action import SelectInvalidAction
def group_consecutive_numbers(nums):
@@ -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
@@ -81,7 +82,6 @@ class ValidateVDBOutputNode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder + 0.1
families = ["vdbcache"]
- hosts = ["houdini"]
label = "Validate Output Node (VDB)"
actions = [SelectInvalidAction]
diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_workfile_paths.py b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py
similarity index 96%
rename from client/ayon_core/hosts/houdini/plugins/publish/validate_workfile_paths.py
rename to server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py
index 7984b7615c..e1cd0c6caa 100644
--- a/client/ayon_core/hosts/houdini/plugins/publish/validate_workfile_paths.py
+++ b/server_addon/houdini/client/ayon_houdini/plugins/publish/validate_workfile_paths.py
@@ -1,20 +1,22 @@
# -*- coding: utf-8 -*-
-import pyblish.api
import hou
+
+import pyblish.api
from ayon_core.pipeline import (
PublishValidationError,
OptionalPyblishPluginMixin
)
from ayon_core.pipeline.publish import RepairAction
+from ayon_houdini.api import plugin
+
class ValidateWorkfilePaths(
- pyblish.api.InstancePlugin, OptionalPyblishPluginMixin):
+ plugin.HoudiniInstancePlugin, OptionalPyblishPluginMixin):
"""Validate workfile paths so they are absolute."""
order = pyblish.api.ValidatorOrder
families = ["workfile"]
- hosts = ["houdini"]
label = "Validate Workfile Paths"
actions = [RepairAction]
optional = True
diff --git a/client/ayon_core/hosts/houdini/startup/MainMenuCommon.xml b/server_addon/houdini/client/ayon_houdini/startup/MainMenuCommon.xml
similarity index 94%
rename from client/ayon_core/hosts/houdini/startup/MainMenuCommon.xml
rename to server_addon/houdini/client/ayon_houdini/startup/MainMenuCommon.xml
index b6e78cbdc8..5b383f0085 100644
--- a/client/ayon_core/hosts/houdini/startup/MainMenuCommon.xml
+++ b/server_addon/houdini/client/ayon_houdini/startup/MainMenuCommon.xml
@@ -81,16 +81,16 @@ host_tools.show_workfiles(parent)
diff --git a/client/ayon_core/hosts/houdini/startup/OPmenu.xml b/server_addon/houdini/client/ayon_houdini/startup/OPmenu.xml
similarity index 91%
rename from client/ayon_core/hosts/houdini/startup/OPmenu.xml
rename to server_addon/houdini/client/ayon_houdini/startup/OPmenu.xml
index 0a7b265fa1..5637d2cf6a 100644
--- a/client/ayon_core/hosts/houdini/startup/OPmenu.xml
+++ b/server_addon/houdini/client/ayon_houdini/startup/OPmenu.xml
@@ -15,7 +15,7 @@
0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/server_addon/houdini/server/settings/publish.py b/server_addon/houdini/server/settings/publish.py
index 4a0c022f23..336de8e046 100644
--- a/server_addon/houdini/server/settings/publish.py
+++ b/server_addon/houdini/server/settings/publish.py
@@ -79,7 +79,8 @@ class PublishPluginsModel(BaseSettingsModel):
)
ValidateInstanceInContextHoudini: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
- title="Validate Instance is in same Context.")
+ title="Validate Instance is in same Context.",
+ section="Validators")
ValidateMeshIsStatic: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh is Static.")
diff --git a/client/ayon_core/hosts/photoshop/__init__.py b/server_addon/photoshop/client/ayon_photoshop/__init__.py
similarity index 78%
rename from client/ayon_core/hosts/photoshop/__init__.py
rename to server_addon/photoshop/client/ayon_photoshop/__init__.py
index cf21b7df75..e72c79c812 100644
--- a/client/ayon_core/hosts/photoshop/__init__.py
+++ b/server_addon/photoshop/client/ayon_photoshop/__init__.py
@@ -1,3 +1,4 @@
+from .version import __version__
from .addon import (
PHOTOSHOP_ADDON_ROOT,
PhotoshopAddon,
@@ -6,6 +7,8 @@ from .addon import (
__all__ = (
+ "__version__",
+
"PHOTOSHOP_ADDON_ROOT",
"PhotoshopAddon",
"get_launch_script_path",
diff --git a/client/ayon_core/hosts/photoshop/addon.py b/server_addon/photoshop/client/ayon_photoshop/addon.py
similarity index 94%
rename from client/ayon_core/hosts/photoshop/addon.py
rename to server_addon/photoshop/client/ayon_photoshop/addon.py
index 65fe6a7cd1..d0fe638f15 100644
--- a/client/ayon_core/hosts/photoshop/addon.py
+++ b/server_addon/photoshop/client/ayon_photoshop/addon.py
@@ -1,11 +1,14 @@
import os
from ayon_core.addon import AYONAddon, IHostAddon
+from .version import __version__
+
PHOTOSHOP_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
class PhotoshopAddon(AYONAddon, IHostAddon):
name = "photoshop"
+ version = __version__
host_name = "photoshop"
def add_implementation_envs(self, env, _app):
@@ -33,4 +36,3 @@ def get_launch_script_path():
return os.path.join(
PHOTOSHOP_ADDON_ROOT, "api", "launch_script.py"
)
-
diff --git a/client/ayon_core/hosts/photoshop/api/README.md b/server_addon/photoshop/client/ayon_photoshop/api/README.md
similarity index 97%
rename from client/ayon_core/hosts/photoshop/api/README.md
rename to server_addon/photoshop/client/ayon_photoshop/api/README.md
index b391131a42..ef458dea16 100644
--- a/client/ayon_core/hosts/photoshop/api/README.md
+++ b/server_addon/photoshop/client/ayon_photoshop/api/README.md
@@ -17,7 +17,7 @@ ExManCmd /install {path to addon}/api/extension.zxp
The easiest way to get the server and Photoshop launch is with:
```
-python -c ^"import ayon_core.hosts.photoshop;ayon_core.hosts.photoshop.launch(""C:\Program Files\Adobe\Adobe Photoshop 2020\Photoshop.exe"")^"
+python -c ^"import ayon_photoshop;ayon_photoshop.launch(""C:\Program Files\Adobe\Adobe Photoshop 2020\Photoshop.exe"")^"
```
`avalon.photoshop.launch` launches the application and server, and also closes the server when Photoshop exists.
@@ -128,7 +128,7 @@ class CollectInstances(pyblish.api.ContextPlugin):
import os
from ayon_core.pipeline import publish
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class ExtractImage(publish.Extractor):
diff --git a/client/ayon_core/hosts/photoshop/api/__init__.py b/server_addon/photoshop/client/ayon_photoshop/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/__init__.py
rename to server_addon/photoshop/client/ayon_photoshop/api/__init__.py
diff --git a/client/ayon_core/hosts/photoshop/api/extension.zxp b/server_addon/photoshop/client/ayon_photoshop/api/extension.zxp
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension.zxp
rename to server_addon/photoshop/client/ayon_photoshop/api/extension.zxp
diff --git a/client/ayon_core/hosts/photoshop/api/extension/.debug b/server_addon/photoshop/client/ayon_photoshop/api/extension/.debug
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/.debug
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/.debug
diff --git a/client/ayon_core/hosts/photoshop/api/extension/CSXS/manifest.xml b/server_addon/photoshop/client/ayon_photoshop/api/extension/CSXS/manifest.xml
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/CSXS/manifest.xml
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/CSXS/manifest.xml
diff --git a/client/ayon_core/hosts/photoshop/api/extension/client/CSInterface.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/client/CSInterface.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/client/CSInterface.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/client/CSInterface.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/client/client.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/client/client.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/client/client.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/client/client.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/client/loglevel.min.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/client/loglevel.min.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/client/loglevel.min.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/client/loglevel.min.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/client/wsrpc.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/client/wsrpc.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/client/wsrpc.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/client/wsrpc.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/client/wsrpc.min.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/client/wsrpc.min.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/client/wsrpc.min.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/client/wsrpc.min.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/host/JSX.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/host/JSX.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/host/JSX.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/host/JSX.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/host/index.jsx b/server_addon/photoshop/client/ayon_photoshop/api/extension/host/index.jsx
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/host/index.jsx
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/host/index.jsx
diff --git a/client/ayon_core/hosts/photoshop/api/extension/host/json.js b/server_addon/photoshop/client/ayon_photoshop/api/extension/host/json.js
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/host/json.js
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/host/json.js
diff --git a/client/ayon_core/hosts/photoshop/api/extension/icons/ayon_logo.png b/server_addon/photoshop/client/ayon_photoshop/api/extension/icons/ayon_logo.png
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/icons/ayon_logo.png
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/icons/ayon_logo.png
diff --git a/client/ayon_core/hosts/photoshop/api/extension/index.html b/server_addon/photoshop/client/ayon_photoshop/api/extension/index.html
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/extension/index.html
rename to server_addon/photoshop/client/ayon_photoshop/api/extension/index.html
diff --git a/client/ayon_core/hosts/photoshop/api/launch_logic.py b/server_addon/photoshop/client/ayon_photoshop/api/launch_logic.py
similarity index 99%
rename from client/ayon_core/hosts/photoshop/api/launch_logic.py
rename to server_addon/photoshop/client/ayon_photoshop/api/launch_logic.py
index c388f93044..04401a0972 100644
--- a/client/ayon_core/hosts/photoshop/api/launch_logic.py
+++ b/server_addon/photoshop/client/ayon_photoshop/api/launch_logic.py
@@ -22,9 +22,9 @@ from ayon_core.pipeline.workfile import (
)
from ayon_core.pipeline.template_data import get_template_data_with_names
from ayon_core.tools.utils import host_tools
-from ayon_core.tools.adobe_webserver.app import WebServerTool
from ayon_core.pipeline.context_tools import change_current_context
+from .webserver import WebServerTool
from .ws_stub import PhotoshopServerStub
log = Logger.get_logger(__name__)
diff --git a/client/ayon_core/hosts/photoshop/api/launch_script.py b/server_addon/photoshop/client/ayon_photoshop/api/launch_script.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/api/launch_script.py
rename to server_addon/photoshop/client/ayon_photoshop/api/launch_script.py
index bb4de80086..de7fc8ba48 100644
--- a/client/ayon_core/hosts/photoshop/api/launch_script.py
+++ b/server_addon/photoshop/client/ayon_photoshop/api/launch_script.py
@@ -8,7 +8,7 @@ workfile or others.
import os
import sys
-from ayon_core.hosts.photoshop.api.lib import main as host_main
+from ayon_photoshop.api.lib import main as host_main
# Get current file to locate start point of sys.argv
CURRENT_FILE = os.path.abspath(__file__)
diff --git a/client/ayon_core/hosts/photoshop/api/lib.py b/server_addon/photoshop/client/ayon_photoshop/api/lib.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/api/lib.py
rename to server_addon/photoshop/client/ayon_photoshop/api/lib.py
index af14e6d02f..fd003919ce 100644
--- a/client/ayon_core/hosts/photoshop/api/lib.py
+++ b/server_addon/photoshop/client/ayon_photoshop/api/lib.py
@@ -19,7 +19,7 @@ def safe_excepthook(*args):
def main(*subprocess_args):
- from ayon_core.hosts.photoshop.api import PhotoshopHost
+ from ayon_photoshop.api import PhotoshopHost
host = PhotoshopHost()
install_host(host)
diff --git a/client/ayon_core/hosts/photoshop/api/panel.png b/server_addon/photoshop/client/ayon_photoshop/api/panel.png
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/panel.png
rename to server_addon/photoshop/client/ayon_photoshop/api/panel.png
diff --git a/client/ayon_core/hosts/photoshop/api/panel_failure.png b/server_addon/photoshop/client/ayon_photoshop/api/panel_failure.png
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/panel_failure.png
rename to server_addon/photoshop/client/ayon_photoshop/api/panel_failure.png
diff --git a/client/ayon_core/hosts/photoshop/api/pipeline.py b/server_addon/photoshop/client/ayon_photoshop/api/pipeline.py
similarity index 99%
rename from client/ayon_core/hosts/photoshop/api/pipeline.py
rename to server_addon/photoshop/client/ayon_photoshop/api/pipeline.py
index 27cfa5a7b5..d399bb25e2 100644
--- a/client/ayon_core/hosts/photoshop/api/pipeline.py
+++ b/server_addon/photoshop/client/ayon_photoshop/api/pipeline.py
@@ -21,8 +21,8 @@ from ayon_core.host import (
)
from ayon_core.pipeline.load import any_outdated_containers
-from ayon_core.hosts.photoshop import PHOTOSHOP_ADDON_ROOT
from ayon_core.tools.utils import get_ayon_qt_app
+from ayon_photoshop import PHOTOSHOP_ADDON_ROOT
from . import lib
diff --git a/client/ayon_core/hosts/photoshop/api/plugin.py b/server_addon/photoshop/client/ayon_photoshop/api/plugin.py
similarity index 100%
rename from client/ayon_core/hosts/photoshop/api/plugin.py
rename to server_addon/photoshop/client/ayon_photoshop/api/plugin.py
diff --git a/server_addon/photoshop/client/ayon_photoshop/api/webserver.py b/server_addon/photoshop/client/ayon_photoshop/api/webserver.py
new file mode 100644
index 0000000000..cd229c65ad
--- /dev/null
+++ b/server_addon/photoshop/client/ayon_photoshop/api/webserver.py
@@ -0,0 +1,241 @@
+"""Webserver for communication with photoshop.
+
+Aiohttp (Asyncio) based websocket server used for communication with host
+application.
+
+This webserver is started in spawned Python process that opens DCC during
+its launch, waits for connection from DCC and handles communication going
+forward. Server is closed before Python process is killed.
+"""
+import os
+import logging
+import urllib
+import threading
+import asyncio
+import socket
+
+from aiohttp import web
+
+from wsrpc_aiohttp import WSRPCClient
+
+from ayon_core.pipeline import get_global_context
+
+log = logging.getLogger(__name__)
+
+
+class WebServerTool:
+ """
+ Basic POC implementation of asychronic websocket RPC server.
+ Uses class in external_app_1.py to mimic implementation for single
+ external application.
+ 'test_client' folder contains two test implementations of client
+ """
+ _instance = None
+
+ def __init__(self):
+ WebServerTool._instance = self
+
+ self.client = None
+ self.handlers = {}
+ self.on_stop_callbacks = []
+
+ port = None
+ host_name = "localhost"
+ websocket_url = os.getenv("WEBSOCKET_URL")
+ if websocket_url:
+ parsed = urllib.parse.urlparse(websocket_url)
+ port = parsed.port
+ host_name = parsed.netloc.split(":")[0]
+ if not port:
+ port = 8098 # fallback
+
+ self.port = port
+ self.host_name = host_name
+
+ self.app = web.Application()
+
+ # add route with multiple methods for single "external app"
+ self.webserver_thread = WebServerThread(self, self.port)
+
+ def add_route(self, *args, **kwargs):
+ self.app.router.add_route(*args, **kwargs)
+
+ def add_static(self, *args, **kwargs):
+ self.app.router.add_static(*args, **kwargs)
+
+ def start_server(self):
+ if self.webserver_thread and not self.webserver_thread.is_alive():
+ self.webserver_thread.start()
+
+ def stop_server(self):
+ self.stop()
+
+ async def send_context_change(self, host):
+ """
+ Calls running webserver to inform about context change
+
+ Used when new PS/AE should be triggered,
+ but one already running, without
+ this publish would point to old context.
+ """
+ client = WSRPCClient(os.getenv("WEBSOCKET_URL"),
+ loop=asyncio.get_event_loop())
+ await client.connect()
+
+ context = get_global_context()
+ project_name = context["project_name"]
+ folder_path = context["folder_path"]
+ task_name = context["task_name"]
+ log.info("Sending context change to {}{}/{}".format(
+ project_name, folder_path, task_name
+ ))
+
+ await client.call(
+ '{}.set_context'.format(host),
+ project=project_name,
+ folder=folder_path,
+ task=task_name
+ )
+ await client.close()
+
+ def port_occupied(self, host_name, port):
+ """
+ Check if 'url' is already occupied.
+
+ This could mean, that app is already running and we are trying open it
+ again. In that case, use existing running webserver.
+ Check here is easier than capturing exception from thread.
+ """
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as con:
+ result = con.connect_ex((host_name, port)) == 0
+
+ if result:
+ print(f"Port {port} is already in use")
+ return result
+
+ def call(self, func):
+ log.debug("websocket.call {}".format(func))
+ future = asyncio.run_coroutine_threadsafe(
+ func,
+ self.webserver_thread.loop
+ )
+ result = future.result()
+ return result
+
+ @staticmethod
+ def get_instance():
+ if WebServerTool._instance is None:
+ WebServerTool()
+ return WebServerTool._instance
+
+ @property
+ def is_running(self):
+ if not self.webserver_thread:
+ return False
+ return self.webserver_thread.is_running
+
+ def stop(self):
+ if not self.is_running:
+ return
+ try:
+ log.debug("Stopping websocket server")
+ self.webserver_thread.is_running = False
+ self.webserver_thread.stop()
+ except Exception:
+ log.warning(
+ "Error has happened during Killing websocket server",
+ exc_info=True
+ )
+
+ def thread_stopped(self):
+ for callback in self.on_stop_callbacks:
+ callback()
+
+
+class WebServerThread(threading.Thread):
+ """ Listener for websocket rpc requests.
+
+ It would be probably better to "attach" this to main thread (as for
+ example Harmony needs to run something on main thread), but currently
+ it creates separate thread and separate asyncio event loop
+ """
+ def __init__(self, module, port):
+ super(WebServerThread, self).__init__()
+
+ self.is_running = False
+ self.port = port
+ self.module = module
+ self.loop = None
+ self.runner = None
+ self.site = None
+ self.tasks = []
+
+ def run(self):
+ self.is_running = True
+
+ try:
+ log.info("Starting web server")
+ self.loop = asyncio.new_event_loop() # create new loop for thread
+ asyncio.set_event_loop(self.loop)
+
+ self.loop.run_until_complete(self.start_server())
+
+ websocket_url = "ws://localhost:{}/ws".format(self.port)
+
+ log.debug(
+ "Running Websocket server on URL: \"{}\"".format(websocket_url)
+ )
+
+ asyncio.ensure_future(self.check_shutdown(), loop=self.loop)
+ self.loop.run_forever()
+ except Exception:
+ self.is_running = False
+ log.warning(
+ "Websocket Server service has failed", exc_info=True
+ )
+ raise
+ finally:
+ self.loop.close() # optional
+
+ self.is_running = False
+ self.module.thread_stopped()
+ log.info("Websocket server stopped")
+
+ async def start_server(self):
+ """ Starts runner and TCPsite """
+ self.runner = web.AppRunner(self.module.app)
+ await self.runner.setup()
+ self.site = web.TCPSite(self.runner, 'localhost', self.port)
+ await self.site.start()
+
+ def stop(self):
+ """Sets is_running flag to false, 'check_shutdown' shuts server down"""
+ self.is_running = False
+
+ async def check_shutdown(self):
+ """ Future that is running and checks if server should be running
+ periodically.
+ """
+ while self.is_running:
+ while self.tasks:
+ task = self.tasks.pop(0)
+ log.debug("waiting for task {}".format(task))
+ await task
+ log.debug("returned value {}".format(task.result))
+
+ await asyncio.sleep(0.5)
+
+ log.debug("Starting shutdown")
+ await self.site.stop()
+ log.debug("Site stopped")
+ await self.runner.cleanup()
+ log.debug("Runner stopped")
+ tasks = [task for task in asyncio.all_tasks() if
+ task is not asyncio.current_task()]
+ list(map(lambda task: task.cancel(), tasks)) # cancel all the tasks
+ results = await asyncio.gather(*tasks, return_exceptions=True)
+ log.debug(f'Finished awaiting cancelled tasks, results: {results}...')
+ await self.loop.shutdown_asyncgens()
+ # to really make sure everything else has time to stop
+ await asyncio.sleep(0.07)
+ self.loop.stop()
diff --git a/client/ayon_core/hosts/photoshop/api/ws_stub.py b/server_addon/photoshop/client/ayon_photoshop/api/ws_stub.py
similarity index 99%
rename from client/ayon_core/hosts/photoshop/api/ws_stub.py
rename to server_addon/photoshop/client/ayon_photoshop/api/ws_stub.py
index 36fe0af2f8..3619fa4b7a 100644
--- a/client/ayon_core/hosts/photoshop/api/ws_stub.py
+++ b/server_addon/photoshop/client/ayon_photoshop/api/ws_stub.py
@@ -6,7 +6,7 @@ import json
import attr
from wsrpc_aiohttp import WebSocketAsync
-from ayon_core.tools.adobe_webserver.app import WebServerTool
+from .webserver import WebServerTool
@attr.s
diff --git a/client/ayon_core/hosts/photoshop/hooks/pre_launch_args.py b/server_addon/photoshop/client/ayon_photoshop/hooks/pre_launch_args.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/hooks/pre_launch_args.py
rename to server_addon/photoshop/client/ayon_photoshop/hooks/pre_launch_args.py
index 70f8fc730f..ff60c2f40d 100644
--- a/client/ayon_core/hosts/photoshop/hooks/pre_launch_args.py
+++ b/server_addon/photoshop/client/ayon_photoshop/hooks/pre_launch_args.py
@@ -7,7 +7,7 @@ from ayon_core.lib import (
is_using_ayon_console,
)
from ayon_applications import PreLaunchHook, LaunchTypes
-from ayon_core.hosts.photoshop import get_launch_script_path
+from ayon_photoshop import get_launch_script_path
def get_launch_kwargs(kwargs):
diff --git a/client/ayon_core/hosts/photoshop/lib.py b/server_addon/photoshop/client/ayon_photoshop/lib.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/lib.py
rename to server_addon/photoshop/client/ayon_photoshop/lib.py
index dd227c5d81..9dc90953c5 100644
--- a/client/ayon_core/hosts/photoshop/lib.py
+++ b/server_addon/photoshop/client/ayon_photoshop/lib.py
@@ -2,13 +2,13 @@ import re
import ayon_api
-import ayon_core.hosts.photoshop.api as api
from ayon_core.lib import prepare_template_data
from ayon_core.pipeline import (
AutoCreator,
CreatedInstance
)
-from ayon_core.hosts.photoshop.api.pipeline import cache_and_get_instances
+from ayon_photoshop import api
+from ayon_photoshop.api.pipeline import cache_and_get_instances
class PSAutoCreator(AutoCreator):
diff --git a/client/ayon_core/hosts/photoshop/plugins/create/create_flatten_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_flatten_image.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/plugins/create/create_flatten_image.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/create/create_flatten_image.py
index a3bc77c640..a467a5ecaa 100644
--- a/client/ayon_core/hosts/photoshop/plugins/create/create_flatten_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_flatten_image.py
@@ -1,7 +1,7 @@
import ayon_api
-import ayon_core.hosts.photoshop.api as api
-from ayon_core.hosts.photoshop.lib import PSAutoCreator, clean_product_name
+from ayon_photoshop import api
+from ayon_photoshop.lib import PSAutoCreator, clean_product_name
from ayon_core.lib import BoolDef, prepare_template_data
from ayon_core.pipeline.create import get_product_name, CreatedInstance
diff --git a/client/ayon_core/hosts/photoshop/plugins/create/create_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_image.py
similarity index 98%
rename from client/ayon_core/hosts/photoshop/plugins/create/create_image.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/create/create_image.py
index a44c3490c6..0170306301 100644
--- a/client/ayon_core/hosts/photoshop/plugins/create/create_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_image.py
@@ -1,6 +1,5 @@
import re
-from ayon_core.hosts.photoshop import api
from ayon_core.lib import BoolDef
from ayon_core.pipeline import (
Creator,
@@ -9,8 +8,9 @@ from ayon_core.pipeline import (
)
from ayon_core.lib import prepare_template_data
from ayon_core.pipeline.create import PRODUCT_NAME_ALLOWED_SYMBOLS
-from ayon_core.hosts.photoshop.api.pipeline import cache_and_get_instances
-from ayon_core.hosts.photoshop.lib import clean_product_name
+from ayon_photoshop import api
+from ayon_photoshop.api.pipeline import cache_and_get_instances
+from ayon_photoshop.lib import clean_product_name
class ImageCreator(Creator):
diff --git a/client/ayon_core/hosts/photoshop/plugins/create/create_review.py b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_review.py
similarity index 94%
rename from client/ayon_core/hosts/photoshop/plugins/create/create_review.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/create/create_review.py
index 229b736801..60c64b3831 100644
--- a/client/ayon_core/hosts/photoshop/plugins/create/create_review.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_review.py
@@ -1,4 +1,4 @@
-from ayon_core.hosts.photoshop.lib import PSAutoCreator
+from ayon_photoshop.lib import PSAutoCreator
class ReviewCreator(PSAutoCreator):
diff --git a/client/ayon_core/hosts/photoshop/plugins/create/create_workfile.py b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_workfile.py
similarity index 94%
rename from client/ayon_core/hosts/photoshop/plugins/create/create_workfile.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/create/create_workfile.py
index da0c9d1d12..ce44a1ad2d 100644
--- a/client/ayon_core/hosts/photoshop/plugins/create/create_workfile.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/create/create_workfile.py
@@ -1,4 +1,4 @@
-from ayon_core.hosts.photoshop.lib import PSAutoCreator
+from ayon_photoshop.lib import PSAutoCreator
class WorkfileCreator(PSAutoCreator):
diff --git a/client/ayon_core/hosts/photoshop/plugins/load/load_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/load/load_image.py
similarity index 95%
rename from client/ayon_core/hosts/photoshop/plugins/load/load_image.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/load/load_image.py
index d71067615e..e3d80f6957 100644
--- a/client/ayon_core/hosts/photoshop/plugins/load/load_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/load/load_image.py
@@ -1,8 +1,8 @@
import re
from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.photoshop import api as photoshop
-from ayon_core.hosts.photoshop.api import get_unique_layer_name
+from ayon_photoshop import api as photoshop
+from ayon_photoshop.api import get_unique_layer_name
class ImageLoader(photoshop.PhotoshopLoader):
diff --git a/client/ayon_core/hosts/photoshop/plugins/load/load_image_from_sequence.py b/server_addon/photoshop/client/ayon_photoshop/plugins/load/load_image_from_sequence.py
similarity index 95%
rename from client/ayon_core/hosts/photoshop/plugins/load/load_image_from_sequence.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/load/load_image_from_sequence.py
index dd14543f3e..f69dce26f6 100644
--- a/client/ayon_core/hosts/photoshop/plugins/load/load_image_from_sequence.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/load/load_image_from_sequence.py
@@ -2,8 +2,8 @@ import os
import qargparse
-from ayon_core.hosts.photoshop import api as photoshop
-from ayon_core.hosts.photoshop.api import get_unique_layer_name
+from ayon_photoshop import api as photoshop
+from ayon_photoshop.api import get_unique_layer_name
class ImageFromSequenceLoader(photoshop.PhotoshopLoader):
diff --git a/client/ayon_core/hosts/photoshop/plugins/load/load_reference.py b/server_addon/photoshop/client/ayon_photoshop/plugins/load/load_reference.py
similarity index 95%
rename from client/ayon_core/hosts/photoshop/plugins/load/load_reference.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/load/load_reference.py
index b563faff82..21076f6a4f 100644
--- a/client/ayon_core/hosts/photoshop/plugins/load/load_reference.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/load/load_reference.py
@@ -1,8 +1,8 @@
import re
from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.photoshop import api as photoshop
-from ayon_core.hosts.photoshop.api import get_unique_layer_name
+from ayon_photoshop import api as photoshop
+from ayon_photoshop.api import get_unique_layer_name
class ReferenceLoader(photoshop.PhotoshopLoader):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/closePS.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/closePS.py
similarity index 91%
rename from client/ayon_core/hosts/photoshop/plugins/publish/closePS.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/closePS.py
index 68c3b5b249..2cdc9fa1e8 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/closePS.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/closePS.py
@@ -2,7 +2,7 @@
"""Close PS after publish. For Webpublishing only."""
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class ClosePS(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_image.py
similarity index 98%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_image.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_image.py
index adbe02eb74..23a71bdf46 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_image.py
@@ -1,6 +1,6 @@
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
from ayon_core.pipeline.create import get_product_name
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_image_refresh.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_image_refresh.py
similarity index 94%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_image_refresh.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_image_refresh.py
index 7a5f297c89..108b65232a 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_image_refresh.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_image_refresh.py
@@ -1,6 +1,6 @@
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class CollectAutoImageRefresh(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_review.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_review.py
similarity index 98%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_review.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_review.py
index d7267d253a..8b84e69309 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_review.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_review.py
@@ -7,7 +7,7 @@ Provides:
"""
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
from ayon_core.pipeline.create import get_product_name
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_workfile.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_workfile.py
similarity index 98%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_workfile.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_workfile.py
index af74c76a15..1bf7c1a600 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_auto_workfile.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_auto_workfile.py
@@ -1,7 +1,7 @@
import os
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
from ayon_core.pipeline.create import get_product_name
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_batch_data.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_batch_data.py
similarity index 100%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_batch_data.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_batch_data.py
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_color_coded_instances.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py
similarity index 99%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_color_coded_instances.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py
index e8f7c7e3df..072eb82179 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_color_coded_instances.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py
@@ -4,8 +4,8 @@ import re
import pyblish.api
from ayon_core.lib import prepare_template_data, is_in_tests
-from ayon_core.hosts.photoshop import api as photoshop
from ayon_core.settings import get_project_settings
+from ayon_photoshop import api as photoshop
class CollectColorCodedInstances(pyblish.api.ContextPlugin):
@@ -33,6 +33,7 @@ class CollectColorCodedInstances(pyblish.api.ContextPlugin):
order = pyblish.api.CollectorOrder
hosts = ["photoshop"]
targets = ["automated"]
+ settings_category = "photoshop"
# configurable by Settings
color_code_mapping = []
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_current_file.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_current_file.py
similarity index 88%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_current_file.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_current_file.py
index 74353d452f..02f2217f75 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_current_file.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_current_file.py
@@ -2,7 +2,7 @@ import os
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class CollectCurrentFile(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_extension_version.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_extension_version.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_extension_version.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_extension_version.py
index 2d24a8de15..90415e9245 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_extension_version.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_extension_version.py
@@ -2,7 +2,7 @@ import os
import re
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class CollectExtensionVersion(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_image.py
similarity index 91%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_image.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_image.py
index bfd73bfc5f..ed6af6f7d3 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_image.py
@@ -1,6 +1,6 @@
import pyblish.api
-from ayon_core.hosts.photoshop import api
+from ayon_photoshop import api
class CollectImage(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_published_version.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_published_version.py
similarity index 100%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_published_version.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_published_version.py
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_review.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_review.py
similarity index 94%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_review.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_review.py
index 1ffbadf022..d9a29f9b74 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_review.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_review.py
@@ -16,6 +16,7 @@ class CollectReview(pyblish.api.ContextPlugin):
label = "Collect Review"
hosts = ["photoshop"]
order = pyblish.api.CollectorOrder + 0.1
+ settings_category = "photoshop"
def process(self, context):
for instance in context:
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_version.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_version.py
similarity index 96%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_version.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_version.py
index cda71d8643..bc9f05ab50 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/collect_version.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_version.py
@@ -22,6 +22,7 @@ class CollectVersion(pyblish.api.InstancePlugin):
hosts = ["photoshop"]
families = ["image", "review", "workfile"]
+ settings_category = "photoshop"
def process(self, instance):
workfile_version = instance.context.data["version"]
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/collect_workfile.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/photoshop/plugins/publish/collect_workfile.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_workfile.py
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/extract_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/plugins/publish/extract_image.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py
index 7290a1437e..33599d37bb 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/extract_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py
@@ -2,7 +2,7 @@ import os
import pyblish.api
from ayon_core.pipeline import publish
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class ExtractImage(pyblish.api.ContextPlugin):
@@ -22,6 +22,7 @@ class ExtractImage(pyblish.api.ContextPlugin):
families = ["image", "background"]
formats = ["png", "jpg"]
+ settings_category = "photoshop"
def process(self, context):
stub = photoshop.stub()
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/extract_review.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py
similarity index 99%
rename from client/ayon_core/hosts/photoshop/plugins/publish/extract_review.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py
index 3497e7ad75..0f36d31648 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/extract_review.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py
@@ -7,7 +7,7 @@ from ayon_core.lib import (
get_ffmpeg_tool_args,
)
from ayon_core.pipeline import publish
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class ExtractReview(publish.Extractor):
@@ -29,6 +29,7 @@ class ExtractReview(publish.Extractor):
label = "Extract Review"
hosts = ["photoshop"]
families = ["review"]
+ settings_category = "photoshop"
# Extract Options
jpg_options = None
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/extract_save_scene.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_save_scene.py
similarity index 85%
rename from client/ayon_core/hosts/photoshop/plugins/publish/extract_save_scene.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_save_scene.py
index 962c0722db..22ebbb739d 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/extract_save_scene.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_save_scene.py
@@ -1,5 +1,5 @@
from ayon_core.pipeline import publish
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class ExtractSaveScene(publish.Extractor):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/help/validate_instance_asset.xml b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/help/validate_instance_asset.xml
similarity index 100%
rename from client/ayon_core/hosts/photoshop/plugins/publish/help/validate_instance_asset.xml
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/help/validate_instance_asset.xml
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/help/validate_naming.xml b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/help/validate_naming.xml
similarity index 100%
rename from client/ayon_core/hosts/photoshop/plugins/publish/help/validate_naming.xml
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/help/validate_naming.xml
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/increment_workfile.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/increment_workfile.py
similarity index 94%
rename from client/ayon_core/hosts/photoshop/plugins/publish/increment_workfile.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/increment_workfile.py
index 9b25a35ef5..b10645813a 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/increment_workfile.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/increment_workfile.py
@@ -3,7 +3,7 @@ import pyblish.api
from ayon_core.pipeline.publish import get_errored_plugins_from_context
from ayon_core.lib import version_up
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class IncrementWorkfile(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/validate_instance_asset.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_instance_asset.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/plugins/publish/validate_instance_asset.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_instance_asset.py
index c3a6822f32..36ba621dc2 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/validate_instance_asset.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_instance_asset.py
@@ -6,7 +6,7 @@ from ayon_core.pipeline.publish import (
PublishXmlValidationError,
OptionalPyblishPluginMixin
)
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
class ValidateInstanceFolderRepair(pyblish.api.Action):
diff --git a/client/ayon_core/hosts/photoshop/plugins/publish/validate_naming.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py
similarity index 97%
rename from client/ayon_core/hosts/photoshop/plugins/publish/validate_naming.py
rename to server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py
index 13c6a54fd2..e5f826b07e 100644
--- a/client/ayon_core/hosts/photoshop/plugins/publish/validate_naming.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py
@@ -2,7 +2,7 @@ import re
import pyblish.api
-from ayon_core.hosts.photoshop import api as photoshop
+from ayon_photoshop import api as photoshop
from ayon_core.pipeline.create import PRODUCT_NAME_ALLOWED_SYMBOLS
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
@@ -16,6 +16,7 @@ class ValidateNamingRepair(pyblish.api.Action):
label = "Repair"
icon = "wrench"
on = "failed"
+ settings_category = "photoshop"
def process(self, context, plugin):
diff --git a/client/ayon_core/hosts/photoshop/resources/template.psd b/server_addon/photoshop/client/ayon_photoshop/resources/template.psd
similarity index 100%
rename from client/ayon_core/hosts/photoshop/resources/template.psd
rename to server_addon/photoshop/client/ayon_photoshop/resources/template.psd
diff --git a/server_addon/photoshop/client/ayon_photoshop/version.py b/server_addon/photoshop/client/ayon_photoshop/version.py
new file mode 100644
index 0000000000..31a969addf
--- /dev/null
+++ b/server_addon/photoshop/client/ayon_photoshop/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'photoshop' version."""
+__version__ = "0.2.1"
diff --git a/server_addon/photoshop/client/pyproject.toml b/server_addon/photoshop/client/pyproject.toml
new file mode 100644
index 0000000000..3beb76ba74
--- /dev/null
+++ b/server_addon/photoshop/client/pyproject.toml
@@ -0,0 +1,6 @@
+[project]
+name="photoshop"
+description="AYON Phostoshop addon."
+
+[ayon.runtimeDependencies]
+wsrpc_aiohttp = "^3.1.1" # websocket server
diff --git a/server_addon/photoshop/package.py b/server_addon/photoshop/package.py
index 22043f951c..d04973ebc3 100644
--- a/server_addon/photoshop/package.py
+++ b/server_addon/photoshop/package.py
@@ -1,3 +1,10 @@
name = "photoshop"
title = "Photoshop"
-version = "0.1.3"
+version = "0.2.1"
+
+client_dir = "ayon_photoshop"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/client/ayon_core/hosts/resolve/README.markdown b/server_addon/resolve/client/ayon_resolve/README.markdown
similarity index 100%
rename from client/ayon_core/hosts/resolve/README.markdown
rename to server_addon/resolve/client/ayon_resolve/README.markdown
diff --git a/client/ayon_core/hosts/resolve/RESOLVE_API_v19.0B-build20.txt b/server_addon/resolve/client/ayon_resolve/RESOLVE_API_v19.0B-build20.txt
similarity index 100%
rename from client/ayon_core/hosts/resolve/RESOLVE_API_v19.0B-build20.txt
rename to server_addon/resolve/client/ayon_resolve/RESOLVE_API_v19.0B-build20.txt
diff --git a/server_addon/resolve/client/ayon_resolve/__init__.py b/server_addon/resolve/client/ayon_resolve/__init__.py
new file mode 100644
index 0000000000..ba9afb67d5
--- /dev/null
+++ b/server_addon/resolve/client/ayon_resolve/__init__.py
@@ -0,0 +1,13 @@
+from .version import __version__
+from .addon import (
+ RESOLVE_ADDON_ROOT,
+ ResolveAddon,
+)
+
+
+__all__ = (
+ "__version__",
+
+ "RESOLVE_ADDON_ROOT",
+ "ResolveAddon",
+)
diff --git a/client/ayon_core/hosts/resolve/addon.py b/server_addon/resolve/client/ayon_resolve/addon.py
similarity index 70%
rename from client/ayon_core/hosts/resolve/addon.py
rename to server_addon/resolve/client/ayon_resolve/addon.py
index 1354caabb2..706d2802b0 100644
--- a/client/ayon_core/hosts/resolve/addon.py
+++ b/server_addon/resolve/client/ayon_resolve/addon.py
@@ -2,18 +2,20 @@ import os
from ayon_core.addon import AYONAddon, IHostAddon
-from .utils import RESOLVE_ROOT_DIR
+from .version import __version__
+from .utils import RESOLVE_ADDON_ROOT
class ResolveAddon(AYONAddon, IHostAddon):
name = "resolve"
+ version = __version__
host_name = "resolve"
def get_launch_hook_paths(self, app):
if app.host_name != self.host_name:
return []
return [
- os.path.join(RESOLVE_ROOT_DIR, "hooks")
+ os.path.join(RESOLVE_ADDON_ROOT, "hooks")
]
def get_workfile_extensions(self):
diff --git a/client/ayon_core/hosts/resolve/api/__init__.py b/server_addon/resolve/client/ayon_resolve/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/__init__.py
rename to server_addon/resolve/client/ayon_resolve/api/__init__.py
diff --git a/client/ayon_core/hosts/resolve/api/action.py b/server_addon/resolve/client/ayon_resolve/api/action.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/action.py
rename to server_addon/resolve/client/ayon_resolve/api/action.py
diff --git a/client/ayon_core/hosts/resolve/api/lib.py b/server_addon/resolve/client/ayon_resolve/api/lib.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/lib.py
rename to server_addon/resolve/client/ayon_resolve/api/lib.py
diff --git a/client/ayon_core/hosts/resolve/api/menu.py b/server_addon/resolve/client/ayon_resolve/api/menu.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/menu.py
rename to server_addon/resolve/client/ayon_resolve/api/menu.py
diff --git a/client/ayon_core/hosts/resolve/api/menu_style.qss b/server_addon/resolve/client/ayon_resolve/api/menu_style.qss
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/menu_style.qss
rename to server_addon/resolve/client/ayon_resolve/api/menu_style.qss
diff --git a/client/ayon_core/hosts/resolve/api/pipeline.py b/server_addon/resolve/client/ayon_resolve/api/pipeline.py
similarity index 98%
rename from client/ayon_core/hosts/resolve/api/pipeline.py
rename to server_addon/resolve/client/ayon_resolve/api/pipeline.py
index 15e4f1203d..d6d6dc799e 100644
--- a/client/ayon_core/hosts/resolve/api/pipeline.py
+++ b/server_addon/resolve/client/ayon_resolve/api/pipeline.py
@@ -57,7 +57,7 @@ class ResolveHost(HostBase, IWorkfileHost, ILoadHost):
"""
- log.info("ayon_core.hosts.resolve installed")
+ log.info("ayon_resolve installed")
pyblish.register_host(self.name)
pyblish.register_plugin_path(PUBLISH_PATH)
@@ -246,9 +246,7 @@ def on_pyblish_instance_toggled(instance, old_value, new_value):
log.info("instance toggle: {}, old_value: {}, new_value:{} ".format(
instance, old_value, new_value))
- from ayon_core.hosts.resolve.api import (
- set_publish_attribute
- )
+ from ayon_resolve.api import set_publish_attribute
# Whether instances should be passthrough based on new value
timeline_item = instance.data["item"]
diff --git a/client/ayon_core/hosts/resolve/api/plugin.py b/server_addon/resolve/client/ayon_resolve/api/plugin.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/plugin.py
rename to server_addon/resolve/client/ayon_resolve/api/plugin.py
diff --git a/client/ayon_core/hosts/resolve/api/testing_utils.py b/server_addon/resolve/client/ayon_resolve/api/testing_utils.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/testing_utils.py
rename to server_addon/resolve/client/ayon_resolve/api/testing_utils.py
diff --git a/client/ayon_core/hosts/resolve/api/todo-rendering.py b/server_addon/resolve/client/ayon_resolve/api/todo-rendering.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/todo-rendering.py
rename to server_addon/resolve/client/ayon_resolve/api/todo-rendering.py
diff --git a/client/ayon_core/hosts/resolve/api/utils.py b/server_addon/resolve/client/ayon_resolve/api/utils.py
similarity index 91%
rename from client/ayon_core/hosts/resolve/api/utils.py
rename to server_addon/resolve/client/ayon_resolve/api/utils.py
index 030534370b..d63ade9d51 100644
--- a/client/ayon_core/hosts/resolve/api/utils.py
+++ b/server_addon/resolve/client/ayon_resolve/api/utils.py
@@ -13,11 +13,11 @@ log = Logger.get_logger(__name__)
def get_resolve_module():
- from ayon_core.hosts.resolve import api
+ from ayon_resolve import api
# dont run if already loaded
if api.bmdvr:
log.info(("resolve module is assigned to "
- f"`ayon_core.hosts.resolve.api.bmdvr`: {api.bmdvr}"))
+ f"`ayon_resolve.api.bmdvr`: {api.bmdvr}"))
return api.bmdvr
try:
"""
@@ -78,6 +78,6 @@ def get_resolve_module():
api.bmdvr = bmdvr
api.bmdvf = bmdvf
log.info(("Assigning resolve module to "
- f"`ayon_core.hosts.resolve.api.bmdvr`: {api.bmdvr}"))
+ f"`ayon_resolve.api.bmdvr`: {api.bmdvr}"))
log.info(("Assigning resolve module to "
- f"`ayon_core.hosts.resolve.api.bmdvf`: {api.bmdvf}"))
+ f"`ayon_resolve.api.bmdvf`: {api.bmdvf}"))
diff --git a/client/ayon_core/hosts/resolve/api/workio.py b/server_addon/resolve/client/ayon_resolve/api/workio.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/api/workio.py
rename to server_addon/resolve/client/ayon_resolve/api/workio.py
diff --git a/client/ayon_core/hosts/resolve/hooks/pre_resolve_last_workfile.py b/server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_last_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/hooks/pre_resolve_last_workfile.py
rename to server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_last_workfile.py
diff --git a/client/ayon_core/hosts/resolve/hooks/pre_resolve_setup.py b/server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_setup.py
similarity index 99%
rename from client/ayon_core/hosts/resolve/hooks/pre_resolve_setup.py
rename to server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_setup.py
index f45e28d5ab..ffd34d7b8d 100644
--- a/client/ayon_core/hosts/resolve/hooks/pre_resolve_setup.py
+++ b/server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_setup.py
@@ -2,7 +2,7 @@ import os
from pathlib import Path
import platform
from ayon_applications import PreLaunchHook, LaunchTypes
-from ayon_core.hosts.resolve.utils import setup
+from ayon_resolve.utils import setup
class PreLaunchResolveSetup(PreLaunchHook):
diff --git a/client/ayon_core/hosts/resolve/hooks/pre_resolve_startup.py b/server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_startup.py
similarity index 77%
rename from client/ayon_core/hosts/resolve/hooks/pre_resolve_startup.py
rename to server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_startup.py
index 300564f7cc..b357b10056 100644
--- a/client/ayon_core/hosts/resolve/hooks/pre_resolve_startup.py
+++ b/server_addon/resolve/client/ayon_resolve/hooks/pre_resolve_startup.py
@@ -1,7 +1,7 @@
import os
from ayon_applications import PreLaunchHook, LaunchTypes
-import ayon_core.hosts.resolve
+from ayon_resolve import RESOLVE_ADDON_ROOT
class PreLaunchResolveStartup(PreLaunchHook):
@@ -15,8 +15,7 @@ class PreLaunchResolveStartup(PreLaunchHook):
def execute(self):
# Set the openpype prelaunch startup script path for easy access
# in the LUA .scriptlib code
- op_resolve_root = os.path.dirname(ayon_core.hosts.resolve.__file__)
- script_path = os.path.join(op_resolve_root, "startup.py")
+ script_path = os.path.join(RESOLVE_ADDON_ROOT, "startup.py")
key = "AYON_RESOLVE_STARTUP_SCRIPT"
self.launch_context.env[key] = script_path
diff --git a/client/ayon_core/hosts/resolve/otio/__init__.py b/server_addon/resolve/client/ayon_resolve/otio/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/otio/__init__.py
rename to server_addon/resolve/client/ayon_resolve/otio/__init__.py
diff --git a/client/ayon_core/hosts/resolve/otio/davinci_export.py b/server_addon/resolve/client/ayon_resolve/otio/davinci_export.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/otio/davinci_export.py
rename to server_addon/resolve/client/ayon_resolve/otio/davinci_export.py
diff --git a/client/ayon_core/hosts/resolve/otio/davinci_import.py b/server_addon/resolve/client/ayon_resolve/otio/davinci_import.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/otio/davinci_import.py
rename to server_addon/resolve/client/ayon_resolve/otio/davinci_import.py
diff --git a/client/ayon_core/hosts/resolve/otio/utils.py b/server_addon/resolve/client/ayon_resolve/otio/utils.py
similarity index 100%
rename from client/ayon_core/hosts/resolve/otio/utils.py
rename to server_addon/resolve/client/ayon_resolve/otio/utils.py
diff --git a/client/ayon_core/hosts/resolve/plugins/create/create_shot_clip.py b/server_addon/resolve/client/ayon_resolve/plugins/create/create_shot_clip.py
similarity index 99%
rename from client/ayon_core/hosts/resolve/plugins/create/create_shot_clip.py
rename to server_addon/resolve/client/ayon_resolve/plugins/create/create_shot_clip.py
index cbc03da3b6..da98c8de7d 100644
--- a/client/ayon_core/hosts/resolve/plugins/create/create_shot_clip.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/create/create_shot_clip.py
@@ -1,6 +1,6 @@
# from pprint import pformat
-from ayon_core.hosts.resolve.api import plugin, lib
-from ayon_core.hosts.resolve.api.lib import (
+from ayon_resolve.api import plugin, lib
+from ayon_resolve.api.lib import (
get_video_track_names,
create_bin,
)
diff --git a/client/ayon_core/hosts/resolve/plugins/load/load_clip.py b/server_addon/resolve/client/ayon_resolve/plugins/load/load_clip.py
similarity index 98%
rename from client/ayon_core/hosts/resolve/plugins/load/load_clip.py
rename to server_addon/resolve/client/ayon_resolve/plugins/load/load_clip.py
index 2ce1c43957..7e3a5a254e 100644
--- a/client/ayon_core/hosts/resolve/plugins/load/load_clip.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/load/load_clip.py
@@ -1,7 +1,7 @@
import ayon_api
-from ayon_core.hosts.resolve.api import lib, plugin
-from ayon_core.hosts.resolve.api.pipeline import (
+from ayon_resolve.api import lib, plugin
+from ayon_resolve.api.pipeline import (
containerise,
update_container,
)
diff --git a/client/ayon_core/hosts/resolve/plugins/load/load_editorial_package.py b/server_addon/resolve/client/ayon_resolve/plugins/load/load_editorial_package.py
similarity index 96%
rename from client/ayon_core/hosts/resolve/plugins/load/load_editorial_package.py
rename to server_addon/resolve/client/ayon_resolve/plugins/load/load_editorial_package.py
index 33395534fa..234e7b7f71 100644
--- a/client/ayon_core/hosts/resolve/plugins/load/load_editorial_package.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/load/load_editorial_package.py
@@ -5,7 +5,7 @@ from ayon_core.pipeline import (
get_representation_path,
)
-from ayon_core.hosts.resolve.api import lib
+from ayon_resolve.api import lib
class LoadEditorialPackage(load.LoaderPlugin):
diff --git a/client/ayon_core/hosts/resolve/plugins/publish/extract_workfile.py b/server_addon/resolve/client/ayon_resolve/plugins/publish/extract_workfile.py
similarity index 95%
rename from client/ayon_core/hosts/resolve/plugins/publish/extract_workfile.py
rename to server_addon/resolve/client/ayon_resolve/plugins/publish/extract_workfile.py
index 48ebdee7e3..77d14ccdc5 100644
--- a/client/ayon_core/hosts/resolve/plugins/publish/extract_workfile.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/publish/extract_workfile.py
@@ -2,7 +2,7 @@ import os
import pyblish.api
from ayon_core.pipeline import publish
-from ayon_core.hosts.resolve.api.lib import get_project_manager
+from ayon_resolve.api.lib import get_project_manager
class ExtractWorkfile(publish.Extractor):
diff --git a/client/ayon_core/hosts/resolve/plugins/publish/precollect_instances.py b/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py
similarity index 99%
rename from client/ayon_core/hosts/resolve/plugins/publish/precollect_instances.py
rename to server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py
index caa79c85c0..10e1eba3e3 100644
--- a/client/ayon_core/hosts/resolve/plugins/publish/precollect_instances.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py
@@ -3,7 +3,7 @@ from pprint import pformat
import pyblish
from ayon_core.pipeline import AYON_INSTANCE_ID, AVALON_INSTANCE_ID
-from ayon_core.hosts.resolve.api.lib import (
+from ayon_resolve.api.lib import (
get_current_timeline_items,
get_timeline_item_pype_tag,
publish_clip_color,
diff --git a/client/ayon_core/hosts/resolve/plugins/publish/precollect_workfile.py b/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_workfile.py
similarity index 94%
rename from client/ayon_core/hosts/resolve/plugins/publish/precollect_workfile.py
rename to server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_workfile.py
index 6158cf1d61..a388d4bc59 100644
--- a/client/ayon_core/hosts/resolve/plugins/publish/precollect_workfile.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_workfile.py
@@ -3,8 +3,8 @@ from pprint import pformat
from ayon_core.pipeline import get_current_folder_path
-from ayon_core.hosts.resolve import api as rapi
-from ayon_core.hosts.resolve.otio import davinci_export
+from ayon_resolve import api as rapi
+from ayon_resolve.otio import davinci_export
class PrecollectWorkfile(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/resolve/startup.py b/server_addon/resolve/client/ayon_resolve/startup.py
similarity index 93%
rename from client/ayon_core/hosts/resolve/startup.py
rename to server_addon/resolve/client/ayon_resolve/startup.py
index 3ad0a6bf7b..7f0bd59055 100644
--- a/client/ayon_core/hosts/resolve/startup.py
+++ b/server_addon/resolve/client/ayon_resolve/startup.py
@@ -11,7 +11,7 @@ This code runs in a separate process to the main Resolve process.
"""
import os
from ayon_core.lib import Logger
-import ayon_core.hosts.resolve.api
+import ayon_resolve.api
log = Logger.get_logger(__name__)
@@ -27,7 +27,7 @@ def ensure_installed_host():
if host:
return host
- host = ayon_core.hosts.resolve.api.ResolveHost()
+ host = ayon_resolve.api.ResolveHost()
install_host(host)
return registered_host()
@@ -35,7 +35,7 @@ def ensure_installed_host():
def launch_menu():
print("Launching Resolve AYON menu..")
ensure_installed_host()
- ayon_core.hosts.resolve.api.launch_ayon_menu()
+ ayon_resolve.api.launch_ayon_menu()
def open_workfile(path):
diff --git a/client/ayon_core/hosts/resolve/utility_scripts/AYON__Menu.py b/server_addon/resolve/client/ayon_resolve/utility_scripts/AYON__Menu.py
similarity index 82%
rename from client/ayon_core/hosts/resolve/utility_scripts/AYON__Menu.py
rename to server_addon/resolve/client/ayon_resolve/utility_scripts/AYON__Menu.py
index b10b477beb..670544d605 100644
--- a/client/ayon_core/hosts/resolve/utility_scripts/AYON__Menu.py
+++ b/server_addon/resolve/client/ayon_resolve/utility_scripts/AYON__Menu.py
@@ -8,7 +8,7 @@ log = Logger.get_logger(__name__)
def main(env):
- from ayon_core.hosts.resolve.api import ResolveHost, launch_ayon_menu
+ from ayon_resolve.api import ResolveHost, launch_ayon_menu
# activate resolve from openpype
host = ResolveHost()
diff --git a/client/ayon_core/hosts/resolve/utility_scripts/ayon_startup.scriptlib b/server_addon/resolve/client/ayon_resolve/utility_scripts/ayon_startup.scriptlib
similarity index 100%
rename from client/ayon_core/hosts/resolve/utility_scripts/ayon_startup.scriptlib
rename to server_addon/resolve/client/ayon_resolve/utility_scripts/ayon_startup.scriptlib
diff --git a/client/ayon_core/hosts/resolve/utility_scripts/develop/OTIO_export.py b/server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OTIO_export.py
similarity index 96%
rename from client/ayon_core/hosts/resolve/utility_scripts/develop/OTIO_export.py
rename to server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OTIO_export.py
index c1c83eb060..4572d1354d 100644
--- a/client/ayon_core/hosts/resolve/utility_scripts/develop/OTIO_export.py
+++ b/server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OTIO_export.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
import os
-from ayon_core.hosts.resolve.otio import davinci_export as otio_export
+from ayon_resolve.otio import davinci_export as otio_export
resolve = bmd.scriptapp("Resolve") # noqa
fu = resolve.Fusion()
diff --git a/client/ayon_core/hosts/resolve/utility_scripts/develop/OTIO_import.py b/server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OTIO_import.py
similarity index 96%
rename from client/ayon_core/hosts/resolve/utility_scripts/develop/OTIO_import.py
rename to server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OTIO_import.py
index 5bbdd73402..17de1b6fc3 100644
--- a/client/ayon_core/hosts/resolve/utility_scripts/develop/OTIO_import.py
+++ b/server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OTIO_import.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
import os
-from ayon_core.hosts.resolve.otio import davinci_import as otio_import
+from ayon_resolve.otio import davinci_import as otio_import
resolve = bmd.scriptapp("Resolve") # noqa
fu = resolve.Fusion()
diff --git a/client/ayon_core/hosts/resolve/utility_scripts/develop/OpenPype_sync_util_scripts.py b/server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OpenPype_sync_util_scripts.py
similarity index 73%
rename from client/ayon_core/hosts/resolve/utility_scripts/develop/OpenPype_sync_util_scripts.py
rename to server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OpenPype_sync_util_scripts.py
index c394238860..5a069aff9e 100644
--- a/client/ayon_core/hosts/resolve/utility_scripts/develop/OpenPype_sync_util_scripts.py
+++ b/server_addon/resolve/client/ayon_resolve/utility_scripts/develop/OpenPype_sync_util_scripts.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import install_host
def main(env):
- from ayon_core.hosts.resolve.utils import setup
- import ayon_core.hosts.resolve.api as bmdvr
+ from ayon_resolve.utils import setup
+ import ayon_resolve.api as bmdvr
# Registers openpype's Global pyblish plugins
install_host(bmdvr)
setup(env)
diff --git a/client/ayon_core/hosts/resolve/utils.py b/server_addon/resolve/client/ayon_resolve/utils.py
similarity index 96%
rename from client/ayon_core/hosts/resolve/utils.py
rename to server_addon/resolve/client/ayon_resolve/utils.py
index 4ef6ea4f40..d256fda18d 100644
--- a/client/ayon_core/hosts/resolve/utils.py
+++ b/server_addon/resolve/client/ayon_resolve/utils.py
@@ -2,7 +2,7 @@ import os
import shutil
from ayon_core.lib import Logger, is_running_from_build
-RESOLVE_ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
+RESOLVE_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
def setup(env):
@@ -12,7 +12,7 @@ def setup(env):
util_scripts_dir = env["RESOLVE_UTILITY_SCRIPTS_DIR"]
util_scripts_paths = [os.path.join(
- RESOLVE_ROOT_DIR,
+ RESOLVE_ADDON_ROOT,
"utility_scripts"
)]
diff --git a/server_addon/resolve/client/ayon_resolve/version.py b/server_addon/resolve/client/ayon_resolve/version.py
new file mode 100644
index 0000000000..c8f8df554c
--- /dev/null
+++ b/server_addon/resolve/client/ayon_resolve/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'resolve' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/resolve/package.py b/server_addon/resolve/package.py
index cf92413bce..993f700e40 100644
--- a/server_addon/resolve/package.py
+++ b/server_addon/resolve/package.py
@@ -1,3 +1,10 @@
name = "resolve"
title = "DaVinci Resolve"
-version = "0.1.0"
+version = "0.2.0"
+
+client_dir = "ayon_resolve"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/server_addon/tvpaint/client/ayon_tvpaint/__init__.py b/server_addon/tvpaint/client/ayon_tvpaint/__init__.py
index b98680f204..2c4a052234 100644
--- a/server_addon/tvpaint/client/ayon_tvpaint/__init__.py
+++ b/server_addon/tvpaint/client/ayon_tvpaint/__init__.py
@@ -1,3 +1,4 @@
+from .version import __version__
from .addon import (
get_launch_script_path,
TVPaintAddon,
@@ -6,6 +7,8 @@ from .addon import (
__all__ = (
+ "__version__",
+
"get_launch_script_path",
"TVPaintAddon",
"TVPAINT_ROOT_DIR",
diff --git a/server_addon/tvpaint/client/ayon_tvpaint/addon.py b/server_addon/tvpaint/client/ayon_tvpaint/addon.py
index 6756b274f9..c98c929a96 100644
--- a/server_addon/tvpaint/client/ayon_tvpaint/addon.py
+++ b/server_addon/tvpaint/client/ayon_tvpaint/addon.py
@@ -1,6 +1,8 @@
import os
from ayon_core.addon import AYONAddon, IHostAddon
+from .version import __version__
+
TVPAINT_ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -14,6 +16,7 @@ def get_launch_script_path():
class TVPaintAddon(AYONAddon, IHostAddon):
name = "tvpaint"
+ version = __version__
host_name = "tvpaint"
def add_implementation_envs(self, env, _app):
diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py
index de61992d3f..18b06c9632 100644
--- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py
+++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py
@@ -8,6 +8,7 @@ class ImportImage(plugin.Loader):
product_types = {"render", "image", "background", "plate", "review"}
representations = {"*"}
+ settings_category = "tvpaint"
label = "Import Image"
order = 1
diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py
index ce08aa9cd9..88bf738999 100644
--- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py
+++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py
@@ -19,6 +19,7 @@ class LoadImage(plugin.Loader):
product_types = {"render", "image", "background", "plate", "review"}
representations = {"*"}
+ settings_category = "tvpaint"
label = "Load Image"
order = 1
diff --git a/server_addon/tvpaint/client/ayon_tvpaint/version.py b/server_addon/tvpaint/client/ayon_tvpaint/version.py
new file mode 100644
index 0000000000..03419cd02e
--- /dev/null
+++ b/server_addon/tvpaint/client/ayon_tvpaint/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'tvpaint' version."""
+__version__ = "0.2.1"
diff --git a/server_addon/tvpaint/package.py b/server_addon/tvpaint/package.py
index 3ab35f727e..eddb112b16 100644
--- a/server_addon/tvpaint/package.py
+++ b/server_addon/tvpaint/package.py
@@ -1,6 +1,6 @@
name = "tvpaint"
title = "TVPaint"
-version = "0.2.0"
+version = "0.2.1"
client_dir = "ayon_tvpaint"
ayon_required_addons = {
diff --git a/server_addon/tvpaint/pyproject.toml b/server_addon/tvpaint/pyproject.toml
new file mode 100644
index 0000000000..46d0611d74
--- /dev/null
+++ b/server_addon/tvpaint/pyproject.toml
@@ -0,0 +1,6 @@
+[project]
+name="tvpaint"
+description="AYON TVPaint addon."
+
+[ayon.runtimeDependencies]
+aiohttp_json_rpc = "*"