From e65b7f8ebfe62feb95205e5fc4da559e4eabe88d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 16 Oct 2019 17:07:18 -0700 Subject: importing: make importlib_importer recognize .pyc cache (#13239) Our importer was always parsing from source (which is considerably slower) because the source size recorded in the .pyc file differed from the size of the input file. Override path_stats in the prepending importer to fool it into thinking that the source size is the size *with* the prepended code. --- lib/spack/spack/util/imp/importlib_importer.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/spack/spack/util/imp/importlib_importer.py b/lib/spack/spack/util/imp/importlib_importer.py index 9eec569574..33c50cb601 100644 --- a/lib/spack/spack/util/imp/importlib_importer.py +++ b/lib/spack/spack/util/imp/importlib_importer.py @@ -15,6 +15,12 @@ class PrependFileLoader(SourceFileLoader): super(PrependFileLoader, self).__init__(full_name, path) self.prepend = prepend + def path_stats(self, path): + stats = super(PrependFileLoader, self).path_stats(path) + if self.prepend: + stats["size"] += len(self.prepend) + 1 + return stats + def get_data(self, path): data = super(PrependFileLoader, self).get_data(path) if path != self.path or self.prepend is None: -- cgit v1.2.3-70-g09d2