Skip to content

Commit fb8494d

Browse files
Relax pandas<3 pin (#4691)
Co-authored-by: chrishalcrow <chrishalcrow@gmail.com> Co-authored-by: Chris Halcrow <57948917+chrishalcrow@users.noreply.github.com>
1 parent ecf5c6d commit fb8494d

15 files changed

Lines changed: 81 additions & 76 deletions

.github/workflows/caches_cron_job.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ name: Create caches for gin ecephys data and virtual env
22

33
on:
44
workflow_dispatch:
5-
push: # When something is pushed into main this checks if caches need to be re-created
5+
push: # When something is pushed into main this checks if caches need to be re-created
66
branches:
77
- main
88
schedule:
9-
- cron: "0 12 * * *" # Daily at noon UTC
9+
- cron: "0 12 * * *" # Daily at noon UTC
1010

1111
jobs:
1212
create-gin-data-cache-if-missing:
@@ -19,10 +19,10 @@ jobs:
1919
steps:
2020
- uses: actions/setup-python@v6
2121
with:
22-
python-version: '3.11'
22+
python-version: "3.10"
2323
- uses: astral-sh/setup-uv@v7
2424
with:
25-
python-version: '3.11'
25+
python-version: "3.10"
2626
enable-cache: true
2727
ignore-nothing-to-cache: true # some runs do not require building a cache (ie macOS) this says this is okay
2828
- name: Create the directory to store the data
@@ -41,7 +41,7 @@ jobs:
4141
with:
4242
path: ~/spikeinterface_datasets
4343
key: ${{ runner.os }}-datasets-${{ steps.repo_hash.outputs.dataset_hash }}
44-
lookup-only: 'true' # Avoids downloading the data, saving behavior is not affected.
44+
lookup-only: "true" # Avoids downloading the data, saving behavior is not affected.
4545
- name: Cache found?
4646
run: echo "Cache-hit == ${{steps.cache-datasets.outputs.cache-hit == 'true'}}"
4747
shell: bash

.github/workflows/core-test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
branches:
77
- main
88

9-
concurrency: # Cancel previous workflows on the same pull request
9+
concurrency: # Cancel previous workflows on the same pull request
1010
group: ${{ github.workflow }}-${{ github.ref }}
1111
cancel-in-progress: true
1212

@@ -22,10 +22,10 @@ jobs:
2222
- uses: actions/checkout@v6
2323
- uses: actions/setup-python@v6
2424
with:
25-
python-version: '3.11'
25+
python-version: "3.10"
2626
- uses: astral-sh/setup-uv@v7
2727
with:
28-
python-version: '3.11'
28+
python-version: "3.10"
2929
enable-cache: true
3030
- name: Install dependencies
3131
run: |
@@ -35,7 +35,7 @@ jobs:
3535
- name: Test core with pytest
3636
run: |
3737
pytest -m "core" -vv -ra --durations=0 --durations-min=0.001 | tee report.txt; test $? -eq 0 || exit 1
38-
shell: bash # Necessary for pipeline to work on windows
38+
shell: bash # Necessary for pipeline to work on windows
3939
- name: Build test summary
4040
run: |
4141
uv pip install --system pandas
@@ -45,4 +45,4 @@ jobs:
4545
python ./.github/scripts/build_job_summary.py report.txt >> $GITHUB_STEP_SUMMARY
4646
cat $GITHUB_STEP_SUMMARY
4747
rm report.txt
48-
shell: bash # Necessary for pipeline to work on windows
48+
shell: bash # Necessary for pipeline to work on windows

.github/workflows/cross_version_serialization.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ on:
2020
# watches core only; a break introduced in generation/ or preprocessing/ would not
2121
# trigger it.
2222
paths:
23-
- 'src/spikeinterface/core/**'
24-
- '.github/scripts/serialization/**'
25-
- '.github/workflows/cross_version_serialization.yml'
23+
- "src/spikeinterface/core/**"
24+
- ".github/scripts/serialization/**"
25+
- ".github/workflows/cross_version_serialization.yml"
2626
schedule:
27-
- cron: '0 4 * * 0' # weekly, Sunday 04:00 UTC
27+
- cron: "0 4 * * 0" # weekly, Sunday 04:00 UTC
2828
workflow_dispatch:
2929

3030
concurrency:
@@ -43,13 +43,13 @@ jobs:
4343
steps:
4444
- uses: actions/setup-python@v6
4545
with:
46-
python-version: '3.11'
46+
python-version: "3.10"
4747
- id: set
4848
env:
4949
GITHUB_EVENT_NAME: ${{ github.event_name }}
5050
# Support floor: oldest minor to test. Below this, installs fail on the CI
5151
# Python (numcodecs dependency rot in 0.100/0.101). Raise when 0.102 rots.
52-
MIN_VERSION_TO_TEST: "0.102" # We will change this when making breaking changes (hopefully not too often)
52+
MIN_VERSION_TO_TEST: "0.102" # We will change this when making breaking changes (hopefully not too often)
5353
run: |
5454
python -m pip install -q packaging
5555
available_versions=$(python -m pip index versions spikeinterface | sed -n 's/.*Available versions: //p')
@@ -93,17 +93,17 @@ jobs:
9393
- name: Set up Python
9494
uses: actions/setup-python@v6
9595
with:
96-
python-version: '3.11'
96+
python-version: "3.10"
9797

9898
- name: Set up uv
9999
uses: astral-sh/setup-uv@v7
100100
with:
101-
python-version: '3.11'
101+
python-version: "3.10"
102102
enable-cache: false
103103

104104
- name: Generate fixtures with spikeinterface ${{ matrix.si-version }}
105105
run: |
106-
uv run --isolated --no-project --python 3.11 \
106+
uv run --isolated --no-project --python 3.10 \
107107
--with "spikeinterface[core]==${{ matrix.si-version }}" \
108108
python .github/scripts/serialization/serialize_objects.py "$SI_SERIALIZATION_FIXTURES_DIR"
109109

.github/workflows/deepinterpolation.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
branches:
77
- main
88

9-
concurrency: # Cancel previous workflows on the same pull request
9+
concurrency: # Cancel previous workflows on the same pull request
1010
group: ${{ github.workflow }}-${{ github.ref }}
1111
cancel-in-progress: true
1212

@@ -22,10 +22,10 @@ jobs:
2222
- uses: actions/checkout@v6
2323
- uses: actions/setup-python@v6
2424
with:
25-
python-version: '3.10'
25+
python-version: "3.10"
2626
- uses: astral-sh/setup-uv@v7
2727
with:
28-
python-version: '3.10'
28+
python-version: "3.10"
2929
enable-cache: false
3030
- name: Get changed files
3131
id: changed-files
@@ -55,4 +55,4 @@ jobs:
5555
if: ${{ steps.modules-changed.outputs.DEEPINTERPOLATION_CHANGED == 'true' }}
5656
run: |
5757
pytest -v src/spikeinterface/preprocessing/deepinterpolation
58-
shell: bash # Necessary for pipeline to work on windows
58+
shell: bash # Necessary for pipeline to work on windows

.github/workflows/test_containers_docker.yml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ name: Test sorter images in Docker
22

33
on: workflow_dispatch
44

5-
65
jobs:
76
test-images:
87
name: Test on (${{ matrix.os }})
@@ -15,17 +14,15 @@ jobs:
1514
- uses: actions/checkout@v6
1615
- uses: actions/setup-python@v6
1716
with:
18-
python-version: '3.10'
17+
python-version: "3.10"
1918
- uses: astral-sh/setup-uv@v7
2019
with:
21-
python-version: '3.10'
20+
python-version: "3.10"
2221
enable-cache: true
2322
- name: Python version
24-
run:
25-
python --version
23+
run: python --version
2624
- name: Docker version
27-
run:
28-
docker --version
25+
run: docker --version
2926
- name: Install dependencies
3027
run: |
3128
uv pip install --system pytest

.github/workflows/test_containers_singularity.yml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ name: Test sorter images in singularity
22

33
on: workflow_dispatch
44

5-
65
jobs:
76
test-images:
87
name: Test on (${{ matrix.os }})
@@ -11,25 +10,23 @@ jobs:
1110
fail-fast: false
1211
matrix:
1312
# "macos-latest", "windows-latest"
14-
os: ["ubuntu-latest", ]
13+
os: ["ubuntu-latest"]
1514
steps:
1615
- uses: actions/checkout@v6
1716
- uses: actions/setup-python@v6
1817
with:
19-
python-version: '3.10'
18+
python-version: "3.10"
2019
- uses: astral-sh/setup-uv@v7
2120
with:
22-
python-version: '3.10'
21+
python-version: "3.10"
2322
enable-cache: true
2423
- uses: eWaterCycle/setup-singularity@v7
2524
with:
2625
singularity-version: 3.8.7
2726
- name: Python version
28-
run:
29-
python --version
27+
run: python --version
3028
- name: Singularity version
31-
run:
32-
singularity --version
29+
run: singularity --version
3330
- name: Install dependencies
3431
run: |
3532
uv pip install --system pytest

.github/workflows/test_imports.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ jobs:
2222
- uses: actions/checkout@v6
2323
- uses: actions/setup-python@v6
2424
with:
25-
python-version: "3.11"
25+
python-version: "3.10"
2626
- uses: astral-sh/setup-uv@v7
2727
with:
28-
python-version: "3.11"
28+
python-version: "3.10"
2929
enable-cache: true
3030
- name: Install Spikeinterface with only core dependencies
3131
run: |

pyproject.toml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,15 @@ extractors = [
6868
"pynwb>=2.6.0",
6969
"hdmf-zarr>=0.11.0",
7070
"pyedflib>=0.1.30",
71-
"sonpy;python_version<'3.10'",
7271
"lxml", # lxml for neuroscope
7372
"scipy",
74-
"ibllib>=3.4.1;python_version>='3.10'", # streaming IBL
73+
"ibllib>=3.4.1", # streaming IBL
7574
"pymatreader>=0.0.32", # For cell explorer matlab files
7675
"zugbruecke>=0.2; sys_platform!='win32'", # For plexon2
7776
]
7877

7978
streaming_extractors = [
80-
"ibllib>=3.4.1;python_version>='3.10'", # streaming IBL
79+
"ibllib>=3.4.1", # streaming IBL
8180
# Following dependencies are for streaming with nwb files
8281
"pynwb>=2.6.0",
8382
"fsspec",
@@ -104,19 +103,19 @@ postprocessing = [
104103
metrics = [
105104
"scikit-learn<1.8",
106105
"scipy",
107-
"pandas<3",
106+
"pandas",
108107
"numba>=0.59",
109108
]
110109

111110
comparison = [
112111
"scipy",
113-
"pandas<3",
112+
"pandas",
114113
"networkx",
115114
]
116115

117116
generation = [
118117
"scipy",
119-
"pandas<3",
118+
"pandas",
120119
]
121120

122121
sorters = [
@@ -149,7 +148,7 @@ curation = [
149148
"spikeinterface[metrics]",
150149
"spikeinterface[postprocessing]",
151150
"spikeinterface[comparison]",
152-
"pandas<3",
151+
"pandas",
153152
"scikit-learn<1.8",
154153
"skops",
155154
"huggingface_hub",
@@ -160,7 +159,7 @@ curation = [
160159
exporters = [
161160
"spikeinterface[postprocessing]",
162161
"spikeinterface[widgets]",
163-
"pandas<3",
162+
"pandas",
164163
"pynapple",
165164
]
166165

@@ -221,9 +220,9 @@ docs = [
221220

222221
# for notebooks in the gallery
223222
"MEArec", # Use as an example
224-
"pandas<3", # in the modules gallery comparison tutorial
223+
"pandas", # in the modules gallery comparison tutorial
225224
"hdbscan>=0.8.33", # For sorters spykingcircus2 + tridesclous
226-
"numba", # For many postprocessing functions
225+
"numba>=0.59", # For many postprocessing functions
227226
"networkx",
228227
"seaborn",
229228
"skops", # For automated curation
@@ -248,7 +247,7 @@ test-common = [
248247

249248
test-core = [
250249
{include-group = "test-common"},
251-
"pandas<3",
250+
"pandas",
252251
]
253252

254253
test-extractors = [
@@ -270,15 +269,15 @@ test-streaming-extractors = [
270269

271270
test-preprocessing = [
272271
{include-group = "test-common"},
273-
"ibllib>=3.4.1;python_version>='3.10'",
272+
"ibllib>=3.4.1",
274273
"pooch",
275274
"datalad",
276275
"torch", # preprocessing tests exercise sortingcomponents.motion.dredge
277276
]
278277

279278
test-postprocessing = [
280279
{include-group = "test-common"},
281-
"pandas<3",
280+
"pandas",
282281
]
283282
test-metrics = [{include-group = "test-common"}]
284283

@@ -305,6 +304,7 @@ test-widgets = [
305304
"scikit-learn",
306305
"pyvips",
307306
"networkx",
307+
"upsetplot-bombcell", # pandas>=3 compatible fork used by BombcellUpsetPlotWidget
308308
]
309309

310310
test-exporters = [{include-group = "test-common"}]

readthedocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version: 2
44
build:
55
os: "ubuntu-24.04"
66
tools:
7-
python: "3.10"
7+
python: "3.13"
88
commands:
99
- asdf plugin add uv
1010
- asdf install uv latest

src/spikeinterface/extractors/tests/test_iblextractors.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
EID = "e2b845a1-e313-4a08-bc61-a5f662ed295e"
1212
PID = "80f6ffdd-f692-450f-ab19-cd6d45bfd73e"
1313

14-
if sys.version_info < (3, 10):
15-
pytest.skip("IBL support requires Python 3.10 or higher", allow_module_level=True)
16-
1714

1815
@pytest.mark.streaming_extractors
1916
class TestDefaultIblRecordingExtractorApBand(TestCase):

0 commit comments

Comments
 (0)