class_docstr: This is the base class for all the framework.
  
  This is where you will register all your views
  and create the menu structure.
  Will hold your flask app object, all your views, and security classes.
  Initialize your application like this for SQLAlchemy::
      from flask import Flask
      from flask_appbuilder import SQLA, AppBuilder
      app = Flask(__name__)
      app.config.from_object('config')
      db = SQLA(app)
      appbuilder = AppBuilder(app, db.session)
  When using MongoEngine::
      from flask import Flask
      from flask_appbuilder import AppBuilder
      from flask_appbuilder.security.mongoengine.manager import SecurityManager
      from flask_mongoengine import MongoEngine
      app = Flask(__name__)
      app.config.from_object('config')
      dbmongo = MongoEngine(app)
      appbuilder = AppBuilder(app)
  You can also create everything as an application factory.
class_docstr_tok: ["This","is","the","base","class","for","all","the","framework",".","This","is","where","you","will","register","all","your","views","and","create","the","menu","structure",".","Will","hold","your","flask","app","object",",","all","your","views",",","and","security","classes",".","Initialize","your","application","like","this","for","SQLAlchemy",":",":","from","flask","import","Flask","from","flask_appbuilder","import","SQLA",",","AppBuilder","app","=","Flask","(","__name__",")","app.config.from_object","(","'config","'",")","db","=","SQLA","(","app",")","appbuilder","=","AppBuilder","(","app",",","db.session",")","When","using","MongoEngine",":",":","from","flask","import","Flask","from","flask_appbuilder","import","AppBuilder","from","flask_appbuilder.security.mongoengine.manager","import","SecurityManager","from","flask_mongoengine","import","MongoEngine","app","=","Flask","(","__name__",")","app.config.from_object","(","'config","'",")","dbmongo","=","MongoEngine","(","app",")","appbuilder","=","AppBuilder","(","app",")","You","can","also","create","everything","as","an","application","factory","."]
docstr: Clean up security.
  
  This method is useful if you have changed the name of your menus or
  classes. Changing them leaves behind permissions that are not associated
  with anything. You can use it always or just sometimes to perform a
  security cleanup.
  
  .. warning::
  
      This deletes any permission that is no longer part of any registered
      view or menu. Only invoke AFTER YOU HAVE REGISTERED ALL VIEWS.
docstr_tok: ["Clean","up","security",".","This","method","is","useful","if","you","have","changed","the","name","of","your","menus","or","classes",".","Changing","them","leaves","behind","permissions","that","are","not","associated","with","anything",".","You","can","use","it","always","or","just","sometimes","to","perform","a","security","cleanup",".","..","warning",":",":","This","deletes","any","permission","that","is","no","longer","part","of","any","registered","view","or","menu",".","Only","invoke","AFTER","YOU","HAVE","REGISTERED","ALL","VIEWS","."]
code: def security_cleanup(self):
      """Clean up security.
  
      This method is useful if you have changed the name of your menus or
      classes. Changing them leaves behind permissions that are not associated
      with anything. You can use it always or just sometimes to perform a
      security cleanup.
  
      .. warning::
  
          This deletes any permission that is no longer part of any registered
          view or menu. Only invoke AFTER YOU HAVE REGISTERED ALL VIEWS.
      """
      if not hasattr(self.sm, "security_cleanup"):
          raise NotImplementedError(
              "The auth manager used does not support security_cleanup method."
          )
      self.sm.security_cleanup(self.baseviews, self.menu)
  
imports: from __future__ import annotations
  import logging
  from functools import reduce
  from typing import TYPE_CHECKING
  from flask import Blueprint, current_app, url_for
  from flask_appbuilder import __version__
  from flask_appbuilder.babel.manager import BabelManager
  from flask_appbuilder.const import LOGMSG_ERR_FAB_ADD_PERMISSION_MENU, LOGMSG_ERR_FAB_ADD_PERMISSION_VIEW, LOGMSG_ERR_FAB_ADDON_IMPORT, LOGMSG_ERR_FAB_ADDON_PROCESS, LOGMSG_INF_FAB_ADD_VIEW, LOGMSG_INF_FAB_ADDON_ADDED, LOGMSG_WAR_FAB_VIEW_EXISTS
  from flask_appbuilder.filters import TemplateFilters
  from flask_appbuilder.menu import Menu
  from flask_appbuilder.views import IndexView, UtilView
  from airflow import settings
  from airflow.configuration import conf
  from airflow.www.extensions.init_auth_manager import get_auth_manager, init_auth_manager
label_desc: Use image node_id 22 for calling the AirflowAppBuilder obj's underlying member method code with example usage: obj.security_cleanup() without return types