From 96cf22f1fd08e08aba686ed24088c34af1684572 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Wed, 30 Jan 2019 19:37:20 -0800 Subject: [PATCH 1/5] Give better error message (and don't crash) if bad json stored in the cache --- mypy/build.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mypy/build.py b/mypy/build.py index 0201cd2c2186..04c9309e5eee 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -825,8 +825,17 @@ def _load_json_file(file: str, manager: BuildManager, manager.log(log_error + file) return None manager.trace(log_sucess + data.rstrip()) - result = json.loads(data) # TODO: Errors - return result + try: + result = json.loads(data) + except ValueError: # TODO: JSONDecodeError in 3.5 + manager.errors.report(0, 0, "Error reading JSON file {};" + " you likely have a bad cache.\n" + " Try removing the .mypy_cache directory + " and run mypy again.".format(file), + blocker=True) + return None + else: + return result def _cache_dir_prefix(manager: BuildManager) -> str: From 814f815896c945530bb555b441349b774cfa3440 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Wed, 30 Jan 2019 19:44:06 -0800 Subject: [PATCH 2/5] Fix missing quote --- mypy/build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mypy/build.py b/mypy/build.py index 04c9309e5eee..331d2ec60609 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -830,7 +830,7 @@ def _load_json_file(file: str, manager: BuildManager, except ValueError: # TODO: JSONDecodeError in 3.5 manager.errors.report(0, 0, "Error reading JSON file {};" " you likely have a bad cache.\n" - " Try removing the .mypy_cache directory + " Try removing the .mypy_cache directory" " and run mypy again.".format(file), blocker=True) return None From 2f31db67c852a79cc337ddfc52b840af728abafb Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Thu, 31 Jan 2019 01:11:27 -0800 Subject: [PATCH 3/5] Use options.cache_dir --- mypy/build.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mypy/build.py b/mypy/build.py index 331d2ec60609..288a480f06ad 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -828,10 +828,13 @@ def _load_json_file(file: str, manager: BuildManager, try: result = json.loads(data) except ValueError: # TODO: JSONDecodeError in 3.5 - manager.errors.report(0, 0, "Error reading JSON file {};" + manager.errors.report(0, 0, "Error reading JSON file {file};" " you likely have a bad cache.\n" - " Try removing the .mypy_cache directory" - " and run mypy again.".format(file), + " Try removing the {cache_dir} directory" + " and run mypy again.".format( + file=file, + cache_dir=manager.options.cache_dir + ), blocker=True) return None else: From 02cc5e5977764cd5edf6230567e747ab605d87b7 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Fri, 1 Feb 2019 17:58:24 -0800 Subject: [PATCH 4/5] Fix file and remove space --- mypy/build.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mypy/build.py b/mypy/build.py index 288a480f06ad..e2cc601400b0 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -828,11 +828,11 @@ def _load_json_file(file: str, manager: BuildManager, try: result = json.loads(data) except ValueError: # TODO: JSONDecodeError in 3.5 - manager.errors.report(0, 0, "Error reading JSON file {file};" + manager.errors.set_file(file, None) + manager.errors.report(0, 0, "Error reading JSON file;" " you likely have a bad cache.\n" - " Try removing the {cache_dir} directory" + "Try removing the {cache_dir} directory" " and run mypy again.".format( - file=file, cache_dir=manager.options.cache_dir ), blocker=True) From bc3b88dee8a37b99cde0c4b1768fad783dd66c7c Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Wed, 6 Feb 2019 22:01:08 -0800 Subject: [PATCH 5/5] Respond to review --- mypy/build.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mypy/build.py b/mypy/build.py index e2cc601400b0..bfd557c65174 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -829,12 +829,13 @@ def _load_json_file(file: str, manager: BuildManager, result = json.loads(data) except ValueError: # TODO: JSONDecodeError in 3.5 manager.errors.set_file(file, None) - manager.errors.report(0, 0, "Error reading JSON file;" - " you likely have a bad cache.\n" - "Try removing the {cache_dir} directory" - " and run mypy again.".format( - cache_dir=manager.options.cache_dir - ), + manager.errors.report(-1, -1, + "Error reading JSON file;" + " you likely have a bad cache.\n" + "Try removing the {cache_dir} directory" + " and run mypy again.".format( + cache_dir=manager.options.cache_dir + ), blocker=True) return None else: