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

Uploaded Python 3

File details

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

File metadata

  • Download URL: sphinx_gp_sitemap-0.0.1a14.tar.gz
  • Upload date:
  • Size: 9.9 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.1a14.tar.gz
Algorithm Hash digest
SHA256 ee437cfbae8c8d5aaa8e581d3d7a08631d7cdeb7ec244a9525db92e5f0632c2b
MD5 c076077e5fef605b137ae5224ee8819e
BLAKE2b-256 0f721597ea7873c515f6eb109afbe896bf322c12d2cd8599b7f017dfaee5c8c5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sphinx_gp_sitemap-0.0.1a14-py3-none-any.whl
Algorithm Hash digest
SHA256 17ef6b79540de2883a94ac33531962b264337ab79ca2a9938c96622c52cfb84a
MD5 f8dd86c1eecb44c5da9e2e616cf03307
BLAKE2b-256 2ae0cd73655e5ddefaf5d5196368bb8f7413338ef44f8ee83f9bb0ab337c0195

See more details on using hashes here.

Provenance

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