Skip to content

Commit f3e62af

Browse files
committed
Add & use PhoneMetadata.metadata_for_region accessor
1 parent 60a45b4 commit f3e62af

5 files changed

Lines changed: 17 additions & 13 deletions

File tree

python/phonenumbers/asyoutypeformatter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def _get_metadata_for_region(region_code):
8383
# Set to a default instance of the metadata. This allows us to
8484
# function with an incorrect region code, even if formatting only
8585
# works for numbers specified with "+".
86-
return PhoneMetadata.region_metadata.get(main_country, _EMPTY_METADATA)
86+
return PhoneMetadata.metadata_for_region(main_country, _EMPTY_METADATA)
8787

8888

8989
class AsYouTypeFormatter(object):

python/phonenumbers/phonemetadata.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,10 @@ class PhoneMetadata(UnicodeMixin, ImmutableMixin):
216216
# (International Shared Cost Service).
217217
country_code_metadata = {}
218218

219+
@classmethod
220+
def metadata_for_region(kls, region_code, default=None):
221+
return kls.region_metadata.get(region_code, default)
222+
219223
@classmethod
220224
def metadata_for_region_or_calling_code(kls, country_calling_code, region_code):
221225
if region_code == REGION_CODE_FOR_NON_GEO_ENTITY:

python/phonenumbers/phonenumbermatcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ def _is_national_prefix_present_if_required(numobj):
375375
if numobj.country_code_source != CountryCodeSource.FROM_DEFAULT_COUNTRY:
376376
return True
377377
phone_number_region = region_code_for_country_code(numobj.country_code)
378-
metadata = PhoneMetadata.region_metadata.get(phone_number_region, None)
378+
metadata = PhoneMetadata.metadata_for_region(phone_number_region, None)
379379
if metadata is None:
380380
return True
381381
# Check if a national prefix should be present when formatting this number.

python/phonenumbers/phonenumberutil.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ def length_of_geographical_area_code(numobj):
575575
576576
Returns the length of area code of the PhoneNumber object passed in.
577577
"""
578-
metadata = PhoneMetadata.region_metadata.get(region_code_for_number(numobj), None)
578+
metadata = PhoneMetadata.metadata_for_region(region_code_for_number(numobj), None)
579579
if metadata is None:
580580
return 0
581581

@@ -1131,7 +1131,7 @@ def _format_original_allow_mods(numobj, region_calling_from):
11311131
return national_format
11321132
# Metadata cannot be None here because ndd_prefix_for_region() (above) returns None if
11331133
# there is no metadata for the region.
1134-
metadata = PhoneMetadata.region_metadata[region_code]
1134+
metadata = PhoneMetadata.metadata_for_region(region_code)
11351135
national_number = national_significant_number(numobj)
11361136
format_rule = choose_formatting_pattern_for_number(metadata.number_format, national_number)
11371137
# The format rule could still be null here if the national number was
@@ -1254,7 +1254,7 @@ def format_out_of_country_keeping_alpha_chars(numobj, region_calling_from):
12541254
if first_national_number_digit != -1:
12551255
num_raw_input = num_raw_input[first_national_number_digit:]
12561256

1257-
metadata_for_region_calling_from = PhoneMetadata.region_metadata.get(region_calling_from.upper(), None)
1257+
metadata_for_region_calling_from = PhoneMetadata.metadata_for_region(region_calling_from.upper(), None)
12581258
if country_code == _NANPA_COUNTRY_CODE:
12591259
if is_nanpa_country(region_calling_from):
12601260
return unicode(country_code) + u" " + num_raw_input
@@ -1469,7 +1469,7 @@ def example_number_for_type(region_code, num_type):
14691469
# Check the region code is valid.
14701470
if not _is_valid_region_code(region_code):
14711471
return None
1472-
metadata = PhoneMetadata.region_metadata[region_code.upper()]
1472+
metadata = PhoneMetadata.metadata_for_region(region_code.upper())
14731473
desc = _number_desc_for_type(metadata, num_type)
14741474
if desc.example_number is not None:
14751475
try:
@@ -1696,9 +1696,9 @@ def _region_code_for_number_from_list(numobj, regions):
16961696
# validation.
16971697
# Metadata cannot be None because the region codes come from
16981698
# the country calling code map.
1699-
if region_code.upper() not in PhoneMetadata.region_metadata:
1699+
metadata = PhoneMetadata.metadata_for_region(region_code.upper(), None)
1700+
if metadata is None:
17001701
continue
1701-
metadata = PhoneMetadata.region_metadata[region_code.upper()]
17021702
if metadata.leading_digits is not None:
17031703
leading_digit_re = re.compile(metadata.leading_digits)
17041704
match = leading_digit_re.match(national_number)
@@ -1764,7 +1764,7 @@ def country_code_for_valid_region(region_code):
17641764
17651765
Returns the country calling code for the region denoted by region_code.
17661766
"""
1767-
metadata = PhoneMetadata.region_metadata.get(region_code.upper(), None)
1767+
metadata = PhoneMetadata.metadata_for_region(region_code.upper(), None)
17681768
if metadata is None:
17691769
raise Exception("Invalid region code %s" % region_code)
17701770
return metadata.country_code
@@ -1792,7 +1792,7 @@ def ndd_prefix_for_region(region_code, strip_non_digits):
17921792
"""
17931793
if region_code is None:
17941794
return None
1795-
metadata = PhoneMetadata.region_metadata.get(region_code.upper(), None)
1795+
metadata = PhoneMetadata.metadata_for_region(region_code.upper(), None)
17961796
if metadata is None:
17971797
return None
17981798
national_prefix = metadata.national_prefix
@@ -2355,7 +2355,7 @@ def parse(number, region=None, keep_raw_input=False,
23552355
if region is None:
23562356
metadata = None
23572357
else:
2358-
metadata = PhoneMetadata.region_metadata.get(region.upper(), None)
2358+
metadata = PhoneMetadata.metadata_for_region(region.upper(), None)
23592359

23602360
country_code = 0
23612361
try:
@@ -2641,7 +2641,7 @@ def _can_be_internationally_dialled(numobj):
26412641
numobj -- the phone number objectfor which we want to know whether it is
26422642
diallable from outside the region.
26432643
"""
2644-
metadata = PhoneMetadata.region_metadata.get(region_code_for_number(numobj), None)
2644+
metadata = PhoneMetadata.metadata_for_region(region_code_for_number(numobj), None)
26452645
if metadata is None:
26462646
# Note numbers belonging to non-geographical entities (e.g. +800
26472647
# numbers) are always internationally diallable, and will be caught

python/phonenumbers/shortnumberutil.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def _matches_emergency_number_helper(number, region_code, allow_prefix_match):
6868
# (e.g. +1911) works, but later, if that proves to work, we can add
6969
# additional logic here to handle it.
7070
return False
71-
metadata = PhoneMetadata.region_metadata.get(region_code.upper(), None)
71+
metadata = PhoneMetadata.metadata_for_region(region_code.upper(), None)
7272
if metadata is None or metadata.emergency is None:
7373
return False
7474
emergency_number_pattern = re.compile(metadata.emergency.national_number_pattern)

0 commit comments

Comments
 (0)