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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions