Problems when I try to commit

Daniel Garcia demonpogp at gmail.com
Tue Mar 10 12:23:44 CET 2020


thanks :) i could commit my changes and i made a pull request.

let me know any comments.

On 3/10/20 11:57 AM, Harald Seiler wrote:
> Hello Daniel,
>
> On Tue, 2020-03-10 at 11:45 +0100, Daniel Garcia wrote:
>> I have a problem when i try to do a commit
>>
>> this is the message:
>>
>> --------------------------------------------------------------------
>>
>>
>> mypy.....................................................................Failed
>> - hook id: mypy
>> - exit code: 1
>>
>> tbot_contrib/time_generic_testcases/time_tescases.py:8: error: Function
>> is missing a type annotation for one or more arguments
>> tbot_contrib/time_generic_testcases/time_tescases.py:18: error: Function
>> is missing a type annotation for one or more arguments
>>
>>
>> ----------------------------------------------------------------------
>>
>> this is the part in the file that has problems
>>
>>
>> @tbot.testcase
>> def testcase_clockTime(testcase, *args, **kwargs) -> float:
>>       """Return the time that the given testcase took
>>       you can pass any arguments that the testcase needs"""
>>       start = time.time()
>>       testcase(*args, **kwargs)
>>       finish = time.time()
>>       return finish - start
>>
>> -----------------------------------------------------------------------------
>>
>> the error is caused by this line : def testcase_clockTime(testcase,
>> *args, **kwargs)
>>
>> because i did not define the types of (testcase, *args, **kwargs)
>> because they are intended to be generic
>>
>>
>> how can i avoid that check?
> Avoiding checks is a bad attitude ;)  Instead you should fix the issue
> it is complaing about.  In this case, you need to annotate the arguments
> of your testcase function, for example like this:
>
>      import typing
>
>
>      @tbot.testcase
>      def testcase_clock_time(
>          testcase: typing.Callable,
>          *args: typing.Any,
>          **kwargs: typing.Any,
>      ) -> float:
>          ...
>
> In plain words this means: `testcase` can be any "callable" (that is,
> something like a function) and args, kwargs can be anything, we don't care
> about the specific types.
>
> `typing.Any` is a kind of wildcard that should only be used carefully.  In
> most cases it makes more sense to be explicit about the types you want to
> allow but here it is ok: The specific types depend on the signature of the
> testcase function so we can't know.
>
> For more info on these 'type annotations', maybe take a look at this
> blog-post [1].
>
> Hope this helps!
>
> [1]: https://www.caktusgroup.com/blog/2017/02/22/python-type-annotations/


More information about the tbot mailing list