Source code for upsies.utils.country

"""
Look up country information
"""

import functools

from countryguess import guess_country as _guess_country


def _list_or_string(func):
    @functools.wraps(func)
    def wrapper(arg):
        if isinstance(arg, str):
            return func(arg)
        else:
            return tuple(func(country) for country in arg)

    return wrapper


[docs] @_list_or_string def name(country): """ Convert fuzzy country name to consistent name :param country: Country name or code, e.g. "Russian Federation" (official name), "USA" (common abbreviation), "Korea" (short name), "fr" (2-character country code), etc. :type country: str or sequence :return: Country name or `country` if it can't be associated with any country """ return _guess_country(country, attribute='name_short', default=country)
[docs] @_list_or_string def iso2(country): """ Convert fuzzy country name to ISO 3166-1 alpha-2 codes :param country: Country name or code, e.g. "Russian Federation" (official name), "USA" (common abbreviation), "Korea" (short name), "fr" (2-character country code), etc. :type country: str or sequence :return: Country code or `country` if it can't be associated with any country """ return _guess_country(country, attribute='iso2', default=country)
[docs] @_list_or_string def tld(country): """ Convert fuzzy country name to top level domain :param country: Country name or code, e.g. "Russian Federation" (official name), "USA" (common abbreviation), "Korea" (short name), "fr" (2-character country code), etc. :type country: str or sequence :return: Country TLD or `country` if it can't be associated with any country """ return _guess_country(country, attribute='cctld', default=country)