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: App-builder constructor.
  
  :param app:
      The flask app object
  :param session:
      The SQLAlchemy session object
  :param menu:
      optional, a previous constructed 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 update_perms:
      optional, update permissions flag (Boolean) you can use
      FAB_UPDATE_PERMS config key also
  :param auth_rate_limited:
      optional, rate limit authentication attempts if set to True (defaults to True)
  :param auth_rate_limit:
      optional, rate limit authentication attempts configuration (defaults "to 5 per 40 second")
docstr_tok: ["App-builder","constructor",".",":","param","app",":","The","flask","app","object",":","param","session",":","The","SQLAlchemy","session","object",":","param","menu",":","optional",",","a","previous","constructed","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","update_perms",":","optional",",","update","permissions","flag","(","Boolean",")","you","can","use","FAB_UPDATE_PERMS","config","key","also",":","param","auth_rate_limited",":","optional",",","rate","limit","authentication","attempts","if","set","to","True","(","defaults","to","True",")",":","param","auth_rate_limit",":","optional",",","rate","limit","authentication","attempts","configuration","(","defaults","``","to","5","per","40","second","''",")"]
code: def __init__(
      self,
      app=None,
      session: Session | None = None,
      menu=None,
      indexview=None,
      base_template="airflow/main.html",
      static_folder="static/appbuilder",
      static_url_path="/appbuilder",
      update_perms=conf.getboolean(
          "fab",
          "UPDATE_FAB_PERMS",
          fallback=conf.getboolean("webserver", "UPDATE_FAB_PERMS"),
      ),
      auth_rate_limited=conf.getboolean(
          "fab",
          "AUTH_RATE_LIMITED",
          fallback=conf.getboolean(
              "webserver", "AUTH_RATE_LIMITED", fallback=True
          ),
      ),
      auth_rate_limit=conf.get(
          "fab",
          "AUTH_RATE_LIMIT",
          fallback=conf.get(
              "webserver", "AUTH_RATE_LIMIT", fallback="5 per 40 second"
          ),
      ),
  ):
      """
      App-builder constructor.
  
      :param app:
          The flask app object
      :param session:
          The SQLAlchemy session object
      :param menu:
          optional, a previous constructed 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 update_perms:
          optional, update permissions flag (Boolean) you can use
          FAB_UPDATE_PERMS config key also
      :param auth_rate_limited:
          optional, rate limit authentication attempts if set to True (defaults to True)
      :param auth_rate_limit:
          optional, rate limit authentication attempts configuration (defaults "to 5 per 40 second")
      """
      self.baseviews = []
      self._addon_managers = []
      self.addon_managers = {}
      self.menu = menu
      self.base_template = base_template
      self.indexview = indexview
      self.static_folder = static_folder
      self.static_url_path = static_url_path
      self.app = app
      self.update_perms = update_perms
      self.auth_rate_limited = auth_rate_limited
      self.auth_rate_limit = auth_rate_limit
      if app is not None:
          self.init_app(app, session)
  
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 1 to create a new AirflowAppBuilder object  with example: obj = AirflowAppBuilder(app, session, menu, indexview, base_template, static_folder, static_url_path, update_perms, auth_rate_limited, auth_rate_limit)