Skip to content

Commit 589ca49

Browse files
authored
Merge branch 'main' into deps/pytz/optional
2 parents 9a0b4c1 + 9c776ae commit 589ca49

File tree

158 files changed

+1066
-611
lines changed

Some content is hidden

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

158 files changed

+1066
-611
lines changed

.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,

.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/unit-tests.yml

Lines changed: 6 additions & 1 deletion
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
@@ -58,6 +59,9 @@ jobs:
5859
# It will be temporarily activated during tests with locale.setlocale
5960
extra_loc: "zh_CN"
6061
- name: "Future infer strings"
62+
env_file: actions-312.yaml
63+
pandas_future_infer_string: "1"
64+
- name: "Future infer strings (without pyarrow)"
6165
env_file: actions-311.yaml
6266
pandas_future_infer_string: "1"
6367
- name: "Pypy"
@@ -85,9 +89,10 @@ jobs:
8589
NPY_PROMOTION_STATE: ${{ matrix.env_file == 'actions-311-numpydev.yaml' && 'weak' || 'legacy' }}
8690
# Clipboard tests
8791
QT_QPA_PLATFORM: offscreen
92+
REMOVE_PYARROW: ${{ matrix.name == 'Future infer strings (without pyarrow)' && '1' || '0' }}
8893
concurrency:
8994
# https://github.community/t/concurrecy-not-work-for-push/183068/7
90-
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 }}
9196
cancel-in-progress: true
9297

9398
services:

.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"]

ci/code_checks.sh

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ 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.MultiIndex.get_loc_level PR07" \
7473
-i "pandas.MultiIndex.names SA01" \
7574
-i "pandas.MultiIndex.reorder_levels RT03,SA01" \
7675
-i "pandas.MultiIndex.sortlevel PR07,SA01" \
@@ -159,28 +158,15 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
159158
-i "pandas.Series.sparse.sp_values SA01" \
160159
-i "pandas.Series.sparse.to_coo PR07,RT03,SA01" \
161160
-i "pandas.Series.std PR01,RT03,SA01" \
162-
-i "pandas.Series.str.capitalize RT03" \
163-
-i "pandas.Series.str.casefold RT03" \
164-
-i "pandas.Series.str.center RT03,SA01" \
165-
-i "pandas.Series.str.decode PR07,RT03,SA01" \
166-
-i "pandas.Series.str.encode PR07,RT03,SA01" \
167-
-i "pandas.Series.str.index RT03" \
168-
-i "pandas.Series.str.ljust RT03,SA01" \
169-
-i "pandas.Series.str.lower RT03" \
170161
-i "pandas.Series.str.lstrip RT03" \
171162
-i "pandas.Series.str.match RT03" \
172163
-i "pandas.Series.str.normalize RT03,SA01" \
173164
-i "pandas.Series.str.partition RT03" \
174165
-i "pandas.Series.str.repeat SA01" \
175166
-i "pandas.Series.str.replace SA01" \
176-
-i "pandas.Series.str.rindex RT03" \
177-
-i "pandas.Series.str.rjust RT03,SA01" \
178167
-i "pandas.Series.str.rpartition RT03" \
179168
-i "pandas.Series.str.rstrip RT03" \
180169
-i "pandas.Series.str.strip RT03" \
181-
-i "pandas.Series.str.swapcase RT03" \
182-
-i "pandas.Series.str.title RT03" \
183-
-i "pandas.Series.str.upper RT03" \
184170
-i "pandas.Series.str.wrap RT03,SA01" \
185171
-i "pandas.Series.str.zfill RT03" \
186172
-i "pandas.Series.struct.dtypes SA01" \
@@ -284,12 +270,9 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
284270
-i "pandas.api.types.is_iterator PR07,SA01" \
285271
-i "pandas.api.types.is_list_like SA01" \
286272
-i "pandas.api.types.is_named_tuple PR07,SA01" \
287-
-i "pandas.api.types.is_numeric_dtype SA01" \
288273
-i "pandas.api.types.is_object_dtype SA01" \
289-
-i "pandas.api.types.is_period_dtype SA01" \
290274
-i "pandas.api.types.is_re PR07,SA01" \
291275
-i "pandas.api.types.is_re_compilable PR07,SA01" \
292-
-i "pandas.api.types.is_timedelta64_ns_dtype SA01" \
293276
-i "pandas.api.types.pandas_dtype PR07,RT03,SA01" \
294277
-i "pandas.arrays.ArrowExtensionArray PR07,SA01" \
295278
-i "pandas.arrays.BooleanArray SA01" \

doc/source/development/contributing_docstring.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ backticks. The following are considered inline code:
142142
143143
With several mistakes in the docstring.
144144
145-
It has a blank like after the signature ``def func():``.
145+
It has a blank line after the signature ``def func():``.
146146
147147
The text 'Some function' should go in the line after the
148148
opening quotes of the docstring, not in the same line.

doc/source/whatsnew/v3.0.0.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ Other enhancements
5050
- :meth:`DataFrame.pivot_table` and :func:`pivot_table` now allow the passing of keyword arguments to ``aggfunc`` through ``**kwargs`` (:issue:`57884`)
5151
- :meth:`Series.cummin` and :meth:`Series.cummax` now supports :class:`CategoricalDtype` (:issue:`52335`)
5252
- :meth:`Series.plot` now correctly handle the ``ylabel`` parameter for pie charts, allowing for explicit control over the y-axis label (:issue:`58239`)
53+
- :meth:`pandas.concat` will raise a ``ValueError`` when ``ignore_index=True`` and ``keys`` is not ``None`` (:issue:`59274`)
54+
- Multiplying two :class:`DateOffset` objects will now raise a ``TypeError`` instead of a ``RecursionError`` (:issue:`59442`)
5355
- Restore support for reading Stata 104-format and enable reading 103-format dta files (:issue:`58554`)
5456
- Support reading Stata 102-format (Stata 1) dta files (:issue:`58978`)
5557
- Support reading Stata 110-format (Stata 7) dta files (:issue:`47176`)
@@ -650,6 +652,7 @@ Groupby/resample/rolling
650652

651653
Reshaping
652654
^^^^^^^^^
655+
- Bug in :func:`qcut` where values at the quantile boundaries could be incorrectly assigned (:issue:`59355`)
653656
- Bug in :meth:`DataFrame.join` inconsistently setting result index name (:issue:`55815`)
654657
- Bug in :meth:`DataFrame.unstack` producing incorrect results when ``sort=False`` (:issue:`54987`, :issue:`55516`)
655658
- Bug in :meth:`DataFrame.unstack` producing incorrect results when manipulating empty :class:`DataFrame` with an :class:`ExtentionDtype` (:issue:`59123`)

pandas/_libs/tslibs/nattype.pyx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ class NaTType(_NaT):
10471047
* 'NaT' will return NaT for an ambiguous time.
10481048
* 'raise' will raise a ValueError for an ambiguous time.
10491049
1050-
nonexistent : {'raise', 'shift_forward', 'shift_backward, 'NaT', \
1050+
nonexistent : {'raise', 'shift_forward', 'shift_backward', 'NaT', \
10511051
timedelta}, default 'raise'
10521052
A nonexistent time does not exist in a particular timezone
10531053
where clocks moved forward due to DST.
@@ -1148,7 +1148,7 @@ timedelta}, default 'raise'
11481148
* 'NaT' will return NaT for an ambiguous time.
11491149
* 'raise' will raise a ValueError for an ambiguous time.
11501150
1151-
nonexistent : {'raise', 'shift_forward', 'shift_backward, 'NaT', \
1151+
nonexistent : {'raise', 'shift_forward', 'shift_backward', 'NaT', \
11521152
timedelta}, default 'raise'
11531153
A nonexistent time does not exist in a particular timezone
11541154
where clocks moved forward due to DST.
@@ -1243,7 +1243,7 @@ timedelta}, default 'raise'
12431243
* 'NaT' will return NaT for an ambiguous time.
12441244
* 'raise' will raise a ValueError for an ambiguous time.
12451245
1246-
nonexistent : {'raise', 'shift_forward', 'shift_backward, 'NaT', \
1246+
nonexistent : {'raise', 'shift_forward', 'shift_backward', 'NaT', \
12471247
timedelta}, default 'raise'
12481248
A nonexistent time does not exist in a particular timezone
12491249
where clocks moved forward due to DST.
@@ -1407,7 +1407,7 @@ timedelta}, default 'raise'
14071407
* 'NaT' will return NaT for an ambiguous time.
14081408
* 'raise' will raise a ValueError for an ambiguous time.
14091409
1410-
nonexistent : 'shift_forward', 'shift_backward, 'NaT', timedelta, \
1410+
nonexistent : 'shift_forward', 'shift_backward', 'NaT', timedelta, \
14111411
default 'raise'
14121412
A nonexistent time does not exist in a particular timezone
14131413
where clocks moved forward due to DST.

pandas/_libs/tslibs/offsets.pyx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,12 @@ cdef class BaseOffset:
491491
elif is_integer_object(other):
492492
return type(self)(n=other * self.n, normalize=self.normalize,
493493
**self.kwds)
494+
elif isinstance(other, BaseOffset):
495+
# Otherwise raises RecurrsionError due to __rmul__
496+
raise TypeError(
497+
f"Cannot multiply {type(self).__name__} with "
498+
f"{type(other).__name__}."
499+
)
494500
return NotImplemented
495501

496502
def __rmul__(self, other):

0 commit comments

Comments
 (0)