comparison docs/conf.py @ 249:feaa552cbe98

Some overhowl of the docs configuration in conf.py. Sync with other projects.
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 16 May 2026 15:16:42 +0200
parents 76996a1e4ca7
children 5d3f7d80766f
comparison
equal deleted inserted replaced
248:d76f090d991f 249:feaa552cbe98
41 # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information 41 # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
42 42
43 project = 'Pygments Pseudocode Lexer' 43 project = 'Pygments Pseudocode Lexer'
44 copyright = u'2026 Franz Glasner. © Copyright 2015 Simon Wachter' 44 copyright = u'2026 Franz Glasner. © Copyright 2015 Simon Wachter'
45 author = 'Franz Glasner' 45 author = 'Franz Glasner'
46
46 # 47 #
47 # Determine "release" and other release metadata dynamically from the 48 # Determine "release" and other release metadata dynamically from the
48 # package's "__version__" or other VCS data. 49 # package's "__version__" or other VCS data.
49 # 50 #
51
52 #
53 # Optimistically assume that all keywords are expanded properly everywhere:
54 # do not define special VCSxxx keyword below.
55 #
56 define_rest_keywords = False
50 with io.open("../pygments_lexer_pseudocode2/__init__.py", 57 with io.open("../pygments_lexer_pseudocode2/__init__.py",
51 "rt", 58 "rt",
52 encoding="utf-8") as relfp: 59 encoding="utf-8") as relfp:
53 verfiledata = relfp.read() 60 verfiledata = relfp.read()
54 release = ast.literal_eval( 61 release = ast.literal_eval(
55 re.search(r"""^\s*__version__\s*=\s*(("|')[^"']*\2)""", 62 re.search(r"""^\s*__version__\s*=\s*(("|')[^"']*\2)""",
56 verfiledata, 63 verfiledata,
57 re.MULTILINE).group(1)) 64 re.MULTILINE).group(1))
58 release_date = today = ( 65 release_date = today = ast.literal_eval(
59 ast.literal_eval( 66 re.search(r"""^\s*__date__\s*=\s*(("|')[^"']*\2)""",
60 re.search(r"""^\s*__date__\s*=\s*(("|')[^"']*\2)""", 67 verfiledata,
61 verfiledata, 68 re.MULTILINE).group(1))
62 re.MULTILINE).group(1)) 69 if (not release_date
63 or "dev-%s" % (current_date,) 70 or (release_date.startswith("|") and release_date.endswith("|"))):
64 ) 71 release_date = today = "dev-%s" % (current_date,)
65 release_rev = ast.literal_eval( 72 release_rev = ast.literal_eval(
66 re.search(r"""^\s*__revision__\s*=\s*(("|')[^"']*\2)""", 73 re.search(r"""^\s*__revision__\s*=\s*(("|')[^"']*\2)""",
67 verfiledata, 74 verfiledata,
68 re.MULTILINE).group(1)) 75 re.MULTILINE).group(1))
69 if release_rev.startswith("|") or release_rev.endswith("|"): 76 if (not release_rev
70 # Assume that make export (hg kwarchive) may not has been called. 77 or (release_rev.startswith("|") or release_rev.endswith("|"))):
71 import subprocess 78 #
72 try: 79 # Above assumption is not true: "hg kwarchive" may not have been called.
73 release_rev = subprocess.check_output( 80 # Try to determine from VCS.
74 ["hg", "id", "-i"], stderr=subprocess.STDOUT) 81 #
75 except Exception: 82 import subprocess
76 release_rev = "<unknown>" 83 try:
77 else: 84 release_rev = subprocess.check_output(
78 if sys.version_info[0] >= 3: 85 ["hg", "id", "-i"], stderr=subprocess.STDOUT)
79 release_rev = release_rev.decode("ascii") 86 except Exception:
80 release_rev = "dev-%s" % (release_rev.strip(),) 87 release_rev = "<UNKNOWN>"
81 define_rest_keywords = True
82 else: 88 else:
83 # 89 if sys.version_info[0] >= 3:
84 # Assume that all keywords are expanded properly everywhere: 90 release_rev = release_rev.decode("ascii")
85 # do not define special VCSxxx keyword below. 91 release_rev = "dev-%s" % (release_rev.strip(),)
86 # 92 define_rest_keywords = True
87 define_rest_keywords = False
88 93
89 version = release 94 version = release
90 primary_domain = None 95 primary_domain = None
91 96
92 # -- General configuration --------------------------------------------------- 97 # -- General configuration ---------------------------------------------------
148 "babel": r"\usepackage{babel}", 153 "babel": r"\usepackage{babel}",
149 "fontpkg": r"\usepackage[fonts=adobesourcepro]{my-doc-fonts}", 154 "fontpkg": r"\usepackage[fonts=adobesourcepro]{my-doc-fonts}",
150 "releasename": "Version", 155 "releasename": "Version",
151 "fncychap": r"\usepackage[Sonny]{fncychap}", 156 "fncychap": r"\usepackage[Sonny]{fncychap}",
152 "preamble": r"\usepackage[stdtitle=false]{my-doc-style}", 157 "preamble": r"\usepackage[stdtitle=false]{my-doc-style}",
153 "maketitle": r"\builddate{%s}\vcsrevision{%s}\sphinxmaketitle" \ 158 "maketitle": r"\builddate{%s}\vcsrevision{%s}\sphinxmaketitle"
154 % (current_date, release_rev), 159 % (current_date, release_rev),
155 } 160 }
156 latex_theme = "manual" 161 latex_theme = "manual"
157 latex_show_urls = "footnote" 162 latex_show_urls = "footnote"
158 latex_show_pagerefs = True 163 latex_show_pagerefs = True
159 latex_domain_indices = False 164 latex_domain_indices = False
167 "examples/algorithm-dinic.pseudocode", 172 "examples/algorithm-dinic.pseudocode",
168 "examples/algorithm-ford-fulkerson.pseudocode", 173 "examples/algorithm-ford-fulkerson.pseudocode",
169 "examples/algorithm-edmonds-karp.pseudocode", 174 "examples/algorithm-edmonds-karp.pseudocode",
170 ] 175 ]
171 176
177
172 def setup(app): 178 def setup(app):
173 # 179 #
174 # Custom release_date and commit id variables with a custom substitution 180 # Custom release_date and commit id variables with a custom substitution
175 # |release_date| and |release_rev|'. 181 # |release_date| and |release_rev|'.
176 # 182 #
206 # IMPORTANT: Synchronize names with pyproject.toml! 212 # IMPORTANT: Synchronize names with pyproject.toml!
207 # 213 #
208 try: 214 try:
209 if not pygments.lexers.find_lexer_class("AlgPseudocode"): 215 if not pygments.lexers.find_lexer_class("AlgPseudocode"):
210 sphinx.util.logging.getLogger("conf-setup").info( 216 sphinx.util.logging.getLogger("conf-setup").info(
211 "%s","Installing lexer `AlgPseudocode' and language variants") 217 "%s", "Installing lexer `AlgPseudocode' and language variants")
212 for clsname, lexer in ( 218 for clsname, lexer in (
213 ("AlgPseudocodeLexer", AlgPseudocodeLexer), 219 ("AlgPseudocodeLexer", AlgPseudocodeLexer),
214 ("AlgPseudocodeLexer_DE", AlgPseudocodeLexer_DE), 220 ("AlgPseudocodeLexer_DE", AlgPseudocodeLexer_DE),
215 ("AlgPseudocodeLexer_FR", AlgPseudocodeLexer_FR)): 221 ("AlgPseudocodeLexer_FR", AlgPseudocodeLexer_FR)):
216 pygments.lexers.LEXERS[clsname] = ( 222 pygments.lexers.LEXERS[clsname] = (
219 tuple(lexer.aliases), 225 tuple(lexer.aliases),
220 tuple(lexer.filenames), 226 tuple(lexer.filenames),
221 tuple(lexer.mimetypes)) 227 tuple(lexer.mimetypes))
222 if not pygments.lexers.find_lexer_class("FrPseudocode"): 228 if not pygments.lexers.find_lexer_class("FrPseudocode"):
223 sphinx.util.logging.getLogger("conf-setup").info( 229 sphinx.util.logging.getLogger("conf-setup").info(
224 "%s","Installing lexer `FrPseudocode'") 230 "%s", "Installing lexer `FrPseudocode'")
225 for clsname, lexer in ( 231 for clsname, lexer in (
226 ("FrPseudocodeLexer", FrPseudocodeLexer),): 232 ("FrPseudocodeLexer", FrPseudocodeLexer),):
227 pygments.lexers.LEXERS[clsname] = ( 233 pygments.lexers.LEXERS[clsname] = (
228 "pygments_lexer_pseudocode2.lexers.fr_pseudocode", 234 "pygments_lexer_pseudocode2.lexers.fr_pseudocode",
229 lexer.name, 235 lexer.name,
230 tuple(lexer.aliases), 236 tuple(lexer.aliases),
231 tuple(lexer.filenames), 237 tuple(lexer.filenames),
232 tuple(lexer.mimetypes)) 238 tuple(lexer.mimetypes))
233 if not pygments.filters.find_filter_class("tokenreplace"): 239 if not pygments.filters.find_filter_class("tokenreplace"):
234 sphinx.util.logging.getLogger("conf-setup").info( 240 sphinx.util.logging.getLogger("conf-setup").info(
235 "%s","Installing filter `tokenreplace'") 241 "%s", "Installing filter `tokenreplace'")
236 pygments.filters.FILTERS["tokenreplace"] = TokenReplaceFilter 242 pygments.filters.FILTERS["tokenreplace"] = TokenReplaceFilter
237 if not pygments.filters.find_filter_class("errortogenericerror"): 243 if not pygments.filters.find_filter_class("errortogenericerror"):
238 sphinx.util.logging.getLogger("conf-setup").info( 244 sphinx.util.logging.getLogger("conf-setup").info(
239 "%s","Installing filter `errortogenericerror'") 245 "%s", "Installing filter `errortogenericerror'")
240 pygments.filters.FILTERS["errortogenericerror"] = \ 246 pygments.filters.FILTERS["errortogenericerror"] = \
241 ErrorToGenericErrorTokenFilter 247 ErrorToGenericErrorTokenFilter
242 except Exception as ex: 248 except Exception as ex:
243 sphinx.util.logging.getLogger("conf-setup").error("%s", str(ex)) 249 sphinx.util.logging.getLogger("conf-setup").error("%s", str(ex))
244 sphinx.util.logging.getLogger("conf-setup").error( 250 sphinx.util.logging.getLogger("conf-setup").error(
245 "%s", 251 "%s",