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

barseghyanartur / faker-file / 6115111440

07 Sep 2023 09:51PM CUT coverage: 99.735% (+5.4%) from 94.308%
6115111440

push

github

barseghyanartur
Add more tests

3 of 3 new or added lines in 1 file covered. (100.0%)

3015 of 3023 relevant lines covered (99.74%)

4.84 hits per line

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

100.0
/src/faker_file/contrib/pdf_file/pdfkit_snippets.py
1
import base64
4✔
2

3
from ...base import DEFAULT_FORMAT_FUNC
4✔
4

5
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
4✔
6
__copyright__ = "2022-2023 Artur Barseghyan"
4✔
7
__license__ = "MIT"
4✔
8
__all__ = (
4✔
9
    "add_h1_heading",
10
    "add_h2_heading",
11
    "add_h3_heading",
12
    "add_h4_heading",
13
    "add_h5_heading",
14
    "add_h6_heading",
15
    "add_heading",
16
    "add_page_break",
17
    "add_paragraph",
18
    "add_picture",
19
    "add_table",
20
)
21

22

23
def create_data_url(image_bytes: bytes, image_format: str) -> str:
4✔
24
    """Create data URL."""
25
    encoded_image = base64.b64encode(image_bytes).decode("utf-8")
4✔
26
    return f"data:image/{image_format};base64,{encoded_image}"
4✔
27

28

29
def add_table(
4✔
30
    provider,
31
    generator,
32
    document,
33
    data,
34
    counter,
35
    **kwargs,
36
):
37
    """Callable responsible for the table generation using pdfkit."""
38
    rows = kwargs.get("rows", 3)
4✔
39
    cols = kwargs.get("cols", 4)
4✔
40

41
    # Begin the HTML table
42
    table_html = "<table>"
4✔
43

44
    for row_num in range(rows):
4✔
45
        table_html += "<tr>"
4✔
46

47
        for col_num in range(cols):
4✔
48
            text = provider.generator.paragraph()
4✔
49
            table_html += f"<td>{text}</td>"
4✔
50

51
            # Meta-data
52
            data.setdefault("content_modifiers", {})
4✔
53
            data["content_modifiers"].setdefault("add_table", {})
4✔
54
            data["content_modifiers"]["add_table"].setdefault(counter, [])
4✔
55
            data["content_modifiers"]["add_table"][counter].append(text)
4✔
56

57
        table_html += "</tr>"
4✔
58

59
    # End the HTML table
60
    table_html += "</table>"
4✔
61

62
    document += "\r\n" + table_html
4✔
63

64

65
def add_picture(
4✔
66
    provider,
67
    generator,
68
    document,
69
    data,
70
    counter,
71
    **kwargs,
72
):
73
    """Callable responsible for the picture generation using pdfkit."""
74
    image = kwargs.get("image", provider.generator.image())
4✔
75
    data_url = create_data_url(image, "png")
4✔
76
    document += f"<img src='{data_url}' alt='Inline Image' />"
4✔
77

78

79
def add_page_break(
4✔
80
    provider,
81
    generator,
82
    document,
83
    data,
84
    counter,
85
    **kwargs,
86
):
87
    """Callable responsible for the page break insertion using pdfkit."""
88
    page_break_html = "<div style='page-break-before: always;'></div>"
4✔
89
    document += "\r\n" + page_break_html
4✔
90

91

92
def add_paragraph(
4✔
93
    provider,
94
    generator,
95
    document,
96
    data,
97
    counter,
98
    **kwargs,
99
):
100
    """Callable responsible for paragraph generation using pdfkit."""
101
    content = kwargs.get("content", None)
4✔
102
    max_nb_chars = kwargs.get("content", 5_000)
4✔
103
    wrap_chars_after = kwargs.get("wrap_chars_after", None)
4✔
104
    format_func = kwargs.get("format_func", DEFAULT_FORMAT_FUNC)
4✔
105

106
    _content = provider._generate_text_content(
4✔
107
        max_nb_chars=max_nb_chars,
108
        wrap_chars_after=wrap_chars_after,
109
        content=content,
110
        format_func=format_func,
111
    )
112

113
    paragraph_html = f"<div><p>{_content}</p></div>"
4✔
114
    document += "\r\n" + paragraph_html
4✔
115

116
    # Meta-data
117
    data.setdefault("content_modifiers", {})
4✔
118
    data["content_modifiers"].setdefault("add_paragraph", {})
4✔
119
    data["content_modifiers"]["add_paragraph"].setdefault(counter, [])
4✔
120
    data["content_modifiers"]["add_paragraph"][counter].append(_content)
4✔
121
    data["content"] += "\r\n" + _content
4✔
122

123

124
def add_heading(
4✔
125
    provider,
126
    generator,
127
    document,
128
    data,
129
    counter,
130
    **kwargs,
131
):
132
    """Callable responsible for heading generation using pdfkit."""
133
    content = kwargs.get("content", None)
4✔
134
    max_nb_chars = kwargs.get("max_nb_chars", 30)
4✔
135
    wrap_chars_after = kwargs.get("wrap_chars_after", None)
4✔
136
    format_func = kwargs.get("format_func", DEFAULT_FORMAT_FUNC)
4✔
137
    level = kwargs.get("level", 1)
4✔
138
    if level < 1 or level > 6:
4✔
139
        level = 1
4✔
140

141
    _content = provider._generate_text_content(
4✔
142
        max_nb_chars=max_nb_chars,
143
        wrap_chars_after=wrap_chars_after,
144
        content=content,
145
        format_func=format_func,
146
    )
147

148
    heading_html = f"<div><h{level}>{_content}</h{level}></div>"
4✔
149
    document += "\r\n" + heading_html
4✔
150

151
    # Meta-data
152
    data.setdefault("content_modifiers", {})
4✔
153
    data["content_modifiers"].setdefault("add_heading", {})
4✔
154
    data["content_modifiers"]["add_heading"].setdefault(counter, [])
4✔
155
    data["content_modifiers"]["add_heading"][counter].append(_content)
4✔
156
    data["content"] += "\r\n" + _content
4✔
157

158

159
def add_h1_heading(provider, generator, document, data, counter, **kwargs):
4✔
160
    """Callable responsible for the h1 heading generation."""
161
    return add_heading(
4✔
162
        provider, generator, document, data, counter, level=1, **kwargs
163
    )
164

165

166
def add_h2_heading(provider, generator, document, data, counter, **kwargs):
4✔
167
    """Callable responsible for the h2 heading generation."""
168
    return add_heading(
4✔
169
        provider, generator, document, data, counter, level=2, **kwargs
170
    )
171

172

173
def add_h3_heading(provider, generator, document, data, counter, **kwargs):
4✔
174
    """Callable responsible for the h3 heading generation."""
175
    return add_heading(
4✔
176
        provider, generator, document, data, counter, level=3, **kwargs
177
    )
178

179

180
def add_h4_heading(provider, generator, document, data, counter, **kwargs):
4✔
181
    """Callable responsible for the h4 heading generation."""
182
    return add_heading(
4✔
183
        provider, generator, document, data, counter, level=4, **kwargs
184
    )
185

186

187
def add_h5_heading(provider, generator, document, data, counter, **kwargs):
4✔
188
    """Callable responsible for the h5 heading generation."""
189
    return add_heading(
4✔
190
        provider, generator, document, data, counter, level=5, **kwargs
191
    )
192

193

194
def add_h6_heading(provider, generator, document, data, counter, **kwargs):
4✔
195
    """Callable responsible for the h6 heading generation."""
196
    return add_heading(
4✔
197
        provider, generator, document, data, counter, level=6, **kwargs
198
    )
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc