aboutsummaryrefslogtreecommitdiff
path: root/catapult/devil/devil/utils/decorators.py
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/devil/devil/utils/decorators.py')
-rw-r--r--catapult/devil/devil/utils/decorators.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/catapult/devil/devil/utils/decorators.py b/catapult/devil/devil/utils/decorators.py
new file mode 100644
index 00000000..5d286107
--- /dev/null
+++ b/catapult/devil/devil/utils/decorators.py
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import functools
+
+
+def Memoize(f):
+ """Decorator to cache return values of function."""
+ memoize_dict = {}
+ @functools.wraps(f)
+ def wrapper(*args, **kwargs):
+ key = repr((args, kwargs))
+ if key not in memoize_dict:
+ memoize_dict[key] = f(*args, **kwargs)
+ return memoize_dict[key]
+ return wrapper