Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-phonenumbers for
openSUSE:Factory checked in at 2026-04-18 21:35:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-phonenumbers (Old)
and /work/SRC/openSUSE:Factory/.python-phonenumbers.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-phonenumbers"
Sat Apr 18 21:35:13 2026 rev:52 rq:1347825 version:9.0.28
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-phonenumbers/python-phonenumbers.changes
2026-03-20 21:20:41.243698104 +0100
+++
/work/SRC/openSUSE:Factory/.python-phonenumbers.new.11940/python-phonenumbers.changes
2026-04-18 21:35:21.083060560 +0200
@@ -1,0 +2,8 @@
+Thu Apr 16 11:00:50 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to 9.0.28
+ * Merge metadata changes from upstream 9.0.28
+- from version 9.0.27
+ * Merge metadata changes from upstream 9.0.27
+
+-------------------------------------------------------------------
Old:
----
phonenumbers-9.0.26.tar.gz
New:
----
phonenumbers-9.0.28.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-phonenumbers.spec ++++++
--- /var/tmp/diff_new_pack.qWIi7l/_old 2026-04-18 21:35:21.839091372 +0200
+++ /var/tmp/diff_new_pack.qWIi7l/_new 2026-04-18 21:35:21.839091372 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-phonenumbers
-Version: 9.0.26
+Version: 9.0.28
Release: 0
Summary: Python version of Google's common library for international
phone numbers
License: Apache-2.0
++++++ phonenumbers-9.0.26.tar.gz -> phonenumbers-9.0.28.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/PKG-INFO
new/phonenumbers-9.0.28/PKG-INFO
--- old/phonenumbers-9.0.26/PKG-INFO 2026-03-13 12:34:07.862952200 +0100
+++ new/phonenumbers-9.0.28/PKG-INFO 2026-04-13 16:15:59.594291200 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: phonenumbers
-Version: 9.0.26
+Version: 9.0.28
Summary: Python version of Google's common library for parsing, formatting,
storing and validating international phone numbers.
Author-email: David Drysdale <[email protected]>
License-Expression: Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/__init__.py
new/phonenumbers-9.0.28/phonenumbers/__init__.py
--- old/phonenumbers-9.0.26/phonenumbers/__init__.py 2026-03-13
11:42:24.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/__init__.py 2026-04-13
16:12:45.000000000 +0200
@@ -146,7 +146,7 @@
# Version number is taken from the upstream libphonenumber version
# together with an indication of the version of the Python-specific code.
-__version__ = "9.0.26"
+__version__ = "9.0.28"
__all__ = ['PhoneNumber', 'CountryCodeSource', 'FrozenPhoneNumber',
'REGION_CODE_FOR_NON_GEO_ENTITY', 'NumberFormat',
'PhoneNumberDesc', 'PhoneMetadata',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/phonenumbers-9.0.26/phonenumbers/carrierdata/data0.py
new/phonenumbers-9.0.28/phonenumbers/carrierdata/data0.py
--- old/phonenumbers-9.0.26/phonenumbers/carrierdata/data0.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/carrierdata/data0.py 2026-04-13
16:12:45.000000000 +0200
@@ -200,6 +200,16 @@
'168425':{'en': 'Blue Sky'},
'168427':{'en': 'Blue Sky'},
'16847':{'en': 'ASTCA'},
+ '1721553':{'en': 'Flow'},
+ '1721554':{'en': 'Flow'},
+ '1721580':{'en': 'Flow'},
+ '1721581':{'en': 'Flow'},
+ '1721582':{'en': 'Flow'},
+ '1721584':{'en': 'Flow'},
+ '1721585':{'en': 'Flow'},
+ '1721586':{'en': 'Flow'},
+ '1721587':{'en': 'Flow'},
+ '1721588':{'en': 'Flow'},
'175828':{'en': 'Cable & Wireless'},
'17583':{'en': 'Cable & Wireless'},
'1758460':{'en': 'Cable & Wireless'},
@@ -1570,6 +1580,8 @@
'267778':{'en': 'Mascom'},
'267779':{'en': 'Orange'},
'26778':{'en': 'Orange'},
+ '267790':{'en': 'Orange'},
+ '267793':{'en': 'Orange'},
'26875':{'en': 'Eswatini Mobile'},
'26876':{'en': 'Swazi MTN'},
'26877':{'en': 'SPTC'},
@@ -2429,9 +2441,10 @@
'346112':{'en': 'Yoigo'},
'346113':{'en': 'Yoigo'},
'34612':{'en': 'Syma'},
- '346122':{'en': 'Lycamobile'},
- '346124':{'en': 'Lycamobile'},
- '346125':{'en': 'Lycamobile'},
+ '346122':{'en': 'Yoigo'},
+ '346124':{'en': 'Yoigo'},
+ '346125':{'en': 'Yoigo'},
+ '346126':{'en': 'Sarenet'},
'34613':{'en': 'Yoigo'},
'34614':{'en': 'DigiMobil'},
'34615':{'en': 'Orange'},
@@ -2881,15 +2894,15 @@
'35850':{'en': 'Elisa'},
'35987':{'en': 'Vivacom'},
'35988':{'en': 'A1'},
- '35989':{'en': 'Telenor'},
+ '35989':{'en': 'Yettel'},
'359988':{'en': 'Bob'},
'359989':{'en': 'A1'},
'3599960':{'en': 'A1'},
'3599961':{'en': 'A1'},
'3599962':{'en': 'A1'},
- '3599964':{'en': 'Telenor'},
- '3599965':{'en': 'Telenor'},
- '3599966':{'en': 'Telenor'},
+ '3599964':{'en': 'Yettel'},
+ '3599965':{'en': 'Yettel'},
+ '3599966':{'en': 'Yettel'},
'3599967':{'en': 'Vivacom'},
'3599968':{'en': 'Vivacom'},
'3599969':{'en': 'Vivacom'},
@@ -2897,8 +2910,8 @@
'3599991':{'en': 'A1'},
'3599992':{'en': 'A1'},
'3599993':{'en': 'A1'},
- '3599994':{'en': 'Telenor'},
- '3599995':{'en': 'Telenor'},
+ '3599994':{'en': 'Yettel'},
+ '3599995':{'en': 'Yettel'},
'3599996':{'en': 'Vivacom'},
'3599997':{'en': 'Vivacom'},
'3599998':{'en': 'Vivacom'},
@@ -10006,17 +10019,4 @@
'553199745':{'en': 'Telemig Celular'},
'553199746':{'en': 'Telemig Celular'},
'553199747':{'en': 'Telemig Celular'},
- '553199748':{'en': 'Telemig Celular'},
- '553199749':{'en': 'Telemig Celular'},
- '553199751':{'en': 'Telemig Celular'},
- '553199752':{'en': 'Telemig Celular'},
- '553199753':{'en': 'Telemig Celular'},
- '553199755':{'en': 'Telemig Celular'},
- '553199756':{'en': 'Telemig Celular'},
- '553199757':{'en': 'Telemig Celular'},
- '553199758':{'en': 'Telemig Celular'},
- '553199759':{'en': 'Telemig Celular'},
- '553199761':{'en': 'Telemig Celular'},
- '553199762':{'en': 'Telemig Celular'},
- '553199763':{'en': 'Telemig Celular'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/phonenumbers-9.0.26/phonenumbers/carrierdata/data1.py
new/phonenumbers-9.0.28/phonenumbers/carrierdata/data1.py
--- old/phonenumbers-9.0.26/phonenumbers/carrierdata/data1.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/carrierdata/data1.py 2026-04-13
16:12:45.000000000 +0200
@@ -19,6 +19,19 @@
# limitations under the License.
data = {
+ '553199748':{'en': 'Telemig Celular'},
+ '553199749':{'en': 'Telemig Celular'},
+ '553199751':{'en': 'Telemig Celular'},
+ '553199752':{'en': 'Telemig Celular'},
+ '553199753':{'en': 'Telemig Celular'},
+ '553199755':{'en': 'Telemig Celular'},
+ '553199756':{'en': 'Telemig Celular'},
+ '553199757':{'en': 'Telemig Celular'},
+ '553199758':{'en': 'Telemig Celular'},
+ '553199759':{'en': 'Telemig Celular'},
+ '553199761':{'en': 'Telemig Celular'},
+ '553199762':{'en': 'Telemig Celular'},
+ '553199763':{'en': 'Telemig Celular'},
'553199764':{'en': 'Telemig Celular'},
'553199765':{'en': 'Telemig Celular'},
'553199766':{'en': 'Telemig Celular'},
@@ -10006,17 +10019,4 @@
'57305266':{'en': 'Tigo'},
'573052670':{'en': 'Tigo'},
'573052671':{'en': 'Tigo'},
- '5730527':{'en': 'Tigo'},
- '5730528':{'en': 'Tigo'},
- '5730529':{'en': 'Tigo'},
- '573053':{'en': 'Tigo'},
- '5730540':{'en': 'Movil Exito'},
- '5730541':{'en': 'Movil Exito'},
- '5730542':{'en': 'Movil Exito'},
- '5730543':{'en': 'Movil Exito'},
- '5730544':{'en': 'Movil Exito'},
- '5730545':{'en': 'Movil Exito'},
- '5730546':{'en': 'Movil Exito'},
- '5730547':{'en': 'Movil Exito'},
- '5730548':{'en': 'Movil Exito'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/phonenumbers-9.0.26/phonenumbers/carrierdata/data2.py
new/phonenumbers-9.0.28/phonenumbers/carrierdata/data2.py
--- old/phonenumbers-9.0.26/phonenumbers/carrierdata/data2.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/carrierdata/data2.py 2026-04-13
16:12:45.000000000 +0200
@@ -19,6 +19,19 @@
# limitations under the License.
data = {
+ '5730527':{'en': 'Tigo'},
+ '5730528':{'en': 'Tigo'},
+ '5730529':{'en': 'Tigo'},
+ '573053':{'en': 'Tigo'},
+ '5730540':{'en': 'Movil Exito'},
+ '5730541':{'en': 'Movil Exito'},
+ '5730542':{'en': 'Movil Exito'},
+ '5730543':{'en': 'Movil Exito'},
+ '5730544':{'en': 'Movil Exito'},
+ '5730545':{'en': 'Movil Exito'},
+ '5730546':{'en': 'Movil Exito'},
+ '5730547':{'en': 'Movil Exito'},
+ '5730548':{'en': 'Movil Exito'},
'5730550':{'en': 'Tigo'},
'5730551':{'en': 'Tigo'},
'5730552':{'en': 'Tigo'},
@@ -516,13 +529,13 @@
'5993186':{'en': 'Telcell'},
'5993187':{'en': 'Telcell'},
'5993188':{'en': 'Telcell'},
- '599319':{'en': 'WIC'},
+ '599319':{'en': 'Chippie'},
'5994161':{'en': 'Telcell'},
- '5994164':{'en': 'WIC'},
- '5994165':{'en': 'WIC'},
- '5994166':{'en': 'WIC'},
- '5994167':{'en': 'WIC'},
- '5994168':{'en': 'WIC'},
+ '5994164':{'en': 'Chippie'},
+ '5994165':{'en': 'Chippie'},
+ '5994166':{'en': 'Chippie'},
+ '5994167':{'en': 'Chippie'},
+ '5994168':{'en': 'Chippie'},
'5994169':{'en': 'Satel'},
'59970':{'en': 'Digicel'},
'59977':{'en': 'Kla'},
@@ -801,6 +814,7 @@
'6011757':{'en': 'U Mobile'},
'6011759':{'en': 'Eastel'},
'601176':{'en': 'Eastel'},
+ '601178':{'en': 'Eastel'},
'60118886':{'en': 'U Mobile'},
'60118888':{'en': 'red ONE'},
'60118889':{'en': 'U Mobile'},
@@ -8411,7 +8425,10 @@
'9725531':{'en': '019mobile'},
'9725532':{'en': 'Free Telecom'},
'9725533':{'en': 'Free Telecom'},
- '9725540':{'en': 'Rami Levy'},
+ '97255400':{'en': 'Rami Levy'},
+ '97255401':{'en': 'Rami Levy'},
+ '97255402':{'en': 'Rami Levy'},
+ '97255403':{'en': 'Yossi'},
'9725541':{'en': 'Merkaziya'},
'9725543':{'en': 'Maskyoo'},
'9725544':{'en': 'Cellran Cellular Communications'},
@@ -8508,7 +8525,16 @@
'976507':{'en': 'Mobicom'},
'976508':{'en': 'Mobicom'},
'976509':{'en': 'Mobicom'},
- '97655':{'en': 'Unitel'},
+ '976550':{'en': 'Unitel'},
+ '976551':{'en': 'Unitel'},
+ '976552':{'en': 'Unitel'},
+ '976553':{'en': 'Unitel'},
+ '976554':{'en': 'Unitel'},
+ '976555':{'en': 'Mobicom'},
+ '976556':{'en': 'Mobicom'},
+ '976557':{'en': 'Mobicom'},
+ '976558':{'en': 'Mobicom'},
+ '976559':{'en': 'Mobicom'},
'97660':{'en': 'ONDO'},
'97666':{'en': 'ONDO'},
'97669':{'en': 'Skytel'},
@@ -8519,6 +8545,7 @@
'97683':{'en': 'G-Mobile'},
'97685':{'en': 'Mobicom'},
'97686':{'en': 'Unitel'},
+ '97687':{'en': 'G-Mobile'},
'97688':{'en': 'Unitel'},
'97689':{'en': 'Unitel'},
'97690':{'en': 'Skytel'},
@@ -8616,10 +8643,12 @@
'99275':{'en': 'Babilon-M'},
'99277':{'en': 'Tcell'},
'99278':{'en': 'Megafon'},
+ '99279':{'en': 'Anor'},
'99280':{'en': 'ZET-MOBILE'},
'99281':{'en': 'ZET-MOBILE'},
'99287':{'en': 'Megafon'},
'99288':{'en': 'Megafon'},
+ '99289':{'en': 'Anor'},
'99290':{'en': 'Megafon'},
'99291':{'en': 'ZET-MOBILE'},
'99292':{'en': 'Tcell'},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_BF.py
new/phonenumbers-9.0.28/phonenumbers/data/region_BF.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_BF.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_BF.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,7 +2,7 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_BF = PhoneMetadata(id='BF', country_code=226,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:[025-7]\\d|44)\\d{6}',
possible_length=(8,)),
+ general_desc=PhoneNumberDesc(national_number_pattern='[024-7]\\d{7}',
possible_length=(8,)),
fixed_line=PhoneNumberDesc(national_number_pattern='2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}',
example_number='20491234', possible_length=(8,)),
-
mobile=PhoneNumberDesc(national_number_pattern='(?:0[1-7]|44|5[0-8]|[67]\\d)\\d{6}',
example_number='70123456', possible_length=(8,)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:0[1-7]|4[4-6]|5[0-8]|[67]\\d)\\d{6}',
example_number='70123456', possible_length=(8,)),
number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
format='\\1 \\2 \\3 \\4', leading_digits_pattern=['[024-7]'])])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_BL.py
new/phonenumbers-9.0.28/phonenumbers/data/region_BL.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_BL.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_BL.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,10 +2,10 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_BL = PhoneMetadata(id='BL', country_code=590,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:590\\d|7090)\\d{5}|(?:69|[89]\\d)\\d{7}',
possible_length=(9,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='590(?:2[7-9]|3[3-7]|5[12]|87)\\d{4}',
example_number='590271234', possible_length=(9,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}',
possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:59(?:0(?:2[7-9]|3[3-7]|5[12]|87)|87\\d)|80[6-9]\\d\\d)\\d{4}',
example_number='590271234', possible_length=(9,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\d)|6(?:1[016-9]|5[0-4]|[67]\\d))|7090[0-4])\\d{4}',
example_number='690001234', possible_length=(9,)),
- toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}',
example_number='800012345', 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(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}',
example_number='976012345', possible_length=(9,)),
national_prefix='0',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_BW.py
new/phonenumbers-9.0.28/phonenumbers/data/region_BW.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_BW.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_BW.py 2026-04-13
16:12:45.000000000 +0200
@@ -4,7 +4,7 @@
PHONE_METADATA_BW = PhoneMetadata(id='BW', country_code=267,
international_prefix='00',
general_desc=PhoneNumberDesc(national_number_pattern='(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}',
possible_length=(7, 8, 10)),
fixed_line=PhoneNumberDesc(national_number_pattern='(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013]|81)|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[013467]))\\d{4}',
example_number='2401234', possible_length=(7,)),
- mobile=PhoneNumberDesc(national_number_pattern='(?:321|7[1-8]\\d)\\d{5}',
example_number='71123456', possible_length=(8,)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:321|7(?:[1-8]\\d|9[03]))\\d{5}',
example_number='71123456', possible_length=(8,)),
toll_free=PhoneNumberDesc(national_number_pattern='(?:0800|800\\d)\\d{6}',
example_number='0800012345', possible_length=(10,)),
premium_rate=PhoneNumberDesc(national_number_pattern='90\\d{5}',
example_number='9012345', possible_length=(7,)),
voip=PhoneNumberDesc(national_number_pattern='79(?:1(?:[0-2]\\d|3[0-8])|2[0-7]\\d)\\d{3}',
example_number='79101234', possible_length=(8,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_CM.py
new/phonenumbers-9.0.28/phonenumbers/data/region_CM.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_CM.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_CM.py 2026-04-13
16:07:10.000000000 +0200
@@ -4,7 +4,7 @@
PHONE_METADATA_CM = PhoneMetadata(id='CM', country_code=237,
international_prefix='00',
general_desc=PhoneNumberDesc(national_number_pattern='[26]\\d{8}|88\\d{6,7}',
possible_length=(8, 9)),
fixed_line=PhoneNumberDesc(national_number_pattern='2(?:22|33)\\d{6}',
example_number='222123456', possible_length=(9,)),
-
mobile=PhoneNumberDesc(national_number_pattern='(?:24[23]|6(?:[25-9]\\d|40))\\d{6}',
example_number='671234567', possible_length=(9,)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:24[23]|6(?:[25-9]\\d|4[01]))\\d{6}',
example_number='671234567', possible_length=(9,)),
toll_free=PhoneNumberDesc(national_number_pattern='88\\d{6,7}',
example_number='88012345', possible_length=(8, 9)),
number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
format='\\1 \\2 \\3 \\4', leading_digits_pattern=['88']),
NumberFormat(pattern='(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
format='\\1 \\2 \\3 \\4 \\5', leading_digits_pattern=['[26]|88'])],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_GF.py
new/phonenumbers-9.0.28/phonenumbers/data/region_GF.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_GF.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_GF.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,8 +2,8 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_GF = PhoneMetadata(id='GF', country_code=594,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='7093\\d{5}|(?:[56]94|[89]\\d\\d)\\d{6}',
possible_length=(9,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='(?:594(?:[02-49]\\d|1[0-5]|5[6-9]|6[0-3]|80)|80[6-9]\\d\\d)\\d{4}',
example_number='594101234', possible_length=(9,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='(?:694\\d|7093)\\d{5}|(?:59|[89]\\d)\\d{7}',
possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:59(?:4(?:[02-49]\\d|1[0-5]|5[6-9]|6[0-3]|80)|88\\d)|80[6-9]\\d\\d)\\d{4}',
example_number='594101234', possible_length=(9,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:694(?:[0-249]\\d|3[0-8])|7093[0-3])\\d{4}',
example_number='694201234', 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='890123456', possible_length=(9,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_GH.py
new/phonenumbers-9.0.28/phonenumbers/data/region_GH.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_GH.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_GH.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,16 +2,16 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_GH = PhoneMetadata(id='GH', country_code=233,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:[235]\\d{3}|800)\\d{5}',
possible_length=(8, 9), possible_length_local_only=(7,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='[235]\\d{8}|800\\d{5,6}',
possible_length=(8, 9), possible_length_local_only=(7,)),
fixed_line=PhoneNumberDesc(national_number_pattern='3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}',
example_number='302345678', possible_length=(9,),
possible_length_local_only=(7,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:2(?:[0346-9]\\d|5[67])|5(?:[03-7]\\d|9[1-9]))\\d{6}',
example_number='231234567', possible_length=(9,)),
- toll_free=PhoneNumberDesc(national_number_pattern='800\\d{5}',
example_number='80012345', possible_length=(8,)),
-
no_international_dialling=PhoneNumberDesc(national_number_pattern='800\\d{5}',
possible_length=(8,)),
+ toll_free=PhoneNumberDesc(national_number_pattern='800\\d{5,6}',
example_number='80012345', possible_length=(8, 9)),
+
no_international_dialling=PhoneNumberDesc(national_number_pattern='800\\d{5,6}',
possible_length=(8, 9)),
national_prefix='0',
national_prefix_for_parsing='0',
number_format=[NumberFormat(pattern='(\\d{3})(\\d{4})', format='\\1 \\2',
leading_digits_pattern=['[237]|8[0-2]']),
NumberFormat(pattern='(\\d{3})(\\d{5})', format='\\1 \\2',
leading_digits_pattern=['8'], national_prefix_formatting_rule='0\\1'),
- NumberFormat(pattern='(\\d{2})(\\d{3})(\\d{4})', format='\\1 \\2 \\3',
leading_digits_pattern=['[235]'], national_prefix_formatting_rule='0\\1')],
+ NumberFormat(pattern='(\\d{2})(\\d{3})(\\d{4})', format='\\1 \\2 \\3',
leading_digits_pattern=['[2358]'], national_prefix_formatting_rule='0\\1')],
intl_number_format=[NumberFormat(pattern='(\\d{3})(\\d{5})', format='\\1
\\2', leading_digits_pattern=['8']),
- NumberFormat(pattern='(\\d{2})(\\d{3})(\\d{4})', format='\\1 \\2 \\3',
leading_digits_pattern=['[235]'])],
+ NumberFormat(pattern='(\\d{2})(\\d{3})(\\d{4})', format='\\1 \\2 \\3',
leading_digits_pattern=['[2358]'])],
mobile_number_portable_region=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_GP.py
new/phonenumbers-9.0.28/phonenumbers/data/region_GP.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_GP.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_GP.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,15 +2,15 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_GP = PhoneMetadata(id='GP', country_code=590,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:590\\d|7090)\\d{5}|(?:69|[89]\\d)\\d{7}',
possible_length=(9,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\d)\\d{4}',
example_number='590201234', possible_length=(9,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}',
possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:59(?:0(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\d)|87\\d)|80[6-9]\\d\\d)\\d{4}',
example_number='590201234', possible_length=(9,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\d)|6(?:1[016-9]|5[0-4]|[67]\\d))|7090[0-4])\\d{4}',
example_number='690001234', possible_length=(9,)),
- toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}',
example_number='800012345', 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(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}',
example_number='976012345', 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=['[5-79]'],
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=['[5-79]|80[6-9]'],
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')],
main_country_for_code=True,
mobile_number_portable_region=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_GU.py
new/phonenumbers-9.0.28/phonenumbers/data/region_GU.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_GU.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_GU.py 2026-04-13
16:07:10.000000000 +0200
@@ -3,8 +3,8 @@
PHONE_METADATA_GU = PhoneMetadata(id='GU', country_code=1,
international_prefix='011',
general_desc=PhoneNumberDesc(national_number_pattern='(?:[58]\\d\\d|671|900)\\d{7}',
possible_length=(10,), possible_length_local_only=(7,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='671(?:2\\d\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}',
example_number='6713001234', possible_length=(10,),
possible_length_local_only=(7,)),
-
mobile=PhoneNumberDesc(national_number_pattern='671(?:2\\d\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}',
example_number='6713001234', possible_length=(10,),
possible_length_local_only=(7,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='671(?:2\\d\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[16-9]))\\d{4}',
example_number='6713001234', possible_length=(10,),
possible_length_local_only=(7,)),
+
mobile=PhoneNumberDesc(national_number_pattern='671(?:2\\d\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[16-9]))\\d{4}',
example_number='6713001234', possible_length=(10,),
possible_length_local_only=(7,)),
toll_free=PhoneNumberDesc(national_number_pattern='8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
example_number='8002123456', possible_length=(10,)),
premium_rate=PhoneNumberDesc(national_number_pattern='900[2-9]\\d{6}',
example_number='9002123456', possible_length=(10,)),
personal_number=PhoneNumberDesc(national_number_pattern='52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\d{6}',
example_number='5002345678', possible_length=(10,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_IL.py
new/phonenumbers-9.0.28/phonenumbers/data/region_IL.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_IL.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_IL.py 2026-04-13
16:12:45.000000000 +0200
@@ -4,9 +4,9 @@
PHONE_METADATA_IL = PhoneMetadata(id='IL', country_code=972,
international_prefix='0(?:0|1[2-9])',
general_desc=PhoneNumberDesc(national_number_pattern='1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}',
possible_length=(7, 8, 9, 10, 11, 12)),
fixed_line=PhoneNumberDesc(national_number_pattern='153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}',
example_number='21234567', possible_length=(8, 11, 12),
possible_length_local_only=(7,)),
-
mobile=PhoneNumberDesc(national_number_pattern='55(?:4(?:0[0-2]|[16]0)|57[0-289])\\d{4}|5(?:(?:[0-2][02-9]|[36]\\d|[49][2-9]|8[3-7])\\d|5(?:01|2\\d|3[0-3]|4[3-5]|5[0-25689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}',
example_number='502345678', possible_length=(9,)),
+
mobile=PhoneNumberDesc(national_number_pattern='55(?:4(?:0[0-3]|[16]0)|57[0-289])\\d{4}|5(?:(?:[0-2][02-9]|[36]\\d|[49][2-9]|8[3-7])\\d|5(?:01|2\\d|3[0-3]|4[3-5]|5[0-25689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}',
example_number='502345678', possible_length=(9,)),
toll_free=PhoneNumberDesc(national_number_pattern='1(?:255|80[019]\\d{3})\\d{3}',
example_number='1800123456', possible_length=(7, 10)),
-
premium_rate=PhoneNumberDesc(national_number_pattern='1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}',
example_number='1919123456', possible_length=(8, 10)),
+
premium_rate=PhoneNumberDesc(national_number_pattern='1212\\d{4}|1(?:200|9(?:0[0-2]|19|9\\d))\\d{6}',
example_number='1919123456', possible_length=(8, 10)),
shared_cost=PhoneNumberDesc(national_number_pattern='1700\\d{6}',
example_number='1700123456', possible_length=(10,)),
voip=PhoneNumberDesc(national_number_pattern='7(?:38(?:[05]\\d|8[0138])|8(?:33|55|77|81)\\d)\\d{4}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}',
example_number='771234567', possible_length=(9,)),
uan=PhoneNumberDesc(national_number_pattern='1599\\d{6}',
example_number='1599123456', possible_length=(10,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_KE.py
new/phonenumbers-9.0.28/phonenumbers/data/region_KE.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_KE.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_KE.py 2026-04-13
16:07:10.000000000 +0200
@@ -4,7 +4,7 @@
PHONE_METADATA_KE = PhoneMetadata(id='KE', country_code=254,
international_prefix='000',
general_desc=PhoneNumberDesc(national_number_pattern='(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}',
possible_length=(7, 8, 9, 10)),
fixed_line=PhoneNumberDesc(national_number_pattern='(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}',
example_number='202012345', possible_length=(7, 8, 9)),
-
mobile=PhoneNumberDesc(national_number_pattern='(?:1(?:0[0-8]|1\\d|2[014]|[34]0)|7\\d\\d)\\d{6}',
example_number='712123456', possible_length=(9,)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:1(?:0[0-8]|1\\d|2[014]|30|4[0-3])|7\\d\\d)\\d{6}',
example_number='712123456', possible_length=(9,)),
toll_free=PhoneNumberDesc(national_number_pattern='800[02-8]\\d{5,6}',
example_number='800223456', possible_length=(9, 10)),
premium_rate=PhoneNumberDesc(national_number_pattern='900[02-9]\\d{5}',
example_number='900223456', possible_length=(9,)),
national_prefix='0',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_MF.py
new/phonenumbers-9.0.28/phonenumbers/data/region_MF.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_MF.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_MF.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,10 +2,10 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_MF = PhoneMetadata(id='MF', country_code=590,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:590\\d|7090)\\d{5}|(?:69|[89]\\d)\\d{7}',
possible_length=(9,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\d{4}',
example_number='590271234', possible_length=(9,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}',
possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:59(?:0(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)|87\\d)|80[6-9]\\d\\d)\\d{4}',
example_number='590271234', possible_length=(9,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\d)|6(?:1[016-9]|5[0-4]|[67]\\d))|7090[0-4])\\d{4}',
example_number='690001234', possible_length=(9,)),
- toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}',
example_number='800012345', 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(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}',
example_number='976012345', possible_length=(9,)),
national_prefix='0',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_MN.py
new/phonenumbers-9.0.28/phonenumbers/data/region_MN.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_MN.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_MN.py 2026-04-13
16:12:45.000000000 +0200
@@ -3,12 +3,12 @@
PHONE_METADATA_MN = PhoneMetadata(id='MN', country_code=976,
international_prefix='001',
general_desc=PhoneNumberDesc(national_number_pattern='[12]\\d{7,9}|[5-9]\\d{7}',
possible_length=(8, 9, 10), possible_length_local_only=(4, 5, 6)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='[12]2[1-3]\\d{5,6}|(?:(?:[12](?:1|27)|5[368])\\d\\d|7(?:0(?:[0-5]\\d|7[078]|80)|128))\\d{4}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}',
example_number='53123456', possible_length=(8, 9, 10),
possible_length_local_only=(4, 5, 6)),
-
mobile=PhoneNumberDesc(national_number_pattern='92[0139]\\d{5}|(?:5[05]|6[069]|7[28]|8[0135689]|9[013-9])\\d{6}',
example_number='88123456', possible_length=(8,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='[12](?:2[1-3]|(?:3[2-8]|4[2-68]|5[1-4689])\\d)\\d{5,6}|7(?:0(?:[0-5]\\d|7[078]|80)|128)\\d{4}|[12]27\\d{6}|(?:11|2[16]|5[368])\\d{6}',
example_number='53123456', possible_length=(8, 9, 10),
possible_length_local_only=(4, 5, 6)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:87[01]|92[0139])\\d{5}|(?:5[05]|6[069]|7[28]|8[0135689]|9[013-9])\\d{6}',
example_number='88123456', possible_length=(8,)),
voip=PhoneNumberDesc(national_number_pattern='712[0-79]\\d{4}|7(?:1[013-9]|[5-79]\\d)\\d{5}',
example_number='75123456', possible_length=(8,)),
national_prefix='0',
national_prefix_for_parsing='0',
- number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{4})',
format='\\1 \\2 \\3', leading_digits_pattern=['[12]1'],
national_prefix_formatting_rule='0\\1'),
+ number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{4})',
format='\\1 \\2 \\3', leading_digits_pattern=['11|2[16]'],
national_prefix_formatting_rule='0\\1'),
NumberFormat(pattern='(\\d{4})(\\d{4})', format='\\1 \\2',
leading_digits_pattern=['[5-9]']),
NumberFormat(pattern='(\\d{3})(\\d{5,6})', format='\\1 \\2',
leading_digits_pattern=['[12]2[1-3]'], national_prefix_formatting_rule='0\\1'),
NumberFormat(pattern='(\\d{4})(\\d{5,6})', format='\\1 \\2',
leading_digits_pattern=['[12](?:27|3[2-8]|4[2-68]|5[1-4689])',
'[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]'],
national_prefix_formatting_rule='0\\1'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_MQ.py
new/phonenumbers-9.0.28/phonenumbers/data/region_MQ.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_MQ.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_MQ.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,8 +2,8 @@
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|7091)\\d{5}|(?: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,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='7091\\d{5}|(?:[56]9|[89]\\d)\\d{7}',
possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:59(?:6(?:[03-7]\\d|1[05]|2[7-9]|8[0-39]|9[04-9])|89\\d)|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\\d|7091[0-3])\\d{4}',
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,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_MY.py
new/phonenumbers-9.0.28/phonenumbers/data/region_MY.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_MY.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_MY.py 2026-04-13
16:07:10.000000000 +0200
@@ -4,7 +4,7 @@
PHONE_METADATA_MY = PhoneMetadata(id='MY', country_code=60,
international_prefix='00',
general_desc=PhoneNumberDesc(national_number_pattern='1\\d{8,9}|(?:3\\d|[4-9])\\d{7}',
possible_length=(8, 9, 10), possible_length_local_only=(6, 7)),
fixed_line=PhoneNumberDesc(national_number_pattern='427[01]\\d{4}|(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}',
example_number='323856789', possible_length=(8, 9),
possible_length_local_only=(6, 7)),
-
mobile=PhoneNumberDesc(national_number_pattern='1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0-4]\\d|5[0-79]|6[02-4]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}',
example_number='123456789', possible_length=(9, 10)),
+
mobile=PhoneNumberDesc(national_number_pattern='1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0-4]\\d|5[0-79]|6[02-4]|8[02-5]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}',
example_number='123456789', possible_length=(9, 10)),
toll_free=PhoneNumberDesc(national_number_pattern='1[378]00\\d{6}',
example_number='1300123456', possible_length=(10,)),
premium_rate=PhoneNumberDesc(national_number_pattern='1600\\d{6}',
example_number='1600123456', possible_length=(10,)),
voip=PhoneNumberDesc(national_number_pattern='15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}',
example_number='1546012345', possible_length=(10,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_RE.py
new/phonenumbers-9.0.28/phonenumbers/data/region_RE.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_RE.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_RE.py 2026-04-13
16:12:45.000000000 +0200
@@ -3,7 +3,7 @@
PHONE_METADATA_RE = PhoneMetadata(id='RE', country_code=262,
international_prefix='00',
general_desc=PhoneNumberDesc(national_number_pattern='709\\d{6}|(?:26|[689]\\d)\\d{7}',
possible_length=(9,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='26(?:2\\d\\d|3(?:0\\d|1[0-6]))\\d{4}',
example_number='262161234', possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='2631[0-6]\\d{4}|26(?:2\\d|30|88)\\d{5}',
example_number='262161234', possible_length=(9,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:69(?:2\\d\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\d{4}',
example_number='692123456', possible_length=(9,)),
toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}',
example_number='801234567', possible_length=(9,)),
premium_rate=PhoneNumberDesc(national_number_pattern='89[1-37-9]\\d{6}',
example_number='891123456', possible_length=(9,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_SR.py
new/phonenumbers-9.0.28/phonenumbers/data/region_SR.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_SR.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_SR.py 2026-04-13
16:12:45.000000000 +0200
@@ -2,12 +2,12 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_SR = PhoneMetadata(id='SR', country_code=597,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:[2-5]|[6-8]\\d|90)\\d{5}',
possible_length=(6, 7)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='(?:2[1-3]|3[0-7]|4\\d|5[2-58])\\d{4}',
example_number='211234', possible_length=(6,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='(?:[2-5]|[6-9]\\d)\\d{5}',
possible_length=(6, 7)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:2[1-3]|3[0-7]|4\\d|5[2-578])\\d{4}',
example_number='211234', possible_length=(6,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:6[08]|7[124-7]|8[1-9])\\d{5}',
example_number='7412345', possible_length=(7,)),
toll_free=PhoneNumberDesc(national_number_pattern='80\\d{5}',
example_number='8012345', possible_length=(7,)),
premium_rate=PhoneNumberDesc(national_number_pattern='90\\d{5}',
example_number='9012345', possible_length=(7,)),
- voip=PhoneNumberDesc(national_number_pattern='56\\d{4}',
example_number='561234', possible_length=(6,)),
+ voip=PhoneNumberDesc(national_number_pattern='(?:56|91\\d)\\d{4}',
example_number='561234', possible_length=(6, 7)),
number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{2})',
format='\\1-\\2-\\3', leading_digits_pattern=['56']),
NumberFormat(pattern='(\\d{3})(\\d{3})', format='\\1-\\2',
leading_digits_pattern=['[2-5]']),
NumberFormat(pattern='(\\d{3})(\\d{4})', format='\\1-\\2',
leading_digits_pattern=['[6-9]'])])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_SX.py
new/phonenumbers-9.0.28/phonenumbers/data/region_SX.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_SX.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_SX.py 2026-04-13
16:07:10.000000000 +0200
@@ -3,8 +3,8 @@
PHONE_METADATA_SX = PhoneMetadata(id='SX', country_code=1,
international_prefix='011',
general_desc=PhoneNumberDesc(national_number_pattern='7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}',
possible_length=(10,), possible_length_local_only=(7,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='7215(?:4[2-8]|8[239]|9[056])\\d{4}',
example_number='7215425678', possible_length=(10,),
possible_length_local_only=(7,)),
-
mobile=PhoneNumberDesc(national_number_pattern='7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}',
example_number='7215205678', possible_length=(10,),
possible_length_local_only=(7,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='7215(?:4[2-8]|8[39]|9[056])\\d{4}',
example_number='7215425678', possible_length=(10,),
possible_length_local_only=(7,)),
+
mobile=PhoneNumberDesc(national_number_pattern='7215(?:1[02]|2\\d|5[034679]|8[0-24-8])\\d{4}',
example_number='7215205678', possible_length=(10,),
possible_length_local_only=(7,)),
toll_free=PhoneNumberDesc(national_number_pattern='8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
example_number='8002123456', possible_length=(10,)),
premium_rate=PhoneNumberDesc(national_number_pattern='900[2-9]\\d{6}',
example_number='9002123456', possible_length=(10,)),
personal_number=PhoneNumberDesc(national_number_pattern='52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\d{6}',
example_number='5002345678', possible_length=(10,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_TD.py
new/phonenumbers-9.0.28/phonenumbers/data/region_TD.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_TD.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_TD.py 2026-04-13
16:07:10.000000000 +0200
@@ -2,8 +2,8 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_TD = PhoneMetadata(id='TD', country_code=235,
international_prefix='00|16',
-
general_desc=PhoneNumberDesc(national_number_pattern='(?:22|30|[689]\\d|77)\\d{6}',
possible_length=(8,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='(?:22|[3689]\\d|77)\\d{6}',
possible_length=(8,)),
fixed_line=PhoneNumberDesc(national_number_pattern='22(?:[37-9]0|5[0-5]|6[89])\\d{4}',
example_number='22501234', possible_length=(8,)),
-
mobile=PhoneNumberDesc(national_number_pattern='(?:30|[69]\\d|77|8[5-7])\\d{6}',
example_number='63012345', possible_length=(8,)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:3[01]|[69]\\d|77|8[5-7])\\d{6}',
example_number='63012345', possible_length=(8,)),
preferred_international_prefix='00',
number_format=[NumberFormat(pattern='(\\d{2})(\\d{2})(\\d{2})(\\d{2})',
format='\\1 \\2 \\3 \\4', leading_digits_pattern=['[236-9]'])])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_TJ.py
new/phonenumbers-9.0.28/phonenumbers/data/region_TJ.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_TJ.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_TJ.py 2026-04-13
16:07:10.000000000 +0200
@@ -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|66)\\d{7}',
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[0-27-9]|2[0-27]|3[08]|40|5[05]|66|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[0-27-9]|2[0-27]|3[08]|40|5[05]|66|7[0157-9]|8[07-9])\\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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_US.py
new/phonenumbers-9.0.28/phonenumbers/data/region_US.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_US.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_US.py 2026-04-13
16:07:10.000000000 +0200
@@ -3,8 +3,8 @@
PHONE_METADATA_US = PhoneMetadata(id='US', country_code=1,
international_prefix='011',
general_desc=PhoneNumberDesc(national_number_pattern='[2-9]\\d{9}|3\\d{6}',
possible_length=(10,), possible_length_local_only=(7,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='(?:274[27]|(?:472|983)[2-47-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}',
example_number='2015550123', possible_length=(10,),
possible_length_local_only=(7,)),
-
mobile=PhoneNumberDesc(national_number_pattern='(?:274[27]|(?:472|983)[2-47-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}',
example_number='2015550123', possible_length=(10,),
possible_length_local_only=(7,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='(?:274[27]|(?:472|983)[2-47-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}',
example_number='2015550123', possible_length=(10,),
possible_length_local_only=(7,)),
+
mobile=PhoneNumberDesc(national_number_pattern='(?:274[27]|(?:472|983)[2-47-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}',
example_number='2015550123', possible_length=(10,),
possible_length_local_only=(7,)),
toll_free=PhoneNumberDesc(national_number_pattern='8(?:00|33|44|55|66|77|88)[2-9]\\d{6}',
example_number='8002345678', possible_length=(10,)),
premium_rate=PhoneNumberDesc(national_number_pattern='900[2-9]\\d{6}',
example_number='9002345678', possible_length=(10,)),
personal_number=PhoneNumberDesc(national_number_pattern='52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\d{6}',
example_number='5002345678', possible_length=(10,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/data/region_YT.py
new/phonenumbers-9.0.28/phonenumbers/data/region_YT.py
--- old/phonenumbers-9.0.26/phonenumbers/data/region_YT.py 2026-03-13
11:42:22.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/data/region_YT.py 2026-04-13
16:12:45.000000000 +0200
@@ -2,8 +2,8 @@
from ..phonemetadata import NumberFormat, PhoneNumberDesc, PhoneMetadata
PHONE_METADATA_YT = PhoneMetadata(id='YT', country_code=262,
international_prefix='00',
-
general_desc=PhoneNumberDesc(national_number_pattern='7093\\d{5}|(?:80|9\\d)\\d{7}|(?:26|63)9\\d{6}',
possible_length=(9,)),
-
fixed_line=PhoneNumberDesc(national_number_pattern='269(?:0[0-467]|15|5[0-4]|6\\d|[78]0)\\d{4}',
example_number='269601234', possible_length=(9,)),
+
general_desc=PhoneNumberDesc(national_number_pattern='(?:639\\d|7093)\\d{5}|(?:26|80|9\\d)\\d{7}',
possible_length=(9,)),
+
fixed_line=PhoneNumberDesc(national_number_pattern='26(?:89\\d|9(?:0[0-467]|15|5[0-4]|6\\d|[78]0))\\d{4}',
example_number='269601234', possible_length=(9,)),
mobile=PhoneNumberDesc(national_number_pattern='(?:639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\d{4}',
example_number='639012345', possible_length=(9,)),
toll_free=PhoneNumberDesc(national_number_pattern='80\\d{7}',
example_number='801234567', possible_length=(9,)),
voip=PhoneNumberDesc(national_number_pattern='9(?:(?:39|47)8[01]|769\\d)\\d{4}',
example_number='939801234', possible_length=(9,)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data10.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data10.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data10.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data10.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '6135018':{'en': 'Mildura'},
'61350190':{'en': 'Culgoa'},
'61350191':{'en': 'Cunninyeuk'},
'61350192':{'en': 'Kyalite'},
@@ -10018,5 +10019,4 @@
'61398860':{'en': 'Melbourne'},
'61398869':{'en': 'Melbourne'},
'6139887':{'en': 'Ringwood'},
- '6139888':{'en': 'Melbourne'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data11.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data11.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data11.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data11.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '6139888':{'en': 'Melbourne'},
'6139889':{'en': 'Melbourne'},
'613989':{'en': 'Melbourne'},
'6139893':{'en': 'Ringwood'},
@@ -10018,5 +10019,4 @@
'61752224':{'en': 'Kia Ora'},
'61752225':{'en': 'Kilcoy'},
'61752226':{'en': 'Kilkivan'},
- '61752227':{'en': 'Laidley'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data12.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data12.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data12.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data12.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '61752227':{'en': 'Laidley'},
'61752228':{'en': 'Lowood'},
'61752229':{'en': 'Maleny'},
'61752230':{'en': 'Maroon'},
@@ -10018,5 +10019,4 @@
'61885834':{'en': 'Barmera'},
'61885839':{'en': 'Barmera'},
'6188584':{'en': 'Loxton'},
- '618858500':{'en': 'Gurrai'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data13.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data13.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data13.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data13.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '618858500':{'en': 'Gurrai'},
'618858501':{'en': 'Gurrai'},
'618858502':{'en': 'Gurrai'},
'618858503':{'en': 'Gurrai'},
@@ -10018,5 +10019,4 @@
'618993049':{'en': 'Guranu'},
'61899305':{'en': 'Marchagee'},
'618993058':{'en': 'Gutha West'},
- '618993059':{'en': 'Howatharra'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data14.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data14.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data14.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data14.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '618993059':{'en': 'Howatharra'},
'61899306':{'en': 'Three Springs'},
'618993068':{'en': 'Kalbarri'},
'618993069':{'en': 'Lake Mason'},
@@ -10018,5 +10019,4 @@
'861308265':{'en': 'Linyi, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u4e34\u6c82\u5e02')},
'861308266':{'en': 'Linyi, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u4e34\u6c82\u5e02')},
'861308267':{'en': 'Weihai, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u5a01\u6d77\u5e02')},
- '861308268':{'en': 'Weihai, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u5a01\u6d77\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data15.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data15.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data15.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data15.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861308268':{'en': 'Weihai, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u5a01\u6d77\u5e02')},
'861308269':{'en': 'Heze, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u83cf\u6cfd\u5e02')},
'861308270':{'en': 'Zibo, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02')},
'861308271':{'en': 'Zibo, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02')},
@@ -10018,5 +10019,4 @@
'861324654':{'en': 'Foshan, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u4f5b\u5c71\u5e02')},
'861324655':{'en': 'Foshan, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u4f5b\u5c71\u5e02')},
'861324656':{'en': 'Huizhou, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u60e0\u5dde\u5e02')},
- '861324657':{'en': 'Shijiazhuang, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u77f3\u5bb6\u5e84\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data16.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data16.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data16.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data16.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861324657':{'en': 'Shijiazhuang, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u77f3\u5bb6\u5e84\u5e02')},
'861324658':{'en': 'Jiangmen, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6c5f\u95e8\u5e02')},
'861324659':{'en': 'Jiangmen, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6c5f\u95e8\u5e02')},
'86132466':{'en': 'Shenzhen, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6df1\u5733\u5e02')},
@@ -10018,5 +10019,4 @@
'861340922':{'en': 'Xinxiang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u65b0\u4e61\u5e02')},
'861340923':{'en': 'Xinxiang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u65b0\u4e61\u5e02')},
'861340924':{'en': 'Xinxiang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u65b0\u4e61\u5e02')},
- '861340925':{'en': 'Nanyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5357\u9633\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data17.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data17.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data17.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data17.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861340925':{'en': 'Nanyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5357\u9633\u5e02')},
'861340926':{'en': 'Nanyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5357\u9633\u5e02')},
'861340927':{'en': 'Nanyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5357\u9633\u5e02')},
'861340928':{'en': 'Nanyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5357\u9633\u5e02')},
@@ -10018,5 +10019,4 @@
'861365783':{'en': 'Guilin, Guangxi', 'zh':
u('\u5e7f\u897f\u6842\u6797\u5e02')},
'861365784':{'en': 'Wuzhou, Guangxi', 'zh':
u('\u5e7f\u897f\u68a7\u5dde\u5e02')},
'861365785':{'en': 'Yulin, Guangxi', 'zh':
u('\u5e7f\u897f\u7389\u6797\u5e02')},
- '861365786':{'en': 'Guilin, Guangxi', 'zh':
u('\u5e7f\u897f\u6842\u6797\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data18.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data18.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data18.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data18.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861365786':{'en': 'Guilin, Guangxi', 'zh':
u('\u5e7f\u897f\u6842\u6797\u5e02')},
'861365787':{'en': 'Nanning, Guangxi', 'zh':
u('\u5e7f\u897f\u5357\u5b81\u5e02')},
'861365788':{'en': 'Nanning, Guangxi', 'zh':
u('\u5e7f\u897f\u5357\u5b81\u5e02')},
'861365789':{'en': 'Beihai, Guangxi', 'zh':
u('\u5e7f\u897f\u5317\u6d77\u5e02')},
@@ -10018,5 +10019,4 @@
'861396519':{'en': 'Wuhu, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u829c\u6e56\u5e02')},
'86139652':{'en': 'Bengbu, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u868c\u57e0\u5e02')},
'861396520':{'en': 'Tongling, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u94dc\u9675\u5e02')},
- '861396521':{'en': 'Tongling, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u94dc\u9675\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data19.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data19.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data19.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data19.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861396521':{'en': 'Tongling, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u94dc\u9675\u5e02')},
'861396522':{'en': 'Tongling, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u94dc\u9675\u5e02')},
'861396523':{'en': 'Tongling, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u94dc\u9675\u5e02')},
'86139653':{'en': 'Suzhou, Anhui', 'zh':
u('\u5b89\u5fbd\u7701\u5bbf\u5dde\u5e02')},
@@ -10018,5 +10019,4 @@
'861508039':{'en': 'Putian, Fujian', 'zh':
u('\u798f\u5efa\u7701\u8386\u7530\u5e02')},
'861508040':{'en': 'Quanzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u6cc9\u5dde\u5e02')},
'861508041':{'en': 'Quanzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u6cc9\u5dde\u5e02')},
- '861508042':{'en': 'Quanzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u6cc9\u5dde\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data2.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data2.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data2.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data2.py 2026-04-13
15:30:43.000000000 +0200
@@ -2589,6 +2589,7 @@
'1734997':{'en': 'Ann Arbor, MI'},
'1734998':{'en': 'Ann Arbor, MI'},
'1737':{'en': 'Texas'},
+ '1738':{'en': 'California'},
'1740':{'en': 'Ohio'},
'1740223':{'en': 'Marion, OH'},
'1740246':{'en': 'Thornville, OH'},
@@ -10018,5 +10019,4 @@
'1918832':{'en': 'Tulsa, OK'},
'1918834':{'en': 'Tulsa, OK'},
'1918835':{'en': 'Tulsa, OK'},
- '1918836':{'en': 'Tulsa, OK'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data20.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data20.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data20.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data20.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861508042':{'en': 'Quanzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u6cc9\u5dde\u5e02')},
'861508043':{'en': 'Quanzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u6cc9\u5dde\u5e02')},
'861508044':{'en': 'Quanzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u6cc9\u5dde\u5e02')},
'861508045':{'en': 'Fuzhou, Fujian', 'zh':
u('\u798f\u5efa\u7701\u798f\u5dde\u5e02')},
@@ -10018,5 +10019,4 @@
'861534386':{'en': 'Shangqiu, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5546\u4e18\u5e02')},
'861534387':{'en': 'Pingdingshan, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5e73\u9876\u5c71\u5e02')},
'861534388':{'en': 'Pingdingshan, Henan', 'zh':
u('\u6cb3\u5357\u7701\u5e73\u9876\u5c71\u5e02')},
- '861534389':{'en': 'Luohe, Henan', 'zh':
u('\u6cb3\u5357\u7701\u6f2f\u6cb3\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data21.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data21.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data21.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data21.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861534389':{'en': 'Luohe, Henan', 'zh':
u('\u6cb3\u5357\u7701\u6f2f\u6cb3\u5e02')},
'861534390':{'en': 'Xinyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u4fe1\u9633\u5e02')},
'861534391':{'en': 'Jiaozuo, Henan', 'zh':
u('\u6cb3\u5357\u7701\u7126\u4f5c\u5e02')},
'861534392':{'en': 'Puyang, Henan', 'zh':
u('\u6cb3\u5357\u7701\u6fee\u9633\u5e02')},
@@ -10018,5 +10019,4 @@
'861568212':{'en': 'Chengdu, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u6210\u90fd\u5e02')},
'861568213':{'en': 'Chengdu, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u6210\u90fd\u5e02')},
'861568214':{'en': 'Chengdu, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u6210\u90fd\u5e02')},
- '861568215':{'en': 'Nanchong, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u5357\u5145\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data22.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data22.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data22.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data22.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861568215':{'en': 'Nanchong, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u5357\u5145\u5e02')},
'861568216':{'en': 'Nanchong, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u5357\u5145\u5e02')},
'861568217':{'en': 'Nanchong, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u5357\u5145\u5e02')},
'861568218':{'en': 'Nanchong, Sichuan', 'zh':
u('\u56db\u5ddd\u7701\u5357\u5145\u5e02')},
@@ -10018,5 +10019,4 @@
'861595708':{'en': 'Zhoushan, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u821f\u5c71\u5e02')},
'861595709':{'en': 'Zhoushan, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u821f\u5c71\u5e02')},
'86159571':{'en': 'Hangzhou, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u676d\u5dde\u5e02')},
- '86159572':{'en': 'Huzhou, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u6e56\u5dde\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data23.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data23.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data23.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data23.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '86159572':{'en': 'Huzhou, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u6e56\u5dde\u5e02')},
'86159573':{'en': 'Jiaxing, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u5609\u5174\u5e02')},
'86159574':{'en': 'Ningbo, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u5b81\u6ce2\u5e02')},
'86159575':{'en': 'Shaoxing, Zhejiang', 'zh':
u('\u6d59\u6c5f\u7701\u7ecd\u5174\u5e02')},
@@ -10018,5 +10019,4 @@
'861787597':{'en': 'Zhanjiang, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6e5b\u6c5f\u5e02')},
'861787598':{'en': 'Jiangmen, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6c5f\u95e8\u5e02')},
'861787599':{'en': 'Yangjiang, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u9633\u6c5f\u5e02')},
- '861787600':{'en': 'Zhongshan, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data24.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data24.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data24.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data24.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861787600':{'en': 'Zhongshan, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02')},
'861787601':{'en': 'Shenzhen, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6df1\u5733\u5e02')},
'861787602':{'en': 'Meizhou, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6885\u5dde\u5e02')},
'861787603':{'en': 'Yangjiang, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u9633\u6c5f\u5e02')},
@@ -10018,5 +10019,4 @@
'861820768':{'en': 'Chaozhou, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6f6e\u5dde\u5e02')},
'861820769':{'en': 'Dongguan, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u4e1c\u839e\u5e02')},
'861820770':{'en': 'Fangchenggang, Guangxi', 'zh':
u('\u5e7f\u897f\u9632\u57ce\u6e2f\u5e02')},
- '861820771':{'en': 'Nanning, Guangxi', 'zh':
u('\u5e7f\u897f\u5357\u5b81\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data25.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data25.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data25.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data25.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861820771':{'en': 'Nanning, Guangxi', 'zh':
u('\u5e7f\u897f\u5357\u5b81\u5e02')},
'861820772':{'en': 'Liuzhou, Guangxi', 'zh':
u('\u5e7f\u897f\u67f3\u5dde\u5e02')},
'861820773':{'en': 'Guilin, Guangxi', 'zh':
u('\u5e7f\u897f\u6842\u6797\u5e02')},
'861820774':{'en': 'Wuzhou, Guangxi', 'zh':
u('\u5e7f\u897f\u68a7\u5dde\u5e02')},
@@ -10018,5 +10019,4 @@
'86185635':{'en': 'Liaocheng, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u804a\u57ce\u5e02')},
'86185636':{'en': 'Weifang, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u6f4d\u574a\u5e02')},
'86185637':{'en': 'Jinan, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u6d4e\u5357\u5e02')},
- '86185638':{'en': 'Yantai, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u70df\u53f0\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data26.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data26.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data26.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data26.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '86185638':{'en': 'Yantai, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u70df\u53f0\u5e02')},
'86185639':{'en': 'Qingdao, Shandong', 'zh':
u('\u5c71\u4e1c\u7701\u9752\u5c9b\u5e02')},
'8618565':{'en': 'Guangzhou, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02')},
'86185656':{'en': 'Shenzhen, Guangdong', 'zh':
u('\u5e7f\u4e1c\u7701\u6df1\u5733\u5e02')},
@@ -10018,5 +10019,4 @@
'861883082':{'en': 'Hengshui, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u8861\u6c34\u5e02')},
'861883083':{'en': 'Hengshui, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u8861\u6c34\u5e02')},
'861883084':{'en': 'Hengshui, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u8861\u6c34\u5e02')},
- '861883085':{'en': 'Handan, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u90af\u90f8\u5e02')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data27.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data27.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data27.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data27.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '861883085':{'en': 'Handan, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u90af\u90f8\u5e02')},
'861883086':{'en': 'Handan, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u90af\u90f8\u5e02')},
'861883087':{'en': 'Handan, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u90af\u90f8\u5e02')},
'861883088':{'en': 'Handan, Hebei', 'zh':
u('\u6cb3\u5317\u7701\u90af\u90f8\u5e02')},
@@ -10018,5 +10019,4 @@
'9171645':{'en': 'Pandhurna, Madhya Pradesh'},
'9171646':{'en': 'Pandhurna, Madhya Pradesh'},
'9171647':{'en': 'Pandhurna, Madhya Pradesh'},
- '9171652':{'en': 'Saunsar, Madhya Pradesh'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data28.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data28.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data28.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data28.py 2026-04-13
15:30:44.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '9171652':{'en': 'Saunsar, Madhya Pradesh'},
'9171653':{'en': 'Saunsar, Madhya Pradesh'},
'9171654':{'en': 'Saunsar, Madhya Pradesh'},
'9171655':{'en': 'Saunsar, Madhya Pradesh'},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data3.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data3.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data3.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data3.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '1918836':{'en': 'Tulsa, OK'},
'1918838':{'en': 'Tulsa, OK'},
'1918865':{'en': 'Mannford, OK'},
'1918868':{'en': 'Kansas, OK'},
@@ -10018,5 +10019,4 @@
'3323431':{'en': 'Saint-Amand-Montrond', 'fr': 'Saint-Amand-Montrond'},
'3323432':{'en': u('Orl\u00e9ans'), 'fr': u('Orl\u00e9ans')},
'3323433':{'en': 'Romorantin-Lanthenay', 'fr': 'Romorantin-Lanthenay'},
- '3323434':{'en': 'Bourges', 'fr': 'Bourges'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data4.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data4.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data4.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data4.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '3323434':{'en': 'Bourges', 'fr': 'Bourges'},
'3323435':{'en': 'Blois', 'fr': 'Blois'},
'3323436':{'en': 'Tours', 'fr': 'Tours'},
'3323437':{'en': 'Tours', 'fr': 'Tours'},
@@ -10018,5 +10019,4 @@
'3358247':{'en': 'Cahors', 'fr': 'Cahors'},
'3358248':{'en': 'Decazeville', 'fr': 'Decazeville'},
'3358249':{'en': 'Espalion', 'fr': 'Espalion'},
- '3358250':{'en': 'Villefranche-de-Rouergue', 'fr':
'Villefranche-de-Rouergue'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data5.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data5.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data5.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data5.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '3358250':{'en': 'Villefranche-de-Rouergue', 'fr':
'Villefranche-de-Rouergue'},
'3358251':{'en': 'Lannemezan', 'fr': 'Lannemezan'},
'3358252':{'en': 'Toulouse', 'fr': 'Toulouse'},
'3358253':{'en': 'Decazeville', 'fr': 'Decazeville'},
@@ -10018,5 +10019,4 @@
'494556':{'de': u('Ahrensb\u00f6k-Gnissau'), 'en':
u('Ahrensb\u00f6k-Gnissau')},
'494557':{'de': 'Blunk', 'en': 'Blunk'},
'494558':{'de': 'Todesfelde', 'en': 'Todesfelde'},
- '494559':{'de': 'Wensin', 'en': 'Wensin'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data6.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data6.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data6.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data6.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '494559':{'de': 'Wensin', 'en': 'Wensin'},
'494561':{'de': 'Neustadt in Holstein', 'en': 'Neustadt in Holstein'},
'494562':{'de': u('Gr\u00f6mitz'), 'en': u('Gr\u00f6mitz')},
'494563':{'de': 'Scharbeutz-Haffkrug', 'en': 'Scharbeutz-Haffkrug'},
@@ -10018,5 +10019,4 @@
'55483632':{'en': u('Tubar\u00e3o - SC'), 'pt': u('Tubar\u00e3o - SC')},
'55483641':{'en': 'Tijucas - SC', 'pt': 'Tijucas - SC'},
'55483642':{'en': 'Gravatal - SC', 'pt': 'Gravatal - SC'},
- '55483643':{'en': u('Imaru\u00ed - SC'), 'pt': u('Imaru\u00ed - SC')},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data7.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data7.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data7.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data7.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '55483643':{'en': u('Imaru\u00ed - SC'), 'pt': u('Imaru\u00ed - SC')},
'55483644':{'en': 'Laguna - SC', 'pt': 'Laguna - SC'},
'55483645':{'en': u('Armaz\u00e9m - SC'), 'pt': u('Armaz\u00e9m - SC')},
'55483646':{'en': 'Laguna - SC', 'pt': 'Laguna - SC'},
@@ -10018,5 +10019,4 @@
'609467':{'en': 'Maran'},
'609468':{'en': 'Maran'},
'609470':{'en': 'Bukit Ibam'},
- '609471':{'en': 'Sungai Tekam'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data8.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data8.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data8.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data8.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '609471':{'en': 'Sungai Tekam'},
'609473':{'en': 'Bukit Ibam'},
'609474':{'en': 'Kota Gelangi'},
'609475':{'en': 'Maran'},
@@ -10018,5 +10019,4 @@
'61263506':{'en': 'Portland'},
'61263554':{'en': 'Portland'},
'61263555':{'en': 'Portland'},
- '6126357':{'en': 'Kandos'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/geodata/data9.py
new/phonenumbers-9.0.28/phonenumbers/geodata/data9.py
--- old/phonenumbers-9.0.26/phonenumbers/geodata/data9.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/geodata/data9.py 2026-04-13
15:30:43.000000000 +0200
@@ -19,6 +19,7 @@
# limitations under the License.
data = {
+ '6126357':{'en': 'Kandos'},
'61263571':{'en': 'Running Stream'},
'61263572':{'en': 'Bylong'},
'61263574':{'en': 'Glen Davis'},
@@ -10018,5 +10019,4 @@
'61350177':{'en': 'Ultima'},
'61350178':{'en': 'Waitchie'},
'61350179':{'en': 'Berriwillock'},
- '6135018':{'en': 'Mildura'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/phonenumberutil.py
new/phonenumbers-9.0.28/phonenumbers/phonenumberutil.py
--- old/phonenumbers-9.0.26/phonenumbers/phonenumberutil.py 2025-01-16
08:49:39.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/phonenumberutil.py 2026-04-13
16:12:45.000000000 +0200
@@ -1485,14 +1485,15 @@
Returns the formatted phone number in its original number format.
"""
- if (numobj.raw_input is not None and not
_has_formatting_pattern_for_number(numobj)):
+ format_rule = _choose_formatting_pattern_for_numobj(numobj)
+ if (numobj.raw_input is not None and format_rule is None):
# We check if we have the formatting pattern because without that, we
# might format the number as a group without national prefix.
return numobj.raw_input
if numobj.country_code_source is CountryCodeSource.UNSPECIFIED:
return format_number(numobj, PhoneNumberFormat.NATIONAL)
- formatted_number = _format_original_allow_mods(numobj, region_calling_from)
+ formatted_number = _format_original_allow_mods(numobj,
region_calling_from, format_rule)
num_raw_input = numobj.raw_input
# If no digit is inserted/removed/modified as a result of our formatting,
# we return the formatted phone number; otherwise we return the raw input
@@ -1505,7 +1506,7 @@
return formatted_number
-def _format_original_allow_mods(numobj, region_calling_from):
+def _format_original_allow_mods(numobj, region_calling_from, format_rule):
if (numobj.country_code_source ==
CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN):
return format_number(numobj, PhoneNumberFormat.INTERNATIONAL)
elif numobj.country_code_source == CountryCodeSource.FROM_NUMBER_WITH_IDD:
@@ -1527,12 +1528,6 @@
if (_raw_input_contains_national_prefix(numobj.raw_input,
national_prefix, region_code)):
# If so, we can safely return the national format.
return national_format
- # Metadata cannot be None here because ndd_prefix_for_region() (above)
returns None if
- # there is no metadata for the region.
- metadata = PhoneMetadata.metadata_for_region(region_code)
- assert metadata is not None
- national_number = national_significant_number(numobj)
- format_rule =
_choose_formatting_pattern_for_number(metadata.number_format, national_number)
# The format rule could still be null here if the national number was
# 0 and there was no raw input (this should not be possible for
# numbers generated by the phonenumber library as they would also not
@@ -1578,15 +1573,28 @@
return False
-def _has_formatting_pattern_for_number(numobj):
+def _choose_formatting_pattern_for_numobj(numobj):
country_code = numobj.country_code
phone_number_region = region_code_for_country_code(country_code)
metadata = PhoneMetadata.metadata_for_region_or_calling_code(country_code,
phone_number_region)
if metadata is None:
- return False
+ return None
national_number = national_significant_number(numobj)
- format_rule =
_choose_formatting_pattern_for_number(metadata.number_format, national_number)
- return format_rule is not None
+ return _choose_formatting_pattern_for_number(metadata.number_format,
national_number)
+
+
+def _choose_formatting_pattern_for_number(available_formats, national_number):
+ for num_format in available_formats:
+ size = len(num_format.leading_digits_pattern)
+ # We always use the last leading_digits_pattern, as it is the most
detailed.
+ if size > 0:
+ ld_pattern = re.compile(num_format.leading_digits_pattern[-1])
+ ld_match = ld_pattern.match(national_number)
+ if size == 0 or ld_match:
+ format_pattern = re.compile(num_format.pattern)
+ if fullmatch(format_pattern, national_number):
+ return num_format
+ return None
def format_out_of_country_keeping_alpha_chars(numobj, region_calling_from):
@@ -1769,20 +1777,6 @@
return _format_nsn_using_pattern(number, formatting_pattern,
num_format, carrier_code)
-def _choose_formatting_pattern_for_number(available_formats, national_number):
- for num_format in available_formats:
- size = len(num_format.leading_digits_pattern)
- # We always use the last leading_digits_pattern, as it is the most
detailed.
- if size > 0:
- ld_pattern = re.compile(num_format.leading_digits_pattern[-1])
- ld_match = ld_pattern.match(national_number)
- if size == 0 or ld_match:
- format_pattern = re.compile(num_format.pattern)
- if fullmatch(format_pattern, national_number):
- return num_format
- return None
-
-
def _format_nsn_using_pattern(national_number, formatting_pattern,
number_format,
carrier_code=None):
# Note that carrier_code is optional - if None or an empty string, no
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/phonenumberutil.pyi
new/phonenumbers-9.0.28/phonenumbers/phonenumberutil.pyi
--- old/phonenumbers-9.0.26/phonenumbers/phonenumberutil.pyi 2024-04-24
07:28:29.000000000 +0200
+++ new/phonenumbers-9.0.28/phonenumbers/phonenumberutil.pyi 2026-04-13
16:12:45.000000000 +0200
@@ -152,14 +152,14 @@
def format_number_for_mobile_dialing(numobj: PhoneNumber, region_calling_from:
str, with_formatting: bool) -> str: ...
def format_out_of_country_calling_number(numobj: PhoneNumber,
region_calling_from: str) -> str: ...
def format_in_original_format(numobj: PhoneNumber, region_calling_from: str)
-> str: ...
-def _format_original_allow_mods(numobj: PhoneNumber, region_calling_from: str)
-> str: ...
+def _format_original_allow_mods(numobj: PhoneNumber, region_calling_from: str,
format_rule: NumberFormat) -> str: ...
def _raw_input_contains_national_prefix(raw_input: str, national_prefix: str,
region_code: str) -> bool: ...
-def _has_formatting_pattern_for_number(numobj: PhoneNumber) -> bool: ...
+def _choose_formatting_pattern_for_numobj(numobj: PhoneNumber) ->
NumberFormat: ...
+def _choose_formatting_pattern_for_number(available_formats:
list[NumberFormat], national_number: str) -> NumberFormat | None: ...
def format_out_of_country_keeping_alpha_chars(numobj: PhoneNumber,
region_calling_from: str) -> str: ...
def national_significant_number(numobj: PhoneNumber) -> str: ...
def _prefix_number_with_country_calling_code(country_code: int, num_format:
int, formatted_number: str) -> str: ...
def _format_nsn(number: str, metadata: PhoneMetadata, num_format: int,
carrier_code: str | None = ...) -> str: ...
-def _choose_formatting_pattern_for_number(available_formats:
list[NumberFormat], national_number: str) -> NumberFormat | None: ...
def _format_nsn_using_pattern(national_number: str, formatting_pattern:
NumberFormat, number_format: int, carrier_code: str | None = ...) -> str: ...
def example_number(region_code: str) -> PhoneNumber | None: ...
def invalid_example_number(region_code: str) -> PhoneNumber | None: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers/tzdata/data0.py
new/phonenumbers-9.0.28/phonenumbers/tzdata/data0.py
--- old/phonenumbers-9.0.26/phonenumbers/tzdata/data0.py 2026-03-13
11:42:23.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers/tzdata/data0.py 2026-04-13
16:12:45.000000000 +0200
@@ -1448,6 +1448,7 @@
'1732':('America/New_York',),
'1734':('America/New_York',),
'1737':('America/Chicago',),
+ '1738':('America/Los_Angeles',),
'1740':('America/New_York',),
'1742':('America/Toronto',),
'1743':('America/New_York',),
@@ -2122,6 +2123,8 @@
'262':('Indian/Mayotte', 'Indian/Reunion'),
'262262':('Indian/Reunion',),
'262263':('Indian/Reunion',),
+ '2622688':('Indian/Reunion',),
+ '2622689':('Indian/Mayotte',),
'262269':('Indian/Mayotte',),
'26263':('Indian/Mayotte',),
'26269':('Indian/Reunion',),
@@ -3296,6 +3299,7 @@
'97624':('Asia/Hovd',),
'97625':('Asia/Ulaanbaatar',),
'976258':('Asia/Choibalsan',),
+ '97626':('Asia/Ulaanbaatar',),
'9765':('Asia/Ulaanbaatar',),
'9766':('Asia/Ulaanbaatar',),
'9767':('Asia/Ulaanbaatar',),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/phonenumbers-9.0.26/phonenumbers.egg-info/PKG-INFO
new/phonenumbers-9.0.28/phonenumbers.egg-info/PKG-INFO
--- old/phonenumbers-9.0.26/phonenumbers.egg-info/PKG-INFO 2026-03-13
12:34:07.000000000 +0100
+++ new/phonenumbers-9.0.28/phonenumbers.egg-info/PKG-INFO 2026-04-13
16:15:59.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: phonenumbers
-Version: 9.0.26
+Version: 9.0.28
Summary: Python version of Google's common library for parsing, formatting,
storing and validating international phone numbers.
Author-email: David Drysdale <[email protected]>
License-Expression: Apache-2.0