Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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

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.1.0a38.tar.gz (10.0 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.1.0a38-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_gp_sitemap-0.1.0a38.tar.gz.

File metadata

  • Download URL: sphinx_gp_sitemap-0.1.0a38.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sphinx_gp_sitemap-0.1.0a38.tar.gz
Algorithm Hash digest
SHA256 08ada6b2f797c473bcf194b9bca033f8effe490a45e92b9ca419978332c95236
MD5 b807a4aefc14e147d8ef3a0a1ff2d8be
BLAKE2b-256 94e5aabd8d9bde187607c254313e2e5b3a5fa7273e4f9e4b7a16876f634ee9b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gp_sitemap-0.1.0a38.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.1.0a38-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinx_gp_sitemap-0.1.0a38-py3-none-any.whl
Algorithm Hash digest
SHA256 1ac494cf06644b22983edee2ba4ba7c0a747b661fd69d6bfc4a48d9bc5853588
MD5 2a85c5905d708c89e6a70d97e6d38a30
BLAKE2b-256 9a3240aaee9df67cc27fad4f7f2623571fbf2a856f7b924c837eb065c9ad1763

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gp_sitemap-0.1.0a38-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.

Release history Release notifications | RSS feed

This release

0.1.0a38 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page