mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-13 15:00:15 +01:00
25 lines
614 B
Python
25 lines
614 B
Python
|
|
# This file is part of the pycalver project
|
||
|
|
# https://github.com/mbarkhau/pycalver
|
||
|
|
#
|
||
|
|
# Copyright (c) 2018-2020 Manuel Barkhau (mbarkhau@gmail.com) - MIT License
|
||
|
|
# SPDX-License-Identifier: MIT
|
||
|
|
import typing as typ
|
||
|
|
import functools
|
||
|
|
|
||
|
|
# NOTE (mb 2020-09-24): The main use of the memo function is
|
||
|
|
# not as a performance optimization, but to reduce logging
|
||
|
|
# spam.
|
||
|
|
|
||
|
|
|
||
|
|
def memo(func: typ.Callable) -> typ.Callable:
|
||
|
|
cache = {}
|
||
|
|
|
||
|
|
@functools.wraps(func)
|
||
|
|
def wrapper(*args):
|
||
|
|
key = str(args)
|
||
|
|
if key not in cache:
|
||
|
|
cache[key] = func(*args)
|
||
|
|
return cache[key]
|
||
|
|
|
||
|
|
return wrapper
|