Skip to content

Commit b813f6e

Browse files
committed
Merge code changes from upstream r610
Not split out anything equivalent to PrefixFileReader.java because the metadata is loaded rather differently in the Python code.
1 parent b6572d7 commit b813f6e

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

python/phonenumbers/geocoder.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
# limitations under the License.
4545

4646
from .phonenumberutil import format_number, PhoneNumberFormat, number_type
47-
from .phonenumberutil import region_code_for_number, PhoneNumberType
47+
from .phonenumberutil import region_code_for_number, PhoneNumberType, PhoneNumber
48+
from .phonenumberutil import country_mobile_token, national_significant_number
4849
try:
4950
from .geodata import GEOCODE_DATA, GEOCODE_LONGEST_PREFIX
5051
from .geodata.locale import LOCALE_DATA
@@ -222,7 +223,19 @@ def description_for_valid_number(numobj, lang, script=None, region=None):
222223
number, or an empty string if no description is available."""
223224
number_region = region_code_for_number(numobj)
224225
if region is None or region == number_region:
225-
area_description = _area_description_for_number(numobj, lang, script, region)
226+
mobile_token = country_mobile_token(numobj.country_code)
227+
national_number = national_significant_number(numobj)
228+
if mobile_token != "" and national_number.startswith(mobile_token):
229+
# In some countries, eg. Argentina, mobile numbers have a mobile token
230+
# before the national destination code, this should be removed before
231+
# geocoding.
232+
national_number = national_number[len(mobile_token):]
233+
copied_numobj = PhoneNumber(country_code=numobj.country_code,
234+
national_number=national_number,
235+
italian_leading_zero=national_number.startswith("0"))
236+
area_description = _area_description_for_number(copied_numobj, lang, script, region)
237+
else:
238+
area_description = _area_description_for_number(numobj, lang, script, region)
226239
if area_description != "":
227240
return area_description
228241
else:

python/tests/geocodertest.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def insert_test_geodata():
5656
US_INVALID_NUMBER = FrozenPhoneNumber(country_code=1, national_number=123456789L)
5757
BS_NUMBER1 = FrozenPhoneNumber(country_code=1, national_number=2423651234L)
5858
AU_NUMBER = FrozenPhoneNumber(country_code=61, national_number=236618300L)
59+
AR_MOBILE_NUMBER = FrozenPhoneNumber(country_code=54, national_number=92214000000L)
5960
NUMBER_WITH_INVALID_COUNTRY_CODE = FrozenPhoneNumber(country_code=999, national_number=2423651234L)
6061
INTERNATIONAL_TOLL_FREE = FrozenPhoneNumber(country_code=800, national_number=12345678L)
6162

@@ -120,6 +121,9 @@ def testGetDescriptionForKoreanNumber(self):
120121
self.assertEqual(u"\uC778\uCC9C",
121122
description_for_number(KO_NUMBER2, _KOREAN))
122123

124+
def testGetDescriptionForArgentinianMobileNumber(self):
125+
self.assertEqual("La Plata", description_for_number(AR_MOBILE_NUMBER, _ENGLISH))
126+
123127
def testGetDescriptionForFallBack(self):
124128
# No fallback, as the location name for the given phone number is
125129
# available in the requested language.

0 commit comments

Comments
 (0)