docs: def setup_installed_apps(cls):
          """
          To import 3rd party applications along with associated properties
  
          It is a list of dict or string.
  
          When a dict, it contains the `app` key and the configuration,
          if it's a string, it is just the app name
  
          If you require dependencies from other packages, dependencies
          must be placed before the calling package.
  
          It is required that __init__ in the package app has an entry point method
          -> 'main(**kw)' which will be used to setup the default app.
  
          As a dict
          INSTALLED_APPS = [
              "it.can.be.a.string.to.the.module",
              ("in.a.tuple.with.props.dict", {options}),
              [
                  ("multi.app.list.in.a.list.of.tuple", {options}),
                  ("multi.app.list.in.a.list.of.tuple2", {options})
              ]
          ]
  
          :return:
          """
  
          cls._installed_apps = cls._app.config.get("INSTALLED_APPS", [])
          if cls._installed_apps:
              def import_app(module, props={}):
                  _ = werkzeug.import_string(module)
                  setattr(_, "__options__", utils.dict_dot(props))
  
              for k in cls._installed_apps:
                  if isinstance(k, six.string_types):  # One string
                      import_app(k, {})
                  elif isinstance(k, tuple):
                      import_app(k[0], k[1])
                  elif isinstance(k, list):  # list of tuple[(module props), ...]
                      for t in k:
                          import_app(t[0], t[1])