[Python-ideas] Transpiling contracts

Marko Ristin-Kaufmann marko.ristin at gmail.com
Mon Oct 1 01:01:34 EDT 2018

Hi James,

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?
> Would
> 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:
  with requiring:
    assert len(arg1) > 3, "some description"

  with oldie as O, resultie as result, ensuring:
    if SLOW:
      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...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20181001/79684382/attachment.html>

More information about the Python-ideas mailing list