mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 14:30:09 +01:00
24 lines
614 B
Python
24 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
|