<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_shift_function(alphabet):
 """Construct a shift function from an alphabet. Examples: Shift cases independently <function make_shift_function.<locals>.shift_case_sensitive> Additionally shift punctuation characters <function make_shift_function.<locals>.shift_case_sensitive> Shift entire ASCII range, overflowing cases <function make_shift_function.<locals>.shift_case_sensitive> Args: alphabet (iterable):
 Ordered iterable of strings representing separate cases of an alphabet Returns: Function (shift, symbol) """

    def shift_case_sensitive(shift, symbol):
        case = [case for case in alphabet if symbol in case]
        if not case:
            return symbol

        case = case[0]
        index = case.index(symbol)
        return case[(index - shift) % len(case)]

    return shift_case_sensitive