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.1a25.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.0.1a25-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_gp_sitemap-0.0.1a25.tar.gz.

File metadata

  • Download URL: sphinx_gp_sitemap-0.0.1a25.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sphinx_gp_sitemap-0.0.1a25.tar.gz
Algorithm Hash digest
SHA256 5622e9d0fb3ff44d54c83600e8d63b7465f41f5958863c09e27e4b688a942420
MD5 2039955169fc363eb6201eccf1fbaf83
BLAKE2b-256 5c8c9291c27c851b7d68be86f3e29a550d817989a93dcec1883896bf296fdd2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gp_sitemap-0.0.1a25.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.1a25-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinx_gp_sitemap-0.0.1a25-py3-none-any.whl
Algorithm Hash digest
SHA256 f96f26449171148349014f9a9c96341a9476547aef32839d87b75ab3d0a82cf0
MD5 800b99f61904efb5063eb9093e8f3935
BLAKE2b-256 91bf53b794d7a5ec6fccc3ec9fcb4872b111a03a0208774c847984332b8eb6ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gp_sitemap-0.0.1a25-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