pandas-stubs icon indicating copy to clipboard operation
pandas-stubs copied to clipboard

Stack method - Unexpected keyword argument

Open rinzool opened this issue 1 year ago • 2 comments

Describe the bug Method .stack of dataframe is not fully typed, it misses argument sort and future_stack

To Reproduce

  1. Provide a minimal runnable pandas example that is not properly checked by the stubs.
import pandas as pd
df = pd.DataFrame([1, 2, 3])
df.stack(future_stack=True)
df.stack(sort=True)
  1. Indicate which type checker you are using (mypy or pyright). I am using mypy (1.10.0)
  2. Show the error message received from that type checker while checking your example.
ex.py:3: error: Unexpected keyword argument "future_stack" for "stack" of "DataFrame"  [call-arg]
ex.py:4: error: Unexpected keyword argument "sort" for "stack" of "DataFrame"  [call-arg]
Found 2 errors in 1 file (checked 1 source file)

Please complete the following information:

  • OS: ArchLinux
  • python version: 3.10.14
  • version of type checker: 1.10.0
  • version of installed pandas-stubs 2.2.2.240514

Additional context I'll be glad to open a PR to add those two arguments with some tests if that's ok for you, but I'm not entirely sure about what is the philosophy about pandas-stubs here. Since they are new arguments in 2.1, could it be bad to add those arguments in pandas stubs for someone who sill uses 2.0?

rinzool avatar May 15 '24 08:05 rinzool

I'll be glad to open a PR to add those two arguments with some tests if that's ok for you, but I'm not entirely sure about what is the philosophy about pandas-stubs here. Since they are new arguments in 2.1, could it be bad to add those arguments in pandas stubs for someone who sill uses 2.0?

Not a problem, because we only support the latest version of pandas in the stubs. Also, the arguments are optional, so anyone using an earlier version of pandas wouldn't be using them anyway.

Thanks for the report. Given that future_stack is incompatible with sort and dropna, you'd need overloads to show the possible combinations of the arguments.

PR with test welcome

Dr-Irv avatar May 15 '24 14:05 Dr-Irv

Thanks @Dr-Irv for the @overload tips I just opened a PR: https://github.com/pandas-dev/pandas-stubs/pull/926 Locally pytest, pyright and mypy works as expected

rinzool avatar May 15 '24 15:05 rinzool