If it’s valid syntax you can technically do pretty much whatever you want at runtime with enough hacks. I know pytest does some pretty crazy stuff to get nicer error messages from asserts (e.g. so it can display the value of a and b for assert a == b)
As soon as it’s invalid syntax it becomes harder. You can’t parse it into an ast, which I assume is why they used regex.
The
with
approach would work if you use the debugger to change the current line I think.I don’t understand why this stop using ASTs in favor of buggy regexes - you’re allowed to do whatever you want during the codec …
Don’t forget to handle increment before
continue
.The main time I miss C-style for loops is dealing with linked lists and when manipulating the current iteration.
The former should be easy enough - make the advancement provide
__getattr__
expressions.The latter already works since it is in fact being transformed into a
while
. It’s impossible if you try to usefor
though.If it’s valid syntax you can technically do pretty much whatever you want at runtime with enough hacks. I know pytest does some pretty crazy stuff to get nicer error messages from asserts (e.g. so it can display the value of a and b for
assert a == b
)As soon as it’s invalid syntax it becomes harder. You can’t parse it into an ast, which I assume is why they used regex.