Skip to content

Instantly share code, notes, and snippets.

@alpden550
Last active October 6, 2022 07:43
Show Gist options
  • Save alpden550/185750bfca009ccefd19a7dd7c2fa8c6 to your computer and use it in GitHub Desktop.
Save alpden550/185750bfca009ccefd19a7dd7c2fa8c6 to your computer and use it in GitHub Desktop.
from functools import wraps
import warnings
def deprecated(func):
code = func.__code__
warnings.warn_explicit(
func.__name__ + 'is deprecated',
category=DeprecationWarning,
filename=code.co_filename,
lineno=code.co_firstlineno + 1)
return func
from functools import wraps
def once(func):
@wraps(func)
def inner(*args, **kwargs):
if not inner.called:
result = func(*args, ** kwargs)
inner.called = True
return result
inner.called = False
return inner
from functools import wraps
# more contracts https://pypi.org/project/contracts/
def pre(condition, message):
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
assert condition(*args, **kwargs), message
return func(*args, **kwargs)
return inner
return wrapper
from functools import wraps
def logger(filename):
def decorator(func):
@wraps(func)
def wrapped(*args, **kwargs):
result = func(*args, **kwargs)
with open(filename, 'w') as f:
f.write(str(result))
return result
return wrapped
return decorator
from functools import wraps
import random
import time
def wait_random(min_wait=1, max_wait=30):
def inner_function(func):
@wraps(func)
def wrapper(args, **kwargs):
time.sleep(random.randint(min_wait, max_wait))
return func(args, **kwargs)
return wrapper
return inner_function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment