Skip to content

Commit e4f757e

Browse files
committed
3.14t support
1 parent 4fb4814 commit e4f757e

File tree

8 files changed

+103
-8
lines changed

8 files changed

+103
-8
lines changed

.github/workflows/tests.yaml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
fail-fast: false
2727
matrix:
2828
os: [ubuntu-latest, windows-latest, macos-latest]
29-
environment: [mindeps, "3.10", "3.11", "3.12", "3.13", "3.14"]
29+
environment: [mindeps, "3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
3030
label: [default]
3131
extra_packages: [null]
3232
# Cherry-pick test modules to split the overall runtime roughly in half
@@ -44,6 +44,8 @@ jobs:
4444
environment: "3.12"
4545
- os: macos-latest
4646
environment: "3.13"
47+
- os: macos-latest
48+
environment: "3.14t"
4749

4850
- os: windows-latest
4951
environment: mindeps
@@ -168,6 +170,19 @@ jobs:
168170
|| steps.cache.outputs.cache-hit != 'true'
169171
)
170172
173+
- name: Disable msgpack C extension on free-threading
174+
# FIXME https://github.com/msgpack/msgpack-python/issues/613
175+
# The msgpack C module does not contain any race conditions in free-threading,
176+
# but does not release the GIL. So we need to either install the (slower)
177+
# pure-python variant or we need to run the test suite with PYTHON_GIL=0.
178+
# The former approach has the benefit of proving that msgpack is the only offender.
179+
if: ${{ matrix.environment == '3.14t' }}
180+
shell: bash -l {0}
181+
run: |
182+
conda uninstall -y -v --force msgpack-python
183+
MSGPACK_PUREPYTHON=1 python -m pip install msgpack --no-binary msgpack --no-cache --force-reinstall -v
184+
python -Werror -c 'import msgpack'
185+
171186
- name: Install
172187
shell: bash -l {0}
173188
run: |

continuous_integration/environment-3.10.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dependencies:
1313
- cloudpickle
1414
- coverage
1515
- cython # Only tested here; also a dependency of crick
16-
- dask # overridden by git tip below
16+
- dask # overridden by git tip below; pulls in optional dependencies
1717
- fsspec
1818
- gilknocker
1919
- h5py

continuous_integration/environment-3.11.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ dependencies:
1111
- click
1212
- cloudpickle
1313
- coverage
14-
- dask # overridden by git tip below
14+
- dask # overridden by git tip below; pulls in optional dependencies
1515
- fsspec # overridden by git tip below
1616
- gilknocker
1717
- h5py

continuous_integration/environment-3.12.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ dependencies:
1111
- click
1212
- cloudpickle
1313
- coverage
14-
- dask # overridden by git tip below
14+
- dask # overridden by git tip below; pulls in optional dependencies
1515
- fsspec # overridden by git tip below
1616
- gilknocker
1717
- h5py

continuous_integration/environment-3.13.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: dask-distributed-313
1+
name: dask-distributed
22
channels:
33
- conda-forge
44
dependencies:
@@ -10,7 +10,7 @@ dependencies:
1010
- click
1111
- cloudpickle
1212
- coverage
13-
- dask # overridden by git tip below
13+
- dask # overridden by git tip below; pulls in optional dependencies
1414
- fsspec # overridden by git tip below
1515
- gilknocker
1616
- h5py

continuous_integration/environment-3.14.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: dask-distributed-313
1+
name: dask-distributed
22
channels:
33
- conda-forge
44
dependencies:
@@ -10,7 +10,7 @@ dependencies:
1010
- click
1111
- cloudpickle
1212
- coverage
13-
- dask # overridden by git tip below
13+
- dask # overridden by git tip below; pulls in optional dependencies
1414
- fsspec # overridden by git tip below
1515
- gilknocker
1616
- h5py
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: dask-distributed
2+
channels:
3+
- conda-forge
4+
dependencies:
5+
- python-freethreading=3.14
6+
- packaging
7+
- pip
8+
- asyncssh
9+
- bokeh>3
10+
- click
11+
- cloudpickle
12+
- coverage
13+
# conda variant of dask depends on cytoolz, which is not available
14+
# on conda yet. Manually install dask dependencies from conda below.
15+
# - dask # overridden by git tip below; pulls in optional dependencies
16+
- fsspec # overridden by git tip below
17+
# - gilknocker # Makes no sense in free-threading
18+
# - h5py # Not available for 3.14t
19+
# - ipykernel # Not available for 3.14t
20+
- ipywidgets
21+
- jinja2
22+
- jupyter_events
23+
# - jupyter-server-proxy # Not available for 3.14t
24+
# - jupyterlab # Not available for 3.14t
25+
- locket
26+
# FIXME https://github.com/msgpack/msgpack-python/issues/613
27+
# Install placeholder to prevent distributed below from compiling the C extension from
28+
# sources. tests.yml will replace this with a pure-python variant.
29+
- msgpack-python
30+
- netcdf4
31+
- paramiko
32+
- pre-commit
33+
- prometheus_client
34+
- psutil
35+
- pyarrow
36+
- pytest
37+
- pytest-cov
38+
- pytest-faulthandler
39+
- pytest-repeat
40+
- pytest-rerunfailures
41+
- pytest-timeout
42+
- requests
43+
- scikit-learn
44+
- scipy
45+
- sortedcollections
46+
- tblib
47+
- toolz
48+
- tornado
49+
- zict # overridden by git tip below
50+
- zstandard
51+
52+
##### 3.14t temporary hacks
53+
# packages normally pulled in by the `dask` conda package
54+
- dask-core
55+
# - cytoolz # conda package for 3.14t not yet available; installed via pip below
56+
- lz4
57+
- numpy
58+
- pandas>=3 # Actually need >=3.0.1 due to severe race conditions in 3.0
59+
# (https://github.com/pandas-dev/pandas/pull/63783)
60+
# Until 3.0.1 is released, this is temporarily overridden
61+
# by pandas git below.
62+
- pyarrow
63+
- bokeh
64+
- jinja2
65+
- pyyaml
66+
- sortedcontainers
67+
- urllib3
68+
##### end 3.14t hacks
69+
70+
- pip:
71+
- git+https://github.com/dask/dask
72+
- git+https://github.com/dask/zict
73+
- git+https://github.com/fsspec/filesystem_spec
74+
- keras
75+
76+
##### 3.14t temporary hacks
77+
- cytoolz # conda package for 3.14t not yet available
78+
- git+https://github.com/pandas-dev/pandas.git@3.0.x # Need pandas 3.0.1
79+
##### end 3.14t hacks

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ classifiers = [
2121
"Programming Language :: Python :: 3.12",
2222
"Programming Language :: Python :: 3.13",
2323
"Programming Language :: Python :: 3.14",
24+
"Programming Language :: Python :: Free Threading :: 1 - Unstable",
2425
"Topic :: Scientific/Engineering",
2526
"Topic :: System :: Distributed Computing",
2627
]

0 commit comments

Comments
 (0)