class_docstr: cmp: cascading module permissions
class_docstr_tok: ["cmp",":","cascading","module","permissions"]
code: def __init__(
      self,
      path: str,
      children: Optional[Union[List, Dict]] = None,
      permissions: Optional[CMPPermission] = None,
      obj: Optional[Any] = None,
      absolute_path: Optional[str] = None,
      text_signature: Optional[str] = None,
  ):
      self.permissions: Optional[CMPPermission] = permissions
      self.path: str = path
      self.obj: Optional[Any] = obj if obj is not None else None
      self.absolute_path = absolute_path
      self.signature: Optional[Signature] = None
  
      self.children: Dict[str, CMPBase] = {}
      if isinstance(children, list):
          self.children = {f"{c.path}": c for c in children}
      elif isinstance(children, dict):
          self.children = children
  
      for c in self.children.values():
          if c.absolute_path is None:
              c.absolute_path = f"{path}.{c.path}"
  
      if text_signature is not None:
          self.signature = _signature_fromstr(
              inspect.Signature, obj, text_signature, True
          )
  
      self.is_built = False
  
imports: import importlib
  import inspect
  from inspect import Signature
  from inspect import _signature_fromstr
  from types import BuiltinFunctionType
  from typing import Any
  from typing import Callable
  from typing import Dict
  from typing import List
  from typing import Optional
  from typing import Sequence
  from typing import Union
  import numpy
  from typing_extensions import Self
  from .lib_permissions import ALL_EXECUTE
  from .lib_permissions import CMPPermission
  from .lib_permissions import NONE_EXECUTE
  from .signature import get_signature
label_desc: Use image node_id 1 to create a new CMPBase object  with example: obj = CMPBase(path, children, permissions, obj, absolute_path, text_signature)