Skip to content

Commit 4db2a9d

Browse files
committed
merge
2 parents ac20a93 + 7fb03d4 commit 4db2a9d

File tree

4 files changed

+80
-7
lines changed

4 files changed

+80
-7
lines changed

pandas-stubs/core/reshape/concat.pyi

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ from pandas import (
1515
from typing_extensions import Never
1616

1717
from pandas._typing import (
18+
S2,
1819
Axis,
1920
AxisIndex,
2021
HashableT1,
@@ -38,7 +39,21 @@ def concat( # type: ignore[overload-overlap]
3839
copy: bool = ...,
3940
) -> DataFrame: ...
4041
@overload
41-
def concat( # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
42+
def concat( # pyright: ignore[reportOverlappingOverload]
43+
objs: Iterable[Series[S2]],
44+
*,
45+
axis: AxisIndex = ...,
46+
join: Literal["inner", "outer"] = ...,
47+
ignore_index: bool = ...,
48+
keys: Iterable[HashableT2] = ...,
49+
levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ...,
50+
names: list[HashableT4] | None = ...,
51+
verify_integrity: bool = ...,
52+
sort: bool = ...,
53+
copy: bool = ...,
54+
) -> Series[S2]: ...
55+
@overload
56+
def concat( # type: ignore[overload-overlap]
4257
objs: Iterable[Series] | Mapping[HashableT1, Series],
4358
*,
4459
axis: AxisIndex = ...,

tests/series/test_series.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@
6363
from pandas.io.formats.format import EngFormatter
6464
from pandas.tseries.offsets import (
6565
BaseOffset,
66+
BDay,
67+
BQuarterEnd,
68+
MonthEnd,
69+
Week,
6670
YearEnd,
6771
)
6872

@@ -448,6 +452,7 @@ def test_types_sort_values_with_key() -> None:
448452

449453

450454
def test_types_shift() -> None:
455+
"""Test shift operator on series with different arguments."""
451456
s = pd.Series([1, 2, 3], index=pd.date_range("2020", periods=3))
452457
check(assert_type(s.shift(), pd.Series), pd.Series, np.floating)
453458
check(
@@ -457,6 +462,11 @@ def test_types_shift() -> None:
457462
)
458463
check(assert_type(s.shift(-1, fill_value=0), pd.Series), pd.Series, np.integer)
459464
check(assert_type(s.shift(freq="1D"), pd.Series), pd.Series, np.integer)
465+
check(assert_type(s.shift(freq=BDay(1)), pd.Series), pd.Series, np.integer)
466+
check(assert_type(s.shift(freq=BQuarterEnd(5)), pd.Series), pd.Series, np.integer)
467+
check(assert_type(s.shift(freq=MonthEnd(3)), pd.Series), pd.Series, np.integer)
468+
check(assert_type(s.shift(freq=Week(4)), pd.Series), pd.Series, np.integer)
469+
check(assert_type(s.shift(freq=YearEnd(2)), pd.Series), pd.Series, np.integer)
460470

461471

462472
def test_series_pct_change() -> None:

tests/test_frame.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@
6060
from pandas.io.formats.format import EngFormatter
6161
from pandas.io.formats.style import Styler
6262
from pandas.io.parsers import TextFileReader
63+
from pandas.tseries.offsets import (
64+
BDay,
65+
BQuarterEnd,
66+
MonthEnd,
67+
Week,
68+
YearEnd,
69+
)
6370

6471
if TYPE_CHECKING:
6572
from pandas.core.frame import _PandasNamedTuple
@@ -603,6 +610,11 @@ def test_types_shift() -> None:
603610
check(assert_type(df.shift(1), pd.DataFrame), pd.DataFrame)
604611
check(assert_type(df.shift(-1), pd.DataFrame), pd.DataFrame)
605612
check(assert_type(df.shift(freq="1D"), pd.DataFrame), pd.DataFrame)
613+
check(assert_type(df.shift(freq=BDay(1)), pd.DataFrame), pd.DataFrame)
614+
check(assert_type(df.shift(freq=BQuarterEnd(5)), pd.DataFrame), pd.DataFrame)
615+
check(assert_type(df.shift(freq=MonthEnd(3)), pd.DataFrame), pd.DataFrame)
616+
check(assert_type(df.shift(freq=Week(4)), pd.DataFrame), pd.DataFrame)
617+
check(assert_type(df.shift(freq=YearEnd(2)), pd.DataFrame), pd.DataFrame)
606618

607619

608620
def test_types_rank() -> None:
@@ -2523,8 +2535,8 @@ def test_types_regressions() -> None:
25232535
ts1 = pd.concat([s1, s2], axis=0)
25242536
ts2 = pd.concat([s1, s2])
25252537

2526-
check(assert_type(ts1, pd.Series), pd.Series)
2527-
check(assert_type(ts2, pd.Series), pd.Series)
2538+
check(assert_type(ts1, "pd.Series[int]"), pd.Series, np.integer)
2539+
check(assert_type(ts2, "pd.Series[int]"), pd.Series, np.integer)
25282540

25292541
# https://github.com/microsoft/python-type-stubs/issues/110
25302542
check(assert_type(pd.Timestamp("2021-01-01"), pd.Timestamp), datetime.date)

tests/test_pandas.py

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,25 +132,30 @@ def test_types_concat() -> None:
132132
s = pd.Series([0, 1, -10])
133133
s2 = pd.Series([7, -5, 10])
134134

135-
check(assert_type(pd.concat([s, s2]), pd.Series), pd.Series)
135+
check(assert_type(pd.concat([s, s2]), "pd.Series[int]"), pd.Series, np.integer)
136136
check(assert_type(pd.concat([s, s2], axis=1), pd.DataFrame), pd.DataFrame)
137137
check(
138-
assert_type(pd.concat([s, s2], keys=["first", "second"], sort=True), pd.Series),
138+
assert_type(
139+
pd.concat([s, s2], keys=["first", "second"], sort=True), "pd.Series[int]"
140+
),
139141
pd.Series,
142+
np.integer,
140143
)
141144
check(
142145
assert_type(
143146
pd.concat([s, s2], keys=["first", "second"], names=["source", "row"]),
144-
pd.Series,
147+
"pd.Series[int]",
145148
),
146149
pd.Series,
150+
np.integer,
147151
)
148152
check(
149153
assert_type(
150154
pd.concat([s, s2], keys=["first", "second"], names=None),
151-
pd.Series,
155+
"pd.Series[int]",
152156
),
153157
pd.Series,
158+
np.integer,
154159
)
155160

156161
# Depends on the axis
@@ -236,6 +241,37 @@ def test_types_concat() -> None:
236241
check(assert_type(pd.concat([pd.DataFrame(), data]), pd.DataFrame), pd.DataFrame)
237242

238243

244+
def test_concat_series_mixed_numeric() -> None:
245+
"""Test concatenation of Series with mixed numeric types.
246+
247+
Derived from test_types_concat."""
248+
s = pd.Series([0, 1, -10])
249+
s2 = pd.Series([7.0, -5, 10])
250+
251+
check(assert_type(pd.concat([s, s2]), pd.Series), pd.Series, np.floating)
252+
check(
253+
assert_type(pd.concat([s, s2], keys=["first", "second"], sort=True), pd.Series),
254+
pd.Series,
255+
np.floating,
256+
)
257+
check(
258+
assert_type(
259+
pd.concat([s, s2], keys=["first", "second"], names=["source", "row"]),
260+
pd.Series,
261+
),
262+
pd.Series,
263+
np.floating,
264+
)
265+
check(
266+
assert_type(
267+
pd.concat([s, s2], keys=["first", "second"], names=None),
268+
pd.Series,
269+
),
270+
pd.Series,
271+
np.floating,
272+
)
273+
274+
239275
def test_concat_args() -> None:
240276
df = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]})
241277
df2 = pd.DataFrame(data={"col1": [10, 20], "col2": [30, 40]}, index=[2, 3])

0 commit comments

Comments
 (0)