From 6442c16964e1fb14e8e8bdcd3d06844a0470f615 Mon Sep 17 00:00:00 2001 From: aardschok Date: Wed, 9 Aug 2017 12:34:28 +0200 Subject: [PATCH] improved functions, list comprehension --- ...lidate_look_default_shaders_connections.py | 17 +++++------- .../publish/validate_look_members_unique.py | 26 +++++-------------- .../publish/validate_look_node_unique_ids.py | 13 +++------- .../maya/publish/validate_no_animation.py | 14 +++++----- .../plugins/maya/publish/validate_node_ids.py | 13 ++-------- 5 files changed, 25 insertions(+), 58 deletions(-) diff --git a/colorbleed/plugins/maya/publish/validate_look_default_shaders_connections.py b/colorbleed/plugins/maya/publish/validate_look_default_shaders_connections.py index f24011d3c9..dce90dc0df 100644 --- a/colorbleed/plugins/maya/publish/validate_look_default_shaders_connections.py +++ b/colorbleed/plugins/maya/publish/validate_look_default_shaders_connections.py @@ -1,3 +1,5 @@ +from maya import cmds + import pyblish.api import colorbleed.api @@ -20,11 +22,10 @@ class ValidateLookDefaultShadersConnections(pyblish.api.InstancePlugin): label = 'Look Default Shader Connections' # The default connections to check - DEFAULTS = [ - ("initialShadingGroup.surfaceShader", "lambert1"), - ("initialParticleSE.surfaceShader", "lambert1"), - ("initialParticleSE.volumeShader", "particleCloud1") - ] + DEFAULTS = [("initialShadingGroup.surfaceShader", "lambert1"), + ("initialParticleSE.surfaceShader", "lambert1"), + ("initialParticleSE.volumeShader", "particleCloud1") + ] def process(self, instance): @@ -33,19 +34,15 @@ class ValidateLookDefaultShadersConnections(pyblish.api.InstancePlugin): # the family is not present in an instance. key = "__validate_look_default_shaders_connections_checked" context = instance.context - is_run = context.data.get(key, - False) + is_run = context.data.get(key, False) if is_run: return else: context.data[key] = True # Process as usual - from maya import cmds - invalid = list() for plug, input_node in self.DEFAULTS: - inputs = cmds.listConnections(plug, source=True, destination=False) or None diff --git a/colorbleed/plugins/maya/publish/validate_look_members_unique.py b/colorbleed/plugins/maya/publish/validate_look_members_unique.py index 6d85ce5339..41ffed93c2 100644 --- a/colorbleed/plugins/maya/publish/validate_look_members_unique.py +++ b/colorbleed/plugins/maya/publish/validate_look_members_unique.py @@ -4,15 +4,7 @@ from maya import cmds import pyblish.api import colorbleed.api - - -def get_unique_id(node): - attr = 'cbId' - unique_id = None - has_attribute = cmds.attributeQuery(attr, node=node, exists=True) - if has_attribute: - unique_id = cmds.getAttr("{}.{}".format(node, attr)) - return unique_id +import colorbleed.maya.lib as lib class ValidateNonDuplicateRelationshipMembers(pyblish.api.InstancePlugin): @@ -43,26 +35,22 @@ class ValidateNonDuplicateRelationshipMembers(pyblish.api.InstancePlugin): # Get all members from the sets members = [] relationships = instance.data["lookData"]["relationships"] - for sg in relationships: - sg_members = [member['name'] for member in sg['members']] - members.extend(sg_members) + for relationship in relationships: + members.extend([i['name'] for i in relationship['members']]) # Ensure we don't have components but the objects - members = cmds.ls(members, objectsOnly=True, long=True) - members = list(set(members)) + members = set(cmds.ls(members, objectsOnly=True, long=True)) + members = list(members) # Group members per id id_nodes = defaultdict(set) for node in members: - node_id = get_unique_id(node) + node_id = lib.get_id(node) if not node_id: continue id_nodes[node_id].add(node) - invalid = list() - for nodes in id_nodes.itervalues(): - if len(nodes) > 1: - invalid.extend(nodes) + invalid = [n for n in id_nodes.itervalues() if len(n) > 1] return invalid diff --git a/colorbleed/plugins/maya/publish/validate_look_node_unique_ids.py b/colorbleed/plugins/maya/publish/validate_look_node_unique_ids.py index 251ecbf24f..d4fd034710 100644 --- a/colorbleed/plugins/maya/publish/validate_look_node_unique_ids.py +++ b/colorbleed/plugins/maya/publish/validate_look_node_unique_ids.py @@ -1,9 +1,8 @@ from collections import defaultdict -import maya.cmds as cmds - import pyblish.api import colorbleed.api +import colorbleed.maya.lib as lib class ValidateLookNodeUniqueIds(pyblish.api.InstancePlugin): @@ -25,19 +24,13 @@ class ValidateLookNodeUniqueIds(pyblish.api.InstancePlugin): # Ensure all nodes have a cbId id_sets = defaultdict(list) - invalid = list() for node in nodes: - unique_id = None - if cmds.attributeQuery("cbId", node=node, exists=True): - unique_id = cmds.getAttr("{}.cbId".format(node)) + unique_id = lib.get_id(node) if not unique_id: continue - id_sets[unique_id].append(node) - for unique_id, nodes in id_sets.iteritems(): - if len(nodes) > 1: - invalid.extend(nodes) + invalid = [n for n in id_sets.itervalues() if len(n) > 1] return invalid diff --git a/colorbleed/plugins/maya/publish/validate_no_animation.py b/colorbleed/plugins/maya/publish/validate_no_animation.py index 6c57183d31..8b0da47d89 100644 --- a/colorbleed/plugins/maya/publish/validate_no_animation.py +++ b/colorbleed/plugins/maya/publish/validate_no_animation.py @@ -20,11 +20,16 @@ class ValidateNoAnimation(pyblish.api.Validator): optional = True actions = [colorbleed.api.SelectInvalidAction] + def process(self, instance): + + invalid = self.get_invalid(instance) + if invalid: + raise RuntimeError("Keyframes found: {0}".format(invalid)) + @staticmethod def get_invalid(instance): nodes = instance[:] - if not nodes: return [] @@ -33,10 +38,3 @@ class ValidateNoAnimation(pyblish.api.Validator): return list(set(cmds.listConnections(curves))) return [] - - def process(self, instance): - - invalid = self.get_invalid(instance) - - if invalid: - raise RuntimeError("Keyframes found: {0}".format(invalid)) diff --git a/colorbleed/plugins/maya/publish/validate_node_ids.py b/colorbleed/plugins/maya/publish/validate_node_ids.py index b3a1644e93..2a9d9ea25f 100644 --- a/colorbleed/plugins/maya/publish/validate_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_node_ids.py @@ -34,20 +34,11 @@ class ValidateNodeIDs(pyblish.api.InstancePlugin): def get_invalid(cls, instance): """Return the member nodes that are invalid""" - invalid = list() - # We do want to check the referenced nodes as it might be # part of the end product nodes = lib.filter_out_nodes(set(instance[:]), defaults=True) - for node in nodes: - if not lib.get_id(node): - - # check if siblings have IDs - valid_hierarchy = cls.validate_children(node) - if valid_hierarchy: - continue - - invalid.append(node) + invalid = [n for n in nodes if not lib.get_id(n) + and not cls.validate_children(n)] return invalid