11__title__ = 'geonamescache'
2- __version__ = '2 .0.0'
2+ __version__ = '3 .0.0'
33__author__ = 'Ramiro Gómez'
44__license__ = 'MIT'
55
99from collections .abc import Mapping
1010from typing import Any , ClassVar , TypeVar
1111
12- from geonamescache import geonamesdata
1312from geonamescache .types import (
1413 City ,
1514 CitySearchAttribute ,
2827
2928
3029class GeonamesCache :
31- us_states : dict [USStateCode , USState ] = geonamesdata .us_states
3230 continents : dict [ContinentCode , Continent ] | None = None
3331 countries : dict [ISOStr , Country ] | None = None
3432 cities : dict [GeoNameIdStr , City ] | None = None
3533 cities_items : list [tuple [GeoNameIdStr , City ]] | None = None
3634 cities_by_names : ClassVar [dict [str , list [dict [GeoNameIdStr , City ]]]] = {}
3735 us_counties : list [USCounty ] | None = None
36+ us_states : dict [USStateCode , USState ] | None = None
3837
3938 def __init__ (self , min_city_population : int = 15000 ):
4039 self .min_city_population = min_city_population
@@ -43,17 +42,13 @@ def get_dataset_by_key(self, dataset: dict[Any, TDict], key: str) -> dict[Any, T
4342 return {d [key ]: d for c , d in list (dataset .items ())}
4443
4544 def get_continents (self ) -> dict [ContinentCode , Continent ]:
46- if self .continents is None :
47- self .continents = self ._load_data (self .continents , 'continents.json' )
48- return self .continents
45+ return self ._load_data (self .continents , 'continents.json' )
4946
5047 def get_countries (self ) -> dict [ISOStr , Country ]:
51- if self .countries is None :
52- self .countries = self ._load_data (self .countries , 'countries.json' )
53- return self .countries
48+ return self ._load_data (self .countries , 'countries.json' )
5449
5550 def get_us_states (self ) -> dict [USStateCode , USState ]:
56- return self .us_states
51+ return self ._load_data ( self . us_states , 'us_states.json' )
5752
5853 def get_countries_by_names (self ) -> dict [str , Country ]:
5954 return self .get_dataset_by_key (self .get_countries (), 'name' )
@@ -63,10 +58,7 @@ def get_us_states_by_names(self) -> dict[USStateName, USState]:
6358
6459 def get_cities (self ) -> dict [GeoNameIdStr , City ]:
6560 """Get a dictionary of cities keyed by geonameid."""
66-
67- if self .cities is None :
68- self .cities = self ._load_data (self .cities , f'cities{ self .min_city_population } .json' )
69- return self .cities
61+ return self ._load_data (self .cities , f'cities{ self .min_city_population } .json' )
7062
7163 def get_cities_by_name (self , name : str ) -> list [dict [GeoNameIdStr , City ]]:
7264 """Get a list of city dictionaries with the given name.
@@ -81,9 +73,7 @@ def get_cities_by_name(self, name: str) -> list[dict[GeoNameIdStr, City]]:
8173 return self .cities_by_names [name ]
8274
8375 def get_us_counties (self ):
84- if self .us_counties is None :
85- self .us_counties = self ._load_data (self .us_counties , 'us_counties.json' )
86- return self .us_counties
76+ return self ._load_data (self .us_counties , 'us_counties.json' )
8777
8878 def search_cities (
8979 self ,
0 commit comments