26 lines
754 B
Python
26 lines
754 B
Python
"""Private utility methods used by the subset modules"""
|
|
|
|
|
|
def _add_method(*clazzes):
|
|
"""Returns a decorator function that adds a new method to one or
|
|
more classes."""
|
|
|
|
def wrapper(method):
|
|
done = []
|
|
for clazz in clazzes:
|
|
if clazz in done:
|
|
continue # Support multiple names of a clazz
|
|
done.append(clazz)
|
|
assert clazz.__name__ != "DefaultTable", "Oops, table class not found."
|
|
assert not hasattr(
|
|
clazz, method.__name__
|
|
), "Oops, class '%s' has method '%s'." % (clazz.__name__, method.__name__)
|
|
setattr(clazz, method.__name__, method)
|
|
return None
|
|
|
|
return wrapper
|
|
|
|
|
|
def _uniq_sort(l):
|
|
return sorted(set(l))
|