<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def description_for_number(numobj, lang, script=None, region=None):
 """Return a text description of a PhoneNumber object for the given language. The description might consist of the name of the country where the phone number is from and/or the name of the geographical area the phone number is from. This function explicitly checks the validity of the number passed in Arguments: numobj -- The PhoneNumber object for which we want to get a text description. lang -- A 2-letter lowercase ISO 639-1 language code for the language in which the description should be returned (e.g. "en") script -- A 4-letter titlecase (first letter uppercase, rest lowercase) ISO script code as defined in ISO 15924, separated by an underscore (e.g. "Hant") region -- The region code for a given user. This region will be omitted from the description if the phone number comes from this region. It should be a two-letter upper-case CLDR region code. Returns a text description in the given language code, for the given phone number, or an empty string if no description is available."""

    ntype = number_type(numobj)
    if ntype == PhoneNumberType.UNKNOWN:
        return ""
    elif not is_number_type_geographical(ntype, numobj.country_code):
        return country_name_for_number(numobj, lang, script, region)
    return description_for_valid_number(numobj, lang, script, region)