wrapper: switch to functools.lru_cache

No need to implement our own caching logic with newer Python.

Change-Id: Idc3243b8e22ff020817b0a4f18c9b86b1222d631
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/354357
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
This commit is contained in:
Mike Frysinger 2022-12-08 01:46:45 -05:00
parent a621254b26
commit 0ab6b11688
2 changed files with 9 additions and 12 deletions

View File

@ -38,7 +38,7 @@ class RepoWrapperTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
"""Load the wrapper module every time.""" """Load the wrapper module every time."""
wrapper._wrapper_module = None wrapper.Wrapper.cache_clear()
self.wrapper = wrapper.Wrapper() self.wrapper = wrapper.Wrapper()

View File

@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import functools
import importlib.machinery import importlib.machinery
import importlib.util import importlib.util
import os import os
@ -21,15 +22,11 @@ def WrapperPath():
return os.path.join(os.path.dirname(__file__), 'repo') return os.path.join(os.path.dirname(__file__), 'repo')
_wrapper_module = None @functools.lru_cache(maxsize=None)
def Wrapper(): def Wrapper():
global _wrapper_module modname = 'wrapper'
if not _wrapper_module: loader = importlib.machinery.SourceFileLoader(modname, WrapperPath())
modname = 'wrapper' spec = importlib.util.spec_from_loader(modname, loader)
loader = importlib.machinery.SourceFileLoader(modname, WrapperPath()) module = importlib.util.module_from_spec(spec)
spec = importlib.util.spec_from_loader(modname, loader) loader.exec_module(module)
_wrapper_module = importlib.util.module_from_spec(spec) return module
loader.exec_module(_wrapper_module)
return _wrapper_module