diff options
author | 2024-03-28 17:07:26 -0700 | |
---|---|---|
committer | 2024-03-28 17:31:21 -0700 | |
commit | 5a8f533a29197bf674d8ace004a389307e53a9c9 (patch) | |
tree | a3202d21927ed8241640e91b3fa5244121015b2d | |
parent | f875565c7f169e41a9007e4513289235322dee2b (diff) |
Improve errors when compiling python code
Now a stacktrace involving precompile_python.py won't be shown,
and it will show all errors instead of just the first one.
Bug: 331488610
Test: Presubmits
Change-Id: I47376ca6764c0f84d1aaf5db329664e20143640a
-rw-r--r-- | python/scripts/precompile_python.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/python/scripts/precompile_python.py b/python/scripts/precompile_python.py index aa1a5df53..07b8fe97b 100644 --- a/python/scripts/precompile_python.py +++ b/python/scripts/precompile_python.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import print_function import argparse import py_compile import os @@ -63,11 +64,23 @@ def main(): parser.add_argument('dst_zip') args = parser.parse_args() + errors = [] with open(args.dst_zip, 'wb') as outf, open(args.src_zip, 'rb') as inf: with zipfile.ZipFile(outf, mode='w') as outzip, zipfile.ZipFile(inf, mode='r') as inzip: for name in inzip.namelist(): with inzip.open(name, mode='r') as inzipf: - process_one_file(name, inzipf, outzip) + try: + process_one_file(name, inzipf, outzip) + except py_compile.PyCompileError as e: + errors.append(e) + + if errors: + for i, error in enumerate(errors): + # Print an empty line in between each error + if i > 0: + print(file=sys.stderr) + print(str(error).strip(), file=sys.stderr) + sys.exit(1) if __name__ == "__main__": |