diff --git a/octodns/record/geo_data.py b/octodns/record/geo_data.py index 0b0407c..d78eabf 100644 --- a/octodns/record/geo_data.py +++ b/octodns/record/geo_data.py @@ -207,7 +207,7 @@ geo_data = { 'PE': {'name': 'Prince Edward Island'}, 'QC': {'name': 'Quebec'}, 'SK': {'name': 'Saskatchewan'}, - 'YT': {'name': 'Yukon Territory'}, + 'YT': {'name': 'Yukon'}, }, }, 'CR': {'name': 'Costa Rica'}, @@ -291,7 +291,7 @@ geo_data = { 'UM': {'name': 'United States Minor Outlying Islands'}, 'UT': {'name': 'Utah'}, 'VA': {'name': 'Virginia'}, - 'VI': {'name': 'Virgin Islands'}, + 'VI': {'name': 'Virgin Islands, U.S.'}, 'VT': {'name': 'Vermont'}, 'WA': {'name': 'Washington'}, 'WI': {'name': 'Wisconsin'}, diff --git a/script/generate-geo-data b/script/generate-geo-data index 8767e49..ea0951d 100755 --- a/script/generate-geo-data +++ b/script/generate-geo-data @@ -1,11 +1,10 @@ #!/usr/bin/env python from collections import defaultdict -from pprint import pformat + from pycountry import countries, subdivisions from pycountry_convert import country_alpha2_to_continent_code - subs = defaultdict(dict) for subdivision in subdivisions: # Route53 only supports US states, Dyn (and others) support US states and CA provinces @@ -15,7 +14,6 @@ for subdivision in subdivisions: 'name': subdivision.name } subs = dict(subs) -#pprint(subs) # These are best guesses at things pycountry_convert doesn't map continent_backups = { @@ -38,21 +36,27 @@ for country in countries: continent_code = continent_backups[country.alpha_2] except KeyError: raise - print('{} {} {}'.format(country.alpha_2, country.name, getattr(country, 'official_name', ''))) + print( + '{} {} {}'.format( + country.alpha_2, + country.name, + getattr(country, 'official_name', ''), + ) + ) - geos[continent_code][country.alpha_2] = { - 'name': country.name - } + geos[continent_code][country.alpha_2] = {'name': country.name} try: - geos[continent_code][country.alpha_2]['provinces'] = subs[country.alpha_2] + geos[continent_code][country.alpha_2]['provinces'] = subs[ + country.alpha_2 + ] except KeyError: pass geos = dict(geos) -data = pformat(geos).replace('\n', '\n ') -print('''# +print( + '''# # -*- coding: utf-8 -*- # # This file is generated using @@ -60,5 +64,25 @@ print('''# # do not modify it directly # -geo_data = \\ - {}'''.format(data)) +geo_data = {''' +) + +for continent, details in sorted(geos.items()): + print(f" '{continent}': {{") + for country, info in sorted(details.items()): + name = info['name'] + quoted_name = f'"{name}"' if "'" in name else f"'{name}'" + if 'provinces' in info: + print(f" '{country}': {{") + print(f" 'name': {quoted_name},") + print(" 'provinces': {") + for prov, info in sorted(info['provinces'].items()): + name = info['name'] + quoted_name = f'"{name}"' if "'" in name else f"'{name}'" + print(f" '{prov}': {{'name': {quoted_name}}},") + print(' },') + print(' },') + else: + print(f" '{country}': {{'name': {quoted_name}}},") + print(' },') +print('}')