def example_func(x, y):
def __assert_before__(example_func):
#implicit, AST-able assertion expressions
# ... code
def __assert_after__(example_func):
#
def __assert_after__invariants_02(example_func):
# "
But these need to be composed / mixed in in MRO order and overridable; more
like a class with a __call__() and metaclassery for source-order
composition that has to do substring matches for e.g. __assert__*.
Blocks of expressions identified with keywords wouldn't be overrideable
('relaxed',); and would need to do fancy AST that replicates existing MRO?
On Thursday, August 30, 2018, Ethan Furman <[email protected]> wrote:
> On 08/30/2018 01:49 PM, Marko Ristin-Kaufmann wrote:
>
> classC(A):
>> # C.some_func also inherits the contracts from A.
>> # It weakens the precondition:
>> # it operates either on sorted lists OR
>> # the lists that are shorter than 10 elements.
>> #
>> # It strenghthens the postcondition:
>> # It needs to return an integer larger than
>> # the length of the input list AND
>> # the result needs to be divisible by 2.
>> @icontract.post(lambdaresult: result %2==0)
>> defsome_func(self, lst: List[int]) ->int:
>> # ...
>>
>
> I think you forgot an @icontract.pre() here.
>
> --
> ~Ethan~
> _______________________________________________
> Python-ideas mailing list
> [email protected]
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/