diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py
index 56d5c46858..c4407424cc 100644
--- a/client/ayon_core/addon/base.py
+++ b/client/ayon_core/addon/base.py
@@ -8,7 +8,6 @@ import inspect
import logging
import threading
import collections
-
from uuid import uuid4
from abc import ABCMeta, abstractmethod
@@ -50,10 +49,15 @@ IGNORED_MODULES_IN_AYON = set()
# When addon was moved from ayon-core codebase
# - this is used to log the missing addon
MOVED_ADDON_MILESTONE_VERSIONS = {
+ "aftereffects": VersionInfo(0, 2, 0),
"applications": VersionInfo(0, 2, 0),
+ "blender": VersionInfo(0, 2, 0),
"celaction": VersionInfo(0, 2, 0),
"clockify": VersionInfo(0, 2, 0),
"flame": VersionInfo(0, 2, 0),
+ "fusion": VersionInfo(0, 2, 0),
+ "harmony": VersionInfo(0, 2, 0),
+ "hiero": VersionInfo(0, 2, 0),
"max": VersionInfo(0, 2, 0),
"photoshop": VersionInfo(0, 2, 0),
"traypublisher": VersionInfo(0, 2, 0),
@@ -61,7 +65,9 @@ MOVED_ADDON_MILESTONE_VERSIONS = {
"maya": VersionInfo(0, 2, 0),
"nuke": VersionInfo(0, 2, 0),
"resolve": VersionInfo(0, 2, 0),
+ "royalrender": VersionInfo(0, 2, 0),
"substancepainter": VersionInfo(0, 2, 0),
+ "houdini": VersionInfo(0, 3, 0),
}
@@ -550,6 +556,9 @@ class AYONAddon(object):
enabled = True
_id = None
+ # Temporary variable for 'version' property
+ _missing_version_warned = False
+
def __init__(self, manager, settings):
self.manager = manager
@@ -580,6 +589,26 @@ class AYONAddon(object):
pass
+ @property
+ def version(self):
+ """Addon version.
+
+ Todo:
+ Should be abstract property (required). Introduced in
+ ayon-core 0.3.3 .
+
+ Returns:
+ str: Addon version as semver compatible string.
+
+ """
+ if not self.__class__._missing_version_warned:
+ self.__class__._missing_version_warned = True
+ print(
+ f"DEV WARNING: Addon '{self.name}' does not have"
+ f" defined version."
+ )
+ return "0.0.0"
+
def initialize(self, settings):
"""Initialization of addon attributes.
@@ -695,6 +724,30 @@ class OpenPypeAddOn(OpenPypeModule):
enabled = True
+class _AddonReportInfo:
+ def __init__(
+ self, class_name, name, version, report_value_by_label
+ ):
+ self.class_name = class_name
+ self.name = name
+ self.version = version
+ self.report_value_by_label = report_value_by_label
+
+ @classmethod
+ def from_addon(cls, addon, report):
+ class_name = addon.__class__.__name__
+ report_value_by_label = {
+ label: reported.get(class_name)
+ for label, reported in report.items()
+ }
+ return cls(
+ addon.__class__.__name__,
+ addon.name,
+ addon.version,
+ report_value_by_label
+ )
+
+
class AddonsManager:
"""Manager of addons that helps to load and prepare them to work.
@@ -871,10 +924,6 @@ class AddonsManager:
name_alias = getattr(addon, "openpype_alias", None)
if name_alias:
aliased_names.append((name_alias, addon))
- enabled_str = "X"
- if not addon.enabled:
- enabled_str = " "
- self.log.debug("[{}] {}".format(enabled_str, name))
now = time.time()
report[addon.__class__.__name__] = now - prev_start_time
@@ -886,6 +935,13 @@ class AddonsManager:
exc_info=True
)
+ for addon_name in sorted(self._addons_by_name.keys()):
+ addon = self._addons_by_name[addon_name]
+ enabled_str = "X" if addon.enabled else " "
+ self.log.debug(
+ f"[{enabled_str}] {addon.name} ({addon.version})"
+ )
+
for item in aliased_names:
name_alias, addon = item
if name_alias not in self._addons_by_name:
@@ -1174,39 +1230,55 @@ class AddonsManager:
available_col_names |= set(addon_names.keys())
# Prepare ordered dictionary for columns
- cols = collections.OrderedDict()
- # Add addon names to first columnt
- cols["Addon name"] = list(sorted(
- addon.__class__.__name__
+ addons_info = [
+ _AddonReportInfo.from_addon(addon, self._report)
for addon in self.addons
if addon.__class__.__name__ in available_col_names
- ))
+ ]
+ addons_info.sort(key=lambda x: x.name)
+
+ addon_name_rows = [
+ addon_info.name
+ for addon_info in addons_info
+ ]
+ addon_version_rows = [
+ addon_info.version
+ for addon_info in addons_info
+ ]
+
# Add total key (as last addon)
- cols["Addon name"].append(self._report_total_key)
+ addon_name_rows.append(self._report_total_key)
+ addon_version_rows.append(f"({len(addons_info)})")
+
+ cols = collections.OrderedDict()
+ # Add addon names to first columnt
+ cols["Addon name"] = addon_name_rows
+ cols["Version"] = addon_version_rows
# Add columns from report
+ total_by_addon = {
+ row: 0
+ for row in addon_name_rows
+ }
for label in self._report.keys():
- cols[label] = []
-
- total_addon_times = {}
- for addon_name in cols["Addon name"]:
- total_addon_times[addon_name] = 0
-
- for label, reported in self._report.items():
- for addon_name in cols["Addon name"]:
- col_time = reported.get(addon_name)
- if col_time is None:
- cols[label].append("N/A")
+ rows = []
+ col_total = 0
+ for addon_info in addons_info:
+ value = addon_info.report_value_by_label.get(label)
+ if value is None:
+ rows.append("N/A")
continue
- cols[label].append("{:.3f}".format(col_time))
- total_addon_times[addon_name] += col_time
-
+ rows.append("{:.3f}".format(value))
+ total_by_addon[addon_info.name] += value
+ col_total += value
+ total_by_addon[self._report_total_key] += col_total
+ rows.append("{:.3f}".format(col_total))
+ cols[label] = rows
# Add to also total column that should sum the row
- cols[self._report_total_key] = []
- for addon_name in cols["Addon name"]:
- cols[self._report_total_key].append(
- "{:.3f}".format(total_addon_times[addon_name])
- )
+ cols[self._report_total_key] = [
+ "{:.3f}".format(total_by_addon[addon_name])
+ for addon_name in cols["Addon name"]
+ ]
# Prepare column widths and total row count
# - column width is by
diff --git a/client/ayon_core/hosts/blender/__init__.py b/client/ayon_core/hosts/blender/__init__.py
deleted file mode 100644
index 2a6603606a..0000000000
--- a/client/ayon_core/hosts/blender/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from .addon import BlenderAddon
-
-
-__all__ = (
- "BlenderAddon",
-)
diff --git a/client/ayon_core/hosts/hiero/__init__.py b/client/ayon_core/hosts/hiero/__init__.py
deleted file mode 100644
index e6744d5aec..0000000000
--- a/client/ayon_core/hosts/hiero/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from .addon import (
- HIERO_ROOT_DIR,
- HieroAddon,
-)
-
-
-__all__ = (
- "HIERO_ROOT_DIR",
- "HieroAddon",
-)
diff --git a/client/ayon_core/modules/deadline/deadline_module.py b/client/ayon_core/modules/deadline/deadline_module.py
index b1089bbfe2..ea0350d2d9 100644
--- a/client/ayon_core/modules/deadline/deadline_module.py
+++ b/client/ayon_core/modules/deadline/deadline_module.py
@@ -7,6 +7,8 @@ import six
from ayon_core.lib import Logger
from ayon_core.modules import AYONAddon, IPluginPaths
+from .version import __version__
+
class DeadlineWebserviceError(Exception):
"""
@@ -16,6 +18,7 @@ class DeadlineWebserviceError(Exception):
class DeadlineModule(AYONAddon, IPluginPaths):
name = "deadline"
+ version = __version__
def initialize(self, studio_settings):
# This module is always enabled
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/modules/job_queue/__init__.py b/client/ayon_core/modules/job_queue/__init__.py
index 0a4c62abfb..041782dd29 100644
--- a/client/ayon_core/modules/job_queue/__init__.py
+++ b/client/ayon_core/modules/job_queue/__init__.py
@@ -1,6 +1,9 @@
+from .version import __version__
from .addon import JobQueueAddon
__all__ = (
+ "__version__",
+
"JobQueueAddon",
)
diff --git a/client/ayon_core/modules/job_queue/addon.py b/client/ayon_core/modules/job_queue/addon.py
index 0fa54eb2f0..96f6ff0d4d 100644
--- a/client/ayon_core/modules/job_queue/addon.py
+++ b/client/ayon_core/modules/job_queue/addon.py
@@ -44,9 +44,12 @@ import platform
from ayon_core.addon import AYONAddon, click_wrap
from ayon_core.settings import get_studio_settings
+from .version import __version__
+
class JobQueueAddon(AYONAddon):
name = "job_queue"
+ version = __version__
def initialize(self, studio_settings):
addon_settings = studio_settings.get(self.name) or {}
diff --git a/client/ayon_core/modules/job_queue/version.py b/client/ayon_core/modules/job_queue/version.py
new file mode 100644
index 0000000000..5becc17c04
--- /dev/null
+++ b/client/ayon_core/modules/job_queue/version.py
@@ -0,0 +1 @@
+__version__ = "1.0.0"
diff --git a/client/ayon_core/modules/launcher_action.py b/client/ayon_core/modules/launcher_action.py
index 38e88d36ca..344b0bc389 100644
--- a/client/ayon_core/modules/launcher_action.py
+++ b/client/ayon_core/modules/launcher_action.py
@@ -7,6 +7,7 @@ from ayon_core.addon import AYONAddon, ITrayAction
class LauncherAction(AYONAddon, ITrayAction):
label = "Launcher"
name = "launcher_tool"
+ version = "1.0.0"
def initialize(self, settings):
diff --git a/client/ayon_core/modules/loader_action.py b/client/ayon_core/modules/loader_action.py
index 1e45db05dc..a58d7fd456 100644
--- a/client/ayon_core/modules/loader_action.py
+++ b/client/ayon_core/modules/loader_action.py
@@ -3,6 +3,7 @@ from ayon_core.addon import AYONAddon, ITrayAddon
class LoaderAddon(AYONAddon, ITrayAddon):
name = "loader_tool"
+ version = "1.0.0"
def initialize(self, settings):
# Tray attributes
diff --git a/client/ayon_core/modules/python_console_interpreter/addon.py b/client/ayon_core/modules/python_console_interpreter/addon.py
index ffad3ce707..b0dce2585e 100644
--- a/client/ayon_core/modules/python_console_interpreter/addon.py
+++ b/client/ayon_core/modules/python_console_interpreter/addon.py
@@ -4,6 +4,7 @@ from ayon_core.addon import AYONAddon, ITrayAction
class PythonInterpreterAction(AYONAddon, ITrayAction):
label = "Console"
name = "python_interpreter"
+ version = "1.0.0"
admin_action = True
def initialize(self, settings):
diff --git a/client/ayon_core/modules/timers_manager/__init__.py b/client/ayon_core/modules/timers_manager/__init__.py
index 5d7a4166d3..1ec0d9b74b 100644
--- a/client/ayon_core/modules/timers_manager/__init__.py
+++ b/client/ayon_core/modules/timers_manager/__init__.py
@@ -1,7 +1,10 @@
+from .version import __version__
from .timers_manager import (
TimersManager
)
__all__ = (
+ "__version__",
+
"TimersManager",
)
diff --git a/client/ayon_core/modules/timers_manager/timers_manager.py b/client/ayon_core/modules/timers_manager/timers_manager.py
index 4212ff6b25..2aac7b2a49 100644
--- a/client/ayon_core/modules/timers_manager/timers_manager.py
+++ b/client/ayon_core/modules/timers_manager/timers_manager.py
@@ -10,6 +10,7 @@ from ayon_core.addon import (
)
from ayon_core.lib.events import register_event_callback
+from .version import __version__
from .exceptions import InvalidContextError
TIMER_MODULE_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -96,6 +97,7 @@ class TimersManager(
See `ExampleTimersManagerConnector`.
"""
name = "timers_manager"
+ version = __version__
label = "Timers Service"
_required_methods = (
diff --git a/client/ayon_core/modules/timers_manager/version.py b/client/ayon_core/modules/timers_manager/version.py
new file mode 100644
index 0000000000..485f44ac21
--- /dev/null
+++ b/client/ayon_core/modules/timers_manager/version.py
@@ -0,0 +1 @@
+__version__ = "0.1.1"
diff --git a/client/ayon_core/modules/webserver/__init__.py b/client/ayon_core/modules/webserver/__init__.py
index 0d3f767638..32f2c55f65 100644
--- a/client/ayon_core/modules/webserver/__init__.py
+++ b/client/ayon_core/modules/webserver/__init__.py
@@ -1,8 +1,13 @@
+from .version import __version__
+from .structures import HostMsgAction
from .webserver_module import (
WebServerAddon
)
__all__ = (
+ "__version__",
+
+ "HostMsgAction",
"WebServerAddon",
)
diff --git a/client/ayon_core/modules/webserver/host_console_listener.py b/client/ayon_core/modules/webserver/host_console_listener.py
index ed8a32b9f2..2efd768e24 100644
--- a/client/ayon_core/modules/webserver/host_console_listener.py
+++ b/client/ayon_core/modules/webserver/host_console_listener.py
@@ -9,22 +9,18 @@ from qtpy import QtWidgets
from ayon_core.addon import ITrayService
from ayon_core.tools.stdout_broker.window import ConsoleDialog
+from .structures import HostMsgAction
+
log = logging.getLogger(__name__)
+# Host listener icon type
class IconType:
IDLE = "idle"
RUNNING = "running"
FAILED = "failed"
-class MsgAction:
- CONNECTING = "connecting"
- INITIALIZED = "initialized"
- ADD = "add"
- CLOSE = "close"
-
-
class HostListener:
def __init__(self, webserver, module):
self._window_per_id = {}
@@ -96,22 +92,22 @@ class HostListener:
if msg.type == aiohttp.WSMsgType.TEXT:
host_name, action, text = self._parse_message(msg)
- if action == MsgAction.CONNECTING:
+ if action == HostMsgAction.CONNECTING:
self._action_per_id[host_name] = None
# must be sent to main thread, or action wont trigger
self.module.execute_in_main_thread(
lambda: self._host_is_connecting(host_name, text))
- elif action == MsgAction.CLOSE:
+ elif action == HostMsgAction.CLOSE:
# clean close
self._close(host_name)
await ws.close()
- elif action == MsgAction.INITIALIZED:
+ elif action == HostMsgAction.INITIALIZED:
self.module.execute_in_main_thread(
# must be queued as _host_is_connecting might not
# be triggered/finished yet
lambda: self._set_host_icon(host_name,
IconType.RUNNING))
- elif action == MsgAction.ADD:
+ elif action == HostMsgAction.ADD:
self.module.execute_in_main_thread(
lambda: self._add_text(host_name, text))
elif msg.type == aiohttp.WSMsgType.ERROR:
diff --git a/client/ayon_core/modules/webserver/structures.py b/client/ayon_core/modules/webserver/structures.py
new file mode 100644
index 0000000000..a598e3342a
--- /dev/null
+++ b/client/ayon_core/modules/webserver/structures.py
@@ -0,0 +1,6 @@
+# Host listener message actions
+class HostMsgAction:
+ CONNECTING = "connecting"
+ INITIALIZED = "initialized"
+ ADD = "add"
+ CLOSE = "close"
diff --git a/client/ayon_core/modules/webserver/version.py b/client/ayon_core/modules/webserver/version.py
new file mode 100644
index 0000000000..5becc17c04
--- /dev/null
+++ b/client/ayon_core/modules/webserver/version.py
@@ -0,0 +1 @@
+__version__ = "1.0.0"
diff --git a/client/ayon_core/modules/webserver/webserver_module.py b/client/ayon_core/modules/webserver/webserver_module.py
index c324e0dd18..997b6f754c 100644
--- a/client/ayon_core/modules/webserver/webserver_module.py
+++ b/client/ayon_core/modules/webserver/webserver_module.py
@@ -26,9 +26,12 @@ import socket
from ayon_core import resources
from ayon_core.addon import AYONAddon, ITrayService
+from .version import __version__
+
class WebServerAddon(AYONAddon, ITrayService):
name = "webserver"
+ version = __version__
label = "WebServer"
webserver_url_env = "AYON_WEBSERVER_URL"
diff --git a/client/ayon_core/pipeline/context_tools.py b/client/ayon_core/pipeline/context_tools.py
index c32d04c44c..8b72405048 100644
--- a/client/ayon_core/pipeline/context_tools.py
+++ b/client/ayon_core/pipeline/context_tools.py
@@ -11,7 +11,12 @@ from pyblish.lib import MessageHandler
from ayon_core import AYON_CORE_ROOT
from ayon_core.host import HostBase
-from ayon_core.lib import is_in_tests, initialize_ayon_connection, emit_event
+from ayon_core.lib import (
+ is_in_tests,
+ initialize_ayon_connection,
+ emit_event,
+ version_up
+)
from ayon_core.addon import load_addons, AddonsManager
from ayon_core.settings import get_project_settings
@@ -21,6 +26,8 @@ from .template_data import get_template_data_with_names
from .workfile import (
get_workdir,
get_custom_workfile_template_by_string_context,
+ get_workfile_template_key_from_context,
+ get_last_workfile
)
from . import (
register_loader_plugin_path,
@@ -579,3 +586,48 @@ def get_process_id():
if _process_id is None:
_process_id = str(uuid.uuid4())
return _process_id
+
+
+def version_up_current_workfile():
+ """Function to increment and save workfile
+ """
+ host = registered_host()
+ if not host.has_unsaved_changes():
+ print("No unsaved changes, skipping file save..")
+ return
+
+ project_name = get_current_project_name()
+ folder_path = get_current_folder_path()
+ task_name = get_current_task_name()
+ host_name = get_current_host_name()
+
+ template_key = get_workfile_template_key_from_context(
+ project_name,
+ folder_path,
+ task_name,
+ host_name,
+ )
+ anatomy = Anatomy(project_name)
+
+ data = get_template_data_with_names(
+ project_name, folder_path, task_name, host_name
+ )
+ data["root"] = anatomy.roots
+
+ work_template = anatomy.get_template_item("work", template_key)
+
+ # Define saving file extension
+ extensions = host.get_workfile_extensions()
+ current_file = host.get_current_workfile()
+ if current_file:
+ extensions = [os.path.splitext(current_file)[-1]]
+
+ work_root = work_template["directory"].format_strict(data)
+ file_template = work_template["file"].template
+ last_workfile_path = get_last_workfile(
+ work_root, file_template, data, extensions, True
+ )
+ new_workfile_path = version_up(last_workfile_path)
+ if os.path.exists(new_workfile_path):
+ new_workfile_path = version_up(new_workfile_path)
+ host.save_workfile(new_workfile_path)
diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py
index 8d3644637b..7f63089d33 100644
--- a/client/ayon_core/pipeline/publish/lib.py
+++ b/client/ayon_core/pipeline/publish/lib.py
@@ -336,17 +336,16 @@ def get_plugin_settings(plugin, project_settings, log, category=None):
settings_category = getattr(plugin, "settings_category", None)
if settings_category:
try:
- return (
- project_settings
- [settings_category]
- ["publish"]
- [plugin.__name__]
- )
+ category_settings = project_settings[settings_category]
except KeyError:
log.warning((
- "Couldn't find plugin '{}' settings"
- " under settings category '{}'"
- ).format(plugin.__name__, settings_category))
+ "Couldn't find settings category '{}' in project settings"
+ ).format(settings_category))
+ return {}
+
+ try:
+ return category_settings["publish"][plugin.__name__]
+ except KeyError:
return {}
# Use project settings based on a category name
diff --git a/client/ayon_core/tools/adobe_webserver/readme.txt b/client/ayon_core/tools/adobe_webserver/readme.txt
deleted file mode 100644
index d02d390277..0000000000
--- a/client/ayon_core/tools/adobe_webserver/readme.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Adobe webserver
----------------
-Aiohttp (Asyncio) based websocket server used for communication with host
-applications, currently only for Adobe (but could be used for any non python
-DCC which has websocket client).
-
-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.
-
-(Different from `ayon_core/modules/webserver` as that one is running in Tray,
-this one is running in spawn Python process.)
\ No newline at end of file
diff --git a/client/ayon_core/tools/loader/abstract.py b/client/ayon_core/tools/loader/abstract.py
index 509db4d037..a1c1e6a062 100644
--- a/client/ayon_core/tools/loader/abstract.py
+++ b/client/ayon_core/tools/loader/abstract.py
@@ -172,12 +172,30 @@ class VersionItem:
def __gt__(self, other):
if not isinstance(other, VersionItem):
return False
- if (
- other.version == self.version
- and self.is_hero
- ):
+ # Make sure hero versions are positive
+ version = abs(self.version)
+ other_version = abs(other.version)
+ # Hero version is greater than non-hero
+ if version == other_version:
+ return self.is_hero
+ return version > other_version
+
+ def __lt__(self, other):
+ if not isinstance(other, VersionItem):
return True
- return other.version < self.version
+ # Make sure hero versions are positive
+ version = abs(self.version)
+ other_version = abs(other.version)
+ # Non-hero version is lesser than hero
+ if version == other_version:
+ return not self.is_hero
+ return version < other_version
+
+ def __ge__(self, other):
+ return self.__eq__(other) or self.__gt__(other)
+
+ def __le__(self, other):
+ return self.__eq__(other) or self.__lt__(other)
def to_data(self):
return {
diff --git a/client/ayon_core/tools/loader/control.py b/client/ayon_core/tools/loader/control.py
index 35188369c2..9fead226f0 100644
--- a/client/ayon_core/tools/loader/control.py
+++ b/client/ayon_core/tools/loader/control.py
@@ -348,10 +348,18 @@ class LoaderController(BackendLoaderController, FrontendLoaderController):
return set()
if not self._loaded_products_cache.is_valid:
- if isinstance(self._host, ILoadHost):
- containers = self._host.get_containers()
- else:
- containers = self._host.ls()
+ try:
+ if isinstance(self._host, ILoadHost):
+ containers = self._host.get_containers()
+ else:
+ containers = self._host.ls()
+
+ except BaseException:
+ self.log.error(
+ "Failed to collect loaded products.", exc_info=True
+ )
+ containers = []
+
repre_ids = set()
for container in containers:
repre_id = container.get("representation")
diff --git a/client/ayon_core/tools/loader/ui/folders_widget.py b/client/ayon_core/tools/loader/ui/folders_widget.py
index 7b146456da..efd041937d 100644
--- a/client/ayon_core/tools/loader/ui/folders_widget.py
+++ b/client/ayon_core/tools/loader/ui/folders_widget.py
@@ -321,6 +321,8 @@ class LoaderFoldersWidget(QtWidgets.QWidget):
"""
self._folders_proxy_model.setFilterFixedString(name)
+ if name:
+ self._folders_view.expandAll()
def set_merged_products_selection(self, items):
"""
diff --git a/client/ayon_core/tools/loader/ui/products_model.py b/client/ayon_core/tools/loader/ui/products_model.py
index 8035b1f0fe..7b9124608b 100644
--- a/client/ayon_core/tools/loader/ui/products_model.py
+++ b/client/ayon_core/tools/loader/ui/products_model.py
@@ -199,7 +199,9 @@ class ProductsModel(QtGui.QStandardItemModel):
product_item = self._product_items_by_id.get(product_id)
if product_item is None:
return None
- return list(product_item.version_items.values())
+ product_items = list(product_item.version_items.values())
+ product_items.sort(reverse=True)
+ return product_items
if role == QtCore.Qt.EditRole:
return None
diff --git a/client/ayon_core/tools/stdout_broker/__init__.py b/client/ayon_core/tools/stdout_broker/__init__.py
index e69de29bb2..e104c60573 100644
--- a/client/ayon_core/tools/stdout_broker/__init__.py
+++ b/client/ayon_core/tools/stdout_broker/__init__.py
@@ -0,0 +1,5 @@
+from .broker import StdOutBroker
+
+__all__ = (
+ "StdOutBroker",
+)
diff --git a/client/ayon_core/tools/stdout_broker/app.py b/client/ayon_core/tools/stdout_broker/app.py
index 15447b608b..ae73db1bb9 100644
--- a/client/ayon_core/tools/stdout_broker/app.py
+++ b/client/ayon_core/tools/stdout_broker/app.py
@@ -1,173 +1,12 @@
-import os
-import sys
-import threading
-import collections
-import websocket
-import json
-from datetime import datetime
+import warnings
+from .broker import StdOutBroker
-from ayon_core.lib import Logger
-from openpype_modules.webserver.host_console_listener import MsgAction
+warnings.warn(
+ (
+ "Import of 'StdOutBroker' from 'ayon_core.tools.stdout_broker.app'"
+ " is deprecated. Please use 'ayon_core.tools.stdout_broker' instead."
+ ),
+ DeprecationWarning
+)
-log = Logger.get_logger(__name__)
-
-
-class StdOutBroker:
- """
- Application showing console in Services tray for non python hosts
- instead of cmd window.
- """
- MAX_LINES = 10000
- TIMER_TIMEOUT = 0.200
-
- def __init__(self, host_name):
- self.host_name = host_name
- self.webserver_client = None
-
- self.original_stdout_write = None
- self.original_stderr_write = None
- self.log_queue = collections.deque()
-
- date_str = datetime.now().strftime("%d%m%Y%H%M%S")
- self.host_id = "{}_{}".format(self.host_name, date_str)
-
- self._std_available = False
- self._is_running = False
- self._catch_std_outputs()
-
- self._timer = None
-
- @property
- def send_to_tray(self):
- """Checks if connected to tray and have access to logs."""
- return self.webserver_client and self._std_available
-
- def start(self):
- """Start app, create and start timer"""
- if not self._std_available or self._is_running:
- return
- self._is_running = True
- self._create_timer()
- self._connect_to_tray()
-
- def stop(self):
- """Disconnect from Tray, process last logs"""
- if not self._is_running:
- return
- self._is_running = False
- self._process_queue()
- self._disconnect_from_tray()
-
- def host_connected(self):
- """Send to Tray console that host is ready - icon change. """
- log.info("Host {} connected".format(self.host_id))
-
- payload = {
- "host": self.host_id,
- "action": MsgAction.INITIALIZED,
- "text": "Integration with {}".format(
- str.capitalize(self.host_name))
- }
- self._send(payload)
-
- def _create_timer(self):
- timer = threading.Timer(self.TIMER_TIMEOUT, self._timer_callback)
- timer.start()
- self._timer = timer
-
- def _timer_callback(self):
- if not self._is_running:
- return
- self._process_queue()
- self._create_timer()
-
- def _connect_to_tray(self):
- """Connect to Tray webserver to pass console output. """
- if not self._std_available: # not content to log
- return
- ws = websocket.WebSocket()
- webserver_url = os.environ.get("AYON_WEBSERVER_URL")
-
- if not webserver_url:
- print("Unknown webserver url, cannot connect to pass log")
- return
-
- webserver_url = webserver_url.replace("http", "ws")
- ws.connect("{}/ws/host_listener".format(webserver_url))
- self.webserver_client = ws
-
- payload = {
- "host": self.host_id,
- "action": MsgAction.CONNECTING,
- "text": "Integration with {}".format(
- str.capitalize(self.host_name))
- }
- self._send(payload)
-
- def _disconnect_from_tray(self):
- """Send to Tray that host is closing - remove from Services. """
- print("Host {} closing".format(self.host_name))
- if not self.webserver_client:
- return
-
- payload = {
- "host": self.host_id,
- "action": MsgAction.CLOSE,
- "text": "Integration with {}".format(
- str.capitalize(self.host_name))
- }
-
- self._send(payload)
- self.webserver_client.close()
-
- def _catch_std_outputs(self):
- """Redirects standard out and error to own functions"""
- if sys.stdout:
- self.original_stdout_write = sys.stdout.write
- sys.stdout.write = self._my_stdout_write
- self._std_available = True
-
- if sys.stderr:
- self.original_stderr_write = sys.stderr.write
- sys.stderr.write = self._my_stderr_write
- self._std_available = True
-
- def _my_stdout_write(self, text):
- """Appends outputted text to queue, keep writing to original stdout"""
- if self.original_stdout_write is not None:
- self.original_stdout_write(text)
- if self.send_to_tray:
- self.log_queue.append(text)
-
- def _my_stderr_write(self, text):
- """Appends outputted text to queue, keep writing to original stderr"""
- if self.original_stderr_write is not None:
- self.original_stderr_write(text)
- if self.send_to_tray:
- self.log_queue.append(text)
-
- def _process_queue(self):
- """Sends lines and purges queue"""
- if not self.send_to_tray:
- return
-
- lines = tuple(self.log_queue)
- self.log_queue.clear()
- if lines:
- payload = {
- "host": self.host_id,
- "action": MsgAction.ADD,
- "text": "\n".join(lines)
- }
-
- self._send(payload)
-
- def _send(self, payload):
- """Worker method to send to existing websocket connection."""
- if not self.send_to_tray:
- return
-
- try:
- self.webserver_client.send(json.dumps(payload))
- except ConnectionResetError: # Tray closed
- self._connect_to_tray()
+__all__ = ("StdOutBroker", )
diff --git a/client/ayon_core/tools/stdout_broker/broker.py b/client/ayon_core/tools/stdout_broker/broker.py
new file mode 100644
index 0000000000..291936008b
--- /dev/null
+++ b/client/ayon_core/tools/stdout_broker/broker.py
@@ -0,0 +1,174 @@
+import os
+import sys
+import threading
+import collections
+import json
+from datetime import datetime
+
+import websocket
+
+from ayon_core.lib import Logger
+from ayon_core.modules.webserver import HostMsgAction
+
+log = Logger.get_logger(__name__)
+
+
+class StdOutBroker:
+ """
+ Application showing console in Services tray for non python hosts
+ instead of cmd window.
+ """
+ MAX_LINES = 10000
+ TIMER_TIMEOUT = 0.200
+
+ def __init__(self, host_name):
+ self.host_name = host_name
+ self.webserver_client = None
+
+ self.original_stdout_write = None
+ self.original_stderr_write = None
+ self.log_queue = collections.deque()
+
+ date_str = datetime.now().strftime("%d%m%Y%H%M%S")
+ self.host_id = "{}_{}".format(self.host_name, date_str)
+
+ self._std_available = False
+ self._is_running = False
+ self._catch_std_outputs()
+
+ self._timer = None
+
+ @property
+ def send_to_tray(self):
+ """Checks if connected to tray and have access to logs."""
+ return self.webserver_client and self._std_available
+
+ def start(self):
+ """Start app, create and start timer"""
+ if not self._std_available or self._is_running:
+ return
+ self._is_running = True
+ self._create_timer()
+ self._connect_to_tray()
+
+ def stop(self):
+ """Disconnect from Tray, process last logs"""
+ if not self._is_running:
+ return
+ self._is_running = False
+ self._process_queue()
+ self._disconnect_from_tray()
+
+ def host_connected(self):
+ """Send to Tray console that host is ready - icon change. """
+ log.info("Host {} connected".format(self.host_id))
+
+ payload = {
+ "host": self.host_id,
+ "action": HostMsgAction.INITIALIZED,
+ "text": "Integration with {}".format(
+ str.capitalize(self.host_name))
+ }
+ self._send(payload)
+
+ def _create_timer(self):
+ timer = threading.Timer(self.TIMER_TIMEOUT, self._timer_callback)
+ timer.start()
+ self._timer = timer
+
+ def _timer_callback(self):
+ if not self._is_running:
+ return
+ self._process_queue()
+ self._create_timer()
+
+ def _connect_to_tray(self):
+ """Connect to Tray webserver to pass console output. """
+ if not self._std_available: # not content to log
+ return
+ ws = websocket.WebSocket()
+ webserver_url = os.environ.get("AYON_WEBSERVER_URL")
+
+ if not webserver_url:
+ print("Unknown webserver url, cannot connect to pass log")
+ return
+
+ webserver_url = webserver_url.replace("http", "ws")
+ ws.connect("{}/ws/host_listener".format(webserver_url))
+ self.webserver_client = ws
+
+ payload = {
+ "host": self.host_id,
+ "action": HostMsgAction.CONNECTING,
+ "text": "Integration with {}".format(
+ str.capitalize(self.host_name))
+ }
+ self._send(payload)
+
+ def _disconnect_from_tray(self):
+ """Send to Tray that host is closing - remove from Services. """
+ print("Host {} closing".format(self.host_name))
+ if not self.webserver_client:
+ return
+
+ payload = {
+ "host": self.host_id,
+ "action": HostMsgAction.CLOSE,
+ "text": "Integration with {}".format(
+ str.capitalize(self.host_name))
+ }
+
+ self._send(payload)
+ self.webserver_client.close()
+
+ def _catch_std_outputs(self):
+ """Redirects standard out and error to own functions"""
+ if sys.stdout:
+ self.original_stdout_write = sys.stdout.write
+ sys.stdout.write = self._my_stdout_write
+ self._std_available = True
+
+ if sys.stderr:
+ self.original_stderr_write = sys.stderr.write
+ sys.stderr.write = self._my_stderr_write
+ self._std_available = True
+
+ def _my_stdout_write(self, text):
+ """Appends outputted text to queue, keep writing to original stdout"""
+ if self.original_stdout_write is not None:
+ self.original_stdout_write(text)
+ if self.send_to_tray:
+ self.log_queue.append(text)
+
+ def _my_stderr_write(self, text):
+ """Appends outputted text to queue, keep writing to original stderr"""
+ if self.original_stderr_write is not None:
+ self.original_stderr_write(text)
+ if self.send_to_tray:
+ self.log_queue.append(text)
+
+ def _process_queue(self):
+ """Sends lines and purges queue"""
+ if not self.send_to_tray:
+ return
+
+ lines = tuple(self.log_queue)
+ self.log_queue.clear()
+ if lines:
+ payload = {
+ "host": self.host_id,
+ "action": HostMsgAction.ADD,
+ "text": "\n".join(lines)
+ }
+
+ self._send(payload)
+
+ def _send(self, payload):
+ """Worker method to send to existing websocket connection."""
+ if not self.send_to_tray:
+ return
+
+ try:
+ self.webserver_client.send(json.dumps(payload))
+ except ConnectionResetError: # Tray closed
+ self._connect_to_tray()
diff --git a/client/ayon_core/tools/tray/tray.py b/client/ayon_core/tools/tray/tray.py
index 957518afe4..eca87eb11d 100644
--- a/client/ayon_core/tools/tray/tray.py
+++ b/client/ayon_core/tools/tray/tray.py
@@ -447,8 +447,10 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
def initialize_addons(self):
self._initializing_addons = True
- self.tray_man.initialize_addons()
- self._initializing_addons = False
+ try:
+ self.tray_man.initialize_addons()
+ finally:
+ self._initializing_addons = False
def _click_timer_timeout(self):
self._click_timer.stop()
diff --git a/client/ayon_core/tools/utils/folders_widget.py b/client/ayon_core/tools/utils/folders_widget.py
index 2ad640de37..6aae68bf8a 100644
--- a/client/ayon_core/tools/utils/folders_widget.py
+++ b/client/ayon_core/tools/utils/folders_widget.py
@@ -370,6 +370,8 @@ class FoldersWidget(QtWidgets.QWidget):
"""
self._folders_proxy_model.setFilterFixedString(name)
+ if name:
+ self._folders_view.expandAll()
def refresh(self):
"""Refresh folders model.
diff --git a/pyproject.toml b/pyproject.toml
index 63d7434c06..2f30778519 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -79,12 +79,12 @@ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
exclude = [
"client/ayon_core/hosts/unreal/integration/*",
- "client/ayon_core/hosts/aftereffects/api/extension/js/libs/*",
- "client/ayon_core/hosts/hiero/api/startup/*",
"client/ayon_core/modules/deadline/repository/custom/plugins/CelAction/*",
"client/ayon_core/modules/deadline/repository/custom/plugins/HarmonyAYON/*",
"client/ayon_core/modules/click_wrap.py",
- "client/ayon_core/scripts/slates/__init__.py"
+ "client/ayon_core/scripts/slates/__init__.py",
+ "server_addon/hiero/client/ayon_hiero/api/startup/*",
+ "server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/*"
]
[tool.ruff.lint.per-file-ignores]
diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py
index 2640a3db37..4191cccb7b 100644
--- a/server/settings/publish_plugins.py
+++ b/server/settings/publish_plugins.py
@@ -798,7 +798,7 @@ class PublishPuginsModel(BaseSettingsModel):
)
ValidateOutdatedContainers: PluginStateByHostModel = SettingsField(
default_factory=PluginStateByHostModel,
- title="Validate Containers"
+ title="Validate Outdated Containers"
)
ValidateIntent: ValidateIntentModel = SettingsField(
default_factory=ValidateIntentModel,
diff --git a/server/settings/tools.py b/server/settings/tools.py
index 6c02a928bf..1cb070e2af 100644
--- a/server/settings/tools.py
+++ b/server/settings/tools.py
@@ -147,6 +147,15 @@ class WorkfilesLockProfile(BaseSettingsModel):
enabled: bool = SettingsField(True, title="Enabled")
+class AYONMenuModel(BaseSettingsModel):
+ _layout = "expanded"
+ version_up_current_workfile: bool = SettingsField(
+ False,
+ title="Version Up Workfile",
+ description="Add 'Version Up Workfile' to AYON menu"
+ )
+
+
class WorkfilesToolModel(BaseSettingsModel):
workfile_template_profiles: list[WorkfileTemplateProfile] = SettingsField(
default_factory=list,
@@ -297,6 +306,10 @@ class PublishToolModel(BaseSettingsModel):
class GlobalToolsModel(BaseSettingsModel):
+ ayon_menu: AYONMenuModel = SettingsField(
+ default_factory=AYONMenuModel,
+ title="AYON Menu"
+ )
creator: CreatorToolModel = SettingsField(
default_factory=CreatorToolModel,
title="Creator"
@@ -316,6 +329,9 @@ class GlobalToolsModel(BaseSettingsModel):
DEFAULT_TOOLS_VALUES = {
+ "ayon_menu": {
+ "version_up_current_workfile": False
+ },
"creator": {
"product_types_smart_select": [
{
diff --git a/client/ayon_core/hosts/aftereffects/__init__.py b/server_addon/aftereffects/client/ayon_aftereffects/__init__.py
similarity index 79%
rename from client/ayon_core/hosts/aftereffects/__init__.py
rename to server_addon/aftereffects/client/ayon_aftereffects/__init__.py
index 02ab287629..e8de12e42e 100644
--- a/client/ayon_core/hosts/aftereffects/__init__.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/__init__.py
@@ -1,3 +1,4 @@
+from .version import __version__
from .addon import (
AFTEREFFECTS_ADDON_ROOT,
AfterEffectsAddon,
@@ -6,6 +7,8 @@ from .addon import (
__all__ = (
+ "__version__",
+
"AFTEREFFECTS_ADDON_ROOT",
"AfterEffectsAddon",
"get_launch_script_path",
diff --git a/client/ayon_core/hosts/aftereffects/addon.py b/server_addon/aftereffects/client/ayon_aftereffects/addon.py
similarity index 94%
rename from client/ayon_core/hosts/aftereffects/addon.py
rename to server_addon/aftereffects/client/ayon_aftereffects/addon.py
index fc54043c1d..f659eba1cb 100644
--- a/client/ayon_core/hosts/aftereffects/addon.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/addon.py
@@ -2,11 +2,14 @@ import os
from ayon_core.addon import AYONAddon, IHostAddon
+from .version import __version__
+
AFTEREFFECTS_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
class AfterEffectsAddon(AYONAddon, IHostAddon):
name = "aftereffects"
+ version = __version__
host_name = "aftereffects"
def add_implementation_envs(self, env, _app):
diff --git a/client/ayon_core/hosts/aftereffects/api/README.md b/server_addon/aftereffects/client/ayon_aftereffects/api/README.md
similarity index 94%
rename from client/ayon_core/hosts/aftereffects/api/README.md
rename to server_addon/aftereffects/client/ayon_aftereffects/api/README.md
index 53eb896255..ca7d5b9b13 100644
--- a/client/ayon_core/hosts/aftereffects/api/README.md
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/README.md
@@ -25,7 +25,7 @@ download [Anastasiy’s Extension Manager](https://install.anastasiy.com/)
The easiest way to get the server and After Effects launch is with:
```
-python -c ^"import ayon_core.hosts.photoshop;ayon_core.hosts.aftereffects.launch(""c:\Program Files\Adobe\Adobe After Effects 2020\Support Files\AfterFX.exe"")^"
+python -c ^"import ayon_core.hosts.photoshop;ayon_aftereffects.launch(""c:\Program Files\Adobe\Adobe After Effects 2020\Support Files\AfterFX.exe"")^"
```
`avalon.aftereffects.launch` launches the application and server, and also closes the server when After Effects exists.
diff --git a/client/ayon_core/hosts/aftereffects/api/__init__.py b/server_addon/aftereffects/client/ayon_aftereffects/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/__init__.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/__init__.py
diff --git a/client/ayon_core/hosts/aftereffects/api/extension.zxp b/server_addon/aftereffects/client/ayon_aftereffects/api/extension.zxp
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension.zxp
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension.zxp
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/.debug b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/.debug
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/.debug
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/.debug
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/CSXS/manifest.xml b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/CSXS/manifest.xml
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/CSXS/manifest.xml
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/CSXS/manifest.xml
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/css/boilerplate.css b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/css/boilerplate.css
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/css/boilerplate.css
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/css/boilerplate.css
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/css/styles.css b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/css/styles.css
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/css/styles.css
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/css/styles.css
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/css/topcoat-desktop-dark.min.css b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/css/topcoat-desktop-dark.min.css
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/css/topcoat-desktop-dark.min.css
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/css/topcoat-desktop-dark.min.css
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/icons/ayon_logo.png b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/ayon_logo.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/icons/ayon_logo.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/ayon_logo.png
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/icons/iconDarkNormal.png b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconDarkNormal.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/icons/iconDarkNormal.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconDarkNormal.png
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/icons/iconDarkRollover.png b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconDarkRollover.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/icons/iconDarkRollover.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconDarkRollover.png
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/icons/iconDisabled.png b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconDisabled.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/icons/iconDisabled.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconDisabled.png
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/icons/iconNormal.png b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconNormal.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/icons/iconNormal.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconNormal.png
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/icons/iconRollover.png b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconRollover.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/icons/iconRollover.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/icons/iconRollover.png
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/index.html b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/index.html
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/index.html
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/index.html
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/libs/CSInterface.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/CSInterface.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/libs/CSInterface.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/CSInterface.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/libs/jquery-2.0.2.min.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/jquery-2.0.2.min.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/libs/jquery-2.0.2.min.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/jquery-2.0.2.min.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/libs/json.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/json.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/libs/json.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/json.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/libs/loglevel.min.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/loglevel.min.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/libs/loglevel.min.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/loglevel.min.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/libs/wsrpc.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/wsrpc.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/libs/wsrpc.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/wsrpc.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/libs/wsrpc.min.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/wsrpc.min.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/libs/wsrpc.min.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/wsrpc.min.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/main.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/main.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/main.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/main.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/js/themeManager.js b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/themeManager.js
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/js/themeManager.js
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/themeManager.js
diff --git a/client/ayon_core/hosts/aftereffects/api/extension/jsx/hostscript.jsx b/server_addon/aftereffects/client/ayon_aftereffects/api/extension/jsx/hostscript.jsx
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/extension/jsx/hostscript.jsx
rename to server_addon/aftereffects/client/ayon_aftereffects/api/extension/jsx/hostscript.jsx
diff --git a/client/ayon_core/hosts/aftereffects/api/launch_logic.py b/server_addon/aftereffects/client/ayon_aftereffects/api/launch_logic.py
similarity index 96%
rename from client/ayon_core/hosts/aftereffects/api/launch_logic.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/launch_logic.py
index da6887668a..3a4fd0e719 100644
--- a/client/ayon_core/hosts/aftereffects/api/launch_logic.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/launch_logic.py
@@ -18,8 +18,8 @@ from ayon_core.lib import Logger, is_in_tests
from ayon_core.pipeline import install_host
from ayon_core.addon import AddonsManager
from ayon_core.tools.utils import host_tools, get_ayon_qt_app
-from ayon_core.tools.adobe_webserver.app import WebServerTool
+from .webserver import WebServerTool
from .ws_stub import get_stub
from .lib import set_settings
@@ -35,7 +35,7 @@ def main(*subprocess_args):
"""Main entrypoint to AE launching, called from pre hook."""
sys.excepthook = safe_excepthook
- from ayon_core.hosts.aftereffects.api import AfterEffectsHost
+ from ayon_aftereffects.api import AfterEffectsHost
host = AfterEffectsHost()
install_host(host)
@@ -355,7 +355,7 @@ class AfterEffectsRoute(WebSocketRoute):
return "nothing"
def create_placeholder_route(self):
- from ayon_core.hosts.aftereffects.api.workfile_template_builder import \
+ from ayon_aftereffects.api.workfile_template_builder import \
create_placeholder
partial_method = functools.partial(create_placeholder)
@@ -365,7 +365,7 @@ class AfterEffectsRoute(WebSocketRoute):
return "nothing"
def update_placeholder_route(self):
- from ayon_core.hosts.aftereffects.api.workfile_template_builder import \
+ from ayon_aftereffects.api.workfile_template_builder import \
update_placeholder
partial_method = functools.partial(update_placeholder)
@@ -375,7 +375,7 @@ class AfterEffectsRoute(WebSocketRoute):
return "nothing"
def build_workfile_template_route(self):
- from ayon_core.hosts.aftereffects.api.workfile_template_builder import \
+ from ayon_aftereffects.api.workfile_template_builder import \
build_workfile_template
partial_method = functools.partial(build_workfile_template)
diff --git a/client/ayon_core/hosts/aftereffects/api/launch_script.py b/server_addon/aftereffects/client/ayon_aftereffects/api/launch_script.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/api/launch_script.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/launch_script.py
index 87926c022b..6b7f12ca43 100644
--- a/client/ayon_core/hosts/aftereffects/api/launch_script.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/launch_script.py
@@ -8,7 +8,7 @@ workfile or others.
import os
import sys
-from ayon_core.hosts.aftereffects.api.launch_logic import main as host_main
+from ayon_aftereffects.api.launch_logic 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/aftereffects/api/lib.py b/server_addon/aftereffects/client/ayon_aftereffects/api/lib.py
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/lib.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/lib.py
diff --git a/client/ayon_core/hosts/aftereffects/api/panel.png b/server_addon/aftereffects/client/ayon_aftereffects/api/panel.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/panel.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/panel.png
diff --git a/client/ayon_core/hosts/aftereffects/api/panel_failure.png b/server_addon/aftereffects/client/ayon_aftereffects/api/panel_failure.png
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/panel_failure.png
rename to server_addon/aftereffects/client/ayon_aftereffects/api/panel_failure.png
diff --git a/client/ayon_core/hosts/aftereffects/api/pipeline.py b/server_addon/aftereffects/client/ayon_aftereffects/api/pipeline.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/api/pipeline.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/pipeline.py
index 2239040f09..4bc51a324b 100644
--- a/client/ayon_core/hosts/aftereffects/api/pipeline.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/pipeline.py
@@ -14,8 +14,6 @@ from ayon_core.pipeline import (
AYON_INSTANCE_ID,
)
from ayon_core.pipeline.load import any_outdated_containers
-import ayon_core.hosts.aftereffects
-
from ayon_core.host import (
HostBase,
IWorkfileHost,
@@ -23,6 +21,7 @@ from ayon_core.host import (
IPublishHost
)
from ayon_core.tools.utils import get_ayon_qt_app
+from ayon_aftereffects import AFTEREFFECTS_ADDON_ROOT
from .launch_logic import get_stub
from .ws_stub import ConnectionNotEstablishedYet
@@ -30,10 +29,7 @@ from .ws_stub import ConnectionNotEstablishedYet
log = Logger.get_logger(__name__)
-HOST_DIR = os.path.dirname(
- os.path.abspath(ayon_core.hosts.aftereffects.__file__)
-)
-PLUGINS_DIR = os.path.join(HOST_DIR, "plugins")
+PLUGINS_DIR = os.path.join(AFTEREFFECTS_ADDON_ROOT, "plugins")
PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish")
LOAD_PATH = os.path.join(PLUGINS_DIR, "load")
CREATE_PATH = os.path.join(PLUGINS_DIR, "create")
diff --git a/client/ayon_core/hosts/aftereffects/api/plugin.py b/server_addon/aftereffects/client/ayon_aftereffects/api/plugin.py
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/api/plugin.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/plugin.py
diff --git a/client/ayon_core/tools/adobe_webserver/app.py b/server_addon/aftereffects/client/ayon_aftereffects/api/webserver.py
similarity index 94%
rename from client/ayon_core/tools/adobe_webserver/app.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/webserver.py
index 26bf638c91..aaecaa4c05 100644
--- a/client/ayon_core/tools/adobe_webserver/app.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/webserver.py
@@ -1,7 +1,11 @@
-"""This Webserver tool is python 3 specific.
+"""Webserver for communication with AfterEffects.
-Don't import directly to avalon.tools or implementation of Python 2 hosts
-would break.
+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
@@ -12,9 +16,7 @@ import socket
from aiohttp import web
-from wsrpc_aiohttp import (
- WSRPCClient
-)
+from wsrpc_aiohttp import WSRPCClient
from ayon_core.pipeline import get_global_context
diff --git a/client/ayon_core/hosts/aftereffects/api/workfile_template_builder.py b/server_addon/aftereffects/client/ayon_aftereffects/api/workfile_template_builder.py
similarity index 99%
rename from client/ayon_core/hosts/aftereffects/api/workfile_template_builder.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/workfile_template_builder.py
index 99d5bbb938..77fd1059b5 100644
--- a/client/ayon_core/hosts/aftereffects/api/workfile_template_builder.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/workfile_template_builder.py
@@ -12,7 +12,7 @@ from ayon_core.pipeline.workfile.workfile_template_builder import (
PlaceholderPlugin,
PlaceholderItem
)
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
PLACEHOLDER_SET = "PLACEHOLDERS_SET"
PLACEHOLDER_ID = "openpype.placeholder"
diff --git a/client/ayon_core/hosts/aftereffects/api/ws_stub.py b/server_addon/aftereffects/client/ayon_aftereffects/api/ws_stub.py
similarity index 99%
rename from client/ayon_core/hosts/aftereffects/api/ws_stub.py
rename to server_addon/aftereffects/client/ayon_aftereffects/api/ws_stub.py
index 869acc3405..60842e0612 100644
--- a/client/ayon_core/hosts/aftereffects/api/ws_stub.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/api/ws_stub.py
@@ -8,7 +8,8 @@ import logging
import attr
from wsrpc_aiohttp import WebSocketAsync
-from ayon_core.tools.adobe_webserver.app import WebServerTool
+
+from .webserver import WebServerTool
class ConnectionNotEstablishedYet(Exception):
diff --git a/client/ayon_core/hosts/aftereffects/hooks/pre_launch_args.py b/server_addon/aftereffects/client/ayon_aftereffects/hooks/pre_launch_args.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/hooks/pre_launch_args.py
rename to server_addon/aftereffects/client/ayon_aftereffects/hooks/pre_launch_args.py
index a37481566e..6a8b434953 100644
--- a/client/ayon_core/hosts/aftereffects/hooks/pre_launch_args.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/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.aftereffects import get_launch_script_path
+from ayon_aftereffects import get_launch_script_path
def get_launch_kwargs(kwargs):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/__init__.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/plugins/__init__.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/__init__.py
diff --git a/client/ayon_core/hosts/aftereffects/plugins/create/create_render.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/create/create_render.py
similarity index 98%
rename from client/ayon_core/hosts/aftereffects/plugins/create/create_render.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/create/create_render.py
index 29df34876a..eafe845247 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/create/create_render.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/create/create_render.py
@@ -2,16 +2,16 @@ import re
from ayon_core import resources
from ayon_core.lib import BoolDef, UISeparatorDef
-from ayon_core.hosts.aftereffects import api
from ayon_core.pipeline import (
Creator,
CreatedInstance,
CreatorError
)
-from ayon_core.hosts.aftereffects.api.pipeline import cache_and_get_instances
-from ayon_core.hosts.aftereffects.api.lib import set_settings
from ayon_core.lib import prepare_template_data
from ayon_core.pipeline.create import PRODUCT_NAME_ALLOWED_SYMBOLS
+from ayon_aftereffects import api
+from ayon_aftereffects.api.pipeline import cache_and_get_instances
+from ayon_aftereffects.api.lib import set_settings
class RenderCreator(Creator):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/create/workfile_creator.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/create/workfile_creator.py
similarity index 96%
rename from client/ayon_core/hosts/aftereffects/plugins/create/workfile_creator.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/create/workfile_creator.py
index b46e82bf1a..fcf25a3944 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/create/workfile_creator.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/create/workfile_creator.py
@@ -1,11 +1,11 @@
import ayon_api
-import ayon_core.hosts.aftereffects.api as api
from ayon_core.pipeline import (
AutoCreator,
CreatedInstance
)
-from ayon_core.hosts.aftereffects.api.pipeline import cache_and_get_instances
+from ayon_aftereffects import api
+from ayon_aftereffects.api.pipeline import cache_and_get_instances
class AEWorkfileCreator(AutoCreator):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/load/load_background.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/load/load_background.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/plugins/load/load_background.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/load/load_background.py
index 5685011d5f..62a4e24482 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/load/load_background.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/load/load_background.py
@@ -1,9 +1,9 @@
import re
from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.aftereffects import api
-from ayon_core.hosts.aftereffects.api.lib import (
+from ayon_aftereffects import api
+from ayon_aftereffects.api.lib import (
get_background_layers,
get_unique_layer_name,
)
diff --git a/client/ayon_core/hosts/aftereffects/plugins/load/load_file.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/load/load_file.py
similarity index 96%
rename from client/ayon_core/hosts/aftereffects/plugins/load/load_file.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/load/load_file.py
index 4b81201722..05749885c9 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/load/load_file.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/load/load_file.py
@@ -1,8 +1,8 @@
import re
from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.aftereffects import api
-from ayon_core.hosts.aftereffects.api.lib import get_unique_layer_name
+from ayon_aftereffects import api
+from ayon_aftereffects.api.lib import get_unique_layer_name
class FileLoader(api.AfterEffectsLoader):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/add_publish_highlight.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/add_publish_highlight.py
similarity index 90%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/add_publish_highlight.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/add_publish_highlight.py
index 331d5281ed..b8a36bce44 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/add_publish_highlight.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/add_publish_highlight.py
@@ -1,6 +1,6 @@
import pyblish.api
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class AddPublishHighlight(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/closeAE.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/closeAE.py
similarity index 91%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/closeAE.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/closeAE.py
index c00591729e..3aa0a01854 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/closeAE.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/closeAE.py
@@ -2,7 +2,7 @@
"""Close AE after publish. For Webpublishing only."""
import pyblish.api
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class CloseAE(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_audio.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_audio.py
similarity index 94%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/collect_audio.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_audio.py
index c0ef0b71a4..3f7108186c 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_audio.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_audio.py
@@ -2,7 +2,7 @@ import os
import pyblish.api
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class CollectAudio(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_current_file.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_current_file.py
similarity index 88%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/collect_current_file.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_current_file.py
index aead872461..6a247d5234 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_current_file.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_current_file.py
@@ -2,7 +2,7 @@ import os
import pyblish.api
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class CollectCurrentFile(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_extension_version.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_extension_version.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/collect_extension_version.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_extension_version.py
index 5b8393a49a..968943abc4 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_extension_version.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_extension_version.py
@@ -2,7 +2,7 @@ import os
import re
import pyblish.api
-from ayon_core.hosts.aftereffects.api import (
+from ayon_aftereffects.api import (
get_stub,
get_extension_manifest_path
)
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_render.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_render.py
similarity index 99%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/collect_render.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_render.py
index ebd4b8f944..3508512cba 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_render.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_render.py
@@ -6,8 +6,8 @@ import pyblish.api
from ayon_core.pipeline import publish
from ayon_core.pipeline.publish import RenderInstance
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
@attr.s
class AERenderInstance(RenderInstance):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_review.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_review.py
similarity index 94%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/collect_review.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_review.py
index 667e9cf8b9..8074342cc8 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_review.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_review.py
@@ -14,6 +14,7 @@ class CollectReview(pyblish.api.ContextPlugin):
label = "Collect Review"
hosts = ["aftereffects"]
order = pyblish.api.CollectorOrder + 0.1
+ settings_category = "aftereffects"
def process(self, context):
for instance in context:
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/collect_workfile.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/collect_workfile.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/collect_workfile.py
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/extract_local_render.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/extract_local_render.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/extract_local_render.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/extract_local_render.py
index c5e62a2f54..9f152414e5 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/extract_local_render.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/extract_local_render.py
@@ -1,8 +1,8 @@
import os
from ayon_core.pipeline import publish
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class ExtractLocalRender(publish.Extractor):
"""Render RenderQueue locally."""
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/extract_save_scene.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/extract_save_scene.py
similarity index 86%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/extract_save_scene.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/extract_save_scene.py
index f0007f96d9..165d1d081a 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/extract_save_scene.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/extract_save_scene.py
@@ -1,7 +1,7 @@
import pyblish.api
from ayon_core.pipeline import publish
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class ExtractSaveScene(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/help/validate_footage_items.xml b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/help/validate_footage_items.xml
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/help/validate_footage_items.xml
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/help/validate_footage_items.xml
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/help/validate_instance_asset.xml b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/help/validate_instance_asset.xml
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/help/validate_instance_asset.xml
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/help/validate_instance_asset.xml
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/help/validate_scene_settings.xml b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/help/validate_scene_settings.xml
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/help/validate_scene_settings.xml
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/help/validate_scene_settings.xml
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/increment_workfile.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/increment_workfile.py
similarity index 94%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/increment_workfile.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/increment_workfile.py
index fc51ff9176..9c1f79c477 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/increment_workfile.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/increment_workfile.py
@@ -2,7 +2,7 @@ import pyblish.api
from ayon_core.lib import version_up
from ayon_core.pipeline.publish import get_errored_plugins_from_context
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class IncrementWorkfile(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/remove_publish_highlight.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/remove_publish_highlight.py
similarity index 93%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/remove_publish_highlight.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/remove_publish_highlight.py
index 70b6efecb0..3367fa4e94 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/remove_publish_highlight.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/remove_publish_highlight.py
@@ -1,5 +1,5 @@
from ayon_core.pipeline import publish
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class RemovePublishHighlight(publish.Extractor):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/validate_footage_items.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_footage_items.py
similarity index 96%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/validate_footage_items.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_footage_items.py
index ae20102417..1f23b1ef7c 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/validate_footage_items.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_footage_items.py
@@ -9,7 +9,7 @@ import pyblish.api
from ayon_core.pipeline import (
PublishXmlValidationError
)
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class ValidateFootageItems(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/validate_instance_asset.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_instance_asset.py
similarity index 97%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/validate_instance_asset.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_instance_asset.py
index c4411bd4c2..01d046938b 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/validate_instance_asset.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_instance_asset.py
@@ -5,7 +5,7 @@ from ayon_core.pipeline.publish import (
ValidateContentsOrder,
PublishXmlValidationError,
)
-from ayon_core.hosts.aftereffects.api import get_stub
+from ayon_aftereffects.api import get_stub
class ValidateInstanceFolderRepair(pyblish.api.Action):
diff --git a/client/ayon_core/hosts/aftereffects/plugins/publish/validate_scene_settings.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_scene_settings.py
similarity index 98%
rename from client/ayon_core/hosts/aftereffects/plugins/publish/validate_scene_settings.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_scene_settings.py
index 6375f5cc61..97fdee11ff 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/publish/validate_scene_settings.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/publish/validate_scene_settings.py
@@ -13,7 +13,7 @@ from ayon_core.pipeline import (
PublishXmlValidationError,
OptionalPyblishPluginMixin
)
-from ayon_core.hosts.aftereffects.api import get_folder_settings
+from ayon_aftereffects.api import get_folder_settings
class ValidateSceneSettings(OptionalPyblishPluginMixin,
@@ -60,6 +60,7 @@ class ValidateSceneSettings(OptionalPyblishPluginMixin,
label = "Validate Scene Settings"
families = ["render.farm", "render.local", "render"]
hosts = ["aftereffects"]
+ settings_category = "aftereffects"
optional = True
skip_timelines_check = [".*"] # * >> skip for all
diff --git a/client/ayon_core/hosts/aftereffects/plugins/workfile_build/create_placeholder.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/workfile_build/create_placeholder.py
similarity index 89%
rename from client/ayon_core/hosts/aftereffects/plugins/workfile_build/create_placeholder.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/workfile_build/create_placeholder.py
index c7927f176f..79b820b01a 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/workfile_build/create_placeholder.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/workfile_build/create_placeholder.py
@@ -2,9 +2,11 @@ from ayon_core.pipeline.workfile.workfile_template_builder import (
CreatePlaceholderItem,
PlaceholderCreateMixin
)
-from ayon_core.hosts.aftereffects.api import get_stub
-from ayon_core.hosts.aftereffects.api.lib import set_settings
-import ayon_core.hosts.aftereffects.api.workfile_template_builder as wtb
+from ayon_aftereffects.api import (
+ get_stub,
+ workfile_template_builder as wtb,
+)
+from ayon_aftereffects.api.lib import set_settings
class AEPlaceholderCreatePlugin(wtb.AEPlaceholderPlugin,
diff --git a/client/ayon_core/hosts/aftereffects/plugins/workfile_build/load_placeholder.py b/server_addon/aftereffects/client/ayon_aftereffects/plugins/workfile_build/load_placeholder.py
similarity index 94%
rename from client/ayon_core/hosts/aftereffects/plugins/workfile_build/load_placeholder.py
rename to server_addon/aftereffects/client/ayon_aftereffects/plugins/workfile_build/load_placeholder.py
index 7f7e4f49ce..e4f021e5ff 100644
--- a/client/ayon_core/hosts/aftereffects/plugins/workfile_build/load_placeholder.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/plugins/workfile_build/load_placeholder.py
@@ -2,8 +2,10 @@ from ayon_core.pipeline.workfile.workfile_template_builder import (
LoadPlaceholderItem,
PlaceholderLoadMixin
)
-from ayon_core.hosts.aftereffects.api import get_stub
-import ayon_core.hosts.aftereffects.api.workfile_template_builder as wtb
+from ayon_aftereffects.api import (
+ get_stub,
+ workfile_template_builder as wtb,
+)
class AEPlaceholderLoadPlugin(wtb.AEPlaceholderPlugin, PlaceholderLoadMixin):
diff --git a/client/ayon_core/hosts/aftereffects/resources/template.aep b/server_addon/aftereffects/client/ayon_aftereffects/resources/template.aep
similarity index 100%
rename from client/ayon_core/hosts/aftereffects/resources/template.aep
rename to server_addon/aftereffects/client/ayon_aftereffects/resources/template.aep
diff --git a/server_addon/aftereffects/client/ayon_aftereffects/version.py b/server_addon/aftereffects/client/ayon_aftereffects/version.py
new file mode 100644
index 0000000000..8ab87ea78c
--- /dev/null
+++ b/server_addon/aftereffects/client/ayon_aftereffects/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'aftereffects' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/aftereffects/client/pyproject.toml b/server_addon/aftereffects/client/pyproject.toml
new file mode 100644
index 0000000000..dcfaab09e6
--- /dev/null
+++ b/server_addon/aftereffects/client/pyproject.toml
@@ -0,0 +1,6 @@
+[project]
+name="aftereffects"
+description="AYON AfterEffects addon."
+
+[ayon.runtimeDependencies]
+wsrpc_aiohttp = "^3.1.1" # websocket server
diff --git a/server_addon/aftereffects/package.py b/server_addon/aftereffects/package.py
index 7a2f9bc7af..8e4e70fc3b 100644
--- a/server_addon/aftereffects/package.py
+++ b/server_addon/aftereffects/package.py
@@ -1,3 +1,10 @@
name = "aftereffects"
title = "AfterEffects"
-version = "0.1.4"
+version = "0.2.0"
+
+client_dir = "ayon_aftereffects"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/server_addon/blender/client/ayon_blender/__init__.py b/server_addon/blender/client/ayon_blender/__init__.py
new file mode 100644
index 0000000000..221dcd4138
--- /dev/null
+++ b/server_addon/blender/client/ayon_blender/__init__.py
@@ -0,0 +1,13 @@
+from .version import __version__
+from .addon import (
+ BlenderAddon,
+ BLENDER_ADDON_ROOT,
+)
+
+
+__all__ = (
+ "__version__",
+
+ "BlenderAddon",
+ "BLENDER_ADDON_ROOT",
+)
diff --git a/client/ayon_core/hosts/blender/addon.py b/server_addon/blender/client/ayon_blender/addon.py
similarity index 91%
rename from client/ayon_core/hosts/blender/addon.py
rename to server_addon/blender/client/ayon_blender/addon.py
index 6a4b325365..9711580369 100644
--- a/client/ayon_core/hosts/blender/addon.py
+++ b/server_addon/blender/client/ayon_blender/addon.py
@@ -1,18 +1,21 @@
import os
from ayon_core.addon import AYONAddon, IHostAddon
-BLENDER_ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
+from .version import __version__
+
+BLENDER_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
class BlenderAddon(AYONAddon, IHostAddon):
name = "blender"
+ version = __version__
host_name = "blender"
def add_implementation_envs(self, env, _app):
"""Modify environments to contain all required for implementation."""
# Prepare path to implementation script
implementation_user_script_path = os.path.join(
- BLENDER_ROOT_DIR,
+ BLENDER_ADDON_ROOT,
"blender_addon"
)
@@ -61,7 +64,7 @@ class BlenderAddon(AYONAddon, IHostAddon):
if app.host_name != self.host_name:
return []
return [
- os.path.join(BLENDER_ROOT_DIR, "hooks")
+ os.path.join(BLENDER_ADDON_ROOT, "hooks")
]
def get_workfile_extensions(self):
diff --git a/client/ayon_core/hosts/blender/api/__init__.py b/server_addon/blender/client/ayon_blender/api/__init__.py
similarity index 97%
rename from client/ayon_core/hosts/blender/api/__init__.py
rename to server_addon/blender/client/ayon_blender/api/__init__.py
index ce2b444997..da2a6fbbbb 100644
--- a/client/ayon_core/hosts/blender/api/__init__.py
+++ b/server_addon/blender/client/ayon_blender/api/__init__.py
@@ -15,7 +15,6 @@ from .pipeline import (
from .plugin import (
Creator,
- Loader,
)
from .workio import (
@@ -51,7 +50,6 @@ __all__ = [
"BlenderHost",
"Creator",
- "Loader",
# Workfiles API
"open_file",
diff --git a/client/ayon_core/hosts/blender/api/action.py b/server_addon/blender/client/ayon_blender/api/action.py
similarity index 100%
rename from client/ayon_core/hosts/blender/api/action.py
rename to server_addon/blender/client/ayon_blender/api/action.py
diff --git a/client/ayon_core/hosts/blender/api/capture.py b/server_addon/blender/client/ayon_blender/api/capture.py
similarity index 100%
rename from client/ayon_core/hosts/blender/api/capture.py
rename to server_addon/blender/client/ayon_blender/api/capture.py
diff --git a/client/ayon_core/hosts/blender/api/colorspace.py b/server_addon/blender/client/ayon_blender/api/colorspace.py
similarity index 100%
rename from client/ayon_core/hosts/blender/api/colorspace.py
rename to server_addon/blender/client/ayon_blender/api/colorspace.py
diff --git a/client/ayon_core/hosts/blender/api/icons/pyblish-32x32.png b/server_addon/blender/client/ayon_blender/api/icons/pyblish-32x32.png
similarity index 100%
rename from client/ayon_core/hosts/blender/api/icons/pyblish-32x32.png
rename to server_addon/blender/client/ayon_blender/api/icons/pyblish-32x32.png
diff --git a/client/ayon_core/hosts/blender/api/lib.py b/server_addon/blender/client/ayon_blender/api/lib.py
similarity index 100%
rename from client/ayon_core/hosts/blender/api/lib.py
rename to server_addon/blender/client/ayon_blender/api/lib.py
diff --git a/client/ayon_core/hosts/blender/api/ops.py b/server_addon/blender/client/ayon_blender/api/ops.py
similarity index 99%
rename from client/ayon_core/hosts/blender/api/ops.py
rename to server_addon/blender/client/ayon_blender/api/ops.py
index c03ec98d0c..7cf9600067 100644
--- a/client/ayon_core/hosts/blender/api/ops.py
+++ b/server_addon/blender/client/ayon_blender/api/ops.py
@@ -305,7 +305,7 @@ class LaunchCreator(LaunchQtApp):
class LaunchLoader(LaunchQtApp):
- """Launch Avalon Loader."""
+ """Launch AYON Loader."""
bl_idname = "wm.avalon_loader"
bl_label = "Load..."
diff --git a/client/ayon_core/hosts/blender/api/pipeline.py b/server_addon/blender/client/ayon_blender/api/pipeline.py
similarity index 99%
rename from client/ayon_core/hosts/blender/api/pipeline.py
rename to server_addon/blender/client/ayon_blender/api/pipeline.py
index 84e78d0883..d2ff129a48 100644
--- a/client/ayon_core/hosts/blender/api/pipeline.py
+++ b/server_addon/blender/client/ayon_blender/api/pipeline.py
@@ -5,9 +5,6 @@ from typing import Callable, Dict, Iterator, List, Optional
import bpy
-from . import lib
-from . import ops
-
import pyblish.api
import ayon_api
@@ -33,8 +30,12 @@ from ayon_core.lib import (
register_event_callback,
emit_event
)
-import ayon_core.hosts.blender
from ayon_core.settings import get_project_settings
+from ayon_blender import BLENDER_ADDON_ROOT
+
+from . import lib
+from . import ops
+
from .workio import (
open_file,
save_file,
@@ -44,9 +45,7 @@ from .workio import (
work_root,
)
-
-HOST_DIR = os.path.dirname(os.path.abspath(ayon_core.hosts.blender.__file__))
-PLUGINS_DIR = os.path.join(HOST_DIR, "plugins")
+PLUGINS_DIR = os.path.join(BLENDER_ADDON_ROOT, "plugins")
PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish")
LOAD_PATH = os.path.join(PLUGINS_DIR, "load")
CREATE_PATH = os.path.join(PLUGINS_DIR, "create")
diff --git a/client/ayon_core/hosts/blender/api/plugin.py b/server_addon/blender/client/ayon_blender/api/plugin.py
similarity index 96%
rename from client/ayon_core/hosts/blender/api/plugin.py
rename to server_addon/blender/client/ayon_blender/api/plugin.py
index e00e127f70..e72bf20287 100644
--- a/client/ayon_core/hosts/blender/api/plugin.py
+++ b/server_addon/blender/client/ayon_blender/api/plugin.py
@@ -4,6 +4,7 @@ import itertools
from pathlib import Path
from typing import Dict, List, Optional
+import pyblish.api
import bpy
from ayon_core.pipeline import (
@@ -13,6 +14,7 @@ from ayon_core.pipeline import (
AVALON_INSTANCE_ID,
AYON_INSTANCE_ID,
)
+from ayon_core.pipeline.publish import Extractor
from ayon_core.lib import BoolDef
from .pipeline import (
@@ -161,10 +163,23 @@ def deselect_all():
bpy.context.view_layer.objects.active = active
-class BaseCreator(Creator):
+class BlenderInstancePlugin(pyblish.api.InstancePlugin):
+ settings_category = "blender"
+
+
+class BlenderContextPlugin(pyblish.api.ContextPlugin):
+ settings_category = "blender"
+
+
+class BlenderExtractor(Extractor):
+ settings_category = "blender"
+
+
+class BlenderCreator(Creator):
"""Base class for Blender Creator plug-ins."""
defaults = ['Main']
+ settings_category = "blender"
create_as_asset_group = False
@staticmethod
@@ -265,7 +280,7 @@ class BaseCreator(Creator):
return instance_node
def collect_instances(self):
- """Override abstract method from BaseCreator.
+ """Override abstract method from BlenderCreator.
Collect existing instances related to this creator plugin."""
# Cache instances in shared data
@@ -292,7 +307,7 @@ class BaseCreator(Creator):
self._add_instance_to_context(instance)
def update_instances(self, update_list):
- """Override abstract method from BaseCreator.
+ """Override abstract method from BlenderCreator.
Store changes of existing instances so they can be recollected.
Args:
@@ -376,13 +391,7 @@ class BaseCreator(Creator):
]
-class Loader(LoaderPlugin):
- """Base class for Loader plug-ins."""
-
- hosts = ["blender"]
-
-
-class AssetLoader(LoaderPlugin):
+class BlenderLoader(LoaderPlugin):
"""A basic AssetLoader for Blender
This will implement the basic logic for linking/appending assets
@@ -392,6 +401,7 @@ class AssetLoader(LoaderPlugin):
it's different for different types (e.g. model, rig, animation,
etc.).
"""
+ settings_category = "blender"
@staticmethod
def _get_instance_empty(instance_name: str, nodes: List) -> Optional[bpy.types.Object]:
@@ -496,7 +506,7 @@ class AssetLoader(LoaderPlugin):
# Only containerise if it's not already a collection from a .blend file.
# representation = context["representation"]["name"]
# if representation != "blend":
- # from ayon_core.hosts.blender.api.pipeline import containerise
+ # from ayon_blender.api.pipeline import containerise
# return containerise(
# name=name,
# namespace=namespace,
diff --git a/client/ayon_core/hosts/blender/api/render_lib.py b/server_addon/blender/client/ayon_blender/api/render_lib.py
similarity index 100%
rename from client/ayon_core/hosts/blender/api/render_lib.py
rename to server_addon/blender/client/ayon_blender/api/render_lib.py
diff --git a/client/ayon_core/hosts/blender/api/workio.py b/server_addon/blender/client/ayon_blender/api/workio.py
similarity index 100%
rename from client/ayon_core/hosts/blender/api/workio.py
rename to server_addon/blender/client/ayon_blender/api/workio.py
diff --git a/client/ayon_core/hosts/blender/blender_addon/startup/init.py b/server_addon/blender/client/ayon_blender/blender_addon/startup/init.py
similarity index 70%
rename from client/ayon_core/hosts/blender/blender_addon/startup/init.py
rename to server_addon/blender/client/ayon_blender/blender_addon/startup/init.py
index 816f30f73f..bd0d52627c 100644
--- a/client/ayon_core/hosts/blender/blender_addon/startup/init.py
+++ b/server_addon/blender/client/ayon_blender/blender_addon/startup/init.py
@@ -1,5 +1,5 @@
from ayon_core.pipeline import install_host
-from ayon_core.hosts.blender.api import BlenderHost
+from ayon_blender.api import BlenderHost
def register():
diff --git a/client/ayon_core/hosts/blender/hooks/pre_add_run_python_script_arg.py b/server_addon/blender/client/ayon_blender/hooks/pre_add_run_python_script_arg.py
similarity index 100%
rename from client/ayon_core/hosts/blender/hooks/pre_add_run_python_script_arg.py
rename to server_addon/blender/client/ayon_blender/hooks/pre_add_run_python_script_arg.py
diff --git a/client/ayon_core/hosts/blender/hooks/pre_pyside_install.py b/server_addon/blender/client/ayon_blender/hooks/pre_pyside_install.py
similarity index 100%
rename from client/ayon_core/hosts/blender/hooks/pre_pyside_install.py
rename to server_addon/blender/client/ayon_blender/hooks/pre_pyside_install.py
diff --git a/client/ayon_core/hosts/blender/hooks/pre_windows_console.py b/server_addon/blender/client/ayon_blender/hooks/pre_windows_console.py
similarity index 100%
rename from client/ayon_core/hosts/blender/hooks/pre_windows_console.py
rename to server_addon/blender/client/ayon_blender/hooks/pre_windows_console.py
diff --git a/client/ayon_core/hosts/blender/plugins/create/convert_legacy.py b/server_addon/blender/client/ayon_blender/plugins/create/convert_legacy.py
similarity index 96%
rename from client/ayon_core/hosts/blender/plugins/create/convert_legacy.py
rename to server_addon/blender/client/ayon_blender/plugins/create/convert_legacy.py
index 613574eee0..095f3ab919 100644
--- a/client/ayon_core/hosts/blender/plugins/create/convert_legacy.py
+++ b/server_addon/blender/client/ayon_blender/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.blender.api.lib import imprint
+from ayon_blender.api.lib import imprint
class BlenderLegacyConvertor(ProductConvertorPlugin):
@@ -42,7 +42,7 @@ class BlenderLegacyConvertor(ProductConvertorPlugin):
parameter on them.
This is using cached entries done in
- :py:meth:`~BaseCreator.cache_instance_data()`
+ :py:meth:`~BlenderCreator.cache_instance_data()`
"""
self.legacy_instances = self.collection_shared_data.get(
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_action.py b/server_addon/blender/client/ayon_blender/plugins/create/create_action.py
similarity index 92%
rename from client/ayon_core/hosts/blender/plugins/create/create_action.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_action.py
index 070b9843c3..123a2e0df1 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_action.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_action.py
@@ -2,10 +2,10 @@
import bpy
-from ayon_core.hosts.blender.api import lib, plugin
+from ayon_blender.api import lib, plugin
-class CreateAction(plugin.BaseCreator):
+class CreateAction(plugin.BlenderCreator):
"""Action output for character rigs."""
identifier = "io.openpype.creators.blender.action"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_animation.py b/server_addon/blender/client/ayon_blender/plugins/create/create_animation.py
similarity index 90%
rename from client/ayon_core/hosts/blender/plugins/create/create_animation.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_animation.py
index b806a5a7ca..cfb2c254ef 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_animation.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_animation.py
@@ -1,9 +1,9 @@
"""Create an animation asset."""
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateAnimation(plugin.BaseCreator):
+class CreateAnimation(plugin.BlenderCreator):
"""Animation output for character rigs."""
identifier = "io.openpype.creators.blender.animation"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_blendScene.py b/server_addon/blender/client/ayon_blender/plugins/create/create_blendScene.py
similarity index 90%
rename from client/ayon_core/hosts/blender/plugins/create/create_blendScene.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_blendScene.py
index 51250bf18b..363a35883b 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_blendScene.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_blendScene.py
@@ -2,10 +2,10 @@
import bpy
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateBlendScene(plugin.BaseCreator):
+class CreateBlendScene(plugin.BlenderCreator):
"""Generic group of assets."""
identifier = "io.openpype.creators.blender.blendscene"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_camera.py b/server_addon/blender/client/ayon_blender/plugins/create/create_camera.py
similarity index 87%
rename from client/ayon_core/hosts/blender/plugins/create/create_camera.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_camera.py
index cd82bec236..8cfe8f989b 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_camera.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_camera.py
@@ -2,11 +2,11 @@
import bpy
-from ayon_core.hosts.blender.api import plugin, lib
-from ayon_core.hosts.blender.api.pipeline import AVALON_INSTANCES
+from ayon_blender.api import plugin, lib
+from ayon_blender.api.pipeline import AVALON_INSTANCES
-class CreateCamera(plugin.BaseCreator):
+class CreateCamera(plugin.BlenderCreator):
"""Polygonal static geometry."""
identifier = "io.openpype.creators.blender.camera"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_layout.py b/server_addon/blender/client/ayon_blender/plugins/create/create_layout.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/create/create_layout.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_layout.py
index 289c39fc38..1e0f8effdd 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_layout.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_layout.py
@@ -2,10 +2,10 @@
import bpy
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateLayout(plugin.BaseCreator):
+class CreateLayout(plugin.BlenderCreator):
"""Layout output for character rigs."""
identifier = "io.openpype.creators.blender.layout"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_model.py b/server_addon/blender/client/ayon_blender/plugins/create/create_model.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/create/create_model.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_model.py
index 837ba47417..7e8bf566ea 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_model.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_model.py
@@ -2,10 +2,10 @@
import bpy
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateModel(plugin.BaseCreator):
+class CreateModel(plugin.BlenderCreator):
"""Polygonal static geometry."""
identifier = "io.openpype.creators.blender.model"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_pointcache.py b/server_addon/blender/client/ayon_blender/plugins/create/create_pointcache.py
similarity index 88%
rename from client/ayon_core/hosts/blender/plugins/create/create_pointcache.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_pointcache.py
index 0aa2d62c17..9730ddb89d 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_pointcache.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_pointcache.py
@@ -1,9 +1,9 @@
"""Create a pointcache asset."""
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreatePointcache(plugin.BaseCreator):
+class CreatePointcache(plugin.BlenderCreator):
"""Polygonal static geometry."""
identifier = "io.openpype.creators.blender.pointcache"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_render.py b/server_addon/blender/client/ayon_blender/plugins/create/create_render.py
similarity index 86%
rename from client/ayon_core/hosts/blender/plugins/create/create_render.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_render.py
index bf3d1e62b3..6bbedb957f 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_render.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_render.py
@@ -2,12 +2,12 @@
import bpy
from ayon_core.lib import version_up
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.render_lib import prepare_rendering
-from ayon_core.hosts.blender.api.workio import save_file
+from ayon_blender.api import plugin
+from ayon_blender.api.render_lib import prepare_rendering
+from ayon_blender.api.workio import save_file
-class CreateRenderlayer(plugin.BaseCreator):
+class CreateRenderlayer(plugin.BlenderCreator):
"""Single baked camera."""
identifier = "io.openpype.creators.blender.render"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_review.py b/server_addon/blender/client/ayon_blender/plugins/create/create_review.py
similarity index 87%
rename from client/ayon_core/hosts/blender/plugins/create/create_review.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_review.py
index b478ec59f4..dbef9e371f 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_review.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_review.py
@@ -1,9 +1,9 @@
"""Create review."""
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateReview(plugin.BaseCreator):
+class CreateReview(plugin.BlenderCreator):
"""Single baked camera."""
identifier = "io.openpype.creators.blender.review"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_rig.py b/server_addon/blender/client/ayon_blender/plugins/create/create_rig.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/create/create_rig.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_rig.py
index 10b6b20d36..aad24bda69 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_rig.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_rig.py
@@ -2,10 +2,10 @@
import bpy
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateRig(plugin.BaseCreator):
+class CreateRig(plugin.BlenderCreator):
"""Artist-friendly rig with controls to direct motion."""
identifier = "io.openpype.creators.blender.rig"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_usd.py b/server_addon/blender/client/ayon_blender/plugins/create/create_usd.py
similarity index 88%
rename from client/ayon_core/hosts/blender/plugins/create/create_usd.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_usd.py
index 2c2d0c46c6..d7770b15f7 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_usd.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_usd.py
@@ -1,9 +1,9 @@
"""Create a USD Export."""
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CreateUSD(plugin.BaseCreator):
+class CreateUSD(plugin.BlenderCreator):
"""Create USD Export"""
identifier = "io.openpype.creators.blender.usd"
diff --git a/client/ayon_core/hosts/blender/plugins/create/create_workfile.py b/server_addon/blender/client/ayon_blender/plugins/create/create_workfile.py
similarity index 96%
rename from client/ayon_core/hosts/blender/plugins/create/create_workfile.py
rename to server_addon/blender/client/ayon_blender/plugins/create/create_workfile.py
index 296a03e317..03cfc322a9 100644
--- a/client/ayon_core/hosts/blender/plugins/create/create_workfile.py
+++ b/server_addon/blender/client/ayon_blender/plugins/create/create_workfile.py
@@ -2,14 +2,14 @@ import bpy
import ayon_api
from ayon_core.pipeline import CreatedInstance, AutoCreator
-from ayon_core.hosts.blender.api.plugin import BaseCreator
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api.plugin import BlenderCreator
+from ayon_blender.api.pipeline import (
AVALON_PROPERTY,
AVALON_CONTAINERS
)
-class CreateWorkfile(BaseCreator, AutoCreator):
+class CreateWorkfile(BlenderCreator, AutoCreator):
"""Workfile auto-creator.
The workfile instance stores its data on the `AVALON_CONTAINERS` collection
diff --git a/client/ayon_core/hosts/blender/plugins/load/import_workfile.py b/server_addon/blender/client/ayon_blender/plugins/load/import_workfile.py
similarity index 95%
rename from client/ayon_core/hosts/blender/plugins/load/import_workfile.py
rename to server_addon/blender/client/ayon_blender/plugins/load/import_workfile.py
index d2e58c7752..16cba6913d 100644
--- a/client/ayon_core/hosts/blender/plugins/load/import_workfile.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/import_workfile.py
@@ -1,6 +1,6 @@
import bpy
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
def append_workfile(context, fname, do_import):
@@ -34,7 +34,7 @@ def append_workfile(context, fname, do_import):
collection.children.link(coll)
-class AppendBlendLoader(plugin.AssetLoader):
+class AppendBlendLoader(plugin.BlenderLoader):
"""Append workfile in Blender (unmanaged)
Warning:
@@ -59,7 +59,7 @@ class AppendBlendLoader(plugin.AssetLoader):
return
-class ImportBlendLoader(plugin.AssetLoader):
+class ImportBlendLoader(plugin.BlenderLoader):
"""Import workfile in the current Blender scene (unmanaged)
Warning:
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_action.py b/server_addon/blender/client/ayon_blender/plugins/load/load_action.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_action.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_action.py
index 8135df042a..ddfaa94044 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_action.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_action.py
@@ -7,8 +7,8 @@ from typing import Dict, List, Optional
import bpy
from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import (
containerise_existing,
AVALON_PROPERTY,
)
@@ -16,7 +16,7 @@ from ayon_core.hosts.blender.api.pipeline import (
logger = logging.getLogger("ayon").getChild("blender").getChild("load_action")
-class BlendActionLoader(plugin.AssetLoader):
+class BlendActionLoader(plugin.BlenderLoader):
"""Load action from a .blend file.
Warning:
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_animation.py b/server_addon/blender/client/ayon_blender/plugins/load/load_animation.py
similarity index 92%
rename from client/ayon_core/hosts/blender/plugins/load/load_animation.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_animation.py
index c9f3b33a6f..241b76b600 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_animation.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_animation.py
@@ -4,11 +4,11 @@ from typing import Dict, List, Optional
import bpy
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.pipeline import AVALON_PROPERTY
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import AVALON_PROPERTY
-class BlendAnimationLoader(plugin.AssetLoader):
+class BlendAnimationLoader(plugin.BlenderLoader):
"""Load animations from a .blend file.
Warning:
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_audio.py b/server_addon/blender/client/ayon_blender/plugins/load/load_audio.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_audio.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_audio.py
index 3d2f412e2b..b8682e7c13 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_audio.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_audio.py
@@ -10,14 +10,14 @@ from ayon_core.pipeline import (
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-class AudioLoader(plugin.AssetLoader):
+class AudioLoader(plugin.BlenderLoader):
"""Load audio in Blender."""
product_types = {"audio"}
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_blend.py b/server_addon/blender/client/ayon_blender/plugins/load/load_blend.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_blend.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_blend.py
index f9377d615c..c9f3ec0c71 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_blend.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_blend.py
@@ -9,15 +9,15 @@ from ayon_core.pipeline import (
registered_host
)
from ayon_core.pipeline.create import CreateContext
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.lib import imprint
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin
+from ayon_blender.api.lib import imprint
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-class BlendLoader(plugin.AssetLoader):
+class BlendLoader(plugin.BlenderLoader):
"""Load assets from a .blend file."""
product_types = {"model", "rig", "layout", "camera"}
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_blendscene.py b/server_addon/blender/client/ayon_blender/plugins/load/load_blendscene.py
similarity index 97%
rename from client/ayon_core/hosts/blender/plugins/load/load_blendscene.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_blendscene.py
index f91d828d83..590ab0079e 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_blendscene.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_blendscene.py
@@ -7,15 +7,15 @@ from ayon_core.pipeline import (
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.lib import imprint
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin
+from ayon_blender.api.lib import imprint
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-class BlendSceneLoader(plugin.AssetLoader):
+class BlendSceneLoader(plugin.BlenderLoader):
"""Load assets from a .blend file."""
product_types = {"blendScene"}
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_cache.py b/server_addon/blender/client/ayon_blender/plugins/load/load_cache.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_cache.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_cache.py
index 30c847f89d..599610ff39 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_cache.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_cache.py
@@ -11,14 +11,14 @@ from ayon_core.pipeline import (
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_blender.api import plugin, lib
-class CacheModelLoader(plugin.AssetLoader):
+class CacheModelLoader(plugin.BlenderLoader):
"""Load cache models.
Stores the imported asset in a collection named after the asset.
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_camera_abc.py b/server_addon/blender/client/ayon_blender/plugins/load/load_camera_abc.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_camera_abc.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_camera_abc.py
index a49bb40d9a..7305afd423 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_camera_abc.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_camera_abc.py
@@ -10,14 +10,14 @@ from ayon_core.pipeline import (
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api import plugin, lib
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin, lib
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-class AbcCameraLoader(plugin.AssetLoader):
+class AbcCameraLoader(plugin.BlenderLoader):
"""Load a camera from Alembic file.
Stores the imported asset in an empty named after the asset.
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_camera_fbx.py b/server_addon/blender/client/ayon_blender/plugins/load/load_camera_fbx.py
similarity index 97%
rename from client/ayon_core/hosts/blender/plugins/load/load_camera_fbx.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_camera_fbx.py
index a510d42850..d2900c6c3f 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_camera_fbx.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_camera_fbx.py
@@ -10,14 +10,14 @@ from ayon_core.pipeline import (
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api import plugin, lib
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin, lib
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-class FbxCameraLoader(plugin.AssetLoader):
+class FbxCameraLoader(plugin.BlenderLoader):
"""Load a camera from FBX.
Stores the imported asset in an empty named after the asset.
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_fbx.py b/server_addon/blender/client/ayon_blender/plugins/load/load_fbx.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_fbx.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_fbx.py
index e323d49dea..fe3d747dab 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_fbx.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_fbx.py
@@ -10,14 +10,14 @@ from ayon_core.pipeline import (
get_representation_path,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api import plugin, lib
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin, lib
+from ayon_blender.api.pipeline import (
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-class FbxModelLoader(plugin.AssetLoader):
+class FbxModelLoader(plugin.BlenderLoader):
"""Load FBX models.
Stores the imported asset in an empty named after the asset.
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_layout_json.py b/server_addon/blender/client/ayon_blender/plugins/load/load_layout_json.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_layout_json.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_layout_json.py
index d20eaad9fc..9a2d17b4fc 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_layout_json.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_layout_json.py
@@ -15,15 +15,15 @@ from ayon_core.pipeline import (
loaders_from_representation,
AVALON_CONTAINER_ID,
)
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api.pipeline import (
AVALON_INSTANCES,
AVALON_CONTAINERS,
AVALON_PROPERTY,
)
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
-class JsonLayoutLoader(plugin.AssetLoader):
+class JsonLayoutLoader(plugin.BlenderLoader):
"""Load layout published from Unreal."""
product_types = {"layout"}
diff --git a/client/ayon_core/hosts/blender/plugins/load/load_look.py b/server_addon/blender/client/ayon_blender/plugins/load/load_look.py
similarity index 98%
rename from client/ayon_core/hosts/blender/plugins/load/load_look.py
rename to server_addon/blender/client/ayon_blender/plugins/load/load_look.py
index 75401f94ec..d214917d3e 100644
--- a/client/ayon_core/hosts/blender/plugins/load/load_look.py
+++ b/server_addon/blender/client/ayon_blender/plugins/load/load_look.py
@@ -9,14 +9,14 @@ import json
import bpy
from ayon_core.pipeline import get_representation_path
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.pipeline import (
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import (
containerise_existing,
AVALON_PROPERTY
)
-class BlendLookLoader(plugin.AssetLoader):
+class BlendLookLoader(plugin.BlenderLoader):
"""Load models from a .blend file.
Because they come from a .blend file we can simply link the collection that
diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_current_file.py b/server_addon/blender/client/ayon_blender/plugins/publish/collect_current_file.py
similarity index 76%
rename from client/ayon_core/hosts/blender/plugins/publish/collect_current_file.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/collect_current_file.py
index 7370f6cbe8..6568372169 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/collect_current_file.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/collect_current_file.py
@@ -1,8 +1,8 @@
import pyblish.api
-from ayon_core.hosts.blender.api import workio
+from ayon_blender.api import workio, plugin
-class CollectBlenderCurrentFile(pyblish.api.ContextPlugin):
+class CollectBlenderCurrentFile(plugin.BlenderContextPlugin):
"""Inject the current working file into context"""
order = pyblish.api.CollectorOrder - 0.5
diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_instance.py b/server_addon/blender/client/ayon_blender/plugins/publish/collect_instance.py
similarity index 90%
rename from client/ayon_core/hosts/blender/plugins/publish/collect_instance.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/collect_instance.py
index 314ffd368a..7d6f841ba3 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/collect_instance.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/collect_instance.py
@@ -3,10 +3,11 @@ import bpy
import pyblish.api
from ayon_core.pipeline.publish import KnownPublishError
-from ayon_core.hosts.blender.api.pipeline import AVALON_PROPERTY
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import AVALON_PROPERTY
-class CollectBlenderInstanceData(pyblish.api.InstancePlugin):
+class CollectBlenderInstanceData(plugin.BlenderInstancePlugin):
"""Validator to verify that the instance is not empty"""
order = pyblish.api.CollectorOrder
diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_render.py b/server_addon/blender/client/ayon_blender/plugins/publish/collect_render.py
similarity index 97%
rename from client/ayon_core/hosts/blender/plugins/publish/collect_render.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/collect_render.py
index 1ad2de2b7d..ac5dc5bf6f 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/collect_render.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/collect_render.py
@@ -5,12 +5,12 @@ import os
import re
import bpy
-
-from ayon_core.hosts.blender.api import colorspace
import pyblish.api
+from ayon_blender.api import colorspace, plugin
-class CollectBlenderRender(pyblish.api.InstancePlugin):
+
+class CollectBlenderRender(plugin.BlenderInstancePlugin):
"""Gather all publishable render instances."""
order = pyblish.api.CollectorOrder + 0.01
diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_review.py b/server_addon/blender/client/ayon_blender/plugins/publish/collect_review.py
similarity index 95%
rename from client/ayon_core/hosts/blender/plugins/publish/collect_review.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/collect_review.py
index 2c077398da..c013910b5a 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/collect_review.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/collect_review.py
@@ -1,9 +1,9 @@
import bpy
-
import pyblish.api
+from ayon_blender.api import plugin
-class CollectReview(pyblish.api.InstancePlugin):
+class CollectReview(plugin.BlenderInstancePlugin):
"""Collect Review data
"""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_workfile.py b/server_addon/blender/client/ayon_blender/plugins/publish/collect_workfile.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/publish/collect_workfile.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/collect_workfile.py
index 6561c89605..347a5caf01 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/collect_workfile.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/collect_workfile.py
@@ -1,9 +1,10 @@
from pathlib import Path
-from pyblish.api import InstancePlugin, CollectorOrder
+from pyblish.api import CollectorOrder
+from ayon_blender.api import plugin
-class CollectWorkfile(InstancePlugin):
+class CollectWorkfile(plugin.BlenderInstancePlugin):
"""Inject workfile data into its instance."""
order = CollectorOrder
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_abc.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_abc.py
similarity index 95%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_abc.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_abc.py
index 6590be515c..5da0258586 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_abc.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_abc.py
@@ -4,10 +4,10 @@ import bpy
from ayon_core.lib import BoolDef
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
-class ExtractABC(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractABC(plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin):
"""Extract as ABC."""
label = "Extract ABC"
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_abc_animation.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_abc_animation.py
similarity index 94%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_abc_animation.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_abc_animation.py
index f33af13282..503593c8d3 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_abc_animation.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_abc_animation.py
@@ -3,12 +3,12 @@ import os
import bpy
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
class ExtractAnimationABC(
- publish.Extractor,
- publish.OptionalPyblishPluginMixin,
+ plugin.BlenderExtractor,
+ publish.OptionalPyblishPluginMixin,
):
"""Extract as ABC."""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_blend.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_blend.py
similarity index 94%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_blend.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_blend.py
index 19fe9c6271..520bc274a1 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_blend.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_blend.py
@@ -3,9 +3,12 @@ import os
import bpy
from ayon_core.pipeline import publish
+from ayon_blender.api import plugin
-class ExtractBlend(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractBlend(
+ plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin
+):
"""Extract a blend file."""
label = "Extract Blend"
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_blend_animation.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_blend_animation.py
similarity index 94%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_blend_animation.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_blend_animation.py
index 315fbb19af..cca8ab2dd6 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_blend_animation.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_blend_animation.py
@@ -3,11 +3,12 @@ import os
import bpy
from ayon_core.pipeline import publish
+from ayon_blender.api import plugin
class ExtractBlendAnimation(
- publish.Extractor,
- publish.OptionalPyblishPluginMixin,
+ plugin.BlenderExtractor,
+ publish.OptionalPyblishPluginMixin,
):
"""Extract a blend file."""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_camera_abc.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_camera_abc.py
similarity index 93%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_camera_abc.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_camera_abc.py
index c60c92dee1..278cd293c5 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_camera_abc.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_camera_abc.py
@@ -3,10 +3,12 @@ import os
import bpy
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
-class ExtractCameraABC(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractCameraABC(
+ plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin
+):
"""Extract camera as ABC."""
label = "Extract Camera (ABC)"
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_camera_fbx.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_camera_fbx.py
similarity index 94%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_camera_fbx.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_camera_fbx.py
index bcaf9ebc44..9094355a72 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_camera_fbx.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_camera_fbx.py
@@ -3,10 +3,12 @@ import os
import bpy
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
-class ExtractCamera(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractCamera(
+ plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin
+):
"""Extract as the camera as FBX."""
label = "Extract Camera (FBX)"
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_fbx.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_fbx.py
similarity index 95%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_fbx.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_fbx.py
index e6367dbc0d..085f7b18c3 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_fbx.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_fbx.py
@@ -3,10 +3,12 @@ import os
import bpy
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
+from ayon_blender.api import plugin
-class ExtractFBX(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractFBX(
+ plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin
+):
"""Extract as FBX."""
label = "Extract FBX"
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_fbx_animation.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_fbx_animation.py
similarity index 97%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_fbx_animation.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_fbx_animation.py
index ae02909152..7f49e919db 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_fbx_animation.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_fbx_animation.py
@@ -6,8 +6,8 @@ import bpy_extras
import bpy_extras.anim_utils
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.pipeline import AVALON_PROPERTY
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import AVALON_PROPERTY
def get_all_parents(obj):
@@ -42,8 +42,8 @@ def get_highest_root(objects):
class ExtractAnimationFBX(
- publish.Extractor,
- publish.OptionalPyblishPluginMixin,
+ plugin.BlenderExtractor,
+ publish.OptionalPyblishPluginMixin,
):
"""Extract as animation."""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_layout.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_layout.py
similarity index 97%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_layout.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_layout.py
index 0679483dd5..0732d29c9d 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_layout.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_layout.py
@@ -8,11 +8,13 @@ import bpy_extras.anim_utils
from ayon_api import get_representations
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin
-from ayon_core.hosts.blender.api.pipeline import AVALON_PROPERTY
+from ayon_blender.api import plugin
+from ayon_blender.api.pipeline import AVALON_PROPERTY
-class ExtractLayout(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractLayout(
+ plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin
+):
"""Extract a layout."""
label = "Extract Layout (JSON)"
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_playblast.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_playblast.py
similarity index 94%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_playblast.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_playblast.py
index ce6f40f967..0f769c296d 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_playblast.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_playblast.py
@@ -7,11 +7,13 @@ import pyblish.api
import bpy
from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import capture
-from ayon_core.hosts.blender.api.lib import maintained_time
+from ayon_blender.api import capture, plugin
+from ayon_blender.api.lib import maintained_time
-class ExtractPlayblast(publish.Extractor, publish.OptionalPyblishPluginMixin):
+class ExtractPlayblast(
+ plugin.BlenderExtractor, publish.OptionalPyblishPluginMixin
+):
"""
Extract viewport playblast.
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_thumbnail.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_thumbnail.py
similarity index 93%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_thumbnail.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_thumbnail.py
index 4330c57d99..40097aaa89 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_thumbnail.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_thumbnail.py
@@ -3,14 +3,13 @@ import glob
import json
import pyblish.api
-from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import capture
-from ayon_core.hosts.blender.api.lib import maintained_time
+from ayon_blender.api import capture, plugin
+from ayon_blender.api.lib import maintained_time
import bpy
-class ExtractThumbnail(publish.Extractor):
+class ExtractThumbnail(plugin.BlenderExtractor):
"""Extract viewport thumbnail.
Takes review camera and creates a thumbnail based on viewport
diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py b/server_addon/blender/client/ayon_blender/plugins/publish/extract_usd.py
similarity index 93%
rename from client/ayon_core/hosts/blender/plugins/publish/extract_usd.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/extract_usd.py
index 1d4fa3d7ac..7ea89ae3dc 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/extract_usd.py
@@ -2,11 +2,11 @@ import os
import bpy
-from ayon_core.pipeline import publish
-from ayon_core.hosts.blender.api import plugin, lib
+from ayon_core.pipeline import KnownPublishError
+from ayon_blender.api import plugin, lib
-class ExtractUSD(publish.Extractor):
+class ExtractUSD(plugin.BlenderExtractor):
"""Extract as USD."""
label = "Extract USD"
@@ -40,7 +40,7 @@ class ExtractUSD(publish.Extractor):
root = lib.get_highest_root(objects=instance[:])
if not root:
instance_node = instance.data["transientData"]["instance_node"]
- raise publish.KnownPublishError(
+ raise KnownPublishError(
f"No root object found in instance: {instance_node.name}"
)
self.log.debug(f"Exporting using active root: {root.name}")
diff --git a/client/ayon_core/hosts/blender/plugins/publish/increment_workfile_version.py b/server_addon/blender/client/ayon_blender/plugins/publish/increment_workfile_version.py
similarity index 86%
rename from client/ayon_core/hosts/blender/plugins/publish/increment_workfile_version.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/increment_workfile_version.py
index b6e0ea3e19..50d16ea54a 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/increment_workfile_version.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/increment_workfile_version.py
@@ -1,11 +1,12 @@
import pyblish.api
from ayon_core.pipeline.publish import OptionalPyblishPluginMixin
-from ayon_core.hosts.blender.api.workio import save_file
+from ayon_blender.api.workio import save_file
+from ayon_blender.api import plugin
class IncrementWorkfileVersion(
- pyblish.api.ContextPlugin,
- OptionalPyblishPluginMixin
+ plugin.BlenderContextPlugin,
+ OptionalPyblishPluginMixin
):
"""Increment current workfile version."""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/integrate_animation.py b/server_addon/blender/client/ayon_blender/plugins/publish/integrate_animation.py
similarity index 93%
rename from client/ayon_core/hosts/blender/plugins/publish/integrate_animation.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/integrate_animation.py
index 5d3a1dac93..b95c280ab0 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/integrate_animation.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/integrate_animation.py
@@ -2,11 +2,12 @@ import json
import pyblish.api
from ayon_core.pipeline.publish import OptionalPyblishPluginMixin
+from ayon_blender.api import plugin
class IntegrateAnimation(
- pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin,
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin,
):
"""Generate a JSON file for animation."""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_camera_zero_keyframe.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_camera_zero_keyframe.py
similarity index 85%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_camera_zero_keyframe.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_camera_zero_keyframe.py
index cce95e9cf9..df66f71dc5 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_camera_zero_keyframe.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_camera_zero_keyframe.py
@@ -2,9 +2,8 @@ from typing import List
import bpy
-import pyblish.api
-
-import ayon_core.hosts.blender.api.action
+import ayon_blender.api.action
+from ayon_blender.api import plugin
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
PublishValidationError,
@@ -12,8 +11,10 @@ from ayon_core.pipeline.publish import (
)
-class ValidateCameraZeroKeyframe(pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin):
+class ValidateCameraZeroKeyframe(
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin
+):
"""Camera must have a keyframe at frame 0.
Unreal shifts the first keyframe to frame 0. Forcing the camera to have
@@ -25,7 +26,7 @@ class ValidateCameraZeroKeyframe(pyblish.api.InstancePlugin,
hosts = ["blender"]
families = ["camera"]
label = "Zero Keyframe"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction]
+ actions = [ayon_blender.api.action.SelectInvalidAction]
@staticmethod
def get_invalid(instance) -> List:
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_deadline_publish.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_deadline_publish.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_deadline_publish.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_deadline_publish.py
index a86e73ba81..fe544ee310 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_deadline_publish.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_deadline_publish.py
@@ -2,18 +2,20 @@ import os
import bpy
-import pyblish.api
from ayon_core.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
PublishValidationError,
OptionalPyblishPluginMixin
)
-from ayon_core.hosts.blender.api.render_lib import prepare_rendering
+from ayon_blender.api import plugin
+from ayon_blender.api.render_lib import prepare_rendering
-class ValidateDeadlinePublish(pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin):
+class ValidateDeadlinePublish(
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin
+):
"""Validates Render File Directory is
not the same in every submission
"""
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_file_saved.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_file_saved.py
similarity index 93%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_file_saved.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_file_saved.py
index aa73525555..e6b7b01c71 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_file_saved.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_file_saved.py
@@ -6,6 +6,7 @@ from ayon_core.pipeline.publish import (
OptionalPyblishPluginMixin,
PublishValidationError
)
+from ayon_blender.api import plugin
class SaveWorkfileAction(pyblish.api.Action):
@@ -18,8 +19,10 @@ class SaveWorkfileAction(pyblish.api.Action):
bpy.ops.wm.avalon_workfiles()
-class ValidateFileSaved(pyblish.api.ContextPlugin,
- OptionalPyblishPluginMixin):
+class ValidateFileSaved(
+ plugin.BlenderContextPlugin,
+ OptionalPyblishPluginMixin
+):
"""Validate that the workfile has been saved."""
order = pyblish.api.ValidatorOrder - 0.01
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_instance_empty.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_instance_empty.py
similarity index 88%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_instance_empty.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_instance_empty.py
index f0f4106379..9561cc7020 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_instance_empty.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_instance_empty.py
@@ -1,8 +1,9 @@
import pyblish.api
from ayon_core.pipeline.publish import PublishValidationError
+from ayon_blender.api import plugin
-class ValidateInstanceEmpty(pyblish.api.InstancePlugin):
+class ValidateInstanceEmpty(plugin.BlenderInstancePlugin):
"""Validator to verify that the instance is not empty"""
order = pyblish.api.ValidatorOrder - 0.01
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_mesh_has_uv.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_mesh_has_uv.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_mesh_has_uv.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_mesh_has_uv.py
index 9871dfeb4e..3dd49e0e45 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_mesh_has_uv.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_mesh_has_uv.py
@@ -2,19 +2,18 @@ from typing import List
import bpy
-import pyblish.api
-
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
OptionalPyblishPluginMixin,
PublishValidationError
)
-import ayon_core.hosts.blender.api.action
+import ayon_blender.api.action
+from ayon_blender.api import plugin
class ValidateMeshHasUvs(
- pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin,
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin,
):
"""Validate that the current mesh has UV's."""
@@ -22,7 +21,7 @@ class ValidateMeshHasUvs(
hosts = ["blender"]
families = ["model"]
label = "Mesh Has UVs"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction]
+ actions = [ayon_blender.api.action.SelectInvalidAction]
optional = True
@staticmethod
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_mesh_no_negative_scale.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_mesh_no_negative_scale.py
similarity index 79%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_mesh_no_negative_scale.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_mesh_no_negative_scale.py
index fb16bb7f8d..91de310e46 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_mesh_no_negative_scale.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_mesh_no_negative_scale.py
@@ -2,25 +2,26 @@ from typing import List
import bpy
-import pyblish.api
-
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
OptionalPyblishPluginMixin,
PublishValidationError
)
-import ayon_core.hosts.blender.api.action
+import ayon_blender.api.action
+from ayon_blender.api import plugin
-class ValidateMeshNoNegativeScale(pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin):
+class ValidateMeshNoNegativeScale(
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin
+):
"""Ensure that meshes don't have a negative scale."""
order = ValidateContentsOrder
hosts = ["blender"]
families = ["model"]
label = "Mesh No Negative Scale"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction]
+ actions = [ayon_blender.api.action.SelectInvalidAction]
@staticmethod
def get_invalid(instance) -> List:
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_model_uv_map1.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_model_uv_map1.py
similarity index 92%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_model_uv_map1.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_model_uv_map1.py
index 752bc5fa58..74f550b6db 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_model_uv_map1.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_model_uv_map1.py
@@ -3,20 +3,19 @@ from typing import List
import bpy
-import pyblish.api
-
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
OptionalPyblishPluginMixin,
PublishValidationError,
RepairAction
)
-import ayon_core.hosts.blender.api.action
+import ayon_blender.api.action
+from ayon_blender.api import plugin
class ValidateModelMeshUvMap1(
- pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin,
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin,
):
"""Validate model mesh uvs are named `map1`.
@@ -27,7 +26,7 @@ class ValidateModelMeshUvMap1(
hosts = ["blender"]
families = ["model"]
label = "Mesh UVs named map1"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction,
+ actions = [ayon_blender.api.action.SelectInvalidAction,
RepairAction]
optional = True
enabled = False
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_no_colons_in_name.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_no_colons_in_name.py
similarity index 83%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_no_colons_in_name.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_no_colons_in_name.py
index 5620946f1e..dbafb53263 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_no_colons_in_name.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_no_colons_in_name.py
@@ -2,9 +2,8 @@ from typing import List
import bpy
-import pyblish.api
-
-import ayon_core.hosts.blender.api.action
+import ayon_blender.api.action
+from ayon_blender.api import plugin
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
OptionalPyblishPluginMixin,
@@ -12,8 +11,10 @@ from ayon_core.pipeline.publish import (
)
-class ValidateNoColonsInName(pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin):
+class ValidateNoColonsInName(
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin
+):
"""There cannot be colons in names
Object or bone names cannot include colons. Other software do not
@@ -25,7 +26,7 @@ class ValidateNoColonsInName(pyblish.api.InstancePlugin,
hosts = ["blender"]
families = ["model", "rig"]
label = "No Colons in names"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction]
+ actions = [ayon_blender.api.action.SelectInvalidAction]
@staticmethod
def get_invalid(instance) -> List:
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_object_mode.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_object_mode.py
similarity index 84%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_object_mode.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_object_mode.py
index d215ffc1be..4dc2c39949 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_object_mode.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_object_mode.py
@@ -7,12 +7,13 @@ from ayon_core.pipeline.publish import (
OptionalPyblishPluginMixin,
PublishValidationError
)
-import ayon_core.hosts.blender.api.action
+import ayon_blender.api.action
+from ayon_blender.api import plugin
class ValidateObjectIsInObjectMode(
- pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin,
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin,
):
"""Validate that the objects in the instance are in Object Mode."""
@@ -20,7 +21,7 @@ class ValidateObjectIsInObjectMode(
hosts = ["blender"]
families = ["model", "rig", "layout"]
label = "Validate Object Mode"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction]
+ actions = [ayon_blender.api.action.SelectInvalidAction]
optional = False
@staticmethod
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_render_camera_is_set.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_render_camera_is_set.py
similarity index 80%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_render_camera_is_set.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_render_camera_is_set.py
index 46bfe45739..15eb64d2ad 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_render_camera_is_set.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_render_camera_is_set.py
@@ -6,10 +6,13 @@ from ayon_core.pipeline.publish import (
OptionalPyblishPluginMixin,
PublishValidationError
)
+from ayon_blender.api import plugin
-class ValidateRenderCameraIsSet(pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin):
+class ValidateRenderCameraIsSet(
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin
+):
"""Validate that there is a camera set as active for rendering."""
order = pyblish.api.ValidatorOrder
diff --git a/client/ayon_core/hosts/blender/plugins/publish/validate_transform_zero.py b/server_addon/blender/client/ayon_blender/plugins/publish/validate_transform_zero.py
similarity index 89%
rename from client/ayon_core/hosts/blender/plugins/publish/validate_transform_zero.py
rename to server_addon/blender/client/ayon_blender/plugins/publish/validate_transform_zero.py
index 465ec15d7b..c7bfc6e8a6 100644
--- a/client/ayon_core/hosts/blender/plugins/publish/validate_transform_zero.py
+++ b/server_addon/blender/client/ayon_blender/plugins/publish/validate_transform_zero.py
@@ -4,10 +4,8 @@ from typing import List
import mathutils
import bpy
-import pyblish.api
-
-from ayon_core.hosts.blender.api import plugin, lib
-import ayon_core.hosts.blender.api.action
+from ayon_blender.api import plugin, lib
+import ayon_blender.api.action
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
OptionalPyblishPluginMixin,
@@ -16,15 +14,17 @@ from ayon_core.pipeline.publish import (
)
-class ValidateTransformZero(pyblish.api.InstancePlugin,
- OptionalPyblishPluginMixin):
+class ValidateTransformZero(
+ plugin.BlenderInstancePlugin,
+ OptionalPyblishPluginMixin
+):
"""Transforms can't have any values"""
order = ValidateContentsOrder
hosts = ["blender"]
families = ["model"]
label = "Transform Zero"
- actions = [ayon_core.hosts.blender.api.action.SelectInvalidAction,
+ actions = [ayon_blender.api.action.SelectInvalidAction,
RepairAction]
_identity = mathutils.Matrix()
diff --git a/server_addon/blender/client/ayon_blender/version.py b/server_addon/blender/client/ayon_blender/version.py
new file mode 100644
index 0000000000..365c44e71b
--- /dev/null
+++ b/server_addon/blender/client/ayon_blender/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'blender' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/blender/package.py b/server_addon/blender/package.py
index d2c02a4909..4e0ac112e1 100644
--- a/server_addon/blender/package.py
+++ b/server_addon/blender/package.py
@@ -1,3 +1,11 @@
name = "blender"
title = "Blender"
-version = "0.1.9"
+version = "0.2.0"
+
+client_dir = "ayon_blender"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
+
diff --git a/server_addon/create_ayon_addons.py b/server_addon/create_ayon_addons.py
index 749077d2a8..ac053c8e09 100644
--- a/server_addon/create_ayon_addons.py
+++ b/server_addon/create_ayon_addons.py
@@ -1,3 +1,4 @@
+import io
import os
import sys
import re
@@ -9,7 +10,7 @@ import importlib.machinery
import platform
import collections
from pathlib import Path
-from typing import Any, Optional, Iterable, Pattern, List, Tuple
+from typing import Optional, Iterable, Pattern, List, Tuple
# Patterns of directories to be skipped for server part of addon
IGNORE_DIR_PATTERNS: List[Pattern] = [
@@ -70,9 +71,7 @@ class ZipFileLongPaths(zipfile.ZipFile):
else:
tpath = "\\\\?\\" + tpath
- return super(ZipFileLongPaths, self)._extract_member(
- member, tpath, pwd
- )
+ return super()._extract_member(member, tpath, pwd)
def _value_match_regexes(value: str, regexes: Iterable[Pattern]) -> bool:
@@ -86,7 +85,7 @@ def find_files_in_subdir(
src_path: str,
ignore_file_patterns: Optional[List[Pattern]] = None,
ignore_dir_patterns: Optional[List[Pattern]] = None,
- ignore_subdirs: Optional[Iterable[Tuple[str]]] = None
+ include_empty_dirs: bool = True
):
"""Find all files to copy in subdirectories of given path.
@@ -100,8 +99,7 @@ def find_files_in_subdir(
to match files to ignore.
ignore_dir_patterns (Optional[List[Pattern]]): List of regexes
to match directories to ignore.
- ignore_subdirs (Optional[Iterable[Tuple[str]]]): List of
- subdirectories to ignore.
+ include_empty_dirs (Optional[bool]): Do not skip empty directories.
Returns:
List[Tuple[str, str]]: List of tuples with path to file and parent
@@ -113,16 +111,18 @@ def find_files_in_subdir(
if ignore_dir_patterns is None:
ignore_dir_patterns = IGNORE_DIR_PATTERNS
- output: list[tuple[str, str]] = []
+ output: List[Tuple[str, str]] = []
hierarchy_queue = collections.deque()
hierarchy_queue.append((src_path, []))
while hierarchy_queue:
- item: tuple[str, str] = hierarchy_queue.popleft()
+ item: Tuple[str, List[str]] = hierarchy_queue.popleft()
dirpath, parents = item
- if ignore_subdirs and parents in ignore_subdirs:
- continue
- for name in os.listdir(dirpath):
+ subnames = list(os.listdir(dirpath))
+ if not subnames and include_empty_dirs:
+ output.append((dirpath, os.path.sep.join(parents)))
+
+ for name in subnames:
path = os.path.join(dirpath, name)
if os.path.isfile(path):
if not _value_match_regexes(name, ignore_file_patterns):
@@ -139,89 +139,54 @@ def find_files_in_subdir(
return output
-def read_addon_version(version_path: Path) -> str:
- # Read version
- version_content: dict[str, Any] = {}
- with open(str(version_path), "r") as stream:
- exec(stream.read(), version_content)
- return version_content["__version__"]
-
-
-def get_addon_version(addon_dir: Path) -> str:
- return read_addon_version(addon_dir / "server" / "version.py")
-
-
def create_addon_zip(
output_dir: Path,
addon_name: str,
addon_version: str,
- keep_source: bool,
+ files_mapping: List[Tuple[str, str]],
+ client_zip_content: io.BytesIO
):
zip_filepath = output_dir / f"{addon_name}-{addon_version}.zip"
- addon_output_dir = output_dir / addon_name / addon_version
with ZipFileLongPaths(zip_filepath, "w", zipfile.ZIP_DEFLATED) as zipf:
- # Add client code content to zip
- src_root = os.path.normpath(str(addon_output_dir.absolute()))
- src_root_offset = len(src_root) + 1
- for root, _, filenames in os.walk(str(addon_output_dir)):
- rel_root = ""
- if root != src_root:
- rel_root = root[src_root_offset:]
+ for src_path, dst_subpath in files_mapping:
+ zipf.write(src_path, dst_subpath)
- for filename in filenames:
- src_path = os.path.join(root, filename)
- if rel_root:
- dst_path = os.path.join(rel_root, filename)
- else:
- dst_path = filename
-
- zipf.write(src_path, dst_path)
-
- if not keep_source:
- shutil.rmtree(str(output_dir / addon_name))
+ if client_zip_content is not None:
+ zipf.writestr("private/client.zip", client_zip_content.getvalue())
-def prepare_client_code(
- addon_name: str,
+def prepare_client_zip(
addon_dir: Path,
- addon_output_dir: Path,
- addon_version: str
+ addon_name: str,
+ addon_version: str,
+ client_dir: str
):
- client_dir = addon_dir / "client"
- if not client_dir.exists():
- return
+ if not client_dir:
+ return None
+ client_dir_obj = addon_dir / "client" / client_dir
+ if not client_dir_obj.exists():
+ return None
- # Prepare private dir in output
- private_dir = addon_output_dir / "private"
- private_dir.mkdir(parents=True, exist_ok=True)
+ # Update version.py with server version if 'version.py' is available
+ version_path = client_dir_obj / "version.py"
+ if version_path.exists():
+ with open(version_path, "w") as stream:
+ stream.write(
+ CLIENT_VERSION_CONTENT.format(addon_name, addon_version)
+ )
- # Copy pyproject toml if available
- pyproject_toml = client_dir / "pyproject.toml"
- if pyproject_toml.exists():
- shutil.copy(pyproject_toml, private_dir)
+ zip_content = io.BytesIO()
+ with ZipFileLongPaths(zip_content, "a", zipfile.ZIP_DEFLATED) as zipf:
+ # Add client code content to zip
+ for path, sub_path in find_files_in_subdir(
+ str(client_dir_obj), include_empty_dirs=False
+ ):
+ sub_path = os.path.join(client_dir, sub_path)
+ zipf.write(path, sub_path)
- for subpath in client_dir.iterdir():
- if subpath.name == "pyproject.toml":
- continue
-
- if subpath.is_file():
- continue
-
- # Update version.py with server version if 'version.py' is available
- version_path = subpath / "version.py"
- if version_path.exists():
- with open(version_path, "w") as stream:
- stream.write(
- CLIENT_VERSION_CONTENT.format(addon_name, addon_version)
- )
-
- zip_filepath = private_dir / "client.zip"
- with ZipFileLongPaths(zip_filepath, "w", zipfile.ZIP_DEFLATED) as zipf:
- # Add client code content to zip
- for path, sub_path in find_files_in_subdir(str(subpath)):
- sub_path = os.path.join(subpath.name, sub_path)
- zipf.write(path, sub_path)
+ zip_content.seek(0)
+ return zip_content
def import_filepath(path: Path, module_name: Optional[str] = None):
@@ -241,44 +206,73 @@ def import_filepath(path: Path, module_name: Optional[str] = None):
return module
+def _get_server_mapping(
+ addon_dir: Path, addon_version: str
+) -> List[Tuple[str, str]]:
+ server_dir = addon_dir / "server"
+ src_package_py = addon_dir / "package.py"
+ pyproject_toml = addon_dir / "client" / "pyproject.toml"
+
+ mapping: List[Tuple[str, str]] = [
+ (src_path, f"server/{sub_path}")
+ for src_path, sub_path in find_files_in_subdir(str(server_dir))
+ ]
+ mapping.append((src_package_py.as_posix(), "package.py"))
+ if pyproject_toml.exists():
+ mapping.append((pyproject_toml.as_posix(), "private/pyproject.toml"))
+
+ return mapping
+
+
def create_addon_package(
addon_dir: Path,
output_dir: Path,
create_zip: bool,
- keep_source: bool,
):
src_package_py = addon_dir / "package.py"
+
package = import_filepath(src_package_py)
+ addon_name = package.name
addon_version = package.version
- addon_output_dir = output_dir / addon_dir.name / addon_version
- if addon_output_dir.exists():
- shutil.rmtree(str(addon_output_dir))
- addon_output_dir.mkdir(parents=True)
+ files_mapping = _get_server_mapping(addon_dir, addon_version)
- # Copy server content
- dst_package_py = addon_output_dir / "package.py"
- shutil.copy(src_package_py, dst_package_py)
-
- server_dir = addon_dir / "server"
- shutil.copytree(
- server_dir, addon_output_dir / "server", dirs_exist_ok=True
- )
-
- prepare_client_code(
- package.name, addon_dir, addon_output_dir, addon_version
+ client_dir = getattr(package, "client_dir", None)
+ client_zip_content = prepare_client_zip(
+ addon_dir, addon_name, addon_version, client_dir
)
if create_zip:
create_addon_zip(
- output_dir, addon_dir.name, addon_version, keep_source
+ output_dir,
+ addon_name,
+ addon_version,
+ files_mapping,
+ client_zip_content
)
+ else:
+ addon_output_dir = output_dir / addon_dir.name / addon_version
+ if addon_output_dir.exists():
+ shutil.rmtree(str(addon_output_dir))
+
+ addon_output_dir.mkdir(parents=True, exist_ok=True)
+
+ for src_path, dst_subpath in files_mapping:
+ dst_path = addon_output_dir / dst_subpath
+ dst_path.parent.mkdir(parents=True, exist_ok=True)
+ shutil.copy2(src_path, dst_path)
+
+ if client_zip_content is not None:
+ private_dir = addon_output_dir / "private"
+ private_dir.mkdir(parents=True, exist_ok=True)
+ with open(private_dir / "client.zip", "wb") as stream:
+ stream.write(client_zip_content.read())
+
def main(
output_dir=None,
skip_zip=True,
- keep_source=False,
clear_output_dir=False,
addons=None,
):
@@ -313,9 +307,7 @@ def main(
if not server_dir.exists():
continue
- create_addon_package(
- addon_dir, output_dir, create_zip, keep_source
- )
+ create_addon_package(addon_dir, output_dir, create_zip)
print(f"- package '{addon_dir.name}' created")
print(f"Package creation finished. Output directory: {output_dir}")
@@ -366,10 +358,12 @@ if __name__ == "__main__":
)
args = parser.parse_args(sys.argv[1:])
+ if args.keep_sources:
+ print("Keeping sources is not supported anymore!")
+
main(
args.output_dir,
args.skip_zip,
- args.keep_sources,
args.clear_output_dir,
args.addons,
)
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/harmony/__init__.py b/server_addon/harmony/client/ayon_harmony/__init__.py
similarity index 77%
rename from client/ayon_core/hosts/harmony/__init__.py
rename to server_addon/harmony/client/ayon_harmony/__init__.py
index 6454d6f9d7..425439a603 100644
--- a/client/ayon_core/hosts/harmony/__init__.py
+++ b/server_addon/harmony/client/ayon_harmony/__init__.py
@@ -1,3 +1,4 @@
+from .version import __version__
from .addon import (
HARMONY_ADDON_ROOT,
HarmonyAddon,
@@ -6,6 +7,8 @@ from .addon import (
__all__ = (
+ "__version__",
+
"HARMONY_ADDON_ROOT",
"HarmonyAddon",
"get_launch_script_path",
diff --git a/client/ayon_core/hosts/harmony/addon.py b/server_addon/harmony/client/ayon_harmony/addon.py
similarity index 94%
rename from client/ayon_core/hosts/harmony/addon.py
rename to server_addon/harmony/client/ayon_harmony/addon.py
index 1915a7eb6f..ef96cf03f7 100644
--- a/client/ayon_core/hosts/harmony/addon.py
+++ b/server_addon/harmony/client/ayon_harmony/addon.py
@@ -1,11 +1,14 @@
import os
from ayon_core.addon import AYONAddon, IHostAddon
+from .version import __version__
+
HARMONY_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
class HarmonyAddon(AYONAddon, IHostAddon):
name = "harmony"
+ version = __version__
host_name = "harmony"
def add_implementation_envs(self, env, _app):
diff --git a/client/ayon_core/hosts/harmony/api/README.md b/server_addon/harmony/client/ayon_harmony/api/README.md
similarity index 97%
rename from client/ayon_core/hosts/harmony/api/README.md
rename to server_addon/harmony/client/ayon_harmony/api/README.md
index b8d1dbc100..6666ede83c 100644
--- a/client/ayon_core/hosts/harmony/api/README.md
+++ b/server_addon/harmony/client/ayon_harmony/api/README.md
@@ -5,7 +5,7 @@
The easiest way to setup for using Toon Boom Harmony is to use the built-in launch:
```
-python -c "import ayon_core.hosts.harmony.api as harmony;harmony.launch("path/to/harmony/executable")"
+python -c "import ayon_harmony.api as harmony;harmony.launch("path/to/harmony/executable")"
```
Communication with Harmony happens with a server/client relationship where the server is in the Python process and the client is in the Harmony process. Messages between Python and Harmony are required to be dictionaries, which are serialized to strings:
@@ -59,7 +59,7 @@ You can show the Workfiles app when Harmony launches by setting environment vari
### Low level messaging
To send from Python to Harmony you can use the exposed method:
```python
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from uuid import uuid4
@@ -75,7 +75,7 @@ print(harmony.send({"function": func, "args": ["Python"]})["result"])
To send a function with multiple arguments its best to declare the arguments within the function:
```python
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from uuid import uuid4
signature = str(uuid4()).replace("-", "_")
@@ -114,7 +114,7 @@ PypeHarmony.myAwesomeFunction = function() {
Then you can call that javascript code from your Python like:
```Python
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
harmony.send({"function": "PypeHarmony.myAwesomeFunction"});
@@ -159,7 +159,7 @@ Now in python, just read all those files and send them to Harmony.
```python
from pathlib import Path
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
path_to_js = Path('/path/to/my/js')
script_to_send = ""
@@ -178,7 +178,7 @@ harmony.send({"function": "Master.Boo.B"})
### Scene Save
Instead of sending a request to Harmony with `scene.saveAll` please use:
```python
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
harmony.save_scene()
```
@@ -195,7 +195,7 @@ These plugins were made with the [polly config](https://github.com/mindbender-st
#### Creator Plugin
```python
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from uuid import uuid4
@@ -213,7 +213,7 @@ class CreateComposite(harmony.Creator):
The creator plugin can be configured to use other node types. For example here is a write node creator:
```python
from uuid import uuid4
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class CreateRender(harmony.Creator):
@@ -244,7 +244,7 @@ class CreateRender(harmony.Creator):
```python
import pyblish.api
from ayon_core.pipeline import AYON_INSTANCE_ID, AVALON_INSTANCE_ID
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class CollectInstances(pyblish.api.ContextPlugin):
@@ -292,7 +292,7 @@ import os
from uuid import uuid4
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
import clique
@@ -423,7 +423,7 @@ class ExtractImage(pyblish.api.InstancePlugin):
import os
from uuid import uuid4
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
signature = str(uuid4()).replace("-", "_")
copy_files = """function copyFile(srcFilename, dstFilename)
diff --git a/client/ayon_core/hosts/harmony/api/TB_sceneOpened.js b/server_addon/harmony/client/ayon_harmony/api/TB_sceneOpened.js
similarity index 97%
rename from client/ayon_core/hosts/harmony/api/TB_sceneOpened.js
rename to server_addon/harmony/client/ayon_harmony/api/TB_sceneOpened.js
index cdf60c1aa8..00858b6de1 100644
--- a/client/ayon_core/hosts/harmony/api/TB_sceneOpened.js
+++ b/server_addon/harmony/client/ayon_harmony/api/TB_sceneOpened.js
@@ -387,7 +387,7 @@ function start() {
*/
self.onCreator = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['creator']
}, false);
@@ -402,7 +402,7 @@ function start() {
*/
self.onWorkfiles = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['workfiles']
}, false);
@@ -417,7 +417,7 @@ function start() {
*/
self.onLoad = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['loader']
}, false);
@@ -433,7 +433,7 @@ function start() {
*/
self.onPublish = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['publish']
}, false);
@@ -449,7 +449,7 @@ function start() {
*/
self.onManage = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['sceneinventory']
}, false);
@@ -465,7 +465,7 @@ function start() {
*/
self.onSubsetManage = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['subsetmanager']
}, false);
@@ -482,7 +482,7 @@ function start() {
self.onSetSceneSettings = function() {
app.avalonClient.send(
{
- "module": "ayon_core.hosts.harmony.api",
+ "module": "ayon_harmony.api",
"method": "ensure_scene_settings",
"args": []
},
@@ -500,7 +500,7 @@ function start() {
*/
self.onExperimentalTools = function() {
app.avalonClient.send({
- 'module': 'ayon_core.hosts.harmony.api.lib',
+ 'module': 'ayon_harmony.api.lib',
'method': 'show',
'args': ['experimental_tools']
}, false);
@@ -550,7 +550,7 @@ function ensureSceneSettings() {
var app = QCoreApplication.instance();
app.avalonClient.send(
{
- "module": "ayon_core.hosts.harmony.api",
+ "module": "ayon_harmony.api",
"method": "ensure_scene_settings",
"args": []
},
diff --git a/client/ayon_core/hosts/harmony/api/__init__.py b/server_addon/harmony/client/ayon_harmony/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/harmony/api/__init__.py
rename to server_addon/harmony/client/ayon_harmony/api/__init__.py
diff --git a/client/ayon_core/hosts/harmony/api/js/.eslintrc.json b/server_addon/harmony/client/ayon_harmony/api/js/.eslintrc.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/api/js/.eslintrc.json
rename to server_addon/harmony/client/ayon_harmony/api/js/.eslintrc.json
diff --git a/client/ayon_core/hosts/harmony/api/js/AvalonHarmony.js b/server_addon/harmony/client/ayon_harmony/api/js/AvalonHarmony.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/api/js/AvalonHarmony.js
rename to server_addon/harmony/client/ayon_harmony/api/js/AvalonHarmony.js
diff --git a/client/ayon_core/hosts/harmony/api/js/package.json b/server_addon/harmony/client/ayon_harmony/api/js/package.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/api/js/package.json
rename to server_addon/harmony/client/ayon_harmony/api/js/package.json
diff --git a/client/ayon_core/hosts/harmony/api/launch_script.py b/server_addon/harmony/client/ayon_harmony/api/launch_script.py
similarity index 97%
rename from client/ayon_core/hosts/harmony/api/launch_script.py
rename to server_addon/harmony/client/ayon_harmony/api/launch_script.py
index 3c809e210f..6327682a43 100644
--- a/client/ayon_core/hosts/harmony/api/launch_script.py
+++ b/server_addon/harmony/client/ayon_harmony/api/launch_script.py
@@ -8,7 +8,7 @@ workfile or others.
import os
import sys
-from ayon_core.hosts.harmony.api.lib import main as host_main
+from ayon_harmony.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/harmony/api/lib.py b/server_addon/harmony/client/ayon_harmony/api/lib.py
similarity index 99%
rename from client/ayon_core/hosts/harmony/api/lib.py
rename to server_addon/harmony/client/ayon_harmony/api/lib.py
index f9980cb65e..46a5318430 100644
--- a/client/ayon_core/hosts/harmony/api/lib.py
+++ b/server_addon/harmony/client/ayon_harmony/api/lib.py
@@ -20,7 +20,7 @@ import collections
from qtpy import QtWidgets, QtCore, QtGui
from ayon_core.lib import is_using_ayon_console
-from ayon_core.tools.stdout_broker.app import StdOutBroker
+from ayon_core.tools.stdout_broker import StdOutBroker
from ayon_core.tools.utils import host_tools
from ayon_core import style
@@ -186,7 +186,7 @@ def launch(application_path, *args):
"""
from ayon_core.pipeline import install_host
- from ayon_core.hosts.harmony import api as harmony
+ from ayon_harmony import api as harmony
install_host(harmony)
@@ -486,7 +486,7 @@ def imprint(node_id, data, remove=False):
remove (bool): Removes the data from the scene.
Example:
- >>> from ayon_core.hosts.harmony.api import lib
+ >>> from ayon_harmony.api import lib
>>> node = "Top/Display"
>>> data = {"str": "something", "int": 1, "float": 0.32, "bool": True}
>>> lib.imprint(layer, data)
diff --git a/client/ayon_core/hosts/harmony/api/pipeline.py b/server_addon/harmony/client/ayon_harmony/api/pipeline.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/api/pipeline.py
rename to server_addon/harmony/client/ayon_harmony/api/pipeline.py
index 1e3ea0ba21..229dcf307e 100644
--- a/client/ayon_core/hosts/harmony/api/pipeline.py
+++ b/server_addon/harmony/client/ayon_harmony/api/pipeline.py
@@ -15,11 +15,11 @@ from ayon_core.pipeline import (
from ayon_core.pipeline.load import get_outdated_containers
from ayon_core.pipeline.context_tools import get_current_folder_entity
-from ayon_core.hosts.harmony import HARMONY_ADDON_ROOT
-import ayon_core.hosts.harmony.api as harmony
+from ayon_harmony import HARMONY_ADDON_ROOT
+import ayon_harmony.api as harmony
-log = logging.getLogger("ayon_core.hosts.harmony")
+log = logging.getLogger("ayon_harmony")
PLUGINS_DIR = os.path.join(HARMONY_ADDON_ROOT, "plugins")
PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish")
diff --git a/client/ayon_core/hosts/harmony/api/plugin.py b/server_addon/harmony/client/ayon_harmony/api/plugin.py
similarity index 97%
rename from client/ayon_core/hosts/harmony/api/plugin.py
rename to server_addon/harmony/client/ayon_harmony/api/plugin.py
index 29ebdb2b8d..6ec876af62 100644
--- a/client/ayon_core/hosts/harmony/api/plugin.py
+++ b/server_addon/harmony/client/ayon_harmony/api/plugin.py
@@ -1,5 +1,5 @@
from ayon_core.pipeline import LegacyCreator
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class Creator(LegacyCreator):
diff --git a/client/ayon_core/hosts/harmony/api/server.py b/server_addon/harmony/client/ayon_harmony/api/server.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/api/server.py
rename to server_addon/harmony/client/ayon_harmony/api/server.py
index 04048e5c84..7e1e36c2ed 100644
--- a/client/ayon_core/hosts/harmony/api/server.py
+++ b/server_addon/harmony/client/ayon_harmony/api/server.py
@@ -69,6 +69,8 @@ class Server(threading.Thread):
self.log.debug(
f"[{self.timestamp()}] Processing request:\n{pretty}")
+ # TODO javascript should not define which module is imported and
+ # which function is called. It should send predefined requests.
try:
module = importlib.import_module(request["module"])
method = getattr(module, request["method"])
diff --git a/client/ayon_core/hosts/harmony/api/temp.zip b/server_addon/harmony/client/ayon_harmony/api/temp.zip
similarity index 100%
rename from client/ayon_core/hosts/harmony/api/temp.zip
rename to server_addon/harmony/client/ayon_harmony/api/temp.zip
diff --git a/client/ayon_core/hosts/harmony/api/workio.py b/server_addon/harmony/client/ayon_harmony/api/workio.py
similarity index 100%
rename from client/ayon_core/hosts/harmony/api/workio.py
rename to server_addon/harmony/client/ayon_harmony/api/workio.py
diff --git a/client/ayon_core/hosts/harmony/hooks/pre_launch_args.py b/server_addon/harmony/client/ayon_harmony/hooks/pre_launch_args.py
similarity index 97%
rename from client/ayon_core/hosts/harmony/hooks/pre_launch_args.py
rename to server_addon/harmony/client/ayon_harmony/hooks/pre_launch_args.py
index 4d38cd09b3..2fdb5ae620 100644
--- a/client/ayon_core/hosts/harmony/hooks/pre_launch_args.py
+++ b/server_addon/harmony/client/ayon_harmony/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.harmony import get_launch_script_path
+from ayon_harmony import get_launch_script_path
def get_launch_kwargs(kwargs):
diff --git a/client/ayon_core/hosts/harmony/js/.eslintrc.json b/server_addon/harmony/client/ayon_harmony/js/.eslintrc.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/.eslintrc.json
rename to server_addon/harmony/client/ayon_harmony/js/.eslintrc.json
diff --git a/client/ayon_core/hosts/harmony/js/PypeHarmony.js b/server_addon/harmony/client/ayon_harmony/js/PypeHarmony.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/PypeHarmony.js
rename to server_addon/harmony/client/ayon_harmony/js/PypeHarmony.js
diff --git a/client/ayon_core/hosts/harmony/js/README.md b/server_addon/harmony/client/ayon_harmony/js/README.md
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/README.md
rename to server_addon/harmony/client/ayon_harmony/js/README.md
diff --git a/client/ayon_core/hosts/harmony/js/creators/CreateRender.js b/server_addon/harmony/client/ayon_harmony/js/creators/CreateRender.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/creators/CreateRender.js
rename to server_addon/harmony/client/ayon_harmony/js/creators/CreateRender.js
diff --git a/client/ayon_core/hosts/harmony/js/loaders/ImageSequenceLoader.js b/server_addon/harmony/client/ayon_harmony/js/loaders/ImageSequenceLoader.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/loaders/ImageSequenceLoader.js
rename to server_addon/harmony/client/ayon_harmony/js/loaders/ImageSequenceLoader.js
diff --git a/client/ayon_core/hosts/harmony/js/loaders/TemplateLoader.js b/server_addon/harmony/client/ayon_harmony/js/loaders/TemplateLoader.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/loaders/TemplateLoader.js
rename to server_addon/harmony/client/ayon_harmony/js/loaders/TemplateLoader.js
diff --git a/client/ayon_core/hosts/harmony/js/package.json b/server_addon/harmony/client/ayon_harmony/js/package.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/package.json
rename to server_addon/harmony/client/ayon_harmony/js/package.json
diff --git a/client/ayon_core/hosts/harmony/js/publish/CollectCurrentFile.js b/server_addon/harmony/client/ayon_harmony/js/publish/CollectCurrentFile.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/publish/CollectCurrentFile.js
rename to server_addon/harmony/client/ayon_harmony/js/publish/CollectCurrentFile.js
diff --git a/client/ayon_core/hosts/harmony/js/publish/CollectFarmRender.js b/server_addon/harmony/client/ayon_harmony/js/publish/CollectFarmRender.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/publish/CollectFarmRender.js
rename to server_addon/harmony/client/ayon_harmony/js/publish/CollectFarmRender.js
diff --git a/client/ayon_core/hosts/harmony/js/publish/CollectPalettes.js b/server_addon/harmony/client/ayon_harmony/js/publish/CollectPalettes.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/publish/CollectPalettes.js
rename to server_addon/harmony/client/ayon_harmony/js/publish/CollectPalettes.js
diff --git a/client/ayon_core/hosts/harmony/js/publish/ExtractPalette.js b/server_addon/harmony/client/ayon_harmony/js/publish/ExtractPalette.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/publish/ExtractPalette.js
rename to server_addon/harmony/client/ayon_harmony/js/publish/ExtractPalette.js
diff --git a/client/ayon_core/hosts/harmony/js/publish/ExtractTemplate.js b/server_addon/harmony/client/ayon_harmony/js/publish/ExtractTemplate.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/js/publish/ExtractTemplate.js
rename to server_addon/harmony/client/ayon_harmony/js/publish/ExtractTemplate.js
diff --git a/client/ayon_core/hosts/harmony/plugins/__init__.py b/server_addon/harmony/client/ayon_harmony/plugins/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/__init__.py
rename to server_addon/harmony/client/ayon_harmony/plugins/__init__.py
diff --git a/client/ayon_core/hosts/harmony/plugins/create/create_farm_render.py b/server_addon/harmony/client/ayon_harmony/plugins/create/create_farm_render.py
similarity index 90%
rename from client/ayon_core/hosts/harmony/plugins/create/create_farm_render.py
rename to server_addon/harmony/client/ayon_harmony/plugins/create/create_farm_render.py
index 3039d56ead..270acdd199 100644
--- a/client/ayon_core/hosts/harmony/plugins/create/create_farm_render.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/create/create_farm_render.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Create Composite node for render on farm."""
-import ayon_core.hosts.harmony.api as harmony
-from ayon_core.hosts.harmony.api import plugin
+import ayon_harmony.api as harmony
+from ayon_harmony.api import plugin
class CreateFarmRender(plugin.Creator):
diff --git a/client/ayon_core/hosts/harmony/plugins/create/create_render.py b/server_addon/harmony/client/ayon_harmony/plugins/create/create_render.py
similarity index 88%
rename from client/ayon_core/hosts/harmony/plugins/create/create_render.py
rename to server_addon/harmony/client/ayon_harmony/plugins/create/create_render.py
index 23e02bd8a5..d4622a3202 100644
--- a/client/ayon_core/hosts/harmony/plugins/create/create_render.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/create/create_render.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Create render node."""
-import ayon_core.hosts.harmony.api as harmony
-from ayon_core.hosts.harmony.api import plugin
+import ayon_harmony.api as harmony
+from ayon_harmony.api import plugin
class CreateRender(plugin.Creator):
diff --git a/client/ayon_core/hosts/harmony/plugins/create/create_template.py b/server_addon/harmony/client/ayon_harmony/plugins/create/create_template.py
similarity index 86%
rename from client/ayon_core/hosts/harmony/plugins/create/create_template.py
rename to server_addon/harmony/client/ayon_harmony/plugins/create/create_template.py
index c16e429436..79fd315998 100644
--- a/client/ayon_core/hosts/harmony/plugins/create/create_template.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/create/create_template.py
@@ -1,4 +1,4 @@
-from ayon_core.hosts.harmony.api import plugin
+from ayon_harmony.api import plugin
class CreateTemplate(plugin.Creator):
diff --git a/client/ayon_core/hosts/harmony/plugins/load/load_audio.py b/server_addon/harmony/client/ayon_harmony/plugins/load/load_audio.py
similarity index 96%
rename from client/ayon_core/hosts/harmony/plugins/load/load_audio.py
rename to server_addon/harmony/client/ayon_harmony/plugins/load/load_audio.py
index d23f3ed034..3ba27d005f 100644
--- a/client/ayon_core/hosts/harmony/plugins/load/load_audio.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/load/load_audio.py
@@ -2,7 +2,7 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
sig = harmony.signature()
func = """
diff --git a/client/ayon_core/hosts/harmony/plugins/load/load_background.py b/server_addon/harmony/client/ayon_harmony/plugins/load/load_background.py
similarity index 99%
rename from client/ayon_core/hosts/harmony/plugins/load/load_background.py
rename to server_addon/harmony/client/ayon_harmony/plugins/load/load_background.py
index dad6ac2f22..7f0e5c5563 100644
--- a/client/ayon_core/hosts/harmony/plugins/load/load_background.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/load/load_background.py
@@ -6,7 +6,7 @@ from ayon_core.pipeline import (
get_representation_path,
)
from ayon_core.pipeline.context_tools import is_representation_from_latest
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
copy_files = """function copyFile(srcFilename, dstFilename)
diff --git a/client/ayon_core/hosts/harmony/plugins/load/load_imagesequence.py b/server_addon/harmony/client/ayon_harmony/plugins/load/load_imagesequence.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/plugins/load/load_imagesequence.py
rename to server_addon/harmony/client/ayon_harmony/plugins/load/load_imagesequence.py
index f81ebca9af..cc588a3442 100644
--- a/client/ayon_core/hosts/harmony/plugins/load/load_imagesequence.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/load/load_imagesequence.py
@@ -11,7 +11,7 @@ from ayon_core.pipeline import (
get_representation_path,
)
from ayon_core.pipeline.context_tools import is_representation_from_latest
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class ImageSequenceLoader(load.LoaderPlugin):
@@ -30,6 +30,7 @@ class ImageSequenceLoader(load.LoaderPlugin):
}
representations = {"*"}
extensions = {"jpeg", "png", "jpg"}
+ settings_category = "harmony"
def load(self, context, name=None, namespace=None, data=None):
"""Plugin entry point.
diff --git a/client/ayon_core/hosts/harmony/plugins/load/load_palette.py b/server_addon/harmony/client/ayon_harmony/plugins/load/load_palette.py
similarity index 97%
rename from client/ayon_core/hosts/harmony/plugins/load/load_palette.py
rename to server_addon/harmony/client/ayon_harmony/plugins/load/load_palette.py
index 24f4b4e8d4..930792aacf 100644
--- a/client/ayon_core/hosts/harmony/plugins/load/load_palette.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/load/load_palette.py
@@ -5,7 +5,7 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class ImportPaletteLoader(load.LoaderPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/load/load_template.py b/server_addon/harmony/client/ayon_harmony/plugins/load/load_template.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/plugins/load/load_template.py
rename to server_addon/harmony/client/ayon_harmony/plugins/load/load_template.py
index 96dadb0375..1d183ed156 100644
--- a/client/ayon_core/hosts/harmony/plugins/load/load_template.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/load/load_template.py
@@ -11,7 +11,7 @@ from ayon_core.pipeline import (
get_representation_path,
)
from ayon_core.pipeline.context_tools import is_representation_from_latest
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class TemplateLoader(load.LoaderPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/load/load_template_workfile.py b/server_addon/harmony/client/ayon_harmony/plugins/load/load_template_workfile.py
similarity index 97%
rename from client/ayon_core/hosts/harmony/plugins/load/load_template_workfile.py
rename to server_addon/harmony/client/ayon_harmony/plugins/load/load_template_workfile.py
index fa5ffe5105..0967eb9a30 100644
--- a/client/ayon_core/hosts/harmony/plugins/load/load_template_workfile.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/load/load_template_workfile.py
@@ -7,7 +7,7 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class ImportTemplateLoader(load.LoaderPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_audio.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_audio.py
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_audio.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_audio.py
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_current_file.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_current_file.py
similarity index 93%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_current_file.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_current_file.py
index ebe123eacc..cfa14aaa05 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/collect_current_file.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_current_file.py
@@ -3,7 +3,7 @@
import os
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class CollectCurrentFile(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_farm_render.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_farm_render.py
similarity index 99%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_farm_render.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_farm_render.py
index c63eb114e5..4730821dd8 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/collect_farm_render.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_farm_render.py
@@ -7,7 +7,7 @@ import attr
from ayon_core.lib import get_formatted_current_time
from ayon_core.pipeline import publish
from ayon_core.pipeline.publish import RenderInstance
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
@attr.s
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_instances.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_instances.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_instances.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_instances.py
index 5aad7d4751..a98ee3e98b 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/collect_instances.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_instances.py
@@ -3,7 +3,7 @@
import json
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class CollectInstances(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_palettes.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_palettes.py
similarity index 95%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_palettes.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_palettes.py
index 9e0b500663..fb40196510 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/collect_palettes.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_palettes.py
@@ -4,7 +4,7 @@ import json
import re
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class CollectPalettes(pyblish.api.ContextPlugin):
@@ -14,6 +14,8 @@ class CollectPalettes(pyblish.api.ContextPlugin):
order = pyblish.api.CollectorOrder + 0.003
hosts = ["harmony"]
+ settings_category = "harmony"
+
# list of regexes for task names where collecting should happen
allowed_tasks = []
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_scene.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_scene.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_scene.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_scene.py
index bc2ccca1be..48f8aa0d3b 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/collect_scene.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_scene.py
@@ -3,7 +3,7 @@
import os
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class CollectScene(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/collect_workfile.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/collect_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/publish/collect_workfile.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/collect_workfile.py
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/extract_palette.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_palette.py
similarity index 99%
rename from client/ayon_core/hosts/harmony/plugins/publish/extract_palette.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/extract_palette.py
index 9f12c78d9f..ad1d38e862 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/extract_palette.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_palette.py
@@ -5,7 +5,7 @@ import csv
from PIL import Image, ImageDraw, ImageFont
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from ayon_core.pipeline import publish
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/extract_render.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_render.py
similarity index 99%
rename from client/ayon_core/hosts/harmony/plugins/publish/extract_render.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/extract_render.py
index 391661a118..407a44c81a 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/extract_render.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_render.py
@@ -3,7 +3,7 @@ import tempfile
import subprocess
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
import ayon_core.lib
import clique
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/extract_save_scene.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_save_scene.py
similarity index 85%
rename from client/ayon_core/hosts/harmony/plugins/publish/extract_save_scene.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/extract_save_scene.py
index 1be74ba3a4..77ebc5b5a6 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/extract_save_scene.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_save_scene.py
@@ -1,5 +1,5 @@
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class ExtractSaveScene(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/extract_template.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_template.py
similarity index 98%
rename from client/ayon_core/hosts/harmony/plugins/publish/extract_template.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/extract_template.py
index b2c7fa8174..650765771c 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/extract_template.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_template.py
@@ -4,7 +4,7 @@ import os
import shutil
from ayon_core.pipeline import publish
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class ExtractTemplate(publish.Extractor):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/extract_workfile.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/extract_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/publish/extract_workfile.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/extract_workfile.py
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/help/validate_audio.xml b/server_addon/harmony/client/ayon_harmony/plugins/publish/help/validate_audio.xml
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/publish/help/validate_audio.xml
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/help/validate_audio.xml
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/help/validate_instances.xml b/server_addon/harmony/client/ayon_harmony/plugins/publish/help/validate_instances.xml
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/publish/help/validate_instances.xml
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/help/validate_instances.xml
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/help/validate_scene_settings.xml b/server_addon/harmony/client/ayon_harmony/plugins/publish/help/validate_scene_settings.xml
similarity index 100%
rename from client/ayon_core/hosts/harmony/plugins/publish/help/validate_scene_settings.xml
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/help/validate_scene_settings.xml
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/increment_workfile.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/increment_workfile.py
similarity index 95%
rename from client/ayon_core/hosts/harmony/plugins/publish/increment_workfile.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/increment_workfile.py
index 16332a5283..fa43455b0d 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/increment_workfile.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/increment_workfile.py
@@ -3,7 +3,7 @@ import os
import pyblish.api
from ayon_core.pipeline.publish import get_errored_plugins_from_context
from ayon_core.lib import version_up
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
class IncrementWorkfile(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/validate_audio.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/validate_audio.py
similarity index 95%
rename from client/ayon_core/hosts/harmony/plugins/publish/validate_audio.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/validate_audio.py
index 808734a061..6caa12c1e1 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/validate_audio.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/validate_audio.py
@@ -2,7 +2,7 @@ import os
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from ayon_core.pipeline import PublishXmlValidationError
@@ -18,6 +18,7 @@ class ValidateAudio(pyblish.api.InstancePlugin):
label = "Validate Audio"
families = ["render"]
hosts = ["harmony"]
+ settings_category = "harmony"
optional = True
def process(self, instance):
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/validate_instances.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/validate_instances.py
similarity index 97%
rename from client/ayon_core/hosts/harmony/plugins/publish/validate_instances.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/validate_instances.py
index 1200f6266b..8152aeeadf 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/validate_instances.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/validate_instances.py
@@ -1,6 +1,6 @@
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from ayon_core.pipeline import get_current_folder_path
from ayon_core.pipeline.publish import (
ValidateContentsOrder,
diff --git a/client/ayon_core/hosts/harmony/plugins/publish/validate_scene_settings.py b/server_addon/harmony/client/ayon_harmony/plugins/publish/validate_scene_settings.py
similarity index 99%
rename from client/ayon_core/hosts/harmony/plugins/publish/validate_scene_settings.py
rename to server_addon/harmony/client/ayon_harmony/plugins/publish/validate_scene_settings.py
index dc3db3b544..082eb4f1dd 100644
--- a/client/ayon_core/hosts/harmony/plugins/publish/validate_scene_settings.py
+++ b/server_addon/harmony/client/ayon_harmony/plugins/publish/validate_scene_settings.py
@@ -6,7 +6,7 @@ import re
import pyblish.api
-import ayon_core.hosts.harmony.api as harmony
+import ayon_harmony.api as harmony
from ayon_core.pipeline import PublishXmlValidationError
@@ -42,6 +42,7 @@ class ValidateSceneSettings(pyblish.api.InstancePlugin):
families = ["workfile"]
hosts = ["harmony"]
actions = [ValidateSceneSettingsRepair]
+ settings_category = "harmony"
optional = True
# skip frameEnd check if asset contains any of:
diff --git a/client/ayon_core/hosts/harmony/vendor/.eslintrc.json b/server_addon/harmony/client/ayon_harmony/vendor/.eslintrc.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/.eslintrc.json
rename to server_addon/harmony/client/ayon_harmony/vendor/.eslintrc.json
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/.gitattributes b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/.gitattributes
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/.gitattributes
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/.gitattributes
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/.gitignore b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/.gitignore
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/.gitignore
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/.gitignore
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/Install.bat b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/Install.bat
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/Install.bat
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/Install.bat
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/LICENSE b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/LICENSE
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/LICENSE
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/LICENSE
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/README.md b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/README.md
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/README.md
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/README.md
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/build_doc.bat b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/build_doc.bat
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/build_doc.bat
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/build_doc.bat
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/documentation.json b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/documentation.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/documentation.json
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/documentation.json
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/install.sh b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/install.sh
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/install.sh
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/install.sh
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/oH_DOM.jpg b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/oH_DOM.jpg
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/oH_DOM.jpg
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/oH_DOM.jpg
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_actions.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_actions.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_actions.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_actions.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_application.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_application.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_application.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_application.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_attribute.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_attribute.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_attribute.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_attribute.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_backdrop.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_backdrop.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_backdrop.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_backdrop.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_color.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_color.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_color.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_color.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_column.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_column.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_column.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_column.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_database.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_database.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_database.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_database.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_dialog.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_dialog.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_dialog.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_dialog.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_drawing.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_drawing.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_drawing.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_drawing.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_element.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_element.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_element.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_element.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_file.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_file.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_file.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_file.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_frame.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_frame.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_frame.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_frame.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_list.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_list.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_list.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_list.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_math.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_math.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_math.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_math.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_metadata.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_metadata.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_metadata.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_metadata.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_misc.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_misc.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_misc.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_misc.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_network.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_network.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_network.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_network.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_node.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_node.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_node.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_node.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeAttributes.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeAttributes.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeAttributes.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeAttributes.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeLink.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeLink.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeLink.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_nodeLink.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_palette.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_palette.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_palette.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_palette.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_path.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_path.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_path.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_path.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferencedoc.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferencedoc.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferencedoc.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferencedoc.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferences.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferences.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferences.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_preferences.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_scene.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_scene.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_scene.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_scene.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_threading.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_threading.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_threading.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_threading.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_timeline.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_timeline.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_timeline.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_timeline.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_tool.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_tool.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_tool.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_tool.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_toolInstall.ui b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_toolInstall.ui
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony/openHarmony_toolInstall.ui
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony/openHarmony_toolInstall.ui
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony_install.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony_install.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony_install.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony_install.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony_tools.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony_tools.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/openHarmony_tools.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/openHarmony_tools.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/package.json b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/package.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/package.json
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/package.json
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/reference/Reference_view_currentToolManager().txt b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/reference/Reference_view_currentToolManager().txt
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/reference/Reference_view_currentToolManager().txt
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/reference/Reference_view_currentToolManager().txt
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/tbpackage.json b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tbpackage.json
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/tbpackage.json
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tbpackage.json
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/INSTALL b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/INSTALL
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/INSTALL
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/INSTALL
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/README b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/README
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/README
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/README
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_anim_tools.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_anim_tools.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_anim_tools.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_anim_tools.js
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_basic_backdropPicker.ui b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_basic_backdropPicker.ui
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_basic_backdropPicker.ui
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_basic_backdropPicker.ui
diff --git a/client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_rigging_tools.js b/server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_rigging_tools.js
similarity index 100%
rename from client/ayon_core/hosts/harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_rigging_tools.js
rename to server_addon/harmony/client/ayon_harmony/vendor/OpenHarmony/tools/OpenHarmony_basic/openHarmony_rigging_tools.js
diff --git a/server_addon/harmony/client/ayon_harmony/version.py b/server_addon/harmony/client/ayon_harmony/version.py
new file mode 100644
index 0000000000..e2a19655e2
--- /dev/null
+++ b/server_addon/harmony/client/ayon_harmony/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'harmony' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/harmony/package.py b/server_addon/harmony/package.py
index 00824cedef..af0006ec3b 100644
--- a/server_addon/harmony/package.py
+++ b/server_addon/harmony/package.py
@@ -1,3 +1,9 @@
name = "harmony"
title = "Harmony"
-version = "0.1.3"
+version = "0.2.0"
+client_dir = "ayon_harmony"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/server_addon/hiero/client/ayon_hiero/__init__.py b/server_addon/hiero/client/ayon_hiero/__init__.py
new file mode 100644
index 0000000000..2dc490c1e9
--- /dev/null
+++ b/server_addon/hiero/client/ayon_hiero/__init__.py
@@ -0,0 +1,13 @@
+from .version import __version__
+from .addon import (
+ HIERO_ADDON_ROOT,
+ HieroAddon,
+)
+
+
+__all__ = (
+ "__version__",
+
+ "HIERO_ADDON_ROOT",
+ "HieroAddon",
+)
diff --git a/client/ayon_core/hosts/hiero/addon.py b/server_addon/hiero/client/ayon_hiero/addon.py
similarity index 89%
rename from client/ayon_core/hosts/hiero/addon.py
rename to server_addon/hiero/client/ayon_hiero/addon.py
index f612493ca1..671e29151b 100644
--- a/client/ayon_core/hosts/hiero/addon.py
+++ b/server_addon/hiero/client/ayon_hiero/addon.py
@@ -2,17 +2,20 @@ import os
import platform
from ayon_core.addon import AYONAddon, IHostAddon
-HIERO_ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
+from .version import __version__
+
+HIERO_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
class HieroAddon(AYONAddon, IHostAddon):
name = "hiero"
+ version = __version__
host_name = "hiero"
def add_implementation_envs(self, env, _app):
# Add requirements to HIERO_PLUGIN_PATH
new_hiero_paths = [
- os.path.join(HIERO_ROOT_DIR, "api", "startup")
+ os.path.join(HIERO_ADDON_ROOT, "api", "startup")
]
old_hiero_path = env.get("HIERO_PLUGIN_PATH") or ""
for path in old_hiero_path.split(os.pathsep):
@@ -36,7 +39,7 @@ class HieroAddon(AYONAddon, IHostAddon):
python_path_parts = []
if python_path:
python_path_parts = python_path.split(os.pathsep)
- vendor_path = os.path.join(HIERO_ROOT_DIR, "vendor")
+ vendor_path = os.path.join(HIERO_ADDON_ROOT, "vendor")
python_path_parts.insert(0, vendor_path)
env["PYTHONPATH"] = os.pathsep.join(python_path_parts)
diff --git a/client/ayon_core/hosts/hiero/api/__init__.py b/server_addon/hiero/client/ayon_hiero/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/__init__.py
rename to server_addon/hiero/client/ayon_hiero/api/__init__.py
diff --git a/client/ayon_core/hosts/hiero/api/constants.py b/server_addon/hiero/client/ayon_hiero/api/constants.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/constants.py
rename to server_addon/hiero/client/ayon_hiero/api/constants.py
diff --git a/client/ayon_core/hosts/hiero/api/events.py b/server_addon/hiero/client/ayon_hiero/api/events.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/events.py
rename to server_addon/hiero/client/ayon_hiero/api/events.py
diff --git a/client/ayon_core/hosts/hiero/api/launchforhiero.py b/server_addon/hiero/client/ayon_hiero/api/launchforhiero.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/launchforhiero.py
rename to server_addon/hiero/client/ayon_hiero/api/launchforhiero.py
diff --git a/client/ayon_core/hosts/hiero/api/lib.py b/server_addon/hiero/client/ayon_hiero/api/lib.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/api/lib.py
rename to server_addon/hiero/client/ayon_hiero/api/lib.py
index 456a68f125..2a6038fb98 100644
--- a/client/ayon_core/hosts/hiero/api/lib.py
+++ b/server_addon/hiero/client/ayon_hiero/api/lib.py
@@ -453,19 +453,19 @@ def get_track_openpype_data(track, container_name=None):
)
-@deprecated("ayon_core.hosts.hiero.api.lib.get_trackitem_openpype_tag")
+@deprecated("ayon_hiero.api.lib.get_trackitem_openpype_tag")
def get_track_item_pype_tag(track_item):
# backward compatibility alias
return get_trackitem_openpype_tag(track_item)
-@deprecated("ayon_core.hosts.hiero.api.lib.set_trackitem_openpype_tag")
+@deprecated("ayon_hiero.api.lib.set_trackitem_openpype_tag")
def set_track_item_pype_tag(track_item, data=None):
# backward compatibility alias
return set_trackitem_openpype_tag(track_item, data)
-@deprecated("ayon_core.hosts.hiero.api.lib.get_trackitem_openpype_data")
+@deprecated("ayon_hiero.api.lib.get_trackitem_openpype_data")
def get_track_item_pype_data(track_item):
# backward compatibility alias
return get_trackitem_openpype_data(track_item)
@@ -802,7 +802,7 @@ class PublishAction(QtWidgets.QAction):
#
# '''
# import hiero.core
-# from ayon_core.hosts.nuke.api.lib import (
+# from ayon_nuke.api.lib import (
# BuildWorkfile,
# imprint
# )
diff --git a/client/ayon_core/hosts/hiero/api/menu.py b/server_addon/hiero/client/ayon_hiero/api/menu.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/menu.py
rename to server_addon/hiero/client/ayon_hiero/api/menu.py
diff --git a/client/ayon_core/hosts/hiero/api/otio/__init__.py b/server_addon/hiero/client/ayon_hiero/api/otio/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/otio/__init__.py
rename to server_addon/hiero/client/ayon_hiero/api/otio/__init__.py
diff --git a/client/ayon_core/hosts/hiero/api/otio/hiero_export.py b/server_addon/hiero/client/ayon_hiero/api/otio/hiero_export.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/otio/hiero_export.py
rename to server_addon/hiero/client/ayon_hiero/api/otio/hiero_export.py
diff --git a/client/ayon_core/hosts/hiero/api/otio/hiero_import.py b/server_addon/hiero/client/ayon_hiero/api/otio/hiero_import.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/otio/hiero_import.py
rename to server_addon/hiero/client/ayon_hiero/api/otio/hiero_import.py
diff --git a/client/ayon_core/hosts/hiero/api/otio/utils.py b/server_addon/hiero/client/ayon_hiero/api/otio/utils.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/otio/utils.py
rename to server_addon/hiero/client/ayon_hiero/api/otio/utils.py
diff --git a/client/ayon_core/hosts/hiero/api/pipeline.py b/server_addon/hiero/client/ayon_hiero/api/pipeline.py
similarity index 96%
rename from client/ayon_core/hosts/hiero/api/pipeline.py
rename to server_addon/hiero/client/ayon_hiero/api/pipeline.py
index 327a4ae29c..d14d255a87 100644
--- a/client/ayon_core/hosts/hiero/api/pipeline.py
+++ b/server_addon/hiero/client/ayon_hiero/api/pipeline.py
@@ -6,7 +6,9 @@ import os
import contextlib
from collections import OrderedDict
+import hiero
from pyblish import api as pyblish
+
from ayon_core.lib import Logger
from ayon_core.pipeline import (
schema,
@@ -18,15 +20,14 @@ from ayon_core.pipeline import (
AYON_CONTAINER_ID,
)
from ayon_core.tools.utils import host_tools
+from ayon_hiero import HIERO_ADDON_ROOT
+
from . import lib, menu, events
-import hiero
log = Logger.get_logger(__name__)
# plugin paths
-API_DIR = os.path.dirname(os.path.abspath(__file__))
-HOST_DIR = os.path.dirname(API_DIR)
-PLUGINS_DIR = os.path.join(HOST_DIR, "plugins")
+PLUGINS_DIR = os.path.join(HIERO_ADDON_ROOT, "plugins")
PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish").replace("\\", "/")
LOAD_PATH = os.path.join(PLUGINS_DIR, "load").replace("\\", "/")
CREATE_PATH = os.path.join(PLUGINS_DIR, "create").replace("\\", "/")
@@ -129,7 +130,7 @@ def ls():
all_items = lib.get_track_items()
# append all video tracks
- for track in lib.get_current_sequence():
+ for track in (lib.get_current_sequence() or []):
if type(track) != hiero.core.VideoTrack:
continue
all_items.append(track)
@@ -308,9 +309,9 @@ def reload_config():
import importlib
for module in (
- "ayon_core.hosts.hiero.lib",
- "ayon_core.hosts.hiero.menu",
- "ayon_core.hosts.hiero.tags"
+ "ayon_hiero.lib",
+ "ayon_hiero.menu",
+ "ayon_hiero.tags"
):
log.info("Reloading module: {}...".format(module))
try:
@@ -328,7 +329,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.hiero.api import (
+ from ayon_hiero.api import (
get_trackitem_openpype_tag,
set_publish_attribute
)
diff --git a/client/ayon_core/hosts/hiero/api/plugin.py b/server_addon/hiero/client/ayon_hiero/api/plugin.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/api/plugin.py
rename to server_addon/hiero/client/ayon_hiero/api/plugin.py
index 1353673b31..16eb1d55f3 100644
--- a/client/ayon_core/hosts/hiero/api/plugin.py
+++ b/server_addon/hiero/client/ayon_hiero/api/plugin.py
@@ -550,7 +550,8 @@ class ClipLoader:
log.debug("__ self.timeline_out: {}".format(self.timeline_out))
# check if slate is included
- slate_on = "slate" in self.context["version"]["data"]["families"]
+ slate_on = "slate" in self.context["version"]["data"].get(
+ "families", [])
log.debug("__ slate_on: {}".format(slate_on))
# if slate is on then remove the slate frame from beginning
@@ -600,7 +601,7 @@ class Creator(LegacyCreator):
def __init__(self, *args, **kwargs):
super(Creator, self).__init__(*args, **kwargs)
- import ayon_core.hosts.hiero.api as phiero
+ import ayon_hiero.api as phiero
self.presets = get_current_project_settings()[
"hiero"]["create"].get(self.__class__.__name__, {})
diff --git a/client/ayon_core/hosts/hiero/api/startup/HieroPlayer/PlayerPresets.hrox b/server_addon/hiero/client/ayon_hiero/api/startup/HieroPlayer/PlayerPresets.hrox
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/HieroPlayer/PlayerPresets.hrox
rename to server_addon/hiero/client/ayon_hiero/api/startup/HieroPlayer/PlayerPresets.hrox
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/1_add_handles_end.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/1_add_handles_end.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/1_add_handles_end.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/1_add_handles_end.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/2_add_handles.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/2_add_handles.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/2_add_handles.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/2_add_handles.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/3D.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/3D.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/3D.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/3D.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/3_add_handles_start.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/3_add_handles_start.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/3_add_handles_start.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/3_add_handles_start.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/4_2D.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/4_2D.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/4_2D.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/4_2D.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/edit.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/edit.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/edit.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/edit.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/fusion.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/fusion.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/fusion.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/fusion.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/hierarchy.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/hierarchy.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/hierarchy.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/hierarchy.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/houdini.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/houdini.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/houdini.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/houdini.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/layers.psd b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/layers.psd
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/layers.psd
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/layers.psd
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/lense.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/lense.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/lense.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/lense.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/lense1.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/lense1.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/lense1.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/lense1.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/maya.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/maya.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/maya.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/maya.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/nuke.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/nuke.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/nuke.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/nuke.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/pype_icon.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/pype_icon.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/pype_icon.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/pype_icon.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/resolution.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/resolution.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/resolution.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/resolution.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/resolution.psd b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/resolution.psd
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/resolution.psd
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/resolution.psd
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/retiming.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/retiming.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/retiming.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/retiming.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/retiming.psd b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/retiming.psd
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/retiming.psd
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/retiming.psd
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/review.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/review.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/review.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/review.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/review.psd b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/review.psd
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/review.psd
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/review.psd
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/volume.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/volume.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/volume.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/volume.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/z_layer_bg.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/z_layer_bg.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/z_layer_bg.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/z_layer_bg.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/z_layer_fg.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/z_layer_fg.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/z_layer_fg.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/z_layer_fg.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Icons/z_layer_main.png b/server_addon/hiero/client/ayon_hiero/api/startup/Icons/z_layer_main.png
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Icons/z_layer_main.png
rename to server_addon/hiero/client/ayon_hiero/api/startup/Icons/z_layer_main.png
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/SpreadsheetExport.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/SpreadsheetExport.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/SpreadsheetExport.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/SpreadsheetExport.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/Startup.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/Startup.py
similarity index 70%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/Startup.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/Startup.py
index cffab8067c..c916bf37e9 100644
--- a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/Startup.py
+++ b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/Startup.py
@@ -2,11 +2,11 @@ import traceback
# activate hiero from pype
from ayon_core.pipeline import install_host
-import ayon_core.hosts.hiero.api as phiero
+import ayon_hiero.api as phiero
install_host(phiero)
try:
- __import__("ayon_core.hosts.hiero.api")
+ __import__("ayon_hiero.api")
__import__("pyblish")
except ImportError as e:
@@ -15,5 +15,5 @@ except ImportError as e:
else:
# Setup integration
- import ayon_core.hosts.hiero.api as phiero
+ import ayon_hiero.api as phiero
phiero.lib.setup()
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/OTIOExportTask.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/OTIOExportTask.py
similarity index 97%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/OTIOExportTask.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/OTIOExportTask.py
index bd5048a832..d4cb342c72 100644
--- a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/OTIOExportTask.py
+++ b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/OTIOExportTask.py
@@ -8,7 +8,7 @@ import hiero.core
from hiero.core import util
import opentimelineio as otio
-from ayon_core.hosts.hiero.api.otio import hiero_export
+from ayon_hiero.api.otio import hiero_export
class OTIOExportTask(hiero.core.TaskBase):
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/OTIOExportUI.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/OTIOExportUI.py
similarity index 97%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/OTIOExportUI.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/OTIOExportUI.py
index 25aa8bb0cf..131b385f53 100644
--- a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/OTIOExportUI.py
+++ b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/OTIOExportUI.py
@@ -22,7 +22,7 @@ except ImportError:
FormLayout = QFormLayout # lint:ok
-from ayon_core.hosts.hiero.api.otio import hiero_export
+from ayon_hiero.api.otio import hiero_export
class OTIOExportUI(hiero.ui.TaskUIBase):
def __init__(self, preset):
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/__init__.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/otioexporter/__init__.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/otioexporter/__init__.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/project_helpers.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/project_helpers.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/project_helpers.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/project_helpers.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/selection_tracker.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/selection_tracker.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/selection_tracker.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/selection_tracker.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/Startup/setFrameRate.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/setFrameRate.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/Startup/setFrameRate.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/Startup/setFrameRate.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/PimpMySpreadsheet.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/PimpMySpreadsheet.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/PimpMySpreadsheet.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/PimpMySpreadsheet.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/Purge.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/Purge.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/Purge.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/Purge.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/nukeStyleKeyboardShortcuts.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/nukeStyleKeyboardShortcuts.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/nukeStyleKeyboardShortcuts.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/nukeStyleKeyboardShortcuts.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/otioimporter/OTIOImport.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/otioimporter/OTIOImport.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/otioimporter/OTIOImport.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/otioimporter/OTIOImport.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/otioimporter/__init__.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/otioimporter/__init__.py
similarity index 98%
rename from client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/otioimporter/__init__.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/otioimporter/__init__.py
index 29507db975..c0f1cc9c67 100644
--- a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/otioimporter/__init__.py
+++ b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/otioimporter/__init__.py
@@ -9,7 +9,7 @@ import hiero.core
import PySide2.QtWidgets as qw
-from ayon_core.hosts.hiero.api.otio.hiero_import import load_otio
+from ayon_hiero.api.otio.hiero_import import load_otio
class OTIOProjectSelect(qw.QDialog):
diff --git a/client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/setPosterFrame.py b/server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/setPosterFrame.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/Python/StartupUI/setPosterFrame.py
rename to server_addon/hiero/client/ayon_hiero/api/startup/Python/StartupUI/setPosterFrame.py
diff --git a/client/ayon_core/hosts/hiero/api/startup/TaskPresets/10.5/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml b/server_addon/hiero/client/ayon_hiero/api/startup/TaskPresets/10.5/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/TaskPresets/10.5/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
rename to server_addon/hiero/client/ayon_hiero/api/startup/TaskPresets/10.5/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
diff --git a/client/ayon_core/hosts/hiero/api/startup/TaskPresets/11.1/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml b/server_addon/hiero/client/ayon_hiero/api/startup/TaskPresets/11.1/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/TaskPresets/11.1/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
rename to server_addon/hiero/client/ayon_hiero/api/startup/TaskPresets/11.1/Processors/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
diff --git a/client/ayon_core/hosts/hiero/api/startup/TaskPresets/11.2/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml b/server_addon/hiero/client/ayon_hiero/api/startup/TaskPresets/11.2/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/startup/TaskPresets/11.2/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
rename to server_addon/hiero/client/ayon_hiero/api/startup/TaskPresets/11.2/hiero.exporters.FnShotProcessor.ShotProcessor/pipeline.xml
diff --git a/client/ayon_core/hosts/hiero/api/style.css b/server_addon/hiero/client/ayon_hiero/api/style.css
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/style.css
rename to server_addon/hiero/client/ayon_hiero/api/style.css
diff --git a/client/ayon_core/hosts/hiero/api/tags.py b/server_addon/hiero/client/ayon_hiero/api/tags.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/tags.py
rename to server_addon/hiero/client/ayon_hiero/api/tags.py
diff --git a/client/ayon_core/hosts/hiero/api/workio.py b/server_addon/hiero/client/ayon_hiero/api/workio.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/api/workio.py
rename to server_addon/hiero/client/ayon_hiero/api/workio.py
diff --git a/client/ayon_core/hosts/hiero/plugins/create/create_shot_clip.py b/server_addon/hiero/client/ayon_hiero/plugins/create/create_shot_clip.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/plugins/create/create_shot_clip.py
rename to server_addon/hiero/client/ayon_hiero/plugins/create/create_shot_clip.py
index 1fc808fdd1..201cf382e2 100644
--- a/client/ayon_core/hosts/hiero/plugins/create/create_shot_clip.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/create/create_shot_clip.py
@@ -1,6 +1,6 @@
from copy import deepcopy
-import ayon_core.hosts.hiero.api as phiero
-# from ayon_core.hosts.hiero.api import plugin, lib
+import ayon_hiero.api as phiero
+# from ayon_hiero.api import plugin, lib
# reload(lib)
# reload(plugin)
# reload(phiero)
diff --git a/client/ayon_core/hosts/hiero/plugins/load/load_clip.py b/server_addon/hiero/client/ayon_hiero/plugins/load/load_clip.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/plugins/load/load_clip.py
rename to server_addon/hiero/client/ayon_hiero/plugins/load/load_clip.py
index 715e8c508e..d93730c735 100644
--- a/client/ayon_core/hosts/hiero/plugins/load/load_clip.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/load/load_clip.py
@@ -5,7 +5,7 @@ from ayon_core.lib.transcoding import (
VIDEO_EXTENSIONS,
IMAGE_EXTENSIONS
)
-import ayon_core.hosts.hiero.api as phiero
+import ayon_hiero.api as phiero
class LoadClip(phiero.SequenceLoader):
diff --git a/client/ayon_core/hosts/hiero/plugins/load/load_effects.py b/server_addon/hiero/client/ayon_hiero/plugins/load/load_effects.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/plugins/load/load_effects.py
rename to server_addon/hiero/client/ayon_hiero/plugins/load/load_effects.py
index 92aa2de325..24130f7485 100644
--- a/client/ayon_core/hosts/hiero/plugins/load/load_effects.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/load/load_effects.py
@@ -7,7 +7,7 @@ from ayon_core.pipeline import (
load,
get_representation_path,
)
-from ayon_core.hosts.hiero import api as phiero
+from ayon_hiero import api as phiero
from ayon_core.lib import Logger
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/collect_clip_effects.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/collect_clip_effects.py
index bfc63f2551..bd8af3b51a 100644
--- a/client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/publish/collect_clip_effects.py
@@ -9,6 +9,7 @@ class CollectClipEffects(pyblish.api.InstancePlugin):
order = pyblish.api.CollectorOrder - 0.078
label = "Collect Clip Effects Instances"
families = ["clip"]
+ settings_category = "hiero"
effect_categories = []
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/collect_frame_tag_instances.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/collect_frame_tag_instances.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/plugins/publish/collect_frame_tag_instances.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/collect_frame_tag_instances.py
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/collect_tag_tasks.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/collect_tag_tasks.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/plugins/publish/collect_tag_tasks.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/collect_tag_tasks.py
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/extract_clip_effects.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/extract_clip_effects.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/plugins/publish/extract_clip_effects.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/extract_clip_effects.py
index 25b52968fa..7ee979c37a 100644
--- a/client/ayon_core/hosts/hiero/plugins/publish/extract_clip_effects.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/publish/extract_clip_effects.py
@@ -1,4 +1,3 @@
-# from ayon_core import plugins
import os
import json
import pyblish.api
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/extract_frames.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/extract_frames.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/plugins/publish/extract_frames.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/extract_frames.py
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/extract_thumbnail.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/extract_thumbnail.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/plugins/publish/extract_thumbnail.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/extract_thumbnail.py
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/integrate_version_up_workfile.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/integrate_version_up_workfile.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/plugins/publish/integrate_version_up_workfile.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/integrate_version_up_workfile.py
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/precollect_instances.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py
similarity index 99%
rename from client/ayon_core/hosts/hiero/plugins/publish/precollect_instances.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py
index b7a508f0b5..fa2c56182e 100644
--- a/client/ayon_core/hosts/hiero/plugins/publish/precollect_instances.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py
@@ -3,8 +3,8 @@ import pyblish
from ayon_core.pipeline import AYON_INSTANCE_ID, AVALON_INSTANCE_ID
from ayon_core.pipeline.editorial import is_overlapping_otio_ranges
-from ayon_core.hosts.hiero import api as phiero
-from ayon_core.hosts.hiero.api.otio import hiero_export
+from ayon_hiero import api as phiero
+from ayon_hiero.api.otio import hiero_export
import hiero
# # developer reload modules
diff --git a/client/ayon_core/hosts/hiero/plugins/publish/precollect_workfile.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_workfile.py
similarity index 98%
rename from client/ayon_core/hosts/hiero/plugins/publish/precollect_workfile.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_workfile.py
index 0b6b34ea6c..1dd21b3f21 100644
--- a/client/ayon_core/hosts/hiero/plugins/publish/precollect_workfile.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_workfile.py
@@ -7,7 +7,7 @@ from qtpy.QtGui import QPixmap
import hiero.ui
-from ayon_core.hosts.hiero.api.otio import hiero_export
+from ayon_hiero.api.otio import hiero_export
class PrecollectWorkfile(pyblish.api.ContextPlugin):
diff --git a/client/ayon_core/hosts/hiero/plugins/publish_old_workflow/collect_tag_comments.py b/server_addon/hiero/client/ayon_hiero/plugins/publish_old_workflow/collect_tag_comments.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/plugins/publish_old_workflow/collect_tag_comments.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish_old_workflow/collect_tag_comments.py
diff --git a/client/ayon_core/hosts/hiero/plugins/publish_old_workflow/precollect_retime.py b/server_addon/hiero/client/ayon_hiero/plugins/publish_old_workflow/precollect_retime.py
similarity index 98%
rename from client/ayon_core/hosts/hiero/plugins/publish_old_workflow/precollect_retime.py
rename to server_addon/hiero/client/ayon_hiero/plugins/publish_old_workflow/precollect_retime.py
index 8503a0b6a7..c511b40abc 100644
--- a/client/ayon_core/hosts/hiero/plugins/publish_old_workflow/precollect_retime.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/publish_old_workflow/precollect_retime.py
@@ -1,7 +1,7 @@
from pyblish import api
import hiero
import math
-from ayon_core.hosts.hiero.api.otio.hiero_export import create_otio_time_range
+from ayon_hiero.api.otio.hiero_export import create_otio_time_range
class PrecollectRetime(api.InstancePlugin):
"""Calculate Retiming of selected track items."""
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/__init__.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/__init__.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/__init__.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/any_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/any_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/any_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/any_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/api_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/api_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/api_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/api_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/compiler/__init__.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/compiler/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/compiler/__init__.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/compiler/__init__.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/compiler/plugin_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/compiler/plugin_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/compiler/plugin_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/compiler/plugin_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor_database.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor_database.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor_database.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor_database.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor_pool.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor_pool.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/descriptor_pool.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/descriptor_pool.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/duration_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/duration_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/duration_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/duration_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/empty_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/empty_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/empty_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/empty_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/field_mask_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/field_mask_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/field_mask_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/field_mask_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/__init__.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/__init__.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/__init__.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/_parameterized.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/_parameterized.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/_parameterized.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/_parameterized.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/api_implementation.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/api_implementation.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/api_implementation.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/api_implementation.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/builder.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/builder.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/builder.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/builder.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/containers.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/containers.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/containers.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/containers.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/decoder.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/decoder.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/decoder.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/decoder.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/encoder.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/encoder.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/encoder.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/encoder.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/enum_type_wrapper.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/enum_type_wrapper.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/enum_type_wrapper.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/enum_type_wrapper.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/extension_dict.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/extension_dict.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/extension_dict.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/extension_dict.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/message_listener.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/message_listener.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/message_listener.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/message_listener.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/message_set_extensions_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/message_set_extensions_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/message_set_extensions_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/message_set_extensions_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/missing_enum_values_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/missing_enum_values_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/missing_enum_values_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/missing_enum_values_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/more_extensions_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/more_extensions_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/more_extensions_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/more_extensions_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/more_messages_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/more_messages_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/more_messages_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/more_messages_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/no_package_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/no_package_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/no_package_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/no_package_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/python_message.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/python_message.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/python_message.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/python_message.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/type_checkers.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/type_checkers.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/type_checkers.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/type_checkers.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/well_known_types.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/well_known_types.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/well_known_types.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/well_known_types.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/wire_format.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/wire_format.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/internal/wire_format.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/internal/wire_format.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/json_format.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/json_format.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/json_format.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/json_format.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/message.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/message.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/message.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/message.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/message_factory.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/message_factory.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/message_factory.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/message_factory.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/proto_builder.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/proto_builder.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/proto_builder.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/proto_builder.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/pyext/__init__.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/pyext/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/pyext/__init__.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/pyext/__init__.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/pyext/cpp_message.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/pyext/cpp_message.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/pyext/cpp_message.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/pyext/cpp_message.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/pyext/python_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/pyext/python_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/pyext/python_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/pyext/python_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/reflection.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/reflection.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/reflection.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/reflection.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/service.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/service.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/service.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/service.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/service_reflection.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/service_reflection.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/service_reflection.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/service_reflection.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/source_context_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/source_context_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/source_context_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/source_context_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/struct_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/struct_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/struct_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/struct_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/symbol_database.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/symbol_database.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/symbol_database.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/symbol_database.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/text_encoding.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/text_encoding.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/text_encoding.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/text_encoding.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/text_format.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/text_format.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/text_format.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/text_format.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/timestamp_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/timestamp_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/timestamp_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/timestamp_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/type_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/type_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/type_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/type_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/util/__init__.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/util/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/util/__init__.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/util/__init__.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/util/json_format_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/util/json_format_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/util/json_format_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/util/json_format_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/util/json_format_proto3_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/util/json_format_proto3_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/util/json_format_proto3_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/util/json_format_proto3_pb2.py
diff --git a/client/ayon_core/hosts/hiero/vendor/google/protobuf/wrappers_pb2.py b/server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/wrappers_pb2.py
similarity index 100%
rename from client/ayon_core/hosts/hiero/vendor/google/protobuf/wrappers_pb2.py
rename to server_addon/hiero/client/ayon_hiero/vendor/google/protobuf/wrappers_pb2.py
diff --git a/server_addon/hiero/client/ayon_hiero/version.py b/server_addon/hiero/client/ayon_hiero/version.py
new file mode 100644
index 0000000000..6a2d180afb
--- /dev/null
+++ b/server_addon/hiero/client/ayon_hiero/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'hiero' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/hiero/package.py b/server_addon/hiero/package.py
index 54c2f74fa7..1948d50e6d 100644
--- a/server_addon/hiero/package.py
+++ b/server_addon/hiero/package.py
@@ -1,3 +1,9 @@
name = "hiero"
title = "Hiero"
-version = "0.1.3"
+version = "0.2.0"
+client_dir = "ayon_hiero"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}
diff --git a/server_addon/hiero/server/settings/publish_plugins.py b/server_addon/hiero/server/settings/publish_plugins.py
index 0e43d4ce3a..632bb15241 100644
--- a/server_addon/hiero/server/settings/publish_plugins.py
+++ b/server_addon/hiero/server/settings/publish_plugins.py
@@ -7,13 +7,6 @@ from ayon_server.settings import (
)
-class CollectInstanceVersionModel(BaseSettingsModel):
- enabled: bool = SettingsField(
- True,
- title="Enabled"
- )
-
-
class CollectClipEffectsDefModel(BaseSettingsModel):
_layout = "expanded"
name: str = SettingsField("", title="Name")
@@ -38,46 +31,14 @@ class CollectClipEffectsModel(BaseSettingsModel):
return value
-class ExtractReviewCutUpVideoModel(BaseSettingsModel):
- enabled: bool = SettingsField(
- True,
- title="Enabled"
- )
- tags_addition: list[str] = SettingsField(
- default_factory=list,
- title="Additional tags"
- )
-
-
class PublishPluginsModel(BaseSettingsModel):
- CollectInstanceVersion: CollectInstanceVersionModel = SettingsField(
- default_factory=CollectInstanceVersionModel,
- title="Collect Instance Version"
- )
CollectClipEffects: CollectClipEffectsModel = SettingsField(
default_factory=CollectClipEffectsModel,
title="Collect Clip Effects"
)
- """# TODO: enhance settings with host api:
- Rename class name and plugin name
- to match title (it makes more sense)
- """
- ExtractReviewCutUpVideo: ExtractReviewCutUpVideoModel = SettingsField(
- default_factory=ExtractReviewCutUpVideoModel,
- title="Exctract Review Trim"
- )
DEFAULT_PUBLISH_PLUGIN_SETTINGS = {
- "CollectInstanceVersion": {
- "enabled": False,
- },
- "ExtractReviewCutUpVideo": {
- "enabled": True,
- "tags_addition": [
- "review"
- ]
- },
"CollectClipEffectsModel": {
"effect_categories": []
}
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/server_addon/maya/client/ayon_maya/api/menu.py b/server_addon/maya/client/ayon_maya/api/menu.py
index 153aff07c3..a6f8ae2db0 100644
--- a/server_addon/maya/client/ayon_maya/api/menu.py
+++ b/server_addon/maya/client/ayon_maya/api/menu.py
@@ -25,6 +25,7 @@ from .workfile_template_builder import (
build_workfile_template,
update_workfile_template
)
+from ayon_core.pipeline.context_tools import version_up_current_workfile
from ayon_core.tools.workfile_template_build import open_template_ui
from .workfile_template_builder import MayaTemplateBuilder
@@ -74,6 +75,14 @@ def install(project_settings):
cmds.setParent("..", menu=True)
+ if project_settings["core"]["tools"]["ayon_menu"].get(
+ "version_up_current_workfile"):
+ cmds.menuItem(divider=True)
+ cmds.menuItem(
+ "Version Up Workfile",
+ command=lambda *args: version_up_current_workfile()
+ )
+
cmds.menuItem(divider=True)
cmds.menuItem(
diff --git a/server_addon/maya/client/ayon_maya/plugins/load/load_reference.py b/server_addon/maya/client/ayon_maya/plugins/load/load_reference.py
index f8e1062e38..92cee414fd 100644
--- a/server_addon/maya/client/ayon_maya/plugins/load/load_reference.py
+++ b/server_addon/maya/client/ayon_maya/plugins/load/load_reference.py
@@ -13,6 +13,26 @@ from ayon_maya.api.lib import (
from maya import cmds
+@contextlib.contextmanager
+def preserve_time_units():
+ """Preserve current frame, frame range and fps"""
+ frame = cmds.currentTime(query=True)
+ fps = cmds.currentUnit(query=True, time=True)
+ start = cmds.playbackOptions(query=True, minTime=True)
+ end = cmds.playbackOptions(query=True, maxTime=True)
+ anim_start = cmds.playbackOptions(query=True, animationStartTime=True)
+ anim_end = cmds.playbackOptions(query=True, animationEndTime=True)
+ try:
+ yield
+ finally:
+ cmds.currentUnit(time=fps, updateAnimation=False)
+ cmds.currentTime(frame)
+ cmds.playbackOptions(minTime=start,
+ maxTime=end,
+ animationStartTime=anim_start,
+ animationEndTime=anim_end)
+
+
@contextlib.contextmanager
def preserve_modelpanel_cameras(container, log=None):
"""Preserve camera members of container in the modelPanels.
@@ -348,6 +368,15 @@ class MayaUSDReferenceLoader(ReferenceLoader):
])
options["file_type"] = self.file_type
- return super(MayaUSDReferenceLoader, self).process_reference(
- context, name, namespace, options
- )
+ # Maya USD import reference has the tendency to change the time slider
+ # range and current frame, so we force revert it after
+ with preserve_time_units():
+ return super(MayaUSDReferenceLoader, self).process_reference(
+ context, name, namespace, options
+ )
+
+ def update(self, container, context):
+ # Maya USD import reference has the tendency to change the time slider
+ # range and current frame, so we force revert it after
+ with preserve_time_units():
+ super(MayaUSDReferenceLoader, self).update(container, context)
diff --git a/server_addon/maya/client/ayon_maya/plugins/workfile_build/assign_look_placeholder.py b/server_addon/maya/client/ayon_maya/plugins/workfile_build/assign_look_placeholder.py
new file mode 100644
index 0000000000..aaecdd78b9
--- /dev/null
+++ b/server_addon/maya/client/ayon_maya/plugins/workfile_build/assign_look_placeholder.py
@@ -0,0 +1,128 @@
+from maya import cmds
+
+from ayon_core.lib import (
+ UISeparatorDef,
+ UILabelDef,
+ TextDef,
+ BoolDef
+)
+from ayon_core.lib.events import weakref_partial
+from ayon_maya.api.workfile_template_builder import MayaPlaceholderPlugin
+from ayon_maya.api.lib import (
+ get_all_children,
+ assign_look,
+)
+
+
+class AssignLookPlaceholderPlugin(MayaPlaceholderPlugin):
+ """Assign a look product to members of the placeholder set.
+
+ Creates an objectSet. Any members will get the look assigned with the given
+ product name if it exists.
+
+ Any containers loaded from other template placeholders will get the look
+ assigned to their loaded containers.
+
+ """
+
+ identifier = "maya.assignlook"
+ label = "Assign Look"
+
+ def get_placeholder_options(self, options=None):
+ options = options or {}
+ return [
+ UISeparatorDef(),
+ UILabelDef(label="Description"),
+ UISeparatorDef(),
+ UILabelDef(
+ label=(
+ "Creates an objectSet. Any members will get the look\n"
+ "assigned with the given product name if it exists.\n\n"
+ "Any containers loaded from other template placeholders\n"
+ "will get the look assigned to their loaded containers."
+ ""
+ )
+ ),
+ UISeparatorDef(),
+ UILabelDef(label="Settings"),
+ UISeparatorDef(),
+ TextDef(
+ "product_name",
+ label="Product Name",
+ tooltip="Look product to assign to containers loaded by "
+ "contained placeholders",
+ multiline=False,
+ default=options.get("product_name", "lookMain")
+ ),
+ BoolDef(
+ "recurse",
+ label="Recursive",
+ tooltip="Assign look also to potential sub containers / "
+ "placeholders loaded from the load placeholder.\n"
+ "This will make sure that any placeholder contained "
+ "that itself loaded new geometry will recursively "
+ "also get the look assignment triggered.",
+ default=options.get("recurse", False)
+ ),
+ ]
+
+ def create_placeholder(self, placeholder_data):
+ placeholder_data["plugin_identifier"] = self.identifier
+
+ # Create maya objectSet on selection
+ selection = cmds.ls(selection=True, long=True)
+ product_name = placeholder_data["product_name"]
+ name = "AssignLook_{}".format(product_name)
+ node = cmds.sets(selection, name=name)
+
+ self.imprint(node, placeholder_data)
+
+ def populate_placeholder(self, placeholder):
+ callback = weakref_partial(self.assign_look, placeholder)
+ self.builder.add_on_depth_processed_callback(
+ callback, order=placeholder.order)
+
+ # If placeholder should be deleted, delete it after finish
+ if not placeholder.data.get("keep_placeholder", True):
+ delete_callback = weakref_partial(self.delete_placeholder,
+ placeholder)
+ self.builder.add_on_finished_callback(
+ delete_callback, order=placeholder.order)
+
+ def assign_look(self, placeholder):
+ if placeholder.data.get("finished", False):
+ # If not recursive we mark it finished after the first depth
+ # iteration - otherwise run it again to find any new members
+ return
+
+ product_name = placeholder.data["product_name"]
+ assert product_name, "Must have defined look product name to assign"
+
+ members = cmds.ls(
+ cmds.sets(placeholder.scene_identifier, query=True), long=True
+ )
+ if not members:
+ return
+
+ # Allow any children of members in the set to get assignments,
+ # e.g. when a group is included there. Whenever a load placeholder
+ # finishes it also adds loaded content into the object set the
+ # placeholder was in, so this will also assign to loaded content
+ # during this build.
+ assign_nodes = set(members)
+ assign_nodes.update(get_all_children(members))
+
+ processed = placeholder.data.setdefault("processed", set())
+ assign_nodes.difference_update(processed)
+ processed.update(assign_nodes)
+
+ if assign_nodes:
+ self.log.info(
+ "Assigning look {} for placeholder: {}".format(product_name,
+ placeholder)
+ )
+ assign_nodes = list(assign_nodes)
+ assign_look(assign_nodes, product_name=product_name)
+
+ if not placeholder.data.get("recurse", False):
+ placeholder.data["finished"] = True
diff --git a/server_addon/maya/package.py b/server_addon/maya/package.py
index 274f74869b..0331fb2fb6 100644
--- a/server_addon/maya/package.py
+++ b/server_addon/maya/package.py
@@ -1,6 +1,6 @@
name = "maya"
title = "Maya"
-version = "0.2.0"
+version = "0.2.1"
ayon_required_addons = {
"core": ">0.3.2",
diff --git a/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py
index 52df60dd8a..072eb82179 100644
--- a/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_color_coded_instances.py
@@ -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/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_review.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_review.py
index 1ffbadf022..d9a29f9b74 100644
--- a/server_addon/photoshop/client/ayon_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/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_version.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/collect_version.py
index cda71d8643..bc9f05ab50 100644
--- a/server_addon/photoshop/client/ayon_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/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py
index 0d8824af2d..33599d37bb 100644
--- a/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_image.py
@@ -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/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py
index 11bb47a886..0f36d31648 100644
--- a/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/extract_review.py
@@ -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/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py
index 2b5492d878..e5f826b07e 100644
--- a/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py
+++ b/server_addon/photoshop/client/ayon_photoshop/plugins/publish/validate_naming.py
@@ -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/server_addon/photoshop/client/ayon_photoshop/version.py b/server_addon/photoshop/client/ayon_photoshop/version.py
index f04558d6c6..31a969addf 100644
--- a/server_addon/photoshop/client/ayon_photoshop/version.py
+++ b/server_addon/photoshop/client/ayon_photoshop/version.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'photoshop' version."""
-__version__ = "0.2.0"
+__version__ = "0.2.1"
diff --git a/server_addon/photoshop/package.py b/server_addon/photoshop/package.py
index 3c57a9c79e..d04973ebc3 100644
--- a/server_addon/photoshop/package.py
+++ b/server_addon/photoshop/package.py
@@ -1,6 +1,6 @@
name = "photoshop"
title = "Photoshop"
-version = "0.2.0"
+version = "0.2.1"
client_dir = "ayon_photoshop"
diff --git a/client/ayon_core/modules/royalrender/__init__.py b/server_addon/royalrender/client/ayon_royalrender/__init__.py
similarity index 58%
rename from client/ayon_core/modules/royalrender/__init__.py
rename to server_addon/royalrender/client/ayon_royalrender/__init__.py
index 121530beda..8bf207e7db 100644
--- a/client/ayon_core/modules/royalrender/__init__.py
+++ b/server_addon/royalrender/client/ayon_royalrender/__init__.py
@@ -1,6 +1,9 @@
+from .version import __version__
from .addon import RoyalRenderAddon
__all__ = (
+ "__version__",
+
"RoyalRenderAddon",
)
diff --git a/client/ayon_core/modules/royalrender/addon.py b/server_addon/royalrender/client/ayon_royalrender/addon.py
similarity index 70%
rename from client/ayon_core/modules/royalrender/addon.py
rename to server_addon/royalrender/client/ayon_royalrender/addon.py
index e69cf9feec..1ea6954e3f 100644
--- a/client/ayon_core/modules/royalrender/addon.py
+++ b/server_addon/royalrender/client/ayon_royalrender/addon.py
@@ -4,23 +4,20 @@ import os
from ayon_core.addon import AYONAddon, IPluginPaths
+from .version import __version__
+
class RoyalRenderAddon(AYONAddon, IPluginPaths):
"""Class providing basic Royal Render implementation logic."""
name = "royalrender"
-
- # _rr_api = None
- # @property
- # def rr_api(self):
- # if not self._rr_api:
- # # import royal render modules
- # from .api import Api
- # self._rr_api = Api(self.settings)
- # return self._rr_api
+ version = __version__
def initialize(self, studio_settings):
# type: (dict) -> None
- self.enabled = self.name in studio_settings
+ self.enabled = False
+ addon_settings = studio_settings.get(self.name)
+ if addon_settings:
+ self.enabled = addon_settings["enabled"]
@staticmethod
def get_plugin_paths():
diff --git a/client/ayon_core/modules/royalrender/api.py b/server_addon/royalrender/client/ayon_royalrender/api.py
similarity index 100%
rename from client/ayon_core/modules/royalrender/api.py
rename to server_addon/royalrender/client/ayon_royalrender/api.py
diff --git a/client/ayon_core/modules/royalrender/lib.py b/server_addon/royalrender/client/ayon_royalrender/lib.py
similarity index 99%
rename from client/ayon_core/modules/royalrender/lib.py
rename to server_addon/royalrender/client/ayon_royalrender/lib.py
index 82bc96e759..ec67cfa29e 100644
--- a/client/ayon_core/modules/royalrender/lib.py
+++ b/server_addon/royalrender/client/ayon_royalrender/lib.py
@@ -16,8 +16,8 @@ from ayon_core.lib import (
is_in_tests,
)
from ayon_core.lib.execute import run_ayon_launcher_process
-from ayon_core.modules.royalrender.api import Api as rrApi
-from ayon_core.modules.royalrender.rr_job import (
+from ayon_royalrender.api import Api as rrApi
+from ayon_royalrender.rr_job import (
CustomAttribute,
RRJob,
RREnvList,
diff --git a/client/ayon_core/modules/royalrender/plugins/publish/collect_rr_path_from_instance.py b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/collect_rr_path_from_instance.py
similarity index 96%
rename from client/ayon_core/modules/royalrender/plugins/publish/collect_rr_path_from_instance.py
rename to server_addon/royalrender/client/ayon_royalrender/plugins/publish/collect_rr_path_from_instance.py
index 7fad573a8b..e3c3ddc74b 100644
--- a/client/ayon_core/modules/royalrender/plugins/publish/collect_rr_path_from_instance.py
+++ b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/collect_rr_path_from_instance.py
@@ -8,7 +8,7 @@ Provides:
import os.path
import pyblish.api
-from ayon_core.modules.royalrender.rr_job import get_rr_platform
+from ayon_royalrender.rr_job import get_rr_platform
class CollectRRPathFromInstance(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/modules/royalrender/plugins/publish/collect_sequences_from_job.py b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/collect_sequences_from_job.py
similarity index 100%
rename from client/ayon_core/modules/royalrender/plugins/publish/collect_sequences_from_job.py
rename to server_addon/royalrender/client/ayon_royalrender/plugins/publish/collect_sequences_from_job.py
diff --git a/client/ayon_core/modules/royalrender/plugins/publish/create_maya_royalrender_job.py b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_maya_royalrender_job.py
similarity index 96%
rename from client/ayon_core/modules/royalrender/plugins/publish/create_maya_royalrender_job.py
rename to server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_maya_royalrender_job.py
index d205b32b7d..4e52e8e24b 100644
--- a/client/ayon_core/modules/royalrender/plugins/publish/create_maya_royalrender_job.py
+++ b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_maya_royalrender_job.py
@@ -4,7 +4,7 @@ import os
from maya.OpenMaya import MGlobal # noqa: F401
-from ayon_core.modules.royalrender import lib
+from ayon_royalrender import lib
from ayon_core.pipeline.farm.tools import iter_expected_files
diff --git a/client/ayon_core/modules/royalrender/plugins/publish/create_nuke_royalrender_job.py b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_nuke_royalrender_job.py
similarity index 98%
rename from client/ayon_core/modules/royalrender/plugins/publish/create_nuke_royalrender_job.py
rename to server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_nuke_royalrender_job.py
index 9a3bf3624b..442485d211 100644
--- a/client/ayon_core/modules/royalrender/plugins/publish/create_nuke_royalrender_job.py
+++ b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_nuke_royalrender_job.py
@@ -2,7 +2,7 @@
"""Submitting render job to RoyalRender."""
import re
-from ayon_core.modules.royalrender import lib
+from ayon_royalrender import lib
class CreateNukeRoyalRenderJob(lib.BaseCreateRoyalRenderJob):
diff --git a/client/ayon_core/modules/royalrender/plugins/publish/create_publish_royalrender_job.py b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_publish_royalrender_job.py
similarity index 99%
rename from client/ayon_core/modules/royalrender/plugins/publish/create_publish_royalrender_job.py
rename to server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_publish_royalrender_job.py
index 51500f84f5..0bc092ecd8 100644
--- a/client/ayon_core/modules/royalrender/plugins/publish/create_publish_royalrender_job.py
+++ b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/create_publish_royalrender_job.py
@@ -6,7 +6,7 @@ import json
import pyblish.api
-from ayon_core.modules.royalrender.rr_job import (
+from ayon_royalrender.rr_job import (
RRJob,
RREnvList,
get_rr_platform
diff --git a/client/ayon_core/modules/royalrender/plugins/publish/submit_jobs_to_royalrender.py b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/submit_jobs_to_royalrender.py
similarity index 98%
rename from client/ayon_core/modules/royalrender/plugins/publish/submit_jobs_to_royalrender.py
rename to server_addon/royalrender/client/ayon_royalrender/plugins/publish/submit_jobs_to_royalrender.py
index 09c1dc4a54..72a27dab2d 100644
--- a/client/ayon_core/modules/royalrender/plugins/publish/submit_jobs_to_royalrender.py
+++ b/server_addon/royalrender/client/ayon_royalrender/plugins/publish/submit_jobs_to_royalrender.py
@@ -3,7 +3,7 @@
import tempfile
import pyblish.api
-from ayon_core.modules.royalrender.api import (
+from ayon_royalrender.api import (
RRJob,
Api as rrApi,
SubmitterParameter
diff --git a/client/ayon_core/modules/royalrender/rr_job.py b/server_addon/royalrender/client/ayon_royalrender/rr_job.py
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_job.py
rename to server_addon/royalrender/client/ayon_royalrender/rr_job.py
diff --git a/client/ayon_core/modules/royalrender/rr_root/README.md b/server_addon/royalrender/client/ayon_royalrender/rr_root/README.md
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/README.md
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/README.md
diff --git a/client/ayon_core/modules/royalrender/rr_root/plugins/control_job/perjob/m50__openpype_publish_render.py b/server_addon/royalrender/client/ayon_royalrender/rr_root/plugins/control_job/perjob/m50__openpype_publish_render.py
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/plugins/control_job/perjob/m50__openpype_publish_render.py
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/plugins/control_job/perjob/m50__openpype_publish_render.py
diff --git a/client/ayon_core/modules/royalrender/rr_root/render_apps/_config/E01__OpenPype.png b/server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_config/E01__OpenPype.png
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/render_apps/_config/E01__OpenPype.png
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_config/E01__OpenPype.png
diff --git a/client/ayon_core/modules/royalrender/rr_root/render_apps/_config/E01__OpenPype__PublishJob.cfg b/server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_config/E01__OpenPype__PublishJob.cfg
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/render_apps/_config/E01__OpenPype__PublishJob.cfg
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_config/E01__OpenPype__PublishJob.cfg
diff --git a/client/ayon_core/modules/royalrender/rr_root/render_apps/_config/E01__OpenPype___global.inc b/server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_config/E01__OpenPype___global.inc
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/render_apps/_config/E01__OpenPype___global.inc
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_config/E01__OpenPype___global.inc
diff --git a/client/ayon_core/modules/royalrender/rr_root/render_apps/_install_paths/OpenPype.cfg b/server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_install_paths/OpenPype.cfg
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/render_apps/_install_paths/OpenPype.cfg
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_install_paths/OpenPype.cfg
diff --git a/client/ayon_core/modules/royalrender/rr_root/render_apps/_prepost_scripts/OpenPypeEnvironment.cfg b/server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_prepost_scripts/OpenPypeEnvironment.cfg
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/render_apps/_prepost_scripts/OpenPypeEnvironment.cfg
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_prepost_scripts/OpenPypeEnvironment.cfg
diff --git a/client/ayon_core/modules/royalrender/rr_root/render_apps/_prepost_scripts/PreOpenPypeInjectEnvironments.py b/server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_prepost_scripts/PreOpenPypeInjectEnvironments.py
similarity index 100%
rename from client/ayon_core/modules/royalrender/rr_root/render_apps/_prepost_scripts/PreOpenPypeInjectEnvironments.py
rename to server_addon/royalrender/client/ayon_royalrender/rr_root/render_apps/_prepost_scripts/PreOpenPypeInjectEnvironments.py
diff --git a/server_addon/royalrender/client/ayon_royalrender/version.py b/server_addon/royalrender/client/ayon_royalrender/version.py
new file mode 100644
index 0000000000..4528939205
--- /dev/null
+++ b/server_addon/royalrender/client/ayon_royalrender/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'royalrender' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/royalrender/package.py b/server_addon/royalrender/package.py
index 1fdea4abbb..2a07b59f65 100644
--- a/server_addon/royalrender/package.py
+++ b/server_addon/royalrender/package.py
@@ -1,3 +1,10 @@
name = "royalrender"
title = "Royal Render"
-version = "0.1.1"
+version = "0.2.0"
+
+client_dir = "ayon_royalrender"
+
+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 = "*"