Source code for inatcog.common

"""Module for common code."""
import re
from functools import wraps
from itertools import zip_longest

DEQUOTE = re.compile(r'^"?(.*?)"?$')


[docs]def make_decorator(function): """Make a decorator that has arguments.""" @wraps(function) def wrap_make_decorator(*args, **kwargs): if len(args) == 1 and (not kwargs) and callable(args[0]): # i.e. called as @make_decorator return function(args[0]) # i.e. called as @make_decorator(*args, **kwargs) return lambda wrapped_function: function(wrapped_function, *args, **kwargs) return wrap_make_decorator
[docs]def grouper(iterable, n, fillvalue=None): "Collect data into fixed-length chunks or blocks" # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return zip_longest(*args, fillvalue=fillvalue)