import flask
from celery import Celery, Task


def initCeleryApp(app: flask.Flask):
    class FlaskTask(Task):
        def __call__(self, *args: object, **kwargs: object):
            with app.app_context():
                return self.run(*args, **kwargs)

    celeryApp = Celery(app.name, task_cls=FlaskTask)
    celeryApp.config_from_object(app.config["CELERY"])
    celeryApp.set_default()
    app.extensions["celery"] = celeryApp
    return celeryApp
