• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

joke2k / faker / 13059236656

30 Jan 2025 06:54PM UTC coverage: 95.923% (-0.01%) from 95.935%
13059236656

push

github

fcurella
Merge branch 'ChristinaRau-fix/master/new-de-providers'

193 of 197 new or added lines in 24 files covered. (97.97%)

7 existing lines in 4 files now uncovered.

10400 of 10842 relevant lines covered (95.92%)

18.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.55
/faker/providers/internet/zh_CN/__init__.py
1
from collections import OrderedDict
19✔
2

3
from faker.utils.decorators import slugify
19✔
4

5
from .. import Provider as InternetProvider
19✔
6

7

8
class Provider(InternetProvider):
19✔
9
    user_name_formats = (
19✔
10
        "{{last_romanized_name}}.{{first_romanized_name}}",
11
        "{{first_romanized_name}}.{{last_romanized_name}}",
12
        "{{first_romanized_name}}##",
13
        "?{{last_romanized_name}}",
14
    )
15

16
    tlds = OrderedDict(
19✔
17
        (
18
            ("cn", 0.8),
19
            ("net", 0.1),
20
            ("com", 0.05),
21
            ("org", 0.05),
22
        )
23
    )
24

25
    second_level_domains = (
19✔
26
        "ac",
27
        "com",
28
        "edu",
29
        "gov",
30
        "mil",
31
        "net",
32
        "org",
33
        "ah",
34
        "bj",
35
        "cq",
36
        "fj",
37
        "gd",
38
        "gs",
39
        "gz",
40
        "gx",
41
        "ha",
42
        "hb",
43
        "he",
44
        "hi",
45
        "hk",
46
        "hl",
47
        "hn",
48
        "jl",
49
        "js",
50
        "jx",
51
        "ln",
52
        "mo",
53
        "nm",
54
        "nx",
55
        "qh",
56
        "sc",
57
        "sd",
58
        "sh",
59
        "sn",
60
        "sx",
61
        "tj",
62
        "xj",
63
        "xz",
64
        "yn",
65
        "zj",
66
    )
67

68
    domain_formats = (
19✔
69
        "##",
70
        "??",
71
        "{{first_romanized_name}}",
72
        "{{last_romanized_name}}",
73
        "{{first_romanized_name}}{{last_romanized_name}}",
74
        "{{last_romanized_name}}{{last_romanized_name}}",
75
        "{{first_romanized_name}}{{first_romanized_name}}",
76
    )
77

78
    @slugify
19✔
79
    def domain_word(self) -> str:
19✔
80
        pattern: str = self.random_element(self.domain_formats)
19✔
81
        if "#" in pattern or "?" in pattern:
19✔
82
            return self.bothify(pattern)
19✔
83
        else:
84
            return self.generator.parse(pattern)
19✔
85

86
    def domain_name(self, levels: int = 1) -> str:
19✔
87
        if levels < 1:
19✔
88
            raise ValueError("levels must be greater than or equal to 1")
19✔
89
        if levels == 1:
19✔
90
            domain_word = self.domain_word()
19✔
91
            # Avoids he.cn as seen in issue #687
92
            while domain_word in self.second_level_domains:
19✔
UNCOV
93
                domain_word = self.domain_word()
×
94
            return domain_word + "." + self.tld()
19✔
95
        elif levels == 2:
19✔
96
            my_tld = self.tld()
19✔
97
            if my_tld == "cn":
19✔
98
                my_second_level: str = self.random_element(self.second_level_domains)
19✔
99
            else:
100
                my_second_level = self.domain_word()
19✔
101
            return self.domain_word() + "." + my_second_level + "." + my_tld
19✔
102
        else:
103
            return self.domain_word() + "." + self.domain_name(levels - 1)
19✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc