<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def requires(condition):
 """A function decorator to specify entry conditions for the function. Entry conditions should be a string, which will be evaluated as Python code. Arguments of the function may be accessed by their name. The special syntax "-->" and "<-->" may be used to mean "if" and "if and only if", respectively. They may not be contained within sub-expressions. Note that globals will not be included by default, and must be manually included using the "namespace" setting, set via settings.Settings. Example usage: | @requires("x >= y") | def subtract(x, y):
 | @accepts(l=List(Number), log_transform=Boolean) | @requires("log_transform == True --> min(l) > 0") | def process_list(l, log_transform=False):
 """

    def _decorator(func, condition=condition):
        # @requires decorator
        if U.has_fun_prop(func, "requires"):
            if not isinstance(U.get_fun_prop(func, "requires"), list):
                raise E.InternalError("Invalid requires structure")
            base_requires = U.get_fun_prop(func, "requires")
        else:
            base_requires = []
        base_condition = condition
        if "<-->" in condition:
            condition_parts = condition.split("<-->")
            assert len(condition_parts) == 2, "Only one implies per statement in %s condition %s" % (condition, func.__qualname__)
            condition = "((%s) if (%s) else True) and ((%s) if (%s) else True)" % (condition_parts[1], condition_parts[0], condition_parts[0], condition_parts[1])
        elif "-->" in condition:
            condition_parts = condition.split("-->")
            assert len(condition_parts) == 2, "Only one implies per statement in %s condition %s" % (base_condition, func.__qualname__)
            condition = "(%s) if (%s) else True" % (condition_parts[1], condition_parts[0])

        U.set_fun_prop(func, "requires", [(compile(condition, '', 'eval'), condition)]+base_requires)
        return _wrap(func)
    return _decorator