def create_app(config=None, config_obj=None):
    """Flask app factory function.

    Args:
        config (Optional[path]): path to a Python module config file
        config_obj (Optional[class]): Python config object
    """
    app = Flask(__name__)
    # configure application from external configs
    configure_app(app, config=config, config_obj=config_obj)
    # register different parts of the application
    register_blueprints(app)
    # setup extensions
    bind_extensions(app)
    return app