Skip to content

Commit af03187

Browse files
committed
Merge upstream v3.3, SVN r171. Also reverts 5884943
1 parent 13c38f3 commit af03187

36 files changed

Lines changed: 618 additions & 218 deletions

python/HISTORY

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11

2+
=====================
3+
What's new in 3.2a1
4+
=====================
5+
6+
Merge up to upstream version 3.3, Subversion revision 171.
7+
28
=====================
39
What's new in 3.1a1
410
=====================

python/phonenumbers/asyoutypeformatter.py

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,30 @@
2828
from re_util import fullmatch
2929

3030
from phonemetadata import PhoneMetadata
31-
from phonenumberutil import _VALID_START_CHAR_PATTERN, _DIGIT_MAPPINGS, _PLUS_SIGN
31+
from phonenumberutil import _VALID_START_CHAR_PATTERN, _VALID_PUNCTUATION
32+
from phonenumberutil import _DIGIT_MAPPINGS, _PLUS_SIGN
3233
from phonenumberutil import _extract_country_code, region_code_for_country_code
3334

34-
_EMPTY_METADATA = PhoneMetadata(id="", international_prefix="NA", register=False)
35+
_EMPTY_METADATA = PhoneMetadata(id=u"", international_prefix=u"NA", register=False)
3536

3637
# A pattern that is used to match character classes in regular expressions. An
3738
# example of a character class is [1-4].
38-
_CHARACTER_CLASS_PATTERN = re.compile("\\[([^\\[\\]])*\\]")
39+
_CHARACTER_CLASS_PATTERN = re.compile(u"\\[([^\\[\\]])*\\]")
3940
# Any digit in a regular expression that actually denotes a digit. For
4041
# example, in the regular expression 80[0-2]\d{6,10}, the first 2 digits (8
4142
# and 0) are standalone digits, but the rest are not.
4243
# Two look-aheads are needed because the number following \\d could be a
4344
# two-digit number, since the phone number can be as long as 15 digits.
44-
_STANDALONE_DIGIT_PATTERN = re.compile("\\d(?=[^,}][^,}])")
45+
_STANDALONE_DIGIT_PATTERN = re.compile(u"\\d(?=[^,}][^,}])")
46+
47+
# A pattern that is used to determine if a number_format under
48+
# available_formats is eligible to be used by the AYTF. It is eligible when
49+
# the format element under number_format contains groups of the dollar sign
50+
# followed by a single digit, separated by valid phone number
51+
# punctuation. This prevents invalid punctuation (such as the star sign in
52+
# Israeli star numbers) getting into the output of the AYTF.
53+
_ELIGIBLE_FORMAT_PATTERN = re.compile(u"[" + _VALID_PUNCTUATION + u"]*" +
54+
u"(\\\\\\d" + u"[" + _VALID_PUNCTUATION + u"]*)+")
4555

4656
# This is the minimum length of national number accrued that is required to
4757
# trigger the formatter. The first element of the leadingDigitsPattern of each
@@ -96,9 +106,14 @@ def _get_available_formats(self, leading_three_digits):
96106
format_list = self._current_metadata.intl_number_format
97107
else:
98108
format_list = self._current_metadata.number_format
99-
self._possible_formats.extend(format_list)
109+
for this_format in format_list:
110+
if self._is_format_eligible(this_format.format):
111+
self._possible_formats.append(this_format)
100112
self._narrow_down_possible_formats(leading_three_digits)
101113

114+
def _is_format_eligible(self, format):
115+
return fullmatch(_ELIGIBLE_FORMAT_PATTERN, format)
116+
102117
def _narrow_down_possible_formats(self, leading_digits):
103118
index_of_leading_digits_pattern = len(leading_digits) - _MIN_LEADING_DIGITS_LENGTH
104119
ii = 0
@@ -138,7 +153,7 @@ def _create_formatting_template(self, num_format):
138153
return False
139154

140155
def _get_formatting_template(self, number_pattern, number_format):
141-
"""Gets a formatting template which could be used to efficiently
156+
"""Gets a formatting template which can be used to efficiently
142157
format a partial number where digits are added one by one."""
143158
# Create a phone number consisting only of the digit 9 that matches the
144159
# number_pattern by applying the pattern to the longest_phone_number string.
@@ -178,6 +193,7 @@ def _clear(self):
178193
self._possible_formats = []
179194

180195
def clear(self):
196+
"""Clears the internal state of the formatter, so it can be reused."""
181197
self._clear()
182198
if self._current_metadata != self._default_metadata:
183199
self._current_metadata = PhoneMetadata.region_metadata.get(self._default_country, _EMPTY_METADATA)
@@ -186,7 +202,7 @@ def input_digit(self, next_char, remember_position=False):
186202
"""Formats a phone number on-the-fly as each digit is entered.
187203
188204
If remember_position is set, remembers the position where next_char is
189-
inserted, so that it could be retrieved later by using
205+
inserted, so that it can be retrieved later by using
190206
get_remembered_position. The remembered position will be automatically
191207
adjusted if additional formatting characters are later
192208
inserted/removed in front of next_char.

python/phonenumbers/data/region_AM.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@
22
from phonenumbers import NumberFormat, PhoneNumberDesc, PhoneMetadata
33

44
PHONE_METADATA_AM = PhoneMetadata(id='AM', country_code=374, international_prefix='00',
5-
general_desc=PhoneNumberDesc(national_number_pattern=u'[1-37-9]\d{7}', possible_number_pattern=u'\d{5,8}'),
5+
general_desc=PhoneNumberDesc(national_number_pattern=u'[1-36-9]\d{7}', possible_number_pattern=u'\d{5,8}'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'(?:10\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\d{5}', possible_number_pattern=u'\d{5,8}', example_number=u'10123456'),
7-
mobile=PhoneNumberDesc(national_number_pattern=u'(?:77|9[1-469])\d{6}', possible_number_pattern=u'\d{8}', example_number=u'77123456'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'(?:77|9[1-46-9])\d{6}', possible_number_pattern=u'\d{8}', example_number=u'77123456'),
88
toll_free=PhoneNumberDesc(national_number_pattern=u'800\d{5}', possible_number_pattern=u'\d{8}', example_number=u'80012345'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'90[016]\d{5}', possible_number_pattern=u'\d{8}', example_number=u'90012345'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'80[1-4]\d{5}', possible_number_pattern=u'\d{8}', example_number=u'80112345'),
1111
personal_number=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
12-
voip=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
12+
voip=PhoneNumberDesc(national_number_pattern=u'6027\d{4}', possible_number_pattern=u'\d{8}', example_number=u'60271234'),
1313
pager=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1414
uan=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1515
no_international_dialling=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1616
national_prefix=u'0',
1717
national_prefix_for_parsing=u'0',
18-
number_format=[NumberFormat(pattern='(\d{2})(\d{6})', format=u'\\1 \\2', leading_digits_pattern=['[17]|9[1-469]'], national_prefix_formatting_rule=u'(0\\1)'),
18+
number_format=[NumberFormat(pattern='(\d{2})(\d{6})', format=u'\\1 \\2', leading_digits_pattern=['[17]|9[1-9]'], national_prefix_formatting_rule=u'(0\\1)'),
19+
NumberFormat(pattern='(\d{2})(\d{6})', format=u'\\1 \\2', leading_digits_pattern=['6'], national_prefix_formatting_rule=u'0\\1'),
1920
NumberFormat(pattern='(\d{3})(\d{5})', format=u'\\1 \\2', leading_digits_pattern=['[23]'], national_prefix_formatting_rule=u'(0\\1)'),
2021
NumberFormat(pattern='(\d{3})(\d{2})(\d{3})', format=u'\\1 \\2 \\3', leading_digits_pattern=['8|90'], national_prefix_formatting_rule=u'0 \\1')])

python/phonenumbers/data/region_AZ.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
from phonenumbers import NumberFormat, PhoneNumberDesc, PhoneMetadata
33

44
PHONE_METADATA_AZ = PhoneMetadata(id='AZ', country_code=994, international_prefix='00',
5-
general_desc=PhoneNumberDesc(national_number_pattern=u'[1-8]\d{7,8}', possible_number_pattern=u'\d{5,9}'),
5+
general_desc=PhoneNumberDesc(national_number_pattern=u'[1-9]\d{7,8}', possible_number_pattern=u'\d{5,9}'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'(?:1(?:(?:[28]\d|9)\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[02346-9]|7[0-24-8])|2(?:16|2\d|3[0-24]|4[1468]|55|6[56]|79)|365?\d|44\d{2})\d{5}', possible_number_pattern=u'\d{5,9}', example_number=u'123123456'),
77
mobile=PhoneNumberDesc(national_number_pattern=u'(?:[46]0|5[015]|7[07])\d{7}', possible_number_pattern=u'\d{9}', example_number=u'401234567'),
88
toll_free=PhoneNumberDesc(national_number_pattern=u'88\d{7}', possible_number_pattern=u'\d{9}', example_number=u'881234567'),
9-
premium_rate=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
9+
premium_rate=PhoneNumberDesc(national_number_pattern=u'900200\d{3}', possible_number_pattern=u'\d{9}', example_number=u'900200123'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1111
personal_number=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1212
voip=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
@@ -19,4 +19,5 @@
1919
NumberFormat(pattern='(\d{2})(\d{2})(\d{2})(\d{2})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['22'], national_prefix_formatting_rule=u'(0\\1)'),
2020
NumberFormat(pattern='(\d{2})(\d{2,3})(\d{2})(\d{2})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['3'], national_prefix_formatting_rule=u'(0\\1)'),
2121
NumberFormat(pattern='(\d{3})(\d)(\d{2})(\d{2})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['1[013-79]|2[013-9]'], national_prefix_formatting_rule=u'(0\\1)'),
22-
NumberFormat(pattern='(\d{2})(\d{3})(\d{2})(\d{2})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['[4-8]'], national_prefix_formatting_rule=u'0\\1')])
22+
NumberFormat(pattern='(\d{2})(\d{3})(\d{2})(\d{2})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['[4-8]'], national_prefix_formatting_rule=u'0\\1'),
23+
NumberFormat(pattern='(\d{3})(\d{2})(\d{2})(\d{2})', format=u'\\1 \\2 \\3 \\4', leading_digits_pattern=['9'], national_prefix_formatting_rule=u'0\\1')])

python/phonenumbers/data/region_BF.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
PHONE_METADATA_BF = PhoneMetadata(id='BF', country_code=226, international_prefix='00',
55
general_desc=PhoneNumberDesc(national_number_pattern=u'[2457]\d{7}', possible_number_pattern=u'\d{8}'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'(?:20(?:49|5[23]|9[016-9])|40(?:4[569]|55|7[0179])|50[34]\d)\d{4}', possible_number_pattern=u'\d{8}', example_number=u'20491234'),
7-
mobile=PhoneNumberDesc(national_number_pattern=u'7(?:[024-6]\d|1[0-489]|3[0124]|7[01]|8[013-9]|9[0-4])\d{5}', possible_number_pattern=u'\d{8}', example_number=u'70123456'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'7(?:[024-6]\d|1[0-4689]|3[0-6]|7[01]|8[013-9]|9[0-4])\d{5}', possible_number_pattern=u'\d{8}', example_number=u'70123456'),
88
toll_free=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),

python/phonenumbers/data/region_BW.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@
22
from phonenumbers import NumberFormat, PhoneNumberDesc, PhoneMetadata
33

44
PHONE_METADATA_BW = PhoneMetadata(id='BW', country_code=267, international_prefix='00',
5-
general_desc=PhoneNumberDesc(national_number_pattern=u'[2-9]\d{6,7}', possible_number_pattern=u'\d{7,8}'),
5+
general_desc=PhoneNumberDesc(national_number_pattern=u'[2-79]\d{6,7}', possible_number_pattern=u'\d{7,8}'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0235-9]|55|6\d|7[01]|9[0-57])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\d{4}', possible_number_pattern=u'\d{7}', example_number=u'2401234'),
7-
mobile=PhoneNumberDesc(national_number_pattern=u'7(?:[1-3]\d{6}|4[0-7]\d{5})', possible_number_pattern=u'\d{8}', example_number=u'71123456'),
8-
toll_free=PhoneNumberDesc(national_number_pattern=u'8\d{6}', possible_number_pattern=u'\d{7}', example_number=u'8123456'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'7(?:[1-35]\d{6}|[46][0-7]\d{5})', possible_number_pattern=u'\d{8}', example_number=u'71123456'),
8+
toll_free=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'90\d{5}', possible_number_pattern=u'\d{7}', example_number=u'9012345'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1111
personal_number=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
12-
voip=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
12+
voip=PhoneNumberDesc(national_number_pattern=u'79[12][01]\d{4}', possible_number_pattern=u'\d{8}', example_number=u'79101234'),
1313
pager=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1414
uan=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1515
no_international_dialling=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
16-
number_format=[NumberFormat(pattern='(7[1-4])(\d{3})(\d{3})', format=u'\\1 \\2 \\3', leading_digits_pattern=['7']),
16+
number_format=[NumberFormat(pattern='(\d{3})(\d{4})', format=u'\\1 \\2', leading_digits_pattern=['[2-6]']),
17+
NumberFormat(pattern='(7\d)(\d{3})(\d{3})', format=u'\\1 \\2 \\3', leading_digits_pattern=['7']),
1718
NumberFormat(pattern='(90)(\d{5})', format=u'\\1 \\2', leading_digits_pattern=['9'])])

python/phonenumbers/data/region_BZ.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
PHONE_METADATA_BZ = PhoneMetadata(id='BZ', country_code=501, international_prefix='00',
55
general_desc=PhoneNumberDesc(national_number_pattern=u'[2-8]\d{6}|0\d{10}', possible_number_pattern=u'\d{7}(?:\d{4})?'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'[234578][02]\d{5}', possible_number_pattern=u'\d{7}', example_number=u'2221234'),
7-
mobile=PhoneNumberDesc(national_number_pattern=u'6(?:[01]\d|2[0-5]|[67][01])\d{4}', possible_number_pattern=u'\d{7}', example_number=u'6221234'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'6(?:[0-2]\d|[67][01])\d{4}', possible_number_pattern=u'\d{7}', example_number=u'6221234'),
88
toll_free=PhoneNumberDesc(national_number_pattern=u'0800\d{7}', possible_number_pattern=u'\d{11}', example_number=u'08001234123'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),

python/phonenumbers/data/region_CI.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
PHONE_METADATA_CI = PhoneMetadata(id='CI', country_code=225, international_prefix='00',
55
general_desc=PhoneNumberDesc(national_number_pattern=u'[02-5]\d{7}', possible_number_pattern=u'\d{8}'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\d{5}', possible_number_pattern=u'\d{8}', example_number=u'21234567'),
7-
mobile=PhoneNumberDesc(national_number_pattern=u'(?:0[1-9]|4[04-9]|50|6[067])\d{6}', possible_number_pattern=u'\d{8}', example_number=u'01234567'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'(?:0[1-9]|4[04-9]|5[07]|6[067])\d{6}', possible_number_pattern=u'\d{8}', example_number=u'01234567'),
88
toll_free=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),

python/phonenumbers/data/region_CR.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
PHONE_METADATA_CR = PhoneMetadata(id='CR', country_code=506, international_prefix='00',
55
general_desc=PhoneNumberDesc(national_number_pattern=u'[2489]\d{7,9}', possible_number_pattern=u'\d{8,10}'),
66
fixed_line=PhoneNumberDesc(national_number_pattern=u'2[24-7]\d{6}', possible_number_pattern=u'\d{8}', example_number=u'22123456'),
7-
mobile=PhoneNumberDesc(national_number_pattern=u'8[389]\d{6}', possible_number_pattern=u'\d{8}', example_number=u'83123456'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'8(?:[389]\d|7[0-3])\d{5}', possible_number_pattern=u'\d{8}', example_number=u'83123456'),
88
toll_free=PhoneNumberDesc(national_number_pattern=u'800\d{7}', possible_number_pattern=u'\d{10}', example_number=u'8001234567'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'90[059]\d{7}', possible_number_pattern=u'\d{10}', example_number=u'9001234567'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
@@ -14,5 +14,5 @@
1414
uan=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1515
no_international_dialling=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1616
national_prefix_for_parsing=u'(1900)',
17-
number_format=[NumberFormat(pattern='(\d{4})(\d{4})', format=u'\\1 \\2', leading_digits_pattern=['[24]|8[389]'], domestic_carrier_code_formatting_rule=u'$CC \\1'),
17+
number_format=[NumberFormat(pattern='(\d{4})(\d{4})', format=u'\\1 \\2', leading_digits_pattern=['[24]|8[3-9]'], domestic_carrier_code_formatting_rule=u'$CC \\1'),
1818
NumberFormat(pattern='(\d{3})(\d{3})(\d{4})', format=u'\\1-\\2-\\3', leading_digits_pattern=['[89]0'], domestic_carrier_code_formatting_rule=u'$CC \\1')])
Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
"""Auto-generated file, do not edit by hand. FJ metadata"""
22
from phonenumbers import NumberFormat, PhoneNumberDesc, PhoneMetadata
33

4-
PHONE_METADATA_FJ = PhoneMetadata(id='FJ', country_code=679, international_prefix='00',
5-
general_desc=PhoneNumberDesc(),
6-
fixed_line=PhoneNumberDesc(),
7-
mobile=PhoneNumberDesc(),
8-
toll_free=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
4+
PHONE_METADATA_FJ = PhoneMetadata(id='FJ', country_code=679, international_prefix='0(?:0|52)',
5+
general_desc=PhoneNumberDesc(national_number_pattern=u'[36-9]\d{6}|0\d{10}', possible_number_pattern=u'\d{7}(?:\d{4})?'),
6+
fixed_line=PhoneNumberDesc(national_number_pattern=u'(?:3[0-5]|6[25-7]|8[58])\d{5}', possible_number_pattern=u'\d{7}', example_number=u'3212345'),
7+
mobile=PhoneNumberDesc(national_number_pattern=u'(?:7[0-4]|9[29])\d{5}', possible_number_pattern=u'\d{7}', example_number=u'7012345'),
8+
toll_free=PhoneNumberDesc(national_number_pattern=u'0800\d{7}', possible_number_pattern=u'\d{11}', example_number=u'08001234567'),
99
premium_rate=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1010
shared_cost=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1111
personal_number=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1212
voip=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1313
pager=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
1414
uan=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
15-
no_international_dialling=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'))
15+
no_international_dialling=PhoneNumberDesc(national_number_pattern=u'NA', possible_number_pattern=u'NA'),
16+
preferred_international_prefix=u'00',
17+
number_format=[NumberFormat(pattern='(\d{3})(\d{4})', format=u'\\1 \\2', leading_digits_pattern=['[36-9]']),
18+
NumberFormat(pattern='(\d{4})(\d{3})(\d{4})', format=u'\\1 \\2 \\3', leading_digits_pattern=['0'])],
19+
leading_zero_possible=True)

0 commit comments

Comments
 (0)