facebook / facebook/TestSlide

Cannot type check with `from __future__ import annotations`

オープン
#329 コメント 0 件 リアクション 0 件 担当者 1 名 @williamlw999-fb が担当を希望しています GitHub で見る
主要言語
Python
スター
149
フォーク
62
PR マージ指標
30日以内にマージされた PR はありません

説明

`from __future__ import annotations` turns type annotations into strings that can later be evaluated at runtime via `typing.get_type_hints` see [PEP 563](https://peps.python.org/pep-0563/). 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).

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。