File: conf.py

package info (click to toggle)
vdirsyncer 0.19.3-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 980 kB
  • sloc: python: 7,388; makefile: 204; sh: 66
file content (108 lines) | stat: -rw-r--r-- 2,686 bytes parent folder | download | duplicates (2)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from __future__ import annotations

import datetime
import os

from pkg_resources import get_distribution

extensions = ["sphinx.ext.autodoc"]

templates_path = ["_templates"]

source_suffix = ".rst"
master_doc = "index"

project = "vdirsyncer"
copyright = "2014-{}, Markus Unterwaditzer & contributors".format(
    datetime.date.today().strftime("%Y")
)

release = get_distribution("vdirsyncer").version
version = ".".join(release.split(".")[:2])  # The short X.Y version.

rst_epilog = ".. |vdirsyncer_version| replace:: %s" % release

exclude_patterns = ["_build"]

pygments_style = "sphinx"

on_rtd = os.environ.get("READTHEDOCS", None) == "True"

try:
    import sphinx_rtd_theme

    html_theme = "sphinx_rtd_theme"
    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
except ImportError:
    html_theme = "default"
    if not on_rtd:
        print("-" * 74)
        print(
            "Warning: sphinx-rtd-theme not installed, building with default " "theme."
        )
        print("-" * 74)

html_static_path = ["_static"]
htmlhelp_basename = "vdirsyncerdoc"

latex_elements = {}
latex_documents = [
    (
        "index",
        "vdirsyncer.tex",
        "vdirsyncer Documentation",
        "Markus Unterwaditzer",
        "manual",
    ),
]

man_pages = [
    ("index", "vdirsyncer", "vdirsyncer Documentation", ["Markus Unterwaditzer"], 1)
]

texinfo_documents = [
    (
        "index",
        "vdirsyncer",
        "vdirsyncer Documentation",
        "Markus Unterwaditzer",
        "vdirsyncer",
        "Synchronize calendars and contacts.",
        "Miscellaneous",
    ),
]


def github_issue_role(name, rawtext, text, lineno, inliner, options=None, content=()):
    options = options or {}
    try:
        issue_num = int(text)
        if issue_num <= 0:
            raise ValueError
    except ValueError:
        msg = inliner.reporter.error(f"Invalid GitHub issue: {text}", line=lineno)
        prb = inliner.problematic(rawtext, rawtext, msg)
        return [prb], [msg]

    from docutils import nodes

    PROJECT_HOME = "https://github.com/pimutils/vdirsyncer"
    link = "{}/{}/{}".format(
        PROJECT_HOME, "issues" if name == "gh" else "pull", issue_num
    )
    linktext = ("issue #{}" if name == "gh" else "pull request #{}").format(issue_num)
    node = nodes.reference(rawtext, linktext, refuri=link, **options)
    return [node], []


def setup(app):
    from sphinx.domains.python import PyObject

    app.add_object_type(
        "storage",
        "storage",
        "pair: %s; storage",
        doc_field_types=PyObject.doc_field_types,
    )
    app.add_role("gh", github_issue_role)
    app.add_role("ghpr", github_issue_role)