From bb149c1961b725e35350ff014d1eab866620990b Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 27 May 2021 22:08:53 +0200 Subject: [PATCH] fix layer data class --- openpype/hosts/maya/api/expected_files.py | 82 +++++++++++------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/openpype/hosts/maya/api/expected_files.py b/openpype/hosts/maya/api/expected_files.py index 85afeb66d0..15e0dc598c 100644 --- a/openpype/hosts/maya/api/expected_files.py +++ b/openpype/hosts/maya/api/expected_files.py @@ -90,7 +90,7 @@ IMAGE_PREFIXES = { @attr.s -class LayerMetadata: +class LayerMetadata(object): """Data class for Render Layer metadata.""" frameStart = attr.ib() frameEnd = attr.ib() @@ -112,7 +112,6 @@ class ExpectedFiles: multipart (bool): Flag if multipart exrs are used. """ - multipart = False def __init__(self, render_instance): @@ -159,6 +158,7 @@ class ExpectedFiles: ) def _get_files(self, renderer): + # type: (AExpectedFiles) -> list files = renderer.get_files() self.multipart = renderer.multipart return files @@ -210,7 +210,7 @@ class AExpectedFiles: def get_renderer_prefix(self): """Return prefix for specific renderer. - This is for most renderers the same and can be overriden if needed. + This is for most renderers the same and can be overridden if needed. Returns: str: String with image prefix containing tokens @@ -231,6 +231,7 @@ class AExpectedFiles: return file_prefix def _get_layer_data(self): + # type: () -> LayerMetadata # ______________________________________________ # ____________________/ ____________________________________________/ # 1 - get scene name /__________________/ @@ -265,12 +266,13 @@ class AExpectedFiles: def _generate_single_file_sequence( self, layer_data, force_aov_name=None): + # type: (LayerMetadata, str) -> list expected_files = [] - for cam in layer_data["cameras"]: - file_prefix = layer_data["filePrefix"] + for cam in layer_data.cameras: + file_prefix = layer_data.filePrefix mappings = ( - (R_SUBSTITUTE_SCENE_TOKEN, layer_data["sceneName"]), - (R_SUBSTITUTE_LAYER_TOKEN, layer_data["layerName"]), + (R_SUBSTITUTE_SCENE_TOKEN, layer_data.sceneName), + (R_SUBSTITUTE_LAYER_TOKEN, layer_data.layerName), (R_SUBSTITUTE_CAMERA_TOKEN, self.sanitize_camera_name(cam)), # this is required to remove unfilled aov token, for example # in Redshift @@ -285,29 +287,30 @@ class AExpectedFiles: file_prefix = re.sub(regex, value, file_prefix) for frame in range( - int(layer_data["frameStart"]), - int(layer_data["frameEnd"]) + 1, - int(layer_data["frameStep"]), + int(layer_data.frameStart), + int(layer_data.frameEnd) + 1, + int(layer_data.frameStep), ): expected_files.append( "{}.{}.{}".format( file_prefix, - str(frame).rjust(layer_data["padding"], "0"), - layer_data["defaultExt"], + str(frame).rjust(layer_data.padding, "0"), + layer_data.defaultExt, ) ) return expected_files def _generate_aov_file_sequences(self, layer_data): + # type: (LayerMetadata) -> list expected_files = [] aov_file_list = {} - for aov in layer_data["enabledAOVs"]: - for cam in layer_data["cameras"]: - file_prefix = layer_data["filePrefix"] + for aov in layer_data.enabledAOVs: + for cam in layer_data.cameras: + file_prefix = layer_data.filePrefix mappings = ( - (R_SUBSTITUTE_SCENE_TOKEN, layer_data["sceneName"]), - (R_SUBSTITUTE_LAYER_TOKEN, layer_data["layerName"]), + (R_SUBSTITUTE_SCENE_TOKEN, layer_data.sceneName), + (R_SUBSTITUTE_LAYER_TOKEN, layer_data.layerName), (R_SUBSTITUTE_CAMERA_TOKEN, self.sanitize_camera_name(cam)), (R_SUBSTITUTE_AOV_TOKEN, aov[0]), @@ -320,14 +323,14 @@ class AExpectedFiles: aov_files = [] for frame in range( - int(layer_data["frameStart"]), - int(layer_data["frameEnd"]) + 1, - int(layer_data["frameStep"]), + int(layer_data.frameStart), + int(layer_data.frameEnd) + 1, + int(layer_data.frameStep), ): aov_files.append( "{}.{}.{}".format( file_prefix, - str(frame).rjust(layer_data["padding"], "0"), + str(frame).rjust(layer_data.padding, "0"), aov[1], ) ) @@ -335,12 +338,12 @@ class AExpectedFiles: # if we have more then one renderable camera, append # camera name to AOV to allow per camera AOVs. aov_name = aov[0] - if len(layer_data["cameras"]) > 1: + if len(layer_data.cameras) > 1: aov_name = "{}_{}".format(aov[0], self.sanitize_camera_name(cam)) aov_file_list[aov_name] = aov_files - file_prefix = layer_data["filePrefix"] + file_prefix = layer_data.filePrefix expected_files.append(aov_file_list) return expected_files @@ -358,13 +361,12 @@ class AExpectedFiles: expected_files = [] if layer_data.enabledAOVs: - expected_files = self._generate_aov_file_sequences(layer_data) + return self._generate_aov_file_sequences(layer_data) else: - expected_files = self._generate_single_file_sequence(layer_data) - - return expected_files + return self._generate_single_file_sequence(layer_data) def get_renderable_cameras(self): + # type: () -> list """Get all renderable cameras. Returns: @@ -375,12 +377,11 @@ class AExpectedFiles: cmds.listRelatives(x, ap=True)[-1] for x in cmds.ls(cameras=True) ] - renderable_cameras = [] - for cam in cam_parents: - if self.maya_is_true(cmds.getAttr("{}.renderable".format(cam))): - renderable_cameras.append(cam) - - return renderable_cameras + return [ + cam + for cam in cam_parents + if self.maya_is_true(cmds.getAttr("{}.renderable".format(cam))) + ] @staticmethod def maya_is_true(attr_val): @@ -405,18 +406,17 @@ class AExpectedFiles: return bool(attr_val) @staticmethod - def get_layer_overrides(attr): - """Get overrides for attribute on given render layer. + def get_layer_overrides(attribute): + """Get overrides for attribute on current render layer. Args: - attr (str): Maya attribute name. - layer (str): Maya render layer name. + attribute (str): Maya attribute name. Returns: Value of attribute override. """ - connections = cmds.listConnections(attr, plugs=True) + connections = cmds.listConnections(attribute, plugs=True) if connections: for connection in connections: if connection: @@ -427,18 +427,18 @@ class AExpectedFiles: ) yield cmds.getAttr(attr_name) - def get_render_attribute(self, attr): + def get_render_attribute(self, attribute): """Get attribute from render options. Args: - attr (str): name of attribute to be looked up. + attribute (str): name of attribute to be looked up. Returns: Attribute value """ return lib.get_attr_in_layer( - "defaultRenderGlobals.{}".format(attr), layer=self.layer + "defaultRenderGlobals.{}".format(attribute), layer=self.layer )