documenteer 2.2.0__tar.gz → 2.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. documenteer-2.3.0/.claude/.gitignore +2 -0
  2. {documenteer-2.2.0 → documenteer-2.3.0}/CHANGELOG.md +22 -0
  3. documenteer-2.3.0/CLAUDE.md +98 -0
  4. {documenteer-2.2.0 → documenteer-2.3.0}/PKG-INFO +1 -1
  5. {documenteer-2.2.0 → documenteer-2.3.0}/demo/rst-technote/index.rst +1 -1
  6. documenteer-2.3.0/demo/rst-technote/local.bib +10 -0
  7. {documenteer-2.2.0 → documenteer-2.3.0}/docs/changelog.md +22 -0
  8. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/configuration.rst +5 -2
  9. {documenteer-2.2.0 → documenteer-2.3.0}/docs/index.rst +5 -5
  10. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/_templates/README.md +1 -1
  11. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/_templates/README.rst +1 -1
  12. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/edit-locally.rst +1 -1
  13. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/index.rst +1 -0
  14. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/migrate.rst +8 -0
  15. documenteer-2.3.0/docs/technotes/references.rst +135 -0
  16. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/conf/_utils.py +9 -5
  17. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/bibtex.py +23 -0
  18. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/remotecodeblock.py +37 -2
  19. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/README.rst +1 -1
  20. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer.egg-info/PKG-INFO +1 -1
  21. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer.egg-info/SOURCES.txt +5 -0
  22. documenteer-2.3.0/tests/storage/__init__.py +0 -0
  23. {documenteer-2.2.0/src/documenteer/templates/technote → documenteer-2.3.0/.claude/tasks}/.gitkeep +0 -0
  24. {documenteer-2.2.0 → documenteer-2.3.0}/.flake8 +0 -0
  25. {documenteer-2.2.0 → documenteer-2.3.0}/.github/CODE_OF_CONDUCT.md +0 -0
  26. {documenteer-2.2.0 → documenteer-2.3.0}/.github/CONTRIBUTING.md +0 -0
  27. {documenteer-2.2.0 → documenteer-2.3.0}/.github/SUPPORT.md +0 -0
  28. {documenteer-2.2.0 → documenteer-2.3.0}/.github/dependabot.yml +0 -0
  29. {documenteer-2.2.0 → documenteer-2.3.0}/.github/workflows/ci-cron.yaml +0 -0
  30. {documenteer-2.2.0 → documenteer-2.3.0}/.github/workflows/ci.yaml +0 -0
  31. {documenteer-2.2.0 → documenteer-2.3.0}/.gitignore +0 -0
  32. {documenteer-2.2.0 → documenteer-2.3.0}/.npmrc +0 -0
  33. {documenteer-2.2.0 → documenteer-2.3.0}/.nvmrc +0 -0
  34. {documenteer-2.2.0 → documenteer-2.3.0}/.pre-commit-config.yaml +0 -0
  35. {documenteer-2.2.0 → documenteer-2.3.0}/.prettierignore +0 -0
  36. {documenteer-2.2.0 → documenteer-2.3.0}/.prettierrc.yaml +0 -0
  37. {documenteer-2.2.0 → documenteer-2.3.0}/.vscode/settings.json +0 -0
  38. {documenteer-2.2.0 → documenteer-2.3.0}/.vscode/tasks.json +0 -0
  39. {documenteer-2.2.0 → documenteer-2.3.0}/LICENSE +0 -0
  40. {documenteer-2.2.0 → documenteer-2.3.0}/MANIFEST.in +0 -0
  41. {documenteer-2.2.0 → documenteer-2.3.0}/Makefile +0 -0
  42. {documenteer-2.2.0 → documenteer-2.3.0}/README.md +0 -0
  43. {documenteer-2.2.0 → documenteer-2.3.0}/changelog.d/_template.md.jinja +0 -0
  44. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/.gitignore +0 -0
  45. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/Makefile +0 -0
  46. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/conf.py +0 -0
  47. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/diagram.py +0 -0
  48. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/extra-notebook.ipynb +0 -0
  49. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/index.ipynb +0 -0
  50. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/subdir/subdir-notebook.ipynb +0 -0
  51. {documenteer-2.2.0 → documenteer-2.3.0}/demo/ipynb-technote/technote.toml +0 -0
  52. {documenteer-2.2.0 → documenteer-2.3.0}/demo/md-technote/.gitignore +0 -0
  53. {documenteer-2.2.0 → documenteer-2.3.0}/demo/md-technote/Makefile +0 -0
  54. {documenteer-2.2.0 → documenteer-2.3.0}/demo/md-technote/conf.py +0 -0
  55. {documenteer-2.2.0 → documenteer-2.3.0}/demo/md-technote/diagram.py +0 -0
  56. {documenteer-2.2.0 → documenteer-2.3.0}/demo/md-technote/index.md +0 -0
  57. {documenteer-2.2.0 → documenteer-2.3.0}/demo/md-technote/technote.toml +0 -0
  58. {documenteer-2.2.0 → documenteer-2.3.0}/demo/rst-technote/.gitignore +0 -0
  59. {documenteer-2.2.0 → documenteer-2.3.0}/demo/rst-technote/Makefile +0 -0
  60. {documenteer-2.2.0 → documenteer-2.3.0}/demo/rst-technote/conf.py +0 -0
  61. {documenteer-2.2.0 → documenteer-2.3.0}/demo/rst-technote/diagram.py +0 -0
  62. {documenteer-2.2.0 → documenteer-2.3.0}/demo/rst-technote/technote.toml +0 -0
  63. {documenteer-2.2.0 → documenteer-2.3.0}/docs/.gitignore +0 -0
  64. {documenteer-2.2.0 → documenteer-2.3.0}/docs/Makefile +0 -0
  65. {documenteer-2.2.0 → documenteer-2.3.0}/docs/_rst_epilog.rst +0 -0
  66. {documenteer-2.2.0 → documenteer-2.3.0}/docs/conf.py +0 -0
  67. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/api/documenteer.conf.rst +0 -0
  68. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/api/documenteer.ext.rst +0 -0
  69. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/api/index.rst +0 -0
  70. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/development.rst +0 -0
  71. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/html-templates.rst +0 -0
  72. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/index.rst +0 -0
  73. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/release.rst +0 -0
  74. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/theme-assets.rst +0 -0
  75. {documenteer-2.2.0 → documenteer-2.3.0}/docs/dev/theme.rst +0 -0
  76. {documenteer-2.2.0 → documenteer-2.3.0}/docs/documenteer.toml +0 -0
  77. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/badges.rst +0 -0
  78. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/configuration-preset.rst +0 -0
  79. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/diagrams.rst +0 -0
  80. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/extend-conf-py.rst +0 -0
  81. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/including-notebooks.ipynb +0 -0
  82. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/index.rst +0 -0
  83. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/markdown-primer.md +0 -0
  84. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/openapi.rst +0 -0
  85. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/organization.rst +0 -0
  86. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/overview.rst +0 -0
  87. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/page-redirects.rst +0 -0
  88. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/pyproject-configuration.rst +0 -0
  89. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/rst-epilog.rst +0 -0
  90. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/tabsets.rst +0 -0
  91. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/toml-reference.rst +0 -0
  92. {documenteer-2.2.0 → documenteer-2.3.0}/docs/guides/video-embeds.rst +0 -0
  93. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/docushare-reference.rst +0 -0
  94. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/githubbibcache.rst +0 -0
  95. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/index.rst +0 -0
  96. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/jira-reference.rst +0 -0
  97. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/lsst-pybtex-style.rst +0 -0
  98. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/openapi.rst +0 -0
  99. {documenteer-2.2.0 → documenteer-2.3.0}/docs/sphinx-extensions/remote-code-block.rst +0 -0
  100. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/author-metadata.rst +0 -0
  101. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/configuration.rst +0 -0
  102. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/document-status.rst +0 -0
  103. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/edit-on-github.rst +0 -0
  104. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/extensions.rst +0 -0
  105. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/how-your-technote-gets-published.rst +0 -0
  106. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/start-a-technote.rst +0 -0
  107. {documenteer-2.2.0 → documenteer-2.3.0}/docs/technotes/wide-content.rst +0 -0
  108. {documenteer-2.2.0 → documenteer-2.3.0}/licenses/README.md +0 -0
  109. {documenteer-2.2.0 → documenteer-2.3.0}/licenses/astropy-helpers.txt +0 -0
  110. {documenteer-2.2.0 → documenteer-2.3.0}/licenses/sphinx-issue.txt +0 -0
  111. {documenteer-2.2.0 → documenteer-2.3.0}/licenses/sphinx.txt +0 -0
  112. {documenteer-2.2.0 → documenteer-2.3.0}/licenses/sphinxcontrib-redoc.txt +0 -0
  113. {documenteer-2.2.0 → documenteer-2.3.0}/package-lock.json +0 -0
  114. {documenteer-2.2.0 → documenteer-2.3.0}/package.json +0 -0
  115. {documenteer-2.2.0 → documenteer-2.3.0}/postcss.config.js +0 -0
  116. {documenteer-2.2.0 → documenteer-2.3.0}/pyproject.toml +0 -0
  117. {documenteer-2.2.0 → documenteer-2.3.0}/ruff-shared.toml +0 -0
  118. {documenteer-2.2.0 → documenteer-2.3.0}/setup.cfg +0 -0
  119. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/SourceSans3VF-Italic.ttf.woff2 +0 -0
  120. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/SourceSans3VF-Upright.ttf.woff2 +0 -0
  121. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/_hacks.scss +0 -0
  122. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/_properties.scss +0 -0
  123. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/components/_article-header.scss +0 -0
  124. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/components/_authors.scss +0 -0
  125. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/components/_global-breadcrumbs.scss +0 -0
  126. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/components/_index.scss +0 -0
  127. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/components/_sidebar-section.scss +0 -0
  128. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/components/_version-info.scss +0 -0
  129. {documenteer-2.2.0 → documenteer-2.3.0}/src/assets/rubin-technote/styles/rubin-technote.scss +0 -0
  130. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/__init__.py +0 -0
  131. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/_packagemetadata.py +0 -0
  132. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/_requestsutils.py +0 -0
  133. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/_utils.py +0 -0
  134. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/.gitignore +0 -0
  135. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/731c8feefe13e72a8691.woff2 +0 -0
  136. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/b8bc3440ba2145e132f5.woff2 +0 -0
  137. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/favicon.ico +0 -0
  138. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rsd-assets/rubin-imagotype-color-on-black-crop.svg +0 -0
  139. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rsd-assets/rubin-imagotype-color-on-white-crop.svg +0 -0
  140. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-favicon-transparent-32px.png +0 -0
  141. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-favicon.svg +0 -0
  142. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-pydata-theme.css +0 -0
  143. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-technote.css +0 -0
  144. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-technote.css.map +0 -0
  145. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-titlebar-imagotype-dark.svg +0 -0
  146. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/rubin-titlebar-imagotype-light.svg +0 -0
  147. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/scripts/rubin-technote.js +0 -0
  148. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/assets/scripts/rubin-technote.js.map +0 -0
  149. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/cli.py +0 -0
  150. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/conf/__init__.py +0 -0
  151. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/conf/_toml.py +0 -0
  152. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/conf/guide.py +0 -0
  153. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/conf/technote.py +0 -0
  154. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/__init__.py +0 -0
  155. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/githubbibcache.py +0 -0
  156. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/jira.py +0 -0
  157. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/lsstdocushare.py +0 -0
  158. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/mockcoderefs.py +0 -0
  159. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/openapi.py +0 -0
  160. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/redoc/__init__.py +0 -0
  161. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/redoc/_redoc.py +0 -0
  162. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/redoc/assets/redoc.html.jinja2 +0 -0
  163. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/ext/robots.py +0 -0
  164. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/py.typed +0 -0
  165. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/services/__init__.py +0 -0
  166. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/services/technoteauthor.py +0 -0
  167. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/services/technotemigration.py +0 -0
  168. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/__init__.py +0 -0
  169. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/authordb.py +0 -0
  170. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/latex.py +0 -0
  171. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/Makefile +0 -0
  172. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/ci.yaml +0 -0
  173. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/conf.py +0 -0
  174. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/dependabot.yml +0 -0
  175. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/gitignore +0 -0
  176. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/pre-commit-config.yaml +0 -0
  177. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/requirements.txt +0 -0
  178. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates/technote/tox.ini +0 -0
  179. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/localtemplates.py +0 -0
  180. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/storage/technotetoml.py +0 -0
  181. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/templates/pydata/autosummary_core/exception.rst +0 -0
  182. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/templates/pydata/autosummary_core/pydantic_model.rst +0 -0
  183. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/templates/pydata/layout.html +0 -0
  184. {documenteer-2.2.0/src/documenteer/templates/technote/components → documenteer-2.3.0/src/documenteer/templates/technote}/.gitkeep +0 -0
  185. {documenteer-2.2.0/src/documenteer/templates/technote/sections → documenteer-2.3.0/src/documenteer/templates/technote/components}/.gitkeep +0 -0
  186. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/templates/technote/components/sidebar-source.html +0 -0
  187. /documenteer-2.2.0/tests/__init__.py → /documenteer-2.3.0/src/documenteer/templates/technote/sections/.gitkeep +0 -0
  188. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/templates/technote/sections/header-article.html +0 -0
  189. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/templates/technote/sections/sidebar-primary.html +0 -0
  190. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer/version.py +0 -0
  191. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer.egg-info/dependency_links.txt +0 -0
  192. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer.egg-info/entry_points.txt +0 -0
  193. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer.egg-info/requires.txt +0 -0
  194. {documenteer-2.2.0 → documenteer-2.3.0}/src/documenteer.egg-info/top_level.txt +0 -0
  195. {documenteer-2.2.0/tests/ext → documenteer-2.3.0/tests}/__init__.py +0 -0
  196. {documenteer-2.2.0 → documenteer-2.3.0}/tests/conftest.py +0 -0
  197. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/afw.doxygen.conf +0 -0
  198. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/authordb.yaml +0 -0
  199. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/doxygen.tag.zip +0 -0
  200. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/doc/_static/package_alpha/README.md +0 -0
  201. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/doc/doxygen.conf.in +0 -0
  202. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/doc/manifest.yaml +0 -0
  203. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/doc/package.alpha/index.rst +0 -0
  204. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/doc/package_alpha/index.rst +0 -0
  205. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/include/README.md +0 -0
  206. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_alpha/src/README.md +0 -0
  207. {documenteer-2.2.0 → documenteer-2.3.0}/tests/data/package_beta/doc/README.md +0 -0
  208. {documenteer-2.2.0/tests/services → documenteer-2.3.0/tests/ext}/__init__.py +0 -0
  209. {documenteer-2.2.0 → documenteer-2.3.0}/tests/ext/jira_test.py +0 -0
  210. {documenteer-2.2.0 → documenteer-2.3.0}/tests/ext/lsstdocushare_test.py +0 -0
  211. {documenteer-2.2.0 → documenteer-2.3.0}/tests/ext/mockcoderefs_test.py +0 -0
  212. {documenteer-2.2.0 → documenteer-2.3.0}/tests/ext/redoc_test.py +0 -0
  213. {documenteer-2.2.0 → documenteer-2.3.0}/tests/ext/robots_test.py +0 -0
  214. {documenteer-2.2.0 → documenteer-2.3.0}/tests/packagemetadata_test.py +0 -0
  215. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-autocppapi/conf.py +0 -0
  216. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-autocppapi/doxygen.tag.zip +0 -0
  217. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-autocppapi/index.rst +0 -0
  218. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-redoc/_static/openapi.json +0 -0
  219. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-redoc/api.rst +0 -0
  220. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-redoc/conf.py +0 -0
  221. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-redoc/documenteer.toml +0 -0
  222. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-redoc/index.rst +0 -0
  223. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-nositemap/conf.py +0 -0
  224. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-nositemap/index.rst +0 -0
  225. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-nositemap/page1.rst +0 -0
  226. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-sitemap/conf.py +0 -0
  227. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-sitemap/index.rst +0 -0
  228. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-sitemap/page1.rst +0 -0
  229. {documenteer-2.2.0 → documenteer-2.3.0}/tests/roots/test-robots-sitemap/page2.rst +0 -0
  230. {documenteer-2.2.0/tests/storage → documenteer-2.3.0/tests/services}/__init__.py +0 -0
  231. {documenteer-2.2.0 → documenteer-2.3.0}/tests/services/technotemigration_test.py +0 -0
  232. {documenteer-2.2.0 → documenteer-2.3.0}/tests/storage/authordb_test.py +0 -0
  233. {documenteer-2.2.0 → documenteer-2.3.0}/tests/storage/technotetoml_test.py +0 -0
  234. {documenteer-2.2.0 → documenteer-2.3.0}/tests/test_conf_toml.py +0 -0
  235. {documenteer-2.2.0 → documenteer-2.3.0}/tests/test_conf_utils.py +0 -0
  236. {documenteer-2.2.0 → documenteer-2.3.0}/tox.ini +0 -0
  237. {documenteer-2.2.0 → documenteer-2.3.0}/webpack.config.js +0 -0
@@ -0,0 +1,2 @@
1
+ settings.local.json
2
+ tasks/*.md
@@ -2,6 +2,28 @@
2
2
 
3
3
  <!-- scriv-insert-here -->
4
4
 
5
+ <a id='changelog-2.3.0'></a>
6
+ ## 2.3.0 (2025-09-03)
7
+
8
+ ### New features
9
+
10
+ - Improved configuration defaults for `documenteer.conf.guide` and `documenteer.conf.technote`:
11
+
12
+ - Add `sentry_sdk` to default non-intersphinx packages
13
+ - Ignore `TypeAliasType` due to sphinx bug
14
+ - Ignore `asyncio.Event`, it has the same problem as `asyncio.Lock`
15
+
16
+ - [ASCL](https://ascl.net) identifiers in bibliography entries are now hyperlinked.
17
+
18
+ ### Bug fixes
19
+
20
+ - Vendored `parse_line_num_spec` from Sphinx to accommodate differences between Sphinx 7 and 8.
21
+ - Fix `nitpick_ignore_regex` regexes, they weren't being applied due to a missing `.`
22
+
23
+ ### Other changes
24
+
25
+ - Added documentation on creating bibliographies in technotes.
26
+
5
27
  <a id='changelog-2.2.0'></a>
6
28
  ## 2.2.0 (2025-08-06)
7
29
 
@@ -0,0 +1,98 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ Documenteer is a Python package that provides Sphinx documentation tools, extensions, and configurations for Rubin Observatory/LSST projects. It supports two main documentation types:
8
+ - **User guides**: Complete documentation sites using pydata-sphinx-theme
9
+ - **Technotes**: Single-document technical notes using the technote theme
10
+
11
+ ## Development Commands
12
+
13
+ ### Setup and Installation
14
+ ```bash
15
+ make init # Initialize development environment
16
+ pip install -e ".[technote,guide]" --group dev # Install with all extras
17
+ ```
18
+
19
+ ### Testing and Quality Assurance
20
+ ```bash
21
+ tox -e py-test-sphinx8 # Run tests with Sphinx 8.x
22
+ tox -e coverage-report # Generate coverage report
23
+ tox -e typing-sphinx8 # Run mypy type checking
24
+ tox -e lint # Run linting (pre-commit hooks + prettier)
25
+ tox -e demo # Build demo technote projects (end-to-end test)
26
+ tox -e packaging # Check PyPI packaging
27
+ ```
28
+
29
+ ### Documentation
30
+ ```bash
31
+ tox -e docs # Build documentation
32
+ tox -e docs-lint # Check documentation links
33
+ ```
34
+
35
+ ### Cleanup
36
+ ```bash
37
+ make clean # Remove build artifacts
38
+ ```
39
+
40
+ ## Architecture
41
+
42
+ ### Core Components
43
+
44
+ **Configuration System** (`src/documenteer/conf/`):
45
+ - `guide.py`: Sphinx configuration preset for user guides
46
+ - `technote.py`: Sphinx configuration preset for technotes
47
+ - `_toml.py`: TOML-based configuration models using Pydantic
48
+ - Uses pydata-sphinx-theme for guides, [technote](https://github.com/lsst-sqre/technote) package for technotes
49
+
50
+ **Sphinx Extensions** (`src/documenteer/ext/`):
51
+ - `jira.py`: JIRA ticket references
52
+ - `lsstdocushare.py`: LSST DocuShare document links
53
+ - `openapi.py`: OpenAPI documentation integration
54
+ - `githubbibcache.py`: GitHub-based bibliography caching
55
+ - `bibtex.py`: Enhanced BibTeX support
56
+ - `remotecodeblock.py`: Remote code inclusion
57
+ - `mockcoderefs.py`: Mock code references for testing
58
+ - `redoc.py`: Redoc integration for HTTP API documentation
59
+ - `robots.py`: robots.txt generation
60
+
61
+ **CLI Tools** (`src/documenteer/cli.py`):
62
+ - `technote add-author`: Add authors to technote.toml from authordb
63
+ - `technote sync-authors`: Sync author info from central database
64
+ - `technote migrate`: Migrate legacy technotes to modern format
65
+
66
+ **Services** (`src/documenteer/services/`):
67
+ - `technoteauthor.py`: Author management for technotes
68
+ - `technotemigration.py`: Legacy technote migration logic
69
+
70
+ ### Key Design Patterns
71
+
72
+ - **Configuration as Code**: Sphinx configurations are Python modules that can be imported
73
+ - **Pydantic Models**: TOML configuration validation using type-safe models
74
+ - **Extension Architecture**: Modular Sphinx extensions for specific Rubin/LSST needs
75
+ - **Theme Integration**: Tight integration with pydata-sphinx-theme and technote themes
76
+
77
+ ### Testing Strategy
78
+
79
+ - Uses tox for multi-environment testing across Sphinx versions
80
+ - Sphinx test roots in `tests/roots/` for extension testing
81
+ - Coverage reporting with branch coverage
82
+ - Type checking with mypy
83
+ - Pre-commit hooks for code quality
84
+
85
+ ### Code Style
86
+
87
+ - Follows ruff formatting (run lint command to automatically format)
88
+ - Numpydoc docstrings with types omitted (Sphinx documentation uses type annotations)
89
+
90
+ ### Asset Management
91
+
92
+ Static assets are managed in `src/documenteer/assets/` including:
93
+ - Custom CSS and SCSS for Rubin branding
94
+ - JavaScript enhancements
95
+ - Favicon and logo assets
96
+ - Font files (Source Sans Pro)
97
+
98
+ Built assets are compiled using webpack with PostCSS processing.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: documenteer
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Rubin Observatory / LSST Sphinx documentation tools, extensions, and configurations.
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://documenteer.lsst.io
@@ -29,7 +29,7 @@ A list:
29
29
  - Second item
30
30
  - Third item
31
31
 
32
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin facilisis pharetra neque, at semper nulla mattis auctor. Proin semper mollis enim eget interdum. Mauris eleifend eget diam vitae bibendum. Praesent ut aliquet odio, sodales imperdiet nisi. Nam interdum imperdiet tortor sed fringilla. Maecenas efficitur mi sodales nulla commodo rutrum. Ut ornare diam quam, sed commodo turpis aliquam et. In nec enim consequat, suscipit tortor sit amet, luctus ante. Integer dictum augue diam, non pulvinar massa euismod in. Morbi viverra condimentum auctor. Nullam et metus mauris. Cras risus ex, porta sit amet nibh et, dapibus auctor leo.
32
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin facilisis pharetra neque, at semper nulla mattis auctor. Proin semper mollis enim eget interdum. Mauris eleifend eget diam vitae bibendum. Praesent ut aliquet odio, sodales imperdiet nisi. Nam interdum imperdiet tortor sed fringilla. Maecenas efficitur mi sodales nulla commodo rutrum. Ut ornare diam quam, sed commodo turpis aliquam et. In nec enim consequat, suscipit tortor sit amet, luctus ante. Integer dictum augue diam, non pulvinar massa euismod in. Morbi viverra condimentum auctor. Nullam et metus mauris. Cras risus ex, porta sit amet nibh et, dapibus auctor leo. :cite:`2010ascl.soft10043C`
33
33
 
34
34
  .. code-block:: python
35
35
  :caption: hello.py
@@ -0,0 +1,10 @@
1
+ @software{2010ascl.soft10043C,
2
+ author = {{Conroy}, Charlie and {Gunn}, James E.},
3
+ title = "{FSPS: Flexible Stellar Population Synthesis}",
4
+ howpublished = {Astrophysics Source Code Library, record ascl:1010.043},
5
+ year = 2010,
6
+ month = oct,
7
+ eid = {ascl:1010.043},
8
+ adsurl = {https://ui.adsabs.harvard.edu/abs/2010ascl.soft10043C},
9
+ adsnote = {Provided by the SAO/NASA Astrophysics Data System}
10
+ }
@@ -2,6 +2,28 @@
2
2
 
3
3
  <!-- scriv-insert-here -->
4
4
 
5
+ <a id='changelog-2.3.0'></a>
6
+ ## 2.3.0 (2025-09-03)
7
+
8
+ ### New features
9
+
10
+ - Improved configuration defaults for `documenteer.conf.guide` and `documenteer.conf.technote`:
11
+
12
+ - Add `sentry_sdk` to default non-intersphinx packages
13
+ - Ignore `TypeAliasType` due to sphinx bug
14
+ - Ignore `asyncio.Event`, it has the same problem as `asyncio.Lock`
15
+
16
+ - [ASCL](https://ascl.net) identifiers in bibliography entries are now hyperlinked.
17
+
18
+ ### Bug fixes
19
+
20
+ - Vendored `parse_line_num_spec` from Sphinx to accommodate differences between Sphinx 7 and 8.
21
+ - Fix `nitpick_ignore_regex` regexes, they weren't being applied due to a missing `.`
22
+
23
+ ### Other changes
24
+
25
+ - Added documentation on creating bibliographies in technotes.
26
+
5
27
  <a id='changelog-2.2.0'></a>
6
28
  ## 2.2.0 (2025-08-06)
7
29
 
@@ -18,11 +18,14 @@ How you do this depends on your project's packaging structure:
18
18
  .. code-block:: toml
19
19
  :caption: pyproject.toml
20
20
 
21
- [project.optional-dependencies]
22
- dev = [
21
+ [dependency-groups]
22
+ docs = [
23
23
  "documenteer[guide]"
24
24
  ]
25
25
 
26
+ Dependency groups are a way organize development dependencies and are supported by `uv <https://docs.astral.sh/uv/concepts/projects/dependencies/#development-dependencies>`__.
27
+ Dependency groups are preferred over earlier methods of specifying optional dependencies because they are not published as installable dependencies from PyPI.
28
+
26
29
  .. tab-item:: requirements.txt
27
30
 
28
31
  .. code-block:: text
@@ -56,15 +56,15 @@ Installation
56
56
 
57
57
  .. code-block:: sh
58
58
 
59
- conda install documenteer
59
+ conda install lsst-documenteer
60
60
 
61
- To use Documenteer's configurations for specific Rubin documentation use cases, you'll need to install Documenteer with specific "extras" to bring in the necessary dependencies.
62
-
63
- To install Documenteer for technote projects:
61
+ For user guide projects:
64
62
 
65
63
  .. code-block:: sh
66
64
 
67
- conda-install lsst-documenteer-technote
65
+ conda-install lsst-documenteer-guide
66
+
67
+ *Conda distributions aren't available for technote projects at this time.*
68
68
 
69
69
  Project guides
70
70
  ==============
@@ -16,7 +16,7 @@ A short description of this document.
16
16
 
17
17
  ## Build this technical note
18
18
 
19
- You can clone this repository and build the technote locally if your system has Python 3.11 or later:
19
+ You can clone this repository and build the technote locally if your system has Python 3.12 or later:
20
20
 
21
21
  ```bash
22
22
  git clone https://github.com/lsst/example-000
@@ -22,7 +22,7 @@ A short description of this document.
22
22
  Build this technical note
23
23
  =========================
24
24
 
25
- You can clone this repository and build the technote locally if your system has Python 3.11 or later:
25
+ You can clone this repository and build the technote locally if your system has Python 3.12 or later:
26
26
 
27
27
  .. code-block:: bash
28
28
 
@@ -34,7 +34,7 @@ Because of that, you don't need to rely on a specific Rubin Conda environment to
34
34
  .. important::
35
35
 
36
36
  Tox and pre-commit generally use the Python that they were installed with.
37
- Documenteer requires Python 3.11 or later.
37
+ Documenteer requires Python 3.12 or later.
38
38
  To check what version of Python you have, run:
39
39
 
40
40
  .. prompt:: bash
@@ -28,6 +28,7 @@ Documenteer provides centralized configuration and tooling for technotes.
28
28
  :maxdepth: 2
29
29
  :caption: Content & design
30
30
 
31
+ references
31
32
  wide-content
32
33
 
33
34
  .. toctree::
@@ -235,6 +235,7 @@ Add the title to the top of the content:
235
235
  .. tab-set::
236
236
 
237
237
  .. tab-item:: rst
238
+ :sync: rst
238
239
 
239
240
  .. code-block:: rst
240
241
  :caption: index.rst
@@ -246,6 +247,7 @@ Add the title to the top of the content:
246
247
  [... content below ...]
247
248
 
248
249
  .. tab-item:: md
250
+ :sync: md
249
251
 
250
252
  .. code-block:: md
251
253
  :caption: index.md
@@ -268,6 +270,7 @@ The new technote format uses an ``abstract`` directive to mark up the abstract/s
268
270
  .. tab-set::
269
271
 
270
272
  .. tab-item:: rst
273
+ :sync: rst
271
274
 
272
275
  .. code-block:: rst
273
276
  :caption: index.rst
@@ -287,6 +290,7 @@ The new technote format uses an ``abstract`` directive to mark up the abstract/s
287
290
  [... content below ...]
288
291
 
289
292
  .. tab-item:: md
293
+ :sync: md
290
294
 
291
295
  .. code-block:: md
292
296
  :caption: index.md
@@ -311,6 +315,7 @@ In the new technote format, this section is simplified:
311
315
  .. tab-set::
312
316
 
313
317
  .. tab-item:: rst
318
+ :sync: rst
314
319
 
315
320
  .. code-block:: rst
316
321
  :caption: index.rst
@@ -323,6 +328,7 @@ In the new technote format, this section is simplified:
323
328
  .. bibliography::
324
329
 
325
330
  .. tab-item:: md
331
+ :sync: md
326
332
 
327
333
  .. code-block:: md
328
334
  :caption: index.md
@@ -476,12 +482,14 @@ Here is a suggested README template for technotes in the new format:
476
482
  .. tab-set::
477
483
 
478
484
  .. tab-item:: rst
485
+ :sync: rst
479
486
 
480
487
  .. literalinclude:: _templates/README.rst
481
488
  :language: rst
482
489
  :caption: README.rst
483
490
 
484
491
  .. tab-item:: md
492
+ :sync: md
485
493
 
486
494
  .. literalinclude:: _templates/README.md
487
495
  :language: md
@@ -0,0 +1,135 @@
1
+ #############################
2
+ Citing references with BibTeX
3
+ #############################
4
+
5
+ Technotes include built-in support for citing references with BibTeX. Any bibitem from `lsst-texmf's bibliography files <https://github.com/lsst/lsst-texmf/tree/main/texmf/bibtex/bib>`__ is available for citation.
6
+ You can also define your own BibTeX entries in a local bib files.
7
+
8
+ Set up references section
9
+ =========================
10
+
11
+ To use BibTeX references in your technote, add a "References" section at the end of the main content with a ``bibliography`` directive:
12
+
13
+ .. tab-set::
14
+ :sync-group: markup
15
+
16
+ .. tab-item:: RST
17
+ :sync: rst
18
+
19
+ .. code-block:: rst
20
+
21
+ References
22
+ ==========
23
+
24
+ .. bibliography::
25
+
26
+ .. tab-item:: Markdown
27
+ :sync: md
28
+
29
+ .. code-block:: md
30
+
31
+ ## References
32
+
33
+ ```{bibliography}
34
+ ```
35
+
36
+ No arguments are needed for the ``bibliography`` directive because it is automatically configured.
37
+
38
+ By default, all BibTeX files from lsst-texmf are available in your technote.
39
+
40
+ Adding local BibTeX entries
41
+ ===========================
42
+
43
+ You can define your own BibTeX entries in a local bib file, such as :file:`local.bib`, when lsst-texmf is missing references.
44
+ Any ``*.bib`` file in the root of the technote repository is automatically included in the build.
45
+
46
+ Creating citations in text
47
+ ==========================
48
+
49
+ You can add citations in your text using ``cite`` and related roles.
50
+ The ``cite`` roles takes the bibkey as the argument.
51
+
52
+ Author-year citations with cite
53
+ -------------------------------
54
+
55
+ The ``cite`` role adds a parenthetical inline citation like ``[Author et al., Year]``:
56
+
57
+ .. tab-set::
58
+ :sync-group: markup
59
+
60
+ .. tab-item:: RST
61
+ :sync: rst
62
+
63
+ .. code-block:: rst
64
+
65
+ :cite:`RTN-095`
66
+
67
+ .. tab-item:: Markdown
68
+ :sync: md
69
+
70
+ .. code-block:: md
71
+
72
+ {cite}`RTN-095`
73
+
74
+ Multiple bibkeys can be included, separated by commas:
75
+
76
+ .. tab-set::
77
+ :sync-group: markup
78
+
79
+ .. tab-item:: RST
80
+ :sync: rst
81
+
82
+ .. code-block:: rst
83
+
84
+ :cite:`bibkey1,bibkey2`
85
+
86
+ .. tab-item:: Markdown
87
+ :sync: md
88
+
89
+ .. code-block:: md
90
+
91
+ {cite}`bibkey1,bibkey2`
92
+
93
+ Textual citations with cite:t
94
+ -----------------------------
95
+
96
+ The ``cite:t`` role adds a textual citation like ``Author et al. (Year)``:
97
+
98
+ .. tab-set::
99
+ :sync-group: markup
100
+
101
+ .. tab-item:: RST
102
+ :sync: rst
103
+
104
+ .. code-block:: rst
105
+
106
+ :cite:t:`RTN-095`
107
+
108
+ .. tab-item:: Markdown
109
+ :sync: md
110
+
111
+ .. code-block:: md
112
+
113
+ {cite:t}`RTN-095`
114
+
115
+ Specialized citation roles
116
+ --------------------------
117
+
118
+ The sphinxcontrib-bibtex extension also provides specialized citation roles for specific situations, such as listing authors or years, or including pre- or post-text inside a parenthetical citation.
119
+ See the `sphinxcontrib-bibtex documentation <https://sphinxcontrib-bibtex.readthedocs.io/en/latest/usage.html#roles-and-directives>`__ for details.
120
+
121
+ Refresh bib files from lsst-texmf
122
+ =================================
123
+
124
+ The lsst-texmf bib files are automatically downloaded and cached in the :file:`.technote` directory when your technote is built. You can refresh the cached files by deleting the :file:`.technote` directory and rebuilding your technote.
125
+
126
+ .. prompt::
127
+
128
+ rm -rf .technote
129
+ make html
130
+
131
+ You can also delete both the cache and the existing built HTML with:
132
+
133
+ .. prompt::
134
+
135
+ make clean
@@ -171,10 +171,11 @@ def get_common_nitpick_ignore() -> list[tuple[str, str]]:
171
171
  "py:obj",
172
172
  "safir.pydantic.validate_exactly_one_of.<locals>.validator",
173
173
  ),
174
- # asyncio.Lock is documented, and that's what all the code references,
175
- # but the combination of Sphinx extensions we're using confuse
176
- # themselves and there doesn't seem to be any way to fix this.
174
+ # asyncio.Lock and asyncio.Event are documented but the combination of
175
+ # Sphinx extensions we're using confuse themselves and there doesn't
176
+ # seem to be any way to fix this.
177
177
  ("py:class", "asyncio.locks.Lock"),
178
+ ("py:class", "asyncio.locks.Event"),
178
179
  ("py:class", "pathlib._local.Path"),
179
180
  ]
180
181
 
@@ -199,15 +200,18 @@ def get_common_nitpick_ignore_regex() -> list[tuple[str, str]]:
199
200
  "kubernetes_asyncio",
200
201
  "pydantic",
201
202
  "pydantic_settings",
203
+ "sentry_sdk",
202
204
  "starlette",
203
205
  ]
204
- patterns = [("py:*", rf"{package}(?:\..*)?") for package in packages]
206
+ patterns = [("py:.*", rf"{package}(?:\..*)?") for package in packages]
205
207
 
206
208
  # Additional patterns that are common to ignore.
207
209
  patterns.extend(
208
210
  [
209
211
  # Bug in sphinx.ext.autodoc for pydantic models.
210
- ("py:*", r".*\.all fields"),
212
+ ("py:.*", r".*\.all fields"),
213
+ # Sphinx bug handling the type keyword
214
+ ("py:.*", r".*\.TypeAliasType"),
211
215
  ]
212
216
  )
213
217
 
@@ -18,6 +18,7 @@ from pybtex.style.template import (
18
18
  optional_field,
19
19
  sentence,
20
20
  tag,
21
+ words,
21
22
  )
22
23
  from sphinx.application import Sphinx
23
24
  from sphinx.util.typing import ExtensionMetadata
@@ -100,6 +101,28 @@ class LsstBibtexStyle(pybtex.style.formatting.plain.Style):
100
101
  self._rewrite_field(e, "journal")
101
102
  return super().get_article_template(e)
102
103
 
104
+ def format_ascl(self, e: Entry) -> Node:
105
+ # based on urlbst format.doi
106
+ url = join["https://ascl.net/", field("eid", raw=True)]
107
+ return href(url)[join["ascl:", field("eid", raw=True)]]
108
+
109
+ def get_software_template(self, e: Entry) -> Node:
110
+ if "eid" in e.fields and "ascl:" in e.fields["eid"]:
111
+ date = words[optional_field("month"), field("year")]
112
+ e.fields["eid"] = e.fields["eid"].removeprefix("ascl:")
113
+ return toplevel[
114
+ optional[sentence[self.format_names("author")]],
115
+ optional[self.format_title(e, "title")],
116
+ sentence[
117
+ optional[field("howpublished")],
118
+ optional[date],
119
+ ],
120
+ sentence[optional_field("note")],
121
+ self.format_ascl(e),
122
+ ]
123
+ # If not an ASCL entry, use the default software template.
124
+ return super().get_software_template(e)
125
+
103
126
  def get_inproceedings_template(self, e: Entry) -> Node:
104
127
  # Potentially modify the series string before formatting it.
105
128
  self._rewrite_field(e, "series")
@@ -12,7 +12,7 @@ from docutils import nodes
12
12
  from docutils.parsers.rst import directives
13
13
  from sphinx.application import Sphinx
14
14
  from sphinx.directives.code import LiteralIncludeReader, container_wrapper
15
- from sphinx.util import logging, parselinenos # type: ignore[attr-defined]
15
+ from sphinx.util import logging
16
16
  from sphinx.util.docutils import SphinxDirective
17
17
  from sphinx.util.nodes import set_source_info
18
18
  from sphinx.util.typing import ExtensionMetadata
@@ -25,6 +25,39 @@ __all__ = ["setup"]
25
25
  logger = logging.getLogger(__name__)
26
26
 
27
27
 
28
+ # Vendored from sphinx to accomodate differences between Sphinx 7 and 8
29
+ # Copyright the Sphinx team.
30
+ # See licenses/sphinx.txt
31
+ def parse_line_num_spec(spec: str, total: int) -> list[int]:
32
+ """Parse a line number spec (such as "1,2,4-6") and return a list of
33
+ wanted line numbers.
34
+ """
35
+ items = []
36
+ parts = spec.split(",")
37
+ for part in parts:
38
+ try:
39
+ begend = part.strip().split("-")
40
+ if begend == ["", ""]:
41
+ raise ValueError
42
+ if len(begend) == 1:
43
+ items.append(int(begend[0]) - 1)
44
+ elif len(begend) == 2:
45
+ start = int(begend[0] or 1) # left half open (cf. -10)
46
+ end = int(
47
+ begend[1] or max(start, total)
48
+ ) # right half open (cf. 10-)
49
+ if start > end: # invalid range (cf. 10-1)
50
+ raise ValueError
51
+ items.extend(range(start - 1, end))
52
+ else:
53
+ raise ValueError
54
+ except ValueError as exc:
55
+ msg = f"invalid line number spec: {spec!r}"
56
+ raise ValueError(msg) from exc
57
+
58
+ return items
59
+
60
+
28
61
  class RemoteCodeBlock(SphinxDirective):
29
62
  """Directive that works like ``literalinclude`` to show a code block, but
30
63
  supports getting content over https.
@@ -94,7 +127,9 @@ class RemoteCodeBlock(SphinxDirective):
94
127
  retnode["classes"] += self.options.get("class", [])
95
128
  extra_args = retnode["highlight_args"] = {}
96
129
  if "emphasize-lines" in self.options:
97
- hl_lines = parselinenos(self.options["emphasize-lines"], lines)
130
+ hl_lines = parse_line_num_spec(
131
+ self.options["emphasize-lines"], lines
132
+ )
98
133
  if any(i >= lines for i in hl_lines):
99
134
  logger.warning(
100
135
  "line number spec is out of range(1-%d): %r",
@@ -22,7 +22,7 @@
22
22
  Build this technical note
23
23
  =========================
24
24
 
25
- You can clone this repository and build the technote locally if your system has Python 3.11 or later:
25
+ You can clone this repository and build the technote locally if your system has Python 3.12 or later:
26
26
 
27
27
  .. code-block:: bash
28
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: documenteer
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Rubin Observatory / LSST Sphinx documentation tools, extensions, and configurations.
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://documenteer.lsst.io
@@ -6,6 +6,7 @@
6
6
  .prettierignore
7
7
  .prettierrc.yaml
8
8
  CHANGELOG.md
9
+ CLAUDE.md
9
10
  LICENSE
10
11
  MANIFEST.in
11
12
  Makefile
@@ -17,6 +18,8 @@ pyproject.toml
17
18
  ruff-shared.toml
18
19
  tox.ini
19
20
  webpack.config.js
21
+ .claude/.gitignore
22
+ .claude/tasks/.gitkeep
20
23
  .github/CODE_OF_CONDUCT.md
21
24
  .github/CONTRIBUTING.md
22
25
  .github/SUPPORT.md
@@ -45,6 +48,7 @@ demo/rst-technote/Makefile
45
48
  demo/rst-technote/conf.py
46
49
  demo/rst-technote/diagram.py
47
50
  demo/rst-technote/index.rst
51
+ demo/rst-technote/local.bib
48
52
  demo/rst-technote/technote.toml
49
53
  docs/.gitignore
50
54
  docs/Makefile
@@ -95,6 +99,7 @@ docs/technotes/extensions.rst
95
99
  docs/technotes/how-your-technote-gets-published.rst
96
100
  docs/technotes/index.rst
97
101
  docs/technotes/migrate.rst
102
+ docs/technotes/references.rst
98
103
  docs/technotes/start-a-technote.rst
99
104
  docs/technotes/wide-content.rst
100
105
  docs/technotes/_templates/README.md
File without changes
File without changes