#!/usr/bin/env python # -*- coding: utf-8 -*- """ Studio Library Wrapper Module Simplify Studio Library import and usage Support Maya 2017-2026+ all versions Usage: import animation_tools.studiolibrary animation_tools.studiolibrary.show() """ import sys import os # Get current directory _current_dir = os.path.dirname(os.path.abspath(__file__)) # Global variable to store imported module _studiolibrary_module = None __version__ = "2.20.2" def _ensure_studiolibrary_loaded(): """Ensure studiolibrary module is loaded""" global _studiolibrary_module if _studiolibrary_module is not None: return _studiolibrary_module # Add all necessary paths in correct order _inner_studiolibrary = os.path.join(_current_dir, 'studiolibrary') # Add the parent directory so packages can be imported correctly # e.g., "import studioqt" will find studiolibrary/studioqt/ if _current_dir not in sys.path: sys.path.insert(0, _current_dir) # Also add inner studiolibrary for direct imports if _inner_studiolibrary not in sys.path: sys.path.insert(0, _inner_studiolibrary) # Load main.py directly to get the main function _main_module = None _load_error = None # Try Python 3.4+ first try: import importlib.util spec = importlib.util.spec_from_file_location( "studiolibrary_main", os.path.join(_inner_studiolibrary, "main.py") ) _main_module = importlib.util.module_from_spec(spec) sys.modules["studiolibrary_main"] = _main_module spec.loader.exec_module(_main_module) except Exception as e: _load_error = e # Try Python 2.7 fallback try: import imp _main_module = imp.load_source( "studiolibrary_main", os.path.join(_inner_studiolibrary, "main.py") ) except Exception as e2: # If both fail, raise the original error raise _load_error if _load_error else e2 # Create a simple module object with main function class StudioLibraryModule: def __init__(self): self.main = _main_module.main self.__version__ = "2.20.2" def version(self): return self.__version__ _studiolibrary_module = StudioLibraryModule() return _studiolibrary_module def version(): return __version__ # Export all public interfaces __all__ = [ '__version__', 'version', 'show', 'main', ] def show(*args, **kwargs): """ Convenience function: Launch Studio Library Args: *args: Positional arguments passed to main() **kwargs: Keyword arguments passed to main() Returns: LibraryWindow: Studio Library window instance Example: >>> import animation_tools.studiolibrary >>> animation_tools.studiolibrary.show() """ lib = _ensure_studiolibrary_loaded() return lib.main(*args, **kwargs) def main(*args, **kwargs): """ Launch Studio Library main window Args: *args: Positional arguments passed to main() **kwargs: Keyword arguments passed to main() Returns: LibraryWindow: Studio Library window instance """ lib = _ensure_studiolibrary_loaded() return lib.main(*args, **kwargs) def isMaya(): """ Check if running in Maya environment Returns: bool: True if in Maya, False otherwise """ try: import maya.cmds maya.cmds.about(batch=True) return True except (ImportError, AttributeError): return False