avoid duplicate log statements by memoizing getters #1248
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ensures
get_
functions are called only once, avoiding duplicate log statements. Closes #1246 .This may be too clever to do it magically on methods that start with
get_
, but it works and is the simplest if we want to clearly always cache all these methods (I think we do).The alternatives are:
@lru_cache()
on every method, including every subclass method override (easy to miss, as the only downside of forgetting it is duplicate log statements and a negligible amount of wasted time)self._get_...
. This is ultimately the same as the memoize here, but implemented with explicit private methods instead of caching all public methods based on their name.get_..._files()
are called in build and again in render)