Pandas version checks

  • [x] I have checked that this issue has not already been reported.

  • [x] I have confirmed this bug exists on the latest version of pandas.

  • [ ] I have confirmed this bug exists on the main branch of pandas.

Reproducible Example

import pandas as pd

df = pd.DataFrame({
    'security': ['A', 'B'],
    'price': [1, 2]
})

print(dict(df.groupby('security')))  # ❌ Raises TypeError


Using a comprehension works fine:

res = {k: v for k, v in df.groupby('security')}  # ✅ Succeeds

Verifying the iteration:

for k, v in df.groupby('security'):
    print(type(k), type(v))  # <class 'str'>, <class 'DataFrame'>

Issue Description

When using the built-in dict() constructor on a DataFrameGroupBy object returned by pandas.DataFrame.groupby(...), I get:

TypeError: 'str' object is not callable

This occurs even though the iterable yields valid (str, DataFrame) pairs, and built-in dict is not shadowed.

Environment Info

Item Value
pandas version 2.3.0
Python version 3.12.3
Install method poetry
OS Ubuntu 22.04
Reproducible in venv ✅ Yes
Reproducible in clean script ✅ Yes

Additional Notes

  • dict is and matches builtins.dict
  • Removing pycache and .pyc files does not help
  • The error only occurs when using dict(df.groupby(...)), not in other contexts
  • inspect.getmodule(dict) returns the expected built-in location

This could potentially be a pandas bug, interpreter-edge case, or a low-level compatibility glitch with Python 3.12+. Please let me know if you'd like a deeper trace or full traceback logs!

Expected Behavior

{ 'A': pd.DataFrame(...), 'B': pd.DataFrame(...) }

Installed Versions

Item | Value -- | -- Python version | 3.12.3 OS | Ubuntu 22.04 pandas version | 2.3.0 Install method | poetry Reproduced in venv | Yes Reproduced in CLI | Yes