Source code for nxt.remote.contexts

# Builtin
import sys
import os
import logging
from collections import namedtuple

from nxt import nxt_io

logger = logging.getLogger('nxt')

REMOTE_CONTEXT_BUILTIN_NODE = '_remote_sub_graph'
SUB_GRAPH_BUILTIN_NODE = '_sub_graph'
REMOTE_CONTEXT_ATTR_NAME = '_context'


[docs]class RemoteContext(object): def __init__(self, name, exe, graph, args=()): """Create a cusom remote context for NXT, the return of this function should be fed to `register_context`. :param name: Desired context name (used to identify it to users) :param exe: Path to Python interpreter executable, if another executable is supplied a script to call with that executable is expected. :param graph: Filepath of context setup graph :param args: If the exe arg is not a Python interpreter additional args may need to passed. :type args: list | tuple """ self.name = name self.exe = exe self.graph = graph self.args = args
_CONTEXTS = [] starter_contexts = {'maya': os.path.abspath(os.path.join(os.path.dirname(__file__), 'maya_context.nxt')), 'blender': os.path.abspath(os.path.join(os.path.dirname(__file__), 'blender_context.nxt'))}
[docs]def register_context(context): """Register context class with nxt >>> my_context = RemoteContext('Maya', 'path_to/bin/mayapy.exe', './maya_context.nxt') (RemoteContext) >>> register_context(my_context) (registered context: Maya) :param context: RemoteContext object :type context: RemoteContext """ global _CONTEXTS _CONTEXTS += [context] logger.info('registered context: ' + context.name)
[docs]def find_context_by_name(name): for context in _CONTEXTS: if context.name == name: return context return None
[docs]def iter_context_names(): for context in _CONTEXTS: yield context.name
_context_graph = '${var}/_context.nxt'.format(var=nxt_io.BUILTIN_GRAPHS_ENV_VAR) PYTHON_CONTEXT = RemoteContext('python', sys.executable, _context_graph) register_context(PYTHON_CONTEXT)
[docs]def get_current_context_exe_name(): exe_name = os.path.basename(sys.executable) exe_name, _ = os.path.splitext(exe_name) return exe_name