[Automated] Merged develop into main

This commit is contained in:
pypebot 2022-09-03 06:04:25 +02:00 committed by GitHub
commit e639361d12
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
219 changed files with 2337 additions and 1369 deletions

View file

@ -63,7 +63,7 @@ class OpenPypeVersion(semver.VersionInfo):
"""
staging = False
path = None
_VERSION_REGEX = re.compile(r"(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$") # noqa: E501
_VERSION_REGEX = re.compile(r"(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?") # noqa: E501
_installed_version = None
def __init__(self, *args, **kwargs):

View file

@ -1,44 +1,82 @@
# absolute_import is needed to counter the `module has no cmds error` in Maya
from __future__ import absolute_import
import warnings
import functools
import pyblish.api
def get_errored_instances_from_context(context):
instances = list()
for result in context.data["results"]:
if result["instance"] is None:
# When instance is None we are on the "context" result
continue
if result["error"]:
instances.append(result["instance"])
return instances
class ActionDeprecatedWarning(DeprecationWarning):
pass
def get_errored_plugins_from_data(context):
"""Get all failed validation plugins
Args:
context (object):
Returns:
list of plugins which failed during validation
def deprecated(new_destination):
"""Mark functions as deprecated.
It will result in a warning being emitted when the function is used.
"""
plugins = list()
results = context.data.get("results", [])
for result in results:
if result["success"] is True:
continue
plugins.append(result["plugin"])
func = None
if callable(new_destination):
func = new_destination
new_destination = None
return plugins
def _decorator(decorated_func):
if new_destination is None:
warning_message = (
" Please check content of deprecated function to figure out"
" possible replacement."
)
else:
warning_message = " Please replace your usage with '{}'.".format(
new_destination
)
@functools.wraps(decorated_func)
def wrapper(*args, **kwargs):
warnings.simplefilter("always", ActionDeprecatedWarning)
warnings.warn(
(
"Call to deprecated function '{}'"
"\nFunction was moved or removed.{}"
).format(decorated_func.__name__, warning_message),
category=ActionDeprecatedWarning,
stacklevel=4
)
return decorated_func(*args, **kwargs)
return wrapper
if func is None:
return _decorator
return _decorator(func)
@deprecated("openpype.pipeline.publish.get_errored_instances_from_context")
def get_errored_instances_from_context(context):
"""
Deprecated:
Since 3.14.* will be removed in 3.16.* or later.
"""
from openpype.pipeline.publish import get_errored_instances_from_context
return get_errored_instances_from_context(context)
@deprecated("openpype.pipeline.publish.get_errored_plugins_from_context")
def get_errored_plugins_from_data(context):
"""
Deprecated:
Since 3.14.* will be removed in 3.16.* or later.
"""
from openpype.pipeline.publish import get_errored_plugins_from_context
return get_errored_plugins_from_context(context)
# 'RepairAction' and 'RepairContextAction' were moved to
# 'openpype.pipeline.publish' please change you imports.
# There is no "reasonable" way hot mark these classes as deprecated to show
# warning of wrong import.
# Deprecated since 3.14.* will be removed in 3.16.*
class RepairAction(pyblish.api.Action):
"""Repairs the action
@ -65,6 +103,7 @@ class RepairAction(pyblish.api.Action):
plugin.repair(instance)
# Deprecated since 3.14.* will be removed in 3.16.*
class RepairContextAction(pyblish.api.Action):
"""Repairs the action

View file

@ -49,7 +49,6 @@ from .plugin import (
ValidateContentsOrder,
ValidateSceneOrder,
ValidateMeshOrder,
ValidationException
)
# temporary fix, might
@ -94,8 +93,6 @@ __all__ = [
"RepairAction",
"RepairContextAction",
"ValidationException",
# get contextual data
"version_up",
"get_asset",

View file

@ -45,6 +45,11 @@ from .entities import (
get_workfile_info,
)
from .operations import (
create_project,
)
__all__ = (
"OpenPypeMongoConnection",
@ -88,4 +93,6 @@ __all__ = (
"get_thumbnail_id_from_source",
"get_workfile_info",
"create_project",
)

View file

@ -58,7 +58,7 @@ def get_projects(active=True, inactive=False, fields=None):
yield project_doc
def get_project(project_name, active=True, inactive=False, fields=None):
def get_project(project_name, active=True, inactive=True, fields=None):
# Skip if both are disabled
if not active and not inactive:
return None

View file

@ -9,6 +9,7 @@ from bson.objectid import ObjectId
from pymongo import DeleteOne, InsertOne, UpdateOne
from .mongo import get_project_connection
from .entities import get_project
REMOVED_VALUE = object()
@ -662,3 +663,89 @@ class OperationsSession(object):
operation = DeleteOperation(project_name, entity_type, entity_id)
self.add(operation)
return operation
def create_project(project_name, project_code, library_project=False):
"""Create project using OpenPype settings.
This project creation function is not validating project document on
creation. It is because project document is created blindly with only
minimum required information about project which is it's name, code, type
and schema.
Entered project name must be unique and project must not exist yet.
Note:
This function is here to be OP v4 ready but in v3 has more logic
to do. That's why inner imports are in the body.
Args:
project_name(str): New project name. Should be unique.
project_code(str): Project's code should be unique too.
library_project(bool): Project is library project.
Raises:
ValueError: When project name already exists in MongoDB.
Returns:
dict: Created project document.
"""
from openpype.settings import ProjectSettings, SaveWarningExc
from openpype.pipeline.schema import validate
if get_project(project_name, fields=["name"]):
raise ValueError("Project with name \"{}\" already exists".format(
project_name
))
if not PROJECT_NAME_REGEX.match(project_name):
raise ValueError((
"Project name \"{}\" contain invalid characters"
).format(project_name))
project_doc = {
"type": "project",
"name": project_name,
"data": {
"code": project_code,
"library_project": library_project
},
"schema": CURRENT_PROJECT_SCHEMA
}
op_session = OperationsSession()
# Insert document with basic data
create_op = op_session.create_entity(
project_name, project_doc["type"], project_doc
)
op_session.commit()
# Load ProjectSettings for the project and save it to store all attributes
# and Anatomy
try:
project_settings_entity = ProjectSettings(project_name)
project_settings_entity.save()
except SaveWarningExc as exc:
print(str(exc))
except Exception:
op_session.delete_entity(
project_name, project_doc["type"], create_op.entity_id
)
op_session.commit()
raise
project_doc = get_project(project_name)
try:
# Validate created project document
validate(project_doc)
except Exception:
# Remove project if is not valid
op_session.delete_entity(
project_name, project_doc["type"], create_op.entity_id
)
op_session.commit()
raise
return project_doc

View file

@ -2,14 +2,18 @@ import os
import sys
import six
import openpype.api
from openpype.lib import (
get_ffmpeg_tool_path,
run_subprocess,
)
from openpype.pipeline import publish
from openpype.hosts.aftereffects.api import get_stub
class ExtractLocalRender(openpype.api.Extractor):
class ExtractLocalRender(publish.Extractor):
"""Render RenderQueue locally."""
order = openpype.api.Extractor.order - 0.47
order = publish.Extractor.order - 0.47
label = "Extract Local Render"
hosts = ["aftereffects"]
families = ["renderLocal", "render.local"]
@ -53,7 +57,7 @@ class ExtractLocalRender(openpype.api.Extractor):
instance.data["representations"] = [repre_data]
ffmpeg_path = openpype.lib.get_ffmpeg_tool_path("ffmpeg")
ffmpeg_path = get_ffmpeg_tool_path("ffmpeg")
# Generate thumbnail.
thumbnail_path = os.path.join(staging_dir, "thumbnail.jpg")
@ -66,7 +70,7 @@ class ExtractLocalRender(openpype.api.Extractor):
]
self.log.debug("Thumbnail args:: {}".format(args))
try:
output = openpype.lib.run_subprocess(args)
output = run_subprocess(args)
except TypeError:
self.log.warning("Error in creating thumbnail")
six.reraise(*sys.exc_info())

View file

@ -1,13 +1,13 @@
import pyblish.api
import openpype.api
from openpype.pipeline import publish
from openpype.hosts.aftereffects.api import get_stub
class ExtractSaveScene(pyblish.api.ContextPlugin):
"""Save scene before extraction."""
order = openpype.api.Extractor.order - 0.48
order = publish.Extractor.order - 0.48
label = "Extract Save Scene"
hosts = ["aftereffects"]

View file

@ -1,6 +1,6 @@
import pyblish.api
from openpype.action import get_errored_plugins_from_data
from openpype.lib import version_up
from openpype.pipeline.publish import get_errored_plugins_from_context
from openpype.hosts.aftereffects.api import get_stub
@ -18,7 +18,7 @@ class IncrementWorkfile(pyblish.api.InstancePlugin):
optional = True
def process(self, instance):
errored_plugins = get_errored_plugins_from_data(instance.context)
errored_plugins = get_errored_plugins_from_context(instance.context)
if errored_plugins:
raise RuntimeError(
"Skipping incrementing current file because publishing failed."

View file

@ -1,8 +1,8 @@
import openpype.api
from openpype.pipeline import publish
from openpype.hosts.aftereffects.api import get_stub
class RemovePublishHighlight(openpype.api.Extractor):
class RemovePublishHighlight(publish.Extractor):
"""Clean utf characters which are not working in DL
Published compositions are marked with unicode icon which causes
@ -10,7 +10,7 @@ class RemovePublishHighlight(openpype.api.Extractor):
rendering, add it later back to avoid confusion.
"""
order = openpype.api.Extractor.order - 0.49 # just before save
order = publish.Extractor.order - 0.49 # just before save
label = "Clean render comp"
hosts = ["aftereffects"]
families = ["render.farm"]

View file

@ -1,9 +1,9 @@
import pyblish.api
import openpype.api
from openpype.pipeline import (
from openpype.pipeline import legacy_io
from openpype.pipeline.publish import (
ValidateContentsOrder,
PublishXmlValidationError,
legacy_io,
)
from openpype.hosts.aftereffects.api import get_stub
@ -50,7 +50,7 @@ class ValidateInstanceAsset(pyblish.api.InstancePlugin):
label = "Validate Instance Asset"
hosts = ["aftereffects"]
actions = [ValidateInstanceAssetRepair]
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
def process(self, instance):
instance_asset = instance.data["asset"]

View file

@ -2,7 +2,7 @@ import bpy
import pyblish.api
from openpype.api import get_errored_instances_from_context
from openpype.pipeline.publish import get_errored_instances_from_context
class SelectInvalidAction(pyblish.api.Action):

View file

@ -5,6 +5,7 @@ import bpy
import pyblish.api
import openpype.api
import openpype.hosts.blender.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateCameraZeroKeyframe(pyblish.api.InstancePlugin):
@ -15,7 +16,7 @@ class ValidateCameraZeroKeyframe(pyblish.api.InstancePlugin):
in Unreal and Blender.
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["blender"]
families = ["camera"]
version = (0, 1, 0)

View file

@ -5,6 +5,7 @@ import bpy
import pyblish.api
import openpype.api
import openpype.hosts.blender.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateNoColonsInName(pyblish.api.InstancePlugin):
@ -15,7 +16,7 @@ class ValidateNoColonsInName(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["blender"]
families = ["model", "rig"]
version = (0, 1, 0)

View file

@ -6,6 +6,7 @@ import bpy
import pyblish.api
import openpype.api
import openpype.hosts.blender.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateTransformZero(pyblish.api.InstancePlugin):
@ -17,7 +18,7 @@ class ValidateTransformZero(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["blender"]
families = ["model"]
version = (0, 1, 0)

View file

@ -17,9 +17,9 @@ class FusionIncrementCurrentFile(pyblish.api.ContextPlugin):
def process(self, context):
from openpype.lib import version_up
from openpype.action import get_errored_plugins_from_data
from openpype.pipeline.publish import get_errored_plugins_from_context
errored_plugins = get_errored_plugins_from_data(context)
errored_plugins = get_errored_plugins_from_context(context)
if any(plugin.__name__ == "FusionSubmitDeadline"
for plugin in errored_plugins):
raise RuntimeError("Skipping incrementing current file because "

View file

@ -1,6 +1,6 @@
import pyblish.api
from openpype import action
from openpype.pipeline.publish import RepairAction
class ValidateBackgroundDepth(pyblish.api.InstancePlugin):
@ -8,7 +8,7 @@ class ValidateBackgroundDepth(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder
label = "Validate Background Depth 32 bit"
actions = [action.RepairAction]
actions = [RepairAction]
hosts = ["fusion"]
families = ["render"]
optional = True

View file

@ -1,6 +1,6 @@
import pyblish.api
from openpype import action
from openpype.pipeline.publish import RepairAction
class ValidateCreateFolderChecked(pyblish.api.InstancePlugin):
@ -11,7 +11,7 @@ class ValidateCreateFolderChecked(pyblish.api.InstancePlugin):
"""
order = pyblish.api.ValidatorOrder
actions = [action.RepairAction]
actions = [RepairAction]
label = "Validate Create Folder Checked"
families = ["render"]
hosts = ["fusion"]

View file

@ -1,7 +1,7 @@
import os
import pyblish.api
from openpype.action import get_errored_plugins_from_data
from openpype.pipeline.publish import get_errored_plugins_from_context
from openpype.lib import version_up
import openpype.hosts.harmony.api as harmony
@ -19,7 +19,7 @@ class IncrementWorkfile(pyblish.api.InstancePlugin):
optional = True
def process(self, instance):
errored_plugins = get_errored_plugins_from_data(instance.context)
errored_plugins = get_errored_plugins_from_context(instance.context)
if errored_plugins:
raise RuntimeError(
"Skipping incrementing current file because publishing failed."

View file

@ -1,9 +1,12 @@
import os
import pyblish.api
import openpype.api
from openpype.pipeline import PublishXmlValidationError
import openpype.hosts.harmony.api as harmony
from openpype.pipeline.publish import (
ValidateContentsOrder,
PublishXmlValidationError,
)
class ValidateInstanceRepair(pyblish.api.Action):
@ -37,7 +40,7 @@ class ValidateInstance(pyblish.api.InstancePlugin):
label = "Validate Instance"
hosts = ["harmony"]
actions = [ValidateInstanceRepair]
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
def process(self, instance):
instance_asset = instance.data["asset"]

View file

@ -1,8 +1,8 @@
import pyblish.api
from openpype.api import version_up
from openpype.action import get_errored_plugins_from_data
from openpype.lib import version_up
from openpype.pipeline import registered_host
from openpype.pipeline.publish import get_errored_plugins_from_context
class IncrementCurrentFile(pyblish.api.InstancePlugin):
@ -30,7 +30,7 @@ class IncrementCurrentFile(pyblish.api.InstancePlugin):
context.data[key] = True
context = instance.context
errored_plugins = get_errored_plugins_from_data(context)
errored_plugins = get_errored_plugins_from_context(context)
if any(
plugin.__name__ == "HoudiniSubmitPublishDeadline"
for plugin in errored_plugins

View file

@ -1,8 +1,8 @@
import pyblish.api
import hou
from openpype.api import version_up
from openpype.action import get_errored_plugins_from_data
from openpype.lib import version_up
from openpype.pipeline.publish import get_errored_plugins_from_context
class IncrementCurrentFileDeadline(pyblish.api.ContextPlugin):
@ -19,7 +19,7 @@ class IncrementCurrentFileDeadline(pyblish.api.ContextPlugin):
def process(self, context):
errored_plugins = get_errored_plugins_from_data(context)
errored_plugins = get_errored_plugins_from_context(context)
if any(
plugin.__name__ == "HoudiniSubmitPublishDeadline"
for plugin in errored_plugins

View file

@ -1,5 +1,5 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateVDBInputNode(pyblish.api.InstancePlugin):
@ -16,7 +16,7 @@ class ValidateVDBInputNode(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["vdbcache"]
hosts = ["houdini"]
label = "Validate Input Node (VDB)"

View file

@ -1,8 +1,9 @@
import pyblish.api
import openpype.api
from collections import defaultdict
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateAbcPrimitiveToDetail(pyblish.api.InstancePlugin):
"""Validate Alembic ROP Primitive to Detail attribute is consistent.
@ -15,7 +16,7 @@ class ValidateAbcPrimitiveToDetail(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["pointcache"]
hosts = ["houdini"]
label = "Validate Primitive to Detail (Abc)"

View file

@ -1,5 +1,6 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateAlembicROPFaceSets(pyblish.api.InstancePlugin):
@ -17,7 +18,7 @@ class ValidateAlembicROPFaceSets(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["pointcache"]
hosts = ["houdini"]
label = "Validate Alembic ROP Face Sets"

View file

@ -1,5 +1,6 @@
import pyblish.api
import colorbleed.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateAlembicInputNode(pyblish.api.InstancePlugin):
@ -11,7 +12,7 @@ class ValidateAlembicInputNode(pyblish.api.InstancePlugin):
"""
order = colorbleed.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["pointcache"]
hosts = ["houdini"]
label = "Validate Input Node (Abc)"

View file

@ -1,5 +1,5 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateBypassed(pyblish.api.InstancePlugin):
@ -11,7 +11,7 @@ class ValidateBypassed(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder - 0.1
order = ValidateContentsOrder - 0.1
families = ["*"]
hosts = ["houdini"]
label = "Validate ROP Bypass"

View file

@ -1,11 +1,11 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateCameraROP(pyblish.api.InstancePlugin):
"""Validate Camera ROP settings."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ["camera"]
hosts = ["houdini"]
label = "Camera ROP"

View file

@ -1,11 +1,11 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateIntermediateDirectoriesChecked(pyblish.api.InstancePlugin):
"""Validate Create Intermediate Directories is enabled on ROP node."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ["pointcache", "camera", "vdbcache"]
hosts = ["houdini"]
label = "Create Intermediate Directories Checked"

View file

@ -1,6 +1,6 @@
import pyblish.api
import openpype.api
import hou
from openpype.pipeline.publish import ValidateContentsOrder
def cook_in_range(node, start, end):
@ -28,7 +28,7 @@ def get_errors(node):
class ValidateNoErrors(pyblish.api.InstancePlugin):
"""Validate the Instance has no current cooking errors."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["houdini"]
label = "Validate no errors"

View file

@ -1,5 +1,5 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidatePrimitiveHierarchyPaths(pyblish.api.InstancePlugin):
@ -11,7 +11,7 @@ class ValidatePrimitiveHierarchyPaths(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["pointcache"]
hosts = ["houdini"]
label = "Validate Prims Hierarchy Path"

View file

@ -1,7 +1,7 @@
import pyblish.api
import openpype.api
from openpype.hosts.houdini.api import lib
from openpype.pipeline.publish import RepairContextAction
import hou
@ -14,7 +14,7 @@ class ValidateRemotePublishOutNode(pyblish.api.ContextPlugin):
hosts = ["houdini"]
targets = ["deadline"]
label = "Remote Publish ROP node"
actions = [openpype.api.RepairContextAction]
actions = [RepairContextAction]
def process(self, context):

View file

@ -1,7 +1,7 @@
import pyblish.api
import openpype.api
import hou
from openpype.pipeline.publish import RepairContextAction
class ValidateRemotePublishEnabled(pyblish.api.ContextPlugin):
@ -12,7 +12,7 @@ class ValidateRemotePublishEnabled(pyblish.api.ContextPlugin):
hosts = ["houdini"]
targets = ["deadline"]
label = "Remote Publish ROP enabled"
actions = [openpype.api.RepairContextAction]
actions = [RepairContextAction]
def process(self, context):

View file

@ -3,14 +3,14 @@ import re
import pyblish.api
from openpype.client import get_subset_by_name
import openpype.api
from openpype.pipeline import legacy_io
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateUSDShadeModelExists(pyblish.api.InstancePlugin):
"""Validate the Instance has no current cooking errors."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["houdini"]
families = ["usdShade"]
label = "USD Shade model exists"

View file

@ -1,5 +1,5 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
import hou
@ -12,7 +12,7 @@ class ValidateUsdShadeWorkspace(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["houdini"]
families = ["usdShade"]
label = "USD Shade Workspace"

View file

@ -1,5 +1,5 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateVDBInputNode(pyblish.api.InstancePlugin):
@ -16,7 +16,7 @@ class ValidateVDBInputNode(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["vdbcache"]
hosts = ["houdini"]
label = "Validate Input Node (VDB)"

View file

@ -1,6 +1,6 @@
import pyblish.api
import openpype.api
import hou
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateVDBOutputNode(pyblish.api.InstancePlugin):
@ -17,7 +17,7 @@ class ValidateVDBOutputNode(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.1
order = ValidateContentsOrder + 0.1
families = ["vdbcache"]
hosts = ["houdini"]
label = "Validate Output Node (VDB)"

View file

@ -5,7 +5,7 @@ import pyblish.api
from openpype.client import get_asset_by_name
from openpype.pipeline import legacy_io
from openpype.api import get_errored_instances_from_context
from openpype.pipeline.publish import get_errored_instances_from_context
class GenerateUUIDsOnInvalidAction(pyblish.api.Action):

View file

@ -104,13 +104,6 @@ def install():
cmds.menuItem(divider=True)
cmds.menuItem(
"Set Render Settings",
command=lambda *args: lib_rendersettings.RenderSettings().set_default_renderer_settings() # noqa
)
cmds.menuItem(divider=True)
cmds.menuItem(
"Work Files...",
command=lambda *args: host_tools.show_workfiles(
@ -132,6 +125,12 @@ def install():
"Set Colorspace",
command=lambda *args: lib.set_colorspace(),
)
cmds.menuItem(
"Set Render Settings",
command=lambda *args: lib_rendersettings.RenderSettings().set_default_renderer_settings() # noqa
)
cmds.menuItem(divider=True, parent=MENU_NAME)
cmds.menuItem(
"Build First Workfile",

View file

@ -349,21 +349,13 @@ def containerise(name,
("id", AVALON_CONTAINER_ID),
("name", name),
("namespace", namespace),
("loader", str(loader)),
("loader", loader),
("representation", context["representation"]["_id"]),
]
for key, value in data:
if not value:
continue
if isinstance(value, (int, float)):
cmds.addAttr(container, longName=key, attributeType="short")
cmds.setAttr(container + "." + key, value)
else:
cmds.addAttr(container, longName=key, dataType="string")
cmds.setAttr(container + "." + key, value, type="string")
cmds.addAttr(container, longName=key, dataType="string")
cmds.setAttr(container + "." + key, str(value), type="string")
main_container = cmds.ls(AVALON_CONTAINERS, type="objectSet")
if not main_container:

View file

@ -0,0 +1,46 @@
from maya import cmds
from openpype.pipeline import InventoryAction, registered_host
from openpype.hosts.maya.api.lib import get_container_members
class SelectInScene(InventoryAction):
"""Select nodes in the scene from selected containers in scene inventory"""
label = "Select in scene"
icon = "search"
color = "#888888"
order = 99
def process(self, containers):
all_members = []
for container in containers:
members = get_container_members(container)
all_members.extend(members)
cmds.select(all_members, replace=True, noExpand=True)
class HighlightBySceneSelection(InventoryAction):
"""Select containers in scene inventory from the current scene selection"""
label = "Highlight by scene selection"
icon = "search"
color = "#888888"
order = 100
def process(self, containers):
selection = set(cmds.ls(selection=True, long=True, objectsOnly=True))
host = registered_host()
to_select = []
for container in host.get_containers():
members = get_container_members(container)
if any(member in selection for member in members):
to_select.append(container["objectName"])
return {
"objectNames": to_select,
"options": {"clear": True}
}

View file

@ -16,12 +16,11 @@ class IncrementCurrentFileDeadline(pyblish.api.ContextPlugin):
def process(self, context):
import os
from maya import cmds
from openpype.lib import version_up
from openpype.action import get_errored_plugins_from_data
from openpype.pipeline.publish import get_errored_plugins_from_context
errored_plugins = get_errored_plugins_from_data(context)
errored_plugins = get_errored_plugins_from_context(context)
if any(plugin.__name__ == "MayaSubmitDeadline"
for plugin in errored_plugins):
raise RuntimeError("Skipping incrementing current file because "

View file

@ -1,6 +1,7 @@
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateAnimationContent(pyblish.api.InstancePlugin):
@ -11,7 +12,7 @@ class ValidateAnimationContent(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["maya"]
families = ["animation"]
label = "Animation Content"

View file

@ -4,6 +4,10 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateOutRelatedNodeIds(pyblish.api.InstancePlugin):
@ -16,13 +20,13 @@ class ValidateOutRelatedNodeIds(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['animation', "pointcache"]
hosts = ['maya']
label = 'Animation Out Set Related Node Ids'
actions = [
openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction
RepairAction
]
def process(self, instance):

View file

@ -4,18 +4,20 @@ import types
import maya.cmds as cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateAssRelativePaths(pyblish.api.InstancePlugin):
"""Ensure exporting ass file has set relative texture paths"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['ass']
label = "ASS has relative texture paths"
actions = [openpype.api.RepairAction]
actions = [RepairAction]
def process(self, instance):
# we cannot ask this until user open render settings as

View file

@ -4,6 +4,7 @@ import openpype.api
from maya import cmds
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import RepairAction
class ValidateAssemblyModelTransforms(pyblish.api.InstancePlugin):
@ -29,7 +30,7 @@ class ValidateAssemblyModelTransforms(pyblish.api.InstancePlugin):
label = "Assembly Model Transforms"
families = ["assembly"]
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
prompt_message = ("You are about to reset the matrix to the default values."
" This can alter the look of your scene. "

View file

@ -1,7 +1,10 @@
import pymel.core as pm
import pyblish.api
import openpype.api
from openpype.pipeline.publish import (
RepairContextAction,
ValidateContentsOrder,
)
class ValidateAttributes(pyblish.api.ContextPlugin):
@ -16,10 +19,10 @@ class ValidateAttributes(pyblish.api.ContextPlugin):
}
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "Attributes"
hosts = ["maya"]
actions = [openpype.api.RepairContextAction]
actions = [RepairContextAction]
optional = True
attributes = None

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateCameraAttributes(pyblish.api.InstancePlugin):
@ -14,7 +15,7 @@ class ValidateCameraAttributes(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['camera']
hosts = ['maya']
label = 'Camera Attributes'

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateCameraContents(pyblish.api.InstancePlugin):
@ -15,7 +16,7 @@ class ValidateCameraContents(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['camera']
hosts = ['maya']
label = 'Camera Contents'

View file

@ -3,6 +3,10 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
class ValidateColorSets(pyblish.api.Validator):
@ -13,13 +17,13 @@ class ValidateColorSets(pyblish.api.Validator):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
category = 'geometry'
label = 'Mesh ColorSets'
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
optional = True
@staticmethod

View file

@ -1,7 +1,7 @@
import pyblish.api
from maya import cmds
from openpype.plugin import contextplugin_should_run
from openpype.pipeline.publish import context_plugin_should_run
class ValidateCurrentRenderLayerIsRenderable(pyblish.api.ContextPlugin):
@ -24,7 +24,7 @@ class ValidateCurrentRenderLayerIsRenderable(pyblish.api.ContextPlugin):
def process(self, context):
# Workaround bug pyblish-base#250
if not contextplugin_should_run(self, context):
if not context_plugin_should_run(self, context):
return
layer = cmds.editRenderLayerGlobals(query=True, currentRenderLayer=True)

View file

@ -5,12 +5,13 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api.lib import maintained_selection
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateCycleError(pyblish.api.InstancePlugin):
"""Validate nodes produce no cycle errors."""
order = openpype.api.ValidateContentsOrder + 0.05
order = ValidateContentsOrder + 0.05
label = "Cycle Errors"
hosts = ["maya"]
families = ["rig"]

View file

@ -1,7 +1,10 @@
import pyblish.api
import openpype.api
from maya import cmds
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateFrameRange(pyblish.api.InstancePlugin):
@ -18,7 +21,7 @@ class ValidateFrameRange(pyblish.api.InstancePlugin):
"""
label = "Validate Frame Range"
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ["animation",
"pointcache",
"camera",
@ -26,7 +29,7 @@ class ValidateFrameRange(pyblish.api.InstancePlugin):
"review",
"yeticache"]
optional = True
actions = [openpype.api.RepairAction]
actions = [RepairAction]
exclude_families = []
def process(self, instance):

View file

@ -1,12 +1,13 @@
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateInstanceHasMembers(pyblish.api.InstancePlugin):
"""Validates instance objectSet has *any* members."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["maya"]
label = 'Instance has members'
actions = [openpype.hosts.maya.api.action.SelectInvalidAction]

View file

@ -3,7 +3,7 @@
from __future__ import absolute_import
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
from maya import cmds
@ -98,7 +98,7 @@ class ValidateInstanceInContext(pyblish.api.InstancePlugin):
Action on this validator will select invalid instances in Outliner.
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "Instance in same Context"
optional = True
hosts = ["maya"]

View file

@ -1,8 +1,8 @@
import pyblish.api
import openpype.api
import string
import six
from openpype.pipeline.publish import ValidateContentsOrder
# Allow only characters, numbers and underscore
allowed = set(string.ascii_lowercase +
@ -18,7 +18,7 @@ def validate_name(subset):
class ValidateSubsetName(pyblish.api.InstancePlugin):
"""Validates subset name has only valid characters"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ["*"]
label = "Subset Name"

View file

@ -1,7 +1,8 @@
import os
import pyblish.api
import maya.cmds as cmds
import openpype.api
import os
from openpype.pipeline.publish import RepairContextAction
class ValidateLoadedPlugin(pyblish.api.ContextPlugin):
@ -10,7 +11,7 @@ class ValidateLoadedPlugin(pyblish.api.ContextPlugin):
label = "Loaded Plugin"
order = pyblish.api.ValidatorOrder
host = ["maya"]
actions = [openpype.api.RepairContextAction]
actions = [RepairContextAction]
@classmethod
def get_invalid(cls, context):

View file

@ -1,6 +1,7 @@
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateLookContents(pyblish.api.InstancePlugin):
@ -17,7 +18,7 @@ class ValidateLookContents(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['look']
hosts = ['maya']
label = 'Look Data Contents'

View file

@ -1,7 +1,7 @@
from maya import cmds
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateLookDefaultShadersConnections(pyblish.api.InstancePlugin):
@ -16,7 +16,7 @@ class ValidateLookDefaultShadersConnections(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['look']
hosts = ['maya']
label = 'Look Default Shader Connections'

View file

@ -4,6 +4,10 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateLookIdReferenceEdits(pyblish.api.InstancePlugin):
@ -16,12 +20,12 @@ class ValidateLookIdReferenceEdits(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['look']
hosts = ['maya']
label = 'Look Id Reference Edits'
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
def process(self, instance):
invalid = self.get_invalid(instance)

View file

@ -3,6 +3,7 @@ from collections import defaultdict
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidatePipelineOrder
class ValidateUniqueRelationshipMembers(pyblish.api.InstancePlugin):
@ -20,7 +21,7 @@ class ValidateUniqueRelationshipMembers(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidatePipelineOrder
order = ValidatePipelineOrder
label = 'Look members unique'
hosts = ['maya']
families = ['look']

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateLookNoDefaultShaders(pyblish.api.InstancePlugin):
@ -23,7 +24,7 @@ class ValidateLookNoDefaultShaders(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder + 0.01
order = ValidateContentsOrder + 0.01
families = ['look']
hosts = ['maya']
label = 'Look No Default Shaders'

View file

@ -1,8 +1,8 @@
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateLookSets(pyblish.api.InstancePlugin):
@ -38,7 +38,7 @@ class ValidateLookSets(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['look']
hosts = ['maya']
label = 'Look Sets'

View file

@ -3,6 +3,10 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateShadingEngine(pyblish.api.InstancePlugin):
@ -11,12 +15,12 @@ class ValidateShadingEngine(pyblish.api.InstancePlugin):
Shading engines should be named "{surface_shader}SG"
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ["look"]
hosts = ["maya"]
label = "Look Shading Engine Naming"
actions = [
openpype.hosts.maya.api.action.SelectInvalidAction, openpype.api.RepairAction
openpype.hosts.maya.api.action.SelectInvalidAction, RepairAction
]
# The default connections to check

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateSingleShader(pyblish.api.InstancePlugin):
@ -12,7 +13,7 @@ class ValidateSingleShader(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['look']
hosts = ['maya']
label = 'Look Single Shader Per Shape'

View file

@ -1,10 +1,14 @@
import maya.cmds as cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.lib as mayalib
from openpype.pipeline.context_tools import get_current_project_asset
from math import ceil
from openpype.pipeline.publish import (
RepairContextAction,
ValidateSceneOrder,
)
def float_round(num, places=0, direction=ceil):
@ -14,10 +18,10 @@ def float_round(num, places=0, direction=ceil):
class ValidateMayaUnits(pyblish.api.ContextPlugin):
"""Check if the Maya units are set correct"""
order = openpype.api.ValidateSceneOrder
order = ValidateSceneOrder
label = "Maya Units"
hosts = ['maya']
actions = [openpype.api.RepairContextAction]
actions = [RepairContextAction]
validate_linear_units = True
linear_units = "cm"

View file

@ -4,6 +4,10 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api.lib import maintained_selection
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
class ValidateMeshArnoldAttributes(pyblish.api.InstancePlugin):
@ -13,14 +17,14 @@ class ValidateMeshArnoldAttributes(pyblish.api.InstancePlugin):
later published looks can discover non-default Arnold attributes.
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ["maya"]
families = ["model"]
category = "geometry"
label = "Mesh Arnold Attributes"
actions = [
openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction
RepairAction
]
optional = True
if cmds.getAttr(

View file

@ -5,6 +5,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateMeshOrder
def len_flattened(components):
@ -45,7 +46,7 @@ class ValidateMeshHasUVs(pyblish.api.InstancePlugin):
UVs for every face.
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
category = 'geometry'

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateMeshOrder
class ValidateMeshLaminaFaces(pyblish.api.InstancePlugin):
@ -12,7 +13,7 @@ class ValidateMeshLaminaFaces(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
category = 'geometry'

View file

@ -4,6 +4,7 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateMeshNgons(pyblish.api.Validator):
@ -16,7 +17,7 @@ class ValidateMeshNgons(pyblish.api.Validator):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["maya"]
families = ["model"]
label = "Mesh ngons"

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateMeshOrder
class ValidateMeshNoNegativeScale(pyblish.api.Validator):
@ -17,7 +18,7 @@ class ValidateMeshNoNegativeScale(pyblish.api.Validator):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
label = 'Mesh No Negative Scale'

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateMeshOrder
class ValidateMeshNonManifold(pyblish.api.Validator):
@ -13,7 +14,7 @@ class ValidateMeshNonManifold(pyblish.api.Validator):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
label = 'Mesh Non-Manifold Vertices/Edges'

View file

@ -4,6 +4,7 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import ValidateMeshOrder
class ValidateMeshNonZeroEdgeLength(pyblish.api.InstancePlugin):
@ -16,7 +17,7 @@ class ValidateMeshNonZeroEdgeLength(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
families = ['model']
hosts = ['maya']
category = 'geometry'

View file

@ -4,6 +4,10 @@ import maya.api.OpenMaya as om2
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
class ValidateMeshNormalsUnlocked(pyblish.api.Validator):
@ -14,14 +18,14 @@ class ValidateMeshNormalsUnlocked(pyblish.api.Validator):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
category = 'geometry'
version = (0, 1, 0)
label = 'Mesh Normals Unlocked'
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
optional = True
@staticmethod

View file

@ -6,6 +6,7 @@ import maya.api.OpenMaya as om
import pymel.core as pm
from six.moves import xrange
from openpype.pipeline.publish import ValidateMeshOrder
class GetOverlappingUVs(object):
@ -232,7 +233,7 @@ class ValidateMeshHasOverlappingUVs(pyblish.api.InstancePlugin):
It is optional to warn publisher about it.
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
category = 'geometry'

View file

@ -3,6 +3,10 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
def pairs(iterable):
@ -86,12 +90,12 @@ class ValidateMeshShaderConnections(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
label = "Mesh Shader Connections"
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
def process(self, instance):
"""Process all the nodes in the instance 'objectSet'"""

View file

@ -4,6 +4,10 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
class ValidateMeshSingleUVSet(pyblish.api.InstancePlugin):
@ -15,7 +19,7 @@ class ValidateMeshSingleUVSet(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model', 'pointcache']
category = 'uv'
@ -23,7 +27,7 @@ class ValidateMeshSingleUVSet(pyblish.api.InstancePlugin):
version = (0, 1, 0)
label = "Mesh Single UV Set"
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
@staticmethod
def get_invalid(instance):

View file

@ -3,6 +3,10 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
class ValidateMeshUVSetMap1(pyblish.api.InstancePlugin):
@ -15,13 +19,13 @@ class ValidateMeshUVSetMap1(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
optional = True
label = "Mesh has map1 UV Set"
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
@staticmethod
def get_invalid(instance):

View file

@ -5,6 +5,10 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateMeshOrder,
)
def len_flattened(components):
@ -57,13 +61,13 @@ class ValidateMeshVerticesHaveEdges(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateMeshOrder
order = ValidateMeshOrder
hosts = ['maya']
families = ['model']
category = 'geometry'
label = 'Mesh Vertices Have Edges'
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
@classmethod
def repair(cls, instance):

View file

@ -4,6 +4,7 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateModelContent(pyblish.api.InstancePlugin):
@ -14,7 +15,7 @@ class ValidateModelContent(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["maya"]
families = ["model"]
label = "Model Content"

View file

@ -7,6 +7,7 @@ import pyblish.api
import openpype.api
from openpype.pipeline import legacy_io
from openpype.pipeline.publish import ValidateContentsOrder
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api.shader_definition_editor import (
DEFINITION_FILENAME)
@ -23,7 +24,7 @@ class ValidateModelName(pyblish.api.InstancePlugin):
"""
optional = True
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["maya"]
families = ["model"]
label = "Model Name"

View file

@ -5,8 +5,10 @@ import appdirs
import pyblish.api
from openpype.lib import requests_get
from openpype.plugin import contextplugin_should_run
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
context_plugin_should_run,
RepairAction,
)
class ValidateMusterConnection(pyblish.api.ContextPlugin):
@ -21,12 +23,12 @@ class ValidateMusterConnection(pyblish.api.ContextPlugin):
token = None
if not os.environ.get("MUSTER_REST_URL"):
active = False
actions = [openpype.api.RepairAction]
actions = [RepairAction]
def process(self, context):
# Workaround bug pyblish-base#250
if not contextplugin_should_run(self, context):
if not context_plugin_should_run(self, context):
return
# test if we have environment set (redundant as this plugin shouldn'

View file

@ -1,15 +1,16 @@
import os
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
import os
COLOUR_SPACES = ['sRGB', 'linear', 'auto']
MIPMAP_EXTENSIONS = ['tdl']
class ValidateMvLookContents(pyblish.api.InstancePlugin):
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['mvLook']
hosts = ['maya']
label = 'Validate mvLook Data'

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateNoAnimation(pyblish.api.Validator):
@ -14,7 +15,7 @@ class ValidateNoAnimation(pyblish.api.Validator):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "No Animation"
hosts = ["maya"]
families = ["model"]

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateNoDefaultCameras(pyblish.api.InstancePlugin):
@ -13,7 +14,7 @@ class ValidateNoDefaultCameras(pyblish.api.InstancePlugin):
settings when being loaded and sometimes being skipped.
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['camera']
version = (0, 1, 0)

View file

@ -3,6 +3,11 @@ import maya.cmds as cmds
import pyblish.api
import openpype.api
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
import openpype.hosts.maya.api.action
@ -16,14 +21,14 @@ def get_namespace(node_name):
class ValidateNoNamespace(pyblish.api.InstancePlugin):
"""Ensure the nodes don't have a namespace"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['model']
category = 'cleanup'
version = (0, 1, 0)
label = 'No Namespaces'
actions = [openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction]
RepairAction]
@staticmethod
def get_invalid(instance):

View file

@ -3,6 +3,10 @@ import maya.cmds as cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
def has_shape_children(node):
@ -37,13 +41,13 @@ class ValidateNoNullTransforms(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['model']
category = 'cleanup'
version = (0, 1, 0)
label = 'No Empty/Null Transforms'
actions = [openpype.api.RepairAction,
actions = [RepairAction,
openpype.hosts.maya.api.action.SelectInvalidAction]
@staticmethod

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateNoUnknownNodes(pyblish.api.InstancePlugin):
@ -16,7 +17,7 @@ class ValidateNoUnknownNodes(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['model', 'rig']
optional = True

View file

@ -1,7 +1,7 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidatePipelineOrder
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
@ -14,7 +14,7 @@ class ValidateNodeIDs(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidatePipelineOrder
order = ValidatePipelineOrder
label = 'Instance Nodes Have ID'
hosts = ['maya']
families = ["model",

View file

@ -4,6 +4,10 @@ import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateNodeIdsDeformedShape(pyblish.api.InstancePlugin):
@ -16,13 +20,13 @@ class ValidateNodeIdsDeformedShape(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
families = ['look']
hosts = ['maya']
label = 'Deformed shape ids'
actions = [
openpype.hosts.maya.api.action.SelectInvalidAction,
openpype.api.RepairAction
RepairAction
]
def process(self, instance):

View file

@ -3,6 +3,7 @@ import pyblish.api
import openpype.api
from openpype.client import get_assets
from openpype.pipeline import legacy_io
from openpype.pipeline.publish import ValidatePipelineOrder
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
@ -18,7 +19,7 @@ class ValidateNodeIdsInDatabase(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidatePipelineOrder
order = ValidatePipelineOrder
label = 'Node Ids in Database'
hosts = ['maya']
families = ["*"]

View file

@ -1,6 +1,7 @@
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidatePipelineOrder
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
@ -10,7 +11,7 @@ class ValidateNodeIDsRelated(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidatePipelineOrder
order = ValidatePipelineOrder
label = 'Node Ids Related (ID)'
hosts = ['maya']
families = ["model",

View file

@ -2,6 +2,7 @@ from collections import defaultdict
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidatePipelineOrder
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api import lib
@ -12,7 +13,7 @@ class ValidateNodeIdsUnique(pyblish.api.InstancePlugin):
Here we ensure that what has been added to the instance is unique
"""
order = openpype.api.ValidatePipelineOrder
order = ValidatePipelineOrder
label = 'Non Duplicate Instance Members (ID)'
hosts = ['maya']
families = ["model",

View file

@ -3,6 +3,7 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateNodeNoGhosting(pyblish.api.InstancePlugin):
@ -17,7 +18,7 @@ class ValidateNodeNoGhosting(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['model', 'rig']
label = "No Ghosting"

View file

@ -1,7 +1,10 @@
from maya import cmds
import pyblish.api
import openpype.api
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
class ValidateRenderImageRule(pyblish.api.InstancePlugin):
@ -13,11 +16,11 @@ class ValidateRenderImageRule(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "Images File Rule (Workspace)"
hosts = ["maya"]
families = ["renderlayer"]
actions = [openpype.api.RepairAction]
actions = [RepairAction]
def process(self, instance):

View file

@ -3,12 +3,13 @@ from maya import cmds
import pyblish.api
import openpype.api
import openpype.hosts.maya.api.action
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateRenderNoDefaultCameras(pyblish.api.InstancePlugin):
"""Ensure no default (startup) cameras are to be rendered."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ['maya']
families = ['renderlayer']
label = "No Default Cameras Renderable"

View file

@ -6,6 +6,7 @@ from maya import cmds
import openpype.api
import openpype.hosts.maya.api.action
from openpype.hosts.maya.api.render_settings import RenderSettings
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateRenderSingleCamera(pyblish.api.InstancePlugin):
@ -15,7 +16,7 @@ class ValidateRenderSingleCamera(pyblish.api.InstancePlugin):
prefix must contain <Camera> token.
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "Render Single Camera"
hosts = ['maya']
families = ["renderlayer",

View file

@ -6,7 +6,10 @@ from collections import OrderedDict
from maya import cmds, mel
import pyblish.api
import openpype.api
from openpype.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
)
from openpype.hosts.maya.api import lib
@ -39,11 +42,11 @@ class ValidateRenderSettings(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "Render Settings"
hosts = ["maya"]
families = ["renderlayer"]
actions = [openpype.api.RepairAction]
actions = [RepairAction]
ImagePrefixes = {
'mentalray': 'defaultRenderGlobals.imageFilePrefix',

View file

@ -2,7 +2,7 @@ import os
from collections import defaultdict
import pyblish.api
import openpype.api
from openpype.pipeline.publish import ValidateContentsOrder
class ValidateResources(pyblish.api.InstancePlugin):
@ -17,7 +17,7 @@ class ValidateResources(pyblish.api.InstancePlugin):
"""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
label = "Resources Unique"
def process(self, instance):

View file

@ -1,14 +1,16 @@
# -*- coding: utf-8 -*-
import collections
import pyblish.api
import openpype.api
from openpype.pipeline import PublishXmlValidationError
from openpype.pipeline.publish import (
ValidateContentsOrder,
PublishXmlValidationError,
)
class ValidateReviewSubsetUniqueness(pyblish.api.ContextPlugin):
"""Validates that review subset has unique name."""
order = openpype.api.ValidateContentsOrder
order = ValidateContentsOrder
hosts = ["maya"]
families = ["review"]
label = "Validate Review Subset Unique"

Some files were not shown because too many files have changed in this diff Show more