def __init__(self): self.log = PypeLogger().get_logger(self.__class__.__name__) self.modules = [] self.modules_by_id = {} self.modules_by_name = {} self._report = {} self.tray_manager = None
def __init__(self, module, *args, **kwargs): super(IdleManagerThread, self).__init__(*args, **kwargs) self.log = PypeLogger.get_logger(self.__class__.__name__) self.module = module self.threads = [] self.is_running = False self.idle_time = 0
class TrayModulesManager(ModulesManager): # Define order of modules in menu modules_menu_order = ("user", "ftrack", "muster", "launcher_tool", "avalon", "clockify", "standalonepublish_tool", "log_viewer", "local_settings", "settings") def __init__(self): self.log = PypeLogger().get_logger(self.__class__.__name__) self.modules = [] self.modules_by_id = {} self.modules_by_name = {} self._report = {} self.tray_manager = None def initialize(self, tray_manager, tray_menu): self.tray_manager = tray_manager self.initialize_modules() self.tray_init() self.connect_modules() self.tray_menu(tray_menu) def get_enabled_tray_modules(self): output = [] for module in self.modules: if module.enabled and isinstance(module, ITrayModule): output.append(module) return output def tray_init(self): report = {} time_start = time.time() prev_start_time = time_start for module in self.get_enabled_tray_modules(): try: module._tray_manager = self.tray_manager module.tray_init() module.tray_initialized = True except Exception: self.log.warning( "Module \"{}\" crashed on `tray_init`.".format( module.name), exc_info=True) now = time.time() report[module.__class__.__name__] = now - prev_start_time prev_start_time = now if self._report is not None: report[self._report_total_key] = time.time() - time_start self._report["Tray init"] = report def tray_menu(self, tray_menu): ordered_modules = [] enabled_by_name = { module.name: module for module in self.get_enabled_tray_modules() } for name in self.modules_menu_order: module_by_name = enabled_by_name.pop(name, None) if module_by_name: ordered_modules.append(module_by_name) ordered_modules.extend(enabled_by_name.values()) report = {} time_start = time.time() prev_start_time = time_start for module in ordered_modules: if not module.tray_initialized: continue try: module.tray_menu(tray_menu) except Exception: # Unset initialized mark module.tray_initialized = False self.log.warning( "Module \"{}\" crashed on `tray_menu`.".format( module.name), exc_info=True) now = time.time() report[module.__class__.__name__] = now - prev_start_time prev_start_time = now if self._report is not None: report[self._report_total_key] = time.time() - time_start self._report["Tray menu"] = report def start_modules(self): report = {} time_start = time.time() prev_start_time = time_start for module in self.get_enabled_tray_modules(): if not module.tray_initialized: if isinstance(module, ITrayService): module.set_service_failed_icon() continue try: module.tray_start() except Exception: self.log.warning( "Module \"{}\" crashed on `tray_start`.".format( module.name), exc_info=True) now = time.time() report[module.__class__.__name__] = now - prev_start_time prev_start_time = now if self._report is not None: report[self._report_total_key] = time.time() - time_start self._report["Modules start"] = report def on_exit(self): for module in self.get_enabled_tray_modules(): if module.tray_initialized: try: module.tray_exit() except Exception: self.log.warning( "Module \"{}\" crashed on `tray_exit`.".format( module.name), exc_info=True)
def __init__(self, manager, settings): self.manager = manager self.log = PypeLogger().get_logger(self.name) self.initialize(settings)
def launch_tray(debug=False): PypeLogger.set_process_name("Tray") from pype.tools import tray tray.main()
import os import types import logging import traceback import ftrack_api from pype.lib import (PypeLogger, modules_from_path) log = PypeLogger.get_logger(__name__) """ # Required - Needed for connection to Ftrack FTRACK_SERVER # Ftrack server e.g. "https://myFtrack.ftrackapp.com" FTRACK_API_KEY # Ftrack user's API key "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" FTRACK_API_USER # Ftrack username e.g. "user.name" # Required - Paths to folder with actions FTRACK_ACTIONS_PATH # Paths to folders where are located actions - EXAMPLE: "M:/FtrackApi/../actions/" FTRACK_EVENTS_PATH # Paths to folders where are located actions - EXAMPLE: "M:/FtrackApi/../events/" # Required - Needed for import included modules PYTHONPATH # Path to ftrack_api and paths to all modules used in actions - path to ftrack_action_handler, etc. """ class FtrackServer: def __init__(self, handler_paths=None): """
import threading import asyncio from aiohttp import web from pype.lib import PypeLogger log = PypeLogger.get_logger("WebServer") class WebServerManager: """Manger that care about web server thread.""" def __init__(self, module): self.module = module self.client = None self.handlers = {} self.on_stop_callbacks = [] self.app = web.Application() # add route with multiple methods for single "external app" self.webserver_thread = WebServerThread(self) @property def port(self): return self.module.port def add_route(self, *args, **kwargs): self.app.router.add_route(*args, **kwargs)
def log(self): """Auto created logger for debugging or warnings.""" if self._log is None: self._log = PypeLogger.get_logger(self.__class__.__name__) return self._log