msg336100 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2019-02-20 15:23 |
All ways of assigning to __debug__ are forbidden: >>> __debug__ = 1 File "", line 1 SyntaxError: cannot assign to __debug__ >>> for __debug__ in []: pass ... File "", line 1 SyntaxError: cannot assign to __debug__ >>> with cm() as __debug__: pass ... File "", line 1 SyntaxError: cannot assign to __debug__ >>> class __debug__: pass ... File "", line 1 SyntaxError: cannot assign to __debug__ >>> def __debug__(): pass ... File "", line 1 SyntaxError: cannot assign to __debug__ >>> def foo(__debug__): pass ... File "", line 1 SyntaxError: cannot assign to __debug__ >>> import __debug__ File "", line 1 SyntaxError: cannot assign to __debug__ The only exception is the assignment operator. >>> (__debug__ := 'spam') 'spam' >>> globals()['__debug__'] 'spam' This looks like a bug. |
|
|
msg336103 - (view) |
Author: Stéphane Wirtel (matrixise) *  |
Date: 2019-02-20 15:39 |
An idea for the fix? a direction where I could find the solution? ;-) |
|
|
msg336104 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2019-02-20 15:41 |
You need to add for the target of the assignment operator the same check as for other targets. |
|
|
msg336108 - (view) |
Author: Stéphane Wirtel (matrixise) *  |
Date: 2019-02-20 16:07 |
ok, I will check for the assignment operator in the code. maybe in the AST (Python-ast.c) but I think not |
|
|
msg336110 - (view) |
Author: Stéphane Wirtel (matrixise) *  |
Date: 2019-02-20 16:17 |
ok, I found the commit of @emily 8f59ee01be3d83d5513a9a3f654a237d77d80d9a and will try to find the assignment operator := |
|
|
msg336112 - (view) |
Author: Emily Morehouse (emilyemorehouse) *  |
Date: 2019-02-20 16:41 |
You should look in Python/ast.c. The naming convention follows some form of "named expression" (e.g. NamedExpr, ast_for_namedexpr). I'll have more time to look later this week, but let me know if you have any questions. |
|
|
msg336113 - (view) |
Author: Stéphane Wirtel (matrixise) *  |
Date: 2019-02-20 16:44 |
Hi @emily Thank you for your help. In fact, I have started to read Python-ast.c and ast.c, they are the main files for this kind of operations. Thank you again, |
|
|
msg336115 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2019-02-20 16:50 |
Look at compile.c. The code for restricting other assignments is located here. |
|
|
msg336119 - (view) |
Author: Pablo Galindo Salgado (pablogsal) *  |
Date: 2019-02-20 17:01 |
When I started working on this I did not notice the extra comments here. I will close my PR so Stéphane can do the PR. |
|
|
msg336124 - (view) |
Author: Stéphane Wirtel (matrixise) *  |
Date: 2019-02-20 17:09 |
Thank you Pablo, if I see you at PyCon, maybe we could drink a good beer ;-) |
|
|
msg336197 - (view) |
Author: Pablo Galindo Salgado (pablogsal) *  |
Date: 2019-02-21 10:11 |
New changeset 3ad91673057d410bf9f8c53df6bb8aa18c4b68ca by Pablo Galindo (Stéphane Wirtel) in branch 'master': bpo-36052: Raise a SyntaxError when assigning a value to __debug__ with := (GH-11958) https://github.com/python/cpython/commit/3ad91673057d410bf9f8c53df6bb8aa18c4b68ca |
|
|