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 confusion. 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. Cheers, Marko >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/