diff --git a/python/phonenumbers/carrierdata/data0.py b/python/phonenumbers/carrierdata/data0.py index 62972d59..b8402f32 100644 --- a/python/phonenumbers/carrierdata/data0.py +++ b/python/phonenumbers/carrierdata/data0.py @@ -3215,6 +3215,7 @@ '3728285':{'en': 'Tele 2'}, '3728286':{'en': 'Tele 2'}, '3728287':{'en': 'Tele 2'}, + '372829':{'en': 'Tele 2'}, '37283':{'en': 'Tele 2'}, '37284':{'en': 'Tele 2'}, '37284510':{'en': 'Telia Eesti AS'}, @@ -10018,5 +10019,4 @@ '552899994':{'en': 'Vivo'}, '552899995':{'en': 'Vivo'}, '552899996':{'en': 'Vivo'}, - '552899997':{'en': 'Vivo'}, } diff --git a/python/phonenumbers/carrierdata/data1.py b/python/phonenumbers/carrierdata/data1.py index e45bf741..a19d5bf0 100644 --- a/python/phonenumbers/carrierdata/data1.py +++ b/python/phonenumbers/carrierdata/data1.py @@ -19,6 +19,7 @@ # limitations under the License. data = { + '552899997':{'en': 'Vivo'}, '552899998':{'en': 'Vivo'}, '55319820':{'en': 'Claro'}, '55319821':{'en': 'Claro'}, @@ -10018,5 +10019,4 @@ '569936':{'en': 'Movistar'}, '569937':{'en': 'Movistar'}, '5699380':{'en': 'Movistar'}, - '5699381':{'en': 'Movistar'}, } diff --git a/python/phonenumbers/carrierdata/data2.py b/python/phonenumbers/carrierdata/data2.py index 11217eae..9706c597 100644 --- a/python/phonenumbers/carrierdata/data2.py +++ b/python/phonenumbers/carrierdata/data2.py @@ -19,6 +19,7 @@ # limitations under the License. data = { + '5699381':{'en': 'Movistar'}, '5699382':{'en': 'Entel'}, '5699383':{'en': 'Entel'}, '5699385':{'en': 'Claro'}, @@ -669,7 +670,7 @@ '59669689':{'en': 'SFR/Rife'}, '5966969':{'en': 'Digicel'}, '59669699':{'en': 'Orange'}, - '596697':{'en': 'Digicel'}, + '59669727':{'en': 'Digicel'}, '59771':{'en': 'Digicel'}, '59772':{'en': 'Digicel'}, '59774':{'en': 'Digicel'}, @@ -1678,10 +1679,10 @@ '658947':{'en': 'Simba'}, '658948':{'en': 'Simba'}, '658949':{'en': 'M1'}, + '65895':{'en': 'Simba'}, '658950':{'en': 'M1'}, '658951':{'en': 'M1'}, '658952':{'en': 'M1'}, - '658953':{'en': 'Simba'}, '65896':{'en': 'Simba'}, '659001':{'en': 'StarHub'}, '659002':{'en': 'StarHub'}, @@ -8703,6 +8704,7 @@ '99210':{'en': 'O-Mobile'}, '99211':{'en': 'Tcell'}, '99217':{'en': 'Babilon-M'}, + '99218':{'en': 'ZET-MOBILE'}, '9922':{'en': 'O-Mobile'}, '99230':{'en': 'O-Mobile'}, '992330':{'en': 'ZET-MOBILE'}, diff --git a/python/phonenumbers/data/region_CO.py b/python/phonenumbers/data/region_CO.py index 680c6482..4d368edb 100644 --- a/python/phonenumbers/data/region_CO.py +++ b/python/phonenumbers/data/region_CO.py @@ -2,17 +2,19 @@ from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_CO = PhoneMetadata(id='CO', country_code=57, international_prefix='00(?:4(?:[14]4|56)|[579])', - general_desc=PhoneNumberDesc(national_number_pattern='60\\d{8}|(?:1\\d|[39])\\d{9}', possible_length=(10, 11), possible_length_local_only=(7,)), - fixed_line=PhoneNumberDesc(national_number_pattern='601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|60(?:[124-7][2-9]|8[1-9])\\d{6}', example_number='6012345678', possible_length=(10,), possible_length_local_only=(7,)), + general_desc=PhoneNumberDesc(national_number_pattern='(?:46|60\\d\\d)\\d{6}|(?:1\\d|[39])\\d{9}', possible_length=(8, 10, 11), possible_length_local_only=(4, 7)), + fixed_line=PhoneNumberDesc(national_number_pattern='601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|(?:46|60(?:[124-7][2-9]|8[1-9]))\\d{6}', example_number='6012345678', possible_length=(8, 10), possible_length_local_only=(4, 7)), mobile=PhoneNumberDesc(national_number_pattern='333301[0-5]\\d{3}|3333(?:00|2[5-9]|[3-9]\\d)\\d{4}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}', example_number='3211234567', possible_length=(10,)), toll_free=PhoneNumberDesc(national_number_pattern='1800\\d{7}', example_number='18001234567', possible_length=(11,)), premium_rate=PhoneNumberDesc(national_number_pattern='(?:19(?:0[01]|4[78])|901)\\d{7}', example_number='19001234567', possible_length=(10, 11)), national_prefix='0', national_prefix_for_parsing='0([3579]|4(?:[14]4|56))?', - number_format=[NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['6|90'], national_prefix_formatting_rule='(\\1)', domestic_carrier_code_formatting_rule='0$CC \\1'), + number_format=[NumberFormat(pattern='(\\d{4})(\\d{4})', format='\\1 \\2', leading_digits_pattern=['46']), + NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['6|90'], 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[0-357]|91'], domestic_carrier_code_formatting_rule='0$CC \\1'), NumberFormat(pattern='(\\d)(\\d{3})(\\d{7})', format='\\1-\\2-\\3', leading_digits_pattern=['1'], national_prefix_formatting_rule='0\\1')], - intl_number_format=[NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['6|90']), + intl_number_format=[NumberFormat(pattern='(\\d{4})(\\d{4})', format='\\1 \\2', leading_digits_pattern=['46']), + NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['6|90']), NumberFormat(pattern='(\\d{3})(\\d{7})', format='\\1 \\2', leading_digits_pattern=['3[0-357]|91']), NumberFormat(pattern='(\\d)(\\d{3})(\\d{7})', format='\\1 \\2 \\3', leading_digits_pattern=['1'])], mobile_number_portable_region=True) diff --git a/python/phonenumbers/data/region_EE.py b/python/phonenumbers/data/region_EE.py index b5062130..194e8ec3 100644 --- a/python/phonenumbers/data/region_EE.py +++ b/python/phonenumbers/data/region_EE.py @@ -4,7 +4,7 @@ PHONE_METADATA_EE = PhoneMetadata(id='EE', country_code=372, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}', possible_length=(7, 8, 10)), fixed_line=PhoneNumberDesc(national_number_pattern='(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}', example_number='3212345', possible_length=(7,)), - mobile=PhoneNumberDesc(national_number_pattern='(?:5\\d{5}|8(?:1(?:0(?:0(?:00|[178]\\d)|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:2[0-59]|[3-79]\\d)\\d)\\d)|2(?:0(?:0(?:00|4\\d)|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[0-79]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}', example_number='51234567', possible_length=(7, 8)), + mobile=PhoneNumberDesc(national_number_pattern='(?:5\\d{5}|8(?:1(?:0(?:0(?:00|[178]\\d)|[3-9]\\d\\d)|(?:1(?:0[2-6]|1\\d)|(?:2[0-59]|[3-79]\\d)\\d)\\d)|2(?:0(?:0(?:00|4\\d)|(?:19|[2-7]\\d)\\d)|(?:(?:[124-69]\\d|3[5-9])\\d|7(?:[0-79]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}', example_number='51234567', possible_length=(7, 8)), toll_free=PhoneNumberDesc(national_number_pattern='800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}', example_number='80012345', possible_length=(7, 8, 10)), premium_rate=PhoneNumberDesc(national_number_pattern='(?:40\\d\\d|900)\\d{4}', example_number='9001234', possible_length=(7, 8)), personal_number=PhoneNumberDesc(national_number_pattern='70[0-2]\\d{5}', example_number='70012345', possible_length=(8,)), diff --git a/python/phonenumbers/data/region_MG.py b/python/phonenumbers/data/region_MG.py index d70c4a5b..65563cfa 100644 --- a/python/phonenumbers/data/region_MG.py +++ b/python/phonenumbers/data/region_MG.py @@ -3,7 +3,7 @@ PHONE_METADATA_MG = PhoneMetadata(id='MG', country_code=261, international_prefix='00', general_desc=PhoneNumberDesc(national_number_pattern='[23]\\d{8}', possible_length=(9,), possible_length_local_only=(7,)), - fixed_line=PhoneNumberDesc(national_number_pattern='2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[356]|8[268]|9[245])\\d{5}', example_number='202123456', possible_length=(9,), possible_length_local_only=(7,)), + fixed_line=PhoneNumberDesc(national_number_pattern='2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[356]|8[268]|9[2457])\\d{5}', example_number='202123456', possible_length=(9,), possible_length_local_only=(7,)), mobile=PhoneNumberDesc(national_number_pattern='3[2-47-9]\\d{7}', example_number='321234567', possible_length=(9,)), voip=PhoneNumberDesc(national_number_pattern='22\\d{7}', example_number='221234567', possible_length=(9,)), national_prefix='0', diff --git a/python/phonenumbers/data/region_MQ.py b/python/phonenumbers/data/region_MQ.py index df5f56b2..420cbafb 100644 --- a/python/phonenumbers/data/region_MQ.py +++ b/python/phonenumbers/data/region_MQ.py @@ -2,13 +2,14 @@ from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_MQ = PhoneMetadata(id='MQ', country_code=596, international_prefix='00', - general_desc=PhoneNumberDesc(national_number_pattern='596\\d{6}|(?:69|80|9\\d)\\d{7}', possible_length=(9,)), - fixed_line=PhoneNumberDesc(national_number_pattern='596(?:[03-7]\\d|1[05]|2[7-9]|8[0-39]|9[04-9])\\d{4}', example_number='596301234', possible_length=(9,)), - mobile=PhoneNumberDesc(national_number_pattern='69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}', example_number='696201234', possible_length=(9,)), + general_desc=PhoneNumberDesc(national_number_pattern='596\\d{6}|(?:69|[89]\\d)\\d{7}', possible_length=(9,)), + fixed_line=PhoneNumberDesc(national_number_pattern='(?:596(?:[03-7]\\d|1[05]|2[7-9]|8[0-39]|9[04-9])|80[6-9]\\d\\d|9(?:477[6-9]|767[4589]))\\d{4}', example_number='596301234', possible_length=(9,)), + mobile=PhoneNumberDesc(national_number_pattern='69[67]\\d{6}', example_number='696201234', possible_length=(9,)), toll_free=PhoneNumberDesc(national_number_pattern='80[0-5]\\d{6}', example_number='800012345', possible_length=(9,)), + premium_rate=PhoneNumberDesc(national_number_pattern='8[129]\\d{7}', example_number='810123456', possible_length=(9,)), voip=PhoneNumberDesc(national_number_pattern='9(?:397[0-3]|477[0-5]|76(?:6\\d|7[0-367]))\\d{4}', example_number='976612345', possible_length=(9,)), national_prefix='0', national_prefix_for_parsing='0', - number_format=[NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{2})(\\d{2})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['[569]'], national_prefix_formatting_rule='0\\1'), + number_format=[NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{2})(\\d{2})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['[569]|8(?:0[6-9]|[36])'], national_prefix_formatting_rule='0\\1'), NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{2})(\\d{2})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['8'], national_prefix_formatting_rule='0\\1')], mobile_number_portable_region=True) diff --git a/python/phonenumbers/data/region_MV.py b/python/phonenumbers/data/region_MV.py index 9edbcb69..0a9cdc92 100644 --- a/python/phonenumbers/data/region_MV.py +++ b/python/phonenumbers/data/region_MV.py @@ -3,7 +3,7 @@ PHONE_METADATA_MV = PhoneMetadata(id='MV', country_code=960, international_prefix='0(?:0|19)', general_desc=PhoneNumberDesc(national_number_pattern='(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}', possible_length=(7, 10)), - fixed_line=PhoneNumberDesc(national_number_pattern='(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}', example_number='6701234', possible_length=(7,)), + fixed_line=PhoneNumberDesc(national_number_pattern='(?:3(?:0[0-4]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}', example_number='6701234', possible_length=(7,)), mobile=PhoneNumberDesc(national_number_pattern='(?:46[46]|[79]\\d\\d)\\d{4}', example_number='7712345', possible_length=(7,)), toll_free=PhoneNumberDesc(national_number_pattern='800\\d{7}', example_number='8001234567', possible_length=(10,)), premium_rate=PhoneNumberDesc(national_number_pattern='900\\d{7}', example_number='9001234567', possible_length=(10,)), diff --git a/python/phonenumbers/data/region_PM.py b/python/phonenumbers/data/region_PM.py index 24aa211c..f1c03be0 100644 --- a/python/phonenumbers/data/region_PM.py +++ b/python/phonenumbers/data/region_PM.py @@ -2,10 +2,11 @@ from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_PM = PhoneMetadata(id='PM', country_code=508, international_prefix='00', - general_desc=PhoneNumberDesc(national_number_pattern='[45]\\d{5}|(?:708|80\\d)\\d{6}', possible_length=(6, 9)), - fixed_line=PhoneNumberDesc(national_number_pattern='(?:4[1-35-7]|5[01])\\d{4}', example_number='430123', possible_length=(6,)), - mobile=PhoneNumberDesc(national_number_pattern='(?:4[02-4]|5[056]|708[45][0-5])\\d{4}', example_number='551234', possible_length=(6, 9)), + general_desc=PhoneNumberDesc(national_number_pattern='[45]\\d{5}|(?:708|8\\d\\d)\\d{6}', possible_length=(6, 9)), + fixed_line=PhoneNumberDesc(national_number_pattern='(?:4[1-35-9]|5[0-47-9]|80[6-9]\\d\\d)\\d{4}', example_number='430123', possible_length=(6, 9)), + mobile=PhoneNumberDesc(national_number_pattern='(?:4[02-489]|5[02-9]|708[45][0-5])\\d{4}', example_number='551234', possible_length=(6, 9)), toll_free=PhoneNumberDesc(national_number_pattern='80[0-5]\\d{6}', example_number='800012345', possible_length=(9,)), + premium_rate=PhoneNumberDesc(national_number_pattern='8[129]\\d{7}', example_number='810123456', possible_length=(9,)), national_prefix='0', national_prefix_for_parsing='0', number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{2})', format='\\1 \\2 \\3', leading_digits_pattern=['[45]'], national_prefix_formatting_rule='0\\1'), diff --git a/python/phonenumbers/data/region_SG.py b/python/phonenumbers/data/region_SG.py index 254b6365..cdf53414 100644 --- a/python/phonenumbers/data/region_SG.py +++ b/python/phonenumbers/data/region_SG.py @@ -4,7 +4,7 @@ PHONE_METADATA_SG = PhoneMetadata(id='SG', country_code=65, international_prefix='0[0-3]\\d', general_desc=PhoneNumberDesc(national_number_pattern='(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}', possible_length=(8, 10, 11)), fixed_line=PhoneNumberDesc(national_number_pattern='662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}', example_number='61234567', possible_length=(8,)), - mobile=PhoneNumberDesc(national_number_pattern='(?:8(?:0(?:[1-8]\\d|9[0-689])|[1-8]\\d\\d|9(?:[0-4]\\d|5[0-3]|6[0-2]))|9[0-8]\\d\\d)\\d{4}', example_number='81234567', possible_length=(8,)), + mobile=PhoneNumberDesc(national_number_pattern='8(?:09[0-689]|96[0-2])\\d{4}|(?:8(?:0[1-8]|[1-8]\\d|9[0-5])|9[0-8]\\d)\\d{5}', example_number='81234567', possible_length=(8,)), toll_free=PhoneNumberDesc(national_number_pattern='(?:18|8)00\\d{7}', example_number='18001234567', possible_length=(10, 11)), premium_rate=PhoneNumberDesc(national_number_pattern='1900\\d{7}', example_number='19001234567', possible_length=(11,)), voip=PhoneNumberDesc(national_number_pattern='(?:3[12]\\d|666)\\d{5}', example_number='31234567', possible_length=(8,)), diff --git a/python/phonenumbers/data/region_TJ.py b/python/phonenumbers/data/region_TJ.py index 2c9c3863..282c038d 100644 --- a/python/phonenumbers/data/region_TJ.py +++ b/python/phonenumbers/data/region_TJ.py @@ -4,7 +4,7 @@ PHONE_METADATA_TJ = PhoneMetadata(id='TJ', country_code=992, international_prefix='810', general_desc=PhoneNumberDesc(national_number_pattern='[0-57-9]\\d{8}', possible_length=(9,), possible_length_local_only=(3, 5, 6, 7)), fixed_line=PhoneNumberDesc(national_number_pattern='(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}', example_number='372123456', possible_length=(9,), possible_length_local_only=(3, 5, 6, 7)), - mobile=PhoneNumberDesc(national_number_pattern='(?:33[03-9]|4(?:1[18]|4[02-479])|81[1-9])\\d{6}|(?:[09]\\d|1[017]|2[02]|[34]0|5[05]|7[01578]|8[078])\\d{7}', example_number='917123456', possible_length=(9,)), + mobile=PhoneNumberDesc(national_number_pattern='(?:33[03-9]|4(?:1[18]|4[02-479])|81[1-9])\\d{6}|(?:[09]\\d|1[0178]|2[02]|[34]0|5[05]|7[01578]|8[078])\\d{7}', example_number='917123456', possible_length=(9,)), preferred_international_prefix='8~10', number_format=[NumberFormat(pattern='(\\d{6})(\\d)(\\d{2})', format='\\1 \\2 \\3', leading_digits_pattern=['331', '3317']), NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['44[02-479]|[34]7']), diff --git a/python/phonenumbers/geodata/data28.py b/python/phonenumbers/geodata/data28.py index 9049ed65..9fecca45 100644 --- a/python/phonenumbers/geodata/data28.py +++ b/python/phonenumbers/geodata/data28.py @@ -3061,6 +3061,7 @@ '960301':{'en': u('Mal\u00e9/Hulhul\u00e9/Aarah')}, '960302':{'en': u('Mal\u00e9 Region')}, '960303':{'en': u('Mal\u00e9 Region')}, + '960304':{'en': u('Mal\u00e9 Region')}, '960330':{'en': u('Mal\u00e9/Hulhul\u00e9/Aarah')}, '960331':{'en': u('Mal\u00e9/Hulhul\u00e9/Aarah')}, '960332':{'en': u('Mal\u00e9/Hulhul\u00e9/Aarah')}, diff --git a/python/phonenumbers/shortdata/region_MQ.py b/python/phonenumbers/shortdata/region_MQ.py index c770d5a9..c17dda85 100644 --- a/python/phonenumbers/shortdata/region_MQ.py +++ b/python/phonenumbers/shortdata/region_MQ.py @@ -2,8 +2,10 @@ from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_MQ = PhoneMetadata(id='MQ', country_code=None, international_prefix=None, - general_desc=PhoneNumberDesc(national_number_pattern='1\\d\\d?', possible_length=(2, 3)), - toll_free=PhoneNumberDesc(national_number_pattern='1(?:12|[578])', example_number='15', possible_length=(2, 3)), + general_desc=PhoneNumberDesc(national_number_pattern='[13]\\d(?:\\d(?:\\d(?:\\d{2})?)?)?', possible_length=(2, 3, 4, 6)), + toll_free=PhoneNumberDesc(national_number_pattern='1(?:12|[578])|3[01]\\d\\d', example_number='15', possible_length=(2, 3, 4)), + premium_rate=PhoneNumberDesc(national_number_pattern='3[2469]\\d\\d', example_number='3200', possible_length=(4,)), emergency=PhoneNumberDesc(national_number_pattern='1(?:12|[578])', example_number='15', possible_length=(2, 3)), - short_code=PhoneNumberDesc(national_number_pattern='1(?:12|[578])', example_number='15', possible_length=(2, 3)), + short_code=PhoneNumberDesc(national_number_pattern='1(?:12|[578])|(?:118[02-9]|3[0-2469])\\d\\d', example_number='15', possible_length=(2, 3, 4, 6)), + standard_rate=PhoneNumberDesc(national_number_pattern='118\\d{3}', example_number='118000', possible_length=(6,)), short_data=True) diff --git a/python/phonenumbers/shortdata/region_PM.py b/python/phonenumbers/shortdata/region_PM.py index ea829360..d5178362 100644 --- a/python/phonenumbers/shortdata/region_PM.py +++ b/python/phonenumbers/shortdata/region_PM.py @@ -2,9 +2,11 @@ from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata PHONE_METADATA_PM = PhoneMetadata(id='PM', country_code=None, international_prefix=None, - general_desc=PhoneNumberDesc(national_number_pattern='[13]\\d(?:\\d{2})?', possible_length=(2, 4)), - toll_free=PhoneNumberDesc(national_number_pattern='1[578]', example_number='15', possible_length=(2,)), + general_desc=PhoneNumberDesc(national_number_pattern='[13]\\d(?:\\d\\d(?:\\d{2})?)?', possible_length=(2, 4, 6)), + toll_free=PhoneNumberDesc(national_number_pattern='1[578]|3(?:0\\d|1[689])\\d', example_number='15', possible_length=(2, 4)), + premium_rate=PhoneNumberDesc(national_number_pattern='3[2469]\\d\\d', example_number='3200', possible_length=(4,)), emergency=PhoneNumberDesc(national_number_pattern='1[578]', example_number='15', possible_length=(2,)), - short_code=PhoneNumberDesc(national_number_pattern='1[578]|3103', example_number='15', possible_length=(2, 4)), + short_code=PhoneNumberDesc(national_number_pattern='1[578]|31(?:03|[689]\\d)|(?:118[02-9]|3[02469])\\d\\d', example_number='15', possible_length=(2, 4, 6)), + standard_rate=PhoneNumberDesc(national_number_pattern='118\\d{3}', example_number='118000', possible_length=(6,)), carrier_specific=PhoneNumberDesc(national_number_pattern='310\\d', example_number='3100', possible_length=(4,)), short_data=True)