""" Country codes data and utility functions for international phone numbers """ # List of countries with their codes and ISO codes COUNTRIES = [ {"name": "United States", "code": "+1", "iso": "US", "flag": "🇺🇸"}, {"name": "United Kingdom", "code": "+44", "iso": "GB", "flag": "🇬🇧"}, {"name": "India", "code": "+91", "iso": "IN", "flag": "🇮🇳"}, {"name": "United Arab Emirates", "code": "+971", "iso": "AE", "flag": "🇦🇪"}, {"name": "Canada", "code": "+1", "iso": "CA", "flag": "🇨🇦"}, {"name": "Australia", "code": "+61", "iso": "AU", "flag": "🇦🇺"}, {"name": "Germany", "code": "+49", "iso": "DE", "flag": "🇩🇪"}, {"name": "France", "code": "+33", "iso": "FR", "flag": "🇫🇷"}, {"name": "Spain", "code": "+34", "iso": "ES", "flag": "🇪🇸"}, {"name": "Italy", "code": "+39", "iso": "IT", "flag": "🇮🇹"}, {"name": "China", "code": "+86", "iso": "CN", "flag": "🇨🇳"}, {"name": "Japan", "code": "+81", "iso": "JP", "flag": "🇯🇵"}, {"name": "South Korea", "code": "+82", "iso": "KR", "flag": "🇰🇷"}, {"name": "Singapore", "code": "+65", "iso": "SG", "flag": "🇸🇬"}, {"name": "Hong Kong", "code": "+852", "iso": "HK", "flag": "🇭🇰"}, {"name": "Saudi Arabia", "code": "+966", "iso": "SA", "flag": "🇸🇦"}, {"name": "Brazil", "code": "+55", "iso": "BR", "flag": "🇧🇷"}, {"name": "Mexico", "code": "+52", "iso": "MX", "flag": "🇲🇽"}, {"name": "South Africa", "code": "+27", "iso": "ZA", "flag": "🇿🇦"}, {"name": "Nigeria", "code": "+234", "iso": "NG", "flag": "🇳🇬"}, {"name": "Egypt", "code": "+20", "iso": "EG", "flag": "🇪🇬"}, {"name": "Pakistan", "code": "+92", "iso": "PK", "flag": "🇵🇰"}, {"name": "Bangladesh", "code": "+880", "iso": "BD", "flag": "🇧🇩"}, {"name": "Indonesia", "code": "+62", "iso": "ID", "flag": "🇮🇩"}, {"name": "Malaysia", "code": "+60", "iso": "MY", "flag": "🇲🇾"}, {"name": "Philippines", "code": "+63", "iso": "PH", "flag": "🇵🇭"}, {"name": "Thailand", "code": "+66", "iso": "TH", "flag": "🇹🇭"}, {"name": "Vietnam", "code": "+84", "iso": "VN", "flag": "🇻🇳"}, {"name": "Turkey", "code": "+90", "iso": "TR", "flag": "🇹🇷"}, {"name": "Russia", "code": "+7", "iso": "RU", "flag": "🇷🇺"}, {"name": "Poland", "code": "+48", "iso": "PL", "flag": "🇵🇱"}, {"name": "Netherlands", "code": "+31", "iso": "NL", "flag": "🇳🇱"}, {"name": "Belgium", "code": "+32", "iso": "BE", "flag": "🇧🇪"}, {"name": "Sweden", "code": "+46", "iso": "SE", "flag": "🇸🇪"}, {"name": "Norway", "code": "+47", "iso": "NO", "flag": "🇳🇴"}, {"name": "Denmark", "code": "+45", "iso": "DK", "flag": "🇩🇰"}, {"name": "Switzerland", "code": "+41", "iso": "CH", "flag": "🇨🇭"}, {"name": "Austria", "code": "+43", "iso": "AT", "flag": "🇦🇹"}, {"name": "Ireland", "code": "+353", "iso": "IE", "flag": "🇮🇪"}, {"name": "New Zealand", "code": "+64", "iso": "NZ", "flag": "🇳🇿"}, ] def get_country_by_code(code: str): """Get country data by phone code""" for country in COUNTRIES: if country["code"] == code: return country return None def get_country_by_iso(iso: str): """Get country data by ISO code""" for country in COUNTRIES: if country["iso"] == iso: return country return None def get_country_by_name(name: str): """Get country data by country name""" for country in COUNTRIES: if country["name"].lower() == name.lower(): return country return None def validate_country_code(code: str) -> bool: """Validate if the country code exists""" return any(country["code"] == code for country in COUNTRIES) def get_all_countries(): """Return all countries""" return COUNTRIES