Issue 32023: Always require parentheses for genexps in base class lists (original) (raw)

The compiler currently allows parentheses to be omitted if a generator expression is the sole entry in a base class list:

>>> class C(x for x in []): pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot create 'generator' instances

The language reference states that the parentheses around a generator expression are only optional for "calls with only one argument": https://docs.python.org/3/reference/expressions.html#generator-expressions

A base class list is not a call, so this should be treated as a syntax error, rather than being handled as equivalent to class C((x for x in [])): pass