def __init__(
        self,
        app: Optional[Flask] = None,
        session: Optional[SessionBase] = None,
        menu: Optional[Menu] = None,
        indexview: Optional[Type["AbstractViewApi"]] = None,
        base_template: str = "appbuilder/baselayout.html",
        static_folder: str = "static/appbuilder",
        static_url_path: str = "/appbuilder",
        security_manager_class: Optional[Type["BaseSecurityManager"]] = None,
        update_perms: bool = True,
    ) -> None:
        """
        AppBuilder init

        :param app:
            The flask app object
        :param session:
            The SQLAlchemy session object
        :param menu:
            optional, a previous contructed menu
        :param indexview:
            optional, your customized indexview
        :param static_folder:
            optional, your override for the global static folder
        :param static_url_path:
            optional, your override for the global static url path
        :param security_manager_class:
            optional, pass your own security manager class
        :param update_perms:
            optional, update permissions flag (Boolean) you can use
            FAB_UPDATE_PERMS config key also
        """
        self.baseviews: List[Union[Type["AbstractViewApi"], "AbstractViewApi"]] = []

        # temporary list that hold addon_managers config key
        self._addon_managers: List[str] = []
        # dict with addon name has key and instantiated class has value
        self.addon_managers: Dict[str, Any] = {}
        self.menu = menu
        self.base_template = base_template
        self.security_manager_class = security_manager_class
        self.indexview = indexview
        self.static_folder = static_folder
        self.static_url_path = static_url_path
        self.app = app
        self.update_perms = update_perms

        # Security Manager Class
        self.sm: BaseSecurityManager = None  # type: ignore
        # Babel Manager Class
        self.bm: BabelManager = None  # type: ignore
        self.openapi_manager: OpenApiManager = None  # type: ignore
        self.menuapi_manager: MenuApiManager = None  # type: ignore

        if app is not None:
            self.init_app(app, session)

        AppBuilder init

        :param app:
            The flask app object
        :param session:
            The SQLAlchemy session object
        :param menu:
            optional, a previous contructed menu
        :param indexview:
            optional, your customized indexview
        :param static_folder:
            optional, your override for the global static folder
        :param static_url_path:
            optional, your override for the global static url path
        :param security_manager_class:
            optional, pass your own security manager class
        :param update_perms:
            optional, update permissions flag (Boolean) you can use
            FAB_UPDATE_PERMS config key also
        
flask_appbuilder/base.py