Support python 3.14#3299
Conversation
| env: | ||
| RAY_ENABLE_UV_RUN_RUNTIME_ENV: "0" |
There was a problem hiding this comment.
should we set this in the ray_session test fixture instead?
so it works outside of CI
There was a problem hiding this comment.
I actually tried that initially, but it cannot be done because the ray uv hook looks at the parent uv run process, including the env vars, at it's import time. So by the time it gets to the ray_session test fixture and does the ray.init(), the new env var is not refreshed to be picked up.
I tested using the same commands (PYTHON=3.14 make test : PYTHON=3.14 RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 make test-integration) that you mentioned, and something to keep in mind for next is that including them in the pr description would be helpful.
What we can do is remove this change in python-ci.yml and make the following change instead
https://github.com/apache/iceberg-python/blob/main/Makefile#L118
RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 $(TEST_RUNNER) pytest tests/ -m integration $(PYTEST_ARGS)
|
|
||
| ray.init( | ||
| ignore_reinit_error=True, | ||
| runtime_env={"working_dir": None}, # Prevent Ray from serializing the working directory to workers |
There was a problem hiding this comment.
RAY_ENABLE_UV_RUN_RUNTIME_ENV is essentially replacing this. None was being passed in to prevent ray from initializing on workers, taking advantage of a bug in ray. Ray has since fixed this bug, preventing None from being passed in for working_dir
There was a problem hiding this comment.
Ah, raised an issue for this earlier today: #3318
Thanks for fixing
|
Could you also test the Manual trigger with these parameters: and include the link in the PR This will help test the changes in |
|
|
||
| test-integration-exec: ## Run integration tests (excluding provision) | ||
| $(TEST_RUNNER) pytest tests/ -m integration $(PYTEST_ARGS) | ||
| RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 $(TEST_RUNNER) pytest tests/ -m integration $(PYTEST_ARGS) |
There was a problem hiding this comment.
i dont like that we're dependent on this env var to be set correctly for tests to pass. Lets see if there's an alternative. I'll do some research
There was a problem hiding this comment.
Another option I had looked into was passing in an empty folder to working_dir, but that seemed worse
|
i think we can use this And remove WDYT? |
|
@kevinjqliu That looks the same as what I had originally attempted in this commit, which failed on integration test due to not picking up the env variable, set at that point in the flow. |
|
Thanks for working on this @afeldman1. I think in general this looks good, but I think it would be good to document |
Rationale for this change
Adds prebuilt support for python 3.14
Free-threaded is still not supported for now
Closes #3123 for standard python
Are these changes tested?
test using:
PYTHON=3.14 make testPYTHON=3.14 make test-integrationPython Build Release Candidate workflow was run: https://github.com/afeldman1/iceberg-python/actions/runs/25225067214
Are there any user-facing changes?
Just support of python 3.14