Skip to content

Commit d6aeba8

Browse files
authored
added phone numbers for de_CH and it_CH (#2147)
1 parent 9cfda1c commit d6aeba8

File tree

4 files changed

+169
-23
lines changed

4 files changed

+169
-23
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from .. import Provider as PhoneNumberProvider
2+
3+
4+
class Provider(PhoneNumberProvider):
5+
formats = (
6+
# source: https://de.wikipedia.org/wiki/Telefonnummer_(Schweiz)#Schreibweisen
7+
"+41 2# ### ## ##",
8+
"+41 3# ### ## ##",
9+
"+41 4# ### ## ##",
10+
"+41 5# ### ## ##",
11+
"+41 6# ### ## ##",
12+
"+41 7# ### ## ##",
13+
"+41 8# ### ## ##",
14+
"+41 9# ### ## ##",
15+
"+41 (0)2# ### ## ##",
16+
"+41 (0)3% ### ## ##",
17+
"+41 (0)4% ### ## ##",
18+
"+41 (0)5# ### ## ##",
19+
"+41 (0)6# ### ## ##",
20+
"+41 (0)7% ### ## ##",
21+
"+41 (0)8# ### ## ##",
22+
"+41 (0)9# ### ## ##",
23+
"02# ### ## ##",
24+
"03% ### ## ##",
25+
"04% ### ## ##",
26+
"05# ### ## ##",
27+
"06# ### ## ##",
28+
"07% ### ## ##",
29+
"08# ### ## ##",
30+
"09# ### ## ##",
31+
# see: http://www.bakom.admin.ch/themen/telekom/00479/00607/index.html
32+
"084# ### ###",
33+
"0878 ### ###",
34+
"0900 ### ###",
35+
"0901 ### ###",
36+
"0906 ### ###",
37+
)

faker/providers/phone_number/fr_CH/__init__.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class Provider(PhoneNumberProvider):
55
formats = (
6+
# source: https://de.wikipedia.org/wiki/Telefonnummer_(Schweiz)#Schreibweisen
67
"+41 2# ### ## ##",
78
"+41 3# ### ## ##",
89
"+41 4# ### ## ##",
@@ -12,19 +13,19 @@ class Provider(PhoneNumberProvider):
1213
"+41 8# ### ## ##",
1314
"+41 9# ### ## ##",
1415
"+41 (0)2# ### ## ##",
15-
"+41 (0)3# ### ## ##",
16-
"+41 (0)4# ### ## ##",
16+
"+41 (0)3% ### ## ##",
17+
"+41 (0)4% ### ## ##",
1718
"+41 (0)5# ### ## ##",
1819
"+41 (0)6# ### ## ##",
19-
"+41 (0)7# ### ## ##",
20+
"+41 (0)7% ### ## ##",
2021
"+41 (0)8# ### ## ##",
2122
"+41 (0)9# ### ## ##",
2223
"02# ### ## ##",
23-
"03# ### ## ##",
24-
"04# ### ## ##",
24+
"03% ### ## ##",
25+
"04% ### ## ##",
2526
"05# ### ## ##",
2627
"06# ### ## ##",
27-
"07# ### ## ##",
28+
"07% ### ## ##",
2829
"08# ### ## ##",
2930
"09# ### ## ##",
3031
# see: http://www.bakom.admin.ch/themen/telekom/00479/00607/index.html
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from .. import Provider as PhoneNumberProvider
2+
3+
4+
class Provider(PhoneNumberProvider):
5+
formats = (
6+
# source: https://de.wikipedia.org/wiki/Telefonnummer_(Schweiz)#Schreibweisen
7+
"+41 2# ### ## ##",
8+
"+41 3# ### ## ##",
9+
"+41 4# ### ## ##",
10+
"+41 5# ### ## ##",
11+
"+41 6# ### ## ##",
12+
"+41 7# ### ## ##",
13+
"+41 8# ### ## ##",
14+
"+41 9# ### ## ##",
15+
"+41 (0)2# ### ## ##",
16+
"+41 (0)3% ### ## ##",
17+
"+41 (0)4% ### ## ##",
18+
"+41 (0)5# ### ## ##",
19+
"+41 (0)6# ### ## ##",
20+
"+41 (0)7% ### ## ##",
21+
"+41 (0)8# ### ## ##",
22+
"+41 (0)9# ### ## ##",
23+
"02# ### ## ##",
24+
"03% ### ## ##",
25+
"04% ### ## ##",
26+
"05# ### ## ##",
27+
"06# ### ## ##",
28+
"07% ### ## ##",
29+
"08# ### ## ##",
30+
"09# ### ## ##",
31+
# see: http://www.bakom.admin.ch/themen/telekom/00479/00607/index.html
32+
"084# ### ###",
33+
"0878 ### ###",
34+
"0900 ### ###",
35+
"0901 ### ###",
36+
"0906 ### ###",
37+
)

tests/providers/test_phone_number.py

Lines changed: 88 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,12 @@ def test_msisdn(self, faker, num_samples):
2525
class TestArAe:
2626
"""Test ar_AE phone number provider methods"""
2727

28-
cellphone_pattern: str = r"(?:\+|00)971\s?5[024568]\s?\d{3}\s?\d{4}|" r"05[024568]\s?\d{3}\s?\d{4}"
29-
telephone_pattern: str = r"(?:\+|00)971\s?[1234679]\s?\d{3}\s?\d{4}|" r"0[1234679]\s?\d{3}\s?\d{4}"
28+
cellphone_pattern: str = (
29+
r"(?:\+|00)971\s?5[024568]\s?\d{3}\s?\d{4}|" r"05[024568]\s?\d{3}\s?\d{4}"
30+
)
31+
telephone_pattern: str = (
32+
r"(?:\+|00)971\s?[1234679]\s?\d{3}\s?\d{4}|" r"0[1234679]\s?\d{3}\s?\d{4}"
33+
)
3034
toll_pattern: str = r"200\d{4}|" r"600\d{6}|" r"800\d{3,7}"
3135
service_phone_pattern: str = r"9(?:9(?:9|8|7|6|1)|01|22)"
3236

@@ -82,7 +86,9 @@ def test_phone_number(self, faker, num_samples):
8286
for _ in range(num_samples):
8387
phone_number = faker.phone_number()
8488
assert isinstance(phone_number, str)
85-
assert self.cellphone_patterns.fullmatch(phone_number) or self.landline_patterns.fullmatch(phone_number)
89+
assert self.cellphone_patterns.fullmatch(
90+
phone_number
91+
) or self.landline_patterns.fullmatch(phone_number)
8692

8793
def test_cellphone_number(self, faker, num_samples):
8894
for _ in range(num_samples):
@@ -97,11 +103,46 @@ def test_landline_number(self, faker, num_samples):
97103
assert self.landline_patterns.fullmatch(landline_number)
98104

99105

106+
class TestDeCh:
107+
def test_phone_number(self, faker, num_samples):
108+
pattern: Pattern = re.compile(
109+
r"((0041|\+41) ?)?((\(0\)|0)?\d{2})? ?[0-9]{3} ?[0-9]{2} ?[0-9]{2}|"
110+
r"0[89][0-9]{2} ?[0-9]{3} ?[0-9]{3}"
111+
)
112+
for _ in range(num_samples):
113+
phone_number = faker.phone_number()
114+
assert pattern.fullmatch(phone_number)
115+
116+
117+
class TestFrCh:
118+
def test_phone_number(self, faker, num_samples):
119+
pattern: Pattern = re.compile(
120+
r"((0041|\+41) ?)?((\(0\)|0)?\d{2})? ?[0-9]{3} ?[0-9]{2} ?[0-9]{2}|"
121+
r"0[89][0-9]{2} ?[0-9]{3} ?[0-9]{3}"
122+
)
123+
for _ in range(num_samples):
124+
phone_number = faker.phone_number()
125+
assert pattern.fullmatch(phone_number)
126+
127+
128+
class TestItCh:
129+
def test_phone_number(self, faker, num_samples):
130+
pattern: Pattern = re.compile(
131+
r"((0041|\+41) ?)?((\(0\)|0)?\d{2})? ?[0-9]{3} ?[0-9]{2} ?[0-9]{2}|"
132+
r"0[89][0-9]{2} ?[0-9]{3} ?[0-9]{3}"
133+
)
134+
for _ in range(num_samples):
135+
phone_number = faker.phone_number()
136+
assert pattern.fullmatch(phone_number)
137+
138+
100139
class TestCsCz:
101140
"""Test cs_CZ phone number provider methods"""
102141

103142
def test_phone_number(self, faker, num_samples):
104-
pattern: Pattern = re.compile(r"^(00420|\+420)? ?[6-7][0-9]{2} ?[0-9]{3} ?[0-9]{3}$")
143+
pattern: Pattern = re.compile(
144+
r"^(00420|\+420)? ?[6-7][0-9]{2} ?[0-9]{3} ?[0-9]{3}$"
145+
)
105146
for _ in range(num_samples):
106147
phone_number = faker.phone_number()
107148
assert pattern.fullmatch(phone_number)
@@ -112,18 +153,38 @@ class TestEnPh:
112153

113154
@classmethod
114155
def setup_class(cls):
115-
cls.mobile_number_pattern: Pattern = re.compile(r"^(?:0|\+63)(\d+)-\d{3}-\d{4}$")
116-
cls.area2_landline_number_pattern: Pattern = re.compile(r"^(?:0|\+63)2-(\d{4})-\d{4}")
117-
cls.non_area2_landline_number_pattern: Pattern = re.compile(r"^(?:0|\+63)(\d{2})-(\d{3})-\d{4}")
118-
cls.globe_mobile_number_prefixes = EnPhPhoneNumberProvider.globe_mobile_number_prefixes
119-
cls.smart_mobile_number_prefixes = EnPhPhoneNumberProvider.smart_mobile_number_prefixes
120-
cls.sun_mobile_number_prefixes = EnPhPhoneNumberProvider.sun_mobile_number_prefixes
156+
cls.mobile_number_pattern: Pattern = re.compile(
157+
r"^(?:0|\+63)(\d+)-\d{3}-\d{4}$"
158+
)
159+
cls.area2_landline_number_pattern: Pattern = re.compile(
160+
r"^(?:0|\+63)2-(\d{4})-\d{4}"
161+
)
162+
cls.non_area2_landline_number_pattern: Pattern = re.compile(
163+
r"^(?:0|\+63)(\d{2})-(\d{3})-\d{4}"
164+
)
165+
cls.globe_mobile_number_prefixes = (
166+
EnPhPhoneNumberProvider.globe_mobile_number_prefixes
167+
)
168+
cls.smart_mobile_number_prefixes = (
169+
EnPhPhoneNumberProvider.smart_mobile_number_prefixes
170+
)
171+
cls.sun_mobile_number_prefixes = (
172+
EnPhPhoneNumberProvider.sun_mobile_number_prefixes
173+
)
121174
cls.mobile_number_prefixes = (
122-
cls.globe_mobile_number_prefixes + cls.smart_mobile_number_prefixes + cls.sun_mobile_number_prefixes
175+
cls.globe_mobile_number_prefixes
176+
+ cls.smart_mobile_number_prefixes
177+
+ cls.sun_mobile_number_prefixes
178+
)
179+
cls.bayantel_landline_identifiers = (
180+
EnPhPhoneNumberProvider.bayantel_landline_identifiers
181+
)
182+
cls.misc_landline_identifiers = (
183+
EnPhPhoneNumberProvider.misc_landline_identifiers
184+
)
185+
cls.non_area2_landline_area_codes = (
186+
EnPhPhoneNumberProvider.non_area2_landline_area_codes
123187
)
124-
cls.bayantel_landline_identifiers = EnPhPhoneNumberProvider.bayantel_landline_identifiers
125-
cls.misc_landline_identifiers = EnPhPhoneNumberProvider.misc_landline_identifiers
126-
cls.non_area2_landline_area_codes = EnPhPhoneNumberProvider.non_area2_landline_area_codes
127188

128189
def test_globe_mobile_number(self, faker, num_samples):
129190
for _ in range(num_samples):
@@ -304,7 +365,13 @@ class TestHuHu:
304365

305366
def test_phone_number(self, faker, num_samples):
306367
pattern: Pattern = re.compile(
307-
r"(?:" r"\+36 \d{2} |" r"\(06\)\d{2}/|" r"\(\d{2}\)/|" r"\d{2}/|" r"06-\d{1,2}/" r")\d{3}[- ]\d{4}",
368+
r"(?:"
369+
r"\+36 \d{2} |"
370+
r"\(06\)\d{2}/|"
371+
r"\(\d{2}\)/|"
372+
r"\d{2}/|"
373+
r"06-\d{1,2}/"
374+
r")\d{3}[- ]\d{4}",
308375
)
309376
for _ in range(num_samples):
310377
phone_number = faker.phone_number()
@@ -317,7 +384,8 @@ class TestHyAm:
317384

318385
def test_phone_number(self, faker, num_samples):
319386
pattern: Pattern = re.compile(
320-
r"(?:[23]\d{2}-|\([23]\d{2}\) |[23]\d{2}\.)\d{5}|" r"(?:(?:10|9\d)-|\((?:10|9\d)\) |(?:10|9\d)\.)\d{6}",
387+
r"(?:[23]\d{2}-|\([23]\d{2}\) |[23]\d{2}\.)\d{5}|"
388+
r"(?:(?:10|9\d)-|\((?:10|9\d)\) |(?:10|9\d)\.)\d{6}",
321389
)
322390
for _ in range(num_samples):
323391
phone_number = faker.phone_number()
@@ -364,7 +432,10 @@ class TestPtBr:
364432

365433
def test_phone_number(self, faker, num_samples):
366434
pattern: Pattern = re.compile(
367-
r"(?:\+55 )?" r"(?:[1-8]1|84|\((?:0[1-8]1|084)\))" r" \d{4}[ -]\d{4}|" r"\d{4}?[ -]\d{3}[ -]\d{4}",
435+
r"(?:\+55 )?"
436+
r"(?:[1-8]1|84|\((?:0[1-8]1|084)\))"
437+
r" \d{4}[ -]\d{4}|"
438+
r"\d{4}?[ -]\d{3}[ -]\d{4}",
368439
)
369440
for _ in range(num_samples):
370441
phone_number = faker.phone_number()

0 commit comments

Comments
 (0)