def generalized_check_balance(input_str):
    """
    Generalization of balanced paranthesis to
    also include '{}' and '[]'
    """
    stack = list()
    balanced = True
    matches = {'}': '{', ')': '(', ']':'['}
    for char_ in input_str:
        if char_ in '[{(':
            stack.append(char_)
        elif char_ in '])}':
            if len(stack) == 0:
                balanced = False
                break
            last_char = stack.pop()
            if matches[char_] != last_char:
                balanced = False
                break
        else:
            pass

    if balanced and len(stack) == 0:
        return True

    return False