Example #1
0
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])'
                     ])
    ])
Example #2
0
"""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)
Example #3
0
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'))
Example #5
0
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)
Example #6
0
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')
    ])
Example #8
0
    '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",
Example #9
0
"""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 = []
Example #11
0
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')
Example #12
0
"""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'))
Example #13
0
    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")
Example #14
0
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'])
    ])
Example #15
0
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')
    ])
Example #16
0
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)
Example #17
0
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)')
    ])
Example #18
0
"""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)
Example #19
0
"""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')
Example #20
0
"""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'))
Example #21
0
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')
    ])
Example #22
0
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')
    ])
Example #23
0
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')
    ])
Example #24
0
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')
    ])
Example #25
0
"""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')])
Example #26
0
"""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, )))
Example #27
0
"""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())
Example #28
0
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)
Example #30
0
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')
    ])
Example #31
0
# 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",),