<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_all_users(**kwargs):
 """ Get the username & ID of all users. Use the the filter if it has been provided The filter has to be a list of values """

    users_qry = db.DBSession.query(User)

    filter_type = kwargs.get('filter_type')
    filter_value = kwargs.get('filter_value')

    if filter_type is not None:
        # Filtering the search of users
        if filter_type == "id":
            if isinstance(filter_value, str):
                # Trying to read a csv string
                log.info("[HB.users] Getting user by Filter ID : %s", filter_value)
                filter_value = eval(filter_value)
                if type(filter_value) is int:
                    users_qry = users_qry.filter(User.id==filter_value)
                else:
                    users_qry = users_qry.filter(User.id.in_(filter_value))
        elif filter_type == "username":
            if isinstance(filter_value, str):
                # Trying to read a csv string
                log.info("[HB.users] Getting user by Filter Username : %s", filter_value)
                filter_value = filter_value.split(",")
                for i, em in enumerate(filter_value):
                    log.info("[HB.users] >>> Getting user by single Username : %s", em)
                    filter_value[i] = em.strip()
                if isinstance(filter_value, str):
                    users_qry = users_qry.filter(User.username==filter_value)
                else:
                    users_qry = users_qry.filter(User.username.in_(filter_value))
        else:
            raise Exception("Filter type '{}' not allowed".format(filter_type))

    else:
        log.info('[HB.users] Getting All Users')

    rs = users_qry.all()

    return rs