Skip to content

Commit bd91de4

Browse files
Merge branch 'main' into groupby-then-resample-if-index-out-of-order
2 parents 612e275 + fae3e80 commit bd91de4

File tree

244 files changed

+2676
-1524
lines changed

Some content is hidden

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

244 files changed

+2676
-1524
lines changed

.gitattributes

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,5 @@ pandas/tests/io/parser/data export-ignore
8585

8686
# Include cibw script in sdist since it's needed for building wheels
8787
scripts/cibw_before_build.sh -export-ignore
88-
scripts/cibw_before_test.sh -export-ignore
88+
scripts/cibw_before_build_windows.sh -export-ignore
89+
scripts/cibw_before_test_windows.sh -export-ignore

.github/actions/build_pandas/action.yml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,6 @@ runs:
2222
fi
2323
shell: bash -el {0}
2424

25-
- name: Uninstall nomkl
26-
run: |
27-
if conda list nomkl | grep nomkl 1>/dev/null; then
28-
conda remove nomkl -y
29-
fi
30-
shell: bash -el {0}
31-
3225
- name: Build Pandas
3326
run: |
3427
if [[ ${{ inputs.editable }} == "true" ]]; then

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ runs:
99
- name: Install ${{ inputs.environment-file }}
1010
uses: mamba-org/setup-micromamba@v1
1111
with:
12-
# Pinning to avoid 2.0 failures
13-
micromamba-version: '1.5.10-0'
1412
environment-file: ${{ inputs.environment-file }}
1513
environment-name: test
1614
condarc-file: ci/.condarc

.github/workflows/unit-tests.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ jobs:
8686
TEST_ARGS: ${{ matrix.test_args || '' }}
8787
PYTEST_WORKERS: 'auto'
8888
PYTEST_TARGET: ${{ matrix.pytest_target || 'pandas' }}
89-
NPY_PROMOTION_STATE: ${{ matrix.env_file == 'actions-311-numpydev.yaml' && 'weak' || 'legacy' }}
9089
# Clipboard tests
9190
QT_QPA_PLATFORM: offscreen
9291
REMOVE_PYARROW: ${{ matrix.name == 'Future infer strings (without pyarrow)' && '1' || '0' }}
@@ -388,8 +387,8 @@ jobs:
388387
- name: Build Environment
389388
run: |
390389
python --version
391-
python -m pip install --upgrade pip setuptools wheel meson[ninja]==1.2.1 meson-python==0.13.1
392-
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy cython
390+
python -m pip install --upgrade pip setuptools wheel numpy meson[ninja]==1.2.1 meson-python==0.13.1
391+
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple cython
393392
python -m pip install versioneer[toml]
394393
python -m pip install python-dateutil pytz tzdata hypothesis>=6.84.0 pytest>=7.3.2 pytest-xdist>=3.4.0 pytest-cov
395394
python -m pip install -ve . --no-build-isolation --no-index --no-deps -Csetup-args="--werror"

.github/workflows/wheels.yml

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,6 @@ jobs:
111111
- buildplat: [ubuntu-22.04, pyodide_wasm32]
112112
python: ["cp312", "3.12"]
113113
cibw_build_frontend: 'build'
114-
# TODO: Build free-threaded wheels for Windows
115-
exclude:
116-
- buildplat: [windows-2022, win_amd64]
117-
python: ["cp313t", "3.13"]
118114

119115
env:
120116
IS_PUSH: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }}
@@ -156,7 +152,7 @@ jobs:
156152
run: echo "sdist_name=$(cd ./dist && ls -d */)" >> "$GITHUB_ENV"
157153

158154
- name: Build wheels
159-
uses: pypa/[email protected].0
155+
uses: pypa/[email protected].3
160156
with:
161157
package-dir: ./dist/${{ startsWith(matrix.buildplat[1], 'macosx') && env.sdist_name || needs.build_sdist.outputs.sdist_file }}
162158
env:
@@ -181,20 +177,6 @@ jobs:
181177
shell: bash -el {0}
182178
run: for whl in $(ls wheelhouse); do wheel unpack wheelhouse/$whl -d /tmp; done
183179

184-
# Testing on windowsservercore instead of GHA runner to fail on missing DLLs
185-
- name: Test Windows Wheels
186-
if: ${{ matrix.buildplat[1] == 'win_amd64' }}
187-
shell: pwsh
188-
run: |
189-
$TST_CMD = @"
190-
python -m pip install hypothesis>=6.84.0 pytest>=7.3.2 pytest-xdist>=3.4.0;
191-
python -m pip install `$(Get-Item pandas\wheelhouse\*.whl);
192-
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`\"])`';
193-
"@
194-
# add rc to the end of the image name if the Python version is unreleased
195-
docker pull python:${{ matrix.python[1] == '3.13' && '3.13-rc' || format('{0}-windowsservercore', matrix.python[1]) }}
196-
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
197-
198180
- uses: actions/upload-artifact@v4
199181
with:
200182
name: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}

.pre-commit-config.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ minimum_pre_commit_version: 2.15.0
22
exclude: ^LICENSES/|\.(html|csv|svg)$
33
# reserve "manual" for relatively slow hooks which we still want to run in CI
44
default_stages: [
5-
commit,
6-
merge-commit,
7-
push,
5+
pre-commit,
6+
pre-merge-commit,
7+
pre-push,
88
prepare-commit-msg,
99
commit-msg,
1010
post-checkout,
@@ -19,7 +19,7 @@ ci:
1919
skip: [pyright, mypy]
2020
repos:
2121
- repo: https://github.com/astral-sh/ruff-pre-commit
22-
rev: v0.6.9
22+
rev: v0.7.2
2323
hooks:
2424
- id: ruff
2525
args: [--exit-non-zero-on-fix]
@@ -74,7 +74,7 @@ repos:
7474
hooks:
7575
- id: isort
7676
- repo: https://github.com/asottile/pyupgrade
77-
rev: v3.17.0
77+
rev: v3.19.0
7878
hooks:
7979
- id: pyupgrade
8080
args: [--py310-plus]
@@ -95,7 +95,7 @@ repos:
9595
- id: sphinx-lint
9696
args: ["--enable", "all", "--disable", "line-too-long"]
9797
- repo: https://github.com/pre-commit/mirrors-clang-format
98-
rev: v19.1.1
98+
rev: v19.1.3
9999
hooks:
100100
- id: clang-format
101101
files: ^pandas/_libs/src|^pandas/_libs/include

MANIFEST.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,5 @@ graft pandas/_libs/include
6565

6666
# Include cibw script in sdist since it's needed for building wheels
6767
include scripts/cibw_before_build.sh
68+
include scripts/cibw_before_build_windows.sh
69+
include scripts/cibw_before_test_windows.sh

ci/code_checks.sh

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -81,40 +81,29 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
8181
-i "pandas.Timedelta.resolution PR02" \
8282
-i "pandas.Timestamp.max PR02" \
8383
-i "pandas.Timestamp.min PR02" \
84-
-i "pandas.Timestamp.nanosecond GL08" \
8584
-i "pandas.Timestamp.resolution PR02" \
8685
-i "pandas.Timestamp.tzinfo GL08" \
87-
-i "pandas.Timestamp.year GL08" \
88-
-i "pandas.api.types.is_integer PR01,SA01" \
89-
-i "pandas.api.types.is_iterator PR07,SA01" \
9086
-i "pandas.api.types.is_re_compilable PR07,SA01" \
91-
-i "pandas.api.types.pandas_dtype PR07,RT03,SA01" \
9287
-i "pandas.arrays.ArrowExtensionArray PR07,SA01" \
9388
-i "pandas.arrays.IntegerArray SA01" \
94-
-i "pandas.arrays.IntervalArray.left SA01" \
9589
-i "pandas.arrays.IntervalArray.length SA01" \
96-
-i "pandas.arrays.IntervalArray.right SA01" \
9790
-i "pandas.arrays.NumpyExtensionArray SA01" \
98-
-i "pandas.arrays.SparseArray PR07,SA01" \
9991
-i "pandas.arrays.TimedeltaArray PR07,SA01" \
10092
-i "pandas.core.groupby.DataFrameGroupBy.boxplot PR07,RT03,SA01" \
10193
-i "pandas.core.groupby.DataFrameGroupBy.get_group RT03,SA01" \
102-
-i "pandas.core.groupby.DataFrameGroupBy.groups SA01" \
10394
-i "pandas.core.groupby.DataFrameGroupBy.indices SA01" \
10495
-i "pandas.core.groupby.DataFrameGroupBy.nth PR02" \
10596
-i "pandas.core.groupby.DataFrameGroupBy.nunique SA01" \
10697
-i "pandas.core.groupby.DataFrameGroupBy.plot PR02" \
10798
-i "pandas.core.groupby.DataFrameGroupBy.sem SA01" \
10899
-i "pandas.core.groupby.SeriesGroupBy.get_group RT03,SA01" \
109-
-i "pandas.core.groupby.SeriesGroupBy.groups SA01" \
110100
-i "pandas.core.groupby.SeriesGroupBy.indices SA01" \
111101
-i "pandas.core.groupby.SeriesGroupBy.is_monotonic_decreasing SA01" \
112102
-i "pandas.core.groupby.SeriesGroupBy.is_monotonic_increasing SA01" \
113103
-i "pandas.core.groupby.SeriesGroupBy.nth PR02" \
114104
-i "pandas.core.groupby.SeriesGroupBy.plot PR02" \
115105
-i "pandas.core.groupby.SeriesGroupBy.sem SA01" \
116106
-i "pandas.core.resample.Resampler.get_group RT03,SA01" \
117-
-i "pandas.core.resample.Resampler.groups SA01" \
118107
-i "pandas.core.resample.Resampler.indices SA01" \
119108
-i "pandas.core.resample.Resampler.max PR01,RT03,SA01" \
120109
-i "pandas.core.resample.Resampler.mean SA01" \
@@ -123,35 +112,27 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
123112
-i "pandas.core.resample.Resampler.quantile PR01,PR07" \
124113
-i "pandas.core.resample.Resampler.sem SA01" \
125114
-i "pandas.core.resample.Resampler.std SA01" \
126-
-i "pandas.core.resample.Resampler.sum SA01" \
127115
-i "pandas.core.resample.Resampler.transform PR01,RT03,SA01" \
128116
-i "pandas.core.resample.Resampler.var SA01" \
129117
-i "pandas.errors.AttributeConflictWarning SA01" \
130-
-i "pandas.errors.CSSWarning SA01" \
131118
-i "pandas.errors.ChainedAssignmentError SA01" \
132-
-i "pandas.errors.DataError SA01" \
133119
-i "pandas.errors.DuplicateLabelError SA01" \
134120
-i "pandas.errors.IntCastingNaNError SA01" \
135121
-i "pandas.errors.InvalidIndexError SA01" \
136122
-i "pandas.errors.NullFrequencyError SA01" \
137123
-i "pandas.errors.NumExprClobberingError SA01" \
138124
-i "pandas.errors.NumbaUtilError SA01" \
139-
-i "pandas.errors.OptionError SA01" \
140125
-i "pandas.errors.OutOfBoundsTimedelta SA01" \
141126
-i "pandas.errors.PerformanceWarning SA01" \
142127
-i "pandas.errors.PossibleDataLossError SA01" \
143-
-i "pandas.errors.PossiblePrecisionLoss SA01" \
144128
-i "pandas.errors.UndefinedVariableError PR01,SA01" \
145129
-i "pandas.errors.UnsortedIndexError SA01" \
146-
-i "pandas.errors.UnsupportedFunctionCall SA01" \
147130
-i "pandas.errors.ValueLabelTypeMismatch SA01" \
148131
-i "pandas.infer_freq SA01" \
149132
-i "pandas.io.json.build_table_schema PR07,RT03,SA01" \
150133
-i "pandas.io.stata.StataWriter.write_file SA01" \
151-
-i "pandas.json_normalize RT03,SA01" \
152134
-i "pandas.plotting.andrews_curves RT03,SA01" \
153135
-i "pandas.plotting.scatter_matrix PR07,SA01" \
154-
-i "pandas.set_eng_float_format RT03,SA01" \
155136
-i "pandas.tseries.offsets.BDay PR02,SA01" \
156137
-i "pandas.tseries.offsets.BQuarterBegin.is_on_offset GL08" \
157138
-i "pandas.tseries.offsets.BQuarterBegin.n GL08" \
@@ -297,7 +278,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
297278
-i "pandas.tseries.offsets.Second.is_on_offset GL08" \
298279
-i "pandas.tseries.offsets.Second.n GL08" \
299280
-i "pandas.tseries.offsets.Second.normalize GL08" \
300-
-i "pandas.tseries.offsets.SemiMonthBegin SA01" \
301281
-i "pandas.tseries.offsets.SemiMonthBegin.day_of_month GL08" \
302282
-i "pandas.tseries.offsets.SemiMonthBegin.is_on_offset GL08" \
303283
-i "pandas.tseries.offsets.SemiMonthBegin.n GL08" \

ci/deps/actions-310-minimum_versions.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ dependencies:
77
- python=3.10
88

99
# build dependencies
10-
- versioneer[toml]
10+
- versioneer
1111
- cython>=0.29.33
12-
- meson[ninja]=1.2.1
12+
- meson=1.2.1
1313
- meson-python=0.13.1
1414

1515
# test dependencies

ci/deps/actions-310.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ dependencies:
55
- python=3.10
66

77
# build dependencies
8-
- versioneer[toml]
8+
- versioneer
99
- cython>=0.29.33
10-
- meson[ninja]=1.2.1
10+
- meson=1.2.1
1111
- meson-python=0.13.1
1212

1313
# test dependencies

ci/deps/actions-311-downstream_compat.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ dependencies:
66
- python=3.11
77

88
# build dependencies
9-
- versioneer[toml]
9+
- versioneer
1010
- cython>=0.29.33
11-
- meson[ninja]=1.2.1
11+
- meson=1.2.1
1212
- meson-python=0.13.1
1313

1414
# test dependencies

ci/deps/actions-311-numpydev.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ dependencies:
55
- python=3.11
66

77
# build dependencies
8-
- versioneer[toml]
9-
- meson[ninja]=1.2.1
8+
- versioneer
9+
- meson=1.2.1
1010
- meson-python=0.13.1
1111
- cython>=0.29.33
1212

ci/deps/actions-311-pyarrownightly.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ dependencies:
55
- python=3.11
66

77
# build dependencies
8-
- versioneer[toml]
9-
- meson[ninja]=1.2.1
8+
- versioneer
9+
- meson=1.2.1
1010
- cython>=0.29.33
1111
- meson-python=0.13.1
1212

@@ -18,7 +18,7 @@ dependencies:
1818

1919
# required dependencies
2020
- python-dateutil
21-
- numpy<2
21+
- numpy
2222
- pip
2323

2424
- pip:

ci/deps/actions-311.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ dependencies:
55
- python=3.11
66

77
# build dependencies
8-
- versioneer[toml]
8+
- versioneer
99
- cython>=0.29.33
10-
- meson[ninja]=1.2.1
10+
- meson=1.2.1
1111
- meson-python=0.13.1
1212

1313
# test dependencies

ci/deps/actions-312.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ dependencies:
55
- python=3.12
66

77
# build dependencies
8-
- versioneer[toml]
8+
- versioneer
99
- cython>=0.29.33
10-
- meson[ninja]=1.2.1
10+
- meson=1.2.1
1111
- meson-python=0.13.1
1212

1313
# test dependencies

ci/deps/actions-pypy-39.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ dependencies:
88
- python=3.9[build=*_pypy]
99

1010
# build dependencies
11-
- versioneer[toml]
11+
- versioneer
1212
- cython>=0.29.33
13-
- meson[ninja]=1.2.1
13+
- meson=1.2.1
1414
- meson-python=0.13.1
1515

1616
# test dependencies

ci/deps/circle-311-arm64.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ dependencies:
55
- python=3.11
66

77
# build dependencies
8-
- versioneer[toml]
8+
- versioneer
99
- cython>=0.29.33
10-
- meson[ninja]=1.2.1
10+
- meson=1.2.1
1111
- meson-python=0.13.1
1212

1313
# test dependencies

doc/source/development/contributing_codebase.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,12 @@ So, before actually writing any code, you should write your tests. Often the te
298298
taken from the original GitHub issue. However, it is always worth considering additional
299299
use cases and writing corresponding tests.
300300

301+
We use `code coverage <https://en.wikipedia.org/wiki/Code_coverage>`_ to help understand
302+
the amount of code which is covered by a test. We recommend striving to ensure code
303+
you add or change within Pandas is covered by a test. Please see our
304+
`code coverage dashboard through Codecov <https://app.codecov.io/github/pandas-dev/pandas>`_
305+
for more information.
306+
301307
Adding tests is one of the most common requests after code is pushed to pandas. Therefore,
302308
it is worth getting in the habit of writing tests ahead of time so this is never an issue.
303309

doc/source/development/contributing_docstring.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ Finally, docstrings can also be appended to with the ``doc`` decorator.
940940

941941
In this example, we'll create a parent docstring normally (this is like
942942
``pandas.core.generic.NDFrame``). Then we'll have two children (like
943-
``pandas.core.series.Series`` and ``pandas.DataFrame``). We'll
943+
``pandas.Series`` and ``pandas.DataFrame``). We'll
944944
substitute the class names in this docstring.
945945

946946
.. code-block:: python
@@ -995,5 +995,5 @@ mapping function names to docstrings. Wherever possible, we prefer using
995995
``doc``, since the docstring-writing processes is slightly closer to normal.
996996

997997
See ``pandas.core.generic.NDFrame.fillna`` for an example template, and
998-
``pandas.core.series.Series.fillna`` and ``pandas.core.generic.frame.fillna``
998+
``pandas.Series.fillna`` and ``pandas.core.generic.frame.fillna``
999999
for the filled versions.

doc/source/development/contributing_environment.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ You will need `Build Tools for Visual Studio 2022
3535
scrolling down to "All downloads" -> "Tools for Visual Studio".
3636
In the installer, select the "Desktop development with C++" Workloads.
3737

38+
If you encounter an error indicating ``cl.exe`` is not found when building with Meson,
39+
reopen the installer and also select the optional component
40+
**MSVC v142 - VS 2019 C++ x64/x86 build tools** in the right pane for installation.
41+
3842
Alternatively, you can install the necessary components on the commandline using
3943
`vs_BuildTools.exe <https://learn.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio?source=recommendations&view=vs-2022>`_
4044

doc/source/getting_started/comparison/comparison_with_r.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ In Python, this list would be a list of tuples, so
405405
a = list(enumerate(list(range(1, 5)) + [np.NAN]))
406406
pd.DataFrame(a)
407407
408-
For more details and examples see :ref:`the Into to Data Structures
408+
For more details and examples see :ref:`the Intro to Data Structures
409409
documentation <dsintro>`.
410410

411411
meltdf

0 commit comments

Comments
 (0)