'This enables symbolic chmod string parsing as stated in the chmod man-page
This includes things like: "u=rw-x+X,g=r-x+X,o=r-x+X"'

@classmethod
def _symbolic_mode_to_octal(cls, path_stat, symbolic_mode):

    new_mode = stat.S_IMODE(path_stat.st_mode)
    for mode in symbolic_mode.split(','):
        permlist = MODE_OPERATOR_RE.split(mode)
        opers = MODE_OPERATOR_RE.findall(mode)
        users = permlist.pop(0)
        use_umask = (users == '')
        if ((users == 'a') or (users == '')):
            users = 'ugo'
        if USERS_RE.match(users):
            raise ValueError(('bad    symbolic    permission    for    mode:    %s' % mode))
        for (idx, perms) in enumerate(permlist):
            if PERMS_RE.match(perms):
                raise ValueError(('bad    symbolic    permission    for    mode:    %s' % mode))
            for user in users:
                mode_to_apply = cls._get_octal_mode_from_symbolic_perms(path_stat, user, perms, use_umask)
                new_mode = cls._apply_operation_to_mode(user, opers[idx], mode_to_apply, new_mode)
    return new_mode
