Skip to content

Commit af5a17f

Browse files
committed
Merge branch 'dev' into python3
Conflicts: python/phonenumbers/data/alt_format_43.py python/phonenumbers/data/alt_format_44.py python/phonenumbers/data/alt_format_49.py python/phonenumbers/data/region_AR.py python/phonenumbers/data/region_AT.py python/phonenumbers/data/region_CL.py python/phonenumbers/data/region_ES.py python/phonenumbers/data/region_ML.py python/phonenumbers/data/region_MX.py python/phonenumbers/data/region_NC.py python/phonenumbers/data/region_VE.py python/phonenumbers/phonemetadata.py python/phonenumbers/phonenumberutil.py python/phonenumbers/shortnumberutil.py python/tests/examplenumberstest.py python/tests/phonenumberutiltest.py python/tests/shortnumberinfotest.py
2 parents 59cb809 + 4bc5243 commit af5a17f

536 files changed

Lines changed: 9437 additions & 3471 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

python/phonenumbers/__init__.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,15 @@
114114
region_codes_for_country_code,
115115
region_code_for_number,
116116
truncate_too_long_number,)
117-
from .shortnumberutil import connects_to_emergency_number, is_emergency_number, ShortNumberCost
117+
from .shortnumberinfo import (ShortNumberCost,
118+
is_possible_short_number,
119+
is_possible_short_number_object,
120+
is_valid_short_number,
121+
is_valid_short_number_object,
122+
expected_cost,
123+
connects_to_emergency_number,
124+
is_emergency_number,
125+
is_carrier_specific)
118126
from .phonenumbermatcher import PhoneNumberMatch, PhoneNumberMatcher, Leniency
119127

120128

@@ -252,7 +260,17 @@ def description_for_valid_number(*args, **kwargs):
252260
'region_code_for_number',
253261
'truncate_too_long_number',
254262
# end of items from phonenumberutil.py
255-
'connects_to_emergency_number', 'is_emergency_number', 'ShortNumberCost',
263+
# items from shortnumberinfo.py
264+
'ShortNumberCost',
265+
'is_possible_short_number',
266+
'is_possible_short_number_object',
267+
'is_valid_short_number',
268+
'is_valid_short_number_object',
269+
'expected_cost',
270+
'connects_to_emergency_number',
271+
'is_emergency_number',
272+
'is_carrier_specific',
273+
# end of items from shortnumberinfo.py
256274
'PhoneNumberMatch', 'PhoneNumberMatcher', 'Leniency',
257275
'country_name_for_number',
258276
'description_for_number',

python/phonenumbers/asyoutypeformatter.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,10 +438,14 @@ def _append_national_number(self, national_number):
438438
def _attempt_to_choose_formatting_pattern(self):
439439
"""Attempts to set the formatting template and returns a string which
440440
contains the formatted version of the digits entered so far."""
441-
# We start to attempt to format only when as least MIN_LEADING_DIGITS_LENGTH digits of national
441+
# We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH digits of national
442442
# number (excluding national prefix) have been entered.
443443
if len(self._national_number) >= _MIN_LEADING_DIGITS_LENGTH:
444444
self._get_available_formats(self._national_number[:_MIN_LEADING_DIGITS_LENGTH])
445+
# See if the accrued digits can be formatted properly already.
446+
formatted_number = self._attempt_to_format_accrued_digits()
447+
if len(formatted_number) > 0:
448+
return formatted_number
445449
if self._maybe_create_new_template():
446450
return self._input_accrued_national_number()
447451
else:
@@ -485,7 +489,9 @@ def _remove_national_prefix_from_national_number(self):
485489
elif self._current_metadata.national_prefix_for_parsing is not None:
486490
npp_re = re.compile(self._current_metadata.national_prefix_for_parsing)
487491
m = npp_re.match(self._national_number)
488-
if m:
492+
# Since some national prefix patterns are entirely optional, check
493+
# that a national prefix could actually be extracted.
494+
if m and m.end() > 0:
489495
# When the national prefix is detected, we use international
490496
# formatting rules instead of national ones, because national
491497
# formatting rules could contain local formatting rules for

python/phonenumbers/data/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ def _load_region(code):
2929
for country_code in _AVAILABLE_NONGEO_COUNTRY_CODES:
3030
PhoneMetadata.register_nongeo_region_loader(country_code, _load_region)
3131

32+
from .alt_format_30 import PHONE_ALT_FORMAT_30
33+
from .alt_format_31 import PHONE_ALT_FORMAT_31
3234
from .alt_format_34 import PHONE_ALT_FORMAT_34
3335
from .alt_format_351 import PHONE_ALT_FORMAT_351
3436
from .alt_format_352 import PHONE_ALT_FORMAT_352
@@ -37,17 +39,23 @@ def _load_region(code):
3739
from .alt_format_373 import PHONE_ALT_FORMAT_373
3840
from .alt_format_375 import PHONE_ALT_FORMAT_375
3941
from .alt_format_380 import PHONE_ALT_FORMAT_380
42+
from .alt_format_385 import PHONE_ALT_FORMAT_385
4043
from .alt_format_43 import PHONE_ALT_FORMAT_43
4144
from .alt_format_44 import PHONE_ALT_FORMAT_44
4245
from .alt_format_49 import PHONE_ALT_FORMAT_49
4346
from .alt_format_55 import PHONE_ALT_FORMAT_55
47+
from .alt_format_58 import PHONE_ALT_FORMAT_58
4448
from .alt_format_595 import PHONE_ALT_FORMAT_595
4549
from .alt_format_61 import PHONE_ALT_FORMAT_61
50+
from .alt_format_62 import PHONE_ALT_FORMAT_62
51+
from .alt_format_63 import PHONE_ALT_FORMAT_63
4652
from .alt_format_7 import PHONE_ALT_FORMAT_7
4753
from .alt_format_81 import PHONE_ALT_FORMAT_81
4854
from .alt_format_855 import PHONE_ALT_FORMAT_855
4955
from .alt_format_90 import PHONE_ALT_FORMAT_90
50-
_ALT_NUMBER_FORMATS = {34: PHONE_ALT_FORMAT_34, 351: PHONE_ALT_FORMAT_351, 352: PHONE_ALT_FORMAT_352, 359: PHONE_ALT_FORMAT_359, 372: PHONE_ALT_FORMAT_372, 373: PHONE_ALT_FORMAT_373, 375: PHONE_ALT_FORMAT_375, 380: PHONE_ALT_FORMAT_380, 43: PHONE_ALT_FORMAT_43, 44: PHONE_ALT_FORMAT_44, 49: PHONE_ALT_FORMAT_49, 55: PHONE_ALT_FORMAT_55, 595: PHONE_ALT_FORMAT_595, 61: PHONE_ALT_FORMAT_61, 7: PHONE_ALT_FORMAT_7, 81: PHONE_ALT_FORMAT_81, 855: PHONE_ALT_FORMAT_855, 90: PHONE_ALT_FORMAT_90}
56+
from .alt_format_971 import PHONE_ALT_FORMAT_971
57+
from .alt_format_972 import PHONE_ALT_FORMAT_972
58+
_ALT_NUMBER_FORMATS = {30: PHONE_ALT_FORMAT_30, 31: PHONE_ALT_FORMAT_31, 34: PHONE_ALT_FORMAT_34, 351: PHONE_ALT_FORMAT_351, 352: PHONE_ALT_FORMAT_352, 359: PHONE_ALT_FORMAT_359, 372: PHONE_ALT_FORMAT_372, 373: PHONE_ALT_FORMAT_373, 375: PHONE_ALT_FORMAT_375, 380: PHONE_ALT_FORMAT_380, 385: PHONE_ALT_FORMAT_385, 43: PHONE_ALT_FORMAT_43, 44: PHONE_ALT_FORMAT_44, 49: PHONE_ALT_FORMAT_49, 55: PHONE_ALT_FORMAT_55, 58: PHONE_ALT_FORMAT_58, 595: PHONE_ALT_FORMAT_595, 61: PHONE_ALT_FORMAT_61, 62: PHONE_ALT_FORMAT_62, 63: PHONE_ALT_FORMAT_63, 7: PHONE_ALT_FORMAT_7, 81: PHONE_ALT_FORMAT_81, 855: PHONE_ALT_FORMAT_855, 90: PHONE_ALT_FORMAT_90, 971: PHONE_ALT_FORMAT_971, 972: PHONE_ALT_FORMAT_972}
5159

5260
# A mapping from a country code to the region codes which
5361
# denote the country/region represented by that country code.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Auto-generated file, do not edit by hand. 30 metadata"""
2+
from ..phonemetadata import NumberFormat
3+
4+
PHONE_ALT_FORMAT_30 = [NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['21'])]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Auto-generated file, do not edit by hand. 31 metadata"""
2+
from ..phonemetadata import NumberFormat
3+
4+
PHONE_ALT_FORMAT_31 = [NumberFormat(pattern='([1-578]\\d)(\\d{4})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[4578]'])]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Auto-generated file, do not edit by hand. 385 metadata"""
2+
from ..phonemetadata import NumberFormat
3+
4+
PHONE_ALT_FORMAT_385 = [NumberFormat(pattern='(1)(\\d{3})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['1']), NumberFormat(pattern='(1)(\\d{3})(\\d{2})(\\d{2})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['1']), NumberFormat(pattern='(6[09])(\\d{3})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['6[09]']), NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{4})', format='\\1 \\2 \\3', leading_digits_pattern=['[2-69]'])]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
"""Auto-generated file, do not edit by hand. 43 metadata"""
22
from ..phonemetadata import NumberFormat
33

4-
PHONE_ALT_FORMAT_43 = [NumberFormat(pattern='(5)(\\d{3,12})', format='\\1 \\2', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(50)(\\d{2})(\\d{2})(\\d{2,4})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['50']), NumberFormat(pattern='(5\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2,4})', format='\\1 \\2 \\3 \\4 \\5', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(5\\d)(\\d{5})(\\d{4,6})', format='\\1 \\2 \\3', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(5\\d)(\\d{6,7})', format='\\1 \\2', leading_digits_pattern=['5[079]'])]
4+
PHONE_ALT_FORMAT_43 = [NumberFormat(pattern='(5)(\\d{3,12})', format='\\1 \\2', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(50)(\\d{2})(\\d{2})(\\d{2,4})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['50']), NumberFormat(pattern='(5\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2,4})', format='\\1 \\2 \\3 \\4 \\5', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(5\\d)(\\d{5})(\\d{4,6})', format='\\1 \\2 \\3', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(5\\d)(\\d{6,7})', format='\\1 \\2', leading_digits_pattern=['5[079]']), NumberFormat(pattern='(\\d{3})(\\d{2})(\\d{2})(\\d{2,3})', format='\\1 \\2 \\3 \\4', leading_digits_pattern=['316|46|51|732|6(?:44|5[0-3579]|[6-9])|7(?:1|[28]0)|[89]'])]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
"""Auto-generated file, do not edit by hand. 44 metadata"""
22
from ..phonemetadata import NumberFormat
33

4-
PHONE_ALT_FORMAT_44 = [NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=['20']), NumberFormat(pattern='(\\d{4})(\\d{3})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['1[2-48][02-9]|7(?:[1-5789]|624)']), NumberFormat(pattern='(\\d{3})(\\d{4})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['7[1-5789]']), NumberFormat(pattern='(80\\d)(\\d{3,4})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['80'])]
4+
PHONE_ALT_FORMAT_44 = [NumberFormat(pattern='(\\d{3})(\\d{3})(\\d{4})', format='\\1-\\2-\\3', leading_digits_pattern=['20']), NumberFormat(pattern='(\\d{2})(\\d{4})(\\d{2})(\\d{2})', format='\\1-\\2-\\3-\\4', leading_digits_pattern=['20']), NumberFormat(pattern='(\\d{4})(\\d{3})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['1[2-48][02-9]|7(?:[1-5789]|624)']), NumberFormat(pattern='(\\d{3})(\\d{4})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['7[1-5789]']), NumberFormat(pattern='(80\\d)(\\d{3,4})(\\d{3})', format='\\1 \\2 \\3', leading_digits_pattern=['80'])]

0 commit comments

Comments
 (0)