PHONE_METADATA_MX = PhoneMetadata( id='MX', country_code=52, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='[1-9]\\d{9,10}', possible_number_pattern='\\d{7,11}'), fixed_line=PhoneNumberDesc(national_number_pattern='[2-9]\\d{9}', possible_number_pattern='\\d{7,10}'), mobile=PhoneNumberDesc(national_number_pattern='1\\d{10}', possible_number_pattern='\\d{11}'), toll_free=PhoneNumberDesc(national_number_pattern='800\\d{7}', possible_number_pattern='\\d{10}'), premium_rate=PhoneNumberDesc(national_number_pattern='900\\d{7}', possible_number_pattern='\\d{10}'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), national_prefix='01', national_prefix_for_parsing='01|04[45](\\d{10})', national_prefix_transform_rule=u'1\\1', number_format=[ NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['[89]00'], national_prefix_formatting_rule=u'01 \\1', national_prefix_optional_when_formatting=True), NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['33|55|81'], national_prefix_formatting_rule=u'01 \\1', national_prefix_optional_when_formatting=True), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=[ '[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]' ], national_prefix_formatting_rule=u'01 \\1', national_prefix_optional_when_formatting=True), NumberFormat(pattern='(1)(\\d{2})(\\d{4})(\\d{4})', format=u'045 \\2 \\3 \\4', leading_digits_pattern=['1(?:33|55|81)'], national_prefix_formatting_rule=u'\\1', national_prefix_optional_when_formatting=True), NumberFormat(pattern='(1)(\\d{3})(\\d{3})(\\d{4})', format=u'045 \\2 \\3 \\4', leading_digits_pattern=[ '1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])' ], national_prefix_formatting_rule=u'\\1', national_prefix_optional_when_formatting=True) ], intl_number_format=[ NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['[89]00']), NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['33|55|81']), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=[ '[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]' ]), NumberFormat(pattern='(1)(\\d{2})(\\d{4})(\\d{4})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['1(?:33|55|81)']), NumberFormat(pattern='(1)(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=[ '1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])' ]) ])
"""Auto-generated file, do not edit by hand. US metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_US = PhoneMetadata(id='US', country_code=1, international_prefix='011', general_desc=PhoneNumberDesc(national_number_pattern='[13-689]\\d{9}|2[0-35-9]\\d{8}', possible_length=(10,), possible_length_local_only=(7,)), fixed_line=PhoneNumberDesc(national_number_pattern='[13-689]\\d{9}|2[0-35-9]\\d{8}', example_number='1234567890', possible_length=(10,), possible_length_local_only=(7,)), mobile=PhoneNumberDesc(national_number_pattern='[13-689]\\d{9}|2[0-35-9]\\d{8}', example_number='1234567890', possible_length=(10,), possible_length_local_only=(7,)), toll_free=PhoneNumberDesc(national_number_pattern='8(?:00|66|77|88)\\d{7}', example_number='8004567890', possible_length=(10,)), premium_rate=PhoneNumberDesc(national_number_pattern='900\\d{7}', example_number='9004567890', possible_length=(10,)), no_international_dialling=PhoneNumberDesc(national_number_pattern='800\\d{7}', example_number='8004567890', possible_length=(10,)), national_prefix='1', preferred_extn_prefix=' extn. ', national_prefix_for_parsing='1', number_format=[NumberFormat(pattern='(\\d{3})(\\d{4})', format='\\1 \\2', national_prefix_optional_when_formatting=True), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1 \\2 \\3', national_prefix_optional_when_formatting=True)], intl_number_format=[NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1 \\2 \\3')], main_country_for_code=True, mobile_number_portable_region=True)
PHONE_METADATA_US = PhoneMetadata( id='US', country_code=1, international_prefix='011', general_desc=PhoneNumberDesc( national_number_pattern='[13-689]\\d{9}|2[0-35-9]\\d{8}', possible_number_pattern='\\d{7}(?:\\d{3})?', example_number='1234567890'), fixed_line=PhoneNumberDesc( national_number_pattern='[13-689]\\d{9}|2[0-35-9]\\d{8}', possible_number_pattern='\\d{7}(?:\\d{3})?', example_number='1234567890'), mobile=PhoneNumberDesc( national_number_pattern='[13-689]\\d{9}|2[0-35-9]\\d{8}', possible_number_pattern='\\d{7}(?:\\d{3})?', example_number='1234567890'), toll_free=PhoneNumberDesc(national_number_pattern='8(?:00|66|77|88)\\d{7}', possible_number_pattern='\\d{10}', example_number='1234567890'), premium_rate=PhoneNumberDesc(national_number_pattern='900\\d{7}', possible_number_pattern='\\d{10}', example_number='1234567890'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc( national_number_pattern='800\\d{7}', possible_number_pattern='\\d{10}', example_number='1234567890'), national_prefix='1', preferred_extn_prefix=' extn. ', national_prefix_for_parsing='1', number_format=[ NumberFormat(pattern='(\\d{3})(\\d{4})', format=u'\\1 \\2', national_prefix_optional_when_formatting=True), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3', national_prefix_optional_when_formatting=True) ], intl_number_format=[ NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3') ], main_country_for_code=True)
"""Auto-generated file, do not edit by hand. BB metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_BB = PhoneMetadata(id='BB', country_code=1, international_prefix='011', general_desc=PhoneNumberDesc(national_number_pattern='246\\d{7}', possible_number_pattern='\\d{7,10}', possible_length=(10,), possible_length_local_only=(7,)), fixed_line=PhoneNumberDesc(national_number_pattern='246\\d{7}', possible_number_pattern='\\d{7,10}', possible_length=(10,), possible_length_local_only=(7,)), mobile=PhoneNumberDesc(national_number_pattern='246\\d{7}', possible_number_pattern='\\d{7,10}', possible_length=(10,), possible_length_local_only=(7,)), toll_free=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), premium_rate=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'))
PHONE_METADATA_JP = PhoneMetadata( id='JP', country_code=81, international_prefix='010', general_desc=PhoneNumberDesc( national_number_pattern='07\\d{5}|[1-357-9]\\d{3,10}', possible_length=(4, 5, 6, 7, 8, 9, 10, 11)), fixed_line=PhoneNumberDesc( national_number_pattern='07\\d{5}|[1-357-9]\\d{3,10}', example_number='0712345', possible_length=(4, 5, 6, 7, 8, 9, 10, 11)), toll_free=PhoneNumberDesc(national_number_pattern='0777[01]\\d{2}', example_number='0777012', possible_length=(7, )), no_international_dialling=PhoneNumberDesc( national_number_pattern='[23]\\d{3}', example_number='2123', possible_length=(4, )), national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['[57-9]0'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{3})(\\d{4})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['[57-9]0'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{2})(\\d{3})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=[ '111|222|333', '(?:111|222|333)1', '(?:111|222|333)11' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{4})(\\d)(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=[ '222|333', '2221|3332', '22212|3332', '222120|3332' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['[23]'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{4})', format='\\1-\\2', leading_digits_pattern=['077'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{4})', format='*\\1', leading_digits_pattern=['[23]'], national_prefix_formatting_rule='\\1') ], leading_zero_possible=True)
PHONE_METADATA_DE = PhoneMetadata( id='DE', country_code=49, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='\\d{4,14}', possible_number_pattern='\\d{2,14}', possible_length=(4, 5, 6, 7, 8, 9, 10, 11), possible_length_local_only=(2, 3)), fixed_line=PhoneNumberDesc( national_number_pattern= '(?:[24-6]\\d{2}|3[03-9]\\d|[789](?:0[2-9]|[1-9]\\d))\\d{1,8}', possible_number_pattern='\\d{2,14}', example_number='30123456', possible_length=(4, 5, 6, 7, 8, 9, 10, 11), possible_length_local_only=(2, 3)), mobile=PhoneNumberDesc( national_number_pattern='1(5\\d{9}|7\\d{8}|6[02]\\d{8}|63\\d{7})', possible_number_pattern='\\d{10,11}', possible_length=(10, 11)), toll_free=PhoneNumberDesc(national_number_pattern='800\\d{7}', possible_number_pattern='\\d{10}', possible_length=(10, )), premium_rate=PhoneNumberDesc( national_number_pattern='900([135]\\d{6}|9\\d{7})', possible_number_pattern='\\d{10,11}', possible_length=(10, 11)), shared_cost=PhoneNumberDesc(), personal_number=PhoneNumberDesc(), voip=PhoneNumberDesc(), pager=PhoneNumberDesc(), uan=PhoneNumberDesc(), voicemail=PhoneNumberDesc(), no_international_dialling=PhoneNumberDesc(), national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{3})(\\d{3,8})', format='\\1 \\2', leading_digits_pattern=['2|3[3-9]|906|[4-9][1-9]1'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{2})(\\d{4,11})', format='\\1/\\2', leading_digits_pattern=['[34]0|[68]9'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='([4-9]\\d)(\\d{2})', format='\\1 \\2', leading_digits_pattern=[ '[4-9]', '[4-6]|[7-9](?:\\d[1-9]|[1-9]\\d)' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='([4-9]\\d{3})(\\d{2,7})', format='\\1 \\2', leading_digits_pattern=[ '[4-9]', '[4-6]|[7-9](?:\\d[1-9]|[1-9]\\d)' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{1})(\\d{6})', format='\\1 \\2 \\3', leading_digits_pattern=['800'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{3,4})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['900'], national_prefix_formatting_rule='0\\1') ])
"""Auto-generated file, do not edit by hand. BY metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_BY = PhoneMetadata( id='BY', country_code=375, international_prefix='810', general_desc=PhoneNumberDesc(national_number_pattern='[1-9]\\d{5}', possible_length=(6, )), fixed_line=PhoneNumberDesc(national_number_pattern='[1-9]\\d{5}', example_number='112345', possible_length=(6, )), national_prefix='8', national_prefix_for_parsing='80?|99999', number_format=[ NumberFormat(pattern='(\\d{4})', format='\\1', leading_digits_pattern=['[1-8]'], national_prefix_formatting_rule='8 \\1'), NumberFormat(pattern='(\\d{2})(\\d{3})', format='\\1 \\2', leading_digits_pattern=['[1-8]'], national_prefix_formatting_rule='8\\1'), NumberFormat(pattern='(\\d{3})(\\d{3})', format='\\1 \\2', leading_digits_pattern=['[1-8]'], national_prefix_formatting_rule='8 \\1') ])
'CX', 'DE', 'FR', 'GB', 'GG', 'HU', 'IT', 'JP', 'KR', 'MX', 'NZ', 'PL', 'RE', 'SE', 'SG', 'US', 'YT' ] _AVAILABLE_NONGEO_COUNTRY_CODES = [800, 979] def _load_region(code): __import__("region_%s" % code, globals(), locals(), fromlist=["PHONE_METADATA_%s" % code], level=1) for region_code in _AVAILABLE_REGION_CODES: PhoneMetadata.register_region_loader(region_code, _load_region) for country_code in _AVAILABLE_NONGEO_COUNTRY_CODES: PhoneMetadata.register_nongeo_region_loader(country_code, _load_region) # A mapping from a country code to the region codes which # denote the country/region represented by that country code. # In the case of multiple countries sharing a calling code, # such as the NANPA countries, the one indicated with # "main_country_for_code" in the metadata should be first. _COUNTRY_CODE_TO_REGION_CODE = { 1: ( "US", "BB", "BS", "CA",
"""Auto-generated file, do not edit by hand. IT metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_IT = PhoneMetadata(id='IT', country_code=39, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='[0389]\\d{5,10}', possible_number_pattern='\\d{6,11}'), fixed_line=PhoneNumberDesc(national_number_pattern='0\\d{9,10}', possible_number_pattern='\\d{10,11}'), mobile=PhoneNumberDesc(national_number_pattern='3\\d{8,9}', possible_number_pattern='\\d{9,10}'), toll_free=PhoneNumberDesc(national_number_pattern='80(?:0\\d{6}|3\\d{3})', possible_number_pattern='\\d{6,9}'), premium_rate=PhoneNumberDesc(national_number_pattern='89(?:2\\d{3}|9\\d{6})', possible_number_pattern='\\d{6,9}'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), number_format=[NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['0[26]']), NumberFormat(pattern='(\\d{3})(\\d{4})(\\d{3,4})', format='\\1 \\2 \\3', leading_digits_pattern=['0[13-57-9]']), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{3,4})', format='\\1 \\2 \\3', leading_digits_pattern=['3']), NumberFormat(pattern='(\\d{3})(\\d{3,6})', format='\\1 \\2', leading_digits_pattern=['8'])], leading_zero_possible=True)
def __init__(self, xterritory, short_data): # Retrieve the REQUIRED attributes id = xterritory.attrib['id'] self.o = PhoneMetadata(id, short_data=short_data, register=False) self.o._mutable = True if 'countryCode' in xterritory.attrib: self.o.country_code = int(xterritory.attrib['countryCode']) else: self.o.country_code = None # Retrieve the IMPLIED attributes self.o.international_prefix = xterritory.get('internationalPrefix', None) self.o.leading_digits = xterritory.get('leadingDigits', None) self.o.preferred_international_prefix = xterritory.get('preferredInternationalPrefix', None) self.o.national_prefix = xterritory.get('nationalPrefix', None) self.o.national_prefix_for_parsing = _dews_re(xterritory.get('nationalPrefixForParsing', None)) self.o.national_prefix_transform_rule = xterritory.get('nationalPrefixTransformRule', None) if self.o.national_prefix_transform_rule is not None: # Replace '$1' etc with '\1' to match Python regexp group reference format self.o.national_prefix_transform_rule = re.sub(r'\$', r'\\', self.o.national_prefix_transform_rule) self.o.preferred_extn_prefix = xterritory.get('preferredExtnPrefix', None) national_prefix_formatting_rule = xterritory.get('nationalPrefixFormattingRule', None) national_prefix_optional_when_formatting = get_true_attrib(xterritory, 'nationalPrefixOptionalWhenFormatting') carrier_code_formatting_rule = xterritory.get('carrierCodeFormattingRule', None) # Post-processing for the territory-default formatting rules. These are used # in NumberFormat elements that don't supply their own formatting rules. if self.o.national_prefix is not None: if self.o.national_prefix_for_parsing is None: # Default to self.national_prefix when national_prefix_for_parsing not set self.o.national_prefix_for_parsing = self.o.national_prefix national_prefix_formatting_rule = _expand_formatting_rule(national_prefix_formatting_rule, self.o.national_prefix) carrier_code_formatting_rule = _expand_formatting_rule(carrier_code_formatting_rule, self.o.national_prefix) self.o.main_country_for_code = get_true_attrib(xterritory, 'mainCountryForCode') self.o.leading_zero_possible = get_true_attrib(xterritory, 'leadingZeroPossible') self.o.mobile_number_portable_region = get_true_attrib(xterritory, 'mobileNumberPortableRegion') # Retrieve the various PhoneNumberDesc elements, which have one of the forms: # (possibleLengths, exampleNumber, nationalNumberPattern) # (possibleLengths, nationalNumberPattern) # (nationalNumberPattern) # The general_desc is first and special; it is used to fill out missing fields # in many of the other PhoneNumberDesc elements. self.o.general_desc = XPhoneNumberDesc(xterritory, 'generalDesc', has_possible_lengths=False, has_example_number=False).o self.o.toll_free = XPhoneNumberDesc(xterritory, 'tollFree', template=self.o.general_desc).o self.o.premium_rate = XPhoneNumberDesc(xterritory, 'premiumRate', template=self.o.general_desc).o if not short_data: # Mobile and fixed-line descriptions do not inherit anything from the general_desc self.o.fixed_line = XPhoneNumberDesc(xterritory, 'fixedLine').o self.o.mobile = XPhoneNumberDesc(xterritory, 'mobile').o self.o.pager = XPhoneNumberDesc(xterritory, 'pager', template=self.o.general_desc).o self.o.shared_cost = XPhoneNumberDesc(xterritory, 'sharedCost', template=self.o.general_desc).o self.o.personal_number = XPhoneNumberDesc(xterritory, 'personalNumber', template=self.o.general_desc).o self.o.voip = XPhoneNumberDesc(xterritory, 'voip', template=self.o.general_desc).o self.o.uan = XPhoneNumberDesc(xterritory, 'uan', template=self.o.general_desc).o self.o.voicemail = XPhoneNumberDesc(xterritory, 'voicemail', template=self.o.general_desc).o self.o.no_international_dialling = XPhoneNumberDesc(xterritory, 'noInternationalDialling', template=self.o.general_desc, has_example_number=False).o # Skip noInternationalDialling when combining possible length information sub_descs = (self.o.toll_free, self.o.premium_rate, self.o.fixed_line, self.o.mobile, self.o.pager, self.o.shared_cost, self.o.personal_number, self.o.voip, self.o.uan, self.o.voicemail) all_descs = (self.o.toll_free, self.o.premium_rate, self.o.fixed_line, self.o.mobile, self.o.pager, self.o.shared_cost, self.o.personal_number, self.o.voip, self.o.uan, self.o.voicemail, self.o.no_international_dialling) else: self.o.standard_rate = XPhoneNumberDesc(xterritory, 'standardRate', template=self.o.general_desc).o self.o.short_code = XPhoneNumberDesc(xterritory, 'shortCode', template=self.o.general_desc).o self.o.carrier_specific = XPhoneNumberDesc(xterritory, 'carrierSpecific', template=self.o.general_desc).o self.o.sms_services = XPhoneNumberDesc(xterritory, 'smsServices', template=self.o.general_desc).o self.o.emergency = XPhoneNumberDesc(xterritory, 'emergency', template=self.o.general_desc).o # For short number metadata, copy the lengths from the "short code" section only. sub_descs = (self.o.short_code,) all_descs = (self.o.toll_free, self.o.premium_rate, self.o.standard_rate, self.o.short_code, self.o.carrier_specific, self.o.emergency) # Build the possible length information for general_desc based on all the different types of number. possible_lengths = set() local_lengths = set() for desc in sub_descs: if desc is None: continue if desc.possible_length is not None: possible_lengths.update(desc.possible_length) if desc.possible_length_local_only is not None: local_lengths.update(desc.possible_length_local_only) self.o.general_desc.possible_length = sorted(list(possible_lengths)) # Check that the local-only length isn't also a normal possible length (for # the general-desc) before adding it to the collection of possible local-only lengths. self.o.general_desc.possible_length_local_only = sorted(list(local_lengths - possible_lengths)) if -1 in self.o.general_desc.possible_length: raise Exception("Found -1 length in general_desc.possible_length") if -1 in self.o.general_desc.possible_length_local_only: raise Exception("Found -1 length in general_desc.possible_length_local_only") # Now that the union of length information is available, trickle it back down to those types # of number that didn't specify any length information (indicated by having those fields set # to None). But only if they're non for desc in all_descs: if desc is None: continue if desc.national_number_pattern is None: desc.possible_length = [] desc.possible_length_local_only = [] continue if desc.possible_length is None: desc.possible_length = copy.copy(self.o.general_desc.possible_length) if desc.possible_length_local_only is None: desc.possible_length_local_only = copy.copy(self.o.general_desc.o.possible_length_local_only) # Look for available formats self.has_explicit_intl_format = False formats = _get_unique_child(xterritory, "availableFormats") if formats is not None: for xelt in formats.findall("numberFormat"): # Create an XNumberFormat object, which contains a NumberFormat object # or two, and which self-registers them with self.o XNumberFormat(self, xelt, self.o.national_prefix, national_prefix_formatting_rule, national_prefix_optional_when_formatting, carrier_code_formatting_rule) if len(self.o.number_format) == 0: raise Exception("No number formats found in available formats") if not self.has_explicit_intl_format: # Only a small number of regions need to specify the intlFormats # in the XML. For the majority of countries the intlNumberFormat # metadata is an exact copy of the national NumberFormat metadata. # To minimize the size of the metadata file, we only keep # intlNumberFormats that actually differ in some way to the # national formats. self.o.intl_number_format = []
PHONE_METADATA_BS = PhoneMetadata( id='BS', country_code=1, international_prefix='011', general_desc=PhoneNumberDesc( national_number_pattern='(242|8(00|66|77|88)|900)\\d{7}', possible_number_pattern='\\d{7,10}'), fixed_line=PhoneNumberDesc( national_number_pattern= '242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3-57]|9[2-5])|4(?:2[237]|51|64|77)|502|636|702)\\d{4}', possible_number_pattern='\\d{7,10}'), mobile=PhoneNumberDesc( national_number_pattern='242(357|359|457|557)\\d{4}', possible_number_pattern='\\d{10}'), toll_free=PhoneNumberDesc(national_number_pattern='8(00|66|77|88)\\d{7}', possible_number_pattern='\\d{10}'), premium_rate=PhoneNumberDesc(national_number_pattern='900\\d{7}', possible_number_pattern='\\d{10}'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), national_prefix='1', national_prefix_for_parsing='1')
"""Auto-generated file, do not edit by hand. CX metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_CX = PhoneMetadata( id='CX', country_code=61, international_prefix='00', general_desc=PhoneNumberDesc(), fixed_line=PhoneNumberDesc(), mobile=PhoneNumberDesc(), toll_free=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), premium_rate=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'))
def __init__(self, xterritory): # Retrieve the REQUIRED attributes id = xterritory.attrib['id'] self.o = PhoneMetadata(id, register=False) self.o.country_code = int(xterritory.attrib['countryCode']) self.o.international_prefix = xterritory.attrib['internationalPrefix'] # Retrieve the IMPLIED attributes self.o.leading_digits = xterritory.get('leadingDigits', None) self.o.preferred_international_prefix = xterritory.get('preferredInternationalPrefix', None) self.o.national_prefix = xterritory.get('nationalPrefix', None) self.o.national_prefix_for_parsing = xterritory.get('nationalPrefixForParsing', None) self.o.national_prefix_transform_rule = xterritory.get('nationalPrefixTransformRule', None) if self.o.national_prefix_transform_rule is not None: # Replace '$1' etc with '\1' to match Python regexp group reference format self.o.national_prefix_transform_rule = re.sub('\$', r'\\', self.o.national_prefix_transform_rule) self.o.preferred_extn_prefix = xterritory.get('preferredExtnPrefix', None) national_prefix_formatting_rule = xterritory.get('nationalPrefixFormattingRule', None) carrier_code_formatting_rule = xterritory.get('carrierCodeFormattingRule', None) # Post-processing for the territory-default formatting rules. These are used # in NumberFormat elements that don't supply their own formatting rules. if self.o.national_prefix is not None: if self.o.national_prefix_for_parsing is None: # Default to self.national_prefix when national_prefix_for_parsing not set self.o.national_prefix_for_parsing = self.o.national_prefix national_prefix_formatting_rule = _expand_formatting_rule(national_prefix_formatting_rule, self.o.national_prefix) carrier_code_formatting_rule = _expand_formatting_rule(carrier_code_formatting_rule, self.o.national_prefix) if 'mainCountryForCode' in xterritory.attrib: if xterritory.attrib['mainCountryForCode'] != 'true': raise Exception("Unexpected value for mainCountryForCode attribute") self.o.main_country_for_code = True else: self.o.main_country_for_code = False if 'leadingZeroPossible' in xterritory.attrib: if xterritory.attrib['leadingZeroPossible'] != 'true': raise Exception("Unexpected value for leadingZeroPossible attribute") self.o.leading_zero_possible = True else: self.o.leading_zero_possible = False # Retrieve the various PhoneNumberDesc elements. The general_desc is # first and most important; it will be used to fill out missing fields in # many of the other PhoneNumberDesc elements. self.o.general_desc = XPhoneNumberDesc(_get_unique_child(xterritory, 'generalDesc'), fill_na=False) self.o.no_international_dialling = XPhoneNumberDesc(_get_unique_child(xterritory, 'noInternationalDialling'), template=self.o.general_desc.o) self.o.area_code_optional = XPhoneNumberDesc(_get_unique_child(xterritory, 'areaCodeOptional'), template=self.o.general_desc.o) self.o.fixed_line = XPhoneNumberDesc(_get_unique_child(xterritory, 'fixedLine'), template=self.o.general_desc.o, fill_na=False) self.o.mobile = XPhoneNumberDesc(_get_unique_child(xterritory, 'mobile'), template=self.o.general_desc.o, fill_na=False) self.o.pager = XPhoneNumberDesc(_get_unique_child(xterritory, 'pager'), template=self.o.general_desc.o) self.o.toll_free = XPhoneNumberDesc(_get_unique_child(xterritory, 'tollFree'), template=self.o.general_desc.o) self.o.premium_rate = XPhoneNumberDesc(_get_unique_child(xterritory, 'premiumRate'), template=self.o.general_desc.o) self.o.shared_cost = XPhoneNumberDesc(_get_unique_child(xterritory, 'sharedCost'), template=self.o.general_desc.o) self.o.personal_number = XPhoneNumberDesc(_get_unique_child(xterritory, 'personalNumber'), template=self.o.general_desc.o) self.o.voip = XPhoneNumberDesc(_get_unique_child(xterritory, 'voip'), template=self.o.general_desc.o) self.o.uan = XPhoneNumberDesc(_get_unique_child(xterritory, 'uan'), template=self.o.general_desc.o) self.o.short_code = XPhoneNumberDesc(_get_unique_child(xterritory, 'shortCode'), template=self.o.general_desc.o) # Look for available formats formats = _get_unique_child(xterritory, "availableFormats") self.o.number_formats = [] self.o.intl_number_formats = [] if formats is not None: self.o.number_format = _get_number_formats(formats, "numberFormat", True, self.o.national_prefix, national_prefix_formatting_rule, carrier_code_formatting_rule) self.o.intl_number_format = _get_number_formats(formats, "intlNumberFormat", False, self.o.national_prefix, national_prefix_formatting_rule, carrier_code_formatting_rule) if len(self.o.number_format) == 0: raise Exception("No number formats found in available formats")
PHONE_METADATA_SG = PhoneMetadata( id='SG', country_code=65, international_prefix='0[0-3][0-9]', general_desc=PhoneNumberDesc(national_number_pattern='[13689]\\d{7,10}', possible_number_pattern='\\d{8}|\\d{10,11}', possible_length=(8, 10, 11)), fixed_line=PhoneNumberDesc(national_number_pattern='[36]\\d{7}', possible_number_pattern='\\d{8}', possible_length=(8, )), mobile=PhoneNumberDesc(national_number_pattern='[89]\\d{7}', possible_number_pattern='\\d{8}', possible_length=(8, )), toll_free=PhoneNumberDesc(national_number_pattern='1?800\\d{7}', possible_number_pattern='\\d{10,11}', possible_length=(10, 11)), premium_rate=PhoneNumberDesc(national_number_pattern='1900\\d{7}', possible_number_pattern='\\d{11}', possible_length=(11, )), shared_cost=PhoneNumberDesc(), personal_number=PhoneNumberDesc(), voip=PhoneNumberDesc(), pager=PhoneNumberDesc(), uan=PhoneNumberDesc(), voicemail=PhoneNumberDesc(), no_international_dialling=PhoneNumberDesc(), national_prefix_for_parsing='777777', number_format=[ NumberFormat(pattern='(\\d{4})(\\d{4})', format='\\1 \\2', leading_digits_pattern=['[369]|8[1-9]']), NumberFormat(pattern='(\\d{4})(\\d{3})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['1[89]']), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['800']) ])
PHONE_METADATA_AU = PhoneMetadata( id='AU', country_code=61, international_prefix='001[12]', general_desc=PhoneNumberDesc(national_number_pattern='[1-578]\\d{4,14}', possible_length=(9, 10)), fixed_line=PhoneNumberDesc(national_number_pattern='[2378]\\d{8}', example_number='212345678', possible_length=(9, )), mobile=PhoneNumberDesc(national_number_pattern='4\\d{8}', example_number='412345678', possible_length=(9, )), toll_free=PhoneNumberDesc(national_number_pattern='1800\\d{6}', example_number='1800123456', possible_length=(10, )), premium_rate=PhoneNumberDesc(national_number_pattern='190[0126]\\d{6}', example_number='1900123456', possible_length=(10, )), preferred_international_prefix='0011', national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{4})(\\d{3})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['1'], national_prefix_formatting_rule='\\1'), NumberFormat(pattern='(\\d)(\\d{4})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['[2-478]'], national_prefix_formatting_rule='0\\1') ])
PHONE_METADATA_800 = PhoneMetadata( id='001', country_code=800, international_prefix=None, general_desc=PhoneNumberDesc(national_number_pattern='\\d{8}', possible_number_pattern='\\d{8}', example_number='12345678'), fixed_line=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA', example_number='12345678'), mobile=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA', example_number='12345678'), toll_free=PhoneNumberDesc(national_number_pattern='\\d{8}', possible_number_pattern='\\d{8}', example_number='12345678'), premium_rate=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), emergency=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), number_format=[ NumberFormat(pattern='(\\d{4})(\\d{4})', format=u'\\1 \\2') ], leading_zero_possible=True)
PHONE_METADATA_GB = PhoneMetadata( id='GB', country_code=44, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='\\d{10}', possible_number_pattern='\\d{6,10}'), fixed_line=PhoneNumberDesc(national_number_pattern='[1-6]\\d{9}', possible_number_pattern='\\d{6,10}'), mobile=PhoneNumberDesc(national_number_pattern='7[1-57-9]\\d{8}', possible_number_pattern='\\d{10}'), toll_free=PhoneNumberDesc(national_number_pattern='80\\d{8}', possible_number_pattern='\\d{10}'), premium_rate=PhoneNumberDesc(national_number_pattern='9[018]\\d{8}', possible_number_pattern='\\d{10}'), shared_cost=PhoneNumberDesc( national_number_pattern='8(?:4[3-5]|7[0-2])\\d{7}', possible_number_pattern='\\d{10}'), personal_number=PhoneNumberDesc(national_number_pattern='70\\d{8}', possible_number_pattern='\\d{10}'), voip=PhoneNumberDesc(national_number_pattern='56\\d{8}', possible_number_pattern='\\d{10}'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), emergency=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['[1-59]|[78]0'], national_prefix_formatting_rule=u'(0\\1)'), NumberFormat(pattern='(\\d)(\\d{3})(\\d{3})(\\d{3})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['6'], national_prefix_formatting_rule=u'(0\\1)'), NumberFormat(pattern='(\\d{4})(\\d{3})(\\d{3})', format=u'\\1 \\2 \\3', leading_digits_pattern=['7[1-57-9]'], national_prefix_formatting_rule=u'(0\\1)'), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['8[47]'], national_prefix_formatting_rule=u'(0\\1)') ])
"""Auto-generated file, do not edit by hand. 800 metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_800 = PhoneMetadata( id='001', country_code=800, international_prefix=None, general_desc=PhoneNumberDesc(national_number_pattern='\\d{8}', possible_length=(8, )), toll_free=PhoneNumberDesc(national_number_pattern='\\d{8}', example_number='12345678', possible_length=(8, )), number_format=[NumberFormat(pattern='(\\d{4})(\\d{4})', format='\\1 \\2')], leading_zero_possible=True)
"""Auto-generated file, do not edit by hand. RE metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_RE = PhoneMetadata(id='RE', country_code=262, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='[268]\\d{8}', possible_number_pattern='\\d{9}'), fixed_line=PhoneNumberDesc(national_number_pattern='262\\d{6}', possible_number_pattern='\\d{9}', example_number='262161234'), mobile=PhoneNumberDesc(national_number_pattern='6(?:9[23]|47)\\d{6}', possible_number_pattern='\\d{9}', example_number='692123456'), toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}', possible_number_pattern='\\d{9}', example_number='801234567'), premium_rate=PhoneNumberDesc(national_number_pattern='8(?:1[01]|2[0156]|84|9[0-37-9])\\d{6}', possible_number_pattern='\\d{9}', example_number='810123456'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), national_prefix='0', national_prefix_for_parsing='0', number_format=[NumberFormat(pattern='([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})', format=u'\\1 \\2 \\3 \\4', national_prefix_formatting_rule=u'0\\1')], leading_digits='262|6(?:9[23]|47)|8')
"""Auto-generated file, do not edit by hand. BB metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_BB = PhoneMetadata( id='BB', country_code=1, international_prefix='011', general_desc=PhoneNumberDesc(national_number_pattern='246\\d{7}', possible_length=(10, ), possible_length_local_only=(7, )), fixed_line=PhoneNumberDesc(example_number='2464567890'))
PHONE_METADATA_CN = PhoneMetadata( id='CN', country_code=86, international_prefix='00', general_desc=PhoneNumberDesc( national_number_pattern='[1-7]\\d{6,11}|8[0-357-9]\\d{6,9}|9\\d{7,10}', possible_number_pattern='\\d{4,12}', possible_length=(11, )), fixed_line=PhoneNumberDesc(national_number_pattern='[2-9]\\d{10}', possible_number_pattern='\\d{11}', example_number='91234567', possible_length=(11, )), mobile=PhoneNumberDesc( national_number_pattern='1(?:[38]\\d|4[57]|5[0-35-9]|7[0136-8])\\d{8}', possible_number_pattern='\\d{11}', example_number='13123456789', possible_length=(11, )), toll_free=PhoneNumberDesc(), premium_rate=PhoneNumberDesc(), shared_cost=PhoneNumberDesc(), personal_number=PhoneNumberDesc(), voip=PhoneNumberDesc(), pager=PhoneNumberDesc(), uan=PhoneNumberDesc(), voicemail=PhoneNumberDesc(), no_international_dialling=PhoneNumberDesc(), national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{3})(\\d{5,6})', format='\\1 \\2', leading_digits_pattern=[ '[3-9]', '[3-9]\\d{2}[19]', '[3-9]\\d{2}(?:10|95)' ], national_prefix_formatting_rule='0\\1', domestic_carrier_code_formatting_rule='$CC \\1'), NumberFormat(pattern='(\\d{3})(\\d{8})', format='\\1 \\2', leading_digits_pattern=['1'], national_prefix_formatting_rule='\\1') ])
PHONE_METADATA_KR = PhoneMetadata( id='KR', country_code=82, international_prefix='00(?:[124-68]|[37]\\d{2})', general_desc=PhoneNumberDesc( national_number_pattern='[1-7]\\d{3,9}|8\\d{8}', possible_length=(4, 5, 6, 7, 8, 9, 10)), fixed_line=PhoneNumberDesc( national_number_pattern= '(?:2|[34][1-3]|5[1-5]|6[1-4])(?:1\\d{2,3}|[2-9]\\d{6,7})', example_number='22123456', possible_length=(4, 5, 6, 7, 8, 9, 10)), mobile=PhoneNumberDesc(national_number_pattern='1[0-25-9]\\d{7,8}', example_number='1023456789', possible_length=(9, 10)), toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}', example_number='801234567', possible_length=(9, )), premium_rate=PhoneNumberDesc(national_number_pattern='60[2-9]\\d{6}', example_number='602345678', possible_length=(9, )), personal_number=PhoneNumberDesc(national_number_pattern='50\\d{8}', example_number='5012345678', possible_length=(10, )), voip=PhoneNumberDesc(national_number_pattern='70\\d{8}', example_number='7012345678', possible_length=(10, )), national_prefix='0', national_prefix_for_parsing='0(8[1-46-8]|85\\d{2})?', number_format=[ NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=[ '1(?:0|1[19]|[69]9|5[458])|[57]0', '1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0' ], national_prefix_formatting_rule='0\\1'), NumberFormat( pattern='(\\d{2})(\\d{3})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=[ '1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][2-9]', '1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-6][1-9][2-9]' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d)(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=['131', '1312'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=['131', '131[13-9]'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=['13[2-9]'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{3})(\\d{4})', format='\\1-\\2-\\3-\\4', leading_digits_pattern=['30'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d)(\\d{4})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=[ '2(?:[26]|3[0-467])', '2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))' ], national_prefix_formatting_rule='0\\1'), NumberFormat( pattern='(\\d)(\\d{3})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=[ '2(?:3[0-35-9]|[457-9])', '2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d)(\\d{3})', format='\\1-\\2', leading_digits_pattern=[ '21[0-46-9]', '21(?:[0-247-9]|3[124]|6[1269])' ], national_prefix_formatting_rule='0\\1'), NumberFormat( pattern='(\\d)(\\d{4})', format='\\1-\\2', leading_digits_pattern=['21[36]', '21(?:3[035-9]|6[03-578])'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{2})(\\d{3})', format='\\1-\\2', leading_digits_pattern=[ '[3-6][1-9]1', '[3-6][1-9]1(?:[0-46-9])', '[3-6][1-9]1(?:[0-247-9]|3[124]|6[1269])' ], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{2})(\\d{4})', format='\\1-\\2', leading_digits_pattern=[ '[3-6][1-9]1', '[3-6][1-9]1[36]', '[3-6][1-9]1(?:3[035-9]|6[03-578])' ], national_prefix_formatting_rule='0\\1') ])
PHONE_METADATA_NZ = PhoneMetadata( id='NZ', country_code=64, international_prefix='00', general_desc=PhoneNumberDesc( national_number_pattern='[289]\\d{7,9}|[3-7]\\d{7}', possible_length=(7, 8, 9, 10)), fixed_line=PhoneNumberDesc( national_number_pattern= '24099\\d{3}|(?:3[2-79]|[479][2-689]|6[235-9])\\d{6}', example_number='24099123', possible_length=(7, 8)), mobile=PhoneNumberDesc( national_number_pattern= '2(?:[027]\\d{7}|9\\d{6,7}|1(?:0\\d{5,7}|[12]\\d{5,6}|[3-9]\\d{5})|4[1-9]\\d{6}|8\\d{7,8})', example_number='201234567', possible_length=(8, 9, 10)), toll_free=PhoneNumberDesc(national_number_pattern='800\\d{6,7}', example_number='8001234567', possible_length=(9, 10)), premium_rate=PhoneNumberDesc(national_number_pattern='900\\d{6,7}', example_number='9001234567', possible_length=(9, 10)), national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d)(\\d{3})(\\d{4})', format='\\1-\\2 \\3', leading_digits_pattern=['24|[34679]'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d)(\\d{3})(\\d{3,5})', format='\\1-\\2 \\3', leading_digits_pattern=['2[179]'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{3,4})', format='\\1 \\2 \\3', leading_digits_pattern=['[89]'], national_prefix_formatting_rule='0\\1') ])
PHONE_METADATA_AU = PhoneMetadata( id='AU', country_code=61, international_prefix='001[12]', general_desc=PhoneNumberDesc(national_number_pattern='[1-578]\\d{4,14}', possible_number_pattern='\\d{5,15}', possible_length=(9, 10)), fixed_line=PhoneNumberDesc(national_number_pattern='[2378]\\d{8}', possible_number_pattern='\\d{9}', possible_length=(9, )), mobile=PhoneNumberDesc(national_number_pattern='4\\d{8}', possible_number_pattern='\\d{9}', possible_length=(9, )), toll_free=PhoneNumberDesc(national_number_pattern='1800\\d{6}', possible_number_pattern='\\d{10}', possible_length=(10, )), premium_rate=PhoneNumberDesc(national_number_pattern='190[0126]\\d{6}', possible_number_pattern='\\d{10}', possible_length=(10, )), shared_cost=PhoneNumberDesc(), personal_number=PhoneNumberDesc(), voip=PhoneNumberDesc(), pager=PhoneNumberDesc(), uan=PhoneNumberDesc(), voicemail=PhoneNumberDesc(), no_international_dialling=PhoneNumberDesc(), preferred_international_prefix='0011', national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{4})(\\d{3})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['1'], national_prefix_formatting_rule='\\1'), NumberFormat(pattern='(\\d{1})(\\d{4})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['[2-478]'], national_prefix_formatting_rule='0\\1') ])
"""Auto-generated file, do not edit by hand. FR metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_FR = PhoneMetadata(id='FR', country_code=33, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='3\\d{6}', possible_number_pattern='\\d{7}'), fixed_line=PhoneNumberDesc(national_number_pattern='3\\d{6}', possible_number_pattern='\\d{7}'), mobile=PhoneNumberDesc(national_number_pattern='3\\d{6}', possible_number_pattern='\\d{7}'), toll_free=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), premium_rate=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), national_prefix='0', national_prefix_for_parsing='0', number_format=[NumberFormat(pattern='(\\d)(\\d{2})(\\d{2})(\\d{2})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['3'], national_prefix_formatting_rule='0\\1')])
"""Auto-generated file, do not edit by hand. BR metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_BR = PhoneMetadata( id='BR', country_code=55, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='\\d{8,10}', possible_length=(10, ), possible_length_local_only=(8, )), fixed_line=PhoneNumberDesc(national_number_pattern='\\d{8,10}', example_number='12345678', possible_length=(10, ), possible_length_local_only=(8, )))
"""Auto-generated file, do not edit by hand. AD metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_AD = PhoneMetadata( id='AD', country_code=376, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='\\d{6}', possible_number_pattern='\\d{6}', possible_length=(6, )), fixed_line=PhoneNumberDesc(national_number_pattern='\\d{6}', possible_length=(6, )), mobile=PhoneNumberDesc(), toll_free=PhoneNumberDesc(), premium_rate=PhoneNumberDesc(), shared_cost=PhoneNumberDesc(), personal_number=PhoneNumberDesc(), voip=PhoneNumberDesc(), pager=PhoneNumberDesc(), uan=PhoneNumberDesc(), voicemail=PhoneNumberDesc(), no_international_dialling=PhoneNumberDesc())
PHONE_METADATA_979 = PhoneMetadata( id='001', country_code=979, international_prefix=None, general_desc=PhoneNumberDesc(national_number_pattern='\\d{9}', possible_number_pattern='\\d{9}', example_number='123456789', possible_length=(9, )), fixed_line=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA', example_number='123456789'), mobile=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA', example_number='123456789'), toll_free=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), premium_rate=PhoneNumberDesc(national_number_pattern='\\d{9}', possible_number_pattern='\\d{9}', example_number='123456789', possible_length=(9, )), shared_cost=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), personal_number=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voip=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), pager=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), uan=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), voicemail=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), no_international_dialling=PhoneNumberDesc(national_number_pattern='NA', possible_number_pattern='NA'), number_format=[ NumberFormat(pattern='(\\d)(\\d{4})(\\d{4})', format='\\1 \\2 \\3') ])
"""Auto-generated file, do not edit by hand. CO metadata""" from phonenumbers.phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_CO = PhoneMetadata(id='CO', country_code=57, international_prefix=None, general_desc=PhoneNumberDesc(national_number_pattern='(?:60|3\\d)\\d{8}', possible_length=(10,)), fixed_line=PhoneNumberDesc(national_number_pattern='60\\d{8}', example_number='6012345678', possible_length=(10,)), mobile=PhoneNumberDesc(national_number_pattern='3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}', example_number='3211234567', possible_length=(10,)), national_prefix='0', national_prefix_for_parsing='0(4(?:[14]4|56)|[579])?', number_format=[NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['6'], national_prefix_formatting_rule='(\\1)', domestic_carrier_code_formatting_rule='0$CC \\1'), NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['3'], domestic_carrier_code_formatting_rule='0$CC \\1')], mobile_number_portable_region=True)
PHONE_METADATA_PL = PhoneMetadata( id='PL', country_code=48, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='[1-9]\\d{8}', possible_number_pattern='\\d{9}', possible_length=(9, )), fixed_line=PhoneNumberDesc(), mobile=PhoneNumberDesc( national_number_pattern='(?:5[01]|6[069]|7[289]|88)\\d{7}', possible_length=(9, )), toll_free=PhoneNumberDesc(national_number_pattern='800\\d{6}', possible_number_pattern='\\d{9}', possible_length=(9, )), premium_rate=PhoneNumberDesc(national_number_pattern='70\\d{7}', possible_number_pattern='\\d{9}', possible_length=(9, )), shared_cost=PhoneNumberDesc(), personal_number=PhoneNumberDesc(), voip=PhoneNumberDesc(), pager=PhoneNumberDesc(), uan=PhoneNumberDesc(), voicemail=PhoneNumberDesc(), no_international_dialling=PhoneNumberDesc(), national_prefix='0', national_prefix_for_parsing='0', number_format=[ NumberFormat(pattern='(\\d{2})(\\d{3})(\\d{2})(\\d{2})', format='\\1 \\2 \\3 \\4', national_prefix_formatting_rule='0\\1') ])
# distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from phonenumbers.phonemetadata import PhoneMetadata _AVAILABLE_REGION_CODES = ['AD','AE','AO','AR','AU','BB','BR','BS','BY','CA','CC','CN','CX','DE','FR','GB','GG','HU','IT','JP','KR','MX','NZ','PL','RE','SE','SG','US','YT'] _AVAILABLE_NONGEO_COUNTRY_CODES = [800, 979] def _load_region(code): __import__("region_%s" % code, globals(), locals(), fromlist=["PHONE_METADATA_%s" % code], level=1) for region_code in _AVAILABLE_REGION_CODES: PhoneMetadata.register_region_loader(region_code, _load_region) for country_code in _AVAILABLE_NONGEO_COUNTRY_CODES: PhoneMetadata.register_nongeo_region_loader(country_code, _load_region) # A mapping from a country code to the region codes which # denote the country/region represented by that country code. # In the case of multiple countries sharing a calling code, # such as the NANPA countries, the one indicated with # "main_country_for_code" in the metadata should be first. _COUNTRY_CODE_TO_REGION_CODE = { 1: ("US", "BB", "BS", "CA",), 33: ("FR",), 36: ("HU",),