Skip to content

Commit

Permalink
middlewared.utils.functools.cache
Browse files Browse the repository at this point in the history
  • Loading branch information
themylogin committed May 5, 2022
1 parent a6a86e9 commit 6c7d190
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/middlewared/middlewared/utils/functools.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import asyncio
import functools

from middlewared.utils.lang import undefined


def cache(func):
value = undefined

if asyncio.iscoroutinefunction(func):
@functools.wraps(func)
async def wrapped(self):
nonlocal value

if value == undefined:
value = await func(self)

return value
else:
@functools.wraps(func)
def wrapped(self):
nonlocal value

if value == undefined:
value = func(self)

return value

return wrapped

0 comments on commit 6c7d190

Please sign in to comment.