Skip to content

Cannot type check with from __future__ import annotations #329

@williamlw999-fb

Description

@williamlw999-fb

from __future__ import annotations turns type annotations into strings that can later be evaluated at runtime via typing.get_type_hints see PEP 563. This is problematic because TestSlide uses the following pattern to find the expected type:

    try:
        argspec = inspect.getfullargspec(template)
    except TypeError:
        return
    expected_type = argspec.annotations.get("return")

In this scenario, expected_type is a string when the expected type is Type (see _validate_argument_type() which only works if expected_type is a Type).

It seems like a potential solution is:

    try:
        hints = get_type_hints(template)
        expected_type = hints.get("return")
    except TypeError:
        return

Will continue testing (I am on python 3.8.6).

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions