Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Airflow Python 3.12 support #36546

Closed
2 tasks done
dirrao opened this issue Jan 3, 2024 · 17 comments · Fixed by #37524
Closed
2 tasks done

Airflow Python 3.12 support #36546

dirrao opened this issue Jan 3, 2024 · 17 comments · Fixed by #37524
Assignees
Labels
kind:feature Feature Requests

Comments

@dirrao
Copy link
Collaborator

dirrao commented Jan 3, 2024

Description

Right now, airflow is not officially supporting the Python 3.12 version

Use case/motivation

Python software stack update.

Related issues

No response

Are you willing to submit a PR?

  • Yes I am willing to submit a PR!

Code of Conduct

@dirrao dirrao added kind:feature Feature Requests needs-triage label for new issues that we didn't triage yet labels Jan 3, 2024
@Taragolis
Copy link
Contributor

This kind of task not a straight forward, required to someone check what kind of core / providers dependencies not ready for 3.12 yet, or we use outdated dependencies or some deprecated stuff:

At current moment we know at lest incompatible with that pendulum 2 doesn't support of python 3.12, but this one could be solved by #36281

@potiuk
Copy link
Member

potiuk commented Jan 3, 2024

At current moment we know at lest incompatible with that pendulum 2 doesn't support of python 3.12, but this one could be solved by #36281

Yeah. I believe this is the only "serious" blocker. We have option to exclude certain providers if they turn out to be incompatible ("excluded-python-versions" flag in provider.yaml) and we've done that in the past. So I'd say @dirrao if you want to take the lead on that - open a PR with added Python 3.12 in Breeze and we can keep it open and rebased until all the tests pass (might need to exclude some providers).

I think it's about the right time to attempt it - usually it takes 3-4 months for most important dependencies to catch up. We might also need to bump some more deps, not only Pendulum, but yeah - Pendulum is the "hard" blocker.

@potiuk potiuk removed the needs-triage label for new issues that we didn't triage yet label Jan 3, 2024
@dirrao
Copy link
Collaborator Author

dirrao commented Jan 3, 2024

At current moment we know at lest incompatible with that pendulum 2 doesn't support of python 3.12, but this one could be solved by #36281

Yeah. I believe this is the only "serious" blocker. We have option to exclude certain providers if they turn out to be incompatible ("excluded-python-versions" flag in provider.yaml) and we've done that in the past. So I'd say @dirrao if you want to take the lead on that - open a PR with added Python 3.12 in Breeze and we can keep it open and rebased until all the tests pass (might need to exclude some providers).

I think it's about the right time to attempt it - usually it takes 3-4 months for most important dependencies to catch up. We might also need to bump some more deps, not only Pendulum, but yeah - Pendulum is the "hard" blocker.

Yes. I started looking into updating Breeze.

@dirrao
Copy link
Collaborator Author

dirrao commented Jan 3, 2024

I have updated the breeze. However when I run this test with 3.12, I am seeing python3.12 image not found. How to publish this image?

Error response from daemon: No such image: ghcr.io/apache/airflow/main/ci/python3.12:latest

@potiuk
Copy link
Member

potiuk commented Jan 3, 2024

You should be able to build it locally with breeze ci-image build --python 3.12 (after you add it to configuration)

@potiuk
Copy link
Member

potiuk commented Jan 3, 2024

You might see some missing cache etc. but they should be just warnings - and you can always disable cache with build command flags (use --help to see the flags)

@dirrao
Copy link
Collaborator Author

dirrao commented Jan 4, 2024

I can run after making the changes in Breeze. However, I faced two problems as follows.

  1. The build is looking for the remote constraints file. I can resolve it by using a local constraints file.
    https://raw.githubusercontent.com/apache/airflow/constraints-3.12.txt/constraints-source-providers-3.12.txt
  2. Pip is not able to resolve the remote apache airflow package version. Not sure we can if can bypass it.
    #0 22.01 ERROR: Package 'apache-airflow' requires a different Python: 3.12.1 not in '<3.12,~=3.8'

Can you let me know the next steps?

@potiuk
Copy link
Member

potiuk commented Jan 4, 2024

Oh yeah.

  1. I just solved the first one by pushing copy of 3.11 constraints which are "good enough" to start with - this should be fixed now
  2. the second is I think the result of the build optimilsation we have for the build to use main for our. I opened PR Remove Python 3.12 limitation in order to test Python 3.12 builds #36595 to remove the limt from main and once merged this problem should be gone.

@potiuk
Copy link
Member

potiuk commented Jan 4, 2024

For 1: see this commit 3f3ed81

(and generally main constraints history is here https://github.com/apache/airflow/commits/constraints-main/)

@potiuk
Copy link
Member

potiuk commented Jan 4, 2024

Merged. You can continue your quest @dirrao

@dirrao
Copy link
Collaborator Author

dirrao commented Jan 7, 2024

Now, I can make progress. However, the 3.12 uploaded dependency constraint files are old as compared to 3.11.
For the time being I am continuing with 3.11 as the base. As of now, I am stuck at the below error. Looks like I am facing the below error mentioned in the below stack overflow thread.
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
https://stackoverflow.com/questions/77364550/attributeerror-module-pkgutil-has-no-attribute-impimporter-did-you-mean

@potiuk
Copy link
Member

potiuk commented Jan 7, 2024

Re: old dependencies: This is no problem. You should always build your image with --upgrade-to-newer-dependencies locally - this will autoamatically get your dependencies upgraded to latest matching Airflow specification.

What you also want, is to make single modification (might be an added coomment) to setup.py or pyproject.toml and open a PR with your changes (and 3.12 support added) . What this will cause is that your PR will get the image built with --upgrade-to-newer-dependencies flag automatically.

I think once you open such PR, you can easier share the problems you will experience.

@Froskekongen
Copy link

Any progress on this @dirrao?

@potiuk
Copy link
Member

potiuk commented Feb 16, 2024

Any progress on this @dirrao?

Python 3.12 is currently being worked on in #36755 . There is one thing left in order to merge it - namely converting universal_pathlib to use the new Python 3.12 ready 0.2.0 version (you can see detail and links in the PR). Would you like to help with that @Froskekongen ? It waits for someone to do it.

@potiuk
Copy link
Member

potiuk commented Feb 20, 2024

Well. It's going to be closed when the PR adding Python 3.12 is merged :)

@potiuk
Copy link
Member

potiuk commented Feb 20, 2024

Rebsed and runnning the PR https://github.com/apache/airflow/actions/runs/7972889219

@eladkal
Copy link
Contributor

eladkal commented Mar 15, 2024

Fixed in #38025

@eladkal eladkal closed this as completed Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:feature Feature Requests
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants