SamR1/FitTrackee

Errors after upgrade to 0.7.24

escuco opened this issue · 4 comments

escuco commented

Hello!

Today I wanted to update my instance from 0.7.23 to 0.7.24 (from PyPi).

The first step pip install -U fittrackee worked well as always.

But the command ftcli db upgrade throws this error:

Traceback (most recent call last):
  File "/home/fittrack/fittrackee/bin/ftcli", line 5, in <module>
    from fittrackee.cli import cli
  File "/home/fittrack/fittrackee/lib64/python3.9/site-packages/fittrackee/__init__.py", line 21, in <module>
    from flask_sqlalchemy import SQLAlchemy
  File "/home/fittrack/fittrackee/lib64/python3.9/site-packages/flask_sqlalchemy/__init__.py", line 14, in <module>
    from flask import _app_ctx_stack, abort, current_app, request
ImportError: cannot import name '_app_ctx_stack' from 'flask' (/home/fittrack/fittrackee/lib64/python3.9/site-packages/flask/__init__.py)

When I want to start fittrackee now, I also get this error:

Traceback (most recent call last):
  File "/home/fittrack/fittrackee/bin/fittrackee", line 5, in <module>
    from fittrackee.__main__ import main
  File "/home/fittrack/fittrackee/lib64/python3.9/site-packages/fittrackee/__init__.py", line 21, in <module>
    from flask_sqlalchemy import SQLAlchemy
  File "/home/fittrack/fittrackee/lib64/python3.9/site-packages/flask_sqlalchemy/__init__.py", line 14, in <module>
    from flask import _app_ctx_stack, abort, current_app, request
ImportError: cannot import name '_app_ctx_stack' from 'flask' (/home/fittrack/fittrackee/lib64/python3.9/site-packages/flask/__init__.py)

Did I miss something?

Jan

escuco commented

This was the upgrade log for pip install -U fittrackee :

Requirement already satisfied: fittrackee in ./lib/python3.9/site-packages (0.7.23)
Collecting fittrackee
  Obtaining dependency information for fittrackee from https://files.pythonhosted.org/packages/b6/f7/501bfd5604de808592b8481f237669e8ec9e9e24e16b391707c8b73e1954/fittrackee-0.7.24-py3-none-any.whl.metadata
  Downloading fittrackee-0.7.24-py3-none-any.whl.metadata (4.1 kB)
Requirement already satisfied: authlib==1.2.1 in ./lib/python3.9/site-packages (from fittrackee) (1.2.1)
Requirement already satisfied: babel<3.0.0,>=2.11.0 in ./lib/python3.9/site-packages (from fittrackee) (2.11.0)
Collecting click<9.0.0,>=8.1.7 (from fittrackee)
  Obtaining dependency information for click<9.0.0,>=8.1.7 from https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl.metadata
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Requirement already satisfied: dramatiq[redis]<2.0,>=1.14 in ./lib/python3.9/site-packages (from fittrackee) (1.14.0)
Collecting flask<4.0,>=3.0 (from fittrackee)
  Obtaining dependency information for flask<4.0,>=3.0 from https://files.pythonhosted.org/packages/36/42/015c23096649b908c809c69388a805a571a3bea44362fe87e33fc3afa01f/flask-3.0.0-py3-none-any.whl.metadata
  Downloading flask-3.0.0-py3-none-any.whl.metadata (3.6 kB)
Requirement already satisfied: flask-bcrypt<2.0,>=1.0 in ./lib/python3.9/site-packages (from fittrackee) (1.0.1)
Requirement already satisfied: flask-dramatiq<0.7,>=0.6 in ./lib/python3.9/site-packages (from fittrackee) (0.6.0)
Requirement already satisfied: flask-limiter[redis]<4.0,>=3.5 in ./lib/python3.9/site-packages (from fittrackee) (3.5.0)
Requirement already satisfied: flask-migrate<5.0,>=4.0 in ./lib/python3.9/site-packages (from fittrackee) (4.0.0)
Requirement already satisfied: gpxpy==1.5.0 in ./lib/python3.9/site-packages (from fittrackee) (1.5.0)
Requirement already satisfied: gunicorn<22.0,>=21.0 in ./lib/python3.9/site-packages (from fittrackee) (21.2.0)
Requirement already satisfied: humanize<5.0,>=4.7 in ./lib/python3.9/site-packages (from fittrackee) (4.7.0)
Requirement already satisfied: psycopg2-binary<3.0,>=2.9 in ./lib/python3.9/site-packages (from fittrackee) (2.9.3)
Requirement already satisfied: pyjwt<3.0,>=2.8 in ./lib/python3.9/site-packages (from fittrackee) (2.8.0)
Requirement already satisfied: pyopenssl<24.0,>=23.2 in ./lib/python3.9/site-packages (from fittrackee) (23.2.0)
Requirement already satisfied: pytz<2024.0,>=2023.3 in ./lib/python3.9/site-packages (from fittrackee) (2023.3)
Requirement already satisfied: shortuuid<2.0.0,>=1.0.11 in ./lib/python3.9/site-packages (from fittrackee) (1.0.11)
Requirement already satisfied: sqlalchemy==1.4.49 in ./lib/python3.9/site-packages (from fittrackee) (1.4.49)
Requirement already satisfied: staticmap<0.6.0,>=0.5.7 in ./lib/python3.9/site-packages (from fittrackee) (0.5.7)
Requirement already satisfied: ua-parser<0.19.0,>=0.18.0 in ./lib/python3.9/site-packages (from fittrackee) (0.18.0)
Requirement already satisfied: cryptography>=3.2 in ./lib/python3.9/site-packages (from authlib==1.2.1->fittrackee) (38.0.4)
Requirement already satisfied: greenlet!=0.4.17 in ./lib/python3.9/site-packages (from sqlalchemy==1.4.49->fittrackee) (1.1.2)
Requirement already satisfied: prometheus-client>=0.2 in ./lib/python3.9/site-packages (from dramatiq[redis]<2.0,>=1.14->fittrackee) (0.14.1)
Requirement already satisfied: redis<5.0,>=2.0 in ./lib/python3.9/site-packages (from dramatiq[redis]<2.0,>=1.14->fittrackee) (4.3.3)
Collecting Werkzeug>=3.0.0 (from flask<4.0,>=3.0->fittrackee)
  Obtaining dependency information for Werkzeug>=3.0.0 from https://files.pythonhosted.org/packages/b6/a5/54b01f663d60d5334f6c9c87c26274e94617a4fd463d812463626423b10d/werkzeug-3.0.0-py3-none-any.whl.metadata
  Downloading werkzeug-3.0.0-py3-none-any.whl.metadata (4.1 kB)
Requirement already satisfied: Jinja2>=3.1.2 in ./lib/python3.9/site-packages (from flask<4.0,>=3.0->fittrackee) (3.1.2)
Requirement already satisfied: itsdangerous>=2.1.2 in ./lib/python3.9/site-packages (from flask<4.0,>=3.0->fittrackee) (2.1.2)
Requirement already satisfied: blinker>=1.6.2 in ./lib/python3.9/site-packages (from flask<4.0,>=3.0->fittrackee) (1.6.2)
Requirement already satisfied: importlib-metadata>=3.6.0 in ./lib/python3.9/site-packages (from flask<4.0,>=3.0->fittrackee) (4.11.4)
Requirement already satisfied: bcrypt>=3.1.1 in ./lib/python3.9/site-packages (from flask-bcrypt<2.0,>=1.0->fittrackee) (3.2.2)
Requirement already satisfied: limits>=2.8 in ./lib/python3.9/site-packages (from flask-limiter[redis]<4.0,>=3.5->fittrackee) (3.2.0)
Requirement already satisfied: ordered-set<5,>4 in ./lib/python3.9/site-packages (from flask-limiter[redis]<4.0,>=3.5->fittrackee) (4.1.0)
Requirement already satisfied: rich<14,>=12 in ./lib/python3.9/site-packages (from flask-limiter[redis]<4.0,>=3.5->fittrackee) (12.6.0)
Requirement already satisfied: typing-extensions>=4 in ./lib/python3.9/site-packages (from flask-limiter[redis]<4.0,>=3.5->fittrackee) (4.4.0)
Requirement already satisfied: Flask-SQLAlchemy>=1.0 in ./lib/python3.9/site-packages (from flask-migrate<5.0,>=4.0->fittrackee) (2.5.1)
Requirement already satisfied: alembic>=0.7 in ./lib/python3.9/site-packages (from flask-migrate<5.0,>=4.0->fittrackee) (1.8.0)
Requirement already satisfied: packaging in ./lib/python3.9/site-packages (from gunicorn<22.0,>=21.0->fittrackee) (21.3)
Requirement already satisfied: Pillow in ./lib/python3.9/site-packages (from staticmap<0.6.0,>=0.5.7->fittrackee) (9.5.0)
Requirement already satisfied: requests in ./lib/python3.9/site-packages (from staticmap<0.6.0,>=0.5.7->fittrackee) (2.28.0)
Requirement already satisfied: Mako in ./lib/python3.9/site-packages (from alembic>=0.7->flask-migrate<5.0,>=4.0->fittrackee) (1.2.0)
Requirement already satisfied: cffi>=1.1 in ./lib/python3.9/site-packages (from bcrypt>=3.1.1->flask-bcrypt<2.0,>=1.0->fittrackee) (1.15.0)
Requirement already satisfied: zipp>=0.5 in ./lib/python3.9/site-packages (from importlib-metadata>=3.6.0->flask<4.0,>=3.0->fittrackee) (3.8.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./lib/python3.9/site-packages (from Jinja2>=3.1.2->flask<4.0,>=3.0->fittrackee) (2.1.1)
Requirement already satisfied: deprecated>=1.2 in ./lib/python3.9/site-packages (from limits>=2.8->flask-limiter[redis]<4.0,>=3.5->fittrackee) (1.2.13)
Requirement already satisfied: setuptools in ./lib/python3.9/site-packages (from limits>=2.8->flask-limiter[redis]<4.0,>=3.5->fittrackee) (58.1.0)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in ./lib/python3.9/site-packages (from packaging->gunicorn<22.0,>=21.0->fittrackee) (3.0.9)
Requirement already satisfied: async-timeout>=4.0.2 in ./lib/python3.9/site-packages (from redis<5.0,>=2.0->dramatiq[redis]<2.0,>=1.14->fittrackee) (4.0.2)
Requirement already satisfied: commonmark<0.10.0,>=0.9.0 in ./lib/python3.9/site-packages (from rich<14,>=12->flask-limiter[redis]<4.0,>=3.5->fittrackee) (0.9.1)
Requirement already satisfied: pygments<3.0.0,>=2.6.0 in ./lib/python3.9/site-packages (from rich<14,>=12->flask-limiter[redis]<4.0,>=3.5->fittrackee) (2.13.0)
Requirement already satisfied: charset-normalizer~=2.0.0 in ./lib/python3.9/site-packages (from requests->staticmap<0.6.0,>=0.5.7->fittrackee) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in ./lib/python3.9/site-packages (from requests->staticmap<0.6.0,>=0.5.7->fittrackee) (3.3)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./lib/python3.9/site-packages (from requests->staticmap<0.6.0,>=0.5.7->fittrackee) (1.26.9)
Requirement already satisfied: certifi>=2017.4.17 in ./lib/python3.9/site-packages (from requests->staticmap<0.6.0,>=0.5.7->fittrackee) (2022.5.18.1)
Requirement already satisfied: pycparser in ./lib/python3.9/site-packages (from cffi>=1.1->bcrypt>=3.1.1->flask-bcrypt<2.0,>=1.0->fittrackee) (2.21)
Requirement already satisfied: wrapt<2,>=1.10 in ./lib/python3.9/site-packages (from deprecated>=1.2->limits>=2.8->flask-limiter[redis]<4.0,>=3.5->fittrackee) (1.14.1)
Downloading fittrackee-0.7.24-py3-none-any.whl (9.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.0/9.0 MB 22.4 MB/s eta 0:00:00
Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 3.1 MB/s eta 0:00:00
Downloading flask-3.0.0-py3-none-any.whl (99 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 99.7/99.7 kB 4.7 MB/s eta 0:00:00
Downloading werkzeug-3.0.0-py3-none-any.whl (226 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.6/226.6 kB 5.8 MB/s eta 0:00:00
Installing collected packages: Werkzeug, click, flask, fittrackee
  Attempting uninstall: Werkzeug
    Found existing installation: Werkzeug 2.3.7
    Uninstalling Werkzeug-2.3.7:
      Successfully uninstalled Werkzeug-2.3.7
  Attempting uninstall: click
    Found existing installation: click 8.1.3
    Uninstalling click-8.1.3:
      Successfully uninstalled click-8.1.3
  Attempting uninstall: flask
    Found existing installation: Flask 2.3.3
    Uninstalling Flask-2.3.3:
      Successfully uninstalled Flask-2.3.3
  Attempting uninstall: fittrackee
    Found existing installation: fittrackee 0.7.23
    Uninstalling fittrackee-0.7.23:
      Successfully uninstalled fittrackee-0.7.23
Successfully installed Werkzeug-3.0.0 click-8.1.7 fittrackee-0.7.24 flask-3.0.0

SamR1 commented

Hi Jan,

Thanks for the detail.
The error seems to be linked to FlaskSQLAlchemy version (which is not pinned in the package). This version may be not compatible with Flask 3+.

I was able to reproduce it with Flask-SQLAlchemy 2.5.1. The workaround is to update Flask-SQLAlchemy to 3.0.5:

$ pip install Flask-SQLAlchemy==3.0.5

I will add Flask-SQLAlchemy version in the package to force upgrade.


Edit:
I replaced the version with the last compatible version (3.0.5, tested on CI).

escuco commented

Hello,

thank you very much for your fast reply. Updating Flask-SQLAlchemy did the trick, everything is working fine now.

Thanks again
Jan

SamR1 commented

fix released in v0.7.25