Motivation Upgrades Sphinx to 9.x, MyST Parser to 5.x, Python to 3.11+–3.14, Node.js to 22, and replaces Poetry with uv for dependency management. Changelog: https://github.com/scylladb/sphinx-scylladb-theme/blob/master/docs/source/upgrade/CHANGELOG.md#190---26-february-2026 How to test * Make sure you are using Python 3.11-3.14: * python --version * Install uv: * make setupenv * Build the docs: * make preview * Docs should render without errors at http://127.0.0.1:5500 Closes scylladb/scylladb#28971
205 lines
7.2 KiB
Python
205 lines
7.2 KiB
Python
# -*- coding: utf-8 -*-
|
||
import os
|
||
import sys
|
||
import warnings
|
||
from datetime import date
|
||
|
||
from sphinx_scylladb_theme.utils import multiversion_regex_builder, fetch_multiversion_configuration
|
||
from recommonmark.transform import AutoStructify
|
||
|
||
sys.path.insert(0, os.path.abspath('./_ext'))
|
||
sys.path.insert(0, os.path.abspath(".."))
|
||
|
||
# -- Global variables
|
||
FLAG = os.getenv('FLAG', 'manual')
|
||
|
||
# Set the project name
|
||
PROJECT = "ScyllaDB Manual"
|
||
# Set the base URL for the documentation site.
|
||
BASE_URL = 'https://docs.scylladb.com/manual'
|
||
# Multiversion configuration URL
|
||
VERSIONS_URL = "https://raw.githubusercontent.com/scylladb/scylladb-docs-homepage/refs/heads/main/docs/_static/data/manual_doc_versions.json"
|
||
|
||
if FLAG == 'opensource':
|
||
# Set the project name
|
||
PROJECT = "ScyllaDB Open Source"
|
||
# Set the base URL for the documentation site.
|
||
BASE_URL = 'https://opensource.docs.scylladb.com'
|
||
# Multiversion configuration URL
|
||
VERSIONS_URL = "https://raw.githubusercontent.com/scylladb/scylladb-docs-homepage/refs/heads/main/docs/_static/data/opensource_doc_versions.json"
|
||
|
||
# Build documentation for the following tags and branches.
|
||
MULTIVERSION_CONFIG = fetch_multiversion_configuration(VERSIONS_URL)
|
||
TAGS = MULTIVERSION_CONFIG.get("tags", [])
|
||
BRANCHES = MULTIVERSION_CONFIG.get("branches", ["master"])
|
||
# Set the latest version.
|
||
LATEST_VERSION = MULTIVERSION_CONFIG.get("latest", "master")
|
||
# Set which versions are not released yet.
|
||
UNSTABLE_VERSIONS = MULTIVERSION_CONFIG.get("unstable", [])
|
||
# Set which versions are deprecated.
|
||
DEPRECATED_VERSIONS = MULTIVERSION_CONFIG.get("deprecated", [])
|
||
|
||
# -- General configuration
|
||
|
||
# Add any Sphinx extension module names here, as strings.
|
||
extensions = [
|
||
"sphinx.ext.autodoc",
|
||
"sphinx.ext.todo",
|
||
"sphinx.ext.mathjax",
|
||
"sphinx.ext.githubpages",
|
||
"sphinx.ext.extlinks",
|
||
"sphinx_sitemap",
|
||
"sphinx_scylladb_theme",
|
||
"sphinx_multiversion",
|
||
"sphinx_scylladb_markdown",
|
||
"sphinxcontrib.datatemplates",
|
||
"scylladb_cc_properties",
|
||
"scylladb_aws_images",
|
||
"scylladb_azure_images",
|
||
"scylladb_gcp_images",
|
||
"scylladb_include_flag",
|
||
"scylladb_dynamic_substitutions",
|
||
"scylladb_swagger",
|
||
"scylladb_metrics"
|
||
]
|
||
|
||
# The suffix(es) of source filenames.
|
||
source_suffix = ['.rst', '.md']
|
||
|
||
# The master toctree document.
|
||
master_doc = "index"
|
||
|
||
# General information about the project.
|
||
project = PROJECT
|
||
copyright = str(date.today().year) + ", ScyllaDB. All rights reserved."
|
||
author = u"ScyllaDB Project Contributors"
|
||
|
||
# List of patterns, relative to source directory, that match files and
|
||
# directories to ignore when looking for source files.
|
||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'lib', 'lib64','**/_common/*', 'README.md', 'README-metrics.md', 'index.md', '.git', '.github', '_utils', 'rst_include', 'venv', '.venv', 'dev', '_data/**']
|
||
|
||
# The name of the Pygments (syntax highlighting) style to use.
|
||
pygments_style = "sphinx"
|
||
|
||
# List of substitutions
|
||
rst_prolog = """
|
||
.. |mon_root| replace:: `Scylla Monitoring Stack <https://monitoring.docs.scylladb.com>`__
|
||
.. |cql-version| replace:: 3.3.1
|
||
"""
|
||
|
||
# -- Options for not found extension
|
||
|
||
# Template used to render the 404.html generated by this extension.
|
||
notfound_template = "404.html"
|
||
|
||
# Prefix added to all the URLs generated in the 404 page.
|
||
notfound_urls_prefix = ""
|
||
|
||
# -- Options for markdown extension
|
||
scylladb_markdown_enable = True
|
||
scylladb_markdown_recommonmark_versions = ['branch-5.1', 'branch-5.2', 'branch-5.4']
|
||
suppress_warnings = ["myst.xref_missing"]
|
||
|
||
# -- Options for sitemap extension
|
||
|
||
sitemap_url_scheme = "/stable/{link}"
|
||
|
||
# -- Options for multiversion extension
|
||
|
||
# Whitelist pattern for tags
|
||
smv_tag_whitelist = multiversion_regex_builder(TAGS)
|
||
# Whitelist pattern for branches
|
||
smv_branch_whitelist = multiversion_regex_builder(BRANCHES)
|
||
# Defines which version is considered to be the latest stable version.
|
||
smv_latest_version = LATEST_VERSION
|
||
# Defines the new name for the latest version.
|
||
smv_rename_latest_version = "stable"
|
||
# Whitelist pattern for remotes (set to None to use local branches only)
|
||
smv_remote_whitelist = r"^origin$"
|
||
# Pattern for released versions
|
||
smv_released_pattern = r"^tags/.*$"
|
||
# Format for versioned output directories inside the build directory
|
||
smv_outputdir_format = "{ref.name}"
|
||
|
||
# -- Options for scylladb_aws_images extension
|
||
|
||
scylladb_aws_images_base_url = "https://s3.amazonaws.com/downloads.scylladb.com"
|
||
scylladb_aws_images_ami_bucket_directory = "downloads/scylla/aws/ami/"
|
||
scylladb_aws_images_ami_download_directory = "_data/opensource/aws/ami"
|
||
scylladb_aws_images_cloudformation_bucket_directory = "downloads/scylla/aws/cloudformation/"
|
||
|
||
# -- Options for scylladb_azure_images extension
|
||
scylladb_azure_images_base_url = "https://s3.amazonaws.com/downloads.scylladb.com"
|
||
scylladb_azure_images_bucket_directory = "downloads/scylla/azure/"
|
||
scylladb_azure_images_download_directory = "_data/opensource/azure"
|
||
|
||
# -- Options for scylladb_gcp_images extension
|
||
scylladb_gcp_images_base_url = "https://s3.amazonaws.com/downloads.scylladb.com"
|
||
scylladb_gcp_images_bucket_directory = "downloads/scylla/gce/"
|
||
scylladb_gcp_images_download_directory = "_data/opensource/gce"
|
||
|
||
# -- Options for scylladb_swagger extension
|
||
scylladb_swagger_origin_api = "../api"
|
||
scylladb_swagger_template = "swagger.tmpl"
|
||
scylladb_swagger_inc_template = "swagger_inc.tmpl"
|
||
|
||
# -- Options for scylladb_metrics
|
||
scylladb_metrics_directory = "_data/opensource/metrics"
|
||
|
||
|
||
# -- Options for HTML output
|
||
|
||
# The theme to use for pages.
|
||
html_theme = "sphinx_scylladb_theme"
|
||
templates_path = ['_templates', ]
|
||
|
||
# These folders are copied to the documentation's HTML output
|
||
html_static_path = ['_static']
|
||
|
||
# These paths are either relative to html_static_path
|
||
# or fully qualified paths (eg. https://...)
|
||
html_css_files = [
|
||
'css/custom.css',
|
||
]
|
||
|
||
# Theme options are theme-specific and customize the look and feel of a theme
|
||
# further. For a list of options available for the theme, see the
|
||
# documentation.
|
||
html_theme_options = {
|
||
"conf_py_path": "docs/",
|
||
'hide_banner': 'true',
|
||
"hide_ai_chatbot": "false",
|
||
"hide_edit_this_page_button": "false",
|
||
"hide_feedback_buttons": 'false',
|
||
"github_issues_repository": "scylladb/scylladb",
|
||
"github_repository": "scylladb/scylladb",
|
||
"github_label": "documentation",
|
||
"versions_unstable": UNSTABLE_VERSIONS,
|
||
"versions_deprecated": DEPRECATED_VERSIONS,
|
||
'banner_button_text': 'Register for Free',
|
||
'banner_button_url': 'https://lp.scylladb.com/university-live-2023-03-registration?siteplacement=docs',
|
||
'banner_title_text': 'ScyllaDB University LIVE, FREE Virtual Training Event | March 21',
|
||
"navigation_depth": 3,
|
||
"collapse_navigation": 'false',
|
||
"brand": "open-source" if FLAG == 'opensource' else "self-hosted",
|
||
}
|
||
|
||
# Last updated format
|
||
html_last_updated_fmt = "%d %b %Y"
|
||
|
||
# Custom sidebar templates, maps document names to template names.
|
||
html_sidebars = {"**": ["side-nav.html"]}
|
||
|
||
# Output file base name for HTML help builder.
|
||
htmlhelp_basename = "ScyllaDocumentationdoc"
|
||
|
||
# URL which points to the root of the HTML documentation.
|
||
html_baseurl = BASE_URL
|
||
|
||
# Dictionary of values to pass into the template engine’s context for all pages
|
||
html_context = {"html_baseurl": html_baseurl, "flag": FLAG}
|
||
|
||
def setup(app):
|
||
if 'opensource' in app.tags:
|
||
app.tags.add('experimental')
|