Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-openstackdocstheme for 
openSUSE:Factory checked in at 2026-03-29 20:01:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-openstackdocstheme (Old)
 and      /work/SRC/openSUSE:Factory/.python-openstackdocstheme.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-openstackdocstheme"

Sun Mar 29 20:01:08 2026 rev:25 rq:1343445 version:3.6.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-openstackdocstheme/python-openstackdocstheme.changes
      2025-11-10 19:19:00.324531894 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-openstackdocstheme.new.8177/python-openstackdocstheme.changes
    2026-03-29 20:01:36.775707819 +0200
@@ -1,0 +2,20 @@
+Sun Mar 29 14:36:40 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.6.0:
+  * ruff: Configure hacking as external linter
+  * Replace obsolete PCRE packages
+  * README: Trivial nits
+  * Add typing
+  * Bump sphinx min version
+  * Enable more ruff rules
+  * pre-commit: Bump dependencies
+  * Migrate setup configuration to pyproject.toml
+  * Drop Python 3.9 support
+  * Replace deprecated datetime.utcfromtimestamp
+  * Remove tags from README
+  * Removed code for IE versions below 9 and fix few urls for use
+    https
+  * refactor(js): remove unused jQuery code
+  * feat: add project-scoped search bar to sidebar
+
+-------------------------------------------------------------------

Old:
----
  openstackdocstheme-3.5.0.tar.gz

New:
----
  openstackdocstheme-3.6.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-openstackdocstheme.spec ++++++
--- /var/tmp/diff_new_pack.Bu6Shu/_old  2026-03-29 20:01:37.315730067 +0200
+++ /var/tmp/diff_new_pack.Bu6Shu/_new  2026-03-29 20:01:37.315730067 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-openstackdocstheme
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %global pythons %{primary_python}
 Name:           python-openstackdocstheme
-Version:        3.5.0
+Version:        3.6.0
 Release:        0
 Summary:        OpenStack Docs Theme
 License:        Apache-2.0

++++++ openstackdocstheme-3.5.0.tar.gz -> openstackdocstheme-3.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/.pre-commit-config.yaml 
new/openstackdocstheme-3.6.0/.pre-commit-config.yaml
--- old/openstackdocstheme-3.5.0/.pre-commit-config.yaml        2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/.pre-commit-config.yaml        2026-03-25 
11:06:16.000000000 +0100
@@ -1,31 +1,25 @@
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.6.0
+    rev: v6.0.0
     hooks:
       - id: trailing-whitespace
-      # Replaces or checks mixed line ending
       - id: mixed-line-ending
         args: ['--fix', 'lf']
         exclude: '.*\.(svg)$'
-      # Forbid files which have a UTF-8 byte-order marker
-      - id: check-byte-order-marker
-      # Checks that non-binary executables have a proper shebang
+      - id: fix-byte-order-marker
       - id: check-executables-have-shebangs
-      # Check for files that contain merge conflict strings.
       - id: check-merge-conflict
-      # Check for debugger imports and py37+ breakpoint()
-      # calls in python source
       - id: debug-statements
       - id: check-yaml
         files: .*\.(yaml|yml)$
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.6.2
+    rev: v0.14.13
     hooks:
-      - id: ruff
+      - id: ruff-check
         args: ['--fix']
       - id: ruff-format
   - repo: https://opendev.org/openstack/hacking
-    rev: 7.0.0
+    rev: 8.0.0
     hooks:
       - id: hacking
         additional_dependencies: []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/AUTHORS 
new/openstackdocstheme-3.6.0/AUTHORS
--- old/openstackdocstheme-3.5.0/AUTHORS        2025-04-24 13:19:11.000000000 
+0200
+++ new/openstackdocstheme-3.6.0/AUTHORS        2026-03-25 11:07:11.000000000 
+0100
@@ -35,6 +35,7 @@
 Hunt Xu <[email protected]>
 Ian Y. Choi <[email protected]>
 Ildiko Vancsa <[email protected]>
+Ivan Anfimov <[email protected]>
 Jacky Hu <[email protected]>
 James E. Blair <[email protected]>
 Jeremy Stanley <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/ChangeLog 
new/openstackdocstheme-3.6.0/ChangeLog
--- old/openstackdocstheme-3.5.0/ChangeLog      2025-04-24 13:19:11.000000000 
+0200
+++ new/openstackdocstheme-3.6.0/ChangeLog      2026-03-25 11:07:11.000000000 
+0100
@@ -1,6 +1,24 @@
 CHANGES
 =======
 
+3.6.0
+-----
+
+* ruff: Configure hacking as external linter
+* Replace obsolete PCRE packages
+* README: Trivial nits
+* Add typing
+* Bump sphinx min version
+* Enable more ruff rules
+* pre-commit: Bump dependencies
+* Migrate setup configuration to pyproject.toml
+* Drop Python 3.9 support
+* Replace deprecated datetime.utcfromtimestamp
+* Remove tags from README
+* Removed code for IE versions below 9 and fix few urls for use https
+* refactor(js): remove unused jQuery code
+* feat: add project-scoped search bar to sidebar
+
 3.5.0
 -----
 
@@ -33,6 +51,7 @@
 * Don't offer to show unmaintained versions
 * Fix series selection and sorting
 * Fix lack of the Yoga version in dropdown list
+* Update analytics tracking ID
 * zuul: Add tips job
 
 3.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/PKG-INFO 
new/openstackdocstheme-3.6.0/PKG-INFO
--- old/openstackdocstheme-3.5.0/PKG-INFO       2025-04-24 13:19:11.310010000 
+0200
+++ new/openstackdocstheme-3.6.0/PKG-INFO       2026-03-25 11:07:11.598222000 
+0100
@@ -1,10 +1,11 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: openstackdocstheme
-Version: 3.5.0
+Version: 3.6.0
 Summary: OpenStack Docs Theme
-Home-page: https://docs.openstack.org/openstackdocstheme/latest/
-Author: OpenStack
-Author-email: [email protected]
+Author-email: OpenStack <[email protected]>
+License: Apache-2.0
+Project-URL: Homepage, https://docs.openstack.org/openstackdocstheme
+Project-URL: Repository, https://opendev.org/openstack/openstackdocstheme
 Classifier: Environment :: OpenStack
 Classifier: Intended Audience :: Information Technology
 Classifier: Intended Audience :: System Administrators
@@ -12,31 +13,27 @@
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: 3.13
 Classifier: Topic :: Documentation
-Requires-Python: >=3.8
+Classifier: Typing :: Typed
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: pbr!=2.1.0,>=2.0.0
 Requires-Dist: dulwich>=0.15.0
-Requires-Dist: sphinx>=6.0.0
-
-========================
-Team and repository tags
-========================
-
-.. image:: https://governance.openstack.org/tc/badges/openstackdocstheme.svg
-    :target: https://governance.openstack.org/tc/reference/tags/index.html
-
-.. Change things from this point on
+Requires-Dist: sphinx>=8.0.0
+Dynamic: license-file
+Dynamic: requires-dist
 
+==========================================
 Open Infrastructure Projects Sphinx Themes
 ==========================================
 
+.. image:: https://governance.openstack.org/tc/badges/openstackdocstheme.svg
+
 Theme and extension support for Sphinx documentation that is published by
 Open Infrastructure Foundation projects.
 
@@ -51,7 +48,7 @@
 .. _`projects governed by the Technical Committee`: 
https://governance.openstack.org/tc/reference/projects/index.html
 
 StarlingX docs.starlingx.io Sphinx Theme
------------------------------------------
+----------------------------------------
 
 Theme support for Sphinx documentation that is published to
 docs.starlingx.io.
@@ -68,4 +65,3 @@
 * Release notes: https://docs.openstack.org/releasenotes/openstackdocstheme/
 * Source: https://opendev.org/openstack/openstackdocstheme
 * Bugs: https://launchpad.net/openstack-doc-tools
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/README.rst 
new/openstackdocstheme-3.6.0/README.rst
--- old/openstackdocstheme-3.5.0/README.rst     2025-04-24 13:18:07.000000000 
+0200
+++ new/openstackdocstheme-3.6.0/README.rst     2026-03-25 11:06:16.000000000 
+0100
@@ -1,15 +1,9 @@
-========================
-Team and repository tags
-========================
-
-.. image:: https://governance.openstack.org/tc/badges/openstackdocstheme.svg
-    :target: https://governance.openstack.org/tc/reference/tags/index.html
-
-.. Change things from this point on
-
+==========================================
 Open Infrastructure Projects Sphinx Themes
 ==========================================
 
+.. image:: https://governance.openstack.org/tc/badges/openstackdocstheme.svg
+
 Theme and extension support for Sphinx documentation that is published by
 Open Infrastructure Foundation projects.
 
@@ -24,7 +18,7 @@
 .. _`projects governed by the Technical Committee`: 
https://governance.openstack.org/tc/reference/projects/index.html
 
 StarlingX docs.starlingx.io Sphinx Theme
------------------------------------------
+----------------------------------------
 
 Theme support for Sphinx documentation that is published to
 docs.starlingx.io.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/api-ref/source/conf.py 
new/openstackdocstheme-3.6.0/api-ref/source/conf.py
--- old/openstackdocstheme-3.5.0/api-ref/source/conf.py 2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/api-ref/source/conf.py 2026-03-25 
11:06:16.000000000 +0100
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # Copyright (C) 2020 Red Hat, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/bindep.txt 
new/openstackdocstheme-3.6.0/bindep.txt
--- old/openstackdocstheme-3.5.0/bindep.txt     2025-04-24 13:18:07.000000000 
+0200
+++ new/openstackdocstheme-3.6.0/bindep.txt     2026-03-25 11:06:16.000000000 
+0100
@@ -35,4 +35,4 @@
 
 # For nova cross testing
 graphviz [doc test]
-libpcre3-dev [platform:dpkg test]
+libpcre2-dev [platform:dpkg test]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/doc/source/conf.py 
new/openstackdocstheme-3.6.0/doc/source/conf.py
--- old/openstackdocstheme-3.5.0/doc/source/conf.py     2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/doc/source/conf.py     2026-03-25 
11:06:16.000000000 +0100
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # Copyright (C) 2020 Red Hat, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/doc/source/index.rst 
new/openstackdocstheme-3.6.0/doc/source/index.rst
--- old/openstackdocstheme-3.5.0/doc/source/index.rst   2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/doc/source/index.rst   2026-03-25 
11:06:16.000000000 +0100
@@ -170,6 +170,15 @@
         # ...
     }
 
+The search bar in the sidebar is disabled by default. To enable it, set
+the ``sidebar_search`` option to ``True`` for project-scoped search::
+
+    html_theme_options = {
+        # ...
+        "sidebar_search": True,
+        # ...
+    }
+
 If you are using this theme for documentation you want to release based on git
 tags on your repository, set the release dropdown menu option in the
 ``html_theme_options`` in the ``conf.py`` file. By default it is set to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/__init__.py 
new/openstackdocstheme-3.6.0/openstackdocstheme/__init__.py
--- old/openstackdocstheme-3.5.0/openstackdocstheme/__init__.py 2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme/__init__.py 2026-03-25 
11:06:16.000000000 +0100
@@ -12,6 +12,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from typing import Any
+
+from sphinx import application
+
 from . import ext
 from . import page_context
 from .paths import *  # noqa
@@ -21,7 +25,7 @@
 __version__ = version_info.version_string()
 
 
-def setup(app):
+def setup(app: application.Sphinx) -> dict[str, Any]:
     ext.setup(app)
     page_context.setup(app)
     return {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/openstackdocstheme/ext.py 
new/openstackdocstheme-3.6.0/openstackdocstheme/ext.py
--- old/openstackdocstheme-3.5.0/openstackdocstheme/ext.py      2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme/ext.py      2026-03-25 
11:06:16.000000000 +0100
@@ -16,53 +16,58 @@
 import os
 import subprocess
 import textwrap
+from typing import Any
 
+from docutils import nodes
+import dulwich.errors
 import dulwich.repo
 from pbr import packaging
+from sphinx import application
+from sphinx.config import Config
 from sphinx.ext import extlinks
 from sphinx.util import logging
 
 from . import version
 from openstackdocstheme import paths
 
-_series = None
-_project = None
+_series: str | None = None
+_project: str | None = None
 _giturl = 'https://opendev.org/{}/src/{}'
-_html_context_data = None
+_html_context_data: dict[str, Any] | None = None
 
 logger = logging.getLogger(__name__)
 
 
-def _has_stable_branches():
+def _has_stable_branches() -> bool:
     try:
-        repo = dulwich.repo.Repo.discover()
-    except dulwich.repo.NotGitRepository:
+        repo = dulwich.repo.Repo.discover()  # type: ignore[no-untyped-call]
+    except dulwich.errors.NotGitRepository:
         return False
 
     refs = repo.get_refs()
-    for ref in refs.keys():
-        ref = ref.decode('utf-8')
+    for ref_bytes in refs.keys():
+        ref = ref_bytes.decode('utf-8')
         if ref.startswith('refs/remotes/origin/stable'):
             return True
 
     return False
 
 
-def _ref_sort_key(ref):
+def _ref_sort_key(ref: str) -> str:
     # note(frickler): make sure to sort series like 2023.1 after zed
     if ref.startswith("2"):
         return "zzz" + ref
     return ref
 
 
-def _get_other_versions(app):
+def _get_other_versions(app: application.Sphinx) -> list[str]:
     if not app.config.html_theme_options.get('show_other_versions', False):
         return []
 
-    all_series = []
+    all_series: list[str] = []
     try:
-        repo = dulwich.repo.Repo.discover()
-    except dulwich.repo.NotGitRepository:
+        repo = dulwich.repo.Repo.discover()  # type: ignore[no-untyped-call]
+    except dulwich.errors.NotGitRepository:
         return []
 
     refs = repo.get_refs()
@@ -101,7 +106,7 @@
     return interesting_series
 
 
-def _get_doc_path(app):
+def _get_doc_path(app: application.Sphinx) -> str | None:
     # Handle 'doc/{docType}/source' paths
     doc_parts = os.path.abspath(app.srcdir).split(os.sep)[-3:]
     if doc_parts[0] == 'doc' and doc_parts[2] == 'source':
@@ -115,10 +120,16 @@
     logger.info(
         "[openstackdocstheme] cannot identify project's root directory."
     )
-    return
+    return None
 
 
-def _html_page_context(app, pagename, templatename, context, doctree):
+def _html_page_context(
+    app: application.Sphinx,
+    pagename: str,
+    templatename: str,
+    context: dict[str, Any],
+    doctree: nodes.document | None,
+) -> None:
     global _html_context_data
     if _html_context_data is None:
         logger.debug('[openstackdocstheme] building html context')
@@ -281,7 +292,7 @@
     )
 
 
-def _get_series_name():
+def _get_series_name() -> str:
     "Return string name of release series, or 'latest'"
     global _series
     if _series is None:
@@ -316,13 +327,11 @@
     return _series
 
 
-def _setup_link_roles(app):
+def _setup_link_roles(app: application.Sphinx) -> None:
     series = _get_series_name()
     for project_name in app.config.openstackdocs_projects:
-        url = 'https://docs.openstack.org/{}/{}/%s'.format(
-            project_name, series
-        )
-        role_name = '{}-doc'.format(project_name)
+        url = f'https://docs.openstack.org/{project_name}/{series}/%s'
+        role_name = f'{project_name}-doc'
         logger.debug(
             '[openstackdocstheme] adding role %s to link to %s',
             role_name,
@@ -334,7 +343,7 @@
         app.add_role(role_name, role)
 
 
-def _find_setup_cfg(srcdir):
+def _find_setup_cfg(srcdir: str | os.PathLike[str]) -> str | None:
     """Find the 'setup.cfg' file, if it exists.
 
     This assumes we're using 'doc/source' for documentation, but also allows
@@ -353,7 +362,7 @@
     return None
 
 
-def _get_project_name(srcdir):
+def _get_project_name(srcdir: str | os.PathLike[str]) -> str | None:
     """Return string name of project name, or None.
 
     This assumes every project is using 'pbr' and, therefore, the metadata can
@@ -391,7 +400,7 @@
     return _project
 
 
-def _config_inited(app, config):
+def _config_inited(app: application.Sphinx, config: Config) -> None:
     if config.openstack_projects is not None:
         logger.info(
             "[openstackdocstheme] "
@@ -439,8 +448,9 @@
         doc_parts = os.path.abspath(app.srcdir).split(os.sep)[-2:]
         if doc_parts[0] in ('api-guide', 'api-ref', 'releasenotes'):
             logger.debug(
-                f'[openstackdocstheme] auto-versioning disabled (doc name '
-                f'contains {doc_parts[0]}'
+                '[openstackdocstheme] auto-versioning disabled (doc name '
+                'contains %s)',
+                doc_parts[0],
             )
             auto_version = False
         else:
@@ -466,7 +476,7 @@
         config.release = project_version
 
 
-def _builder_inited(app):
+def _builder_inited(app: application.Sphinx) -> None:
     theme_dir = paths.get_html_theme_path()
     logger.info('[openstackdocstheme] using theme from %s', theme_dir)
 
@@ -507,7 +517,7 @@
     app.config.latex_elements = latex_elements
 
 
-def setup(app):
+def setup(app: application.Sphinx) -> dict[str, Any]:
     logger.info(
         '[openstackdocstheme] version: %s',
         version.version_info.version_string(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/page_context.py 
new/openstackdocstheme-3.6.0/openstackdocstheme/page_context.py
--- old/openstackdocstheme-3.5.0/openstackdocstheme/page_context.py     
2025-04-24 13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme/page_context.py     
2026-03-25 11:06:16.000000000 +0100
@@ -15,8 +15,10 @@
 import os.path
 import subprocess
 import time
+from typing import Any
 
-import sphinx
+from docutils import nodes
+from sphinx import application
 from sphinx.util import logging
 
 from . import version
@@ -24,10 +26,12 @@
 LOG = logging.getLogger(__name__)
 
 _timeint = int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
-_default_last_updated = datetime.datetime.utcfromtimestamp(_timeint)
+_default_last_updated = datetime.datetime.fromtimestamp(
+    _timeint, tz=datetime.timezone.utc
+).replace(tzinfo=None)
 
 
-def _get_last_updated_file(src_file):
+def _get_last_updated_file(src_file: str) -> datetime.datetime | None:
     if not os.path.exists(src_file):
         return None
     try:
@@ -72,22 +76,17 @@
     return None
 
 
-def _get_last_updated(app, pagename):
+def _get_last_updated(
+    app: application.Sphinx, pagename: str
+) -> datetime.datetime:
     last_updated = None
     full_src_file = app.builder.env.doc2path(pagename)
 
-    candidates = []
+    candidates: list[str] = []
 
     # Strip the prefix from the filename so the git command recognizes
     # the file as part of the current repository.
-    # NOTE(sean-k-mooney): on python 3.9 we clamp sphinx to <8
-    # app.builder.env.srcdir is a string on py39
-    if sphinx.version_info >= (8, 0):
-        src_file = str(full_src_file.relative_to(app.builder.env.srcdir))
-    else:  # Sphinx < 8.0
-        src_file = full_src_file[len(str(app.builder.env.srcdir)) :].lstrip(
-            '/'
-        )
+    src_file = str(full_src_file.relative_to(app.builder.env.srcdir))
     candidates.append(src_file)
 
     if not os.path.exists(src_file):
@@ -116,13 +115,19 @@
     return _default_last_updated
 
 
-def html_page_context(app, pagename, templatename, context, doctree):
+def html_page_context(
+    app: application.Sphinx,
+    pagename: str,
+    templatename: str,
+    context: dict[str, Any],
+    doctree: nodes.document | None,
+) -> None:
     # Use the last modified date from git instead of applying a single
     # value to the entire site.
     context['last_updated'] = _get_last_updated(app, pagename)
 
 
-def setup(app):
+def setup(app: application.Sphinx) -> dict[str, Any]:
     LOG.info('[openstackdocstheme] connecting html-page-context event handler')
     app.connect('html-page-context', html_page_context)
     return {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/openstackdocstheme/paths.py 
new/openstackdocstheme-3.6.0/openstackdocstheme/paths.py
--- old/openstackdocstheme-3.5.0/openstackdocstheme/paths.py    2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme/paths.py    2026-03-25 
11:06:16.000000000 +0100
@@ -15,28 +15,28 @@
 import os.path
 
 
-def get_pkg_path():
+def get_pkg_path() -> str:
     return os.path.abspath(os.path.dirname(__file__))
 
 
-def get_html_theme_path():
+def get_html_theme_path() -> str:
     """Return the directory containing HTML theme for local builds."""
     return os.path.join(get_pkg_path(), 'theme')
 
 
-def get_pdf_theme_path(theme='openstackdocs'):
+def get_pdf_theme_path(theme: str = 'openstackdocs') -> str:
     """Return the directory containing PDF theme for local builds."""
     args = ['theme', theme + '_pdf', 'pdftheme']
     return os.path.join(get_pkg_path(), *args)
 
 
-def get_theme_logo_path(theme='openstackdocs'):
+def get_theme_logo_path(theme: str = 'openstackdocs') -> str:
     """Return the directory containing theme logo for local builds."""
     args = ['theme', theme + '_pdf', 'logo-full.png']
     return os.path.join(get_pkg_path(), *args)
 
 
 # This function is for compatibility with previous releases.
-def get_openstack_logo_path():
+def get_openstack_logo_path() -> str:
     """Return the directory containing OpenStack logo for local builds."""
     return get_theme_logo_path('openstackdocs')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/css.html 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/css.html
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/css.html    
    2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/css.html    
    2026-03-25 11:06:16.000000000 +0100
@@ -12,10 +12,3 @@
 
 <!-- Pygments CSS -->
 <link href="{{pathto('_static/pygments.css', 1)}}" rel="stylesheet">
-
-<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries 
-->
-<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
-<!--[if lt IE 9]>
-    <script 
src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js";></script>
-    <script 
src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js";></script>
-<![endif]-->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/header.html 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/header.html
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/header.html 
    2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/header.html 
    2026-03-25 11:06:16.000000000 +0100
@@ -17,7 +17,7 @@
         <span class="navbar-toggler-icon"></span>
         <span class="sr-only">Toggle navigation</span>
       </button>
-      <div class="search-icon show"><i class="fa fa-search"></i> Search</div>
+      <div class="search-icon show"><i class="fa fa-search"></i> Global 
Search</div>
       <div class="collapse navbar-collapse" id="navbar-main-1">
 {% include 'os_search.html' %}
       <ul class="nav navbar-nav navbar-main ms-auto mb-2 mb-lg-0 
justify-content-end show" role="navigation">
@@ -64,12 +64,12 @@
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/community/">Welcome! Start Here</a></li>
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/community/tech-committee">OpenStack Technical 
Committee</a></li>
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/community/speakers/">Speakers Bureau</a></li>
-            <li><a class="dropdown-item" 
href="http://wiki.openstack.org";>OpenStack Wiki</a></li>
+            <li><a class="dropdown-item" 
href="https://wiki.openstack.org";>OpenStack Wiki</a></li>
             <li><a class="dropdown-item" href="{{osf_base_url}}/coa/">Get 
Certified (COA)</a></li>
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/community/jobs/">Jobs</a></li>
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/marketing/">Marketing Resources</a></li>
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/news/">Community News</a></li>
-            <li><a class="dropdown-item" 
href="http://superuser.openstack.org";>Superuser Magazine</a></li>
+            <li><a class="dropdown-item" 
href="https://superuser.openstack.org";>Superuser Magazine</a></li>
             <li><hr class="dropdown-divider"></li>
             <li><a class="dropdown-item" 
href="{{osf_base_url}}/community/supporting-organizations/">OpenInfra 
Foundation Supporting Organizations</a></li>
             <li><a class="dropdown-item" 
href="https://openinfra.dev";>OpenInfra Foundation</a></li>
@@ -91,7 +91,7 @@
           <a class="nav-link" href="{{osf_base_url}}/blog/">Blog</a>
         </li>
         <li class="nav-item"><!-- Docs -->
-          <a class="nav-link" href="http://docs.openstack.org/";>Docs</a>
+          <a class="nav-link" href="https://docs.openstack.org/";>Docs</a>
         </li>
         <li class="nav-item dropdown join-nav-section"> <!-- Join -->
           <a href="https://openinfra.dev/join/"; class="nav-link 
dropdown-toggle" role="button">Join</a>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/layout.html 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/layout.html
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/layout.html 
    2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/layout.html 
    2026-03-25 11:06:16.000000000 +0100
@@ -4,17 +4,14 @@
 <meta name="viewport" content="width=device-width, initial-scale=1">
 {% include 'css.html' %}
 {% if theme_analytics_tracking_code %}
-<!-- Google Analytics -->
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id={{ 
theme_analytics_tracking_code }}">
+</script>
 <script>
-(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-ga('create', '{{ theme_analytics_tracking_code }}', 'auto');
-ga('send', 'pageview');
+window.dataLayer = window.dataLayer || [];
+function gtag(){dataLayer.push(arguments);} gtag('js', new Date());
+gtag('config', '{{ theme_analytics_tracking_code }}');
 </script>
-<!-- End Google Analytics -->
 {% endif %}
 {% endblock %}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/sidebartoc.html
 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/sidebartoc.html
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/sidebartoc.html
 2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/sidebartoc.html
 2026-03-25 11:06:16.000000000 +0100
@@ -12,6 +12,12 @@
   {%- if theme_display_global_toc_section %}
     <div class="docs-sidebar-section" id="table-of-contents">
       <a href="{{ pathto(master_doc) }}" 
class="docs-sidebar-section-title"><h4>{{project}} {{version}}</h4></a>
+      {%- if theme_sidebar_search|tobool %}
+      <form action="{{ pathto('search') }}" method="get" class="input-group 
input-group-sm ps-3 pe-2 pb-3">
+        <input class="form-control" type="text" name="q" value="" 
placeholder="{% trans %}Search in {{project}}{% endtrans %}" aria-label="{% 
trans %}Search{% endtrans %}">
+        <button class="btn btn-outline-secondary" type="submit"><i class="fa 
fa-search"></i></button>
+      </form>
+      {%- endif %}
       {%- if theme_sidebar_mode == 'toc' %}
       {{ toc }}
       {%- elif theme_sidebar_mode == 'toctree' %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/static/js/navigation.js
 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/static/js/navigation.js
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/static/js/navigation.js
 2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/static/js/navigation.js
 2026-03-25 11:06:16.000000000 +0100
@@ -37,20 +37,3 @@
         $('ul.navbar-main li ul.dropdown-menu').removeClass('dropdown-hover');
     }
 });
-
-// Remove Search text in smaller browser windows
-jQuery(document).ready(function(){
-    if (jQuery(window).width() < 1050) {
-        $('#search-label').text('');
-    } else {
-        $('#search-label').text('Search');
-    }
-});
-jQuery(window).resize(function () {
-    if (jQuery(window).width() < 1050) {
-        $('#search-label').text('');
-    } else {
-        $('#search-label').text('Search');
-    }
-});
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/theme.conf 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/theme.conf
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/openstackdocs/theme.conf  
    2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/openstackdocs/theme.conf  
    2026-03-25 11:06:16.000000000 +0100
@@ -4,7 +4,7 @@
 pygments_style = native
 
 [options]
-analytics_tracking_code = UA-17511903-1
+analytics_tracking_code = G-DD299CMF7V
 sidebar_mode = toctree
 display_badge = True
 display_toc = True
@@ -13,3 +13,4 @@
 sidebar_dropdown = os_docs
 show_other_versions = False
 earliest_published_series = mitaka
+sidebar_search = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/starlingxdocs/header.html 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/starlingxdocs/header.html
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/starlingxdocs/header.html 
    2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/starlingxdocs/header.html 
    2026-03-25 11:06:16.000000000 +0100
@@ -15,7 +15,7 @@
       <span class="navbar-toggler-icon"></span>
       <span class="sr-only">Toggle navigation</span>
     </button>
-    <div class="search-icon show"><i class="fa fa-search"></i> Search</div>
+    <div class="search-icon show"><i class="fa fa-search"></i> Global 
Search</div>
     <div class="collapse navbar-collapse" id="navbar-main-1">
       {% include 'stx_search.html' %}
       <ul class="nav navbar-nav navbar-main ms-auto mb-lg-0 
justify-content-end show" role="navigation">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/starlingxdocs/theme.conf 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/starlingxdocs/theme.conf
--- 
old/openstackdocstheme-3.5.0/openstackdocstheme/theme/starlingxdocs/theme.conf  
    2025-04-24 13:18:07.000000000 +0200
+++ 
new/openstackdocstheme-3.6.0/openstackdocstheme/theme/starlingxdocs/theme.conf  
    2026-03-25 11:06:16.000000000 +0100
@@ -4,7 +4,7 @@
 pygments_style = native
 
 [options]
-#analytics_tracking_code = UA-17511903-1
+#analytics_tracking_code = GA_CODE_HERE
 sidebar_mode = toctree
 display_badge = True
 display_toc = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme/version.py 
new/openstackdocstheme-3.6.0/openstackdocstheme/version.py
--- old/openstackdocstheme-3.5.0/openstackdocstheme/version.py  2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme/version.py  2026-03-25 
11:06:16.000000000 +0100
@@ -12,6 +12,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import pbr.version
+from pbr import version as pbr_version
 
-version_info = pbr.version.VersionInfo('openstackdocstheme')
+version_info: pbr_version.VersionInfo = pbr_version.VersionInfo(
+    'openstackdocstheme'
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/PKG-INFO 
new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/PKG-INFO
--- old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/PKG-INFO   
2025-04-24 13:19:11.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/PKG-INFO   
2026-03-25 11:07:11.000000000 +0100
@@ -1,10 +1,11 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: openstackdocstheme
-Version: 3.5.0
+Version: 3.6.0
 Summary: OpenStack Docs Theme
-Home-page: https://docs.openstack.org/openstackdocstheme/latest/
-Author: OpenStack
-Author-email: [email protected]
+Author-email: OpenStack <[email protected]>
+License: Apache-2.0
+Project-URL: Homepage, https://docs.openstack.org/openstackdocstheme
+Project-URL: Repository, https://opendev.org/openstack/openstackdocstheme
 Classifier: Environment :: OpenStack
 Classifier: Intended Audience :: Information Technology
 Classifier: Intended Audience :: System Administrators
@@ -12,31 +13,27 @@
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: 3.13
 Classifier: Topic :: Documentation
-Requires-Python: >=3.8
+Classifier: Typing :: Typed
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: pbr!=2.1.0,>=2.0.0
 Requires-Dist: dulwich>=0.15.0
-Requires-Dist: sphinx>=6.0.0
-
-========================
-Team and repository tags
-========================
-
-.. image:: https://governance.openstack.org/tc/badges/openstackdocstheme.svg
-    :target: https://governance.openstack.org/tc/reference/tags/index.html
-
-.. Change things from this point on
+Requires-Dist: sphinx>=8.0.0
+Dynamic: license-file
+Dynamic: requires-dist
 
+==========================================
 Open Infrastructure Projects Sphinx Themes
 ==========================================
 
+.. image:: https://governance.openstack.org/tc/badges/openstackdocstheme.svg
+
 Theme and extension support for Sphinx documentation that is published by
 Open Infrastructure Foundation projects.
 
@@ -51,7 +48,7 @@
 .. _`projects governed by the Technical Committee`: 
https://governance.openstack.org/tc/reference/projects/index.html
 
 StarlingX docs.starlingx.io Sphinx Theme
------------------------------------------
+----------------------------------------
 
 Theme support for Sphinx documentation that is published to
 docs.starlingx.io.
@@ -68,4 +65,3 @@
 * Release notes: https://docs.openstack.org/releasenotes/openstackdocstheme/
 * Source: https://opendev.org/openstack/openstackdocstheme
 * Bugs: https://launchpad.net/openstack-doc-tools
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/SOURCES.txt 
new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/SOURCES.txt
--- old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/SOURCES.txt        
2025-04-24 13:19:11.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/SOURCES.txt        
2026-03-25 11:07:11.000000000 +0100
@@ -43,6 +43,7 @@
 openstackdocstheme/ext.py
 openstackdocstheme/page_context.py
 openstackdocstheme/paths.py
+openstackdocstheme/py.typed
 openstackdocstheme/version.py
 openstackdocstheme.egg-info/PKG-INFO
 openstackdocstheme.egg-info/SOURCES.txt
@@ -146,6 +147,7 @@
 releasenotes/notes/add-openstackdocs_auto_name-option-efbd1cf9a171f079.yaml
 releasenotes/notes/add-openstackdocs_auto_version-option-fd03f20373eede39.yaml
 releasenotes/notes/add-reno-8da9bd3ccb7bbeab.yaml
+releasenotes/notes/add-sidebar-search-0e62a9438dca8309.yaml
 releasenotes/notes/add-starlingxdocs-10a33318f8630486.yaml
 releasenotes/notes/add-translations-9238b0f56b677a6b.yaml
 releasenotes/notes/allow-disabling-toc-in-body-d98d3a6e633fa28e.yaml
@@ -171,6 +173,7 @@
 releasenotes/notes/opendev-5c528b2b4c737d59.yaml
 releasenotes/notes/pdf-version-56c223128dff8357.yaml
 releasenotes/notes/pdf_link-c6b0ed36dd12b0ef.yaml
+releasenotes/notes/remove-py38-py39-3d46233c4a0a859a.yaml
 releasenotes/notes/renamed-opts-bbf5d1390ed6ba71.yaml
 releasenotes/notes/side-bar-config-d7e66388e252cadf.yaml
 releasenotes/notes/sidebar-top-page-link-252532ddf42a5acf.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/pbr.json 
new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/pbr.json
--- old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/pbr.json   
2025-04-24 13:19:11.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/pbr.json   
2026-03-25 11:07:11.000000000 +0100
@@ -1 +1 @@
-{"git_version": "1d5cb6f", "is_release": true}
\ No newline at end of file
+{"git_version": "57ac1e6", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/requires.txt 
new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/requires.txt
--- old/openstackdocstheme-3.5.0/openstackdocstheme.egg-info/requires.txt       
2025-04-24 13:19:11.000000000 +0200
+++ new/openstackdocstheme-3.6.0/openstackdocstheme.egg-info/requires.txt       
2026-03-25 11:07:11.000000000 +0100
@@ -1,3 +1,3 @@
 pbr!=2.1.0,>=2.0.0
 dulwich>=0.15.0
-sphinx>=6.0.0
+sphinx>=8.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/pyproject.toml 
new/openstackdocstheme-3.6.0/pyproject.toml
--- old/openstackdocstheme-3.5.0/pyproject.toml 2025-04-24 13:18:07.000000000 
+0200
+++ new/openstackdocstheme-3.6.0/pyproject.toml 2026-03-25 11:06:16.000000000 
+0100
@@ -1,6 +1,62 @@
+[build-system]
+requires = ["pbr>=6.1.1"]
+build-backend = "pbr.build"
+
+[project]
+name = "openstackdocstheme"
+description = "OpenStack Docs Theme"
+authors = [
+    {name = "OpenStack", email = "[email protected]"},
+]
+readme = {file = "README.rst", content-type = "text/x-rst"}
+license = {text = "Apache-2.0"}
+dynamic = ["version", "dependencies"]
+requires-python = ">=3.10"
+classifiers = [
+    "Environment :: OpenStack",
+    "Intended Audience :: Information Technology",
+    "Intended Audience :: System Administrators",
+    "License :: OSI Approved :: Apache Software License",
+    "Operating System :: POSIX :: Linux",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Topic :: Documentation",
+    "Typing :: Typed",
+]
+
+[project.urls]
+Homepage = "https://docs.openstack.org/openstackdocstheme";
+Repository = "https://opendev.org/openstack/openstackdocstheme";
+
+[tool.setuptools]
+packages = [
+    "openstackdocstheme"
+]
+script-files = [
+    "bin/docstheme-build-translated.sh",
+    "bin/docstheme-lang-display-name.py",
+    "bin/docstheme-build-pdf",
+]
+
+[tool.mypy]
+python_version = "3.10"
+show_column_numbers = true
+show_error_context = true
+strict = true
+disable_error_code = ["import-untyped"]
+exclude = "(?x)(doc | releasenotes)"
+
 [tool.ruff]
 line-length = 79
 
 [tool.ruff.format]
 quote-style = "preserve"
 docstring-code-format = true
+
+[tool.ruff.lint]
+select = ["E4", "E5", "E7", "E9", "F", "G", "LOG", "UP"]
+external = ["H"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/releasenotes/notes/add-sidebar-search-0e62a9438dca8309.yaml
 
new/openstackdocstheme-3.6.0/releasenotes/notes/add-sidebar-search-0e62a9438dca8309.yaml
--- 
old/openstackdocstheme-3.5.0/releasenotes/notes/add-sidebar-search-0e62a9438dca8309.yaml
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/openstackdocstheme-3.6.0/releasenotes/notes/add-sidebar-search-0e62a9438dca8309.yaml
    2026-03-25 11:06:16.000000000 +0100
@@ -0,0 +1,4 @@
+---
+features:
+  - Add an optional project-scoped search bar to the sidebar. Updated 
OpenStack/StarlingX
+    wide search placeholder to "Global Search" for clarity.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openstackdocstheme-3.5.0/releasenotes/notes/remove-py38-py39-3d46233c4a0a859a.yaml
 
new/openstackdocstheme-3.6.0/releasenotes/notes/remove-py38-py39-3d46233c4a0a859a.yaml
--- 
old/openstackdocstheme-3.5.0/releasenotes/notes/remove-py38-py39-3d46233c4a0a859a.yaml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/openstackdocstheme-3.6.0/releasenotes/notes/remove-py38-py39-3d46233c4a0a859a.yaml
      2026-03-25 11:06:16.000000000 +0100
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Support for Python 3.8 and 3.9 has been removed. Now the minimum Python
+    version supported is 3.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/releasenotes/source/conf.py 
new/openstackdocstheme-3.6.0/releasenotes/source/conf.py
--- old/openstackdocstheme-3.5.0/releasenotes/source/conf.py    2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/releasenotes/source/conf.py    2026-03-25 
11:06:16.000000000 +0100
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/requirements.txt 
new/openstackdocstheme-3.6.0/requirements.txt
--- old/openstackdocstheme-3.5.0/requirements.txt       2025-04-24 
13:18:07.000000000 +0200
+++ new/openstackdocstheme-3.6.0/requirements.txt       2026-03-25 
11:06:16.000000000 +0100
@@ -1,3 +1,3 @@
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
 dulwich>=0.15.0 # Apache-2.0
-sphinx>=6.0.0 # BSD
+sphinx>=8.0.0 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/setup.cfg 
new/openstackdocstheme-3.6.0/setup.cfg
--- old/openstackdocstheme-3.5.0/setup.cfg      2025-04-24 13:19:11.314010000 
+0200
+++ new/openstackdocstheme-3.6.0/setup.cfg      2026-03-25 11:07:11.599222000 
+0100
@@ -1,35 +1,5 @@
 [metadata]
 name = openstackdocstheme
-summary = OpenStack Docs Theme
-description_file = 
-       README.rst
-author = OpenStack
-author_email = [email protected]
-home_page = https://docs.openstack.org/openstackdocstheme/latest/
-python_requires = >=3.8
-classifier = 
-       Environment :: OpenStack
-       Intended Audience :: Information Technology
-       Intended Audience :: System Administrators
-       License :: OSI Approved :: Apache Software License
-       Operating System :: POSIX :: Linux
-       Programming Language :: Python
-       Programming Language :: Python :: 3
-       Programming Language :: Python :: 3.8
-       Programming Language :: Python :: 3.9
-       Programming Language :: Python :: 3.10
-       Programming Language :: Python :: 3.11
-       Programming Language :: Python :: 3.12
-       Programming Language :: Python :: 3 :: Only
-       Topic :: Documentation
-
-[files]
-packages = 
-       openstackdocstheme
-scripts = 
-       bin/docstheme-build-translated.sh
-       bin/docstheme-lang-display-name.py
-       bin/docstheme-build-pdf
 
 [egg_info]
 tag_build = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openstackdocstheme-3.5.0/tox.ini 
new/openstackdocstheme-3.6.0/tox.ini
--- old/openstackdocstheme-3.5.0/tox.ini        2025-04-24 13:18:07.000000000 
+0200
+++ new/openstackdocstheme-3.6.0/tox.ini        2026-03-25 11:06:16.000000000 
+0100
@@ -16,11 +16,22 @@
 [testenv:pep8]
 description =
   Run style checks.
-skip_install = true
 deps =
   pre-commit
+  {[testenv:mypy]deps}
 commands =
   pre-commit run -a
+  {[testenv:mypy]commands}
+
+[testenv:mypy]
+description =
+  Run type checks.
+deps =
+  {[testenv]deps}
+  mypy
+  types-docutils
+commands =
+  mypy --cache-dir="{envdir}/mypy_cache" -p openstackdocstheme {posargs}
 
 [testenv:venv]
 commands = {posargs}
@@ -82,7 +93,7 @@
 commands = bindep test
 
 [flake8]
-exclude=.venv,.git,.tox,dist,doc,api-ref,*lib/python*,*egg,tools
+exclude = .venv,.git,.tox,dist,doc,api-ref,*lib/python*,*egg,tools
 show-source = True
 # We only enable the hacking (H) checks
 select = H

Reply via email to