docs: def make_app(global_conf, full_stack=True, **app_conf):
      """Create a Pylons WSGI application and return it
  
      ``global_conf``
          The inherited configuration for this application. Normally from
          the [DEFAULT] section of the Paste ini file.
  
      ``full_stack``
          Whether or not this application provides a full WSGI stack (by
          default, meaning it handles its own exceptions and errors).
          Disable full_stack when this application is "managed" by
          another WSGI middleware.
  
      ``app_conf``
          The application's local configuration. Normally specified in
          the [app:<name>] section of the Paste ini file (where <name>
          defaults to main).
  
      """
      # Configure the Pylons environment
      load_environment(global_conf, app_conf)
  
      # The Pylons WSGI app
      app = PylonsApp()
      
      # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
      # Authentication middleware
      app = AuthMiddleware(app)
  
      # Routing/Session/Cache Middleware
      app = RoutesMiddleware(app, config['routes.map'])
      app = SessionMiddleware(app, config)
      app = CacheMiddleware(app, config)
      
      if asbool(full_stack):
          # Handle Python exceptions
          app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
  
          # Display error documents for 401, 403, 404 status codes (and
          # 500 when debug is disabled)
          if asbool(config['debug']):
              app = StatusCodeRedirect(app)
          else:
              app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
  
      # Establish the Registry for this application
      app = RegistryManager(app)
  
      # Static files (If running in production, and Apache or another web 
      # server is handling this static content, remove the following 2 lines)
      static_app = StaticURLParser(config['pylons.paths']['static_files'])
      app = Cascade([static_app, app])
  
      return app