Skip to content

Commit e5b75f0

Browse files
committed
Merge remote-tracking branch 'upstream/main' into better-msg-delta-series_timestamp
2 parents 55e6e47 + b96491a commit e5b75f0

File tree

159 files changed

+1886
-1130
lines changed

Some content is hidden

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

159 files changed

+1886
-1130
lines changed

.circleci/config.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,13 @@ jobs:
9292
no_output_timeout: 30m # Sometimes the tests won't generate any output, make sure the job doesn't get killed by that
9393
command: |
9494
pip3 install cibuildwheel==2.20.0
95-
cibuildwheel --output-dir wheelhouse
95+
if [[ $CIBW_BUILD == cp313t* ]]; then
96+
# TODO: temporarily run 3.13 free threaded builds without build isolation
97+
# since we need pre-release cython
98+
CIBW_BUILD_FRONTEND="pip; args: --no-build-isolation" cibuildwheel --output-dir wheelhouse
99+
else
100+
cibuildwheel --output-dir wheelhouse
101+
fi
96102
97103
environment:
98104
CIBW_BUILD: << parameters.cibw-build >>
@@ -141,6 +147,10 @@ workflows:
141147
cibw-build: ["cp310-manylinux_aarch64",
142148
"cp311-manylinux_aarch64",
143149
"cp312-manylinux_aarch64",
150+
"cp313-manylinux_aarch64",
151+
"cp313t-manylinux_aarch64",
144152
"cp310-musllinux_aarch64",
145153
"cp311-musllinux_aarch64",
146-
"cp312-musllinux_aarch64",]
154+
"cp312-musllinux_aarch64",
155+
"cp313-musllinux_aarch64",
156+
"cp313t-musllinux_aarch64"]

.github/workflows/unit-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ jobs:
380380
fetch-depth: 0
381381

382382
- name: Set up Python Free-threading Version
383-
uses: deadsnakes/action@v3.1.0
383+
uses: deadsnakes/action@v3.2.0
384384
with:
385385
python-version: 3.13-dev
386386
nogil: true

.github/workflows/wheels.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,7 @@ jobs:
102102
python: [["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"], ["cp313t", "3.13"]]
103103
include:
104104
# 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'
105+
# after pandas can be built with a released NumPy/Cython
108106
- python: ["cp313t", "3.13"]
109107
cibw_build_frontend: 'pip; args: --no-build-isolation'
110108
# Build Pyodide wheels and upload them to Anaconda.org
@@ -187,11 +185,9 @@ jobs:
187185
- name: Test Windows Wheels
188186
if: ${{ matrix.buildplat[1] == 'win_amd64' }}
189187
shell: pwsh
190-
# TODO: Remove NumPy nightly install when there's a 3.13 wheel on PyPI
191188
run: |
192189
$TST_CMD = @"
193190
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;' }}
195191
python -m pip install `$(Get-Item pandas\wheelhouse\*.whl);
196192
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`\"])`';
197193
"@

MANIFEST.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,3 @@ 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_test.sh

ci/code_checks.sh

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,9 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
7070
--format=actions \
7171
-i ES01 `# For now it is ok if docstrings are missing the extended summary` \
7272
-i "pandas.Series.dt PR01" `# Accessors are implemented as classes, but we do not document the Parameters section` \
73-
-i "pandas.NA SA01" \
7473
-i "pandas.Period.freq GL08" \
7574
-i "pandas.Period.ordinal GL08" \
76-
-i "pandas.PeriodDtype.freq SA01" \
7775
-i "pandas.RangeIndex.from_range PR01,SA01" \
78-
-i "pandas.RangeIndex.start SA01" \
79-
-i "pandas.RangeIndex.step SA01" \
80-
-i "pandas.RangeIndex.stop SA01" \
8176
-i "pandas.Series.cat.add_categories PR01,PR02" \
8277
-i "pandas.Series.cat.as_ordered PR01" \
8378
-i "pandas.Series.cat.as_unordered PR01" \
@@ -92,69 +87,42 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
9287
-i "pandas.Series.dt.floor PR01,PR02" \
9388
-i "pandas.Series.dt.freq GL08" \
9489
-i "pandas.Series.dt.month_name PR01,PR02" \
95-
-i "pandas.Series.dt.nanoseconds SA01" \
9690
-i "pandas.Series.dt.normalize PR01" \
9791
-i "pandas.Series.dt.round PR01,PR02" \
98-
-i "pandas.Series.dt.seconds SA01" \
9992
-i "pandas.Series.dt.strftime PR01,PR02" \
10093
-i "pandas.Series.dt.to_period PR01,PR02" \
10194
-i "pandas.Series.dt.total_seconds PR01" \
10295
-i "pandas.Series.dt.tz_convert PR01,PR02" \
10396
-i "pandas.Series.dt.tz_localize PR01,PR02" \
10497
-i "pandas.Series.dt.unit GL08" \
10598
-i "pandas.Series.pad PR01,SA01" \
106-
-i "pandas.Series.sparse.fill_value SA01" \
10799
-i "pandas.Series.sparse.from_coo PR07,SA01" \
108100
-i "pandas.Series.sparse.npoints SA01" \
109-
-i "pandas.Series.sparse.sp_values SA01" \
110-
-i "pandas.Timedelta.components SA01" \
111101
-i "pandas.Timedelta.max PR02" \
112102
-i "pandas.Timedelta.min PR02" \
113103
-i "pandas.Timedelta.resolution PR02" \
114-
-i "pandas.Timedelta.to_timedelta64 SA01" \
115-
-i "pandas.Timedelta.total_seconds SA01" \
116-
-i "pandas.TimedeltaIndex.nanoseconds SA01" \
117-
-i "pandas.TimedeltaIndex.seconds SA01" \
118104
-i "pandas.TimedeltaIndex.to_pytimedelta RT03,SA01" \
119105
-i "pandas.Timestamp.max PR02" \
120106
-i "pandas.Timestamp.min PR02" \
121107
-i "pandas.Timestamp.nanosecond GL08" \
122108
-i "pandas.Timestamp.resolution PR02" \
123109
-i "pandas.Timestamp.tzinfo GL08" \
124110
-i "pandas.Timestamp.year GL08" \
125-
-i "pandas.api.extensions.ExtensionArray.interpolate PR01,SA01" \
126-
-i "pandas.api.types.is_bool PR01,SA01" \
127-
-i "pandas.api.types.is_categorical_dtype SA01" \
128-
-i "pandas.api.types.is_complex PR01,SA01" \
129-
-i "pandas.api.types.is_complex_dtype SA01" \
130-
-i "pandas.api.types.is_datetime64_dtype SA01" \
131-
-i "pandas.api.types.is_datetime64_ns_dtype SA01" \
132-
-i "pandas.api.types.is_datetime64tz_dtype SA01" \
133111
-i "pandas.api.types.is_dict_like PR07,SA01" \
134-
-i "pandas.api.types.is_extension_array_dtype SA01" \
135112
-i "pandas.api.types.is_file_like PR07,SA01" \
136113
-i "pandas.api.types.is_float PR01,SA01" \
137-
-i "pandas.api.types.is_float_dtype SA01" \
138114
-i "pandas.api.types.is_hashable PR01,RT03,SA01" \
139-
-i "pandas.api.types.is_int64_dtype SA01" \
140115
-i "pandas.api.types.is_integer PR01,SA01" \
141-
-i "pandas.api.types.is_integer_dtype SA01" \
142-
-i "pandas.api.types.is_interval_dtype SA01" \
143116
-i "pandas.api.types.is_iterator PR07,SA01" \
144-
-i "pandas.api.types.is_list_like SA01" \
145117
-i "pandas.api.types.is_named_tuple PR07,SA01" \
146-
-i "pandas.api.types.is_object_dtype SA01" \
147118
-i "pandas.api.types.is_re PR07,SA01" \
148119
-i "pandas.api.types.is_re_compilable PR07,SA01" \
149120
-i "pandas.api.types.pandas_dtype PR07,RT03,SA01" \
150121
-i "pandas.arrays.ArrowExtensionArray PR07,SA01" \
151-
-i "pandas.arrays.BooleanArray SA01" \
152122
-i "pandas.arrays.DatetimeArray SA01" \
153-
-i "pandas.arrays.FloatingArray SA01" \
154123
-i "pandas.arrays.IntegerArray SA01" \
155124
-i "pandas.arrays.IntervalArray.left SA01" \
156125
-i "pandas.arrays.IntervalArray.length SA01" \
157-
-i "pandas.arrays.IntervalArray.mid SA01" \
158126
-i "pandas.arrays.IntervalArray.right SA01" \
159127
-i "pandas.arrays.NumpyExtensionArray SA01" \
160128
-i "pandas.arrays.SparseArray PR07,SA01" \
@@ -163,37 +131,27 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
163131
-i "pandas.core.groupby.DataFrameGroupBy.agg RT03" \
164132
-i "pandas.core.groupby.DataFrameGroupBy.aggregate RT03" \
165133
-i "pandas.core.groupby.DataFrameGroupBy.boxplot PR07,RT03,SA01" \
166-
-i "pandas.core.groupby.DataFrameGroupBy.filter SA01" \
167134
-i "pandas.core.groupby.DataFrameGroupBy.get_group RT03,SA01" \
168135
-i "pandas.core.groupby.DataFrameGroupBy.groups SA01" \
169-
-i "pandas.core.groupby.DataFrameGroupBy.hist RT03" \
170136
-i "pandas.core.groupby.DataFrameGroupBy.indices SA01" \
171-
-i "pandas.core.groupby.DataFrameGroupBy.max SA01" \
172-
-i "pandas.core.groupby.DataFrameGroupBy.min SA01" \
173137
-i "pandas.core.groupby.DataFrameGroupBy.nth PR02" \
174138
-i "pandas.core.groupby.DataFrameGroupBy.nunique SA01" \
175139
-i "pandas.core.groupby.DataFrameGroupBy.ohlc SA01" \
176140
-i "pandas.core.groupby.DataFrameGroupBy.plot PR02" \
177141
-i "pandas.core.groupby.DataFrameGroupBy.sem SA01" \
178-
-i "pandas.core.groupby.DataFrameGroupBy.sum SA01" \
179142
-i "pandas.core.groupby.SeriesGroupBy.__iter__ RT03,SA01" \
180143
-i "pandas.core.groupby.SeriesGroupBy.agg RT03" \
181144
-i "pandas.core.groupby.SeriesGroupBy.aggregate RT03" \
182-
-i "pandas.core.groupby.SeriesGroupBy.filter PR01,SA01" \
183145
-i "pandas.core.groupby.SeriesGroupBy.get_group RT03,SA01" \
184146
-i "pandas.core.groupby.SeriesGroupBy.groups SA01" \
185147
-i "pandas.core.groupby.SeriesGroupBy.indices SA01" \
186148
-i "pandas.core.groupby.SeriesGroupBy.is_monotonic_decreasing SA01" \
187149
-i "pandas.core.groupby.SeriesGroupBy.is_monotonic_increasing SA01" \
188-
-i "pandas.core.groupby.SeriesGroupBy.max SA01" \
189-
-i "pandas.core.groupby.SeriesGroupBy.min SA01" \
190150
-i "pandas.core.groupby.SeriesGroupBy.nth PR02" \
191151
-i "pandas.core.groupby.SeriesGroupBy.ohlc SA01" \
192152
-i "pandas.core.groupby.SeriesGroupBy.plot PR02" \
193153
-i "pandas.core.groupby.SeriesGroupBy.sem SA01" \
194-
-i "pandas.core.groupby.SeriesGroupBy.sum SA01" \
195154
-i "pandas.core.resample.Resampler.__iter__ RT03,SA01" \
196-
-i "pandas.core.resample.Resampler.ffill RT03" \
197155
-i "pandas.core.resample.Resampler.get_group RT03,SA01" \
198156
-i "pandas.core.resample.Resampler.groups SA01" \
199157
-i "pandas.core.resample.Resampler.indices SA01" \
@@ -208,19 +166,16 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
208166
-i "pandas.core.resample.Resampler.sum SA01" \
209167
-i "pandas.core.resample.Resampler.transform PR01,RT03,SA01" \
210168
-i "pandas.core.resample.Resampler.var SA01" \
211-
-i "pandas.date_range RT03" \
212169
-i "pandas.errors.AttributeConflictWarning SA01" \
213170
-i "pandas.errors.CSSWarning SA01" \
214171
-i "pandas.errors.CategoricalConversionWarning SA01" \
215172
-i "pandas.errors.ChainedAssignmentError SA01" \
216173
-i "pandas.errors.ClosedFileError SA01" \
217174
-i "pandas.errors.DataError SA01" \
218175
-i "pandas.errors.DuplicateLabelError SA01" \
219-
-i "pandas.errors.EmptyDataError SA01" \
220176
-i "pandas.errors.IntCastingNaNError SA01" \
221177
-i "pandas.errors.InvalidIndexError SA01" \
222178
-i "pandas.errors.InvalidVersion SA01" \
223-
-i "pandas.errors.MergeError SA01" \
224179
-i "pandas.errors.NullFrequencyError SA01" \
225180
-i "pandas.errors.NumExprClobberingError SA01" \
226181
-i "pandas.errors.NumbaUtilError SA01" \
@@ -399,7 +354,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
399354
-i "pandas.tseries.offsets.SemiMonthBegin.n GL08" \
400355
-i "pandas.tseries.offsets.SemiMonthBegin.normalize GL08" \
401356
-i "pandas.tseries.offsets.SemiMonthBegin.rule_code GL08" \
402-
-i "pandas.tseries.offsets.SemiMonthEnd SA01" \
403357
-i "pandas.tseries.offsets.SemiMonthEnd.day_of_month GL08" \
404358
-i "pandas.tseries.offsets.SemiMonthEnd.is_on_offset GL08" \
405359
-i "pandas.tseries.offsets.SemiMonthEnd.n GL08" \
@@ -413,7 +367,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
413367
-i "pandas.tseries.offsets.Week.n GL08" \
414368
-i "pandas.tseries.offsets.Week.normalize GL08" \
415369
-i "pandas.tseries.offsets.Week.weekday GL08" \
416-
-i "pandas.tseries.offsets.WeekOfMonth SA01" \
417370
-i "pandas.tseries.offsets.WeekOfMonth.is_on_offset GL08" \
418371
-i "pandas.tseries.offsets.WeekOfMonth.n GL08" \
419372
-i "pandas.tseries.offsets.WeekOfMonth.normalize GL08" \

doc/source/conf.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,9 @@
254254
"json_url": "https://pandas.pydata.org/versions.json",
255255
"version_match": switcher_version,
256256
},
257-
"show_version_warning_banner": True,
257+
# This shows a warning for patch releases since the
258+
# patch version doesn't compare as equal (e.g. 2.2.1 != 2.2.0 but it should be)
259+
"show_version_warning_banner": False,
258260
"icon_links": [
259261
{
260262
"name": "Mastodon",

doc/source/development/maintaining.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ in the next places:
344344
- Git repo with a `new tag <https://github.com/pandas-dev/pandas/tags>`_
345345
- Source distribution in a `GitHub release <https://github.com/pandas-dev/pandas/releases>`_
346346
- Pip packages in the `PyPI <https://pypi.org/project/pandas/>`_
347-
- Conda/Mamba packages in `conda-forge <https://anaconda.org/conda-forge/pandas>`_
347+
- Conda packages in `conda-forge <https://anaconda.org/conda-forge/pandas>`_
348348

349349
The process for releasing a new version of pandas is detailed next section.
350350

doc/source/getting_started/index.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ Installation
1717
:columns: 12 12 6 6
1818
:padding: 3
1919

20-
pandas is part of the `Anaconda <https://docs.continuum.io/anaconda/>`__
21-
distribution and can be installed with Anaconda or Miniconda:
20+
pandas can be installed via conda from `conda-forge <https://anaconda.org/conda-forge/pandas>`__.
2221

2322
++++++++++++++++++++++
2423

0 commit comments

Comments
 (0)