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

Uploaded Python 3

File details

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

File metadata

  • Download URL: sphinx_gp_sitemap-0.0.1a33.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.1a33.tar.gz
Algorithm Hash digest
SHA256 7177a71c6cedc577a1828bac60cff2fd60b3323da527d8dd012e6bedd88065ce
MD5 cc242b41aeee85dfa2abb45e81a7dd7b
BLAKE2b-256 53a9cab24647aca36ca8c4d961c3eaf906bc0bf1f1ae8e8248aa5a7a72c3381d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sphinx_gp_sitemap-0.0.1a33-py3-none-any.whl
Algorithm Hash digest
SHA256 613444bf15ef05fcf025e0997321b459e16edffa75a918ac6c54a3482009e382
MD5 6e235ff570938f87e45ff928f976ac6d
BLAKE2b-256 f91783f60b5009886ef70c73b5935f49e38effe64fa53218784cf72fab8eae7e

See more details on using hashes here.

Provenance

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