From cb2eb54e48ee6a65c5b696341224af9cfa446e74 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:17:24 -0700 Subject: [PATCH] fix & ignore failures --- pandas/core/apply.py | 6 +----- pandas/core/arraylike.py | 4 ++-- pandas/core/arrays/arrow/array.py | 2 +- pandas/core/arrays/boolean.py | 2 +- pandas/core/computation/expr.py | 2 +- pandas/core/frame.py | 2 +- pandas/core/groupby/groupby.py | 8 +++++--- pandas/core/indexes/interval.py | 4 ++-- pandas/core/resample.py | 2 +- pandas/core/series.py | 3 +-- pandas/core/tools/datetimes.py | 2 +- pandas/core/window/rolling.py | 2 +- pandas/io/excel/_odswriter.py | 2 +- pandas/io/excel/_openpyxl.py | 2 +- pandas/io/excel/_xlsxwriter.py | 2 +- pandas/io/parsers/python_parser.py | 2 +- pandas/io/sas/sas7bdat.py | 2 +- pandas/io/sql.py | 6 +++--- pandas/plotting/_matplotlib/converter.py | 6 +++--- pandas/tests/frame/test_ufunc.py | 4 ++-- pandas/tests/indexes/test_base.py | 2 +- pandas/util/_exceptions.py | 7 +++++-- 22 files changed, 37 insertions(+), 37 deletions(-) diff --git a/pandas/core/apply.py b/pandas/core/apply.py index ebc5e11228f91..af2d6243ce4ed 100644 --- a/pandas/core/apply.py +++ b/pandas/core/apply.py @@ -246,12 +246,8 @@ def transform(self) -> DataFrame | Series: and not obj.empty ): raise ValueError("Transform function failed") - # error: Argument 1 to "__get__" of "AxisProperty" has incompatible type - # "Union[Series, DataFrame, GroupBy[Any], SeriesGroupBy, - # DataFrameGroupBy, BaseWindow, Resampler]"; expected "Union[DataFrame, - # Series]" if not isinstance(result, (ABCSeries, ABCDataFrame)) or not result.index.equals( - obj.index # type: ignore[arg-type] + obj.index ): raise ValueError("Function did not transform") diff --git a/pandas/core/arraylike.py b/pandas/core/arraylike.py index f70bb0743aa0f..43ac69508d1a4 100644 --- a/pandas/core/arraylike.py +++ b/pandas/core/arraylike.py @@ -403,12 +403,12 @@ def _reconstruct(result): # for np.(..) calls # kwargs cannot necessarily be handled block-by-block, so only # take this path if there are no kwargs - mgr = inputs[0]._mgr + mgr = inputs[0]._mgr # pyright: ignore[reportGeneralTypeIssues] result = mgr.apply(getattr(ufunc, method)) else: # otherwise specific ufunc methods (eg np..accumulate(..)) # Those can have an axis keyword and thus can't be called block-by-block - result = default_array_ufunc(inputs[0], ufunc, method, *inputs, **kwargs) + result = default_array_ufunc(inputs[0], ufunc, method, *inputs, **kwargs) # pyright: ignore[reportGeneralTypeIssues] # e.g. np.negative (only one reached), with "where" and "out" in kwargs result = reconstruct(result) diff --git a/pandas/core/arrays/arrow/array.py b/pandas/core/arrays/arrow/array.py index 00d46ab9296d0..c6fb5225d58f9 100644 --- a/pandas/core/arrays/arrow/array.py +++ b/pandas/core/arrays/arrow/array.py @@ -2426,7 +2426,7 @@ def _str_rindex(self, sub: str, start: int = 0, end: int | None = None) -> Self: result = self._apply_elementwise(predicate) return type(self)(pa.chunked_array(result)) - def _str_normalize(self, form: str) -> Self: + def _str_normalize(self, form: Literal["NFC", "NFD", "NFKC", "NFKD"]) -> Self: predicate = lambda val: unicodedata.normalize(form, val) result = self._apply_elementwise(predicate) return type(self)(pa.chunked_array(result)) diff --git a/pandas/core/arrays/boolean.py b/pandas/core/arrays/boolean.py index 53ebc35b68d14..87c18fe346c62 100644 --- a/pandas/core/arrays/boolean.py +++ b/pandas/core/arrays/boolean.py @@ -369,7 +369,7 @@ def _coerce_to_array( assert dtype == "boolean" return coerce_to_array(value, copy=copy) - def _logical_method(self, other, op): + def _logical_method(self, other, op): # type: ignore[override] assert op.__name__ in {"or_", "ror_", "and_", "rand_", "xor", "rxor"} other_is_scalar = lib.is_scalar(other) mask = None diff --git a/pandas/core/computation/expr.py b/pandas/core/computation/expr.py index f45bc453d2541..7025d8a72e561 100644 --- a/pandas/core/computation/expr.py +++ b/pandas/core/computation/expr.py @@ -168,7 +168,7 @@ def _preparse( the ``tokenize`` module and ``tokval`` is a string. """ assert callable(f), "f must be callable" - return tokenize.untokenize(f(x) for x in tokenize_string(source)) + return tokenize.untokenize(f(x) for x in tokenize_string(source)) # pyright: ignore[reportArgumentType] def _is_type(t): diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 1b47002e72fc6..24a164aa15427 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2306,7 +2306,7 @@ def maybe_reorder( if any(exclude): arr_exclude = (x for x in exclude if x in arr_columns) - to_remove = {arr_columns.get_loc(col) for col in arr_exclude} + to_remove = {arr_columns.get_loc(col) for col in arr_exclude} # pyright: ignore[reportUnhashable] arrays = [v for i, v in enumerate(arrays) if i not in to_remove] columns = columns.drop(exclude) diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index 68314567d1b5e..5bf3e0e4de2fb 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -3719,7 +3719,7 @@ def blk_func(values: ArrayLike) -> ArrayLike: mask = isna(values) if values.ndim == 1: indexer = np.empty(values.shape, dtype=np.intp) - col_func(out=indexer, mask=mask) + col_func(out=indexer, mask=mask) # type: ignore[arg-type] return algorithms.take_nd(values, indexer) else: @@ -4081,7 +4081,9 @@ def _nth( def quantile( self, q: float | AnyArrayLike = 0.5, - interpolation: str = "linear", + interpolation: Literal[ + "linear", "lower", "higher", "nearest", "midpoint" + ] = "linear", numeric_only: bool = False, ): """ @@ -4270,7 +4272,7 @@ def blk_func(values: ArrayLike) -> ArrayLike: func( out[0], values=vals, - mask=mask, + mask=mask, # type: ignore[arg-type] result_mask=result_mask, is_datetimelike=is_datetimelike, ) diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 8feac890883eb..94717141b30b0 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -991,7 +991,7 @@ def length(self) -> Index: # -------------------------------------------------------------------- # Set Operations - def _intersection(self, other, sort): + def _intersection(self, other, sort: bool = False): """ intersection specialized to the case with matching dtypes. """ @@ -1006,7 +1006,7 @@ def _intersection(self, other, sort): # duplicates taken = self._intersection_non_unique(other) - if sort is None: + if sort: taken = taken.sort_values() return taken diff --git a/pandas/core/resample.py b/pandas/core/resample.py index 711396096a5e3..42fed83398737 100644 --- a/pandas/core/resample.py +++ b/pandas/core/resample.py @@ -404,7 +404,7 @@ def transform(self, arg, *args, **kwargs): arg, *args, **kwargs ) - def _downsample(self, f, **kwargs): + def _downsample(self, how, **kwargs): raise AbstractMethodError(self) def _upsample(self, f, limit: int | None = None, fill_value=None): diff --git a/pandas/core/series.py b/pandas/core/series.py index bbcb6615aeefd..36b75324f08fe 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -813,8 +813,7 @@ def _values(self): def _references(self) -> BlockValuesRefs: return self._mgr._block.refs - # error: Decorated property not supported - @Appender(base.IndexOpsMixin.array.__doc__) # type: ignore[misc] + @Appender(base.IndexOpsMixin.array.__doc__) @property def array(self) -> ExtensionArray: return self._mgr.array_values() diff --git a/pandas/core/tools/datetimes.py b/pandas/core/tools/datetimes.py index 86c7316320f44..4680a63bf57a1 100644 --- a/pandas/core/tools/datetimes.py +++ b/pandas/core/tools/datetimes.py @@ -1000,7 +1000,7 @@ def to_datetime( dayfirst=dayfirst, yearfirst=yearfirst, errors=errors, - exact=exact, + exact=exact, # type: ignore[arg-type] ) result: Timestamp | NaTType | Series | Index diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 9ea825ad4e44d..cf74cc30f3c5d 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -1507,7 +1507,7 @@ def _generate_cython_apply_func( window_aggregations.roll_apply, args=args, kwargs=kwargs, - raw=raw, + raw=bool(raw), function=function, ) diff --git a/pandas/io/excel/_odswriter.py b/pandas/io/excel/_odswriter.py index 0ddb59d3413ff..10a06aec72a57 100644 --- a/pandas/io/excel/_odswriter.py +++ b/pandas/io/excel/_odswriter.py @@ -34,7 +34,7 @@ class ODSWriter(ExcelWriter): _engine = "odf" _supported_extensions = (".ods",) - def __init__( + def __init__( # pyright: ignore[reportInconsistentConstructor] self, path: FilePath | WriteExcelBuffer | ExcelWriter, engine: str | None = None, diff --git a/pandas/io/excel/_openpyxl.py b/pandas/io/excel/_openpyxl.py index 218a592c22b4a..3055c68a93cbc 100644 --- a/pandas/io/excel/_openpyxl.py +++ b/pandas/io/excel/_openpyxl.py @@ -42,7 +42,7 @@ class OpenpyxlWriter(ExcelWriter): _engine = "openpyxl" _supported_extensions = (".xlsx", ".xlsm") - def __init__( + def __init__( # pyright: ignore[reportInconsistentConstructor] self, path: FilePath | WriteExcelBuffer | ExcelWriter, engine: str | None = None, diff --git a/pandas/io/excel/_xlsxwriter.py b/pandas/io/excel/_xlsxwriter.py index b2fd24a670300..4a7b8eee2bfce 100644 --- a/pandas/io/excel/_xlsxwriter.py +++ b/pandas/io/excel/_xlsxwriter.py @@ -181,7 +181,7 @@ class XlsxWriter(ExcelWriter): _engine = "xlsxwriter" _supported_extensions = (".xlsx",) - def __init__( + def __init__( # pyright: ignore[reportInconsistentConstructor] self, path: FilePath | WriteExcelBuffer | ExcelWriter, engine: str | None = None, diff --git a/pandas/io/parsers/python_parser.py b/pandas/io/parsers/python_parser.py index 3a2a1c37f1879..99d584db61755 100644 --- a/pandas/io/parsers/python_parser.py +++ b/pandas/io/parsers/python_parser.py @@ -1203,7 +1203,7 @@ def _rows_to_cols(self, content: list[list[Scalar]]) -> list[np.ndarray]: if callable(self.on_bad_lines): new_l = self.on_bad_lines(_content) if new_l is not None: - content.append(new_l) + content.append(new_l) # pyright: ignore[reportArgumentType] elif self.on_bad_lines in ( self.BadLineHandleMethod.ERROR, self.BadLineHandleMethod.WARN, diff --git a/pandas/io/sas/sas7bdat.py b/pandas/io/sas/sas7bdat.py index 25257d5fcc192..c5aab4d967cd4 100644 --- a/pandas/io/sas/sas7bdat.py +++ b/pandas/io/sas/sas7bdat.py @@ -516,7 +516,7 @@ def _process_columntext_subheader(self, offset: int, length: int) -> None: buf = self._read_bytes(offset1, self._lcs) self.creator_proc = buf[0 : self._lcp] if hasattr(self, "creator_proc"): - self.creator_proc = self._convert_header_text(self.creator_proc) + self.creator_proc = self._convert_header_text(self.creator_proc) # pyright: ignore[reportArgumentType] def _process_columnname_subheader(self, offset: int, length: int) -> None: int_len = self._int_length diff --git a/pandas/io/sql.py b/pandas/io/sql.py index d424ba09804af..9aff5600cf49b 100644 --- a/pandas/io/sql.py +++ b/pandas/io/sql.py @@ -233,7 +233,7 @@ def _wrap_result_adbc( @overload -def read_sql_table( +def read_sql_table( # pyright: ignore[reportOverlappingOverload] table_name: str, con, schema=..., @@ -364,7 +364,7 @@ def read_sql_table( @overload -def read_sql_query( +def read_sql_query( # pyright: ignore[reportOverlappingOverload] sql, con, index_col: str | list[str] | None = ..., @@ -500,7 +500,7 @@ def read_sql_query( @overload -def read_sql( +def read_sql( # pyright: ignore[reportOverlappingOverload] sql, con, index_col: str | list[str] | None = ..., diff --git a/pandas/plotting/_matplotlib/converter.py b/pandas/plotting/_matplotlib/converter.py index 29f9b3ee116fc..4c00049075d03 100644 --- a/pandas/plotting/_matplotlib/converter.py +++ b/pandas/plotting/_matplotlib/converter.py @@ -527,7 +527,7 @@ def _get_periods_per_ymd(freq: BaseOffset) -> tuple[int, int, int]: ppd = -1 # placeholder for above-day freqs - if dtype_code >= FreqGroup.FR_HR.value: + if dtype_code >= FreqGroup.FR_HR.value: # pyright: ignore[reportAttributeAccessIssue] # error: "BaseOffset" has no attribute "_creso" ppd = periods_per_day(freq._creso) # type: ignore[attr-defined] ppm = 28 * ppd @@ -684,7 +684,7 @@ def _second_finder(label_interval: int) -> None: elif span <= periodsperyear // 4: month_start = _period_break(dates_, "month") info_maj[month_start] = True - if dtype_code < FreqGroup.FR_HR.value: + if dtype_code < FreqGroup.FR_HR.value: # pyright: ignore[reportAttributeAccessIssue] info["min"] = True else: day_start = _period_break(dates_, "day") @@ -910,7 +910,7 @@ def get_finder(freq: BaseOffset): return _quarterly_finder elif fgroup == FreqGroup.FR_MTH: return _monthly_finder - elif (dtype_code >= FreqGroup.FR_BUS.value) or fgroup == FreqGroup.FR_WK: + elif (dtype_code >= FreqGroup.FR_BUS.value) or fgroup == FreqGroup.FR_WK: # pyright: ignore[reportAttributeAccessIssue] return _daily_finder else: # pragma: no cover raise NotImplementedError(f"Unsupported frequency: {dtype_code}") diff --git a/pandas/tests/frame/test_ufunc.py b/pandas/tests/frame/test_ufunc.py index 95b315c32dca5..092e65dd4b431 100644 --- a/pandas/tests/frame/test_ufunc.py +++ b/pandas/tests/frame/test_ufunc.py @@ -66,14 +66,14 @@ def test_binary_input_dispatch_binop(dtype): [ (np.add, 1, [2, 3, 4, 5]), ( - partial(np.add, where=[[False, True], [True, False]]), + partial(np.add, where=[[False, True], [True, False]]), # type: ignore[misc] np.array([[1, 1], [1, 1]]), [0, 3, 4, 0], ), (np.power, np.array([[1, 1], [2, 2]]), [1, 2, 9, 16]), (np.subtract, 2, [-1, 0, 1, 2]), ( - partial(np.negative, where=np.array([[False, True], [True, False]])), + partial(np.negative, where=np.array([[False, True], [True, False]])), # type: ignore[misc] None, [0, -2, -3, 0], ), diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index 2b62b384930d6..19b46d9b2c15f 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -1635,7 +1635,7 @@ def test_generated_op_names(opname, index): partial(DatetimeIndex, data=["2020-01-01"]), partial(PeriodIndex, data=["2020-01-01"]), partial(TimedeltaIndex, data=["1 day"]), - partial(RangeIndex, data=range(1)), + partial(RangeIndex, start=range(1)), partial(IntervalIndex, data=[pd.Interval(0, 1)]), partial(Index, data=["a"], dtype=object), partial(MultiIndex, levels=[1], codes=[0]), diff --git a/pandas/util/_exceptions.py b/pandas/util/_exceptions.py index f77f3f9083901..b3c8e54d3ca7f 100644 --- a/pandas/util/_exceptions.py +++ b/pandas/util/_exceptions.py @@ -4,7 +4,10 @@ import inspect import os import re -from typing import TYPE_CHECKING +from typing import ( + TYPE_CHECKING, + Any, +) import warnings if TYPE_CHECKING: @@ -24,7 +27,7 @@ def rewrite_exception(old_name: str, new_name: str) -> Generator[None]: raise msg = str(err.args[0]) msg = msg.replace(old_name, new_name) - args: tuple[str, ...] = (msg,) + args: tuple[Any, ...] = (msg,) if len(err.args) > 1: args = args + err.args[1:] err.args = args