Skip to content

Commit 062bcbb

Browse files
committed
merge main to make changes and create new PR
2 parents b0e6e17 + 0fadaa9 commit 062bcbb

File tree

449 files changed

+4840
-1966
lines changed

Some content is hidden

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

449 files changed

+4840
-1966
lines changed

.circleci/config.yml

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,16 @@ jobs:
1515
- checkout
1616
- run:
1717
name: Install Environment and Run Tests
18-
shell: /bin/bash -exuo pipefail
18+
shell: /bin/bash -exo pipefail
19+
# https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions-azure-pipelines-travis-ci-and-gitlab-ci-cd
1920
command: |
20-
MAMBA_URL="https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-Linux-aarch64.sh"
21-
wget -q $MAMBA_URL -O minimamba.sh
22-
chmod +x minimamba.sh
23-
MAMBA_DIR="$HOME/miniconda3"
24-
rm -rf $MAMBA_DIR
25-
./minimamba.sh -b -p $MAMBA_DIR
26-
export PATH=$MAMBA_DIR/bin:$PATH
21+
MINI_URL="https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Miniforge3-24.3.0-0-Linux-aarch64.sh"
22+
wget -q $MINI_URL -O Miniforge3.sh
23+
chmod +x Miniforge3.sh
24+
MINI_DIR="$HOME/miniconda3"
25+
rm -rf $MINI_DIR
26+
./Miniforge3.sh -b -p $MINI_DIR
27+
export PATH=$MINI_DIR/bin:$PATH
2728
conda info -a
2829
conda env create -q -n pandas-dev -f $ENV_FILE
2930
conda list -n pandas-dev
@@ -33,6 +34,7 @@ jobs:
3334
fi
3435
python -m pip install --no-build-isolation -ve . --config-settings=setup-args="--werror"
3536
PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH
37+
sudo apt-get update && sudo apt-get install -y libegl1 libopengl0
3638
ci/run_tests.sh
3739
test-linux-musl:
3840
docker:
@@ -54,7 +56,7 @@ jobs:
5456
/opt/python/cp311-cp311/bin/python -m venv ~/virtualenvs/pandas-dev
5557
. ~/virtualenvs/pandas-dev/bin/activate
5658
python -m pip install --no-cache-dir -U pip wheel setuptools meson-python==0.13.1 meson[ninja]==1.2.1
57-
python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytz pytest>=7.3.2 pytest-xdist>=2.2.0 hypothesis>=6.46.1
59+
python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.84.0
5860
python -m pip install --no-cache-dir --no-build-isolation -e . --config-settings=setup-args="--werror"
5961
python -m pip list --no-cache-dir
6062
export PANDAS_CI=1
@@ -89,29 +91,24 @@ jobs:
8991
name: Build aarch64 wheels
9092
no_output_timeout: 30m # Sometimes the tests won't generate any output, make sure the job doesn't get killed by that
9193
command: |
92-
pip3 install cibuildwheel==2.18.1
93-
cibuildwheel --prerelease-pythons --output-dir wheelhouse
94+
pip3 install cibuildwheel==2.20.0
95+
cibuildwheel --output-dir wheelhouse
9496
9597
environment:
9698
CIBW_BUILD: << parameters.cibw-build >>
9799

98100
- run:
99101
name: Install Anaconda Client & Upload Wheels
102+
shell: /bin/bash -exo pipefail
100103
command: |
101-
echo "Install Mambaforge"
102-
MAMBA_URL="https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-Linux-aarch64.sh"
103-
echo "Downloading $MAMBA_URL"
104-
wget -q $MAMBA_URL -O minimamba.sh
105-
chmod +x minimamba.sh
106-
107-
MAMBA_DIR="$HOME/miniconda3"
108-
rm -rf $MAMBA_DIR
109-
./minimamba.sh -b -p $MAMBA_DIR
110-
111-
export PATH=$MAMBA_DIR/bin:$PATH
112-
113-
mamba install -y -c conda-forge anaconda-client
114-
104+
MINI_URL="https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Miniforge3-24.3.0-0-Linux-aarch64.sh"
105+
wget -q $MINI_URL -O Miniforge3.sh
106+
chmod +x Miniforge3.sh
107+
MINI_DIR="$HOME/miniconda3"
108+
rm -rf $MINI_DIR
109+
./Miniforge3.sh -b -p $MINI_DIR
110+
export PATH=$MINI_DIR/bin:$PATH
111+
conda install -y -c conda-forge anaconda-client
115112
source ci/upload_wheels.sh
116113
set_upload_vars
117114
upload_wheels

.devcontainer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
// Use 'settings' to set *default* container specific settings.json values on container create.
99
// You can edit these settings after create using File > Preferences > Settings > Remote.
1010
"settings": {
11-
"terminal.integrated.shell.linux": "/bin/bash",
1211
"python.pythonPath": "/usr/local/bin/python",
1312
"python.formatting.provider": "black",
1413
"python.linting.enabled": true,

.gitattributes

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ ci export-ignore
6868
doc export-ignore
6969
gitpod export-ignore
7070
MANIFEST.in export-ignore
71-
scripts export-ignore
71+
scripts/** export-ignore
7272
typings export-ignore
7373
web export-ignore
7474
CITATION.cff export-ignore
@@ -82,3 +82,7 @@ setup.py export-ignore
8282
# csv_dir_path fixture checks the existence of the directory
8383
# exclude the whole directory to avoid running related tests in sdist
8484
pandas/tests/io/parser/data export-ignore
85+
86+
# Include cibw script in sdist since it's needed for building wheels
87+
scripts/cibw_before_build.sh -export-ignore
88+
scripts/cibw_before_test.sh -export-ignore

.github/actions/setup-conda/action.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,9 @@ runs:
1414
condarc-file: ci/.condarc
1515
cache-environment: true
1616
cache-downloads: true
17+
18+
- name: Uninstall pyarrow
19+
if: ${{ env.REMOVE_PYARROW == '1' }}
20+
run: |
21+
micromamba remove -y pyarrow
22+
shell: bash -el {0}

.github/workflows/code-checks.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ jobs:
5151
# TODO: The doctests have to be run first right now, since the Cython doctests only work
5252
# with pandas installed in non-editable mode
5353
# This can be removed once pytest-cython doesn't require C extensions to be installed inplace
54+
55+
- name: Extra installs
56+
# https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions-azure-pipelines-travis-ci-and-gitlab-ci-cd
57+
run: sudo apt-get update && sudo apt-get install -y libegl1 libopengl0
58+
5459
- name: Run doctests
5560
run: cd ci && ./code_checks.sh doctests
5661
if: ${{ steps.build.outcome == 'success' && always() }}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ jobs:
4646
- name: Build Pandas
4747
uses: ./.github/actions/build_pandas
4848

49+
- name: Extra installs
50+
# https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions-azure-pipelines-travis-ci-and-gitlab-ci-cd
51+
run: sudo apt-get update && sudo apt-get install -y libegl1 libopengl0
52+
4953
- name: Test website
5054
run: python -m pytest web/
5155

.github/workflows/unit-tests.yml

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ jobs:
2929
env_file: [actions-310.yaml, actions-311.yaml, actions-312.yaml]
3030
# Prevent the include jobs from overriding other jobs
3131
pattern: [""]
32+
pandas_future_infer_string: ["0"]
3233
include:
3334
- name: "Downstream Compat"
3435
env_file: actions-311-downstream_compat.yaml
@@ -57,6 +58,12 @@ jobs:
5758
# Also install zh_CN (its encoding is gb2312) but do not activate it.
5859
# It will be temporarily activated during tests with locale.setlocale
5960
extra_loc: "zh_CN"
61+
- name: "Future infer strings"
62+
env_file: actions-312.yaml
63+
pandas_future_infer_string: "1"
64+
- name: "Future infer strings (without pyarrow)"
65+
env_file: actions-311.yaml
66+
pandas_future_infer_string: "1"
6067
- name: "Pypy"
6168
env_file: actions-pypy-39.yaml
6269
pattern: "not slow and not network and not single_cpu"
@@ -75,15 +82,17 @@ jobs:
7582
LANG: ${{ matrix.lang || 'C.UTF-8' }}
7683
LC_ALL: ${{ matrix.lc_all || '' }}
7784
PANDAS_CI: '1'
85+
PANDAS_FUTURE_INFER_STRING: ${{ matrix.pandas_future_infer_string || '0' }}
7886
TEST_ARGS: ${{ matrix.test_args || '' }}
7987
PYTEST_WORKERS: 'auto'
8088
PYTEST_TARGET: ${{ matrix.pytest_target || 'pandas' }}
8189
NPY_PROMOTION_STATE: ${{ matrix.env_file == 'actions-311-numpydev.yaml' && 'weak' || 'legacy' }}
8290
# Clipboard tests
8391
QT_QPA_PLATFORM: offscreen
92+
REMOVE_PYARROW: ${{ matrix.name == 'Future infer strings (without pyarrow)' && '1' || '0' }}
8493
concurrency:
8594
# https://github.community/t/concurrecy-not-work-for-push/183068/7
86-
group: ${{ github.event_name == 'push' && github.run_number || github.ref }}-${{ matrix.env_file }}-${{ matrix.pattern }}-${{ matrix.extra_apt || '' }}}
95+
group: ${{ github.event_name == 'push' && github.run_number || github.ref }}-${{ matrix.env_file }}-${{ matrix.pattern }}-${{ matrix.extra_apt || '' }}-${{ matrix.pandas_future_infer_string }}
8796
cancel-in-progress: true
8897

8998
services:
@@ -130,8 +139,8 @@ jobs:
130139
fetch-depth: 0
131140

132141
- name: Extra installs
133-
run: sudo apt-get update && sudo apt-get install -y ${{ matrix.extra_apt }}
134-
if: ${{ matrix.extra_apt }}
142+
# https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions-azure-pipelines-travis-ci-and-gitlab-ci-cd
143+
run: sudo apt-get update && sudo apt-get install -y libegl1 libopengl0 ${{ matrix.extra_apt || ''}}
135144

136145
- name: Generate extra locales
137146
# These extra locales will be available for locale.setlocale() calls in tests
@@ -227,7 +236,7 @@ jobs:
227236
. ~/virtualenvs/pandas-dev/bin/activate
228237
python -m pip install --no-cache-dir -U pip wheel setuptools meson[ninja]==1.2.1 meson-python==0.13.1
229238
python -m pip install numpy --config-settings=setup-args="-Dallow-noblas=true"
230-
python -m pip install --no-cache-dir versioneer[toml] cython python-dateutil pytz pytest>=7.3.2 pytest-xdist>=2.2.0 hypothesis>=6.46.1
239+
python -m pip install --no-cache-dir versioneer[toml] cython python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.84.0
231240
python -m pip install --no-cache-dir --no-build-isolation -e . --config-settings=setup-args="--werror"
232241
python -m pip list --no-cache-dir
233242
export PANDAS_CI=1
@@ -265,7 +274,7 @@ jobs:
265274
/opt/python/cp311-cp311/bin/python -m venv ~/virtualenvs/pandas-dev
266275
. ~/virtualenvs/pandas-dev/bin/activate
267276
python -m pip install --no-cache-dir -U pip wheel setuptools meson-python==0.13.1 meson[ninja]==1.2.1
268-
python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytz pytest>=7.3.2 pytest-xdist>=2.2.0 hypothesis>=6.46.1
277+
python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.84.0
269278
python -m pip install --no-cache-dir --no-build-isolation -e . --config-settings=setup-args="--werror"
270279
python -m pip list --no-cache-dir
271280
@@ -286,7 +295,7 @@ jobs:
286295
# In general, this will remain frozen(present, but not running) until:
287296
# - The next unreleased Python version has released beta 1
288297
# - This version should be available on GitHub Actions.
289-
# - Our required build/runtime dependencies(numpy, pytz, Cython, python-dateutil)
298+
# - Our required build/runtime dependencies(numpy, Cython, python-dateutil)
290299
# support that unreleased Python version.
291300
# To unfreeze, comment out the ``if: false`` condition, and make sure you update
292301
# the name of the workflow and Python version in actions/setup-python ``python-version:``
@@ -339,7 +348,7 @@ jobs:
339348
python -m pip install --upgrade pip setuptools wheel meson[ninja]==1.2.1 meson-python==0.13.1
340349
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy
341350
python -m pip install versioneer[toml]
342-
python -m pip install python-dateutil pytz tzdata cython hypothesis>=6.46.1 pytest>=7.3.2 pytest-xdist>=2.2.0 pytest-cov
351+
python -m pip install python-dateutil tzdata cython hypothesis>=6.84.0 pytest>=7.3.2 pytest-xdist>=3.4.0 pytest-cov
343352
python -m pip install -ve . --no-build-isolation --no-index --no-deps --config-settings=setup-args="--werror"
344353
python -m pip list
345354
@@ -382,15 +391,14 @@ jobs:
382391
python -m pip install --upgrade pip setuptools wheel meson[ninja]==1.2.1 meson-python==0.13.1
383392
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy cython
384393
python -m pip install versioneer[toml]
385-
python -m pip install python-dateutil pytz tzdata hypothesis>=6.46.1 pytest>=7.3.2 pytest-xdist>=2.2.0 pytest-cov
394+
python -m pip install python-dateutil pytz tzdata hypothesis>=6.84.0 pytest>=7.3.2 pytest-xdist>=3.4.0 pytest-cov
386395
python -m pip install -ve . --no-build-isolation --no-index --no-deps --config-settings=setup-args="--werror"
387396
python -m pip list
388397
389398
- name: Run Tests
390399
uses: ./.github/actions/run-tests
391-
env:
392-
PYTHON_GIL: 0
393400

401+
# NOTE: this job must be kept in sync with the Pyodide build job in wheels.yml
394402
emscripten:
395403
# Note: the Python version, Emscripten toolchain version are determined
396404
# by the Pyodide version. The appropriate versions can be found in the

.github/workflows/wheels.yml

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,25 @@ jobs:
9999
- [macos-14, macosx_arm64]
100100
- [windows-2022, win_amd64]
101101
# TODO: support PyPy?
102-
python: [["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"]]
102+
python: [["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"], ["cp313t", "3.13"]]
103+
include:
104+
# TODO: Remove this plus installing build deps in cibw_before_build.sh
105+
# and test deps in cibw_before_test.sh after pandas can be built with a released NumPy/Cython
106+
- python: ["cp313", "3.13"]
107+
cibw_build_frontend: 'pip; args: --no-build-isolation'
108+
- python: ["cp313t", "3.13"]
109+
cibw_build_frontend: 'pip; args: --no-build-isolation'
110+
# Build Pyodide wheels and upload them to Anaconda.org
111+
# NOTE: this job is similar to the one in unit-tests.yml except for the fact
112+
# that it uses cibuildwheel instead of a standard Pyodide xbuildenv setup.
113+
- buildplat: [ubuntu-22.04, pyodide_wasm32]
114+
python: ["cp312", "3.12"]
115+
cibw_build_frontend: 'build'
116+
# TODO: Build free-threaded wheels for Windows
117+
exclude:
118+
- buildplat: [windows-2022, win_amd64]
119+
python: ["cp313t", "3.13"]
120+
103121
env:
104122
IS_PUSH: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }}
105123
IS_SCHEDULE_DISPATCH: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
@@ -140,12 +158,13 @@ jobs:
140158
run: echo "sdist_name=$(cd ./dist && ls -d */)" >> "$GITHUB_ENV"
141159

142160
- name: Build wheels
143-
uses: pypa/cibuildwheel@v2.19.2
161+
uses: pypa/cibuildwheel@v2.20.0
144162
with:
145163
package-dir: ./dist/${{ startsWith(matrix.buildplat[1], 'macosx') && env.sdist_name || needs.build_sdist.outputs.sdist_file }}
146164
env:
147-
CIBW_PRERELEASE_PYTHONS: True
148165
CIBW_BUILD: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}
166+
CIBW_BUILD_FRONTEND: ${{ matrix.cibw_build_frontend || 'pip' }}
167+
CIBW_PLATFORM: ${{ matrix.buildplat[1] == 'pyodide_wasm32' && 'pyodide' || 'auto' }}
149168

150169
- name: Set up Python
151170
uses: mamba-org/setup-micromamba@v1
@@ -168,15 +187,17 @@ jobs:
168187
- name: Test Windows Wheels
169188
if: ${{ matrix.buildplat[1] == 'win_amd64' }}
170189
shell: pwsh
190+
# TODO: Remove NumPy nightly install when there's a 3.13 wheel on PyPI
171191
run: |
172192
$TST_CMD = @"
173-
python -m pip install hypothesis>=6.46.1 pytest>=7.3.2 pytest-xdist>=2.2.0;
193+
python -m pip install hypothesis>=6.84.0 pytest>=7.3.2 pytest-xdist>=3.4.0;
194+
${{ matrix.python[1] == '3.13' && 'python -m pip install -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy;' }}
174195
python -m pip install `$(Get-Item pandas\wheelhouse\*.whl);
175196
python -c `'import pandas as pd; pd.test(extra_args=[`\"--no-strict-data-files`\", `\"-m not clipboard and not single_cpu and not slow and not network and not db`\"])`';
176197
"@
177198
# add rc to the end of the image name if the Python version is unreleased
178-
docker pull python:${{ matrix.python[1] == '3.12' && '3.12-rc' || format('{0}-windowsservercore', matrix.python[1]) }}
179-
docker run --env PANDAS_CI='1' -v ${PWD}:C:\pandas python:${{ matrix.python[1] == '3.12' && '3.12-rc' || format('{0}-windowsservercore', matrix.python[1]) }} powershell -Command $TST_CMD
199+
docker pull python:${{ matrix.python[1] == '3.13' && '3.13-rc' || format('{0}-windowsservercore', matrix.python[1]) }}
200+
docker run --env PANDAS_CI='1' -v ${PWD}:C:\pandas python:${{ matrix.python[1] == '3.13' && '3.13-rc' || format('{0}-windowsservercore', matrix.python[1]) }} powershell -Command $TST_CMD
180201
181202
- uses: actions/upload-artifact@v4
182203
with:

.gitpod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ tasks:
1414
cp gitpod/settings.json .vscode/settings.json
1515
git fetch --tags
1616
python -m pip install -ve . --no-build-isolation --config-settings editable-verbose=true
17-
pre-commit install
17+
pre-commit install --install-hooks
1818
command: |
1919
python -m pip install -ve . --no-build-isolation --config-settings editable-verbose=true
2020
echo "✨ Pre-build complete! You can close this terminal ✨ "

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FROM python:3.10.8
22
WORKDIR /home/pandas
33

44
RUN apt-get update && apt-get -y upgrade
5-
RUN apt-get install -y build-essential
5+
RUN apt-get install -y build-essential bash-completion
66

77
# hdf5 needed for pytables installation
88
# libgles2-mesa needed for pytest-qt
@@ -12,4 +12,6 @@ RUN python -m pip install --upgrade pip
1212
COPY requirements-dev.txt /tmp
1313
RUN python -m pip install -r /tmp/requirements-dev.txt
1414
RUN git config --global --add safe.directory /home/pandas
15+
16+
ENV SHELL "/bin/bash"
1517
CMD ["/bin/bash"]

0 commit comments

Comments
 (0)