Files
libpostal/scripts/geodata/postal_codes/validation.py

34 lines
1.1 KiB
Python

import re
from geodata.i18n.google import google_i18n
from geodata.postal_codes.config import postal_codes_config
class PostcodeRegexes(object):
def __init__(self):
self.responses = {}
self.postcode_regexes = {}
def get(self, country_code):
ret = self.postcode_regexes.get(country_code.lower())
if ret is None:
override_regex = postal_codes_config.get_property('override_regex', country=country_code)
if override_regex:
ret = re.compile(override_regex, re.I)
self.postcode_regexes[country_code.lower()] = ret
return ret
response = google_i18n.get(country_code)
if response:
postcode_expression = response.get('zip')
if not postcode_expression:
self.postcode_regexes[country_code.lower()] = None
return None
ret = re.compile(postcode_expression, re.I)
self.postcode_regexes[country_code.lower()] = ret
return ret
postcode_regexes = PostcodeRegexes()