Source code for ivy.context
# Copyright 2013 ETHZ.ch Lukas Gamper <lukas.gamper@usystems.ch>
from ivy.exceptions.exceptions import InvalidLoopException
from ivy.utils.struct import WorkflowStruct
__all__ = ["ctx", "loopCtx"]
global_ctx = None
[docs]def ctx():
"""
Returns the current global namespace context.
:return: reference to the context module
"""
global global_ctx
if(global_ctx is None):
global_ctx = _createCtx()
return global_ctx
def register(loop):
try:
l = ctx()[loop]
raise InvalidLoopException()
except KeyError or AttributeError:
ctx()[loop] = WorkflowStruct()
[docs]def loopCtx(loop):
return ctx()[loop]
def _createCtx(**args):
return getContextProvider().createContext(**args)
def _createImmutableCtx(**args):
return getContextProvider().createImmutableContext(**args)
def getContextProvider():
from ivy.context_provider import DefaultContextProvider
return DefaultContextProvider