One more finding which I miss.. * Pendulum - the elephant in the room (I like that phrase, yes).
I saw that Ash had already been involved in discussions about Python 3.13 support for pendulum in the PR that my friend from DLTHub started - https://github.com/python-pendulum/pendulum/pull/871 - but regardless from that we also need to have Python 3.13 wheels https://github.com/python-pendulum/pendulum/issues/879#issuecomment-2671428096 . For now in my PR I had to install cargo (i.e. rust build system) in order to compile it - and I had to install a very new one - because the one that comes by default in Debian Bookworm, is too old to compile Pendulum. And unfortunately - as we know from the past Pendulum is not really well "maintained" - it took a long time for them to support 3.12 - and there does not seem a lot of "responsibiity/responsiveness" of doing it from the maintainers. On my personal (for now) list of "Airflow Beach Cleaning" projects, Pendulum is quite firmly between "yellow" and "red" ("watch" vs. "forego"). Being very blunt - should reconsider dropping Pendulum for Airflow 3 ? Or maybe just make it optional and only used in Python < 3.13 - and introduce potentially breaking changes by replacing Pendulum with non-naive datetime everywhere ? I think TP and Ash were the ones who knew most and discussed it before and there was even a proposal from TP to remove the pendulum (as far as I remember). Those changes would be potentially breaking, but because of Pendulum' drop-in replacement for datetime - very little breaking. WDYT? I will add it to the agenda of today's dev call -similarly as the other "cleaning" topics I started recently. J. On Wed, Feb 19, 2025 at 7:26 PM Jarek Potiuk <ja...@potiuk.com> wrote: > This is the time of the year when we attempt to see how far we are from > supporting minor python version released in October (i.e. Python 3.13 now). > Usually it takes a couple of months before we can even try - because of the > number of dependencies - and it was no different this time around. > > For now (it took me a better part of the day today) I managed to build the > CI image with all dependencies and run `uv sync --all-extras --python 3.13 > --reinstall` successfully (but with some cheating, so don't hold your > breath yet). Also I bet there will be a number of test errors to fix, but > for me the goal for now is to see how we stand with dependencies. > > For those who would like to see the changes - the PR is here > https://github.com/apache/airflow/pull/46891 > > And let me summarize the errors/issues/inconveniences I had to workaround: > > *The big one:* > > 1) Combination of Pandas, FAB and Sqlalchemy is such that we cannot have > all of them installed in Python 3.12. We can have either Pandas + > Sqlalchemy 2 (no Fab) or Fab and sqlalchemy 1 (no pandas). > > We know we need to upgrade to sqlalchemy 2 anyway - whatever the road we > choose with Fab - either vendoring in and bumping Sqlalchemy 2 or hoping > for Fab 5 release. For now - I simply removed Fab provider while the PR is > in draft, to see if there are no more problems, and we will have to fix it > before beta I am afraid anyway. > > 2) as explained in [1] I had to remove google-re and I used this > opportunity to make an inventory of needed changes - I will summarize them > in the google-re2 thread > > 3) Apache Beam is as usual a problem - this time there are two > incompatibilities - pyarrow and pandas - but we can simply exclude beam > from 3.13 (as usual) - usually they catch-up with the new version of python > when the next is released (around october). They also have a lot of deps > and more "holding" than ours. > > 4) databricks requires bumping of databricks-connector to 4.0.0 - we might > need to hold on with that one depending on resulting of tests (this is also > possible with bumping pandas + sqlalchemy and was not possible before, I do > not expect major problems here) > > 5) Bumped grpcio-tools - they were held back previously - but removal of > beam, upgrade of pandas allows it to be bumped to a newer version that > supports 3.13 - that is helpful for a number of providers (waeviate, > qdrant) to be 3.13 compatible.. > > 6) Few small things removed: plyvel, ydb, possibly also yandex - depends > on test results > > Currently there is a `uv` workspace bug that requires us to comment out > rather than exclude python versions for dependencies, but I hope that - as > usual - they will fix it in days rather than weeks. The issue in uv repo > https://github.com/astral-sh/uv/issues/11629 > > Those are all (non-trivial) issues so far, I think we are getting really, > really close to having to decide on what to do with FAB and how to unleash > sqlalchemy 2. > > I will talk to Daniel to get more informed about his 5.0.0 plans (he > merged my security fix today in FAB and gearing for a new release > apparently, but I bet it's going to be 4.5.4). > > > Any comments? > > [1] https://lists.apache.org/thread/xtzdp4dx8s6dds4xdp9kdpohns9lvpst >