diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/azure-pipelines.yml b/azure-pipelines.yml old mode 100644 new mode 100755 diff --git a/classic_startup/Python/Startup/__init__.py b/classic_startup/Python/Startup/__init__.py old mode 100644 new mode 100755 diff --git a/classic_startup/Python/__init__.py b/classic_startup/Python/__init__.py old mode 100644 new mode 100755 diff --git a/classic_startup/__init__.py b/classic_startup/__init__.py old mode 100644 new mode 100755 diff --git a/classic_startup/init.py b/classic_startup/init.py old mode 100644 new mode 100755 diff --git a/classic_startup/menu.py b/classic_startup/menu.py old mode 100644 new mode 100755 diff --git a/classic_startup/sgtk_startup.py b/classic_startup/sgtk_startup.py old mode 100644 new mode 100755 diff --git a/engine.py b/engine.py old mode 100644 new mode 100755 index ba3f75d..e8282d5 --- a/engine.py +++ b/engine.py @@ -172,18 +172,29 @@ def pre_app_init(self): if nuke_version[0] < 7: self.logger.error(msg) return - elif nuke_version[0] == 7 and nuke_version[1] == 0 and nuke_version[2] < 10: + elif ( + nuke_version[0] == 7 + and nuke_version[1] == 0 + and nuke_version[2] < 10 + ): self.logger.error(msg) return # Versions > 13.1 have not yet been tested so show a message to that effect. - if nuke_version[0] > 13 or (nuke_version[0] == 13 and nuke_version[1] > 1): + if nuke_version[0] > 13 or ( + nuke_version[0] == 13 and nuke_version[1] > 2 + ): # This is an untested version of Nuke. msg = ( "The SG Pipeline Toolkit has not yet been fully tested with Nuke %d.%dv%d. " "You can continue to use the Toolkit but you may experience bugs or " "instability. Please report any issues to our support team via %s" - % (nuke_version[0], nuke_version[1], nuke_version[2], sgtk.support_url) + % ( + nuke_version[0], + nuke_version[1], + nuke_version[2], + sgtk.support_url, + ) ) # Show nuke message if in UI mode, this is the first time the engine has been started @@ -206,7 +217,9 @@ def pre_app_init(self): self.logger.error("The Nuke Engine does not work with Nuke PLE!") return elif nuke.env.get("nc"): - self.logger.error("The Nuke Engine does not work with Nuke Non-Commercial!") + self.logger.error( + "The Nuke Engine does not work with Nuke Non-Commercial!" + ) return # Now check that we are at least in a project context. Note that plugin mode @@ -289,28 +302,37 @@ def post_app_init_studio(self, menu_name="ShotGrid"): from hiero.core import env as hiero_env # Create the menu! - self._menu_generator = tk_nuke.NukeStudioMenuGenerator(self, menu_name) + self._menu_generator = tk_nuke.NukeStudioMenuGenerator( + self, menu_name + ) self._menu_generator.create_menu() # No context switching in plugin mode. if self.in_plugin_mode: - self._context_switcher = tk_nuke.PluginStudioContextSwitcher(self) + self._context_switcher = tk_nuke.PluginStudioContextSwitcher( + self + ) else: hiero.core.events.registerInterest( - "kAfterNewProjectCreated", self.set_project_root, + "kAfterNewProjectCreated", + self.set_project_root, ) hiero.core.events.registerInterest( - "kAfterProjectLoad", self._on_project_load_callback, + "kAfterProjectLoad", + self._on_project_load_callback, ) - self._context_switcher = tk_nuke.ClassicStudioContextSwitcher(self) + self._context_switcher = tk_nuke.ClassicStudioContextSwitcher( + self + ) # On selection change we have to check what was selected and pre-load # the context if that environment (ie: shot_step) hasn't already been # processed. This ensure that all Nuke gizmos for the target environment # will be available. hiero.core.events.registerInterest( - "kSelectionChanged", self._handle_studio_selection_change, + "kSelectionChanged", + self._handle_studio_selection_change, ) def log_user_attribute_metric(self, name, value): @@ -337,11 +359,13 @@ def post_app_init_hiero(self, menu_name="ShotGrid"): self._menu_generator.create_menu() hiero.core.events.registerInterest( - "kAfterNewProjectCreated", self.set_project_root, + "kAfterNewProjectCreated", + self.set_project_root, ) hiero.core.events.registerInterest( - "kAfterProjectLoad", self._on_project_load_callback, + "kAfterProjectLoad", + self._on_project_load_callback, ) def post_app_init_nuke(self, menu_name="NFA ShotGrid"): @@ -377,7 +401,8 @@ def post_app_init_nuke(self, menu_name="NFA ShotGrid"): # the one it needs and then run the callback. for (panel_id, panel_dict) in self.panels.items(): nukescripts.panels.registerPanel( - panel_id, panel_dict["callback"], + panel_id, + panel_dict["callback"], ) # Iterate over all apps, if there is a gizmo folder, add it to nuke path. @@ -398,7 +423,9 @@ def post_app_init_nuke(self, menu_name="NFA ShotGrid"): sgtk.util.append_path_to_env_var("NUKE_PATH", app_gizmo_folder) # Nuke Studio 9 really doesn't like us running commands at startup, so don't. - if not (nuke.env.get("NukeVersionMajor") == 9 and nuke.env.get("studio")): + if not ( + nuke.env.get("NukeVersionMajor") == 9 and nuke.env.get("studio") + ): self._run_commands_at_startup() @property @@ -484,7 +511,10 @@ def _run_commands_at_startup(self): else: if not setting_command_name: # Run all commands of the given app instance. - for (command_name, command_function) in command_dict.items(): + for ( + command_name, + command_function, + ) in command_dict.items(): self.logger.debug( "%s startup running app '%s' command '%s'.", self.name, @@ -555,15 +585,18 @@ def destroy_engine(self): import hiero.core hiero.core.events.unregisterInterest( - "kAfterNewProjectCreated", self.set_project_root, + "kAfterNewProjectCreated", + self.set_project_root, ) hiero.core.events.unregisterInterest( - "kAfterProjectLoad", self._on_project_load_callback, + "kAfterProjectLoad", + self._on_project_load_callback, ) if self.studio_enabled: hiero.core.events.unregisterInterest( - "kSelectionChanged", self._handle_studio_selection_change, + "kSelectionChanged", + self._handle_studio_selection_change, ) def post_context_change(self, old_context, new_context): @@ -634,7 +667,9 @@ def _emit_log_message(self, handler, record): ##################################################################################### # Panel Support - def show_panel(self, panel_id, title, bundle, widget_class, *args, **kwargs): + def show_panel( + self, panel_id, title, bundle, widget_class, *args, **kwargs + ): """ Shows a panel in Nuke. If the panel already exists, the previous panel is swapped out and replaced with a new one. In this case, the contents of the panel (e.g. the toolkit app) @@ -657,7 +692,9 @@ def show_panel(self, panel_id, title, bundle, widget_class, *args, **kwargs): self.logger.info( "Panels are not supported in Hiero. Launching as a dialog..." ) - return self.show_dialog(title, bundle, widget_class, *args, **kwargs) + return self.show_dialog( + title, bundle, widget_class, *args, **kwargs + ) # Note! Not using the import_module call as this confuses nuke's callback system import tk_nuke_qt @@ -667,7 +704,9 @@ def show_panel(self, panel_id, title, bundle, widget_class, *args, **kwargs): bundle, title, panel_id, widget_class, *args, **kwargs ) - self.logger.debug("Showing pane %s - %s from %s", panel_id, title, bundle.name) + self.logger.debug( + "Showing pane %s - %s from %s", panel_id, title, bundle.name + ) if hasattr(sgtk, "_callback_from_non_pane_menu"): self.logger.debug("Looking for a pane.") @@ -692,7 +731,9 @@ def show_panel(self, panel_id, title, bundle, widget_class, *args, **kwargs): existing_pane = None for tab_name in built_in_tabs: - self.logger.debug("Parenting panel - looking for %s tab...", tab_name) + self.logger.debug( + "Parenting panel - looking for %s tab...", tab_name + ) existing_pane = nuke.getPaneFor(tab_name) if existing_pane: break @@ -779,19 +820,26 @@ def set_project_root(self, event): # In Nuke 11 and greater the Project.projectRoot and Project.setProjectRoot methods # have been deprecated in favour of Project.exportRootDirectory and # Project.setProjectDirectory. - if nuke.env.get("NukeVersionMajor") >= 11 and not p.exportRootDirectory(): + if ( + nuke.env.get("NukeVersionMajor") >= 11 + and not p.exportRootDirectory() + ): # Fix for Windows backslashes projectPath = self.sgtk.project_path - projectPath = projectPath.replace('\\', '/') + projectPath = projectPath.replace("\\", "/") self.logger.debug( "Setting exportRootDirectory on %s to: %s", p.name(), projectPath, ) p.setProjectDirectory(projectPath) - elif nuke.env.get("NukeVersionMajor") <= 10 and not p.projectRoot(): + elif ( + nuke.env.get("NukeVersionMajor") <= 10 and not p.projectRoot() + ): self.logger.debug( - "Setting projectRoot on %s to: %s", p.name(), self.sgtk.project_path + "Setting projectRoot on %s to: %s", + p.name(), + self.sgtk.project_path, ) p.setProjectRoot(self.sgtk.project_path) @@ -837,14 +885,15 @@ def _handle_studio_selection_change(self, event): # If we've already seen this file selected before, or if it's # not a .nk file, then we don't need to do anything. - if file_path not in self._processed_paths and file_path.endswith( - ".nk" + if ( + file_path not in self._processed_paths + and file_path.endswith(".nk") ): self._processed_paths.append(file_path) self._context_change_menu_rebuild = False current_context = self.context - target_context = self._context_switcher.get_new_context( - file_path + target_context = ( + self._context_switcher.get_new_context(file_path) ) if target_context: @@ -859,7 +908,9 @@ def _handle_studio_selection_change(self, event): if env_name not in self._processed_environments: self._processed_environments.append(env_name) - self._context_switcher.change_context(target_context) + self._context_switcher.change_context( + target_context + ) except Exception as e: # If anything went wrong, we can just let the finally block # run, which will put things back to the way they were. @@ -900,13 +951,16 @@ def _on_project_load_callback(self, event): # Extract a new context based on the file and change to that # context. new_context = tk.context_from_path( - script_path, previous_context=self.context, + script_path, + previous_context=self.context, ) if new_context != self.context: sgtk.platform.change_context(new_context) except Exception: - self.logger.debug("Unable to determine context for file: %s", script_path) + self.logger.debug( + "Unable to determine context for file: %s", script_path + ) def _define_qt_base(self): """ @@ -955,11 +1009,19 @@ def __setup_favorite_dirs(self): """ engine_root_dir = self.disk_location sg_logo = os.path.abspath( - os.path.join(engine_root_dir, "resources", "filmacademy_sg_logo_80px.png") + os.path.join( + engine_root_dir, "resources", "filmacademy_sg_logo_80px.png" + ) ) # Ensure old favorites we used to use are removed. - supported_entity_types = ["Shot", "Sequence", "Scene", "Asset", "Project"] + supported_entity_types = [ + "Shot", + "Sequence", + "Scene", + "Asset", + "Project", + ] for x in supported_entity_types: nuke.removeFavoriteDir("Tank Current %s" % x) nuke.removeFavoriteDir("Tank Current Work") @@ -995,7 +1057,9 @@ def __setup_favorite_dirs(self): # Remove old directory nuke.removeFavoriteDir(favorite["display_name"]) try: - template = self.get_template_by_name(favorite["template_directory"]) + template = self.get_template_by_name( + favorite["template_directory"] + ) fields = self.context.as_template_fields(template) path = template.apply_fields(fields) except Exception as e: diff --git a/hooks/tk-multi-publish2/basic/collector.py b/hooks/tk-multi-publish2/basic/collector.py old mode 100644 new mode 100755 index 46cc361..0ad423d --- a/hooks/tk-multi-publish2/basic/collector.py +++ b/hooks/tk-multi-publish2/basic/collector.py @@ -93,7 +93,9 @@ def process_current_session(self, settings, parent_item): else: # running nuke. ensure additional collected outputs are parented # under the session - project_item = self.collect_current_nuke_session(settings, parent_item) + project_item = self.collect_current_nuke_session( + settings, parent_item + ) # run node collection if not in hiero if hasattr(engine, "hiero_enabled") and not engine.hiero_enabled: @@ -127,7 +129,9 @@ def collect_current_nuke_session(self, settings, parent_item): ) # get the icon path to display for this item - icon_path = os.path.join(self.disk_location, os.pardir, "icons", "nuke.png") + icon_path = os.path.join( + self.disk_location, os.pardir, "icons", "nuke.png" + ) session_item.set_icon_from_path(icon_path) # if a work template is defined, add it to the item properties so @@ -194,7 +198,9 @@ def collect_current_nukestudio_session(self, settings, parent_item): if not active_project: return project_item = parent_item.create_item( - "nukestudio.project", "NukeStudio Project", active_project.name() + "nukestudio.project", + "NukeStudio Project", + active_project.name(), ) self.logger.info( "Collected Nuke Studio project: %s" % (active_project.name(),) @@ -202,7 +208,9 @@ def collect_current_nukestudio_session(self, settings, parent_item): project_item.set_icon_from_path(icon_path) project_item.properties["project"] = active_project project_item.properties["work_template"] = work_template - self.logger.debug("Work template defined for NukeStudio collection.") + self.logger.debug( + "Work template defined for NukeStudio collection." + ) return # FIXME: end temporary workaround @@ -218,7 +226,9 @@ def collect_current_nukestudio_session(self, settings, parent_item): # plugins know which open project to associate with this item project_item.properties["project"] = project - self.logger.info("Collected Nuke Studio project: %s" % (project.name(),)) + self.logger.info( + "Collected Nuke Studio project: %s" % (project.name(),) + ) # enable the active project and expand it. other projects are # collapsed and disabled. @@ -238,7 +248,9 @@ def collect_current_nukestudio_session(self, settings, parent_item): # execution time. if work_template: project_item.properties["work_template"] = work_template - self.logger.debug("Work template defined for NukeStudio collection.") + self.logger.debug( + "Work template defined for NukeStudio collection." + ) def collect_node_outputs(self, parent_item): """ @@ -252,7 +264,9 @@ def collect_node_outputs(self, parent_item): for node_type in _NUKE_OUTPUTS: # get all the instances of the node type - all_nodes_of_type = [n for n in nuke.allNodes() if n.Class() == node_type] + all_nodes_of_type = [ + n for n in nuke.allNodes() if n.Class() == node_type + ] # iterate over each instance for node in all_nodes_of_type: @@ -267,7 +281,9 @@ def collect_node_outputs(self, parent_item): # no file or file does not exist, nothing to do continue - self.logger.info("Processing %s node: %s" % (node_type, node.name())) + self.logger.info( + "Processing %s node: %s" % (node_type, node.name()) + ) # file exists, let the basic collector handle it item = super(NukeSessionCollector, self)._collect_file( @@ -307,38 +323,56 @@ def collect_sg_writenodes(self, parent_item): if render_path: is_published = sg_writenode_app.get_published_status(node) if not is_published: - item_info = super(NukeSessionCollector, self)._get_item_info(render_path) + item_info = super( + NukeSessionCollector, self + )._get_item_info(render_path) item_type = "%s.sequence" % (item_info["item_type"],) type_display = "%s Sequence" % (item_info["type_display"],) # construct publish name: - render_template = sg_writenode_app.get_node_render_template(node) - render_path_fields = render_template.get_fields(render_path) + render_template = ( + sg_writenode_app.get_node_render_template(node) + ) + render_path_fields = render_template.get_fields( + render_path + ) output_name = render_path_fields.get("output") render_directory = os.path.dirname(render_path) - image_sequences = publisher.util.get_frame_sequences(render_directory) + image_sequences = publisher.util.get_frame_sequences( + render_directory + ) for image_sequence in image_sequences: - if image_sequence[0].replace(os.sep, '/') == render_path: + if ( + image_sequence[0].replace(os.sep, "/") + == render_path + ): sequence_files = [] for file in image_sequence[1]: - file = file.replace(os.sep, '/') + file = file.replace(os.sep, "/") sequence_files.append(file) # get the version number from the render path version_number = render_path_fields.get("version") # use the path basename and nuke writenode name for display - display_name = "%s (%s)" % (output_name, node.name()) + display_name = "%s (%s)" % ( + output_name, + node.name(), + ) # Set publish name - publish_name = publisher.util.get_publish_name(render_path) + publish_name = publisher.util.get_publish_name( + render_path + ) # create and populate the item - item = parent_item.create_item(item_type, type_display, display_name) + item = parent_item.create_item( + item_type, type_display, display_name + ) item.set_icon_from_path(item_info["icon_path"]) # if the supplied path is an image, use the path as # the thumbnail. @@ -351,9 +385,17 @@ def collect_sg_writenodes(self, parent_item): item.properties["sequence_paths"] = sequence_files item.properties["publish_name"] = publish_name item.properties["publish_version"] = version_number - item.properties["publish_template"] = sg_writenode_app.get_node_publish_template(node) - item.properties["work_template"] = sg_writenode_app.get_node_render_template(node) - item.properties["color_space"] = sg_writenode_app.get_colorspace(node) + item.properties[ + "publish_template" + ] = sg_writenode_app.get_node_publish_template( + node + ) + item.properties[ + "work_template" + ] = sg_writenode_app.get_node_render_template(node) + item.properties[ + "colorspace" + ] = sg_writenode_app.get_colorspace(node) item.properties["first_frame"] = first_frame item.properties["last_frame"] = last_frame item.properties["sg_writenode"] = node @@ -363,7 +405,9 @@ def collect_sg_writenodes(self, parent_item): # switching natively. item.context_change_allowed = False - self.logger.info("Collected file: %s" % (render_path,)) + self.logger.info( + "Collected file: %s" % (render_path,) + ) def _get_node_colorspace(self, node): """ diff --git a/hooks/tk-multi-publish2/basic/nuke_publish_script.py b/hooks/tk-multi-publish2/basic/nuke_publish_script.py old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/basic/nuke_start_version_control.py b/hooks/tk-multi-publish2/basic/nuke_start_version_control.py old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/basic/nuke_update_flame_clip.py b/hooks/tk-multi-publish2/basic/nuke_update_flame_clip.py old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/basic/nukestudio_publish_project.py b/hooks/tk-multi-publish2/basic/nukestudio_publish_project.py old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/basic/nukestudio_start_version_control.py b/hooks/tk-multi-publish2/basic/nukestudio_start_version_control.py old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/basic/post_phase.py b/hooks/tk-multi-publish2/basic/post_phase.py old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/basic/submit_for_review.py b/hooks/tk-multi-publish2/basic/submit_for_review.py old mode 100644 new mode 100755 index b25f598..3a1296f --- a/hooks/tk-multi-publish2/basic/submit_for_review.py +++ b/hooks/tk-multi-publish2/basic/submit_for_review.py @@ -28,7 +28,9 @@ def icon(self): """ # look for icon one level up from this hook's folder in "icons" folder - return os.path.join(self.disk_location, os.pardir, "icons", "review.png") + return os.path.join( + self.disk_location, os.pardir, "icons", "review.png" + ) @property def name(self): @@ -135,13 +137,15 @@ def accept(self, settings, item): accepted = False self.logger.debug( "'first_frame' property is not defined on the item. " - "Item will be skipped: %s." % (item.properties["publish_name"],) + "Item will be skipped: %s." + % (item.properties["publish_name"],) ) if item.properties.get("last_frame") is None: accepted = False self.logger.debug( "'last_frame' property is not defined on the item. " - "Item will be skipped: %s." % (item.properties["publish_name"],) + "Item will be skipped: %s." + % (item.properties["publish_name"],) ) path = item.properties.get("path") @@ -149,7 +153,8 @@ def accept(self, settings, item): accepted = False self.logger.debug( "'path' property is not defined on the item. " - "Item will be skipped: %s." % (item.properties["publish_name"],) + "Item will be skipped: %s." + % (item.properties["publish_name"],) ) if accepted: @@ -209,10 +214,10 @@ def publish(self, settings, item): raise Exception( "'sg_publish_data' was not found in the item's properties. " "Review Submission for '%s' failed. This property must " - "be set by a publish plugin that has run before this one." % render_path + "be set by a publish plugin that has run before this one." + % render_path ) - comment = item.description tk_multi_deadlinereviewsubmission = self.parent.engine.apps.get( "tk-multi-deadlinereviewsubmission" ) @@ -241,19 +246,16 @@ def publish(self, settings, item): last_frame = item.properties.get("last_frame") fps = nuke.root().fps() - filename = nuke.root().name() - filename = os.path.basename(filename) - filename = os.path.splitext(filename)[0] + colorspace = item.properties.get("colorspace") version = tk_multi_deadlinereviewsubmission.submit_version( - publish_template, - render_path_fields, - [sg_publish_data], - first_frame, - last_frame, - fps, - filename, - comment, + template=publish_template, + fields=render_path_fields, + publish=sg_publish_data, + first_frame=first_frame, + last_frame=last_frame, + fps=fps, + colorspace_idt=colorspace, ) if version: diff --git a/hooks/tk-multi-publish2/icons/flame.png b/hooks/tk-multi-publish2/icons/flame.png old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/icons/nuke.png b/hooks/tk-multi-publish2/icons/nuke.png old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/icons/nukestudio.png b/hooks/tk-multi-publish2/icons/nukestudio.png old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/icons/publish.png b/hooks/tk-multi-publish2/icons/publish.png old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/icons/review.png b/hooks/tk-multi-publish2/icons/review.png old mode 100644 new mode 100755 diff --git a/hooks/tk-multi-publish2/icons/version_up.png b/hooks/tk-multi-publish2/icons/version_up.png old mode 100644 new mode 100755 diff --git a/icon_256.png b/icon_256.png old mode 100644 new mode 100755 diff --git a/icon_hiero_256.png b/icon_hiero_256.png old mode 100644 new mode 100755 diff --git a/icon_nukestudio_256.png b/icon_nukestudio_256.png old mode 100644 new mode 100755 diff --git a/icon_x_256.png b/icon_x_256.png old mode 100644 new mode 100755 diff --git a/info.yml b/info.yml old mode 100644 new mode 100755 diff --git a/plugins/basic/Python/Startup/__init__.py b/plugins/basic/Python/Startup/__init__.py old mode 100644 new mode 100755 diff --git a/plugins/basic/Python/tk_nuke_basic/__init__.py b/plugins/basic/Python/tk_nuke_basic/__init__.py old mode 100644 new mode 100755 diff --git a/plugins/basic/Python/tk_nuke_basic/plugin_bootstrap.py b/plugins/basic/Python/tk_nuke_basic/plugin_bootstrap.py old mode 100644 new mode 100755 diff --git a/plugins/basic/info.yml b/plugins/basic/info.yml old mode 100644 new mode 100755 diff --git a/plugins/basic/menu.py b/plugins/basic/menu.py old mode 100644 new mode 100755 diff --git a/python/startup/bootstrap.py b/python/startup/bootstrap.py old mode 100644 new mode 100755 diff --git a/python/tk_nuke/__init__.py b/python/tk_nuke/__init__.py old mode 100644 new mode 100755 diff --git a/python/tk_nuke/context.py b/python/tk_nuke/context.py old mode 100644 new mode 100755 diff --git a/python/tk_nuke/menu_generation.py b/python/tk_nuke/menu_generation.py old mode 100644 new mode 100755 diff --git a/python/tk_nuke_qt/__init__.py b/python/tk_nuke_qt/__init__.py old mode 100644 new mode 100755 diff --git a/python/tk_nuke_qt/panels.py b/python/tk_nuke_qt/panels.py old mode 100644 new mode 100755 diff --git a/resources/filmacademy_logo_32px.png b/resources/filmacademy_logo_32px.png old mode 100644 new mode 100755 diff --git a/resources/filmacademy_sg_logo_80px.png b/resources/filmacademy_sg_logo_80px.png old mode 100644 new mode 100755 diff --git a/startup.py b/startup.py old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/hooks/pick_environment.py b/tests/fixtures/config/core/hooks/pick_environment.py old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/ignore_files b/tests/fixtures/config/core/schema/ignore_files old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/another_file_to_ignore b/tests/fixtures/config/core/schema/project/assets/another_file_to_ignore old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type.yml b/tests/fixtures/config/core/schema/project/assets/asset_type.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset.yml b/tests/fixtures/config/core/schema/project/assets/asset_type/asset.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step.yml b/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/images/.placeholder b/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/images/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/out/.placeholder b/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/out/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/publish/.placeholder b/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/publish/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/review/.placeholder b/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/review/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/work/snapshots/.placeholder b/tests/fixtures/config/core/schema/project/assets/asset_type/asset/step/work/snapshots/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/assets/file_to_ignore b/tests/fixtures/config/core/schema/project/assets/file_to_ignore old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/reference/artwork/.placeholder b/tests/fixtures/config/core/schema/project/reference/artwork/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/reference/footage/.placeholder b/tests/fixtures/config/core/schema/project/reference/footage/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/scenes/step.yml b/tests/fixtures/config/core/schema/project/scenes/step.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/scenes/step/scene.yml b/tests/fixtures/config/core/schema/project/scenes/step/scene.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/scenes/step/scene/work/.placeholder b/tests/fixtures/config/core/schema/project/scenes/step/scene/work/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence.yml b/tests/fixtures/config/core/schema/project/sequences/sequence.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot.yml b/tests/fixtures/config/core/schema/project/sequences/sequence/shot.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step.yml b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/images/.placeholder b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/images/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/out/.placeholder b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/out/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/publish/.placeholder b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/publish/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/review/.placeholder b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/review/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/work/snapshots/.placeholder b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/work/snapshots/.placeholder old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/work/workspace.mel b/tests/fixtures/config/core/schema/project/sequences/sequence/shot/step/work/workspace.mel old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/core/templates.yml b/tests/fixtures/config/core/templates.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/env/test.yml b/tests/fixtures/config/env/test.yml old mode 100644 new mode 100755 diff --git a/tests/fixtures/config/hooks/scene_operations.py b/tests/fixtures/config/hooks/scene_operations.py old mode 100644 new mode 100755 diff --git a/tests/test_environment_paths.py b/tests/test_environment_paths.py old mode 100644 new mode 100755 diff --git a/tests/test_startup.py b/tests/test_startup.py old mode 100644 new mode 100755