Skip to content

Commit 0ffeaf2

Browse files
committed
Merge branch 'read-csv-from-directory' of https://github.com/fangchenli/pandas into read-csv-from-directory
2 parents 90ba4c0 + 828a047 commit 0ffeaf2

File tree

485 files changed

+16282
-7835
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

485 files changed

+16282
-7835
lines changed

.github/workflows/broken-linkcheck.yml

Lines changed: 0 additions & 39 deletions
This file was deleted.

.github/workflows/cache-cleanup-daily.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66

77
jobs:
88
cleanup:
9-
runs-on: ubuntu-latest
9+
runs-on: ubuntu-24.04
1010
if: github.repository_owner == 'pandas-dev'
1111
permissions:
1212
actions: write

.github/workflows/cache-cleanup.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ on:
66

77
jobs:
88
cleanup:
9-
runs-on: ubuntu-latest
9+
runs-on: ubuntu-24.04
10+
if: github.repository_owner == 'pandas-dev'
1011
steps:
1112
- name: Clean Cache
1213
run: |

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ jobs:
2828

2929
steps:
3030
- uses: actions/checkout@v5
31-
- uses: github/codeql-action/init@v3
31+
- uses: github/codeql-action/init@v4
3232
with:
3333
languages: ${{ matrix.language }}
34-
- uses: github/codeql-action/autobuild@v3
35-
- uses: github/codeql-action/analyze@v3
34+
- uses: github/codeql-action/autobuild@v4
35+
- uses: github/codeql-action/analyze@v4

.github/workflows/comment-commands.yml

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,6 @@ permissions:
99
pull-requests: write
1010

1111
jobs:
12-
issue_assign:
13-
runs-on: ubuntu-24.04
14-
if: (!github.event.issue.pull_request) && github.event.comment.body == 'take'
15-
concurrency:
16-
group: ${{ github.actor }}-issue-assign
17-
steps:
18-
- run: |
19-
echo "Assigning issue ${{ github.event.issue.number }} to ${{ github.event.comment.user.login }}"
20-
curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -d '{"assignees": ["${{ github.event.comment.user.login }}"]}' https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees
2112
preview_docs:
2213
runs-on: ubuntu-24.04
2314
if: github.event.issue.pull_request && github.event.comment.body == '/preview'
@@ -28,64 +19,3 @@ jobs:
2819
with:
2920
previewer-server: "https://pandas.pydata.org/preview"
3021
artifact-job: "Doc Build and Upload"
31-
asv_run:
32-
runs-on: ubuntu-24.04
33-
# TODO: Support more benchmarking options later, against different branches, against self, etc
34-
if: github.event.issue.pull_request && startsWith(github.event.comment.body, '@github-actions benchmark')
35-
defaults:
36-
run:
37-
shell: bash -el {0}
38-
env:
39-
ENV_FILE: environment.yml
40-
COMMENT: ${{github.event.comment.body}}
41-
42-
concurrency:
43-
# Set concurrency to prevent abuse(full runs are ~5.5 hours !!!)
44-
# each user can only run one concurrent benchmark bot at a time
45-
# We don't cancel in progress jobs, but if you want to benchmark multiple PRs, you're gonna have
46-
# to wait
47-
group: ${{ github.actor }}-asv
48-
cancel-in-progress: false
49-
50-
steps:
51-
- name: Checkout
52-
uses: actions/checkout@v5
53-
with:
54-
fetch-depth: 0
55-
56-
# Although asv sets up its own env, deps are still needed
57-
# during discovery process
58-
- name: Set up Conda
59-
uses: ./.github/actions/setup-conda
60-
61-
- name: Run benchmarks
62-
id: bench
63-
continue-on-error: true # asv will exit code 1 for regressions
64-
run: |
65-
# extracting the regex, see https://stackoverflow.com/a/36798723
66-
REGEX=$(echo "$COMMENT" | sed -n "s/^.*-b\s*\(\S*\).*$/\1/p")
67-
cd asv_bench
68-
asv check -E existing
69-
git remote add upstream https://github.com/pandas-dev/pandas.git
70-
git fetch upstream
71-
asv machine --yes
72-
asv continuous -f 1.1 -b $REGEX upstream/main HEAD
73-
echo 'BENCH_OUTPUT<<EOF' >> $GITHUB_ENV
74-
asv compare -f 1.1 upstream/main HEAD >> $GITHUB_ENV
75-
echo 'EOF' >> $GITHUB_ENV
76-
echo "REGEX=$REGEX" >> $GITHUB_ENV
77-
78-
- uses: actions/github-script@v8
79-
env:
80-
BENCH_OUTPUT: ${{env.BENCH_OUTPUT}}
81-
REGEX: ${{env.REGEX}}
82-
with:
83-
script: |
84-
const ENV_VARS = process.env
85-
const run_url = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`
86-
github.rest.issues.createComment({
87-
issue_number: context.issue.number,
88-
owner: context.repo.owner,
89-
repo: context.repo.repo,
90-
body: '\nBenchmarks completed. View runner logs here.' + run_url + '\nRegex used: '+ 'regex ' + ENV_VARS["REGEX"] + '\n' + ENV_VARS["BENCH_OUTPUT"]
91-
})

.github/workflows/docbuild-and-upload.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
run: mv doc/build/html web/build/docs
9494

9595
- name: Save website as an artifact
96-
uses: actions/upload-artifact@v4
96+
uses: actions/upload-artifact@v5
9797
with:
9898
name: website
9999
path: web/build

.github/workflows/unit-tests.yml

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,7 @@ jobs:
181181
timeout-minutes: 90
182182
strategy:
183183
matrix:
184-
# Note: Don't use macOS latest since macos 14 appears to be arm64 only
185-
os: [macos-13, macos-14, windows-latest]
184+
os: [macos-15-intel, macos-15, windows-2025]
186185
env_file: [actions-311.yaml, actions-312.yaml, actions-313.yaml]
187186
fail-fast: false
188187
runs-on: ${{ matrix.os }}
@@ -243,7 +242,7 @@ jobs:
243242
. ~/virtualenvs/pandas-dev/bin/activate
244243
python -m pip install --no-cache-dir -U pip wheel setuptools meson[ninja]==1.2.1 meson-python==0.13.1
245244
python -m pip install numpy -Csetup-args="-Dallow-noblas=true"
246-
python -m pip install --no-cache-dir versioneer[toml] cython==3.0.10 python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.116.0
245+
python -m pip install --no-cache-dir versioneer[toml] cython==3.0.10 python-dateutil pytest>=8.3.4 pytest-xdist>=3.6.1 hypothesis>=6.116.0
247246
python -m pip install --no-cache-dir --no-build-isolation -e . -Csetup-args="--werror"
248247
python -m pip list --no-cache-dir
249248
PANDAS_CI=1 python -m pytest -m 'not slow and not network and not clipboard and not single_cpu' pandas --junitxml=test-data.xml
@@ -280,7 +279,7 @@ jobs:
280279
/opt/python/cp313-cp313/bin/python -m venv ~/virtualenvs/pandas-dev
281280
. ~/virtualenvs/pandas-dev/bin/activate
282281
python -m pip install --no-cache-dir -U pip wheel setuptools meson-python==0.13.1 meson[ninja]==1.2.1
283-
python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.116.0
282+
python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytest>=8.3.4 pytest-xdist>=3.6.1 hypothesis>=6.116.0
284283
python -m pip install --no-cache-dir --no-build-isolation -e . -Csetup-args="--werror"
285284
python -m pip list --no-cache-dir
286285
@@ -321,8 +320,7 @@ jobs:
321320
strategy:
322321
fail-fast: false
323322
matrix:
324-
# Separate out macOS 13 and 14, since macOS 14 is arm64 only
325-
os: [ubuntu-24.04, macOS-13, macOS-14, windows-latest]
323+
os: [ubuntu-24.04, macos-15-intel, macos-15, windows-2025]
326324

327325
timeout-minutes: 90
328326

@@ -352,14 +350,12 @@ jobs:
352350
python --version
353351
python -m pip install --upgrade pip setuptools wheel meson[ninja]==1.2.1 meson-python==0.13.1
354352
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy
355-
python -m pip install versioneer[toml] python-dateutil tzdata cython hypothesis>=6.116.0 pytest>=7.3.2 pytest-xdist>=3.4.0 pytest-cov
353+
python -m pip install versioneer[toml] python-dateutil tzdata cython hypothesis>=6.116.0 pytest>=8.3.4 pytest-xdist>=3.6.1 pytest-cov
356354
python -m pip install -ve . --no-build-isolation --no-index --no-deps -Csetup-args="--werror"
357355
python -m pip list
358356
359357
- name: Run Tests
360358
uses: ./.github/actions/run-tests
361-
# TEMP allow this to fail until we fixed all test failures (related to chained assignment warnings)
362-
continue-on-error: true
363359

364360
# NOTE: this job must be kept in sync with the Pyodide build job in wheels.yml
365361
emscripten:
@@ -401,7 +397,7 @@ jobs:
401397
pyodide build
402398
403399
- name: Set up Node.js
404-
uses: actions/setup-node@v5
400+
uses: actions/setup-node@v6
405401
with:
406402
node-version: '20'
407403

.github/workflows/wheels.yml

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
name: Wheel builder
1414

1515
on:
16+
release:
17+
types: [published]
1618
schedule:
1719
# 3:27 UTC every day
1820
- cron: "27 3 * * *"
@@ -62,7 +64,7 @@ jobs:
6264
python -m pip install build
6365
python -m build --sdist
6466
65-
- uses: actions/upload-artifact@v4
67+
- uses: actions/upload-artifact@v5
6668
with:
6769
name: sdist
6870
path: ./dist/*
@@ -96,12 +98,11 @@ jobs:
9698
- [ubuntu-24.04, musllinux_x86_64]
9799
- [ubuntu-24.04-arm, manylinux_aarch64]
98100
- [ubuntu-24.04-arm, musllinux_aarch64]
99-
- [macos-13, macosx_x86_64]
100-
# Note: M1 images on Github Actions start from macOS 14
101-
- [macos-14, macosx_arm64]
102-
- [windows-2022, win_amd64]
101+
- [macos-15-intel, macosx_x86_64]
102+
- [macos-15, macosx_arm64]
103+
- [windows-2025, win_amd64]
103104
- [windows-11-arm, win_arm64]
104-
python: [["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"], ["cp313t", "3.13"]]
105+
python: [["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"], ["cp313t", "3.13"], ["cp314", "3.14"], ["cp314t", "3.14"]]
105106
include:
106107
# Build Pyodide wheels and upload them to Anaconda.org
107108
# NOTE: this job is similar to the one in unit-tests.yml except for the fact
@@ -137,7 +138,7 @@ jobs:
137138
# removes unnecessary files from the release
138139
- name: Download sdist (not macOS)
139140
#if: ${{ matrix.buildplat[1] != 'macosx_*' }}
140-
uses: actions/download-artifact@v5
141+
uses: actions/download-artifact@v6
141142
with:
142143
name: sdist
143144
path: ./dist
@@ -160,7 +161,7 @@ jobs:
160161
run: echo "sdist_name=$(cd ./dist && ls -d */)" >> "$GITHUB_ENV"
161162

162163
- name: Build wheels
163-
uses: pypa/cibuildwheel@v3.1.4
164+
uses: pypa/cibuildwheel@v3.2.1
164165
with:
165166
package-dir: ./dist/${{ startsWith(matrix.buildplat[1], 'macosx') && env.sdist_name || needs.build_sdist.outputs.sdist_file }}
166167
env:
@@ -195,7 +196,7 @@ jobs:
195196
shell: bash -el {0}
196197
run: for whl in $(ls wheelhouse); do wheel unpack wheelhouse/$whl -d /tmp; done
197198

198-
- uses: actions/upload-artifact@v4
199+
- uses: actions/upload-artifact@v5
199200
with:
200201
name: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}
201202
path: ./wheelhouse/*.whl
@@ -216,3 +217,43 @@ jobs:
216217
source ci/upload_wheels.sh
217218
set_upload_vars
218219
upload_wheels
220+
221+
publish:
222+
if: >
223+
github.repository == 'pandas-dev/pandas' &&
224+
github.event_name == 'release' &&
225+
startsWith(github.ref, 'refs/tags/v')
226+
227+
needs:
228+
- build_sdist
229+
- build_wheels
230+
231+
runs-on: ubuntu-24.04
232+
233+
environment:
234+
name: pypi
235+
permissions:
236+
id-token: write # OIDC for Trusted Publishing
237+
contents: read
238+
239+
steps:
240+
- name: Download all artefacts
241+
uses: actions/download-artifact@v6
242+
with:
243+
path: dist # everything lands in ./dist/**
244+
245+
# TODO: This step can be probably be achieved by actions/download-artifact@v6
246+
# by specifying merge-multiple: true, and a glob pattern
247+
- name: Collect files
248+
run: |
249+
mkdir -p upload
250+
# skip any wheel that contains 'pyodide'
251+
find dist -name '*pyodide*.whl' -prune -o \
252+
-name '*.whl' -exec mv {} upload/ \;
253+
find dist -name '*.tar.gz' -exec mv {} upload/ \;
254+
255+
- name: Publish to **PyPI** (Trusted Publishing)
256+
uses: pypa/gh-action-pypi-publish@release/v1
257+
with:
258+
packages-dir: upload
259+
skip-existing: true

.pre-commit-config.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ci:
1919
skip: [pyright, mypy]
2020
repos:
2121
- repo: https://github.com/astral-sh/ruff-pre-commit
22-
rev: v0.12.11
22+
rev: v0.14.3
2323
hooks:
2424
- id: ruff
2525
args: [--exit-non-zero-on-fix]
@@ -46,7 +46,7 @@ repos:
4646
- id: codespell
4747
types_or: [python, rst, markdown, cython, c]
4848
- repo: https://github.com/MarcoGorelli/cython-lint
49-
rev: v0.16.7
49+
rev: v0.18.1
5050
hooks:
5151
- id: cython-lint
5252
- id: double-quote-cython-strings
@@ -67,11 +67,11 @@ repos:
6767
- id: trailing-whitespace
6868
args: [--markdown-linebreak-ext=md]
6969
- repo: https://github.com/PyCQA/isort
70-
rev: 6.0.1
70+
rev: 7.0.0
7171
hooks:
7272
- id: isort
7373
- repo: https://github.com/asottile/pyupgrade
74-
rev: v3.20.0
74+
rev: v3.21.0
7575
hooks:
7676
- id: pyupgrade
7777
args: [--py311-plus]
@@ -87,19 +87,19 @@ repos:
8787
types: [text] # overwrite types: [rst]
8888
types_or: [python, rst]
8989
- repo: https://github.com/sphinx-contrib/sphinx-lint
90-
rev: v1.0.0
90+
rev: v1.0.1
9191
hooks:
9292
- id: sphinx-lint
9393
args: ["--enable", "all", "--disable", "line-too-long"]
9494
- repo: https://github.com/pre-commit/mirrors-clang-format
95-
rev: v21.1.0
95+
rev: v21.1.2
9696
hooks:
9797
- id: clang-format
9898
files: ^pandas/_libs/src|^pandas/_libs/include
9999
args: [-i]
100100
types_or: [c, c++]
101101
- repo: https://github.com/trim21/pre-commit-mirror-meson
102-
rev: v1.9.0
102+
rev: v1.9.1
103103
hooks:
104104
- id: meson-fmt
105105
args: ['--inplace']

0 commit comments

Comments
 (0)