def upper(text):
    """
    Creates a copy of ``text`` with all the cased characters converted to uppercase. 
    
    Note that ``isupper(upper(s))`` might be False if ``s`` contains uncased characters 
    or if the Unicode category of the resulting character(s) is not "Lu" (Letter, uppercase).
    
    The uppercasing algorithm used is described in section 3.13 of the Unicode Standard.
    
    :param text: The string to convert
    :type text:  ``str``
    
    :return: A copy of ``text`` with all the cased characters converted to uppercase.
    :rtype:  ``str``
    """
    assert isinstance(text, str), '%s is not a string' % text
    return text.upper()
