From 881254e464d9b3eee104adfcb371bd982b17a857 Mon Sep 17 00:00:00 2001 From: Lisa Roach Date: Mon, 5 Apr 2021 13:56:19 -0700 Subject: [PATCH 1/2] Fixes TypeInferenceProvider breakage with empty cache. --- libcst/metadata/tests/test_type_inference_provider.py | 4 ++++ libcst/metadata/type_inference_provider.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libcst/metadata/tests/test_type_inference_provider.py b/libcst/metadata/tests/test_type_inference_provider.py index f6c977519..4ff4b4687 100644 --- a/libcst/metadata/tests/test_type_inference_provider.py +++ b/libcst/metadata/tests/test_type_inference_provider.py @@ -66,3 +66,7 @@ def test_simple_class_types(self, source_path: Path, data_path: Path) -> None: cache={TypeInferenceProvider: data}, ) _test_simple_class_helper(self, wrapper) + + def test_with_empty_cache(self): + tip = TypeInferenceProvider({}) + self.assertEqual(tip.lookup, {}) diff --git a/libcst/metadata/type_inference_provider.py b/libcst/metadata/type_inference_provider.py index 9975d0235..3c58fc64d 100644 --- a/libcst/metadata/type_inference_provider.py +++ b/libcst/metadata/type_inference_provider.py @@ -75,7 +75,8 @@ def gen_cache( def __init__(self, cache: PyreData) -> None: super().__init__(cache) lookup: Dict[CodeRange, str] = {} - for item in cache["types"]: + cache_types = cache.get("types", []) + for item in cache_types: location = item["location"] start = location["start"] end = location["stop"] From cc83c65a80d49e02e9332b60564d57e8146b3fa0 Mon Sep 17 00:00:00 2001 From: Lisa Roach Date: Mon, 5 Apr 2021 14:58:32 -0700 Subject: [PATCH 2/2] Fixes for Pyre. --- libcst/metadata/tests/test_type_inference_provider.py | 5 ++++- libcst/metadata/type_inference_provider.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libcst/metadata/tests/test_type_inference_provider.py b/libcst/metadata/tests/test_type_inference_provider.py index 4ff4b4687..e7cad72aa 100644 --- a/libcst/metadata/tests/test_type_inference_provider.py +++ b/libcst/metadata/tests/test_type_inference_provider.py @@ -67,6 +67,9 @@ def test_simple_class_types(self, source_path: Path, data_path: Path) -> None: ) _test_simple_class_helper(self, wrapper) - def test_with_empty_cache(self): + def test_with_empty_cache(self) -> None: tip = TypeInferenceProvider({}) self.assertEqual(tip.lookup, {}) + + tip = TypeInferenceProvider(PyreData()) + self.assertEqual(tip.lookup, {}) diff --git a/libcst/metadata/type_inference_provider.py b/libcst/metadata/type_inference_provider.py index 3c58fc64d..4924738e7 100644 --- a/libcst/metadata/type_inference_provider.py +++ b/libcst/metadata/type_inference_provider.py @@ -32,7 +32,7 @@ class InferredType(TypedDict): annotation: str -class PyreData(TypedDict): +class PyreData(TypedDict, total=False): types: Sequence[InferredType]