martin-ueding / geo-activity-playground

Data analysis and visualization based on GPS tracked outdoor activities.
https://martin-ueding.github.io/geo-activity-playground/
MIT License
35 stars 14 forks source link

Fehler unter Python >=3.12.4 #160

Closed multiburst closed 1 month ago

multiburst commented 2 months ago

Ab Python 3.12.4 gibt es bei Start Abbruch und diese Fehlermeldung

TypeError: ForwardRef._evaluate() missing 1 required keyword-only argument: 'recursive_guard'

Der Fehler entsteht durch Inkompatiblität von Pydantic mit neueren Python Versionen.

Siehe auch Github Issue

Pydantic wird wiederum von Strava gebraucht. Die Abhängigkeiten auf eine neuere Strava API Version zu setzen, hilft leider nicht.

Volle Ausgabe nach Start:


  File "<string>", line 1, in <module>
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/mnt/data/coding/GPS/geo-activity-playground/geo_activity_playground/__main__.py", line 15, in <module>
    from geo_activity_playground.webui.app import web_ui_main
  File "/mnt/data/coding/GPS/geo-activity-playground/geo_activity_playground/webui/app.py", line 23, in <module>
    from .upload.blueprint import make_upload_blueprint
  File "/mnt/data/coding/GPS/geo-activity-playground/geo_activity_playground/webui/upload/blueprint.py", line 6, in <module>
    from .controller import UploadController
  File "/mnt/data/coding/GPS/geo-activity-playground/geo_activity_playground/webui/upload/controller.py", line 21, in <module>
    from geo_activity_playground.importers.strava_api import import_from_strava_api
  File "/mnt/data/coding/GPS/geo-activity-playground/geo_activity_playground/importers/strava_api.py", line 8, in <module>
    from stravalib import Client
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/stravalib/__init__.py", line 1, in <module>
    from stravalib.client import Client
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/stravalib/client.py", line 35, in <module>
    from stravalib import exc, model, strava_model, unithelper
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/stravalib/model.py", line 793, in <module>
    class ActivityLap(
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/pydantic/main.py", line 286, in __new__
    cls.__try_update_forward_refs__()
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/pydantic/main.py", line 808, in __try_update_forward_refs__
    update_model_forward_refs(cls, cls.__fields__.values(), cls.__config__.json_encoders, localns, (NameError,))
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/pydantic/typing.py", line 554, in update_model_forward_refs
    update_field_forward_refs(f, globalns=globalns, localns=localns)
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/pydantic/typing.py", line 520, in update_field_forward_refs
    field.type_ = evaluate_forwardref(field.type_, globalns, localns or None)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/geo-activity-playground-nxDTLv2x-py3.12/lib/python3.12/site-packages/pydantic/typing.py", line 66, in evaluate_forwardref
    return cast(Any, type_)._evaluate(globalns, localns, set())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: ForwardRef._evaluate() missing 1 required keyword-only argument: 'recursive_guard'
beautiful-orca commented 1 month ago

In geo-activity-playground v0.28.0 wird pydantic = "1.10.9" verwendet. Seit pydantic = "1.10.16" bzw. pydantic = "2.7.4" sollte der Fehler mit python = "3.12.4" gefixt sein, siehe #9612

Im master wurde die Version zu pydantic = "2.9.2" geändert. Fix kommt also vermutlich im nächsten release?

beautiful-orca commented 1 month ago

pydantic = "2.8.0" hat auch ein fix für python 3.13, #9613

multiburst commented 1 month ago

In geo-activity-playground v0.28.0 wird pydantic = "1.10.9" verwendet. Seit pydantic = "1.10.16" bzw. pydantic = "2.7.4" sollte der Fehler mit python = "3.12.4" gefixt sein, siehe #9612

Im master wurde die Version zu pydantic = "2.9.2" geändert. Fix kommt also vermutlich im nächsten release?

Grad mal aktuellen Stand ausgecheckt. Läuft!

martin-ueding commented 1 month ago

Ich habe das jetzt mal als Version 0.29.0 veröffentlich, damit die Änderungen auch mal draußen sind.

Vielen Dank für das Testen und auch, dass ihr euch gegenseitig so viel helft!