New submission from Nick Coghlan <[email protected]>:
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`
----------
components: Interpreter Core
messages: 306197
nosy: ncoghlan, serhiy.storchaka
priority: low
severity: normal
status: open
title: Always require parentheses for genexps in base class lists
type: behavior
versions: Python 3.7
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue32023>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com