python-docs-theme 2026.7__tar.gz → 2026.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.github/workflows/lint.yml +2 -2
  2. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.github/workflows/pypi-package.yml +4 -4
  3. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.github/workflows/tests.yml +4 -4
  4. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/CHANGELOG.md +9 -0
  5. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/PKG-INFO +4 -2
  6. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/README.md +2 -0
  7. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/__init__.py +1 -1
  8. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/layout.html +3 -3
  9. python_docs_theme-2026.9/python_docs_theme/locale/fa/LC_MESSAGES/python-docs-theme.mo +0 -0
  10. python_docs_theme-2026.9/python_docs_theme/locale/fa/LC_MESSAGES/python-docs-theme.po +126 -0
  11. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/pydoctheme.css +129 -37
  12. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/pydoctheme_dark.css +1 -1
  13. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/theme.toml +1 -0
  14. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.babel.cfg +0 -0
  15. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.github/dependabot.yml +0 -0
  16. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.github/release.yml +0 -0
  17. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.gitignore +0 -0
  18. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.pre-commit-config.yaml +0 -0
  19. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/.readthedocs.yml +0 -0
  20. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/CONTRIBUTING.md +0 -0
  21. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/LICENSE +0 -0
  22. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/Makefile +0 -0
  23. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/babel_runner.py +0 -0
  24. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/pyproject.toml +0 -0
  25. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/footerdonate.html +0 -0
  26. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ar/LC_MESSAGES/python-docs-theme.mo +0 -0
  27. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ar/LC_MESSAGES/python-docs-theme.po +0 -0
  28. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/de/LC_MESSAGES/python-docs-theme.mo +0 -0
  29. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/de/LC_MESSAGES/python-docs-theme.po +0 -0
  30. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/el/LC_MESSAGES/python-docs-theme.mo +0 -0
  31. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/el/LC_MESSAGES/python-docs-theme.po +0 -0
  32. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/es/LC_MESSAGES/python-docs-theme.mo +0 -0
  33. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/es/LC_MESSAGES/python-docs-theme.po +0 -0
  34. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/fr/LC_MESSAGES/python-docs-theme.mo +0 -0
  35. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/fr/LC_MESSAGES/python-docs-theme.po +0 -0
  36. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/id/LC_MESSAGES/python-docs-theme.mo +0 -0
  37. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/id/LC_MESSAGES/python-docs-theme.po +0 -0
  38. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ja/LC_MESSAGES/python-docs-theme.mo +0 -0
  39. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ja/LC_MESSAGES/python-docs-theme.po +0 -0
  40. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ko/LC_MESSAGES/python-docs-theme.mo +0 -0
  41. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ko/LC_MESSAGES/python-docs-theme.po +0 -0
  42. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/pl/LC_MESSAGES/python-docs-theme.mo +0 -0
  43. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/pl/LC_MESSAGES/python-docs-theme.po +0 -0
  44. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/pt/LC_MESSAGES/python-docs-theme.mo +0 -0
  45. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/pt/LC_MESSAGES/python-docs-theme.po +0 -0
  46. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/pt_BR/LC_MESSAGES/python-docs-theme.mo +0 -0
  47. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/pt_BR/LC_MESSAGES/python-docs-theme.po +0 -0
  48. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ro/LC_MESSAGES/python-docs-theme.mo +0 -0
  49. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ro/LC_MESSAGES/python-docs-theme.po +0 -0
  50. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ru/LC_MESSAGES/python-docs-theme.mo +0 -0
  51. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ru/LC_MESSAGES/python-docs-theme.po +0 -0
  52. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/sv/LC_MESSAGES/python-docs-theme.mo +0 -0
  53. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/sv/LC_MESSAGES/python-docs-theme.po +0 -0
  54. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ta/LC_MESSAGES/python-docs-theme.mo +0 -0
  55. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/ta/LC_MESSAGES/python-docs-theme.po +0 -0
  56. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/tr/LC_MESSAGES/python-docs-theme.mo +0 -0
  57. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/tr/LC_MESSAGES/python-docs-theme.po +0 -0
  58. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/vi/LC_MESSAGES/python-docs-theme.mo +0 -0
  59. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/vi/LC_MESSAGES/python-docs-theme.po +0 -0
  60. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/zh_CN/LC_MESSAGES/python-docs-theme.mo +0 -0
  61. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/zh_CN/LC_MESSAGES/python-docs-theme.po +0 -0
  62. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/zh_TW/LC_MESSAGES/python-docs-theme.mo +0 -0
  63. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/locale/zh_TW/LC_MESSAGES/python-docs-theme.po +0 -0
  64. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/copybutton.js +0 -0
  65. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/menu.js +0 -0
  66. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/py.svg +0 -0
  67. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/search-focus.js +0 -0
  68. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/python_docs_theme/static/themetoggle.js +0 -0
  69. {python_docs_theme-2026.7 → python_docs_theme-2026.9}/requirements.txt +0 -0
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
 
15
15
  steps:
16
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
17
  with:
18
18
  persist-credentials: false
19
- - uses: j178/prek-action@bdca6f102f98e2b4c7029491a53dfd366469e33d # v2.0.4
19
+ - uses: j178/prek-action@4e14d07f9231acabce116ccfca13b13dd9755ece # v3.0.0
@@ -20,12 +20,12 @@ jobs:
20
20
  runs-on: ubuntu-latest
21
21
 
22
22
  steps:
23
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
23
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
24
24
  with:
25
25
  persist-credentials: false
26
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
26
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
27
27
 
28
- - uses: hynek/build-and-inspect-python-package@d44ca7d91762de7a7d5436ddae667c6da6d1c3df # v2.18.0
28
+ - uses: hynek/build-and-inspect-python-package@2abe76da66d0a6a4a227101f9348ee855797cfa5 # v3.0.1
29
29
 
30
30
  # Upload to real PyPI on GitHub Releases.
31
31
  release-pypi:
@@ -49,4 +49,4 @@ jobs:
49
49
  path: dist
50
50
 
51
51
  - name: Upload package to PyPI
52
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
52
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -19,10 +19,10 @@ jobs:
19
19
  - python-version: "3.15"
20
20
  branch: "main"
21
21
  steps:
22
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
23
  with:
24
24
  persist-credentials: false
25
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
25
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
26
26
  with:
27
27
  python-version: ${{ matrix.python-version }}
28
28
  allow-prereleases: true
@@ -66,10 +66,10 @@ jobs:
66
66
  # Test minimum supported and latest stable from 3.x series
67
67
  python-version: ["3.12", "3"]
68
68
  steps:
69
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
69
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
70
70
  with:
71
71
  persist-credentials: false
72
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
72
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
73
73
  with:
74
74
  python-version: ${{ matrix.python-version }}
75
75
  allow-prereleases: true
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [2026.9](https://github.com/python/python-docs-theme/releases/tag/2026.9)
4
+
5
+ * Add support for right-to-left page layout by @sepehr-rs in https://github.com/python/python-docs-theme/pull/324
6
+ * Improve contrast between unvisited and visited links in dark mode
7
+ by @StanFromIreland in https://github.com/python/python-docs-theme/pull/329
8
+ * Keep breadcrumb navigation visible on mobile by @undeMalum in
9
+ https://github.com/python/python-docs-theme/pull/326
10
+ * Add Persian translation by @sepehr-rs in https://github.com/python/python-docs-theme/pull/322
11
+
3
12
  ## [2026.7](https://github.com/python/python-docs-theme/releases/tag/2026.7)
4
13
 
5
14
  * Add Vietnamese translation by @StanFromIreland in https://github.com/python/python-docs-theme/pull/309
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: python-docs-theme
3
- Version: 2026.7
3
+ Version: 2026.9
4
4
  Summary: The Sphinx theme for the CPython docs and related projects
5
5
  Project-URL: Issue tracker, https://github.com/python/python-docs-theme/issues
6
6
  Project-URL: Code, https://github.com/python/python-docs-theme
@@ -49,6 +49,8 @@ To use this theme, add the following to `conf.py`:
49
49
 
50
50
  - `html_sidebars`, defaults taken from https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_sidebars
51
51
 
52
+ - To lay pages out right-to-left for languages such as Persian, Arabic, or Hebrew,
53
+ set `html_theme_options = {"is_rtl": True}`. Defaults to `false`.
52
54
 
53
55
  ## Translation
54
56
 
@@ -22,6 +22,8 @@ To use this theme, add the following to `conf.py`:
22
22
 
23
23
  - `html_sidebars`, defaults taken from https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_sidebars
24
24
 
25
+ - To lay pages out right-to-left for languages such as Persian, Arabic, or Hebrew,
26
+ set `html_theme_options = {"is_rtl": True}`. Defaults to `false`.
25
27
 
26
28
  ## Translation
27
29
 
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
11
11
  from sphinx.application import Sphinx
12
12
  from sphinx.util.typing import ExtensionMetadata
13
13
 
14
- __version__ = "2026.7"
14
+ __version__ = "2026.9"
15
15
 
16
16
  THEME_PATH = Path(__file__).resolve().parent
17
17
  LOCALE_DIR = THEME_PATH / "locale"
@@ -6,7 +6,7 @@
6
6
  <h3>{{ _('Navigation') }}</h3>
7
7
  <ul>
8
8
  {%- for rellink in rellinks %}
9
- <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
9
+ <li class="right" {% if loop.first %}style="margin-inline-end: 10px"{% endif %}>
10
10
  <a href="{{ pathto(rellink[0])|e }}" title="{{ rellink[1]|striptags|e }}"
11
11
  {{ accesskey(rellink[2]) }}>{{ rellink[3] }}
12
12
  </a>
@@ -14,7 +14,7 @@
14
14
  </li>
15
15
  {%- endfor %}
16
16
  {%- block rootrellink %}
17
- <li><img src="{{ pathto('_static/' ~ theme_root_icon, 1) }}" alt="{{ theme_root_icon_alt_text }}" style="vertical-align: middle; margin-top: -1px"></li>
17
+ <li class="root-icon"><img src="{{ pathto('_static/' ~ theme_root_icon, 1) }}" alt="{{ theme_root_icon_alt_text }}" style="vertical-align: middle; margin-top: -1px"></li>
18
18
  <li><a href="{{theme_root_url}}">{{theme_root_name}}</a>{{ reldelim1 }}</li>
19
19
  <li class="switchers">
20
20
  <div class="language_switcher_placeholder"></div>
@@ -89,7 +89,7 @@
89
89
  {%- endblock -%}
90
90
 
91
91
  {%- block body_tag %}
92
- {{ super() }}
92
+ <body{% if theme_is_rtl|tobool %} dir="rtl"{% endif %}>
93
93
  {%- if builder != 'htmlhelp' %}
94
94
  <div class="mobile-nav">
95
95
  <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
@@ -0,0 +1,126 @@
1
+ # Persian translations for python-docs-theme.
2
+ # Copyright (C) 2026 Python Software Foundation
3
+ # This file is distributed under the same license as the python-docs-theme
4
+ # project.
5
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
6
+ #
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: python-docs-theme 2026.7\n"
10
+ "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/"
11
+ "issues\n"
12
+ "POT-Creation-Date: 2026-08-16 15:22+0330\n"
13
+ "PO-Revision-Date: 2026-08-16 15:54+0330\n"
14
+ "Last-Translator: Sepehr Rasouli <sepehrrasouli06@gmail.com>, 2026\n"
15
+ "Language-Team: Persian (https://github.com/revisto/python-docs-fa/)\n"
16
+ "Language: fa\n"
17
+ "MIME-Version: 1.0\n"
18
+ "Content-Type: text/plain; charset=utf-8\n"
19
+ "Content-Transfer-Encoding: 8bit\n"
20
+ "Plural-Forms: nplurals=1; plural=0;\n"
21
+ "Generated-By: Babel 2.18.0\n"
22
+ "X-Generator: Poedit 3.6\n"
23
+
24
+ #: python_docs_theme/footerdonate.html:1
25
+ msgid "The Python Software Foundation is a non-profit corporation."
26
+ msgstr "بنیاد نرم‌افزار پایتون یک شرکت غیرانتفاعی است."
27
+
28
+ #: python_docs_theme/footerdonate.html:2
29
+ msgid "Please donate."
30
+ msgstr "لطفاً کمک مالی کنید."
31
+
32
+ #: python_docs_theme/layout.html:6
33
+ msgid "Navigation"
34
+ msgstr "ناوبری"
35
+
36
+ #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111
37
+ msgid "Quick search"
38
+ msgstr "جست‌و‌جوی سریع"
39
+
40
+ #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112
41
+ msgid "Go"
42
+ msgstr "برو"
43
+
44
+ #: python_docs_theme/layout.html:60
45
+ msgid "Theme"
46
+ msgstr "پوسته"
47
+
48
+ #: python_docs_theme/layout.html:62
49
+ msgid "Auto"
50
+ msgstr "خودکار"
51
+
52
+ #: python_docs_theme/layout.html:63
53
+ msgid "Light"
54
+ msgstr "روشن"
55
+
56
+ #: python_docs_theme/layout.html:64
57
+ msgid "Dark"
58
+ msgstr "تاریک"
59
+
60
+ #: python_docs_theme/layout.html:96
61
+ msgid "Menu"
62
+ msgstr "منو"
63
+
64
+ #: python_docs_theme/layout.html:142
65
+ msgid "Copyright"
66
+ msgstr "حق نشر"
67
+
68
+ #: python_docs_theme/layout.html:147
69
+ msgid ""
70
+ "This page is licensed under the Python Software Foundation License "
71
+ "Version 2."
72
+ msgstr "این صفحه تحت مجوز بنیاد نرم‌افزار پایتون نسخه ۲ منتشر شده است."
73
+
74
+ #: python_docs_theme/layout.html:149
75
+ msgid ""
76
+ "Examples, recipes, and other code in the documentation are additionally "
77
+ "licensed under the Zero Clause BSD License."
78
+ msgstr ""
79
+ "مثال‌ها، دستورالعمل‌ها، و سایر کدهای موجود در مستندات همچنین تحت مجوز "
80
+ "بدون بند BSD منتشر شده‌اند."
81
+
82
+ #: python_docs_theme/layout.html:152
83
+ #, python-format
84
+ msgid ""
85
+ "See <a href=\"%(license_file)s\">History and License</a> for more "
86
+ "information."
87
+ msgstr ""
88
+ "برای اطلاعات بیشتر به <a href=\"%(license_file)s\">تاریخچه و مجوز</a> "
89
+ "مراجعه کنید."
90
+
91
+ #: python_docs_theme/layout.html:155
92
+ #, python-format
93
+ msgid "Hosted on %(hosted_on)s."
94
+ msgstr "میزبانی شده روی %(hosted_on)s."
95
+
96
+ #: python_docs_theme/layout.html:163
97
+ #, python-format
98
+ msgid "Last updated on %(last_updated)s."
99
+ msgstr "آخرین به‌روزرسانی در %(last_updated)s."
100
+
101
+ #: python_docs_theme/layout.html:166
102
+ #, python-format
103
+ msgid "<a href=\"%(theme_issues_url)s\">Found a bug</a>?"
104
+ msgstr "آیا <a href=\"%(theme_issues_url)s\">اشکالی یافتید</a>؟"
105
+
106
+ #: python_docs_theme/layout.html:170
107
+ #, python-format
108
+ msgid ""
109
+ "Created using <a href=\"https://www.sphinx-doc.org/\">Sphinx</a> "
110
+ "%(sphinx_version)s."
111
+ msgstr ""
112
+ "ساخته شده با <a href=\"https://www.sphinx-doc.org/\">Sphinx</a> "
113
+ "%(sphinx_version)s."
114
+
115
+ #: python_docs_theme/static/copybutton.js:30
116
+ #: python_docs_theme/static/copybutton.js:55
117
+ msgid "Copy"
118
+ msgstr "کپی"
119
+
120
+ #: python_docs_theme/static/copybutton.js:31
121
+ msgid "Copy to clipboard"
122
+ msgstr "کپی به تخته‌گیره"
123
+
124
+ #: python_docs_theme/static/copybutton.js:53
125
+ msgid "Copied!"
126
+ msgstr "کپی شد!"
@@ -108,7 +108,7 @@ div.related a:hover {
108
108
  }
109
109
 
110
110
  .switchers > div {
111
- margin-right: 5px;
111
+ margin-inline-end: 5px;
112
112
  }
113
113
 
114
114
  div.related ul::after {
@@ -117,6 +117,17 @@ div.related ul::after {
117
117
  display: block;
118
118
  }
119
119
 
120
+ div.related ul {
121
+ padding: 0;
122
+ padding-inline-start: 10px;
123
+ }
124
+
125
+ body[dir='rtl'] div.related ul li.right {
126
+ float: left;
127
+ margin-right: 0;
128
+ margin-left: 5px;
129
+ }
130
+
120
131
  .inline-search,
121
132
  form.inline-search input {
122
133
  display: inline;
@@ -142,6 +153,9 @@ span.pre {
142
153
  div.sphinxsidebar {
143
154
  display: flex;
144
155
  width: min(25vw, 350px);
156
+ flex-shrink: 0;
157
+ margin: 0;
158
+ order: 0;
145
159
  float: none;
146
160
  position: sticky;
147
161
  top: 0;
@@ -158,8 +172,14 @@ div.sphinxsidebar h4 {
158
172
  margin-top: 1.5em;
159
173
  }
160
174
 
161
- div.bodywrapper {
162
- margin-left: min(25vw, 350px);
175
+ div.document div.bodywrapper {
176
+ margin: 0;
177
+ }
178
+
179
+ div.documentwrapper {
180
+ flex: 1;
181
+ min-width: 0;
182
+ order: 1;
163
183
  }
164
184
 
165
185
  div.sphinxsidebarwrapper {
@@ -179,6 +199,11 @@ div.sphinxsidebarwrapper > ul > li > ul > li {
179
199
  margin-bottom: 0.4em;
180
200
  }
181
201
 
202
+ div.sphinxsidebar ul ul {
203
+ margin-left: 0;
204
+ margin-inline-start: 20px;
205
+ }
206
+
182
207
  div.sphinxsidebar a:hover {
183
208
  color: #0095c4;
184
209
  }
@@ -206,16 +231,23 @@ div.sphinxsidebar input[type='text'] {
206
231
  border-left: none;
207
232
  }
208
233
 
234
+ body[dir='rtl'] #sidebarbutton {
235
+ border-radius: 5px 0 0 5px;
236
+ border-right: none;
237
+ border-left: none;
238
+ }
239
+
209
240
  #sidebarbutton:hover {
210
241
  background-color: #AAAAAA;
211
242
  }
212
243
 
213
244
  div.body {
214
- padding: 0 0 0 1.2em;
245
+ padding: 0;
246
+ padding-inline-start: 1.2em;
215
247
  }
216
248
 
217
249
  div.body p, div.body dd, div.body li, div.body blockquote {
218
- text-align: left;
250
+ text-align: start;
219
251
  line-height: 1.6;
220
252
  }
221
253
  div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 {
@@ -225,6 +257,10 @@ div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 {
225
257
  }
226
258
  div.body dl.field-list > dt {
227
259
  line-height: 1.6;
260
+ padding-left: 0;
261
+ padding-right: 0;
262
+ padding-inline-start: 0.5em;
263
+ padding-inline-end: 5px;
228
264
  }
229
265
 
230
266
  div.body hr {
@@ -233,6 +269,22 @@ div.body hr {
233
269
  height: 1px;
234
270
  }
235
271
 
272
+ body[dir='rtl'] {
273
+ & pre,
274
+ & code,
275
+ & div.highlight,
276
+ & dl > dt span ~ em,
277
+ & .sig,
278
+ & .sig-param {
279
+ direction: ltr;
280
+ unicode-bidi: isolate;
281
+ }
282
+ }
283
+
284
+ body[dir='rtl'] .sig {
285
+ text-align: right;
286
+ }
287
+
236
288
  div.body pre {
237
289
  border-radius: 3px;
238
290
  border: 1px solid #ac9;
@@ -402,7 +454,7 @@ table.docutils th {
402
454
 
403
455
  table p,
404
456
  table li {
405
- text-align: left !important;
457
+ text-align: start !important;
406
458
  }
407
459
 
408
460
  table.docutils th {
@@ -414,11 +466,37 @@ table.footnote td {
414
466
  border: 0 !important;
415
467
  }
416
468
 
469
+ body[dir='rtl'] div#search-results,
470
+ body[dir='rtl'] div#search-results ul.search li {
471
+ direction: rtl;
472
+ text-align: right;
473
+ unicode-bidi: isolate;
474
+ }
475
+
476
+ body[dir='rtl'] div#search-results ul.search li p {
477
+ text-align: right;
478
+ }
479
+
480
+ body[dir='rtl'] div.citation > span {
481
+ float: right;
482
+ }
483
+
484
+ body[dir='rtl'] aside.footnote > span {
485
+ float: right;
486
+ padding-right: 0;
487
+ padding-left: 0.5rem;
488
+ }
489
+
490
+ body[dir='rtl'] aside.footnote > p {
491
+ margin-left: 0;
492
+ margin-right: 2rem;
493
+ }
494
+
417
495
  div.footer {
418
496
  line-height: 150%;
419
- text-align: right;
497
+ text-align: end;
420
498
  width: auto;
421
- margin-right: 10px;
499
+ margin-inline-end: 10px;
422
500
  }
423
501
 
424
502
  div.footer a {
@@ -476,18 +554,17 @@ div.footer a:hover {
476
554
  color: var(--threadsafety-atomic);
477
555
  }
478
556
 
479
-
480
557
  dl > dt span ~ em,
481
558
  .sig {
482
559
  font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
483
560
  }
484
561
 
485
562
  .toctree-wrapper ul {
486
- padding-left: 20px;
563
+ padding-inline-start: 20px;
487
564
  }
488
565
 
489
566
  .theme-selector {
490
- margin-left: .5em;
567
+ margin-inline-start: .5em;
491
568
  }
492
569
 
493
570
  div.genindex-jumpbox,
@@ -506,17 +583,17 @@ div.genindex-jumpbox a {
506
583
  cursor: pointer;
507
584
  position: absolute;
508
585
  top: 0;
509
- right: 0;
586
+ right: 0; /* physical right; always, even in RTL, since code is LTR */
510
587
  font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
511
588
  font-size: 80%;
512
589
  padding-left: .5em;
513
590
  padding-right: .5em;
514
591
  height: 100%;
515
592
  max-height: min(100%, 2.4em);
516
- border-radius: 0 3px 0 0;
593
+ border-radius: 0 3px 0 0; /* physical — top-right corner, always */
517
594
  color: #000;
518
595
  background-color: #fff;
519
- border: 1px solid #ac9; /* follows div.body pre */
596
+ border: 1px solid #ac9;
520
597
  display: none;
521
598
  }
522
599
 
@@ -564,10 +641,16 @@ div.genindex-jumpbox a {
564
641
  margin-inline-start: 1rem;
565
642
  margin-inline-end: 0;
566
643
  }
567
- /* Remove sidebar and top related bar */
568
- div.related, div.sphinxsidebar {
644
+ /* Remove sidebar and desktop-only related controls */
645
+ div.related li.right, div.related li.switchers, div.sphinxsidebar {
646
+ display: none;
647
+ }
648
+ div.related .root-icon, div.related .root-icon + li {
569
649
  display: none;
570
650
  }
651
+ div.related {
652
+ line-height: 1.3;
653
+ }
571
654
  /* Anchorlinks are not hidden by fixed-positioned navbar when scrolled to */
572
655
  html {
573
656
  scroll-padding-top: 40px;
@@ -583,7 +666,7 @@ div.genindex-jumpbox a {
583
666
  width: 100%;
584
667
  position: fixed;
585
668
  top: 0;
586
- left: 0;
669
+ inset-inline-start: 0;
587
670
  box-shadow: rgba(0, 0, 0, 0.25) 0 0 2px 0;
588
671
  z-index: 1;
589
672
  }
@@ -605,7 +688,7 @@ div.genindex-jumpbox a {
605
688
  align-items: stretch;
606
689
  }
607
690
  .nav-logo {
608
- margin-right: 1rem;
691
+ margin-inline-end: 1rem;
609
692
  flex-shrink: 0;
610
693
  align-self: center;
611
694
  }
@@ -614,7 +697,7 @@ div.genindex-jumpbox a {
614
697
  width: 20px;
615
698
  }
616
699
  .version_switcher_placeholder {
617
- margin-right: 1rem;
700
+ margin-inline-end: 1rem;
618
701
  }
619
702
  .version_switcher_placeholder > select {
620
703
  height: 100%;
@@ -624,10 +707,11 @@ div.genindex-jumpbox a {
624
707
  flex: auto;
625
708
  border: 1px solid #a9a9a9;
626
709
  align-items: stretch;
710
+ position: relative;
627
711
  }
628
712
  .nav-content .search input[type=search] {
629
713
  border: 0;
630
- padding-left: 24px;
714
+ padding-inline-start: 24px;
631
715
  width: 100%;
632
716
  flex: 1;
633
717
  }
@@ -635,14 +719,15 @@ div.genindex-jumpbox a {
635
719
  height: 100%;
636
720
  box-shadow: none;
637
721
  border: 0;
638
- border-left: 1px solid #a9a9a9;
722
+ border-inline-start: 1px solid #a9a9a9;
639
723
  cursor: pointer;
640
- margin-right: 0;
724
+ margin-inline-end: 0;
641
725
  }
642
726
  .nav-content .search svg {
643
727
  position: absolute;
644
- align-self: center;
645
- padding-left: 4px;
728
+ top: 50%;
729
+ transform: translateY(-50%);
730
+ inset-inline-start: 4px;
646
731
  }
647
732
  .toggler__input {
648
733
  display: none;
@@ -674,7 +759,7 @@ div.genindex-jumpbox a {
674
759
  width: 100%;
675
760
  background: inherit;
676
761
  position: absolute;
677
- left: 0;
762
+ inset-inline-start: 0;
678
763
  top: -8px;
679
764
  }
680
765
  .toggler__label > span::after {
@@ -695,7 +780,7 @@ div.genindex-jumpbox a {
695
780
  }
696
781
  .toggler__input:checked ~ .menu-wrapper {
697
782
  visibility: visible;
698
- left: 0;
783
+ transform: translateX(0);
699
784
  }
700
785
 
701
786
  /* Sliding side menu */
@@ -703,8 +788,9 @@ div.genindex-jumpbox a {
703
788
  display: block;
704
789
  position: fixed;
705
790
  top: 0;
706
- transition: left 400ms ease;
707
- left: -310px;
791
+ inset-inline-start: 0;
792
+ transition: transform 400ms ease;
793
+ transform: translateX(calc(-100% - 10px));
708
794
  width: 300px;
709
795
  height: 100%;
710
796
  background-color: #eee;
@@ -712,12 +798,18 @@ div.genindex-jumpbox a {
712
798
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
713
799
  overflow-y: auto;
714
800
  }
801
+ body[dir='rtl'] .menu-wrapper {
802
+ transform: translateX(100%);
803
+ }
715
804
  .menu-wrapper.open {
716
805
  visibility: visible;
717
- left: 0;
806
+ transform: translateX(0);
718
807
  }
719
808
  .menu {
720
- padding: 40px 10px 30px 20px;
809
+ padding-block-start: 40px;
810
+ padding-inline-end: 10px;
811
+ padding-block-end: 30px;
812
+ padding-inline-start: 20px;
721
813
  }
722
814
  .menu-wrapper h3,
723
815
  .menu-wrapper h4 {
@@ -742,10 +834,10 @@ div.genindex-jumpbox a {
742
834
  list-style: none;
743
835
  line-height: 1.4;
744
836
  overflow-wrap: break-word;
745
- padding-left: 0;
837
+ padding-inline-start: 0;
746
838
  }
747
839
  .menu ul ul {
748
- margin-left: 20px;
840
+ margin-inline-start: 20px;
749
841
  list-style: square;
750
842
  }
751
843
  .menu ul li {
@@ -801,26 +893,26 @@ div.versionadded,
801
893
  div.versionchanged,
802
894
  div.deprecated,
803
895
  div.deprecated-removed {
804
- border-left: 3px solid;
896
+ border-inline-start: 3px solid;
805
897
  padding: 0 1rem;
806
898
  }
807
899
 
808
900
  div.versionadded {
809
- border-left-color: var(--versionadded-border);
901
+ border-inline-start-color: var(--versionadded-border);
810
902
  }
811
903
 
812
904
  div.versionchanged {
813
- border-left-color: var(--versionchanged-border);
905
+ border-inline-start-color: var(--versionchanged-border);
814
906
  }
815
907
 
816
908
  div.deprecated,
817
909
  div.deprecated-removed,
818
910
  div.versionremoved {
819
- border-left-color: var(--deprecated-border);
911
+ border-inline-start-color: var(--deprecated-border);
820
912
  }
821
913
 
822
914
  div.soft-deprecated {
823
- border-left-color: var(--soft-deprecated-border);
915
+ border-inline-start-color: var(--soft-deprecated-border);
824
916
  }
825
917
 
826
918
  div.versionadded .versionmodified {
@@ -49,7 +49,7 @@ div.body a {
49
49
  }
50
50
 
51
51
  div.body a:visited {
52
- color: #09e;
52
+ color: #bf95f9;
53
53
  }
54
54
 
55
55
  a.headerlink:hover {
@@ -27,6 +27,7 @@ headbgcolor = "white"
27
27
  headlinkcolor = "#aaaaaa"
28
28
  codebgcolor = "#eeffcc"
29
29
  codetextcolor = "#333333"
30
+ is_rtl = "false"
30
31
 
31
32
  hosted_on = ""
32
33
  issues_url = ""