From 6b8b6982aa47f031b24d9a284cdc53a1646bab99 Mon Sep 17 00:00:00 2001 From: Al Date: Thu, 2 Mar 2017 04:23:09 -0500 Subject: [PATCH] [addresses] more classmethods --- scripts/geodata/addresses/components.py | 35 ++++++++++++++----------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/scripts/geodata/addresses/components.py b/scripts/geodata/addresses/components.py index 7987217b..de4f5898 100644 --- a/scripts/geodata/addresses/components.py +++ b/scripts/geodata/addresses/components.py @@ -796,7 +796,8 @@ class AddressComponents(object): dublin_postal_district_regex = re.compile('^{}$'.format(dublin_postal_district_regex_str), re.I) dublin_city_district_regex = re.compile('dublin {}$'.format(dublin_postal_district_regex_str), re.I) - def format_dublin_postal_district(self, address_components): + @classmethod + def format_dublin_postal_district(cls, address_components): ''' Dublin postal districts ----------------------- @@ -812,19 +813,19 @@ class AddressComponents(object): city = address_components.get(AddressFormatter.CITY) # Change to city_district - if city and self.dublin_city_district_regex.match(city): + if city and cls.dublin_city_district_regex.match(city): address_components[AddressFormatter.CITY_DISTRICT] = address_components.pop(AddressFormatter.CITY) postcode = address_components.get(AddressFormatter.POSTCODE) - if postcode and (self.dublin_postal_district_regex.match(postcode) or self.dublin_city_district_regex.match(postcode)): + if postcode and (cls.dublin_postal_district_regex.match(postcode) or cls.dublin_city_district_regex.match(postcode)): address_components.pop(AddressFormatter.POSTCODE) return True elif city and city.lower() in ('dublin', 'city of dublin', 'dublin city') and AddressFormatter.POSTCODE in address_components: postcode = address_components[AddressFormatter.POSTCODE] - if self.dublin_postal_district_regex.match(postcode): + if cls.dublin_postal_district_regex.match(postcode): address_components.pop(AddressFormatter.CITY) address_components[AddressFormatter.CITY_DISTRICT] = 'Dublin {}'.format(address_components.pop(AddressFormatter.POSTCODE)) return True - elif self.dublin_city_district_regex.match(postcode): + elif cls.dublin_city_district_regex.match(postcode): address_components[AddressFormatter.CITY_DISTRICT] = address_components.pop(AddressFormatter.POSTCODE) return True return False @@ -832,7 +833,8 @@ class AddressComponents(object): # e.g. Kingston 5 kingston_postcode_regex = re.compile('(kingston )?([1-9]|1[1-9]|20|c\.?s\.?o\.?)$', re.I) - def format_kingston_postcode(self, address_components): + @classmethod + def format_kingston_postcode(cls, address_components): ''' Kingston postcodes ------------------ @@ -847,7 +849,7 @@ class AddressComponents(object): postcode = address_components.get(AddressFormatter.POSTCODE) if city: - match = self.kingston_postcode_regex.match(city) + match = cls.kingston_postcode_regex.match(city) if match: city, postcode = match.groups() if city: @@ -860,7 +862,7 @@ class AddressComponents(object): return True elif postcode: - match = self.kingston_postcode_regex.match(postcode) + match = cls.kingston_postcode_regex.match(postcode) if match: city, postcode = match.groups() if city and AddressFormatter.CITY not in address_components: @@ -872,7 +874,8 @@ class AddressComponents(object): return True return False - def format_japanese_neighborhood_romaji(self, address_components): + @classmethod + def format_japanese_neighborhood_romaji(cls, address_components): neighborhood = safe_decode(address_components.get(AddressFormatter.SUBURB, '')) if neighborhood.endswith(safe_decode('丁目')): neighborhood = neighborhood[:-2] @@ -896,8 +899,9 @@ class AddressComponents(object): else: return self.japanese_node_admin_level_map.get(val.get('place'), 1000) - def genitive_name(self, name, language): - morph = self.slavic_morphology_analyzers.get(language) + @classmethod + def genitive_name(cls, name, language): + morph = cls.slavic_morphology_analyzers.get(language) if not morph: return None norm = [] @@ -913,14 +917,15 @@ class AddressComponents(object): norm.append(word) return six.u(' ').join(norm) - def add_genitives(self, address_components, language): - if language in self.slavic_morphology_analyzers and AddressFormatter.CITY in address_components: + @classmethod + def add_genitives(cls, address_components, language): + if language in cls.slavic_morphology_analyzers and AddressFormatter.CITY in address_components: for component in address_components: if component not in AddressFormatter.BOUNDARY_COMPONENTS: continue - genitive_probability = nested_get(self.config, ('slavic_names', component, 'genitive_probability'), default=None) + genitive_probability = nested_get(cls.config, ('slavic_names', component, 'genitive_probability'), default=None) if genitive_probability is not None and random.random() < float(genitive_probability): - address_components[component] = self.genitive_name(address_components[component], language) + address_components[component] = cls.genitive_name(address_components[component], language) @classmethod def spanish_street_name(cls, street):