Skip to content

Commit 586a446

Browse files
Merge branch 'pandas-dev:main' into Fix#58748
2 parents c1d050e + f2f298b commit 586a446

File tree

196 files changed

+2782
-1908
lines changed

Some content is hidden

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

196 files changed

+2782
-1908
lines changed

.circleci/config.yml

+45-27
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,64 @@
11
version: 2.1
22

33
jobs:
4-
test-arm:
4+
test-linux-arm:
55
machine:
66
image: default
77
resource_class: arm.large
88
environment:
9-
ENV_FILE: ci/deps/circle-310-arm64.yaml
9+
ENV_FILE: ci/deps/circle-311-arm64.yaml
1010
PYTEST_WORKERS: auto
1111
PATTERN: "not single_cpu and not slow and not network and not clipboard and not arm_slow and not db"
1212
PYTEST_TARGET: "pandas"
1313
PANDAS_CI: "1"
1414
steps:
1515
- checkout
16-
- run: .circleci/setup_env.sh
17-
- run: >
18-
PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH
19-
LD_PRELOAD=$HOME/miniconda3/envs/pandas-dev/lib/libgomp.so.1:$LD_PRELOAD
20-
ci/run_tests.sh
21-
linux-musl:
16+
- run:
17+
name: Install Environment and Run Tests
18+
shell: /bin/bash -exuo pipefail
19+
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
27+
conda info -a
28+
conda env create -q -n pandas-dev -f $ENV_FILE
29+
conda list -n pandas-dev
30+
source activate pandas-dev
31+
if pip show pandas 1>/dev/null; then
32+
pip uninstall -y pandas
33+
fi
34+
python -m pip install --no-build-isolation -ve . --config-settings=setup-args="--werror"
35+
PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH
36+
ci/run_tests.sh
37+
test-linux-musl:
2238
docker:
2339
- image: quay.io/pypa/musllinux_1_1_aarch64
2440
resource_class: arm.large
2541
steps:
2642
# Install pkgs first to have git in the image
2743
# (needed for checkout)
28-
- run: |
29-
apk update
30-
apk add git
31-
apk add musl-locales
44+
- run:
45+
name: Install System Packages
46+
command: |
47+
apk update
48+
apk add git
49+
apk add musl-locales
3250
- checkout
33-
- run: |
34-
/opt/python/cp311-cp311/bin/python -m venv ~/virtualenvs/pandas-dev
35-
. ~/virtualenvs/pandas-dev/bin/activate
36-
python -m pip install --no-cache-dir -U pip wheel setuptools meson-python==0.13.1 meson[ninja]==1.2.1
37-
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
38-
python -m pip install --no-cache-dir --no-build-isolation -e . --config-settings=setup-args="--werror"
39-
python -m pip list --no-cache-dir
40-
- run: |
41-
. ~/virtualenvs/pandas-dev/bin/activate
42-
export PANDAS_CI=1
43-
python -m pytest -m 'not slow and not network and not clipboard and not single_cpu' pandas --junitxml=test-data.xml
51+
- run:
52+
name: Install Environment and Run Tests
53+
command: |
54+
/opt/python/cp311-cp311/bin/python -m venv ~/virtualenvs/pandas-dev
55+
. ~/virtualenvs/pandas-dev/bin/activate
56+
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
58+
python -m pip install --no-cache-dir --no-build-isolation -e . --config-settings=setup-args="--werror"
59+
python -m pip list --no-cache-dir
60+
export PANDAS_CI=1
61+
python -m pytest -m 'not slow and not network and not clipboard and not single_cpu' pandas --junitxml=test-data.xml
4462
build-aarch64:
4563
parameters:
4664
cibw-build:
@@ -71,7 +89,7 @@ jobs:
7189
name: Build aarch64 wheels
7290
no_output_timeout: 30m # Sometimes the tests won't generate any output, make sure the job doesn't get killed by that
7391
command: |
74-
pip3 install cibuildwheel==2.15.0
92+
pip3 install cibuildwheel==2.18.1
7593
cibuildwheel --prerelease-pythons --output-dir wheelhouse
7694
7795
environment:
@@ -81,7 +99,7 @@ jobs:
8199
name: Install Anaconda Client & Upload Wheels
82100
command: |
83101
echo "Install Mambaforge"
84-
MAMBA_URL="https://github.com/conda-forge/miniforge/releases/download/23.1.0-0/Mambaforge-23.1.0-0-Linux-aarch64.sh"
102+
MAMBA_URL="https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-Linux-aarch64.sh"
85103
echo "Downloading $MAMBA_URL"
86104
wget -q $MAMBA_URL -O minimamba.sh
87105
chmod +x minimamba.sh
@@ -107,14 +125,14 @@ workflows:
107125
not:
108126
equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
109127
jobs:
110-
- test-arm
128+
- test-linux-arm
111129
test-musl:
112130
# Don't run trigger this one when scheduled pipeline runs
113131
when:
114132
not:
115133
equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
116134
jobs:
117-
- linux-musl
135+
- test-linux-musl
118136
build-wheels:
119137
jobs:
120138
- build-aarch64:

.circleci/setup_env.sh

-60
This file was deleted.

.github/workflows/wheels.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ jobs:
140140
run: echo "sdist_name=$(cd ./dist && ls -d */)" >> "$GITHUB_ENV"
141141

142142
- name: Build wheels
143-
uses: pypa/[email protected].0
143+
uses: pypa/[email protected].1
144144
with:
145145
package-dir: ./dist/${{ startsWith(matrix.buildplat[1], 'macosx') && env.sdist_name || needs.build_sdist.outputs.sdist_file }}
146146
env:

.pre-commit-config.yaml

+3-3
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.4.3
22+
rev: v0.4.7
2323
hooks:
2424
- id: ruff
2525
args: [--exit-non-zero-on-fix]
@@ -40,7 +40,7 @@ repos:
4040
pass_filenames: true
4141
require_serial: false
4242
- repo: https://github.com/codespell-project/codespell
43-
rev: v2.2.6
43+
rev: v2.3.0
4444
hooks:
4545
- id: codespell
4646
types_or: [python, rst, markdown, cython, c]
@@ -92,7 +92,7 @@ repos:
9292
- id: sphinx-lint
9393
args: ["--enable", "all", "--disable", "line-too-long"]
9494
- repo: https://github.com/pre-commit/mirrors-clang-format
95-
rev: v18.1.4
95+
rev: v18.1.5
9696
hooks:
9797
- id: clang-format
9898
files: ^pandas/_libs/src|^pandas/_libs/include

asv_bench/benchmarks/tslibs/fields.py

+8
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,15 @@ class TimeGetTimedeltaField:
1919
def setup(self, size, field):
2020
arr = np.random.randint(0, 10, size=size, dtype="i8")
2121
self.i8data = arr
22+
arr = np.random.randint(-86400 * 1_000_000_000, 0, size=size, dtype="i8")
23+
self.i8data_negative = arr
2224

2325
def time_get_timedelta_field(self, size, field):
2426
get_timedelta_field(self.i8data, field)
2527

28+
def time_get_timedelta_field_negative_td(self, size, field):
29+
get_timedelta_field(self.i8data_negative, field)
30+
2631

2732
class TimeGetDateField:
2833
params = [
@@ -72,3 +77,6 @@ def setup(self, size, side, period, freqstr, month_kw):
7277

7378
def time_get_start_end_field(self, size, side, period, freqstr, month_kw):
7479
get_start_end_field(self.i8data, self.attrname, freqstr, month_kw=month_kw)
80+
81+
82+
from ..pandas_vb_common import setup # noqa: F401 isort:skip

ci/code_checks.sh

+4-37
Original file line numberDiff line numberDiff line change
@@ -74,39 +74,31 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
7474
-i "pandas.DataFrame.mean RT03,SA01" \
7575
-i "pandas.DataFrame.median RT03,SA01" \
7676
-i "pandas.DataFrame.min RT03" \
77-
-i "pandas.DataFrame.plot PR02,SA01" \
77+
-i "pandas.DataFrame.plot PR02" \
7878
-i "pandas.Grouper PR02" \
79-
-i "pandas.MultiIndex PR01" \
8079
-i "pandas.MultiIndex.append PR07,SA01" \
8180
-i "pandas.MultiIndex.copy PR07,RT03,SA01" \
8281
-i "pandas.MultiIndex.drop PR07,RT03,SA01" \
83-
-i "pandas.MultiIndex.dtypes SA01" \
8482
-i "pandas.MultiIndex.get_level_values SA01" \
8583
-i "pandas.MultiIndex.get_loc PR07" \
8684
-i "pandas.MultiIndex.get_loc_level PR07" \
87-
-i "pandas.MultiIndex.levels SA01" \
8885
-i "pandas.MultiIndex.levshape SA01" \
8986
-i "pandas.MultiIndex.names SA01" \
9087
-i "pandas.MultiIndex.nlevels SA01" \
9188
-i "pandas.MultiIndex.remove_unused_levels RT03,SA01" \
9289
-i "pandas.MultiIndex.reorder_levels RT03,SA01" \
93-
-i "pandas.MultiIndex.set_codes SA01" \
9490
-i "pandas.MultiIndex.set_levels RT03,SA01" \
9591
-i "pandas.MultiIndex.sortlevel PR07,SA01" \
9692
-i "pandas.MultiIndex.to_frame RT03" \
97-
-i "pandas.MultiIndex.truncate SA01" \
9893
-i "pandas.NA SA01" \
9994
-i "pandas.NaT SA01" \
10095
-i "pandas.NamedAgg SA01" \
101-
-i "pandas.Period SA01" \
10296
-i "pandas.Period.asfreq SA01" \
10397
-i "pandas.Period.freq GL08" \
10498
-i "pandas.Period.freqstr SA01" \
105-
-i "pandas.Period.is_leap_year SA01" \
10699
-i "pandas.Period.month SA01" \
107100
-i "pandas.Period.now SA01" \
108101
-i "pandas.Period.ordinal GL08" \
109-
-i "pandas.Period.quarter SA01" \
110102
-i "pandas.Period.strftime PR01,SA01" \
111103
-i "pandas.Period.to_timestamp SA01" \
112104
-i "pandas.Period.year SA01" \
@@ -172,7 +164,7 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
172164
-i "pandas.Series.lt SA01" \
173165
-i "pandas.Series.ne SA01" \
174166
-i "pandas.Series.pad PR01,SA01" \
175-
-i "pandas.Series.plot PR02,SA01" \
167+
-i "pandas.Series.plot PR02" \
176168
-i "pandas.Series.pop RT03,SA01" \
177169
-i "pandas.Series.prod RT03" \
178170
-i "pandas.Series.product RT03" \
@@ -351,7 +343,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
351343
-i "pandas.arrays.NumpyExtensionArray SA01" \
352344
-i "pandas.arrays.SparseArray PR07,SA01" \
353345
-i "pandas.arrays.TimedeltaArray PR07,SA01" \
354-
-i "pandas.bdate_range RT03,SA01" \
355346
-i "pandas.core.groupby.DataFrameGroupBy.__iter__ RT03,SA01" \
356347
-i "pandas.core.groupby.DataFrameGroupBy.agg RT03" \
357348
-i "pandas.core.groupby.DataFrameGroupBy.aggregate RT03" \
@@ -367,7 +358,7 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
367358
-i "pandas.core.groupby.DataFrameGroupBy.nth PR02" \
368359
-i "pandas.core.groupby.DataFrameGroupBy.nunique SA01" \
369360
-i "pandas.core.groupby.DataFrameGroupBy.ohlc SA01" \
370-
-i "pandas.core.groupby.DataFrameGroupBy.plot PR02,SA01" \
361+
-i "pandas.core.groupby.DataFrameGroupBy.plot PR02" \
371362
-i "pandas.core.groupby.DataFrameGroupBy.prod SA01" \
372363
-i "pandas.core.groupby.DataFrameGroupBy.sem SA01" \
373364
-i "pandas.core.groupby.DataFrameGroupBy.sum SA01" \
@@ -385,7 +376,7 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
385376
-i "pandas.core.groupby.SeriesGroupBy.min SA01" \
386377
-i "pandas.core.groupby.SeriesGroupBy.nth PR02" \
387378
-i "pandas.core.groupby.SeriesGroupBy.ohlc SA01" \
388-
-i "pandas.core.groupby.SeriesGroupBy.plot PR02,SA01" \
379+
-i "pandas.core.groupby.SeriesGroupBy.plot PR02" \
389380
-i "pandas.core.groupby.SeriesGroupBy.prod SA01" \
390381
-i "pandas.core.groupby.SeriesGroupBy.sem SA01" \
391382
-i "pandas.core.groupby.SeriesGroupBy.sum SA01" \
@@ -412,7 +403,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
412403
-i "pandas.core.window.rolling.Window.std PR01" \
413404
-i "pandas.core.window.rolling.Window.var PR01" \
414405
-i "pandas.date_range RT03" \
415-
-i "pandas.describe_option SA01" \
416406
-i "pandas.errors.AbstractMethodError PR01,SA01" \
417407
-i "pandas.errors.AttributeConflictWarning SA01" \
418408
-i "pandas.errors.CSSWarning SA01" \
@@ -477,32 +467,12 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
477467
-i "pandas.json_normalize RT03,SA01" \
478468
-i "pandas.merge PR07" \
479469
-i "pandas.merge_asof PR07,RT03" \
480-
-i "pandas.merge_ordered PR07" \
481-
-i "pandas.option_context SA01" \
482470
-i "pandas.period_range RT03,SA01" \
483-
-i "pandas.pivot PR07" \
484-
-i "pandas.pivot_table PR07" \
485471
-i "pandas.plotting.andrews_curves RT03,SA01" \
486-
-i "pandas.plotting.autocorrelation_plot RT03,SA01" \
487472
-i "pandas.plotting.lag_plot RT03,SA01" \
488-
-i "pandas.plotting.parallel_coordinates PR07,RT03,SA01" \
489-
-i "pandas.plotting.plot_params SA01" \
490473
-i "pandas.plotting.scatter_matrix PR07,SA01" \
491-
-i "pandas.plotting.table PR07,RT03,SA01" \
492-
-i "pandas.qcut PR07,SA01" \
493-
-i "pandas.read_feather SA01" \
494-
-i "pandas.read_orc SA01" \
495-
-i "pandas.read_sas SA01" \
496-
-i "pandas.read_spss SA01" \
497-
-i "pandas.reset_option SA01" \
498474
-i "pandas.set_eng_float_format RT03,SA01" \
499-
-i "pandas.set_option SA01" \
500-
-i "pandas.show_versions SA01" \
501-
-i "pandas.test SA01" \
502475
-i "pandas.testing.assert_extension_array_equal SA01" \
503-
-i "pandas.testing.assert_index_equal PR07,SA01" \
504-
-i "pandas.testing.assert_series_equal PR07,SA01" \
505-
-i "pandas.timedelta_range SA01" \
506476
-i "pandas.tseries.offsets.BDay PR02,SA01" \
507477
-i "pandas.tseries.offsets.BQuarterBegin PR02" \
508478
-i "pandas.tseries.offsets.BQuarterBegin.freqstr SA01" \
@@ -787,16 +757,13 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
787757
-i "pandas.tseries.offsets.YearBegin.nanos GL08" \
788758
-i "pandas.tseries.offsets.YearBegin.normalize GL08" \
789759
-i "pandas.tseries.offsets.YearBegin.rule_code GL08" \
790-
-i "pandas.tseries.offsets.YearEnd PR02" \
791760
-i "pandas.tseries.offsets.YearEnd.freqstr SA01" \
792761
-i "pandas.tseries.offsets.YearEnd.is_on_offset GL08" \
793762
-i "pandas.tseries.offsets.YearEnd.month GL08" \
794763
-i "pandas.tseries.offsets.YearEnd.n GL08" \
795764
-i "pandas.tseries.offsets.YearEnd.nanos GL08" \
796765
-i "pandas.tseries.offsets.YearEnd.normalize GL08" \
797766
-i "pandas.tseries.offsets.YearEnd.rule_code GL08" \
798-
-i "pandas.unique PR07" \
799-
-i "pandas.util.hash_array PR07,SA01" \
800767
-i "pandas.util.hash_pandas_object PR07,SA01" # There should be no backslash in the final line, please keep this comment in the last ignored function
801768

802769
RET=$(($RET + $?)) ; echo $MSG "DONE"

ci/deps/circle-310-arm64.yaml renamed to ci/deps/circle-311-arm64.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: pandas-dev
22
channels:
33
- conda-forge
44
dependencies:
5-
- python=3.10
5+
- python=3.11
66

77
# build dependencies
88
- versioneer[toml]

0 commit comments

Comments
 (0)