def __init__(self, parent, name, formula=None, refs=None, source=None, doc=None): BaseSpaceImpl.__init__(self, parent=parent, name=name, formula=formula, refs=refs, source=source, doc=doc) self._refs = ImplChainMap( self, RefView, [self.model._global_refs, self._local_refs, self._self_refs], ) self._namespace_impl = ImplChainMap( self, None, [self._cells, self._refs, self._spaces]) self.lazy_evals = self._namespace_impl
def __init__(self, *, system, name): if not name: name = system._modelnamer.get_next(system.models) elif not is_valid_name(name): raise ValueError("Invalid name '%s'." % name) Impl.__init__(self, system=system, parent=None, name=name) EditableSpaceContainerImpl.__init__(self) TraceManager.__init__(self) self.spacemgr = SpaceManager(self) self.currentspace = None self._global_refs = RefDict(self) self._global_refs.set_item("__builtins__", builtins) self._named_spaces = SpaceDict(self) self._dynamic_bases = SpaceDict(self) self._all_spaces = ImplChainMap( self, SpaceView, [self._named_spaces, self._dynamic_bases]) self._dynamic_bases_inverse = {} self._dynamic_base_namer = AutoNamer("__Space") self._namespace = ImplChainMap(self, BaseView, [self._named_spaces, self._global_refs]) self.allow_none = False self.lazy_evals = self._namespace self.datarefmgr = DataClientReferenceManager()
def __init__(self, *, system, name): Impl.__init__(self, system=system) EditableSpaceContainerImpl.__init__(self) self.cellgraph = DependencyGraph() self.lexdep = DependencyGraph() # Lexical dependency self.spacegraph = SpaceGraph() self.currentspace = None if not name: self.name = system._modelnamer.get_next(system.models) elif is_valid_name(name): self.name = name else: raise ValueError("Invalid name '%s'." % name) data = {"__builtins__": builtins} self._global_refs = RefDict(self, data=data) self._spaces = ImplDict(self, SpaceView) self._dynamic_bases = {} self._dynamic_bases_inverse = {} self._dynamic_base_namer = AutoNamer("__Space") self._namespace = ImplChainMap(self, BaseView, [self._spaces, self._global_refs]) self.allow_none = False self.lazy_evals = self._namespace
def _create_parentargs(self): if isinstance(self.parent, StaticSpaceImpl): parentargs = [] elif isinstance(self.parent, RootDynamicSpaceImpl): parentargs = [self.parent._arguments, self.parent._parentargs] else: parentargs = [self.parent._parentargs] return ImplChainMap(self, None, parentargs)
def _create_refs(self, arguments=None): self._parentargs = self._create_parentargs() return ImplChainMap( self, RefView, [ self.model._global_refs, self._local_refs, self._parentargs, self._self_refs, ], )
def __init__(self, parent, name, formula=None, refs=None, source=None, arguments=None, doc=None): Impl.__init__(self, system=parent.system, doc=doc) BaseSpaceContainerImpl.__init__(self) Derivable.__init__(self) self.name = name self.parent = parent self.cellsnamer = AutoNamer("Cells") self._mro_cache = None self.update_mro = True if isinstance(source, ModuleType): self.source = source.__name__ else: self.source = source # ------------------------------------------------------------------ # Construct member containers self._dynamic_spaces = ImplDict(self, SpaceView) self._dynamic_subs = [] self._self_refs = RefDict(self) self._cells = CellsDict(self) self._static_spaces = SpaceDict(self) self._spaces = ImplChainMap( self, SpaceView, [self._static_spaces, self._dynamic_spaces]) self._local_refs = {"_self": self, "_space": self} self._refs = self._create_refs(arguments) self._namespace_impl = ImplChainMap( self, None, [self._cells, self._refs, self._spaces]) self.lazy_evals = self._namespace_impl # ------------------------------------------------------------------ # Add initial refs members if refs is not None: refsimpl = { name: ReferenceImpl(self, name, value) for name, value in refs.items() } self._self_refs.update(refsimpl) self._self_refs.set_update() # ------------------------------------------------------------------ # Construct altfunc after space members are crated self.param_spaces = {} self.formula = None if formula is not None: self.set_formula(formula) # ------------------------------------------------------------------ # For repr of LazyEvalDict, LazyEvalImpl self._cells.debug_name = "_cells" self._static_spaces.debug_name = "_static_spaces" self._dynamic_spaces.debug_name = "_dynamic_spaces" self._self_refs.debug_name = "_self_refs" self._refs.debug_name = "_refs" self._namespace_impl.debug_name = "_namespace_impl"
def _create_refs(self, arguments=None): return ImplChainMap( self, RefView, [self.model._global_refs, self._local_refs, self._self_refs], )