added 'AYONPyblishPluginMixin' as replacement for 'OpenPypePyblishPluginMixin'

This commit is contained in:
Jakub Trllo 2024-02-06 18:19:07 +01:00
parent b17815dc1b
commit ab8d384715
31 changed files with 59 additions and 54 deletions

View file

@ -3,11 +3,11 @@
import hou # noqa
import pyblish.api
from ayon_core.lib import BoolDef
from ayon_core.pipeline import OpenPypePyblishPluginMixin
from ayon_core.pipeline import AYONPyblishPluginMixin
class CollectAssetHandles(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Apply asset handles.
If instance does not have:

View file

@ -1,10 +1,10 @@
import pyblish.api
from ayon_core.lib import NumberDef
from ayon_core.pipeline import OpenPypePyblishPluginMixin
from ayon_core.pipeline import AYONPyblishPluginMixin
class CollectChunkSize(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Collect chunk size for cache submission to Deadline."""
order = pyblish.api.CollectorOrder + 0.05

View file

@ -6,13 +6,13 @@ from pymxs import runtime as rt
from ayon_core.lib import BoolDef
from ayon_core.hosts.max.api.lib import get_max_version
from ayon_core.pipeline.publish import (
OpenPypePyblishPluginMixin,
AYONPyblishPluginMixin,
KnownPublishError
)
class CollectReview(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Collect Review Data for Preview Animation"""
order = pyblish.api.CollectorOrder + 0.02

View file

@ -1,11 +1,11 @@
import pyblish.api
from ayon_core.lib import EnumDef, TextDef
from ayon_core.pipeline.publish import OpenPypePyblishPluginMixin
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
class CollectTyCacheData(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Collect Channel Attributes for TyCache Export"""
order = pyblish.api.CollectorOrder + 0.02

View file

@ -6,11 +6,11 @@ from maya import cmds
from ayon_core.hosts.maya.api.lib import maintained_selection
from ayon_core.pipeline import AVALON_CONTAINER_ID, publish
from ayon_core.pipeline.publish import OpenPypePyblishPluginMixin
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
from ayon_core.lib import BoolDef
class ExtractMayaSceneRaw(publish.Extractor, OpenPypePyblishPluginMixin):
class ExtractMayaSceneRaw(publish.Extractor, AYONPyblishPluginMixin):
"""Extract as Maya Scene (raw).
This will preserve all references, construction history, etc.

View file

@ -6,7 +6,7 @@ from ayon_core.pipeline import colorspace
class CollectColorspaceLook(pyblish.api.InstancePlugin,
publish.OpenPypePyblishPluginMixin):
publish.AYONPyblishPluginMixin):
"""Collect OCIO colorspace look from LUT file
"""

View file

@ -9,7 +9,7 @@ from ayon_core.pipeline.publish import KnownPublishError
class CollectColorspace(pyblish.api.InstancePlugin,
publish.OpenPypePyblishPluginMixin,
publish.AYONPyblishPluginMixin,
publish.ColormanagedPyblishPluginMixin):
"""Collect explicit user defined representation colorspaces"""

View file

@ -1,11 +1,11 @@
import os
import pyblish.api
from ayon_core.pipeline import OpenPypePyblishPluginMixin
from ayon_core.pipeline import AYONPyblishPluginMixin
class CollectMovieBatch(
pyblish.api.InstancePlugin, OpenPypePyblishPluginMixin
pyblish.api.InstancePlugin, AYONPyblishPluginMixin
):
"""Collect file url for batch movies and create representation.

View file

@ -5,7 +5,7 @@ from ayon_core.pipeline import publish
class ExtractColorspaceLook(publish.Extractor,
publish.OpenPypePyblishPluginMixin):
publish.AYONPyblishPluginMixin):
"""Extract OCIO colorspace look from LUT file
"""

View file

@ -11,7 +11,7 @@ from ayon_core.pipeline.colorspace import (
class ValidateColorspace(pyblish.api.InstancePlugin,
publish.OpenPypePyblishPluginMixin,
publish.AYONPyblishPluginMixin,
publish.ColormanagedPyblishPluginMixin):
"""Validate representation colorspaces"""

View file

@ -7,7 +7,7 @@ from ayon_core.pipeline import (
class ValidateColorspaceLook(pyblish.api.InstancePlugin,
publish.OpenPypePyblishPluginMixin):
publish.AYONPyblishPluginMixin):
"""Validate colorspace look attributes"""
label = "Validate colorspace look attributes"

View file

@ -20,7 +20,7 @@ import pyblish.api
from ayon_core.pipeline.publish import (
AbstractMetaInstancePlugin,
KnownPublishError,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
)
from ayon_core.pipeline.publish.lib import (
replace_with_published_scene_path
@ -406,7 +406,7 @@ class DeadlineJobInfo(object):
@six.add_metaclass(AbstractMetaInstancePlugin)
class AbstractSubmitDeadline(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Class abstracting access to Deadline."""
label = "Submit to Deadline"

View file

@ -1,11 +1,11 @@
# -*- coding: utf-8 -*-
import pyblish.api
from ayon_core.lib import TextDef
from ayon_core.pipeline.publish import OpenPypePyblishPluginMixin
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
class CollectDeadlinePools(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Collect pools from instance or Publisher attributes, from Setting
otherwise.

View file

@ -13,7 +13,7 @@ from ayon_core.lib import (
TextDef,
)
from ayon_core.pipeline import legacy_io
from ayon_core.pipeline.publish import OpenPypePyblishPluginMixin
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
from ayon_core.pipeline.farm.tools import iter_expected_files
from ayon_core.tests.lib import is_in_tests
@ -29,7 +29,7 @@ class BlenderPluginInfo():
class BlenderSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
label = "Submit Render to Deadline"
hosts = ["blender"]
families = ["render"]

View file

@ -8,7 +8,7 @@ import pyblish.api
from ayon_core.pipeline import legacy_io
from ayon_core.pipeline.publish import (
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
)
from ayon_core.lib import (
BoolDef,
@ -19,7 +19,7 @@ from ayon_core.lib import (
class FusionSubmitDeadline(
pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
):
"""Submit current Comp to Deadline

View file

@ -10,7 +10,7 @@ from ayon_core.lib import (
)
from ayon_core.pipeline import (
legacy_io,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
)
from ayon_core.tests.lib import is_in_tests
from ayon_core.lib import is_running_from_build
@ -32,7 +32,7 @@ class HoudiniPluginInfo(object):
class HoudiniCacheSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, # noqa
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Submit Houdini scene to perform a local publish in Deadline.
Publishing in Deadline can be helpful for scenes that publish very slow.

View file

@ -5,7 +5,7 @@ from datetime import datetime
import pyblish.api
from ayon_core.pipeline import legacy_io, OpenPypePyblishPluginMixin
from ayon_core.pipeline import legacy_io, AYONPyblishPluginMixin
from ayon_core.tests.lib import is_in_tests
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
@ -50,7 +50,7 @@ class RedshiftRenderPluginInfo():
class HoudiniSubmitDeadline(
abstract_submit_deadline.AbstractSubmitDeadline,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
):
"""Submit Render ROPs to Deadline.

View file

@ -10,7 +10,7 @@ from ayon_core.lib import (
)
from ayon_core.pipeline import (
legacy_io,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
)
from ayon_core.pipeline.publish.lib import (
replace_with_published_scene_path
@ -35,7 +35,7 @@ class MaxPluginInfo(object):
class MaxSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
label = "Submit Render to Deadline"
hosts = ["max"]

View file

@ -30,7 +30,7 @@ import attr
from ayon_core.pipeline import (
legacy_io,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
)
from ayon_core.lib import (
BoolDef,
@ -100,7 +100,7 @@ class ArnoldPluginInfo(object):
class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
label = "Submit Render to Deadline"
hosts = ["maya"]

View file

@ -9,7 +9,7 @@ import pyblish.api
from ayon_core.pipeline import legacy_io
from ayon_core.pipeline.publish import (
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
)
from ayon_core.tests.lib import is_in_tests
from ayon_core.lib import (
@ -20,7 +20,7 @@ from ayon_core.lib import (
class NukeSubmitDeadline(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Submit write to Deadline
Renders are submitted to a Deadline Web Service as

View file

@ -26,7 +26,7 @@ from ayon_core.pipeline.farm.pyblish_functions import (
class ProcessSubmittedCacheJobOnFarm(pyblish.api.InstancePlugin,
publish.OpenPypePyblishPluginMixin,
publish.AYONPyblishPluginMixin,
publish.ColormanagedPyblishPluginMixin):
"""Process Cache Job submitted on farm
This is replicated version of submit publish job

View file

@ -54,7 +54,7 @@ def get_resource_files(resources, frame_range=None):
class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin,
publish.OpenPypePyblishPluginMixin,
publish.AYONPyblishPluginMixin,
publish.ColormanagedPyblishPluginMixin):
"""Process Job submitted on farm.

View file

@ -19,14 +19,14 @@ from ayon_core.modules.royalrender.rr_job import (
RREnvList,
get_rr_platform,
)
from ayon_core.pipeline import OpenPypePyblishPluginMixin
from ayon_core.pipeline import AYONPyblishPluginMixin
from ayon_core.pipeline.publish import KnownPublishError
from ayon_core.pipeline.publish.lib import get_published_workfile_instance
from ayon_core.tests.lib import is_in_tests
class BaseCreateRoyalRenderJob(pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin):
AYONPyblishPluginMixin):
"""Creates separate rendering job for Royal Render"""
label = "Create Nuke Render job in RR"
order = pyblish.api.IntegratorOrder + 0.1

View file

@ -6,7 +6,7 @@ Entry point of creation. All data and metadata are handled through create contex
Discovers Creator plugins to be able create new instances and convert existing instances. Creators may have defined attributes that are specific for their instances. Attributes definition can enhance behavior of instance during publishing.
Publish plugins are loaded because they can also define attributes definitions. These are less family specific To be able define attributes Publish plugin must inherit from `OpenPypePyblishPluginMixin` and must override `get_attribute_defs` class method which must return list of attribute definitions. Values of publish plugin definitions are stored per plugin name under `publish_attributes`. Also can override `convert_attribute_values` class method which gives ability to modify values on instance before are used in CreatedInstance. Method `convert_attribute_values` can be also used without `get_attribute_defs` to modify values when changing compatibility (remove metadata from instance because are irrelevant).
Publish plugins are loaded because they can also define attributes definitions. These are less family specific To be able define attributes Publish plugin must inherit from `AYONPyblishPluginMixin` and must override `get_attribute_defs` class method which must return list of attribute definitions. Values of publish plugin definitions are stored per plugin name under `publish_attributes`. Also can override `convert_attribute_values` class method which gives ability to modify values on instance before are used in CreatedInstance. Method `convert_attribute_values` can be also used without `get_attribute_defs` to modify values when changing compatibility (remove metadata from instance because are irrelevant).
Possible attribute definitions can be found in `openpype/pipeline/lib/attribute_definitions.py`.

View file

@ -1200,7 +1200,7 @@ class CreatedInstance:
Args:
attr_plugins (List[pyblish.api.Plugin]): Pyblish plugins which
inherit from 'OpenPypePyblishPluginMixin' and may contain
inherit from 'AYONPyblishPluginMixin' and may contain
attribute definitions.
"""
@ -1735,7 +1735,7 @@ class CreateContext:
self._reset_convertor_plugins()
def _reset_publish_plugins(self, discover_publish_plugins):
from ayon_core.pipeline import OpenPypePyblishPluginMixin
from ayon_core.pipeline import AYONPyblishPluginMixin
from ayon_core.pipeline.publish import (
publish_plugins_discover
)
@ -1759,7 +1759,7 @@ class CreateContext:
# Collect plugins that can have attribute definitions
for plugin in publish_plugins:
if OpenPypePyblishPluginMixin in inspect.getmro(plugin):
if AYONPyblishPluginMixin in inspect.getmro(plugin):
plugins_with_defs.append(plugin)
plugins_mismatch_targets = [

View file

@ -17,16 +17,16 @@ Exception `PublishValidationError` 3 arguments:
When there is a known error that can't be fixed by user (e.g. can't connect to deadline service, etc.) `KnownPublishError` should be raise. The only difference is that it's message is shown in UI to artist otherwise a neutral message without context is shown.
## Plugin extension
Publish plugins can be extended by additional logic when inherits from `OpenPypePyblishPluginMixin` which can be used as mixin (additional inheritance of class).
Publish plugins can be extended by additional logic when inherits from `AYONPyblishPluginMixin` which can be used as mixin (additional inheritance of class).
```python
import pyblish.api
from ayon_core.pipeline import OpenPypePyblishPluginMixin
from ayon_core.pipeline import AYONPyblishPluginMixin
# Example context plugin
class MyExtendedPlugin(
pyblish.api.ContextPlugin, OpenPypePyblishPluginMixin
pyblish.api.ContextPlugin, AYONPyblishPluginMixin
):
pass

View file

@ -12,6 +12,7 @@ from .publish_plugins import (
PublishValidationError,
PublishXmlValidationError,
KnownPublishError,
AYONPyblishPluginMixin,
OpenPypePyblishPluginMixin,
OptionalPyblishPluginMixin,
@ -62,6 +63,7 @@ __all__ = (
"PublishValidationError",
"PublishXmlValidationError",
"KnownPublishError",
"AYONPyblishPluginMixin",
"OpenPypePyblishPluginMixin",
"OptionalPyblishPluginMixin",

View file

@ -78,7 +78,7 @@ class KnownPublishError(Exception):
pass
class OpenPypePyblishPluginMixin:
class AYONPyblishPluginMixin:
# TODO
# executable_in_thread = False
#
@ -166,7 +166,10 @@ class OpenPypePyblishPluginMixin:
return self.get_attr_values_from_data_for_plugin(self.__class__, data)
class OptionalPyblishPluginMixin(OpenPypePyblishPluginMixin):
OpenPypePyblishPluginMixin = AYONPyblishPluginMixin
class OptionalPyblishPluginMixin(AYONPyblishPluginMixin):
"""Prepare mixin for optional plugins.
Defined active attribute definition prepared for published and

View file

@ -25,12 +25,12 @@ Todos:
import pyblish.api
from ayon_core.lib.attribute_definitions import TextDef
from ayon_core.pipeline.publish import OpenPypePyblishPluginMixin
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
class CollectInstanceCommentDef(
pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
):
label = "Comment per instance"
targets = ["local"]
@ -64,7 +64,7 @@ class CollectInstanceCommentDef(
class CollectComment(
pyblish.api.ContextPlugin,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
):
"""Collect comment per each instance.

View file

@ -4,7 +4,7 @@ from ayon_core.lib.attribute_definitions import (
BoolDef
)
from ayon_core.pipeline.publish import OpenPypePyblishPluginMixin
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
from ayon_core.client.entities import (
get_last_version_by_subset_name,
get_representations
@ -13,7 +13,7 @@ from ayon_core.client.entities import (
class CollectFramesFixDef(
pyblish.api.InstancePlugin,
OpenPypePyblishPluginMixin
AYONPyblishPluginMixin
):
"""Provides text field to insert frame(s) to be rerendered.

View file

@ -1465,7 +1465,7 @@ class PublishPluginAttrsWidget(QtWidgets.QWidget):
"""Widget showing publsish plugin attributes for selected instances.
Attributes are defined on publish plugins. Publihs plugin may define
attribute definitions but must inherit `OpenPypePyblishPluginMixin`
attribute definitions but must inherit `AYONPyblishPluginMixin`
(~/openpype/pipeline/publish). At the moment requires to implement
`get_attribute_defs` and `convert_attribute_values` class methods.