File: bm_docutils.py

package info (click to toggle)
scalene 1.5.51-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 15,528 kB
  • sloc: cpp: 22,930; python: 13,403; javascript: 11,769; ansic: 817; makefile: 196; sh: 45
file content (62 lines) | stat: -rwxr-xr-x 1,731 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env python3
"""
Convert Docutils' documentation from reStructuredText to <format>.
"""

import contextlib
from pathlib import Path
import time

import docutils
from docutils import core
import pyperf
import builtins
try:
    builtins.profile
except AttributeError:
    # No line profiler, provide a pass-through version
    def profile(func): return func
    builtins.profile = profile

try:
    from docutils.utils.math.math2html import Trace
except ImportError:
    pass
else:
    Trace.show = lambda message, channel: ...  # don't print to console

DOC_ROOT = (Path(__file__).parent / "docutils_data" / "docs").resolve()

@profile
def build_html(doc_root):
    elapsed = 0
    for file in doc_root.rglob("*.txt"):
        file_contents = file.read_text(encoding="utf-8")
        # t0 = pyperf.perf_counter()
        # with contextlib.suppress(docutils.ApplicationError):
        core.publish_string(source=file_contents,
                            reader_name="standalone",
                            parser_name="restructuredtext",
                            writer_name="html5",
                            settings_overrides={
                                "input_encoding": "unicode",
                                "output_encoding": "unicode",
                                "report_level": 5,
                            })
        # elapsed += pyperf.perf_counter() - t0
    # return elapsed

@profile
def bench_docutils(loops, doc_root):

    for _ in range(loops):
        build_html(doc_root)


if __name__ == "__main__":
    # runner = pyperf.Runner()
    start_p = time.perf_counter()
    bench_docutils(5, DOC_ROOT)
    stop_p = time.perf_counter()
    print("Time elapsed: ", stop_p - start_p)