diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-11-10 20:29:35 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-11-10 20:29:35 -0500 |
commit | 3a6188cb9522340ff31949dfd31bbc5d9682d3f4 (patch) | |
tree | e5ddb9a84517a313d9abfc78770863ff66310b54 /coverage/misc.py | |
parent | 90d80149337a93010e6494122819fe4754f42ec5 (diff) | |
download | python-coveragepy-3a6188cb9522340ff31949dfd31bbc5d9682d3f4.tar.gz |
Some per-instance caching to speed code parsing and analysis.
Diffstat (limited to 'coverage/misc.py')
-rw-r--r-- | coverage/misc.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/coverage/misc.py b/coverage/misc.py index 8e4b336..329a841 100644 --- a/coverage/misc.py +++ b/coverage/misc.py @@ -45,6 +45,20 @@ def format_lines(statements, lines): return ret +def expensive(fn): + """A decorator to cache the result of an expensive operation. + + Only applies to methods with no arguments. + + """ + attr = "_cache_" + fn.__name__ + def _wrapped(self): + if not hasattr(self, attr): + setattr(self, attr, fn(self)) + return getattr(self, attr) + return _wrapped + + class CoverageException(Exception): """An exception specific to Coverage.""" pass |