-
Notifications
You must be signed in to change notification settings - Fork 28
Python 3.14 / 3.14t builds #50
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
Conversation
- { minimal: true, python: cp311 } | ||
- { minimal: true, python: cp312 } | ||
- { minimal: true, platform: { arch: universal2 } } | ||
- { python: cp314t, platform: { os: windows-2025 } } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: a comment (and a todo?) for why this combination is excluded
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added comment and TODO
CIBW_ARCHS: ${{ matrix.platform.arch == 'amd64' && 'AMD64' || matrix.platform.arch }} | ||
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }} | ||
|
||
CIBW_ENVIRONMENT: PYTHON_GIL=1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this enables the GIL on free-threaded python? Maybe add a comment here as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added comment and TODO
tests/conftest.py
Outdated
def pytest_runtest_call(item): | ||
"""Convert pandas requirement exceptions to skips""" | ||
outcome = yield | ||
try: | ||
outcome.get_result() | ||
except Exception as e: | ||
if "'pandas' is required for this operation but it was not installed" in str(e): | ||
pytest.skip("pandas not available - test requires pandas functionality") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a catchall for Python 3.14 isn't it? Maybe we can add a check for the version (e.g. check sys.version_info) and as well, and reraise if the version < 3.14? I've forgotten to install test dependencies too often to allow myself to skip tests.
Also, this probably deserves another TODO. Hopefully that nudges us to remove this once pandas does support >= 3.14.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My immediate idea was that this is useful for any pre-release version of Python.
Perhaps add the check + a TODO to bump it to 3.15 once Pandas ships for 3.14?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Committed the version check and TODO.
tests/conftest.py
Outdated
if sys.version_info[:2] == (3, 14): | ||
try: | ||
outcome.get_result() | ||
except Exception as e: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: duckdb is already imported - may as well catch duckdb.InvalidInputException
. Also - I don't know hookwrappers well enough, but aren't you supposed to return the outcome?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, narrowed to duckdb.InvalidInputException.
Regarding pytest_runtest_call : src, this is correct - it returns None. These are specific hooks, rather than a general hookwrapper.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm! thanks for this!
Cancelled the checks to make space on CI for the release build |
I've run it on my fork, fyi. |
Now that #48 is merged, I'll retest and remove the xfail for the case |
…ildwheel to include 3.14rc2, and handle new pandas warning, and mark unsupported packages as < 3.14.
Not yet available
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, thanks!
Per Discussion: Python 3.14 Free-Threading Support, this is the first step / pre-requisite for free-threading work.
This PR adds Python 3.14 & 3.14t (rc2) builds, with a test change to handle not-yet-available dependencies.
Free Threading is not enabled by this
Free threading is not implemented here. If DuckDB is imported in 3.14t, the GIL is enabled with the following warning:
Timeline
Changes
Added Windows specific build flags for 3.14tNotes:
Marked xfailed Numpy returns strings if Pandas is not installed. #48edit: strikethrough reverted changes