documenteer 2.0.0a4__tar.gz → 2.1.1__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.
- {documenteer-2.0.0a4 → documenteer-2.1.1}/CHANGELOG.md +137 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/PKG-INFO +5 -9
- {documenteer-2.0.0a4 → documenteer-2.1.1}/README.md +2 -8
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/changelog.md +137 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/api/index.rst +0 -1
- {documenteer-2.0.0a4 → documenteer-2.1.1}/pyproject.toml +4 -2
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/conf/_utils.py +73 -5
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/conf/guide.py +22 -44
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/conf/technote.py +17 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/jira.py +2 -3
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/mockcoderefs.py +2 -3
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/redoc/_redoc.py +4 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/remotecodeblock.py +1 -1
- documenteer-2.1.1/src/documenteer/ext/robots.py +112 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/technotetoml.py +14 -4
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/pydata/layout.html +7 -1
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer.egg-info/PKG-INFO +5 -9
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer.egg-info/SOURCES.txt +12 -13
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer.egg-info/requires.txt +2 -0
- documenteer-2.1.1/tests/ext/robots_test.py +44 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/packagemetadata_test.py +1 -1
- documenteer-2.1.1/tests/roots/test-robots-nositemap/conf.py +11 -0
- documenteer-2.1.1/tests/roots/test-robots-nositemap/index.rst +10 -0
- documenteer-2.1.1/tests/roots/test-robots-nositemap/page1.rst +5 -0
- documenteer-2.1.1/tests/roots/test-robots-sitemap/conf.py +12 -0
- documenteer-2.1.1/tests/roots/test-robots-sitemap/index.rst +11 -0
- documenteer-2.1.1/tests/roots/test-robots-sitemap/page1.rst +5 -0
- documenteer-2.1.1/tests/roots/test-robots-sitemap/page2.rst +5 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/storage/authordb_test.py +0 -1
- documenteer-2.1.1/tests/storage/technotetoml_test.py +336 -0
- documenteer-2.0.0a4/changelog.d/20240819_152413_jsick_DM_45803.md +0 -33
- documenteer-2.0.0a4/changelog.d/20241010_133336_danfuchs_mermaid_compat.md +0 -4
- documenteer-2.0.0a4/changelog.d/20250203_175511_jsick_DM_48755.md +0 -3
- documenteer-2.0.0a4/changelog.d/20250219_160628_jsick_DM_49037.md +0 -19
- documenteer-2.0.0a4/changelog.d/20250224_102742_jsick_graphviz_ci.md +0 -17
- documenteer-2.0.0a4/changelog.d/20250625_141008_jsick_DM_51536.md +0 -17
- documenteer-2.0.0a4/changelog.d/20250630_113114_jsick_update_theme.md +0 -18
- documenteer-2.0.0a4/changelog.d/20250703_103944_jsick_DM_51688.md +0 -23
- documenteer-2.0.0a4/changelog.d/20250710_133037_jsick_DM_51727.md +0 -17
- documenteer-2.0.0a4/docs/dev/api/documenteer.requestsutils.rst +0 -6
- documenteer-2.0.0a4/tests/storage/technotetoml_test.py +0 -125
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.flake8 +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.github/CODE_OF_CONDUCT.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.github/CONTRIBUTING.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.github/SUPPORT.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.github/dependabot.yml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.github/workflows/ci-cron.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.github/workflows/ci.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.npmrc +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.nvmrc +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.pre-commit-config.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.prettierignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.prettierrc.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.vscode/settings.json +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/.vscode/tasks.json +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/LICENSE +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/MANIFEST.in +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/Makefile +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/changelog.d/_template.md.jinja +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/.gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/Makefile +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/diagram.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/extra-notebook.ipynb +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/index.ipynb +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/subdir/subdir-notebook.ipynb +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/ipynb-technote/technote.toml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/md-technote/.gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/md-technote/Makefile +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/md-technote/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/md-technote/diagram.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/md-technote/index.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/md-technote/technote.toml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/rst-technote/.gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/rst-technote/Makefile +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/rst-technote/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/rst-technote/diagram.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/rst-technote/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/demo/rst-technote/technote.toml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/.gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/Makefile +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/_rst_epilog.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/api/documenteer.conf.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/api/documenteer.ext.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/development.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/html-templates.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/release.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/theme-assets.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/dev/theme.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/documenteer.toml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/badges.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/configuration-preset.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/configuration.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/diagrams.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/extend-conf-py.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/including-notebooks.ipynb +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/markdown-primer.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/openapi.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/organization.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/overview.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/page-redirects.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/pyproject-configuration.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/rst-epilog.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/tabsets.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/toml-reference.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/guides/video-embeds.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/docushare-reference.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/githubbibcache.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/jira-reference.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/lsst-pybtex-style.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/openapi.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/sphinx-extensions/remote-code-block.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/_templates/README.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/_templates/README.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/author-metadata.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/configuration.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/document-status.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/edit-locally.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/edit-on-github.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/extensions.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/how-your-technote-gets-published.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/migrate.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/start-a-technote.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/docs/technotes/wide-content.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/licenses/README.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/licenses/astropy-helpers.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/licenses/sphinx-issue.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/licenses/sphinx.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/licenses/sphinxcontrib-redoc.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/package-lock.json +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/package.json +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/postcss.config.js +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/ruff-shared.toml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/setup.cfg +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/SourceSans3VF-Italic.ttf.woff2 +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/SourceSans3VF-Upright.ttf.woff2 +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/_hacks.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/_properties.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/components/_article-header.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/components/_authors.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/components/_global-breadcrumbs.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/components/_index.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/components/_sidebar-section.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/components/_version-info.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/assets/rubin-technote/styles/rubin-technote.scss +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/__init__.py +0 -0
- documenteer-2.0.0a4/src/documenteer/packagemetadata.py → documenteer-2.1.1/src/documenteer/_packagemetadata.py +1 -1
- /documenteer-2.0.0a4/src/documenteer/requestsutils.py → /documenteer-2.1.1/src/documenteer/_requestsutils.py +0 -0
- /documenteer-2.0.0a4/src/documenteer/utils.py → /documenteer-2.1.1/src/documenteer/_utils.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/.gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/731c8feefe13e72a8691.woff2 +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/b8bc3440ba2145e132f5.woff2 +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/favicon.ico +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rsd-assets/rubin-imagotype-color-on-black-crop.svg +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rsd-assets/rubin-imagotype-color-on-white-crop.svg +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-favicon-transparent-32px.png +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-favicon.svg +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-pydata-theme.css +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-technote.css +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-technote.css.map +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-titlebar-imagotype-dark.svg +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/rubin-titlebar-imagotype-light.svg +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/scripts/rubin-technote.js +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/assets/scripts/rubin-technote.js.map +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/cli.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/conf/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/conf/_toml.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/bibtex.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/githubbibcache.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/lsstdocushare.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/openapi.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/redoc/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/ext/redoc/assets/redoc.html.jinja2 +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/py.typed +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/services/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/services/technoteauthor.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/services/technotemigration.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/authordb.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/latex.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/Makefile +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/README.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/ci.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/dependabot.yml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/gitignore +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/pre-commit-config.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/requirements.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates/technote/tox.ini +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/storage/localtemplates.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/pydata/autosummary_core/exception.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/pydata/autosummary_core/pydantic_model.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/technote/.gitkeep +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/technote/components/.gitkeep +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/technote/components/sidebar-source.html +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/technote/sections/.gitkeep +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/technote/sections/header-article.html +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/templates/technote/sections/sidebar-primary.html +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer/version.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer.egg-info/dependency_links.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer.egg-info/entry_points.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/src/documenteer.egg-info/top_level.txt +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/conftest.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/afw.doxygen.conf +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/authordb.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/doxygen.tag.zip +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/doc/_static/package_alpha/README.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/doc/doxygen.conf.in +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/doc/manifest.yaml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/doc/package.alpha/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/doc/package_alpha/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/include/README.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_alpha/src/README.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/data/package_beta/doc/README.md +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/ext/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/ext/jira_test.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/ext/lsstdocushare_test.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/ext/mockcoderefs_test.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/ext/redoc_test.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-autocppapi/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-autocppapi/doxygen.tag.zip +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-autocppapi/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-redoc/_static/openapi.json +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-redoc/api.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-redoc/conf.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-redoc/documenteer.toml +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/roots/test-redoc/index.rst +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/services/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/services/technotemigration_test.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/storage/__init__.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/test_conf_toml.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tests/test_conf_utils.py +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/tox.ini +0 -0
- {documenteer-2.0.0a4 → documenteer-2.1.1}/webpack.config.js +0 -0
|
@@ -2,6 +2,143 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- scriv-insert-here -->
|
|
4
4
|
|
|
5
|
+
<a id='changelog-2.1.1'></a>
|
|
6
|
+
## 2.1.1 (2025-07-17)
|
|
7
|
+
|
|
8
|
+
### Bug fixes
|
|
9
|
+
|
|
10
|
+
- When adding or updating authors in `technote.toml`, Documenteer avoids setting null values. TOML represents null values as absent keys, but previous versions of Documenteer included null `ror` values.
|
|
11
|
+
|
|
12
|
+
<a id='changelog-2.1.0'></a>
|
|
13
|
+
## 2.1.0 (2025-07-16)
|
|
14
|
+
|
|
15
|
+
### New features
|
|
16
|
+
|
|
17
|
+
- Improved and extended the nitpick ignore configurations for both user guides and technotes. The new configuration engine uses a common set of utility functions to generate the ignore patterns. Additionally, Documenteer makes better use of regex patterns to ignore linking issues to APIs that are not documented with Sphinx, such as `fastapi`, `httpx`, and `pydantic`. This should reduce the number of nitpick warnings in user guides and technotes, and generally reduce the need for manual nitpick ignores in projects.
|
|
18
|
+
|
|
19
|
+
- Added [`sphinx-sitemap`](https://sphinx-sitemap.readthedocs.io/en/latest/index.html) for generating sitemaps in Rubin user guides and technotes. This will improve search engine and LLM/agent indexing of documentation. In user guides, the sitemap is linked in the HTML `head` for better discoverability.
|
|
20
|
+
- A new extension, `documenteer.ext.robots`, helps you generate a `robots.txt` file to inform web crawlers about access to documentation sites. In this initial version, the `robots.txt` file is generated when a `sitemap.xml` file is available in order to link to that sitemap. The extension won't overwrite an existing `robots.txt` file.
|
|
21
|
+
- Documenteer's Sphinx extensions (`documenteer.ext.*`) now use Sphinx's built-in logging system, `sphinx.util.logging`, instead of the standard Python logging module.
|
|
22
|
+
|
|
23
|
+
- Rubin user guides (`documenteer.conf.guide`) now include Plausible.io analytics integration for privacy-preserving website analytics. The Plausible domain is configured by default to `lsst.io`, which is the common tracking domain for all Rubin Observatory technical documentation.
|
|
24
|
+
|
|
25
|
+
### Bug fixes
|
|
26
|
+
|
|
27
|
+
- The Redoc site extension (`documenteer.ext.redoc`) now skips rendering early if the OpenAPI configuration is an empty list to avoid unnecessary processing.
|
|
28
|
+
|
|
29
|
+
<a id='changelog-2.0.0'></a>
|
|
30
|
+
## 2.0.0 (2025-07-10)
|
|
31
|
+
|
|
32
|
+
### Backwards-incompatible changes
|
|
33
|
+
|
|
34
|
+
- All Science Pipelines-related tooling and Sphinx extensions have been removed from Documenteer and moved to a new Science Pipelines package called `sphinxutils` (https://github.com/lsst-dm/sphinxutils). Removed components include:
|
|
35
|
+
|
|
36
|
+
- `documenteer.stackdocs`
|
|
37
|
+
- Configurations `documenteer.conf.pipelines` and `documenteer.conf.pipelinespkg`
|
|
38
|
+
- CLI commands `stack-docs` and `package-docs`
|
|
39
|
+
- Sphinx extensions:
|
|
40
|
+
- `documenteer.ext.lssttasks`
|
|
41
|
+
- `documenteer.ext.packagetoctree`
|
|
42
|
+
- `documenteer.ext.autocppapi`
|
|
43
|
+
- `documenteer.ext.autodocreset`
|
|
44
|
+
|
|
45
|
+
- Dropped support for Python 3.11. Python 3.12 or later is now required.
|
|
46
|
+
|
|
47
|
+
- Removed `documenteer.requestutils`, `documenteer.packagemetadata`, and `documenteer.utils` from the public API.
|
|
48
|
+
|
|
49
|
+
### New features
|
|
50
|
+
|
|
51
|
+
- User guide configuration improvements:
|
|
52
|
+
|
|
53
|
+
- New custom automodapi templates for Pydantic BaseModels and exceptions. The exception template ensures that inherited members of exceptions are documented. The Pydantic BaseModel template ensures that inherited members from the `BaseModel` class itself are _not_ documented. These templates were originally developed as part of [Gafaelfawr](https://github.com/lsst-sqre/gafaelfawr). Now users of the user guide configuration benefit from these templates without any additional configuration.
|
|
54
|
+
|
|
55
|
+
- The `[guide]` installation extra and `documenteer.conf.guide` configuration now include `autodoc_pydantic` for improved documentation of Pydantic models in Python API references.
|
|
56
|
+
|
|
57
|
+
- The `documenteer.conf.guide` configuration now ignores common Sphinx warnings when including references to projects that don't use Sphinx/Intersphinx for their documentation, including Pydantic and FastAPI.
|
|
58
|
+
|
|
59
|
+
- Updated to pydata-sphinx-theme 0.16.
|
|
60
|
+
|
|
61
|
+
- Added [sphinx-favicon](https://sphinx-favicon.readthedocs.io/en/stable/index.html) for managing favicons in user guides.
|
|
62
|
+
|
|
63
|
+
- For embedding a redoc page for API documentation, Documenteer now provides its own `documenteer.ext.redoc` extension. This replaces the previous `sphinxcontrib.redoc` extension, which is not being actively maintained. This new extension is automatically configured through `documenteer.conf.guide`, and therefore should not require any changes for most user guide projects. `documenteer.ext.redoc` drops support for referencing an OpenAPI specification file from a web URL. FastAPI projects can use `documenteer.ext.openapi` to generate an OpenAPI specification file from the FastAPI app.
|
|
64
|
+
|
|
65
|
+
- In Markdown content for technotes and guides, Mermaid diagrams can now be written in code fences using the `mermaid` language tag. This is also supported in GitHub's Markdown renderer. The traditional method of using the `mermaid` directive syntax is still supported.
|
|
66
|
+
|
|
67
|
+
- Documenteer's `technote` and `guide` configurations now ignore pending Sphinx API deprecation warnings by default. This is to prevent the warnings from cluttering the build output, and are only useful for the Documenteer developers since the Sphinx version is constrained by Documenteer.
|
|
68
|
+
|
|
69
|
+
- The `documenteer` `add-authors` and `sync-authors` CLI commands now use the Ook web API to get author information, rather than directly reading `authordb.yaml` from lsst/lsst-texmf.
|
|
70
|
+
|
|
71
|
+
- The entire `documenteer` code base is now type annotated.
|
|
72
|
+
|
|
73
|
+
### Bug fixes
|
|
74
|
+
|
|
75
|
+
- Updated `sphinxcontrib-mermaid` to >= 1, which fixes an incompatibility with Sphinx 8.1.0 and allows unpinning the Mermaid JS version.
|
|
76
|
+
|
|
77
|
+
- Pinned Sphinx < 8.2 to avoid a bug/incompatibility with the `sphinxcontrib-bibtex` extension.
|
|
78
|
+
|
|
79
|
+
- Documenteer's Sphinx extensions now provide proper extension metadata to support version-based cache busting and parallel builds.
|
|
80
|
+
|
|
81
|
+
### Other changes
|
|
82
|
+
|
|
83
|
+
- The code base is now linted and formatted with ruff.
|
|
84
|
+
|
|
85
|
+
- Added testing against Sphinx 8 and Python 3.13 in GitHub Actions.
|
|
86
|
+
|
|
87
|
+
- Updated the technote creation documentation to reference `@Squarebot`, updated from `sqrbot-jr`.
|
|
88
|
+
|
|
89
|
+
- Removed the pre-commit hook for prettier and now run prettier directly from the tox lint environment. This change is necessary because the prettier hook for pre-commit is no longer supported.
|
|
90
|
+
|
|
91
|
+
- Adopted [ts-graphviz/setup-graphviz](https://github.com/ts-graphviz/setup-graphviz) for installing Graphviz in GitHub Actions CI workflows.
|
|
92
|
+
|
|
93
|
+
- Updated how license information is encoded in `pyproject.toml`.
|
|
94
|
+
|
|
95
|
+
- Switched to dependency groups for development dependencies in `pyproject.toml`. With this change, Documenteer no longer publishes a `dev` extra to PyPI.
|
|
96
|
+
|
|
97
|
+
- Documenteer no longer depends on setuptools as a runtime dependency thanks to pybtex version 0.25 and `documenteer.ext.redoc`.
|
|
98
|
+
|
|
99
|
+
<a id='changelog-1.4.5'></a>
|
|
100
|
+
## 1.4.5 (2025-06-25)
|
|
101
|
+
|
|
102
|
+
### Other changes
|
|
103
|
+
|
|
104
|
+
- Update to lsst-sqre/build-and-publish-to-pypi@v3 for publishing to PyPI.
|
|
105
|
+
|
|
106
|
+
<a id='changelog-1.4.4'></a>
|
|
107
|
+
## 1.4.4 (2025-06-25)
|
|
108
|
+
|
|
109
|
+
### Bug fixes
|
|
110
|
+
|
|
111
|
+
- Fix the configuration of the `sphinx-prompt` extension to be `sphinx_prompt` in the `documenteer.conf.guide` configuration. Constrain the sphinx-prompt version to be `>1.10.0,<2.0.0` to avoid issues with the `sphinx_prompt` extension not being recognized.
|
|
112
|
+
|
|
113
|
+
### Other changes
|
|
114
|
+
|
|
115
|
+
- Add testing against Python 3.13 and Sphinx 8.
|
|
116
|
+
|
|
117
|
+
<a id='changelog-1.4.3'></a>
|
|
118
|
+
## 1.4.3 (2025-02-19)
|
|
119
|
+
|
|
120
|
+
### Bug fixes
|
|
121
|
+
|
|
122
|
+
- Pin Sphinx < 8.2 to avoid a bug/incompatibility with the `sphinxcontrib-bibtex` extension.
|
|
123
|
+
|
|
124
|
+
### Other changes
|
|
125
|
+
|
|
126
|
+
- Prettier is now run directly through the tox lint environment rather than through pre-commit since the pre-commit plugin is deprecated and no longer operable.
|
|
127
|
+
|
|
128
|
+
<a id='changelog-1.4.2'></a>
|
|
129
|
+
## 1.4.2 (2024-10-15)
|
|
130
|
+
|
|
131
|
+
### Bug fixes
|
|
132
|
+
|
|
133
|
+
- Pin `sphinxcontrib-mermaid` to >= 1 to address an incompatibility with Sphinx==8.1.0. Also unpin the version of Mermaid itself.
|
|
134
|
+
|
|
135
|
+
<a id='changelog-1.4.1'></a>
|
|
136
|
+
## 1.4.1 (2024-10-10)
|
|
137
|
+
|
|
138
|
+
### Bug fixes
|
|
139
|
+
|
|
140
|
+
- Pin Sphinx to < 8.1.0. [Sphinx 8.1.0](https://github.com/sphinx-doc/sphinx/compare/v8.0.2...v8.1.0) contains [a commit](https://github.com/sphinx-doc/sphinx/pull/12762/files#diff-a4c6bf1492ef480b94af82c988f64ca56fa256fab0ed043a5ad3d4043f89a645L14) that removes the `ExtensionError` export from the `sphinx.util` package. This currently breaks the [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) dependency.
|
|
141
|
+
|
|
5
142
|
<a id='changelog-1.4.0'></a>
|
|
6
143
|
## 1.4.0 (2024-07-11)
|
|
7
144
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: documenteer
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.1
|
|
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
|
|
@@ -57,6 +57,7 @@ Requires-Dist: sphinxcontrib-jquery; extra == "guide"
|
|
|
57
57
|
Requires-Dist: sphinxext-rediraffe; extra == "guide"
|
|
58
58
|
Requires-Dist: sphinxcontrib-youtube; extra == "guide"
|
|
59
59
|
Requires-Dist: sphinx-favicon; extra == "guide"
|
|
60
|
+
Requires-Dist: sphinx-sitemap; extra == "guide"
|
|
60
61
|
Provides-Extra: technote
|
|
61
62
|
Requires-Dist: technote<0.10.0,>=0.9.0; extra == "technote"
|
|
62
63
|
Requires-Dist: sphinx-prompt; extra == "technote"
|
|
@@ -65,18 +66,19 @@ Requires-Dist: sphinx-diagrams; extra == "technote"
|
|
|
65
66
|
Requires-Dist: sphinx_design; extra == "technote"
|
|
66
67
|
Requires-Dist: myst-nb; extra == "technote"
|
|
67
68
|
Requires-Dist: sphinxcontrib-youtube; extra == "technote"
|
|
69
|
+
Requires-Dist: sphinx-sitemap; extra == "technote"
|
|
68
70
|
Dynamic: license-file
|
|
69
71
|
|
|
70
72
|
[](https://documenteer.lsst.io)
|
|
71
73
|
[](https://pypi.python.org/pypi/documenteer)
|
|
72
|
-
[](https://pypi.python.org/pypi/documenteer)
|
|
73
75
|
[](https://pypi.python.org/pypi/documenteer)
|
|
74
76
|
[](https://github.com/lsst-sqre/documenteer/actions/workflows/ci.yaml)
|
|
75
77
|
[](https://github.com/lsst-sqre/documenteer/actions/workflows/ci-cron.yaml)
|
|
76
78
|
|
|
77
79
|
# Documenteer
|
|
78
80
|
|
|
79
|
-
Documenteer provides tools, extensions, and configurations for Rubin Observatory's Sphinx documentation projects, [user guides](https://documenteer.lsst.io/guides/index.html)
|
|
81
|
+
Documenteer provides tools, extensions, and configurations for Rubin Observatory's Sphinx documentation projects, including [user guides](https://documenteer.lsst.io/guides/index.html) and [technotes](https://developer.lsst.io/project-docs/technotes.html).
|
|
80
82
|
|
|
81
83
|
For more information about Documenteer, see the documentation at https://documenteer.lsst.io.
|
|
82
84
|
|
|
@@ -95,9 +97,3 @@ For [technical note projects](https://documenteer.lsst.io/technotes/index.html):
|
|
|
95
97
|
```sh
|
|
96
98
|
pip install "documenteer[technote]"
|
|
97
99
|
```
|
|
98
|
-
|
|
99
|
-
For the [stack projects](https://documenteer.lsst.io/pipelines/index.html) (such as the [LSST Science Pipelines](https://pipelines.lsst.io)):
|
|
100
|
-
|
|
101
|
-
```sh
|
|
102
|
-
pip install "documenteer[pipelines]"
|
|
103
|
-
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[](https://documenteer.lsst.io)
|
|
2
2
|
[](https://pypi.python.org/pypi/documenteer)
|
|
3
|
-
[](https://pypi.python.org/pypi/documenteer)
|
|
4
4
|
[](https://pypi.python.org/pypi/documenteer)
|
|
5
5
|
[](https://github.com/lsst-sqre/documenteer/actions/workflows/ci.yaml)
|
|
6
6
|
[](https://github.com/lsst-sqre/documenteer/actions/workflows/ci-cron.yaml)
|
|
7
7
|
|
|
8
8
|
# Documenteer
|
|
9
9
|
|
|
10
|
-
Documenteer provides tools, extensions, and configurations for Rubin Observatory's Sphinx documentation projects, [user guides](https://documenteer.lsst.io/guides/index.html)
|
|
10
|
+
Documenteer provides tools, extensions, and configurations for Rubin Observatory's Sphinx documentation projects, including [user guides](https://documenteer.lsst.io/guides/index.html) and [technotes](https://developer.lsst.io/project-docs/technotes.html).
|
|
11
11
|
|
|
12
12
|
For more information about Documenteer, see the documentation at https://documenteer.lsst.io.
|
|
13
13
|
|
|
@@ -26,9 +26,3 @@ For [technical note projects](https://documenteer.lsst.io/technotes/index.html):
|
|
|
26
26
|
```sh
|
|
27
27
|
pip install "documenteer[technote]"
|
|
28
28
|
```
|
|
29
|
-
|
|
30
|
-
For the [stack projects](https://documenteer.lsst.io/pipelines/index.html) (such as the [LSST Science Pipelines](https://pipelines.lsst.io)):
|
|
31
|
-
|
|
32
|
-
```sh
|
|
33
|
-
pip install "documenteer[pipelines]"
|
|
34
|
-
```
|
|
@@ -2,6 +2,143 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- scriv-insert-here -->
|
|
4
4
|
|
|
5
|
+
<a id='changelog-2.1.1'></a>
|
|
6
|
+
## 2.1.1 (2025-07-17)
|
|
7
|
+
|
|
8
|
+
### Bug fixes
|
|
9
|
+
|
|
10
|
+
- When adding or updating authors in `technote.toml`, Documenteer avoids setting null values. TOML represents null values as absent keys, but previous versions of Documenteer included null `ror` values.
|
|
11
|
+
|
|
12
|
+
<a id='changelog-2.1.0'></a>
|
|
13
|
+
## 2.1.0 (2025-07-16)
|
|
14
|
+
|
|
15
|
+
### New features
|
|
16
|
+
|
|
17
|
+
- Improved and extended the nitpick ignore configurations for both user guides and technotes. The new configuration engine uses a common set of utility functions to generate the ignore patterns. Additionally, Documenteer makes better use of regex patterns to ignore linking issues to APIs that are not documented with Sphinx, such as `fastapi`, `httpx`, and `pydantic`. This should reduce the number of nitpick warnings in user guides and technotes, and generally reduce the need for manual nitpick ignores in projects.
|
|
18
|
+
|
|
19
|
+
- Added [`sphinx-sitemap`](https://sphinx-sitemap.readthedocs.io/en/latest/index.html) for generating sitemaps in Rubin user guides and technotes. This will improve search engine and LLM/agent indexing of documentation. In user guides, the sitemap is linked in the HTML `head` for better discoverability.
|
|
20
|
+
- A new extension, `documenteer.ext.robots`, helps you generate a `robots.txt` file to inform web crawlers about access to documentation sites. In this initial version, the `robots.txt` file is generated when a `sitemap.xml` file is available in order to link to that sitemap. The extension won't overwrite an existing `robots.txt` file.
|
|
21
|
+
- Documenteer's Sphinx extensions (`documenteer.ext.*`) now use Sphinx's built-in logging system, `sphinx.util.logging`, instead of the standard Python logging module.
|
|
22
|
+
|
|
23
|
+
- Rubin user guides (`documenteer.conf.guide`) now include Plausible.io analytics integration for privacy-preserving website analytics. The Plausible domain is configured by default to `lsst.io`, which is the common tracking domain for all Rubin Observatory technical documentation.
|
|
24
|
+
|
|
25
|
+
### Bug fixes
|
|
26
|
+
|
|
27
|
+
- The Redoc site extension (`documenteer.ext.redoc`) now skips rendering early if the OpenAPI configuration is an empty list to avoid unnecessary processing.
|
|
28
|
+
|
|
29
|
+
<a id='changelog-2.0.0'></a>
|
|
30
|
+
## 2.0.0 (2025-07-10)
|
|
31
|
+
|
|
32
|
+
### Backwards-incompatible changes
|
|
33
|
+
|
|
34
|
+
- All Science Pipelines-related tooling and Sphinx extensions have been removed from Documenteer and moved to a new Science Pipelines package called `sphinxutils` (https://github.com/lsst-dm/sphinxutils). Removed components include:
|
|
35
|
+
|
|
36
|
+
- `documenteer.stackdocs`
|
|
37
|
+
- Configurations `documenteer.conf.pipelines` and `documenteer.conf.pipelinespkg`
|
|
38
|
+
- CLI commands `stack-docs` and `package-docs`
|
|
39
|
+
- Sphinx extensions:
|
|
40
|
+
- `documenteer.ext.lssttasks`
|
|
41
|
+
- `documenteer.ext.packagetoctree`
|
|
42
|
+
- `documenteer.ext.autocppapi`
|
|
43
|
+
- `documenteer.ext.autodocreset`
|
|
44
|
+
|
|
45
|
+
- Dropped support for Python 3.11. Python 3.12 or later is now required.
|
|
46
|
+
|
|
47
|
+
- Removed `documenteer.requestutils`, `documenteer.packagemetadata`, and `documenteer.utils` from the public API.
|
|
48
|
+
|
|
49
|
+
### New features
|
|
50
|
+
|
|
51
|
+
- User guide configuration improvements:
|
|
52
|
+
|
|
53
|
+
- New custom automodapi templates for Pydantic BaseModels and exceptions. The exception template ensures that inherited members of exceptions are documented. The Pydantic BaseModel template ensures that inherited members from the `BaseModel` class itself are _not_ documented. These templates were originally developed as part of [Gafaelfawr](https://github.com/lsst-sqre/gafaelfawr). Now users of the user guide configuration benefit from these templates without any additional configuration.
|
|
54
|
+
|
|
55
|
+
- The `[guide]` installation extra and `documenteer.conf.guide` configuration now include `autodoc_pydantic` for improved documentation of Pydantic models in Python API references.
|
|
56
|
+
|
|
57
|
+
- The `documenteer.conf.guide` configuration now ignores common Sphinx warnings when including references to projects that don't use Sphinx/Intersphinx for their documentation, including Pydantic and FastAPI.
|
|
58
|
+
|
|
59
|
+
- Updated to pydata-sphinx-theme 0.16.
|
|
60
|
+
|
|
61
|
+
- Added [sphinx-favicon](https://sphinx-favicon.readthedocs.io/en/stable/index.html) for managing favicons in user guides.
|
|
62
|
+
|
|
63
|
+
- For embedding a redoc page for API documentation, Documenteer now provides its own `documenteer.ext.redoc` extension. This replaces the previous `sphinxcontrib.redoc` extension, which is not being actively maintained. This new extension is automatically configured through `documenteer.conf.guide`, and therefore should not require any changes for most user guide projects. `documenteer.ext.redoc` drops support for referencing an OpenAPI specification file from a web URL. FastAPI projects can use `documenteer.ext.openapi` to generate an OpenAPI specification file from the FastAPI app.
|
|
64
|
+
|
|
65
|
+
- In Markdown content for technotes and guides, Mermaid diagrams can now be written in code fences using the `mermaid` language tag. This is also supported in GitHub's Markdown renderer. The traditional method of using the `mermaid` directive syntax is still supported.
|
|
66
|
+
|
|
67
|
+
- Documenteer's `technote` and `guide` configurations now ignore pending Sphinx API deprecation warnings by default. This is to prevent the warnings from cluttering the build output, and are only useful for the Documenteer developers since the Sphinx version is constrained by Documenteer.
|
|
68
|
+
|
|
69
|
+
- The `documenteer` `add-authors` and `sync-authors` CLI commands now use the Ook web API to get author information, rather than directly reading `authordb.yaml` from lsst/lsst-texmf.
|
|
70
|
+
|
|
71
|
+
- The entire `documenteer` code base is now type annotated.
|
|
72
|
+
|
|
73
|
+
### Bug fixes
|
|
74
|
+
|
|
75
|
+
- Updated `sphinxcontrib-mermaid` to >= 1, which fixes an incompatibility with Sphinx 8.1.0 and allows unpinning the Mermaid JS version.
|
|
76
|
+
|
|
77
|
+
- Pinned Sphinx < 8.2 to avoid a bug/incompatibility with the `sphinxcontrib-bibtex` extension.
|
|
78
|
+
|
|
79
|
+
- Documenteer's Sphinx extensions now provide proper extension metadata to support version-based cache busting and parallel builds.
|
|
80
|
+
|
|
81
|
+
### Other changes
|
|
82
|
+
|
|
83
|
+
- The code base is now linted and formatted with ruff.
|
|
84
|
+
|
|
85
|
+
- Added testing against Sphinx 8 and Python 3.13 in GitHub Actions.
|
|
86
|
+
|
|
87
|
+
- Updated the technote creation documentation to reference `@Squarebot`, updated from `sqrbot-jr`.
|
|
88
|
+
|
|
89
|
+
- Removed the pre-commit hook for prettier and now run prettier directly from the tox lint environment. This change is necessary because the prettier hook for pre-commit is no longer supported.
|
|
90
|
+
|
|
91
|
+
- Adopted [ts-graphviz/setup-graphviz](https://github.com/ts-graphviz/setup-graphviz) for installing Graphviz in GitHub Actions CI workflows.
|
|
92
|
+
|
|
93
|
+
- Updated how license information is encoded in `pyproject.toml`.
|
|
94
|
+
|
|
95
|
+
- Switched to dependency groups for development dependencies in `pyproject.toml`. With this change, Documenteer no longer publishes a `dev` extra to PyPI.
|
|
96
|
+
|
|
97
|
+
- Documenteer no longer depends on setuptools as a runtime dependency thanks to pybtex version 0.25 and `documenteer.ext.redoc`.
|
|
98
|
+
|
|
99
|
+
<a id='changelog-1.4.5'></a>
|
|
100
|
+
## 1.4.5 (2025-06-25)
|
|
101
|
+
|
|
102
|
+
### Other changes
|
|
103
|
+
|
|
104
|
+
- Update to lsst-sqre/build-and-publish-to-pypi@v3 for publishing to PyPI.
|
|
105
|
+
|
|
106
|
+
<a id='changelog-1.4.4'></a>
|
|
107
|
+
## 1.4.4 (2025-06-25)
|
|
108
|
+
|
|
109
|
+
### Bug fixes
|
|
110
|
+
|
|
111
|
+
- Fix the configuration of the `sphinx-prompt` extension to be `sphinx_prompt` in the `documenteer.conf.guide` configuration. Constrain the sphinx-prompt version to be `>1.10.0,<2.0.0` to avoid issues with the `sphinx_prompt` extension not being recognized.
|
|
112
|
+
|
|
113
|
+
### Other changes
|
|
114
|
+
|
|
115
|
+
- Add testing against Python 3.13 and Sphinx 8.
|
|
116
|
+
|
|
117
|
+
<a id='changelog-1.4.3'></a>
|
|
118
|
+
## 1.4.3 (2025-02-19)
|
|
119
|
+
|
|
120
|
+
### Bug fixes
|
|
121
|
+
|
|
122
|
+
- Pin Sphinx < 8.2 to avoid a bug/incompatibility with the `sphinxcontrib-bibtex` extension.
|
|
123
|
+
|
|
124
|
+
### Other changes
|
|
125
|
+
|
|
126
|
+
- Prettier is now run directly through the tox lint environment rather than through pre-commit since the pre-commit plugin is deprecated and no longer operable.
|
|
127
|
+
|
|
128
|
+
<a id='changelog-1.4.2'></a>
|
|
129
|
+
## 1.4.2 (2024-10-15)
|
|
130
|
+
|
|
131
|
+
### Bug fixes
|
|
132
|
+
|
|
133
|
+
- Pin `sphinxcontrib-mermaid` to >= 1 to address an incompatibility with Sphinx==8.1.0. Also unpin the version of Mermaid itself.
|
|
134
|
+
|
|
135
|
+
<a id='changelog-1.4.1'></a>
|
|
136
|
+
## 1.4.1 (2024-10-10)
|
|
137
|
+
|
|
138
|
+
### Bug fixes
|
|
139
|
+
|
|
140
|
+
- Pin Sphinx to < 8.1.0. [Sphinx 8.1.0](https://github.com/sphinx-doc/sphinx/compare/v8.0.2...v8.1.0) contains [a commit](https://github.com/sphinx-doc/sphinx/pull/12762/files#diff-a4c6bf1492ef480b94af82c988f64ca56fa256fab0ed043a5ad3d4043f89a645L14) that removes the `ExtensionError` export from the `sphinx.util` package. This currently breaks the [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) dependency.
|
|
141
|
+
|
|
5
142
|
<a id='changelog-1.4.0'></a>
|
|
6
143
|
## 1.4.0 (2024-07-11)
|
|
7
144
|
|
|
@@ -62,7 +62,8 @@ guide = [
|
|
|
62
62
|
"sphinxcontrib-jquery",
|
|
63
63
|
"sphinxext-rediraffe",
|
|
64
64
|
"sphinxcontrib-youtube",
|
|
65
|
-
"sphinx-favicon"
|
|
65
|
+
"sphinx-favicon",
|
|
66
|
+
"sphinx-sitemap",
|
|
66
67
|
]
|
|
67
68
|
technote = [
|
|
68
69
|
# Theme and extensions for technotes
|
|
@@ -72,7 +73,8 @@ technote = [
|
|
|
72
73
|
"sphinx-diagrams",
|
|
73
74
|
"sphinx_design",
|
|
74
75
|
"myst-nb",
|
|
75
|
-
"sphinxcontrib-youtube"
|
|
76
|
+
"sphinxcontrib-youtube",
|
|
77
|
+
"sphinx-sitemap",
|
|
76
78
|
]
|
|
77
79
|
|
|
78
80
|
[dependency-groups]
|
|
@@ -8,14 +8,16 @@ from git import Repo
|
|
|
8
8
|
from sphinx.errors import ConfigError
|
|
9
9
|
|
|
10
10
|
__all__ = [
|
|
11
|
-
"
|
|
11
|
+
"GitRepository",
|
|
12
12
|
"extend_static_paths_with_asset_extension",
|
|
13
|
+
"get_asset_path",
|
|
14
|
+
"get_common_nitpick_ignore",
|
|
15
|
+
"get_common_nitpick_ignore_regex",
|
|
13
16
|
"get_template_dir",
|
|
14
|
-
"GitRepository",
|
|
15
17
|
]
|
|
16
18
|
|
|
17
19
|
|
|
18
|
-
def
|
|
20
|
+
def _get_assets_directory() -> Path:
|
|
19
21
|
"""Get the absolute path to the Documenteer assets directory."""
|
|
20
22
|
return Path(__file__).parent.joinpath("../assets")
|
|
21
23
|
|
|
@@ -44,7 +46,7 @@ def get_asset_path(name: str) -> str:
|
|
|
44
46
|
get_asset_path("rubin-titlebar-imagotype-light.svg"),
|
|
45
47
|
]
|
|
46
48
|
"""
|
|
47
|
-
asset_path =
|
|
49
|
+
asset_path = _get_assets_directory().joinpath(name).resolve()
|
|
48
50
|
if not asset_path.exists():
|
|
49
51
|
raise ConfigError(
|
|
50
52
|
f"Documenteer asset {name!r} does not exist.\n"
|
|
@@ -60,7 +62,7 @@ def extend_static_paths_with_asset_extension(
|
|
|
60
62
|
"""Extend a Sphinx ``html_static_path`` configuration list with the
|
|
61
63
|
files of a given extension in Documenteer's assets directory.
|
|
62
64
|
"""
|
|
63
|
-
asset_dir =
|
|
65
|
+
asset_dir = _get_assets_directory()
|
|
64
66
|
new_paths = [str(p) for p in asset_dir.glob(f"*.{extension}")]
|
|
65
67
|
html_static_path.extend(new_paths)
|
|
66
68
|
|
|
@@ -144,3 +146,69 @@ def extend_excludes_for_non_index_source(
|
|
|
144
146
|
for p in cwd.glob(f"**/*.{extension}"):
|
|
145
147
|
if p.name != f"index.{extension}":
|
|
146
148
|
exclude_patterns.append(str(p.relative_to(cwd))) # noqa: PERF401
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def get_common_nitpick_ignore() -> list[tuple[str, str]]:
|
|
152
|
+
"""Get a list of common nitpick ignore tuples for Sphinx.
|
|
153
|
+
|
|
154
|
+
This is useful for ignoring common warnings that are not relevant to
|
|
155
|
+
the documentation project.
|
|
156
|
+
|
|
157
|
+
Returns
|
|
158
|
+
-------
|
|
159
|
+
list[tuple[str, str]]
|
|
160
|
+
A list of tuples where each tuple contains the domain and the target
|
|
161
|
+
to ignore.
|
|
162
|
+
"""
|
|
163
|
+
return [
|
|
164
|
+
# Ignore missing cross-references for modules that don't provide
|
|
165
|
+
# intersphinx. The documentation itself should use double-quotes
|
|
166
|
+
# instead of single-quotes to not generate a reference, but automatic
|
|
167
|
+
# references are generated from the type signatures and can't be
|
|
168
|
+
# avoided.
|
|
169
|
+
("py:obj", "ConfigDict"),
|
|
170
|
+
(
|
|
171
|
+
"py:obj",
|
|
172
|
+
"safir.pydantic.validate_exactly_one_of.<locals>.validator",
|
|
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.
|
|
177
|
+
("py:class", "asyncio.locks.Lock"),
|
|
178
|
+
("py:class", "pathlib._local.Path"),
|
|
179
|
+
]
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def get_common_nitpick_ignore_regex() -> list[tuple[str, str]]:
|
|
183
|
+
"""Get a list of common nitpick ignore regex tuples for Sphinx.
|
|
184
|
+
|
|
185
|
+
This is useful for ignoring common warnings that are not relevant to
|
|
186
|
+
the documentation project.
|
|
187
|
+
|
|
188
|
+
Returns
|
|
189
|
+
-------
|
|
190
|
+
list[tuple[str, str]]
|
|
191
|
+
A list of tuples where each tuple contains the domain and the target
|
|
192
|
+
to ignore.
|
|
193
|
+
"""
|
|
194
|
+
# These packages aren't documented with Sphinx, so we can't link to them
|
|
195
|
+
# with intersphinx.
|
|
196
|
+
packages = [
|
|
197
|
+
"fastapi",
|
|
198
|
+
"httpx",
|
|
199
|
+
"kubernetes_asyncio",
|
|
200
|
+
"pydantic",
|
|
201
|
+
"pydantic_settings",
|
|
202
|
+
"starlette",
|
|
203
|
+
]
|
|
204
|
+
patterns = [("py:*", rf"{package}(?:\..*)?") for package in packages]
|
|
205
|
+
|
|
206
|
+
# Additional patterns that are common to ignore.
|
|
207
|
+
patterns.extend(
|
|
208
|
+
[
|
|
209
|
+
# Bug in sphinx.ext.autodoc for pydantic models.
|
|
210
|
+
("py:*", r".*\.all fields"),
|
|
211
|
+
]
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
return patterns
|
|
@@ -16,6 +16,10 @@ from documenteer.conf import (
|
|
|
16
16
|
get_asset_path,
|
|
17
17
|
get_template_dir,
|
|
18
18
|
)
|
|
19
|
+
from documenteer.conf._utils import (
|
|
20
|
+
get_common_nitpick_ignore,
|
|
21
|
+
get_common_nitpick_ignore_regex,
|
|
22
|
+
)
|
|
19
23
|
|
|
20
24
|
# This configuration is broken down into these sections:
|
|
21
25
|
#
|
|
@@ -85,6 +89,9 @@ __all__ = [
|
|
|
85
89
|
"html_css_files",
|
|
86
90
|
"html_show_sourcelink",
|
|
87
91
|
"favicons",
|
|
92
|
+
"sitemap_url_scheme",
|
|
93
|
+
"sitemap_show_lastmod",
|
|
94
|
+
"sitemap_excludes",
|
|
88
95
|
# API
|
|
89
96
|
"automodapi_toctreedirnm",
|
|
90
97
|
"always_document_param_types",
|
|
@@ -159,6 +166,8 @@ extensions = [
|
|
|
159
166
|
"sphinx_automodapi.automodapi",
|
|
160
167
|
"sphinx_automodapi.smart_resolver",
|
|
161
168
|
"sphinx_favicon",
|
|
169
|
+
"sphinx_sitemap",
|
|
170
|
+
"documenteer.ext.robots",
|
|
162
171
|
"documenteer.ext.jira",
|
|
163
172
|
"documenteer.ext.lsstdocushare",
|
|
164
173
|
"documenteer.ext.mockcoderefs",
|
|
@@ -215,52 +224,10 @@ default_role = "py:obj"
|
|
|
215
224
|
nitpicky = _conf.nitpicky
|
|
216
225
|
|
|
217
226
|
# Warnings to ignore
|
|
218
|
-
nitpick_ignore
|
|
219
|
-
# Ignore missing cross-references for modules that don't provide
|
|
220
|
-
# intersphinx. The documentation itself should use double-quotes instead
|
|
221
|
-
# of single-quotes to not generate a reference, but automatic references
|
|
222
|
-
# are generated from the type signatures and can't be avoided.
|
|
223
|
-
("py:class", "fastapi.applications.FastAPI"),
|
|
224
|
-
("py:class", "fastapi.datastructures.DefaultPlaceholder"),
|
|
225
|
-
("py:class", "fastapi.exceptions.HTTPException"),
|
|
226
|
-
("py:class", "fastapi.params.Depends"),
|
|
227
|
-
("py:class", "fastapi.routing.APIRoute"),
|
|
228
|
-
("py:class", "httpx.AsyncClient"),
|
|
229
|
-
("py:exc", "fastapi.HTTPException"),
|
|
230
|
-
("py:exc", "fastapi.exceptions.RequestValidationError"),
|
|
231
|
-
("py:exc", "httpx.HTTPError"),
|
|
232
|
-
("py:obj", "ConfigDict"),
|
|
233
|
-
("py:obj", "fastapi.routing.APIRoute"),
|
|
234
|
-
("py:class", "kubernetes_asyncio.client.api_client.ApiClient"),
|
|
235
|
-
("py:class", "pydantic.main.BaseModel"),
|
|
236
|
-
("py:class", "pydantic.networks.AnyHttpUrl"),
|
|
237
|
-
("py:class", "pydantic.networks.IPvAnyNetwork"),
|
|
238
|
-
("py:class", "pydantic.types.SecretStr"),
|
|
239
|
-
("py:class", "pydantic.utils.Representation"),
|
|
240
|
-
("py:class", "pydantic_core._pydantic_core.Url"),
|
|
241
|
-
("py:class", "pydantic_core._pydantic_core.ValidationError"),
|
|
242
|
-
("py:class", "pydantic_settings.main.BaseSettings"),
|
|
243
|
-
("py:class", "pydantic_settings.sources.CliSettingsSource"),
|
|
244
|
-
("py:obj", "safir.pydantic.validate_exactly_one_of.<locals>.validator"),
|
|
245
|
-
("py:class", "starlette.datastructures.URL"),
|
|
246
|
-
("py:class", "starlette.middleware.base.BaseHTTPMiddleware"),
|
|
247
|
-
("py:class", "starlette.requests.Request"),
|
|
248
|
-
("py:class", "starlette.responses.Response"),
|
|
249
|
-
("py:class", "starlette.routing.Route"),
|
|
250
|
-
("py:class", "starlette.routing.BaseRoute"),
|
|
251
|
-
("py:exc", "starlette.exceptions.HTTPException"),
|
|
252
|
-
# asyncio.Lock is documented, and that's what all the code references, but
|
|
253
|
-
# the combination of Sphinx extensions we're using confuse themselves and
|
|
254
|
-
# there doesn't seem to be any way to fix this.
|
|
255
|
-
("py:class", "asyncio.locks.Lock"),
|
|
256
|
-
]
|
|
227
|
+
nitpick_ignore = get_common_nitpick_ignore()
|
|
257
228
|
_conf.append_nitpick_ignore(nitpick_ignore)
|
|
258
229
|
|
|
259
|
-
nitpick_ignore_regex
|
|
260
|
-
("py:class", r"kubernetes_asyncio\.client\.models\..*"),
|
|
261
|
-
# Bug in autodoc_pydantic.
|
|
262
|
-
("py:obj", r".*\.all fields"),
|
|
263
|
-
]
|
|
230
|
+
nitpick_ignore_regex = get_common_nitpick_ignore_regex()
|
|
264
231
|
_conf.append_nitpick_ignore_regex(nitpick_ignore_regex)
|
|
265
232
|
|
|
266
233
|
# A list of paths that contain extra templates (or templates that overwrite
|
|
@@ -319,6 +286,10 @@ html_theme_options = {
|
|
|
319
286
|
},
|
|
320
287
|
"pygments_light_style": "xcode",
|
|
321
288
|
"pygments_dark_style": "github-dark",
|
|
289
|
+
"analytics": {
|
|
290
|
+
"plausible_analytics_domain": "lsst.io",
|
|
291
|
+
"plausible_analytics_url": "https://plausible.io/js/script.file-downloads.hash.outbound-links.js",
|
|
292
|
+
},
|
|
322
293
|
}
|
|
323
294
|
|
|
324
295
|
if _conf.github_url:
|
|
@@ -384,6 +355,13 @@ html_css_files = ["rubin-pydata-theme.css"]
|
|
|
384
355
|
# If true, links to the reST sources are added to the pages.
|
|
385
356
|
html_show_sourcelink = False
|
|
386
357
|
|
|
358
|
+
# Sitemap generation
|
|
359
|
+
sitemap_url_scheme = "{link}"
|
|
360
|
+
sitemap_show_lastmod = True
|
|
361
|
+
sitemap_excludes = [
|
|
362
|
+
"search.html",
|
|
363
|
+
]
|
|
364
|
+
|
|
387
365
|
# ============================================================================
|
|
388
366
|
# #API API reference configurations
|
|
389
367
|
# ============================================================================
|
|
@@ -14,6 +14,8 @@ from documenteer.conf import (
|
|
|
14
14
|
get_template_dir,
|
|
15
15
|
)
|
|
16
16
|
|
|
17
|
+
from ._utils import get_common_nitpick_ignore, get_common_nitpick_ignore_regex
|
|
18
|
+
|
|
17
19
|
# Suppress warnings about deprecated features in future Sphinx versions.
|
|
18
20
|
# This is noise for users because Documenteer itself constrains the Sphinx
|
|
19
21
|
# version.
|
|
@@ -50,6 +52,7 @@ extensions.extend( # noqa: F405
|
|
|
50
52
|
"sphinx_prompt",
|
|
51
53
|
"sphinx_design",
|
|
52
54
|
"sphinxcontrib.youtube",
|
|
55
|
+
"sphinx_sitemap",
|
|
53
56
|
]
|
|
54
57
|
)
|
|
55
58
|
|
|
@@ -119,3 +122,17 @@ if _id is not None:
|
|
|
119
122
|
html_context["editions_url"] = ( # noqa: F405
|
|
120
123
|
f"https://{_id.lower()}.lsst.io/v/"
|
|
121
124
|
)
|
|
125
|
+
|
|
126
|
+
nitpick_ignore_regex.extend(get_common_nitpick_ignore_regex()) # noqa: F405
|
|
127
|
+
nitpick_ignore.extend(get_common_nitpick_ignore()) # noqa: F405
|
|
128
|
+
|
|
129
|
+
# Configure sitemap.xml
|
|
130
|
+
sitemap_url_scheme = "{link}"
|
|
131
|
+
sitemap_show_lastmod = True
|
|
132
|
+
sitemap_excludes = [
|
|
133
|
+
# These auto-generated pages aren't relevant in technotes, which are
|
|
134
|
+
# meant to be single-page documents.
|
|
135
|
+
"search.html",
|
|
136
|
+
"genindex.html",
|
|
137
|
+
"py-modindex.html",
|
|
138
|
+
]
|
|
@@ -4,18 +4,17 @@ This module is heavily influenced by sphinx-issue (Steven Loria). See
|
|
|
4
4
|
/licenses/sphinx-issue.txt for licensing information.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
import logging
|
|
8
7
|
from typing import Any
|
|
9
8
|
|
|
10
9
|
from docutils import nodes, utils
|
|
11
10
|
from docutils.parsers.rst.states import Inliner
|
|
12
11
|
from sphinx.application import Sphinx
|
|
12
|
+
from sphinx.util.logging import getLogger
|
|
13
13
|
from sphinx.util.typing import ExtensionMetadata
|
|
14
14
|
|
|
15
15
|
from ..version import __version__
|
|
16
16
|
|
|
17
|
-
log =
|
|
18
|
-
log.addHandler(logging.NullHandler())
|
|
17
|
+
log = getLogger(__name__)
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
def _make_ticket_node(
|