<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">Hi James,</div><div dir="ltr"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
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 supported?<br>
<br>
Would<br>
<br>
with requiring: assert arg1 < arg2, “message”<br>
<br>
Be the code you type or the code that’s actually run?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">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).</div><div dir="auto"><br></div><div dir="auto">You would read/write this:</div><div dir="auto">def some_func(arg1: List[int])->int:</div><div dir="auto">  with requiring:</div><div dir="auto">    assert len(arg1) > 3, "some description"</div><div dir="auto"><br></div><div dir="auto">  with oldie as O, resultie as result, ensuring:</div><div dir="auto">    if SLOW:</div><div dir="auto">      O.var1 = sum(arg1)</div><div dir="auto">      assert result > sum(arg1) > O.var1</div><div dir="auto"><br></div><div dir="auto">    assert len(result) > 5</div><div dir="auto"><br></div><div dir="auto">This would run:</div><div dir="auto">@requires(lambda P: len(P.arg1) > 3, "some description")</div><div dir="auto">@snapshot(lambda P, var1: sum(P.arg1), enabled=SLOW)</div><div dir="auto">@ensures(lambda O, P, result: result > sum(arg1) > O.var1, enabled=SLOW)</div><div dir="auto">@ensures(lambda result: len(result) > 5)</div><div dir="auto"><br></div><div dir="auto">I omitted in the example how to specify a custom exception to avoid confusion.</div><div dir="auto"><br></div><div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">Marko</div><div dir="auto"> </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"></blockquote></div></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>