[Python-ideas] Transpiling contracts
marko.ristin at gmail.com
Mon Oct 1 01:01:34 EDT 2018
Regarding the “transpile into Python” syntax with with statements: Can I
> see an example of this syntax when used in pathlib? I’m a bit worried this
> syntax is too long and “in the way”, unlike decorators which are before the
> function body. Or do you mean that both MockP and your syntax should be
> with requiring: assert arg1 < arg2, “message”
> Be the code you type or the code that’s actually run?
That's the code you would type. Let me make a full example (I'm omitting
"with contracts" since we actually don't need it).
You would read/write this:
def some_func(arg1: List[int])->int:
assert len(arg1) > 3, "some description"
with oldie as O, resultie as result, ensuring:
O.var1 = sum(arg1)
assert result > sum(arg1) > O.var1
assert len(result) > 5
This would run:
@requires(lambda P: len(P.arg1) > 3, "some description")
@snapshot(lambda P, var1: sum(P.arg1), enabled=SLOW)
@ensures(lambda O, P, result: result > sum(arg1) > O.var1, enabled=SLOW)
@ensures(lambda result: len(result) > 5)
I omitted in the example how to specify a custom exception to avoid
If we decide that transpiler is the way to go, I'd say it's easier to just
stick with lambdas and allow no mock-based approach in transpilation.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-ideas