Hey everyone,

I've opened a PR https://github.com/apache/airflow/pull/35123  to limit
Airflow to Python < 3.12 though I am not sure if this is the best idea so I
seek devlist wisdom to decide whether we should do this, or maybe something
else like allowing airflow to be installed but produce a clean error
indicating 3.12 is not (yet) supported.

Currently Airflow does not work for Python 3.12 - mainly because of
"distutils" removal https://peps.python.org/pep-0632/ and the way how some
of the core dependencies - Pendulum for on - and likely some of our
providers have other breaking dependencies. While Andrey works on Pendulum
upgrade as they released version 3 that is compatible, this might take some
time and we might find out there are other problems as we are not running
the full test suite for 3.12 due to dependency issues.

It looks like that Python 3.12 is a bit different than 3.7 - 3.11 releases
were - this is the first release that is more aggressive when it comes to
backwards compatibility. There are also some unit test methods removal and
other change that might make our 3.12  migration a bit more painful (more
details here for example)
https://towardsdatascience.com/python3-12-98245ecd6a97

Currently people attempting to install Airflow with Python 3.12 will get
unobvious errors (like build errors or runtime errors that are cryptic).
This is already happening and users are reporting issues that "airflow does
not work" which boils down to installing Airflow (or breeze) for Python
3.12.

I initially thought (hence the PR) that we can limit Airflow to < 3.12 and
release it in 2.7.3 (and remove the limitation once we get official 3.12
support).

So maybe a better solution will be to check the Python version at startup
time and fail Airflow with clear error. Or maybe we should not worry about
it at all?

The problem is that if we limit 2.7.3, users installing airflow on 3.12
will install 2.7.2 because it has no limit for Python - and will end up
with the very same experience they have now.

WDYT?

J.

Reply via email to