This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author jhrmnn
Recipients jhrmnn
Date 2018-10-09.20:58:00
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1539118680.94.0.545547206417.issue34947@psf.upfronthosting.co.za>
In-reply-to
Content
inspect.getclosurevars() omits globals or nonlocals that are bound within comprehensions:

22:50 ~ python3
Python 3.7.0 (default, Aug 17 2018, 21:14:48) 
[Clang 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(ins)>>> import inspect
(ins)>>> x = 1
(ins)>>> def f():
(ins)...     return [x for _ in range(1)]
(ins)... 
(ins)>>> inspect.getclosurevars(f)
ClosureVars(nonlocals={}, globals={}, builtins={'range': <class 'range'>}, unbound=set())
(ins)>>> def f():
(ins)...     return x
(ins)... 
(ins)>>> inspect.getclosurevars(f)
ClosureVars(nonlocals={}, globals={'x': 1}, builtins={}, unbound=set())

It can be fixed quite easily along the following lines:

https://github.com/azag0/calcfw/blob/master/caf2/hashing/func.py#L133-L146

Does this look like a reasonable solution?
History
Date User Action Args
2018-10-09 20:58:00jhrmnnsetrecipients: + jhrmnn
2018-10-09 20:58:00jhrmnnsetmessageid: <1539118680.94.0.545547206417.issue34947@psf.upfronthosting.co.za>
2018-10-09 20:58:00jhrmnnlinkissue34947 messages
2018-10-09 20:58:00jhrmnncreate