def property_e(get_expression, doc=None): return property(fget=e(get_expression), doc=doc)
def min_e(*args, key, **kwargs): return min(*args, key=e(key), **kwargs)
def partial_e(expression, arg): return partial(e(expression), arg)
def map_e(expression, *args, **kwargs): return map(e(expression), *args, **kwargs)
def max_e(*args, key, **kwargs): return max(*args, key=e(key), **kwargs)
def takewhile_e(expression, *args, **kwargs): return takewhile(e(expression), *args, **kwargs)
def _lru_cache_inner(exp, *args, **kwargs): return lru_cache(*args, **kwargs)(e(exp))
def filterfalse_e(expression, *args, **kwargs): return filterfalse(e(expression), *args, **kwargs)
def groupby_e(iterable, expression): return groupby(iterable, e(expression))
def dropwhile_e(expression, *args, **kwargs): return dropwhile(e(expression), *args, **kwargs)
def filter_e(expression, *args, **kwargs): return filter(e(expression), *args, **kwargs)
def classmethod_e(expression): return classmethod(e(expression))
def cached_property_e(expression): return cached_property(e(expression))
def cache_e(expression): return cache(e(expression))
def singledispatch_e(expression): return singledispatch(e(expression))
def list_sort_e(self: list, *, key, **kwargs): return self.sort(key=e(key), **kwargs)
def ret(expression): return self.register(cls, e(expression))
def sorted_e(*args, key, **kwargs): return sorted(*args, key=e(key), **kwargs)