Skip to main content

Sitemap generator for Sphinx — Sphinx 8.1+ idioms, parallel-build safe

Project description

sphinx-gp-sitemap

Sitemap generator for Sphinx — a drop-in replacement for sphinx-sitemap updated to Sphinx 8.1+ idioms. Same sitemap_* configuration surface, no multiprocessing.Queue, and a soft (lazy-loaded) dependency on sphinx-last-updated-by-git that activates only when sitemap_show_lastmod = True.

Part of the gp-sphinx documentation platform.

Install

$ pip install sphinx-gp-sitemap

When you depend on gp-sphinx, this extension is already loaded — see Auto-derived values below. The full config-key reference is auto-generated on the package docs page from the live app.add_config_value() registrations.

Minimum viable conf.py

extensions = [
    "sphinx_gp_sitemap",
]
site_url = "https://example.com/"

After every HTML-family build, sitemap.xml is written to the output directory. One <url> element per page; the index of the dirhtml builder is emitted as the bare base URL (not index/). When site_url is unset and html_baseurl is also unset, sitemap emission is skipped silently — the notice is logged at INFO, not WARNING, so -W strict builds do not fail on undeployed projects.

Auto-derived values when used with gp-sphinx

Projects that build through {py:func}gp_sphinx.config.merge_sphinx_config do not need to set site_url or sitemap_url_scheme manually. Pass docs_url= to merge_sphinx_config() and gp-sphinx fills both:

  • site_url is normalized to end in /.
  • sitemap_url_scheme is set to "{link}" — flat, no language or version path segment — because git-pull.com sites deploy at the project root.

See the sphinx-gp-sitemap package page for the integration story and configuration.md for the canonical mapping table.

Builder support

Builder URL shape Notes
html …/<page>.html (or …<html_file_suffix>) Honors html_file_suffix for .htm mirrors
dirhtml …/<page>/ Site index emitted as the bare site_url, not …/index/

Other builders (text, latex, singlehtml, …) are unaffected — they do not fire html-page-context, so no sitemap is written.

Multi-language sites

When sitemap_locales is set or auto-detected from locale_dirs, each <url> gains <xhtml:link rel="alternate" hreflang="…"> entries for every locale. Underscores in locale codes are rewritten to hyphens for IANA compatibility (pt_BRpt-BR).

sitemap_locales = ["de", "fr", "ja"]

Use sitemap_locales = [None] to explicitly suppress hreflang alternates — useful when locale_dirs is populated for translation workflows that do not produce hreflang-eligible deploys.

Excluding pages

sitemap_excludes = [
    "draft/*",
    "internal-*",
]

Patterns match the sitemap_link (the relative page URL after the builder applies its suffix) via fnmatch. The patterns run after suffix application, so draft/index.html and draft/index/ both match draft/* regardless of builder.

lastmod from git

sitemap_show_lastmod = True

The first time config-inited fires with this flag set, sphinx-gp-sitemap runs app.setup_extension("sphinx_last_updated_by_git") to load sphinx-last-updated-by-git on demand. Per-page <lastmod> values come from each source file's latest commit timestamp. If the supporting extension is not installed, sphinx-gp-sitemap warns once and disables sitemap_show_lastmod for the rest of the build — <lastmod> is simply omitted.

Differences from sphinx-sitemap

Configuration is drop-in compatible — every sitemap_* key is registered with the same name, type, and default. Behaviourally the package is the same except for one explicit trade-off:

  • Parallel writes are not declared safe. Collected links live in env.temp_data["sphinx_gp_sitemap_links"], which Sphinx documents as per-process state and does not merge across sphinx-build -j N workers. sphinx-gp-sitemap therefore advertises parallel_read_safe only. Sites that need parallel writes should run a separate non-parallel pass for sitemap generation, or upstream the env-merge work to this package.

The other differences are implementation modernizations (no multiprocessing.Queue, public app.builder.name == "dirhtml" detection rather than monkey-patching, contextlib.suppress(ExtensionError) around the optional html_baseurl re-registration). These do not change the configuration surface.

See also

  • sphinx-gp-opengraph — companion package for OpenGraph meta-tag emission
  • gp-sphinx — the umbrella docs platform; auto-derives site_url and sitemap_url_scheme from a single docs_url argument
  • sphinx-gp-sitemap package page — integration story, event hooks, and the parallel-write trade-off

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinx_gp_sitemap-0.0.1a16.dev3.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinx_gp_sitemap-0.0.1a16.dev3-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_gp_sitemap-0.0.1a16.dev3.tar.gz.

File metadata

File hashes

Hashes for sphinx_gp_sitemap-0.0.1a16.dev3.tar.gz
Algorithm Hash digest
SHA256 a6688a43e72241ac8a7645ff41f9f581a55cc2f68bafdc139cacc745332cfdab
MD5 cc738dd9b2acc1be879a147b2640b27f
BLAKE2b-256 77882bc65fe34f13dec253b30baa96189c50da32287cb4eefc4dbdac9477105e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gp_sitemap-0.0.1a16.dev3.tar.gz:

Publisher: release.yml on git-pull/gp-sphinx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sphinx_gp_sitemap-0.0.1a16.dev3-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinx_gp_sitemap-0.0.1a16.dev3-py3-none-any.whl
Algorithm Hash digest
SHA256 6f583fd7f87d5a865234f2c7a989e84a6af9ae80bcf3cfb946323cf1ccab1430
MD5 3d95a44b8eaf2f6b789cf71d584b30f2
BLAKE2b-256 006dce695fcd6ca3bf14b17d0aafaab0dc83e5d7a18cf4dda8501243cd6b66a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gp_sitemap-0.0.1a16.dev3-py3-none-any.whl:

Publisher: release.yml on git-pull/gp-sphinx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page