diff --git a/.github/workflows/documentation-links.yml b/.github/workflows/documentation-links.yml index a4de7dc..2c68275 100644 --- a/.github/workflows/documentation-links.yml +++ b/.github/workflows/documentation-links.yml @@ -18,7 +18,7 @@ jobs: documentation-links: runs-on: ubuntu-latest steps: - - uses: readthedocs/actions/preview@v1 + - uses: readthedocs/actions/preview@b8bba1484329bda1a3abe986df7ebc80a8950333 # v1.5 with: project-slug: "python-docs-theme-previews" single-version: "true" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a8f03c1..eb37549 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - - uses: j178/prek-action@v1 + - uses: j178/prek-action@cbc2f23eb5539cf20d82d1aabd0d0ecbcc56f4e3 # v2.0.2 diff --git a/.github/workflows/pypi-package.yml b/.github/workflows/pypi-package.yml index d3f6617..306af50 100644 --- a/.github/workflows/pypi-package.yml +++ b/.github/workflows/pypi-package.yml @@ -20,10 +20,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - - uses: actions/setup-python@v6 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - name: Compile translations run: | @@ -31,7 +31,7 @@ jobs: pip install -r requirements.txt python babel_runner.py compile - - uses: hynek/build-and-inspect-python-package@v2 + - uses: hynek/build-and-inspect-python-package@fe0a0fb1925ca263d076ca4f2c13e93a6e92a33e # v2.17.0 # Upload to real PyPI on GitHub Releases. release-pypi: @@ -49,10 +49,10 @@ jobs: steps: - name: Download packages built by build-and-inspect-python-package - uses: actions/download-artifact@v7 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: Packages path: dist - name: Upload package to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 + uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b0e3dbf..fdd840d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,10 +19,10 @@ jobs: - python-version: "3.15" branch: "main" steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - - uses: actions/setup-python@v6 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} allow-prereleases: true @@ -52,7 +52,7 @@ jobs: run: | cat ./logs/docsbuild.log - name: Upload - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: doc-html-${{ matrix.python-version }} path: www/ @@ -66,10 +66,10 @@ jobs: # Test minimum supported and latest stable from 3.x series python-version: ["3.12", "3"] steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - - uses: actions/setup-python@v6 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} allow-prereleases: true diff --git a/.github/zizmor.yml b/.github/zizmor.yml index 9b42b47..7c776d5 100644 --- a/.github/zizmor.yml +++ b/.github/zizmor.yml @@ -1,10 +1,6 @@ -# Configuration for the zizmor static analysis tool, run via pre-commit in CI -# https://woodruffw.github.io/zizmor/configuration/ +# Configuration for the zizmor static analysis tool, run via prek in CI +# https://docs.zizmor.sh/configuration/ rules: dangerous-triggers: ignore: - documentation-links.yml - unpinned-uses: - config: - policies: - "*": ref-pin diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6ff7968..eb895c4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,12 +1,12 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.10 + rev: v0.15.9 hooks: - id: ruff-check args: [--exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror - rev: 25.12.0 + rev: 26.3.1 hooks: - id: black @@ -22,28 +22,28 @@ repos: - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.36.0 + rev: 0.37.1 hooks: - id: check-dependabot - id: check-github-workflows - repo: https://github.com/rhysd/actionlint - rev: v1.7.10 + rev: v1.7.12 hooks: - id: actionlint - - repo: https://github.com/woodruffw/zizmor-pre-commit - rev: v1.19.0 + - repo: https://github.com/zizmorcore/zizmor-pre-commit + rev: v1.23.1 hooks: - id: zizmor - repo: https://github.com/tox-dev/pyproject-fmt - rev: v2.11.1 + rev: v2.21.0 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject - rev: v0.24.1 + rev: v0.25 hooks: - id: validate-pyproject diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c28c8f..35e50ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [2026.4](https://github.com/python/python-docs-theme/releases/tag/2026.4) + +* Add styling for the `soft-deprecated` class by @StanFromIreland + in https://github.com/python/python-docs-theme/pull/305 +* Add Tamil translation in https://github.com/python/python-docs-theme/pull/304 +* Fix the vertical alignment of `:Editor:` by @pradyunsg in + https://github.com/python/python-docs-theme/pull/303 + +## [2026.3](https://github.com/python/python-docs-theme/releases/tag/2026.3) + +* Add colors for new thread-safety levels by @lysnikolaou in https://github.com/python/python-docs-theme/pull/299 + ## [2026.2](https://github.com/python/python-docs-theme/releases/tag/2026.2) * Style codeblock `:caption:` by @StanFromIreland in https://github.com/python/python-docs-theme/pull/288 diff --git a/pyproject.toml b/pyproject.toml index b8598f5..ef39594 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,26 +27,21 @@ classifiers = [ "Topic :: Software Development :: Documentation", ] dynamic = [ "version" ] - dependencies = [ "sphinx>=7.3", ] - +urls."Issue tracker" = "https://github.com/python/python-docs-theme/issues" urls.Code = "https://github.com/python/python-docs-theme" urls.Download = "https://pypi.org/project/python-docs-theme/" urls.Homepage = "https://github.com/python/python-docs-theme/" -urls."Issue tracker" = "https://github.com/python/python-docs-theme/issues" entry-points."sphinx.html_themes".python_docs_theme = "python_docs_theme" -[tool.flit.module] -name = "python_docs_theme" - -[tool.flit.sdist] -include = [ "python_docs_theme/" ] +[tool.flit] +module.name = "python_docs_theme" +sdist.include = [ "python_docs_theme/" ] [tool.ruff] fix = true - lint.select = [ "C4", # flake8-comprehensions "E", # pycodestyle errors diff --git a/python_docs_theme/__init__.py b/python_docs_theme/__init__.py index 026329b..6708b6d 100644 --- a/python_docs_theme/__init__.py +++ b/python_docs_theme/__init__.py @@ -11,7 +11,7 @@ from sphinx.application import Sphinx from sphinx.util.typing import ExtensionMetadata -__version__ = "2026.2" +__version__ = "2026.4" THEME_PATH = Path(__file__).resolve().parent LOCALE_DIR = THEME_PATH / "locale" diff --git a/python_docs_theme/locale/ta/LC_MESSAGES/python-docs-theme.po b/python_docs_theme/locale/ta/LC_MESSAGES/python-docs-theme.po new file mode 100644 index 0000000..f309d5c --- /dev/null +++ b/python_docs_theme/locale/ta/LC_MESSAGES/python-docs-theme.po @@ -0,0 +1,129 @@ +# Translations template for python-docs-theme. +# Copyright (C) 2026 Python Software Foundation +# This file is distributed under the same license as the python-docs-theme +# project. +# FIRST AUTHOR , 2026. +# +# Translators: +# Murugan Santhosh, 2026 +# +msgid "" +msgstr "" +"Project-Id-Version: python-docs-theme 2026.3\n" +"Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" +"POT-Creation-Date: 2026-04-06 02:43+0000\n" +"PO-Revision-Date: 2025-09-06 07:41+0000\n" +"Last-Translator: Murugan Santhosh, 2026\n" +"Language-Team: Tamil (https://app.transifex.com/python-doc/teams/5390/ta/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: python_docs_theme/footerdonate.html:1 +msgid "The Python Software Foundation is a non-profit corporation." +msgstr "Python Software Foundation ஒரு இலாப நோக்கம் இல்லாத நிறுவனமாகும்." + +#: python_docs_theme/footerdonate.html:2 +msgid "Please donate." +msgstr "தயவுசெய்து நன்கொடை அளியுங்கள்." + +#: python_docs_theme/layout.html:6 +msgid "Navigation" +msgstr "வழிநடத்தல்" + +#: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 +msgid "Quick search" +msgstr "விரைவுத் தேடல்" + +#: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 +msgid "Go" +msgstr "செல்" + +#: python_docs_theme/layout.html:60 +msgid "Theme" +msgstr "தோற்றம்" + +#: python_docs_theme/layout.html:62 +msgid "Auto" +msgstr "தானியங்கி" + +#: python_docs_theme/layout.html:63 +msgid "Light" +msgstr "வெளிச்சமாக" + +#: python_docs_theme/layout.html:64 +msgid "Dark" +msgstr "இருண்டதாக" + +#: python_docs_theme/layout.html:96 +msgid "Menu" +msgstr "Menu" + +#: python_docs_theme/layout.html:142 +msgid "Copyright" +msgstr "காப்புரிமை" + +#: python_docs_theme/layout.html:147 +msgid "" +"This page is licensed under the Python Software Foundation License Version " +"2." +msgstr "" +"இந்தப் பக்கம் Python Software Foundation Licence, பதிப்பு 2-இன் கீழ் உரிமம் " +"பெற்றது." + +#: python_docs_theme/layout.html:149 +msgid "" +"Examples, recipes, and other code in the documentation are additionally " +"licensed under the Zero Clause BSD License." +msgstr "" +"ஆவணங்களில் உள்ள எடுத்துக்காட்டுகள், செய்முறைகள் மற்றும் பிற குறியீடுகள் " +"கூடுதலாக Zero Clause BSD Licence-இன் கீழ் உரிமம் பெறப்பட்டுள்ளன." + +#: python_docs_theme/layout.html:152 +#, python-format +msgid "" +"See History and License for more " +"information." +msgstr "" +"மேலும் தகவல்களுக்கு வரலாறு மற்றும் " +"உரிமத்தைப் பார்க்கவும்." + +#: python_docs_theme/layout.html:155 +#, python-format +msgid "Hosted on %(hosted_on)s." +msgstr "%(hosted_on)s-இல் வழங்கப்படுகிறது." + +#: python_docs_theme/layout.html:163 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "கடைசியாகப் புதுப்பிக்கப்பட்டது %(last_updated)s அன்று." + +#: python_docs_theme/layout.html:166 +#, python-format +msgid "Found a bug?" +msgstr "பிழையை கண்டீர்களா?" + +#: python_docs_theme/layout.html:170 +#, python-format +msgid "" +"Created using Sphinx " +"%(sphinx_version)s." +msgstr "" +"Sphinx பயன்படுத்தி " +"உருவாக்கப்பட்டது %(sphinx_version)s." + +#: python_docs_theme/static/copybutton.js:30 +#: python_docs_theme/static/copybutton.js:55 +msgid "Copy" +msgstr "Copy" + +#: python_docs_theme/static/copybutton.js:31 +msgid "Copy to clipboard" +msgstr "Copy to clipboard" + +#: python_docs_theme/static/copybutton.js:53 +msgid "Copied!" +msgstr "Copied!" diff --git a/python_docs_theme/static/pydoctheme.css b/python_docs_theme/static/pydoctheme.css index a83030a..aa9622d 100644 --- a/python_docs_theme/static/pydoctheme.css +++ b/python_docs_theme/static/pydoctheme.css @@ -223,6 +223,9 @@ div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 { border: 0; padding: 0.3em 0; } +div.body dl.field-list > dt { + line-height: 1.6; +} div.body hr { border: 0; @@ -448,7 +451,9 @@ div.footer a:hover { :root { --threadsafety-incompatible: var(--bad-color); --threadsafety-compatible: var(--middle-color); - --threadsafety-safe: var(--good-color); + --threadsafety-distinct: var(--middle-color); + --threadsafety-shared: var(--good-color); + --threadsafety-atomic: var(--good-color); } .threadsafety.threadsafety-incompatible { @@ -459,8 +464,16 @@ div.footer a:hover { color: var(--threadsafety-compatible); } -.threadsafety.threadsafety-safe { - color: var(--threadsafety-safe); +.threadsafety.threadsafety-distinct { + color: var(--threadsafety-distinct); +} + +.threadsafety.threadsafety-shared { + color: var(--threadsafety-shared); +} + +.threadsafety.threadsafety-atomic { + color: var(--threadsafety-atomic); } @@ -776,10 +789,12 @@ div.genindex-jumpbox a { --versionadded: var(--good-color); --versionchanged: var(--middle-color); --deprecated: var(--bad-color); + --soft-deprecated: rgb(175, 0, 255); --versionadded-border: var(--good-border); --versionchanged-border: var(--middle-border); --deprecated-border: var(--bad-border); + --soft-deprecated-border: rgb(175, 0, 255); } div.versionadded, @@ -804,6 +819,10 @@ div.versionremoved { border-left-color: var(--deprecated-border); } +div.soft-deprecated { + border-left-color: var(--soft-deprecated-border); +} + div.versionadded .versionmodified { color: var(--versionadded); } @@ -818,6 +837,10 @@ div.versionremoved .versionmodified { color: var(--deprecated); } +div.soft-deprecated .versionmodified { + color: var(--soft-deprecated); +} + /* Hide header when printing */ @media print { div.mobile-nav { diff --git a/python_docs_theme/static/pydoctheme_dark.css b/python_docs_theme/static/pydoctheme_dark.css index 909a296..df91a2a 100644 --- a/python_docs_theme/static/pydoctheme_dark.css +++ b/python_docs_theme/static/pydoctheme_dark.css @@ -181,6 +181,8 @@ img.invert-in-dark-mode { --versionadded: var(--good-color); --versionchanged: var(--middle-color); --deprecated: var(--bad-color); + --soft-deprecated: rgb(206, 100, 255); + --soft-deprecated-border: rgb(206, 100, 255); } .copybutton {