#5377 ImportError: cannot import name 'relation' from 'sqlalchemy.orm'
Closed: Fixed by wombelix. Opened by mzch.

When I tried to run celery -A pagure.lib.tasks worker --loglevel=info -n celery, the following error occured:

Usage: celery [OPTIONS] COMMAND [ARGS]...
Try 'celery --help' for help.
Error: Invalid value for '-A' / '--app': 
Unable to load celery application.
While trying to load the module pagure.lib.tasks the following error occurred:
Traceback (most recent call last):
  File "/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/site-packages/celery/app/utils.py", line 384, in find_app
    sym = symbol_by_name(app, imp=imp)
  File "/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/site-packages/kombu/utils/imports.py", line 61, in symbol_by_name
    return getattr(module, cls_name) if cls_name else module
AttributeError: module 'pagure.lib' has no attribute 'tasks'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/site-packages/celery/bin/celery.py", line 57, in convert
    return find_app(value)
  File "/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/site-packages/celery/app/utils.py", line 387, in find_app
    sym = imp(app)
  File "/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/site-packages/celery/utils/imports.py", line 105, in import_from_cwd
    return imp(module, package=package)
  File "/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/srv/pagure/pagure/pagure/lib/tasks.py", line 31, in <module>
    import pagure.lib.git
  File "/srv/pagure/pagure/pagure/lib/git.py", line 32, in <module>
    import pagure.hooks
  File "/srv/pagure/pagure/pagure/hooks/__init__.py", line 22, in <module>
    import pagure.lib.query
  File "/srv/pagure/pagure/pagure/lib/query.py", line 54, in <module>
    import pagure.lib.git_auth
  File "/srv/pagure/pagure/pagure/lib/git_auth.py", line 29, in <module>
    from pagure.lib import model
  File "/srv/pagure/pagure/pagure/lib/model.py", line 28, in <module>
    from sqlalchemy.orm import (
ImportError: cannot import name 'relation' from 'sqlalchemy.orm' (/srv/pagure/.pyenv/versions/3.9.16/lib/python3.9/site-packages/sqlalchemy/orm/__init__.py)

I patched as below, then celery ran successfully. Is this a bug?

--- model.py.bak        2023-02-14 02:20:00.570332518 +0900
+++ model.py    2023-02-14 02:22:56.807757392 +0900
@@ -25,9 +25,9 @@
 import sqlalchemy as sa
 from sqlalchemy import create_engine
 from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.orm import relationship as relation
 from sqlalchemy.orm import (
     backref,
-    relation,
     scoped_session,
     sessionmaker,
     validates,

OS: Debian 11.6
Python: 3.9.16


Hello,

Can you tell me resolve this issue?
Because i got something like same issue so i need some way to resolve.

Mybkexperience

Metadata Update from @wombelix:
- Issue assigned to wombelix

Metadata Update from @wombelix:
- Issue set to the milestone: 6.0

Your patch is fine and this was caused by an sqlalchemy update, it's fixed in master and will be part of release 6.0

Metadata Update from @wombelix:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

Metadata