## pandas-dev/pandas — v3.1.0.dev0…v3.1.0rc0

_2129+ commits._

### Features
- **TYP: add type parameters to bare generics in core.dtypes, core.array_algos and core base modules (GH#30539) (#69795)** (00521d8)
- **TYP: add type parameters to bare generics in core.arrays (GH#30539) (#69794)** (3f5c995)
- **TYP: add type parameters to bare generics in _config, _libs stubs and _testing (GH#30539) (#69793)** (b3c7c5b)
- **TYP: add type parameters to bare generics in core.methods, reshape, tools, window and conftest (GH#30539) (#69797)** (c8943e5)
- **TYP: add type parameters to some bare generics in io.formats, json, parquet, parsers, sas and stata (GH#30539) (#69799)** (b9ce535)
- **TYP: add type parameters to bare generics in io.excel and io common utilities (GH#30539) (#69798)** (2436379)
- **TYP: add type parameters to bare generics in plotting and tseries (GH#30539) (#69800)** (0f56cc0)
- **TYP: add type parameters to bare generics in core.computation, groupby, indexers, indexes, internals and ops (GH#30539) (#69796)** (e02e033)
- **ENH: support plotting with numeric nullable data on x axis (#67021)** (567632c)
- **TST: add high_memory pytest mark and restore test_string_column_above_2GB (#68316)** (b95a3de)
- **DEPR: deprecate SparseArray sparse_index parameter, add from_indices (#64808)** (0e8d88a)

### Fixes
- **BUG: DataFrame.itertuples(index=False) dropping rows when there are no columns (GH#25408) (#69840)** (43a0dff)
- **BUG: wrap two-element Index repr to respect display.width (GH#16334) (#69781)** (dabb415)
- **BUG: segfault accessing list-of-extension-struct values after ArrowDtype.__from_arrow__ (#69869)** (478e982)
- **DOC: fix broken external links (#69731)** (eb0b1ed)
- **REGR: fix Series.str.zfill raising ArrowInvalid for negative width with pyarrow-backed strings (#69668)** (300ad10)
- **BUG: support duplicate labels when aligning inputs to binary ufuncs (GH#54416) (#69478)** (d57a7bf)
- **BUG: read_parquet/to_parquet fall back to fsspec when pyarrow can't build the filesystem (GH#58078) (#69494)** (ffd823b)
- **BUG: MultiIndex reports the wrong problem for an over-long key (GH#45762) (#68922)** (0482815)
- **BUG: merge on pyarrow keys with nulls fails on 32-bit (GH#57523) (#69784)** (4df99bd)
- **BUG: agg with an empty list or dict raises "No objects to concatenate" (GH#39609) (#69496)** (b8997bc)
- **BUG: Fix sort_values and factorize with Arrow null type (GH#54908) (#69463)** (e0b6e97)
- **BUG: don't trim Styler.to_latex output to render limits (GH#68310) (#69719)** (7a4b27f)
- **BUG: std/sem on Arrow date columns read the result in days or ms as seconds (#69752)** (3bb7b5f)
- **BUG: raise TypeError, not an empty NotImplementedError, for unsupported groupby aggregations (#69717)** (c9220cf)
- **BUG: Fix online ewm ignoring decay for single-column frames (#68278)** (324c57c)
- **BUG: hash_pandas_object on DataFrame with no columns and index=False (GH#24318) (#69489)** (111739a)
- **BUG: Timestamp rejected fold with positional date components (GH#52117) (#69134)** (341c72d)
- **BUG: keep left/right index dtype in Index.join on mismatched dtypes (GH#63371) (#69408)** (7febba6)
- **BUG: honor date_format for object-dtype datetimes in to_csv (GH#27306) (#69624)** (c4a6c44)
- **BUG: name the value_labels key in the non-unique Stata labels error (GH#54590) (#69507)** (19e3501)
- **BUG: to_csv with quoting wrote float32 values with float64 repr (GH#60699) (#69490)** (512cc70)
- **BUG: no extra leading space for object columns in to_string formatters (GH#26002) (#69627)** (a078962)
- **BUG: zero-pad years before 1000 in default datetime/period formats (GH#58179) (#69635)** (b92b103)
- **BUG: Fix RangeIndex.symmetric_difference skips required sort when one side is empty (#68358)** (3830c7e)
- **BUG: honor display.precision for float index names (GH#25917) (#69640)** (4c84356)
- **PERF: use PyArrow group_by for min/max on Arrow date, time and binary columns (#69488)** (57a9b20)
- **TST: add regression test for read_sql with % in text and selectables (GH#35484) (#69435)** (759e538)
- **PERF: out-of-band pickling of a sliced DataFrame (GH#55781) (#69133)** (6e03d60)
- **BUG: allow arbitrary objects as to_replace in replace (GH#36522) (#69453)** (bb69b73)
- **BUG: read_sql with DBAPI cursors returning dict rows (GH#53028) (#69473)** (9327c0c)
- **BUG: numexpr results use a nonstandard int64 type, breaking select_dtypes (GH#17945) (#69427)** (96ea740)
- **BUG: keep MultiIndex level names in sort_index with key (#69450)** (0ec394e)
- **BUG/CLN: Remove _agg_general and finalize more groupby methods (#69438)** (2c3569d)
- **TYP: fix Day offset stub base to SingleConstructorOffset (#69468)** (22f7405)
- **BUG: read_csv silently wrapped out-of-range integers (GH#55232) (#68587)** (be9eebf)
- **BUG: ArrowDtype timestamp setitem silently crossed the tz-aware/naive boundary (#69029)** (c629497)
- **BUG: avoid Series.values deprecation warning in to_numeric (GH#69448) (#69449)** (c1402ab)
- **BUG: DTI/TDI failing to raise on 0-dim ndarray (#69411)** (e267441)
- **BUG: suppress tz .values deprecation raised by pyarrow in internal conversions (#69407)** (f0617cc)
- **BUG: DataFrame.query with `@` reference to a class attribute (#69437)** (64f209a)
- **BUG: DataFrame.select with duplicate columns (#69415)** (8f68498)
- **DOC: Fix return for to_numeric (#69410)** (cebedf3)
- **PERF: raise the default parallel read_csv worker cap to 6 (#69017)** (b5bde2d)
- **BUG: rolling skew/kurt returned NaN after a window emptied (#69123)** (fbfadf4)
- **BUG: preserve line breaks in ODS cells in to_excel/read_excel (#68702)** (1fbaae6)
- **TST: add regression test for DBAPI params pass-through (GH#11683) (#69019)** (c52f21c)
- **BUG: Pyarrow string list indexing for negative indices  (#67004)** (31bf82e)
- **BUG: Correct merge_asof tolerance error message (#66289) (#68195)** (d7a7ccf)
- **BUG: fix self-contradictory set_levels/set_codes error for nested value with scalar level (#66287) (#68122)** (fdb1ca5)
- **BUG: allow timezone-aware subtypes in IntervalArray arrow conversion (#67897)** (aad6b6a)
- **BUG: exclude integer rolling on column from result (#65819)** (ebbcd61)
- **DOC: Fix read_hdf example to pass key as keyword argument (#69255) (#69406)** (9b4575b)
- **BUG: to_parquet (pyarrow) deletes a pre-existing file it cannot open (#69022)** (f913ed7)
- **BUG: the logical ufuncs were not rejected against datetimelike data (GH#68524) (#68524)** (fcd2cba)
- **BUG: Index.insert silently truncating a value into a sparse subtype (#69028)** (550e5fd)
- **BUG: stacked bar subplots raise IndexError when a single-column group comes first (#67946)** (6d3e72c)
- **BUG: arrow and StringDtype ops with 2D or mismatched-length operands (GH#62682) (#68458)** (1bbdcfd)
- **BUG: read_csv c engine ignored na_values on a converters column (GH#13302) (#68689)** (7a78a7b)
- **BUG: DataFrame.duplicated self-triggering the .values deprecation (#69025)** (b0bcefa)
- **BUG: groupby(observed=False) with dropped NA keys raised IndexError or misordered groups (#68931)** (7ceea80)
- **BUG: to_datetime returned category dtype for categorical input when the cache fired (GH#28629) (#68945)** (4304b35)
- **BUG: defer the blocked-numexpr warning to first use (GH#66956) (#68465)** (0e0f3cb)
- **BUG: ArrowDtype setitem reinterpreted values through their integer storage (#68419)** (5d1c40f)
- **BUG: preserve assertion errors for nested sequence length mismatches (#69015)** (6a2edf9)
- **BUG: read_csv with engine="pyarrow" ignored skiprows when header is not None (GH#48507) (#68938)** (1f72f76)
- **BUG: read_csv raising for sep="\n" with a custom lineterminator (GH#51801) (#68936)** (e4b4e53)
- **BUG: Series from a pre-2.1 pickle lost its name on copy (GH#61819) (#69116)** (a7d5172)
- **BUG: to_clipboard blamed sep for any TypeError in excel mode (GH#44120) (#69118)** (e8d27c0)
- **BUG: rolling on ArrowDtype timestamp/duration returned float64 instead of raising (#66445)** (db85305)
- **BUG: sparse binary ops left stored values equal to the result's fill_value (GH#45126) (#69131)** (477bee0)

### Backend
- **RLS: 3.1.0rc0** (6ebf4a7)
- **DOC: shorten the Timestamp section of the 3.1.0 whatsnew (GH#68437) (#69628)** (91a1f37)
- **DOC: list common options in plot submethod kwargs docs (GH#11042) (#69778)** (5f1c66a)
- **TST: column level names formatted like index names in DataFrame repr (GH#14286) (#69780)** (05cf250)
- **DOC: make period `how` docs consistent (GH#49132) (#69782)** (285a4a3)
- **DOC: show non-anchored DateOffset freq in date_range (GH#15685) (#69853)** (04f2367)
- **DOC: clarify include_lowest behavior in cut (GH#23164) (#69860)** (105e14f)
- **ENH: informative error for duplicate-labeled other in where/fillna (GH#27672) (#69807)** (dd2bf12)
- **TST: run LC_TIME-dependent tests under an explicit English locale (#68083)** (f107d7c)
- **TYP: define DatetimeIndex attributes explicitly instead of via inherit_names (GH#32100) (#69805)** (87875c9)
- **TYP: define CategoricalIndex methods explicitly instead of via inherit_names (GH#32100) (#69804)** (f33b432)
- **TYP: define TimedeltaIndex methods explicitly instead of via inherit_names (GH#32100) (#69803)** (f44d336)
- **TYP: define IntervalIndex attributes explicitly instead of via inherit_names (GH#32100) (#69806)** (0a32d38)
- **DOC: restore docstrings on DatetimeIndex field properties (#69801)** (875b9db)
- **DOC: give the .values deprecation its own 3.1.0 whatsnew section (GH#68437) (#69452)** (aaaad33)
- **TYP: define PeriodIndex attributes explicitly instead of via inherit_names (GH#32100) (#69802)** (3d6918c)
- **TST: IntervalIndex.get_indexer with mixed object target (GH#19349) (#69810)** (c33aef7)
- **DOC: make plot accessor method docstrings consistent (GH#20348) (#69475)** (e50bf5e)
- **TST: Period.strftime under non-utf8 locales (GH#47009) (#69788)** (f2fe9a5)
- **DOC: Quote schema and table names in psql_insert_copy example (#69774)** (44b3e34)
- **TST: cover merge_asof dtype message when only one key is categorical (GH#58517) (#69147)** (e909fc4)
- **DOC: show how to merge categories with replace (GH#57104) (#69456)** (632372e)
- **ENH: clearer error for Series(DataFrame) (GH#20658) (#69491)** (ece8dad)
- **DOC: update plotting backend API description (GH#26747) (#69492)** (7f6fa6d)
- **WEB: remove unmaintained plotting backends from ecosystem page (GH#58251) (#69493)** (4fa9fc2)
- **DOC: document that display.unicode.east_asian_width handles emoji (GH#58098) (#69639)** (bb39139)
- **DOC: clarify astype errors="ignore" does not cover missing mapping keys (GH#30324) (#69502)** (b9564f4)
- **CLN: use mangle_dupe_names in TextReader header parsing (GH#50371) (#69500)** (b64b39e)
- **TST: remove or repair inert _SIZE_CUTOFF monkeypatches (GH#67991) (#69674)** (d2cc236)
- **ENH: respect display.unicode.east_asian_width in DataFrame.info (GH#46082) (#69607)** (375c69d)
- **TST: callable float_format in to_clipboard excel mode (GH#9449) (#69646)** (8266d84)
- **DOC: note freq loss in set_index/reset_index (GH#42747) (#69659)** (6bf1584)
- **BLD: pass --shared=pandas._libs._cyutility to window extensions (GH#67995) (#69670)** (f8663f9)
- **DOC: Specify supported array-like inputs for PeriodIndex.from_fields (#66333) (#68196)** (bebacf0)
- **TST: consolidate incidental nuisance-column raise checks (GH#50133) (#69501)** (e5f277e)
- **CLN: remove obsolete Styler exclusions from numpydoc validation (GH#27055) (#69471)** (5c2cbad)
- **DEPR: set stacklevel for .values deprecation to 1 to avoid pyarrow conversion warnings (#69447)** (fffde57)
- **TYP: remove mode from BaseBuffer protocol (GH#60660) (#69454)** (0ae255f)
- **DOC: document color parameter in DataFrame.plot (#69480)** (ab25d5a)
- **ENH: infer read_excel engine from a workbook object (GH#46352) (#69457)** (b2296cc)
- **TST: check Resampler.pipe passes positional and keyword args (GH#58517) (#69434)** (7aac401)
- **DOC: Self-host image in pandas 1.0 blog post (#68489)** (3746273)
- **CLN: document that Block.fillna callers unbox Series/Index (GH#22954) (#69455)** (0b0d654)
- **TST: cover truncate with named axis and 2D dt64 ndarray with tz dtype (GH#58517) (#69474)** (8fee61e)
- **TST: skipfooter counts blank lines (GH#10164) (#69472)** (39b9c69)
- **DOC: Redo AGENTS.md (#68313)** (eeae81b)
- **DOC: summarize the read_csv improvements in the 3.1.0 whatsnew (GH#68437) (#68451)** (b5ad975)
- **TST: use pd.options.future.python_scalars directly in EA base tests (#69451)** (3f57341)
- **DEPR: revert deprecation of 'datetimetz' strings in select_dtypes (GH#68703) (#69426)** (8f11807)
- **DOC: repair stale pandas.pydata.org documentation links (#67857)** (9f54350)
- **Bump codecov/codecov-action from 7.0.0 to 7.1.1 (#69430)** (4fde542)
- **ENH: DataFrame.filter and Series.filter to take a boolean masks (#67288)** (519567a)
- **CLN: Remove kind from WrappedCythonOp args (#69425)** (1a561f8)
- **CLN: restore list annotation in _get_dst_hours (GH#57154) (#69413)** (38c89af)
- **ENH: Implement future.python_scalars for Index.__getitem__ (#69270)** (474e826)
- **DOC: Clarify forward-looking rolling window behavior with offset stri… (#66191)** (4e48725)
- **CLN: Remove preserve_dtype from BaseGrouper.agg_series (#69275)** (7d287a5)
- **API: select_dtypes raises on a partly specified IntervalDtype/CategoricalDtype (GH#40234) (#68503)** (072ea95)
- **REF: de-duplicate _blk_dtypes (#69151)** (cd72100)
- **DOC: note encoding_errors="strict" is the default in read_csv leak whatsnew entry (#68918)** (6ae3965)
- **DOC: select_dtypes told users to select strings with the object dtype (GH#54898) (#69023)** (82c6952)
- **TST: sparse boolean-mask getitem tests assumed op results store fill values (GH#45284) (#69160)** (b7dc986)
- **TST: sparse reindex lost a narrow float subtype (GH#26123) (#69114)** (e828bfd)

### Chore
- **CI: Add Needs Triage to issues created by non-collaborators (#69482)** (1fb9ce7)
- **CI: More release automation (#66432)** (2fcf815)
- **CI: pin pixi version once in setup-pixi action (GH#67982) (#69720)** (c7345d3)
- **CI: Update pixi.lock (#69533)** (981c4a6)
- **CI: Decline /untake if the contributor has an open PR (#69483)** (5696a1c)
- **CI: Don't auto-close PRs that lack issue assignment (#68373)** (2fed16c)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/pandas-dev/pandas?utm_source=github-action)._