def __init__(self, app=None, plugins_base=None, plugins_folder="plugins", **kwargs):
        """Initializes the PluginManager. It is also possible to initialize the PluginManager via a factory.
        For example::

            from flask_pluginkit import Flask, PluginManager

            app = Flask(__name__)

            plugin_manager = PluginManager()
            plugin_manager.init_app(app)

        :param app: The flask application.

        :param plugins_base: str: The plugin folder where the plugins resides.

        :param plugins_folder: str: The base folder for the application. It is used to build the plugins package name.

        :param logger:

        :param stpl: Bool: Template sorting options

        :param stpl_reverse: Bool: Template sort reverse. Default False

        :param s3: str: Simple storage service, local or redis or empty

        :param s3_redis: str: If s3 is redis, thie key is redis url, such as redis://@localhost:6379/0

        :param plugin_packages: list,tuple: List of third-party plug-in package names

        :param pluginkit_config: dict: Your Flask-PluginKit Configure
        """
        self.plugins_folder = plugins_folder
        self.plugins_abspath = os.path.join(plugins_base or os.getcwd(), self.plugins_folder)

        #: all locally stored plugins
        #:
        #: .. versionadded:: 0.1.4
        self.__plugins = []

        #: logging Logger instance
        #:
        #: .. versionadded:: 0.1.9
        self.logger = kwargs.get("logger", logger)

        #: Template sorting
        #:
        #: .. versionadded:: 1.2.0
        self.stpl = kwargs.get("stpl", False)
        self.stpl_reverse = kwargs.get("stpl_reverse", False)

        #: Simple storage service(s3), currently optional: local or redis.
        #: May increase in the future: memcache.
        #: You can also inherit :class:`~flask_pluginkit.BaseStorage`, custom storage interface.
        #:
        #: .. versionadded:: 1.3.0
        self.s3 = kwargs.get("s3")
        self.s3_redis = kwargs.get("s3_redis")

        #: Dynamic join point initialization, format::
        #: dict(event=deque())
        #:
        #: .. versionadded:: 2.1.0
        self._dcp_funcs = {}

        #: Third-party plugin package from pypi, format::
        #: [plugin1, plugin2, plugin...]
        #:
        #: .. versionadded:: 2.2.0
        self.plugin_packages = kwargs.get("plugin_packages", tuple())
        if not isinstance(self.plugin_packages, (tuple, list)):
            raise PluginError("Initialization parameter error for plugin_packages")

        #: Dynamic function point initialization, format::
        #: dict(event=deque())
        #:
        #: .. versionadded:: 2.3.0
        self._dfp_funcs = {}

        #: Configuration Dictionary of Flask-PLuginKit in Project
        #:
        #: .. versionadded:: 2.3.1
        self._pluginkit_config = kwargs.get("pluginkit_config", dict())
        if not isinstance(self._pluginkit_config, dict):
            raise PluginError("Initialization parameter error for pluginkit_config")

        #: Initialize app via a factory
        #:
        #: .. versionadded:: 0.1.4
        if app is not None:
            self.init_app(app)
def __init__ ( self , app = None , plugins_base = None , plugins_folder = "plugins" , ** kwargs ) : self . plugins_folder = plugins_folder self . plugins_abspath = os . path . join ( plugins_base or os . getcwd ( ) , self . plugins_folder ) self . __plugins = [ ] self . logger = kwargs . get ( "logger" , logger ) self . stpl = kwargs . get ( "stpl" , False ) self . stpl_reverse = kwargs . get ( "stpl_reverse" , False ) self . s3 = kwargs . get ( "s3" ) self . s3_redis = kwargs . get ( "s3_redis" ) self . _dcp_funcs = { } self . plugin_packages = kwargs . get ( "plugin_packages" , tuple ( ) ) if not isinstance ( self . plugin_packages , ( tuple , list ) ) : raise PluginError ( "Initialization parameter error for plugin_packages" ) self . _dfp_funcs = { } self . _pluginkit_config = kwargs . get ( "pluginkit_config" , dict ( ) ) if not isinstance ( self . _pluginkit_config , dict ) : raise PluginError ( "Initialization parameter error for pluginkit_config" ) if app is not None : self . init_app ( app )
Initializes the PluginManager. It is also possible to initialize the PluginManager via a factory.
        For example::

            from flask_pluginkit import Flask, PluginManager

            app = Flask(__name__)

            plugin_manager = PluginManager()
            plugin_manager.init_app(app)

        :param app: The flask application.

        :param plugins_base: str: The plugin folder where the plugins resides.

        :param plugins_folder: str: The base folder for the application. It is used to build the plugins package name.

        :param logger:

        :param stpl: Bool: Template sorting options

        :param stpl_reverse: Bool: Template sort reverse. Default False

        :param s3: str: Simple storage service, local or redis or empty

        :param s3_redis: str: If s3 is redis, thie key is redis url, such as redis://@localhost:6379/0

        :param plugin_packages: list,tuple: List of third-party plug-in package names

        :param pluginkit_config: dict: Your Flask-PluginKit Configure