Skip to content

Conversation

benclifford
Copy link
Collaborator

This PR begins testing against upcoming Python 3.14 to flush out issues ahead of time.

@benclifford
Copy link
Collaborator Author

first failure: cannot build pydantic:

        error: the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)
        = help: please check if an updated version of PyO3 is available. Current version: 0.24.1
        = help: set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 to suppress this check and build anyway using the stable ABI

This dependency comes via Globus Compute, in the test environment, and it lookslike pydantic-core supports Python 3.14 as of pydantic/pydantic-core#1714 which I think is so far unreleased.

@benclifford
Copy link
Collaborator Author

proxystore also depends on pydantic so i've removed it from this branch, pending new pydantic

@benclifford
Copy link
Collaborator Author

now I see this test failing:

 Process Process-1:
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.14.0-rc.1/x64/lib/python3.14/multiprocessing/process.py", line 320, in _bootstrap
    self.run()
    ~~~~~~~~^^
  File "/opt/hostedtoolcache/Python/3.14.0-rc.1/x64/lib/python3.14/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/parsl/parsl/parsl/tests/test_regression/test_854.py", line 12, in consumer
    x = in_q.get()
  File "/home/runner/work/parsl/parsl/parsl/multiprocessing.py", line 47, in get
    with self._counter.get_lock():
         ^^^^^^^^^^^^^
AttributeError: 'MacSafeQueue' object has no attribute '_counter'

I think this is because test_854.py uses Process, with the default multiprocessing launch type. which in Python 3.14 changed from fork to forkserver. and I think that means its possible that this class has been broken on macs for a while? because spawn has been used there, not fork for a long time. There's no testing of os x support.

@benclifford
Copy link
Collaborator Author

proxystore has a fairly loose bound on pydantic, so probably when a new pydantic is released, this dependency problem will be resolved and the proxystore tests can be restored.

…resents cross-Python version testing, and possibly more accurately represents MacOS testing on linux
@benclifford benclifford mentioned this pull request Aug 19, 2025
@benclifford benclifford changed the title Add Python 3.14 rc1 to CI Add Python 3.14 rc2 to CI Sep 10, 2025
This reverts commit 0d06b6d.

there's a proxystore alpha out that is now forced in
this branch so perhaps proxystore can work now?
…t - so this CI run won't test anything with globus compute. when there's a new pydrantic release out, try again."

This reverts commit aff93f3.
@benclifford
Copy link
Collaborator Author

dill release 0.4.0 contains this python 3.14 support. uqfoundation/dill#691 which I take as implying earlier dills will not work properly with 3.14

globus compute pins an earlier dill (and I have noted that to the globus compute dev team on slack) and I wonder if that means the pin will propagate to the parsl test environment -- the test that passed ok, way above here ^, used dill 0.4.0 because GC was disabled in that build.

@benclifford
Copy link
Collaborator Author

on my laptop I have tested that dill < 0.4.0 breaks with Python 3.14 - a breakage that isn't directly visible in the tests are the moment, as dill < 0.4.0 only happens when Globus Compute is also installs, which breaks in a different way first.

@benclifford benclifford mentioned this pull request Sep 26, 2025
@benclifford benclifford changed the title Add Python 3.14 rc2 to CI Add Python 3.14 rc3 to CI Sep 29, 2025
github-merge-queue bot pushed a commit that referenced this pull request Sep 29, 2025
# Description

Python 3.9 becomes end-of-life in the next month - see
https://devguide.python.org/versions/

This PR executes Parsl's informal policy to drop Python version support
around the time that a Python version becomes end-of-life.

At the same time and on a similar topic, PR #3924 investigates adding
support for Python 3.14 which has an initial release scheduled soon.

# Changed Behaviour

If you are installing on Python 3.9, you will probably now get package
install errors that your Python is too old.
Post this PR, you will start finding the codebase begin to use features
which are not supported on Python 3.9 without any further notification.

## Type of change

- Code maintenance/cleanup

---------

Co-authored-by: Kevin Hunter Kesling <[email protected]>
@benclifford
Copy link
Collaborator Author

I just pushed changes to use Python 3.14.0, thinking that it was available based on my misreading of some other GitHub Actions documentation. But I'll leave it in place because presumably it soon will be -- Python 3.14 was released earlier today.

@benclifford benclifford changed the title Add Python 3.14 rc3 to CI Add Python 3.14 to CI Oct 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant