def normalize_percent_characters(s):
    matches = set(PERCENT_MATCHER.findall(s))
    for m in matches:
        if not m.isupper():
            s = s.replace(m, m.upper())
    return s
All percent characters should be upper-cased.
dataset/ETHPy150Open Lukasa/hyper/hyper/packages/rfc3986/normalizers.py/normalize_percent_characters