pax_global_header00006660000000000000000000000064150625452530014521gustar00rootroot0000000000000052 comment=2068038e3a73e94a3159d485d2d60a6148f73355 python-docs-theme-2025.9.2/000077500000000000000000000000001506254525300153315ustar00rootroot00000000000000python-docs-theme-2025.9.2/.babel.cfg000066400000000000000000000000471506254525300171360ustar00rootroot00000000000000[javascript: **.js] [jinja2: **.html] python-docs-theme-2025.9.2/.github/000077500000000000000000000000001506254525300166715ustar00rootroot00000000000000python-docs-theme-2025.9.2/.github/dependabot.yml000066400000000000000000000003301506254525300215150ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: monthly assignees: - "ezio-melotti" groups: actions: patterns: - "*" python-docs-theme-2025.9.2/.github/release.yml000066400000000000000000000001141506254525300210300ustar00rootroot00000000000000changelog: exclude: authors: - dependabot - pre-commit-ci python-docs-theme-2025.9.2/.github/workflows/000077500000000000000000000000001506254525300207265ustar00rootroot00000000000000python-docs-theme-2025.9.2/.github/workflows/documentation-links.yml000066400000000000000000000010631506254525300254400ustar00rootroot00000000000000name: Read the Docs PR preview # Automatically edits a pull request's descriptions with a link # to the documentation's preview on Read the Docs. on: pull_request_target: types: - opened permissions: pull-requests: write concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: documentation-links: runs-on: ubuntu-latest steps: - uses: readthedocs/actions/preview@v1 with: project-slug: "python-docs-theme-previews" single-version: "true" python-docs-theme-2025.9.2/.github/workflows/lint.yml000066400000000000000000000005011506254525300224130ustar00rootroot00000000000000name: Lint on: [push, pull_request, workflow_dispatch] env: FORCE_COLOR: 1 permissions: contents: read jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-python@v5 with: python-version: "3.x" - uses: pre-commit/action@v3.0.1 python-docs-theme-2025.9.2/.github/workflows/pypi-package.yml000066400000000000000000000023771506254525300240340ustar00rootroot00000000000000name: Build & maybe upload PyPI package on: push: pull_request: release: types: - published workflow_dispatch: permissions: contents: read env: FORCE_COLOR: 1 jobs: # Always build & lint package. build-package: name: Build & verify package runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-python@v5 - name: Compile translations run: | pip install --upgrade pip pip install -r requirements.txt python babel_runner.py compile - uses: hynek/build-and-inspect-python-package@v2 # Upload to real PyPI on GitHub Releases. release-pypi: name: Publish to PyPI environment: release-pypi # Only run for published releases. if: | github.repository_owner == 'python' && github.event.action == 'published' runs-on: ubuntu-latest needs: build-package permissions: id-token: write steps: - name: Download packages built by build-and-inspect-python-package uses: actions/download-artifact@v5 with: name: Packages path: dist - name: Upload package to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: attestations: true python-docs-theme-2025.9.2/.github/workflows/tests.yml000066400000000000000000000051331506254525300226150ustar00rootroot00000000000000name: Tests on: [push, pull_request, workflow_dispatch] env: FORCE_COLOR: 1 jobs: build_doc: name: Build CPython docs runs-on: ubuntu-latest strategy: fail-fast: false matrix: branch: ["3.14", "3.13", "3.12"] steps: - uses: actions/checkout@v5 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.branch }} allow-prereleases: true cache: pip - name: Clone docsbuild scripts run: | git clone https://github.com/python/docsbuild-scripts/ - name: Set up requirements run: | python -m pip install --upgrade pip python -m pip install -r docsbuild-scripts/requirements.txt - name: Build documentation run: > python ./docsbuild-scripts/build_docs.py --quick --build-root ./build_root --www-root ./www --log-directory ./logs --group "$(id -g)" --skip-cache-invalidation --theme "$(pwd)" --languages en --branches ${{ matrix.branch }} ${{ matrix.branch == '3.14' && '--select-output no-html' || '' }} - name: Show logs if: failure() run: | cat ./logs/docsbuild.log - name: Upload uses: actions/upload-artifact@v4 with: name: doc-html-${{ matrix.branch }} path: www/ translations: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: ["ubuntu-latest", "windows-latest"] # Test minimum supported and latest stable from 3.x series python-version: ["3.12", "3"] steps: - uses: actions/checkout@v5 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} allow-prereleases: true cache: pip - name: Install dependencies run: | pip install --upgrade pip pip install -r requirements.txt - name: Remove locale file for testing shell: bash run: rm -rf python_docs_theme/locale/pt_BR/ - run: python babel_runner.py extract - run: python babel_runner.py init -l pt_BR - run: python babel_runner.py update - run: python babel_runner.py update -l pt_BR - run: python babel_runner.py compile - run: python babel_runner.py compile -l pt_BR - name: Print .pot file shell: bash run: cat python_docs_theme/locale/python-docs-theme.pot - name: Print .po file shell: bash run: cat python_docs_theme/locale/pt_BR/LC_MESSAGES/python-docs-theme.po python-docs-theme-2025.9.2/.gitignore000066400000000000000000000022051506254525300173200ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # dotenv .env # virtualenv .venv venv/ ENV/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ python-docs-theme-2025.9.2/.pre-commit-config.yaml000066400000000000000000000021661506254525300216170ustar00rootroot00000000000000repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.9.3 hooks: - id: ruff args: [--exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror rev: 24.10.0 hooks: - id: black - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - id: check-case-conflict - id: check-merge-conflict - id: check-toml - id: check-yaml - id: debug-statements - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.31.0 hooks: - id: check-dependabot - id: check-github-workflows - repo: https://github.com/rhysd/actionlint rev: v1.7.7 hooks: - id: actionlint - repo: https://github.com/tox-dev/pyproject-fmt rev: v2.5.0 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject rev: v0.23 hooks: - id: validate-pyproject - repo: meta hooks: - id: check-hooks-apply - id: check-useless-excludes ci: autoupdate_schedule: quarterly python-docs-theme-2025.9.2/.readthedocs.yml000066400000000000000000000006221506254525300204170ustar00rootroot00000000000000# Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Project page: https://readthedocs.org/projects/python-docs-theme-previews/ version: 2 build: os: ubuntu-22.04 tools: python: "3" commands: - git clone --depth=1 https://github.com/python/cpython - make html CPYTHON_PATH=cpython - mv cpython/Doc/build _readthedocs python-docs-theme-2025.9.2/CHANGELOG.rst000066400000000000000000000274551506254525300173670ustar00rootroot00000000000000Changelog ========= `2025.9.2 `_ ------------------------------------------------------------------------------- * Add Korean and Indonesian translations from Transifex in https://github.com/python/python-docs-theme/pull/264 * Add German translation by @cmaureir in https://github.com/python/python-docs-theme/pull/262 * Fix compilation of translations and loading of translations on pages with html source in https://github.com/python/python-docs-theme/pull/263 * Fix search button cutting off long translations in https://github.com/python/python-docs-theme/pull/268 * Fix ``Copy`` button copying line numbers by @StanFromIreland in https://github.com/python/python-docs-theme/pull/270 `2025.9.1 `_ ------------------------------------------------------------------------------- * Add Japanese, Turkish and Spanish translations from Transifex in https://github.com/python/python-docs-theme/pull/259 `2025.9 `_ --------------------------------------------------------------------------- * Enable theme translation and add Polish by @StanFromIreland in https://github.com/python/python-docs-theme/pull/246 * Add Greek translation by @lysnikolaou and @skpanagiotis in https://github.com/python/python-docs-theme/pull/256 and https://github.com/python/python-docs-theme/pull/257 * Add Swedish translation by @yeager in https://github.com/python/python-docs-theme/pull/250 * Add Brazilian Portuguese, Simplified Chinese and Traditional Chinese translations from `Transifex `_ in https://github.com/python/python-docs-theme/pull/253 `2025.5 `_ --------------------------------------------------------------------------- * Make the copy button only appear when hovered over or clicked on by @kevteg in https://github.com/python/python-docs-theme/pull/243 `2025.4.1 `_ ------------------------------------------------------------------------------- * Fix copy button with multiple tracebacks by @tomasr8 in https://github.com/python/python-docs-theme/pull/240 `2025.4 `_ --------------------------------------------------------------------------- * Require Sphinx 7.3 by @AA-Turner in https://github.com/python/python-docs-theme/pull/221 * Add support for Python 3.14 by @hugovk https://github.com/python/python-docs-theme/pull/236 * Drop support for Python 3.10 and 3.11 by @hugovk in https://github.com/python/python-docs-theme/pull/234 * Add a copy button to code samples by @tomasr8 in https://github.com/python/python-docs-theme/pull/231 * Add missing i18n for copy button titles by @tomasr8 in https://github.com/python/python-docs-theme/pull/225 * Use consistent line-height for light & dark theme by @tomasr8 in https://github.com/python/python-docs-theme/pull/227 * Remove self-closing tags by @hugovk in https://github.com/python/python-docs-theme/pull/226 * Replace deprecated classifier with licence expression (PEP 639) by @hugovk in https://github.com/python/python-docs-theme/pull/237 `2025.2 `_ --------------------------------------------------------------------------- - Note minimum requirements for Sphinx (#216) Contributed by Adam Turner - Horizontally centre the sidebar collapse button (#219) Contributed by Tomas Roun - Make sidebar width more flexible (#218) Contributed by Tomas Roun - Set ``__version__`` in the runtime package (#222) Contributed by Adam Turner `2024.12 `_ ----------------------------------------------------------------------------- - Hide header and search bar when printing (#204) Contributed by Hugo van Kemenade `2024.10 `_ ----------------------------------------------------------------------------- - Add support for Python 3.13 (#196) Contributed by Hugo van Kemenade - Drop support for Python 3.8 (#197) Contributed by Hugo van Kemenade - Add script for handling translations (#195) Contributed by Rafael Fontenelle - Generate digital attestations for PyPI (PEP 740) (#198) Contributed by Hugo van Kemenade `2024.6 `_ --------------------------------------------------------------------------- - Add backgrounds and borders to admonitions (#190) Contributed by Hugo van Kemenade - Use different colour for 'Return value: Borrowed reference' (#188) Contributed by Hugo van Kemenade `2024.4 `_ --------------------------------------------------------------------------- - Add colour to version change directives (#185) Contributed by Hugo van Kemenade - Only show 'Last updated on ...' when ``last_updated`` defined (#183) Contributed by Hugo van Kemenade - Use system font stack for all code (#186) Contributed by Hugo van Kemenade `2024.3 `_ --------------------------------------------------------------------------- - Modernise font: use system font stack to improve text readability and webpage performance (#174) Contributed by Hugo van Kemenade - Remove incorrect CSS property (#178) Contributed by Kerim Kabirov `2024.2 `_ --------------------------------------------------------------------------- - Do not underline navigation links (#169) Contributed by Hugo van Kemenade - Only apply underline offset to code formatting for underline visibility (#171) Contributed by Hugo van Kemenade `2024.1 `_ --------------------------------------------------------------------------- - Underline links for readability and a11y (#160, #166) Contributed by Hugo van Kemenade - Add ``hosted_on`` variable for a link in the footer (#165) Contributed by Hugo van Kemenade - Consistently reference ``theme_root_icon`` (#163) Contributed by Marko Budiselic - Dark mode: fix contrast of footer highlight (#162) Contributed by Hugo van Kemenade `2023.9 `_ --------------------------------------------------------------------------- - Focus search box when pressing slash (#153) Contributed by Hugo van Kemenade `2023.8 `_ --------------------------------------------------------------------------- - Add Python 3.12 and 3.13 classifiers (#147) Contributed by Hugo van Kemenade - Dark mode: Also give aside.topic a dark background (#150) Contributed by Hugo van Kemenade - Restore the menu on mobile devices (inadvertently broken in 2023.7) (#146) Contributed by Hugo van Kemenade `2023.7 `_ --------------------------------------------------------------------------- - Fix compatibility with Sphinx 7.1 (#137) Contributed by Pradyun Gedam - Enable the slash keypress to focus the search field (#141) Contributed by Mike Fiedler - Sphinx 6.2 fix: add ``nav.contents`` where ``div.topic`` is used (#138) Contributed by Hugo van Kemenade - Dark mode: fix contrast for C++ specific styling (#133) Contributed by Hugo van Kemenade - Don't let long code literals extend beyond the right side of the screen (#139) Contributed by Hugo van Kemenade - Test with Python 3.12 (#140) Contributed by Hugo van Kemenade `2023.5 `_ --------------------------------------------------------------------------- - Add a dark theme. (#44) Contributed by Nils K - Fix: Remove searchbox id from form. (fixes #117) Contributed by Nils K - Update ``python-docs-theme`` to work with Sphinx 5 & 6. (#99 & #127) Contributed by Adam Turner - Override font for ``.sig`` for consistency with other code blocks. (#121) Contributed by Chris Warrick - Dark mode: add class to invert image brightness. (#128) Contributed by Hugo van Kemenade `2023.3.1 `_ ------------------------------------------------------------------------------- - Skip cache-busting for old Sphinx #113 `2023.3 `_ --------------------------------------------------------------------------- - Fix problem with monospace rendering in Vivaldi #104 - Fix mobile nav obstructing content #96 - Reduce footer margin only for desktop #106 - Append a hash ?digest to CSS files for cache-busting #108 `2022.1 `_ ---------------------------------------------------------------------------- - Add a configuration for license URL. (#90) - Exclude the floating navbar from CHM help. (#84) - Make sidebar scrollable and sticky (on modern browsers) (#91) `2021.11.1 `_ ---------------------------------------------------------------------------------- - Fix monospace again, on buggy Google Chrome (#87) Contributed by Tushar Sadhwani `2021.11 `_ ------------------------------------------------------------------------------ - Fix monospace on buggy Google Chrome (#85) Contributed by Tushar Sadhwani `2021.8 `_ ----------------------------------------------------------------------------- - Add the copyright_url variable in the theme (#67) Contributed by jablonskidev - Improve readability (#79) Contributed by Olga Bulat - Remove #searchbox on mobile to fix a layout bug (#76) Contributed by Olga Bulat - Fix the appearance of version/language selects (#74) Contributed by Olga Bulat `2021.5 `_ ----------------------------------------------------------------------------- - Make the theme responsive (#46) Contributed by Olga Bulat. - Use Python 3.8 for the Github Actions (#71) Contributed by Stéphane Wirtel. - Use default pygments theme (#68) Contributed by Aaron Carlisle. - Test Github action to validate the theme against docsbuild scripts. (#69) Contributed by Julien Palard. - Add the copy button to pycon3 highlighted code blocks. (#64) Contributed by Julien Palard. `2020.12 `_ ------------------------------------------------------------------------------ - Updated the readme, to remind user to install the package in a virtual environment. (#41) Contributed by Mariatta. - Updated the package url, using the GitHub repository instead of docs.python.org (#49) Contributed by Pradyun Gedam. - Added license information to the footer of the doc (#36) Contributed by Todd. - Fixed typo in the footer (#52) Contributed by Dominic Davis-Foster. - Added information on how to use the package (#32) Contributed by Tapasweni Pathak. - Fixed code formatting (#53). Contributed by Hugo van Kemenade. - Fixed code bgcolor and codetextcolor for Sphinx 3.1.0+ (#57) Contributed by Zhiming Wang. 2018.7 ------ Corresponds to `44a8f30 `_ `2018.2 `_ --------------------------------------------------------------------------- Initial release. python-docs-theme-2025.9.2/CONTRIBUTING.rst000066400000000000000000000021761506254525300200000ustar00rootroot00000000000000How to release -------------- - Update ``CHANGELOG.rst`` - Bump version (YYYY.MM) in ``python_docs_theme/__init__.py`` - Commit - Push to check tests pass on `GitHub Actions `__ - Go to https://github.com/python/python-docs-theme/releases - Click "Draft a new release" - Click "Choose a tag" - Type the next YYYY.MM version (no leading zero) and select "**Create new tag: YYYY.MM** on publish" - Leave the "Release title" blank (it will be autofilled) - Click "Generate release notes" and amend as required - Click "Publish release" - Check the tagged `GitHub Actions build `__ has deployed to `PyPI `__ Makefile usage -------------- This project includes a simple Makefile for syncing changes to the theme with the main CPython repository. Run ``make help`` for details on available rules. There is one configurable variable, ``CPYTHON_PATH``, which should be the path to the CPython repository on your machine. By default, it points to ``../cpython``. python-docs-theme-2025.9.2/LICENSE000066400000000000000000000046341506254525300163450ustar00rootroot00000000000000PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 -------------------------------------------- 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python. 4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement. python-docs-theme-2025.9.2/Makefile000066400000000000000000000016431506254525300167750ustar00rootroot00000000000000# You can set these variables from the command line. CPYTHON_PATH = ../cpython PYTHON = python3 PACKAGE_ABS_PATH = $(shell pwd)/$(shell find dist/python-docs-theme-*.tar.gz) SPHINXOPTS = .PHONY: help help: @echo "Please use \`make ' where is one of" @echo " venv to create a venv with necessary tools at $(CPYTHON_PATH)/Doc/venv" @echo " html to make standalone CPython HTML files" @echo " htmlview to open the index page built by the html target in your browser" .PHONY: venv venv: $(PYTHON) -m pip install build $(PYTHON) -m build cd $(CPYTHON_PATH)/Doc \ && make venv \ && ./venv/bin/pip install $(PACKAGE_ABS_PATH) .PHONY: html html: venv cd $(CPYTHON_PATH)/Doc && \ make SPHINXOPTS="$(SPHINXOPTS)" html .PHONY: htmlview htmlview: html $(PYTHON) -c "import os, webbrowser; webbrowser.open('file://' + os.path.realpath('$(CPYTHON_PATH)/Doc/build/html/index.html'))" python-docs-theme-2025.9.2/README.md000066400000000000000000000021441506254525300166110ustar00rootroot00000000000000# Python Docs Sphinx Theme This is the theme for the Python documentation. It requires Python 3.12 or newer and Sphinx 7.3 or newer. Note that when adopting this theme, you're also borrowing an element of the trust and credibility established by the CPython core developers over the years. That's fine, and you're welcome to do so for other Python community projects if you so choose, but please keep in mind that in doing so you're also choosing to accept some of the responsibility for maintaining that collective trust. To use the theme, install it into your docs build environment via `pip` (preferably in a virtual environment). ## Configuration options To use this theme, add the following to `conf.py`: - `html_theme = 'python_docs_theme'` - `html_sidebars`, defaults taken from https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_sidebars ## Preview See a demo of the CPython docs using this theme: - https://python-docs-theme-previews.readthedocs.io The kitchen sink is a showcase of every Sphinx feature: - https://sphinx-themes.org/sample-sites/python-docs-theme/kitchen-sink/ python-docs-theme-2025.9.2/babel_runner.py000077500000000000000000000077061506254525300203560ustar00rootroot00000000000000"""Script for handling translations with Babel""" from __future__ import annotations import argparse import ast import subprocess import tomllib from pathlib import Path # Global variables used by pybabel below (paths relative to PROJECT_DIR) DOMAIN = "python-docs-theme" COPYRIGHT_HOLDER = "Python Software Foundation" SOURCE_DIR = "python_docs_theme" MAPPING_FILE = ".babel.cfg" PROJECT_DIR = Path(__file__).resolve().parent PYPROJECT_TOML = Path(PROJECT_DIR, "pyproject.toml") INIT_PY = PROJECT_DIR / SOURCE_DIR / "__init__.py" LOCALES_DIR = Path(f"{SOURCE_DIR}", "locale") POT_FILE = Path(LOCALES_DIR, f"{DOMAIN}.pot") def get_project_info() -> dict: """Retrieve project's info to populate the message catalog template""" pyproject_text = PYPROJECT_TOML.read_text(encoding="utf-8") project_data = tomllib.loads(pyproject_text)["project"] # read __version__ from __init__.py for child in ast.parse(INIT_PY.read_bytes()).body: if not isinstance(child, ast.Assign): continue target = child.targets[0] if not isinstance(target, ast.Name) or target.id != "__version__": continue version_node = child.value if not isinstance(version_node, ast.Constant): continue project_data["version"] = version_node.value break return project_data def extract_messages() -> None: """Extract messages from all source files into message catalog template""" Path(PROJECT_DIR, LOCALES_DIR).mkdir(parents=True, exist_ok=True) project_data = get_project_info() subprocess.run( [ "pybabel", "extract", "-F", MAPPING_FILE, "--copyright-holder", COPYRIGHT_HOLDER, "--project", project_data["name"], "--version", project_data["version"], "--msgid-bugs-address", project_data["urls"]["Issue tracker"], "-o", POT_FILE, SOURCE_DIR, ], cwd=PROJECT_DIR, check=True, ) def init_locale(locale: str) -> None: """Initialize a new locale based on existing message catalog template""" pofile = PROJECT_DIR / LOCALES_DIR / locale / "LC_MESSAGES" / f"{DOMAIN}.po" if pofile.exists(): print(f"There is already a message catalog for locale {locale}, skipping.") return cmd = [ "pybabel", "init", "-i", POT_FILE, "-d", LOCALES_DIR, "-D", DOMAIN, "-l", locale, ] subprocess.run(cmd, cwd=PROJECT_DIR, check=True) def update_catalogs(locale: str) -> None: """Update translations from existing message catalogs""" cmd = ["pybabel", "update", "-i", POT_FILE, "-d", LOCALES_DIR, "-D", DOMAIN] if locale: cmd.extend(["-l", locale]) subprocess.run(cmd, cwd=PROJECT_DIR, check=True) def compile_catalogs(locale: str) -> None: """Compile existing message catalogs""" cmd = ["pybabel", "compile", "-d", LOCALES_DIR, "-D", DOMAIN] if locale: cmd.extend(["-l", locale]) subprocess.run(cmd, cwd=PROJECT_DIR, check=True) def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( "command", choices=["extract", "init", "update", "compile"], help="command to be executed", ) parser.add_argument( "-l", "--locale", default="", help="language code (needed for init, optional for update and compile)", ) args = parser.parse_args() locale = args.locale if args.command == "extract": extract_messages() elif args.command == "init": if not locale: parser.error("init requires passing the --locale option") init_locale(locale) elif args.command == "update": update_catalogs(locale) elif args.command == "compile": compile_catalogs(locale) if __name__ == "__main__": main() python-docs-theme-2025.9.2/pyproject.toml000066400000000000000000000040511506254525300202450ustar00rootroot00000000000000[build-system] build-backend = "flit_core.buildapi" requires = [ "flit-core>=3.7", ] [project] name = "python-docs-theme" description = "The Sphinx theme for the CPython docs and related projects" readme = "README.md" license = "PSF-2.0" license-files = [ "LICENSE" ] authors = [ { name = "PyPA", email = "distutils-sig@python.org" } ] requires-python = ">=3.12" classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: Sphinx :: Theme", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Documentation", "Topic :: Software Development :: Documentation", ] dynamic = [ "version" ] dependencies = [ "sphinx>=7.3", ] 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.ruff] fix = true lint.select = [ "C4", # flake8-comprehensions "E", # pycodestyle errors "F", # pyflakes errors "I", # isort "ISC", # flake8-implicit-str-concat "LOG", # flake8-logging "PGH", # pygrep-hooks "PYI", # flake8-pyi "RUF022", # unsorted-dunder-all "RUF100", # unused noqa (yesqa) "UP", # pyupgrade "W", # pycodestyle warnings "YTT", # flake8-2020 ] lint.ignore = [ "E203", # Whitespace before ':' "E221", # Multiple spaces before operator "E226", # Missing whitespace around arithmetic operator "E241", # Multiple spaces after ',' ] lint.isort.required-imports = [ "from __future__ import annotations" ] [tool.pyproject-fmt] max_supported_python = "3.14" python-docs-theme-2025.9.2/python_docs_theme/000077500000000000000000000000001506254525300210445ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/__init__.py000066400000000000000000000024601506254525300231570ustar00rootroot00000000000000from __future__ import annotations from pathlib import Path from sphinx.locale import get_translation TYPE_CHECKING = False if TYPE_CHECKING: from typing import Any from sphinx.application import Sphinx from sphinx.util.typing import ExtensionMetadata __version__ = "2025.9.2" THEME_PATH = Path(__file__).resolve().parent LOCALE_DIR = THEME_PATH / "locale" MESSAGE_CATALOG_NAME = "python-docs-theme" def add_translation_to_context( app: Sphinx, pagename: str, templatename: str, context: dict[str, Any], doctree: None, ) -> None: theme_gettext = get_translation(MESSAGE_CATALOG_NAME) sphinx_gettext = get_translation("sphinx") def combined(message: str) -> str: translation = theme_gettext(message) if translation == message: return sphinx_gettext(message) return translation context["_"] = context["gettext"] = context["ngettext"] = combined def setup(app: Sphinx) -> ExtensionMetadata: app.require_sphinx("7.3") app.add_html_theme("python_docs_theme", str(THEME_PATH)) app.add_message_catalog(MESSAGE_CATALOG_NAME, LOCALE_DIR) app.connect("html-page-context", add_translation_to_context) return { "version": __version__, "parallel_read_safe": True, "parallel_write_safe": True, } python-docs-theme-2025.9.2/python_docs_theme/footerdonate.html000066400000000000000000000002661506254525300244270ustar00rootroot00000000000000{% trans %}The Python Software Foundation is a non-profit corporation.{% endtrans %} {% trans %}Please donate.{% endtrans %}
python-docs-theme-2025.9.2/python_docs_theme/layout.html000066400000000000000000000172731506254525300232610ustar00rootroot00000000000000{% extends "classic/layout.html" %} {%- macro relbar() %} {# modified from sphinx/themes/basic/layout.html #} {%- endmacro %} {%- macro searchbox() %} {# modified from sphinx/themes/basic/searchbox.html #} {%- if builder != "htmlhelp" %} {%- endif %} {%- endmacro %} {%- macro themeselector() %} {%- endmacro %} {% block relbar1 %} {% if builder != 'qthelp' %} {{ relbar() }} {% endif %} {% endblock %} {% block relbar2 %} {% if builder != 'qthelp' %} {{ relbar() }} {% endif %} {% endblock %} {%- block extrahead -%} {%- if builder != "htmlhelp" %} {%- if not embedded %} {%- endif -%} {%- endif -%} {{ super() }} {%- endblock -%} {%- block css -%} {{ super() }} {%- endblock -%} {%- block body_tag %} {{ super() }} {%- if builder != 'htmlhelp' %}
{% endif -%} {% endblock %} {% block footer %} {% endblock %} python-docs-theme-2025.9.2/python_docs_theme/locale/000077500000000000000000000000001506254525300223035ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/de/000077500000000000000000000000001506254525300226735ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/de/LC_MESSAGES/000077500000000000000000000000001506254525300244605ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/de/LC_MESSAGES/python-docs-theme.po000066400000000000000000000070451506254525300303750ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Cristián Maureira-Fredes, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-09 10:20+0200\n" "Last-Translator: Cristián Maureira-Fredes, 2025\n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " "1 : 2;\n" "Generated-By: Babel 2.16.0\n" "X-Generator: Poedit 3.6\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Die Python Software Foundation ist eine gemeinnützige Organisation." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Spenden Sie bitte." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navigation" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Schnellsuche" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Los" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Thema" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "Auto" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "Hell" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "Dunkel" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Menü" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Copyright" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "" "Diese Seite ist unter der Python Software Foundation License Version 2 " "lizenziert." #: 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 "" "Beispiele, Rezepte und anderer Code in der Dokumentation sind zusätzlich " "unter der Zero Clause BSD-Lizenz lizenziert." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Weitere Informationen finden Sie unter Verlauf und Lizenz." #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "Gehostet auf %(hosted_on)s." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Zuletzt aktualisiert am %(last_updated)s." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Fehler gefunden?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Erstellt mit Sphinx%(sphinx_version)s." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Kopieren" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Kopiert!" python-docs-theme-2025.9.2/python_docs_theme/locale/el/000077500000000000000000000000001506254525300227035ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/el/LC_MESSAGES/000077500000000000000000000000001506254525300244705ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/el/LC_MESSAGES/python-docs-theme.po000066400000000000000000000077321506254525300304100ustar00rootroot00000000000000# Greek translations for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # Lysandros Nikolaou , 2025. # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-08 10:23+0300\n" "PO-Revision-Date: 2025-09-08 10:23+0300\n" "Last-Translator: Lysandros Nikolaou \n" "Language: el\n" "Language-Team: PyGreece \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.17.0\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 "Μενού" #: 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, 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." #: 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 "Βρήκες ένα bug?" #: 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 "Αντιγραφή" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Αντιγράφηκε!" python-docs-theme-2025.9.2/python_docs_theme/locale/es/000077500000000000000000000000001506254525300227125ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/es/LC_MESSAGES/000077500000000000000000000000001506254525300244775ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/es/LC_MESSAGES/python-docs-theme.po000066400000000000000000000070301506254525300304060ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Cristián Maureira-Fredes, 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: Cristián Maureira-Fredes, 2025\n" "Language-Team: Spanish (https://app.transifex.com/python-doc/teams/5390/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: es\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "La Python Software Foundation es una corporación sin fines de lucro." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Por favor dona." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navegación" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Búsqueda rápida" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Ir" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Tema" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "Auto" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "Claro" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "Oscuro" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Menú" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Derechos de autor" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "Ésta página tiene la licencia Python Software Foundation Versión 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 "" "Ejemplos, guías, y otro código en la documentación están bajo la licencia " "adicional Zero Clause BSD." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Ver Historia y Licencia para más " "información." #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "Hospedado en %(hosted_on)s." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Última actualización en %(last_updated)s." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Encontraste un bug?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Creado usando Sphinx%(sphinx_version)s." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Copiar" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "¡Copiado!" python-docs-theme-2025.9.2/python_docs_theme/locale/id/000077500000000000000000000000001506254525300226775ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/id/LC_MESSAGES/000077500000000000000000000000001506254525300244645ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/id/LC_MESSAGES/python-docs-theme.po000066400000000000000000000067311506254525300304020ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Hengky Kurniawan, 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: Hengky Kurniawan, 2025\n" "Language-Team: Indonesian (https://app.transifex.com/python-doc/teams/5390/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Python Software Foundation adalah sebuah korporasi nirlaba." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Mari berdonasi." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navigasi" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Pencarian cepat" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Telusuri" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Tema" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "Otomatis" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "Terang" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "Gelap" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Menu" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Hak cipta" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "" "Halaman ini dilisensikan di bawah Lisensi Python Software Foundation Versi " "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 "" "Contoh, resep, dan kode lainnya dalam dokumentasi juga dilisensikan di bawah" " Lisensi Zero Clause BSD." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Lihat Sejarah dan Lisensi untuk informasi " "lebih lanjut." #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "Dihos di %(hosted_on)s." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Terakhir diperbarui pada %(last_updated)s." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Menemukan kekutu?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Dibuat menggunakan Sphinx " "%(sphinx_version)s." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Salin" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Salin ke papan klip" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Tersalin!" python-docs-theme-2025.9.2/python_docs_theme/locale/ja/000077500000000000000000000000001506254525300226755ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/ja/LC_MESSAGES/000077500000000000000000000000001506254525300244625ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/ja/LC_MESSAGES/python-docs-theme.po000066400000000000000000000072411506254525300303750ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Inada Naoki , 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: Inada Naoki , 2025\n" "Language-Team: Japanese (https://app.transifex.com/python-doc/teams/5390/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Pythonソフトウェア財団は非営利法人です。" #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "寄付をするには" #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navigation" #: 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 "Go" #: 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 "メニュー" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Copyright" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "このページはPython Software Foundation License Version 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ライセンスの下で追加的にライセンスされています。" #: 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 "コピー" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "クリップボードにコピーする" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "コピーされました。" python-docs-theme-2025.9.2/python_docs_theme/locale/ko/000077500000000000000000000000001506254525300227145ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/ko/LC_MESSAGES/000077500000000000000000000000001506254525300245015ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/ko/LC_MESSAGES/python-docs-theme.po000066400000000000000000000073471506254525300304230ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # wonsuk yang, 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: wonsuk yang, 2025\n" "Language-Team: Korean (https://app.transifex.com/python-doc/teams/5390/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "파이썬 소프트웨어 재단은 비영리 재단입니다." #: 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 "메뉴" #: 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 "해당하는 페이지의 저작권은 파이썬 소프트웨어 재단 저작권 라이센스 버전 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 라이센스를 통해 보호받음을 고지 드립니다." #: 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_version)s를 통해 만들어졌습니다." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "복사" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "클립보드에 복사" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "복사되었습니다!" python-docs-theme-2025.9.2/python_docs_theme/locale/pl/000077500000000000000000000000001506254525300227165ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/pl/LC_MESSAGES/000077500000000000000000000000001506254525300245035ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/pl/LC_MESSAGES/python-docs-theme.po000066400000000000000000000071571506254525300304240ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Stan Ulbrych, 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: Stan Ulbrych, 2025\n" "Language-Team: Polish (https://app.transifex.com/python-doc/teams/5390/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: pl\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Python Software Foundation jest organizacją non-profit." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Prosimy o wsparcie." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Nawigacja" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Szybkie wyszukiwanie" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Szukaj" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Motyw" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "auto" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "jasny" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "ciemny" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Menu" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Prawa autorskie" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "Ta strona jest objęta licencją Python Software Foundation w wersji 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 "" "Przykłady, przepisy i inny kod w dokumentacji są dodatkowo objęte licencją " "Zero Clause BSD." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Zobacz Historię i licencję aby uzyskać " "więcej informacji." #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "Hostowane na %(hosted_on)s." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Ostatnia aktualizacja %(last_updated)s." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Znalazłeś(-aś) błąd?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Stworzone za pomocą Sphinx " "%(sphinx_version)s." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Kopiuj" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Skopiuj do schowka" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Skopiowano!" python-docs-theme-2025.9.2/python_docs_theme/locale/pt_BR/000077500000000000000000000000001506254525300233115ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/pt_BR/LC_MESSAGES/000077500000000000000000000000001506254525300250765ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/pt_BR/LC_MESSAGES/python-docs-theme.po000066400000000000000000000073141506254525300310120ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Alexsey Batista da Silva, 2025 # Rafael Fontenelle , 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: Rafael Fontenelle , 2025\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/python-doc/teams/5390/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: pt_BR\n" "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "A Python Software Foundation é uma corporação sem fins lucrativos." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Por favor, faça sua doação." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navegação" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Pesquisa rápida" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Ir" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Tema" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "Automático" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "Claro" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "Escuro" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Menu" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Direitos autorais" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "" "Esta página está licenciada sob a Licença da Python Software Foundation " "Versão 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 "" "Exemplos, receitas e outros códigos na documentação são licenciados " "adicionalmente sob a licença BSD Zero Clause." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Consulte Histórico e licença para obter " "mais informações." #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "Hospedado em %(hosted_on)s." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Última atualização em %(last_updated)s." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Encontrou um erro?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Criado usando o Sphinx " "%(sphinx_version)s." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Copiar" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Copiado!" python-docs-theme-2025.9.2/python_docs_theme/locale/sv/000077500000000000000000000000001506254525300227335ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/sv/LC_MESSAGES/000077500000000000000000000000001506254525300245205ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/sv/LC_MESSAGES/python-docs-theme.po000066400000000000000000000066141506254525300304360ustar00rootroot00000000000000# Swedish translations for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # Daniel Nylander, 2025. # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/" "issues\n" "POT-Creation-Date: 2025-08-07 19:09+0200\n" "PO-Revision-Date: 2025-08-29 07:03+0200\n" "Last-Translator: Daniel Nylander \n" "Language-Team: sv\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" "X-Generator: Poedit 3.7\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Python Software Foundation är ett icke-vinstdrivande företag." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Donera." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navigering" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Snabbsök" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Start" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Tema" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "Auto" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "Ljus" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "Mörk" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Meny" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Upphovsrätt" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License " "Version 2." msgstr "" "Denna sida är licensierad enligt Python Software Foundation License " "version 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 "" "Exempel, recept och annan kod i dokumentationen är dessutom " "licensierade under Zero Clause BSD-licensen." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Se Historik och licens för mer " "information." #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "Hosting %(hosted_on)s." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Senast uppdaterad %(last_updated)s." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Har du hittat ett fel?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Skapad med hjälp av Sphinx " "%(sphinx_version)s." #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Kopiera" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Kopiera till urklipp" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Kopierad!" python-docs-theme-2025.9.2/python_docs_theme/locale/tr/000077500000000000000000000000001506254525300227305ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/tr/LC_MESSAGES/000077500000000000000000000000001506254525300245155ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/tr/LC_MESSAGES/python-docs-theme.po000066400000000000000000000070371506254525300304330ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # Ege Akman, 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: Ege Akman, 2025\n" "Language-Team: Turkish (https://app.transifex.com/python-doc/teams/5390/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: tr\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 kâr amacı gütmeyen bir kuruluştur." #: python_docs_theme/footerdonate.html:2 msgid "Please donate." msgstr "Lütfen bağış yapın." #: python_docs_theme/layout.html:6 msgid "Navigation" msgstr "Navigasyon" #: python_docs_theme/layout.html:51 python_docs_theme/layout.html:111 msgid "Quick search" msgstr "Hızlı arama" #: python_docs_theme/layout.html:52 python_docs_theme/layout.html:112 msgid "Go" msgstr "Ara" #: python_docs_theme/layout.html:60 msgid "Theme" msgstr "Tema" #: python_docs_theme/layout.html:62 msgid "Auto" msgstr "Otomatik" #: python_docs_theme/layout.html:63 msgid "Light" msgstr "Açık" #: python_docs_theme/layout.html:64 msgid "Dark" msgstr "Koyu" #: python_docs_theme/layout.html:96 msgid "Menu" msgstr "Menü" #: python_docs_theme/layout.html:142 msgid "Copyright" msgstr "Telif Hakkı" #: python_docs_theme/layout.html:147 msgid "" "This page is licensed under the Python Software Foundation License Version " "2." msgstr "" "Bu sayfa, Python Software Foundation License Version 2 kapsamında " "lisanslanmıştır." #: 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 "" "Dokümantasyondaki örnekler, tarifler ve diğer kodlar ek olarak Zero Clause " "BSD License kapsamında lisanslanmıştır." #: python_docs_theme/layout.html:152 #, python-format msgid "" "See History and License for more " "information." msgstr "" "Daha fazla bilgi için Geçmiş ve Lisans " "bölümüne bakın. " #: python_docs_theme/layout.html:155 #, python-format msgid "Hosted on %(hosted_on)s." msgstr "%(hosted_on)s üzerinde barındırılmaktadır." #: python_docs_theme/layout.html:163 #, python-format msgid "Last updated on %(last_updated)s." msgstr "En son %(last_updated)s tarihinde güncellendi." #: python_docs_theme/layout.html:166 #, python-format msgid "Found a bug?" msgstr "Bir bug mı buldunuz?" #: python_docs_theme/layout.html:170 #, python-format msgid "" "Created using Sphinx " "%(sphinx_version)s." msgstr "" "Sphinx %(sphinx_version)s ile " "oluşturuldu. " #: python_docs_theme/static/copybutton.js:30 #: python_docs_theme/static/copybutton.js:55 msgid "Copy" msgstr "Kopyala" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "Panoya kopyala" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "Kopyalandı!" python-docs-theme-2025.9.2/python_docs_theme/locale/zh_CN/000077500000000000000000000000001506254525300233045ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/zh_CN/LC_MESSAGES/000077500000000000000000000000001506254525300250715ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/zh_CN/LC_MESSAGES/python-docs-theme.po000066400000000000000000000066761506254525300310170ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # 汇民 王 , 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: 汇民 王 , 2025\n" "Language-Team: Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Python 软件基金会是一家非营利性公司。" #: 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 "菜单" #: 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 软件基金会许可证第 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 "文档中的示例、代码片段及其他代码内容额外采用零条款 BSD 许可证授权。" #: 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 "复制" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "复制到剪贴板" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "已复制!" python-docs-theme-2025.9.2/python_docs_theme/locale/zh_TW/000077500000000000000000000000001506254525300233365ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/zh_TW/LC_MESSAGES/000077500000000000000000000000001506254525300251235ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/locale/zh_TW/LC_MESSAGES/python-docs-theme.po000066400000000000000000000067041506254525300310410ustar00rootroot00000000000000# Translations template for python-docs-theme. # Copyright (C) 2025 Python Software Foundation # This file is distributed under the same license as the python-docs-theme # project. # FIRST AUTHOR , 2025. # # Translators: # W. H. Wang , 2025 # msgid "" msgstr "" "Project-Id-Version: python-docs-theme 2025.5\n" "Report-Msgid-Bugs-To: https://github.com/python/python-docs-theme/issues\n" "POT-Creation-Date: 2025-09-06 08:40+0100\n" "PO-Revision-Date: 2025-09-06 07:41+0000\n" "Last-Translator: W. H. Wang , 2025\n" "Language-Team: Chinese (Taiwan) (https://app.transifex.com/python-doc/teams/5390/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" #: python_docs_theme/footerdonate.html:1 msgid "The Python Software Foundation is a non-profit corporation." msgstr "Python 軟體基金會是一家非營利法人。" #: 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 "Go" #: 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 "選單" #: 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 軟體基金會授權條款第 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 授權條款。" #: 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 "發現 bug?" #: 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 "複製" #: python_docs_theme/static/copybutton.js:31 msgid "Copy to clipboard" msgstr "複製到剪貼板" #: python_docs_theme/static/copybutton.js:53 msgid "Copied!" msgstr "已複製!" python-docs-theme-2025.9.2/python_docs_theme/static/000077500000000000000000000000001506254525300223335ustar00rootroot00000000000000python-docs-theme-2025.9.2/python_docs_theme/static/copybutton.js000066400000000000000000000053611506254525300251040ustar00rootroot00000000000000// Extract copyable text from the code block ignoring the // prompts and output. function getCopyableText(rootElement) { rootElement = rootElement.cloneNode(true) // tracebacks (.gt) contain bare text elements that // need to be removed const tracebacks = rootElement.querySelectorAll(".gt") for (const el of tracebacks) { while ( el.nextSibling && (el.nextSibling.nodeType !== Node.ELEMENT_NODE || !el.nextSibling.matches(".gp, .go")) ) { el.nextSibling.remove() } } // Remove all elements with the "go" (Generic.Output), // "gp" (Generic.Prompt), or "gt" (Generic.Traceback) CSS class const elements = rootElement.querySelectorAll(".gp, .go, .gt, .linenos") for (const el of elements) { el.remove() } return rootElement.innerText.trim() } const loadCopyButton = () => { const button = document.createElement("button") button.classList.add("copybutton") button.type = "button" button.innerText = _("Copy") button.title = _("Copy to clipboard") const makeOnButtonClick = () => { let timeout = null // define the behavior of the button when it's clicked return async event => { // check if the clipboard is available if (!navigator.clipboard || !navigator.clipboard.writeText) { return; } clearTimeout(timeout) const buttonEl = event.currentTarget const codeEl = buttonEl.nextElementSibling try { await navigator.clipboard.writeText(getCopyableText(codeEl)) } catch (e) { console.error(e.message) return } buttonEl.innerText = _("Copied!") timeout = setTimeout(() => { buttonEl.innerText = _("Copy") }, 1500) } } const highlightedElements = document.querySelectorAll( ".highlight-python .highlight," + ".highlight-python3 .highlight," + ".highlight-pycon .highlight," + ".highlight-pycon3 .highlight," + ".highlight-default .highlight" ) // create and add the button to all the code blocks that contain >>> highlightedElements.forEach(el => { el.style.position = "relative" // if we find a console prompt (.gp), prepend the (deeply cloned) button const clonedButton = button.cloneNode(true) // the onclick attribute is not cloned, set it on the new element clonedButton.onclick = makeOnButtonClick() el.prepend(clonedButton) }) } if (document.readyState !== "loading") { loadCopyButton() } else { document.addEventListener("DOMContentLoaded", loadCopyButton) } python-docs-theme-2025.9.2/python_docs_theme/static/menu.js000066400000000000000000000041311506254525300236340ustar00rootroot00000000000000document.addEventListener("DOMContentLoaded", function () { // Make tables responsive by wrapping them in a div and making them scrollable const tables = document.querySelectorAll("table.docutils") tables.forEach(function(table){ table.outerHTML = '
' + table.outerHTML + "
" }) const togglerInput = document.querySelector(".toggler__input") const togglerLabel = document.querySelector(".toggler__label") const sideMenu = document.querySelector(".menu-wrapper") const menuItems = document.querySelectorAll(".menu") const doc = document.querySelector(".document") const body = document.querySelector("body") function closeMenu() { togglerInput.checked = false sideMenu.setAttribute("aria-expanded", "false") sideMenu.setAttribute("aria-hidden", "true") togglerLabel.setAttribute("aria-pressed", "false") body.style.overflow = "visible" } function openMenu() { togglerInput.checked = true sideMenu.setAttribute("aria-expanded", "true") sideMenu.setAttribute("aria-hidden", "false") togglerLabel.setAttribute("aria-pressed", "true") body.style.overflow = "hidden" } // Close menu when link on the sideMenu is clicked sideMenu.addEventListener("click", function (event) { let target = event.target if (target.tagName.toLowerCase() !== "a") { return } closeMenu() }) // Add accessibility data when sideMenu is opened/closed togglerInput.addEventListener("change", function (_event) { togglerInput.checked ? openMenu() : closeMenu() }) // Make sideMenu links tabbable only when visible for(let menuItem of menuItems) { if(togglerInput.checked) { menuItem.setAttribute("tabindex", "0") } else { menuItem.setAttribute("tabindex", "-1") } } // Close sideMenu when document body is clicked doc.addEventListener("click", function () { if (togglerInput.checked) { closeMenu() } }) }) python-docs-theme-2025.9.2/python_docs_theme/static/py.svg000066400000000000000000000037711506254525300235140ustar00rootroot00000000000000 python-docs-theme-2025.9.2/python_docs_theme/static/pydoctheme.css000066400000000000000000000360511506254525300252130ustar00rootroot00000000000000/* Common colours */ :root { --good-color: rgb(41 100 51); --good-border: rgb(79 196 100); --middle-color: rgb(133 72 38); --middle-border: rgb(244, 227, 76); --bad-color: rgb(159 49 51); --bad-border: rgb(244, 76, 78); } /* unset some styles from the classic stylesheet */ div.document, div.body, div.related, div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6, div.sphinxsidebar a, div.sphinxsidebar p, div.sphinxsidebar ul, div.sphinxsidebar h3, div.sphinxsidebar h3 a, div.sphinxsidebar h4, .menu a, .menu p, .menu ul, .menu h3, .menu h3 a, .menu h4, table.docutils td, table.indextable tr.cap, pre { background-color: inherit; color: inherit; } /* Add underlines to links */ a[href] { text-decoration: underline 1px; } /* Increase the underline offset for code to avoid obscuring underscores */ a[href]:has(> code) { text-underline-offset: 0.25em; } /* No underline for navigation */ a.headerlink, div.genindex-jumpbox a, div.modindex-jumpbox a, div#search-results a, div.sphinxsidebar a, div.toctree-wrapper a, div[role=navigation] a, table.contentstable a, table.indextable a { text-decoration: none; } /* Except when hovered */ div.genindex-jumpbox a:hover, div.modindex-jumpbox a:hover, div#search-results a:hover, div.sphinxsidebar a:hover, div.toctree-wrapper a:hover, div[role=navigation] a:hover, table.contentstable a:hover, table.indextable a:hover { text-decoration: underline; text-underline-offset: auto; } body { margin-left: 1em; margin-right: 1em; } .mobile-nav, .menu-wrapper { display: none; } div.related { margin-top: 0.5em; margin-bottom: 1.2em; padding: 0.5em 0; border-width: 1px; border-color: #ccc; } .mobile-nav + div.related { border-bottom-style: solid; } .document + div.related { border-top-style: solid; } div.related a:hover { color: #0095c4; } .related .switchers { display: inline-flex; } .switchers > div { margin-right: 5px; } div.related ul::after { content: ''; clear: both; display: block; } .inline-search, form.inline-search input { display: inline; } form.inline-search input[type='submit'] { /* In some languages, more than 40px is required */ width: auto; min-width: 40px; } div.document { display: flex; /* Don't let long code literals extend beyond the right side of the screen */ overflow-wrap: break-word; } /* Don't let long code literals extend beyond the right side of the screen */ span.pre { white-space: unset; } div.sphinxsidebar { display: flex; width: min(25vw, 350px); float: none; position: sticky; top: 0; max-height: 100vh; color: #444; background-color: #eee; border-radius: 5px; line-height: 130%; font-size: smaller; } div.sphinxsidebar h3, div.sphinxsidebar h4 { margin-top: 1.5em; } div.bodywrapper { margin-left: min(25vw, 350px); } div.sphinxsidebarwrapper { box-sizing: border-box; height: 100%; overflow-x: hidden; overflow-y: auto; float: none; flex-grow: 1; } div.sphinxsidebarwrapper > h3:first-child { margin-top: 0.2em; } div.sphinxsidebarwrapper > ul > li > ul > li { margin-bottom: 0.4em; } div.sphinxsidebar a:hover { color: #0095c4; } form.inline-search input, div.sphinxsidebar input, div.related input { font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif; border: 1px solid #999999; font-size: smaller; border-radius: 3px; } div.sphinxsidebar input[type='text'] { max-width: 150px; } #sidebarbutton { display: flex; justify-content: center; align-items: center; width: 12px; min-width: 12px; border-radius: 0 5px 5px 0; border-left: none; } #sidebarbutton:hover { background-color: #AAAAAA; } div.body { padding: 0 0 0 1.2em; } div.body p, div.body dd, div.body li, div.body blockquote { text-align: left; line-height: 1.6; } div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 { margin: 0; border: 0; padding: 0.3em 0; } div.body hr { border: 0; background-color: #ccc; height: 1px; } div.body pre { border-radius: 3px; border: 1px solid #ac9; } /* Admonitions */ :root { --admonition-background: #eee; --admonition-border: #ccc; --admonition-color: black; --attention-background: #bbddff5c; --attention-border: #0000ff36; --caution-background: #ffc; --caution-border: #dd6; --danger-background: #ffe4e4; --danger-border: red; --error-background: #ffe4e4; --error-border: red; --hint-background: #dfd; --hint-border: green; --seealso-background: #ffc; --seealso-border: #dd6; --tip-background: #dfd; --tip-border: green; --warning-background: #ffe4e4; --warning-border: red; } div.body div.admonition { background-color: var(--admonition-background); border: 1px solid var(--admonition-border); border-radius: 3px; color: var(--admonition-color); } div.body div.admonition.attention { background-color: var(--attention-background); border-color: var(--attention-border); } div.body div.admonition.caution { background-color: var(--caution-background); border-color: var(--caution-border); } div.body div.admonition.danger { background-color: var(--danger-background); border-color: var(--danger-border); } div.body div.admonition.error { background-color: var(--error-background); border-color: var(--error-border); } div.body div.admonition.hint { background-color: var(--hint-background); border-color: var(--hint-border); } div.body div.admonition.seealso { background-color: var(--seealso-background); border-color: var(--seealso-border); } div.body div.admonition.tip { background-color: var(--tip-background); border-color: var(--tip-border); } div.body div.admonition.warning { background-color: var(--warning-background); border-color: var(--warning-border); } div.body div.impl-detail { border-radius: 3px; } div.body div.impl-detail > p { margin: 0; } div.body a { color: #0072aa; } div.body a:visited { color: #6363bb; } div.body a:hover { color: #00b0e4; } tt, code, pre { font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; font-size: 96.5%; } div.body pre { line-height: 120%; } div.body tt, div.body code { border-radius: 3px; } div.body tt.descname, div.body code.descname { font-size: 120%; } div.body tt.xref, div.body a tt, div.body code.xref, div.body a code { font-weight: normal; } table.docutils { border: 1px solid #ddd; min-width: 20%; border-radius: 3px; margin-top: 10px; margin-bottom: 10px; } table.docutils td, table.docutils th { border: 1px solid #ddd !important; border-radius: 3px; padding: 0.3em 0.5em; } table p, table li { text-align: left !important; } table.docutils th { background-color: #eee; } table.footnote, table.footnote td { border: 0 !important; } div.footer { line-height: 150%; text-align: right; width: auto; margin-right: 10px; } div.footer a { text-underline-offset: auto; } div.footer a:hover { color: #0095c4; } /* C API return value annotations */ :root { --refcount: var(--good-color); --refcount-return-borrowed-ref: var(--middle-color); } .refcount { color: var(--refcount); } .refcount.return_borrowed_ref { color: var(--refcount-return-borrowed-ref) } .stableabi { color: #229; } dl > dt span ~ em, .sig { font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; } .toctree-wrapper ul { padding-left: 20px; } .theme-selector { margin-left: .5em; } div.genindex-jumpbox, div.genindex-jumpbox > p { display: inline-flex; flex-wrap: wrap; } div.genindex-jumpbox a { margin: 0 5px; min-width: 30px; text-align: center; } .copybutton { cursor: pointer; position: absolute; top: 0; right: 0; font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; font-size: 80%; padding-left: .5em; padding-right: .5em; height: 100%; max-height: min(100%, 2.4em); border-radius: 0 3px 0 0; color: #000; background-color: #fff; border: 1px solid #ac9; /* follows div.body pre */ display: none; } .copybutton:hover { background-color: #eee; } .copybutton:active { background-color: #ddd; } .highlight:active .copybutton { display: block; } .highlight:hover .copybutton { display: block; } @media (max-width: 1023px) { /* Body layout */ div.body { min-width: 100%; padding: 0; font-size: 0.875rem; } div.bodywrapper { margin: 0; } /* Typography */ div.body h1 { font-size: 1.625rem; } div.body h2 { font-size: 1.25rem; } div.body h3, div.body h4, div.body h5 { font-size: 1rem; } /* Override default styles to make more readable */ div.body ul { padding-inline-start: 1rem; } div.body blockquote { margin-inline-start: 1rem; margin-inline-end: 0; } /* Remove sidebar and top related bar */ div.related, div.sphinxsidebar { display: none; } /* Anchorlinks are not hidden by fixed-positioned navbar when scrolled to */ html { scroll-padding-top: 40px; } body { margin-top: 40px; } /* Top navigation bar */ .mobile-nav { display: block; height: 40px; width: 100%; position: fixed; top: 0; left: 0; box-shadow: rgba(0, 0, 0, 0.25) 0 0 2px 0; z-index: 1; } .mobile-nav * { box-sizing: border-box; } .nav-content { position: absolute; z-index: 1; height: 40px; width: 100%; display: flex; background-color: white; } .nav-items-wrapper { display: flex; flex: auto; padding: .25rem; align-items: stretch; } .nav-logo { margin-right: 1rem; flex-shrink: 0; align-self: center; } .nav-content img { display: block; width: 20px; } .version_switcher_placeholder { margin-right: 1rem; } .version_switcher_placeholder > select { height: 100%; } .nav-content .search { display: flex; flex: auto; border: 1px solid #a9a9a9; align-items: stretch; } .nav-content .search input[type=search] { border: 0; padding-left: 24px; width: 100%; flex: 1; } .nav-content .search input[type=submit] { height: 100%; box-shadow: none; border: 0; border-left: 1px solid #a9a9a9; cursor: pointer; margin-right: 0; } .nav-content .search svg { position: absolute; align-self: center; padding-left: 4px; } .toggler__input { display: none; } .toggler__label { width: 40px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 8px; flex-shrink: 0; } .toggler__label:hover, .toggler__label:focus { background-color: rgba(127 127 127 / 50%); } .toggler__label > span { position: relative; flex: none; height: 2px; width: 100%; background: currentColor; transition: all 400ms ease; } .toggler__label > span::before, .toggler__label > span::after { content: ''; height: 2px; width: 100%; background: inherit; position: absolute; left: 0; top: -8px; } .toggler__label > span::after { top: 8px; } .toggler__input:checked ~ nav > .toggler__label span { transform: rotate(135deg); } .toggler__input:checked ~ nav > .toggler__label span::before { transform: rotate(90deg); } .toggler__input:checked ~ nav > .toggler__label span::before, .toggler__input:checked ~ nav > .toggler__label span::after { top: 0; } .toggler__input:checked:hover ~ nav > .toggler__label span { transform: rotate(315deg); } .toggler__input:checked ~ .menu-wrapper { visibility: visible; left: 0; } /* Sliding side menu */ .menu-wrapper { display: block; position: fixed; top: 0; transition: left 400ms ease; left: -310px; width: 300px; height: 100%; background-color: #eee; color: #444444; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); overflow-y: auto; } .menu-wrapper.open { visibility: visible; left: 0; } .menu { padding: 40px 10px 30px 20px; } .menu-wrapper h3, .menu-wrapper h4 { margin-bottom: 0; font-weight: normal; } .menu-wrapper h4 { font-size: 1.3em; } .menu-wrapper h3 { font-size: 1.4em; } .menu-wrapper h3 + p, .menu-wrapper h4 + p { margin-top: 0.5rem; } .menu a { font-size: smaller; text-decoration: none; } .menu ul { list-style: none; line-height: 1.4; overflow-wrap: break-word; padding-left: 0; } .menu ul ul { margin-left: 20px; list-style: square; } .menu ul li { margin-bottom: 0.5rem; } .language_switcher_placeholder { margin-top: 2rem; } .language_switcher_placeholder select { width: 100%; } .document { position: relative; z-index: 0; } /*Responsive tables*/ .responsive-table__container { width: 100%; overflow-x: auto; } .menu .theme-selector-label { margin-top: .5em; display: flex; width: 100%; } .menu .theme-selector { flex: auto; } } @media (min-width: 1024px) { div.footer { margin-top: -2em; } } /* Version change directives */ :root { --versionadded: var(--good-color); --versionchanged: var(--middle-color); --deprecated: var(--bad-color); --versionadded-border: var(--good-border); --versionchanged-border: var(--middle-border); --deprecated-border: var(--bad-border); } div.versionadded, div.versionchanged, div.deprecated, div.deprecated-removed { border-left: 3px solid; padding: 0 1rem; } div.versionadded { border-left-color: var(--versionadded-border); } div.versionchanged { border-left-color: var(--versionchanged-border); } div.deprecated, div.deprecated-removed, div.versionremoved { border-left-color: var(--deprecated-border); } div.versionadded .versionmodified { color: var(--versionadded); } div.versionchanged .versionmodified { color: var(--versionchanged); } div.deprecated .versionmodified, div.deprecated-removed .versionmodified, div.versionremoved .versionmodified { color: var(--deprecated); } /* Hide header when printing */ @media print { div.mobile-nav { display: none; } } python-docs-theme-2025.9.2/python_docs_theme/static/pydoctheme_dark.css000066400000000000000000000066201506254525300262130ustar00rootroot00000000000000/* Common colours */ :root { --good-color: rgb(79 196 100); --good-border: var(--good-color); --middle-color: rgb(244, 227, 76); --middle-border: var(--middle-color); --bad-color: rgb(244, 76, 78); --bad-border: var(--bad-color); } /* Browser elements */ :root { scrollbar-color: #616161 transparent; color-scheme: dark; } html, body { background-color: #222; color: rgba(255, 255, 255, 0.87); } div.related { color: rgba(255, 255, 255, 0.7); /* classic overwrite */ border-color: #424242; } /* SIDEBAR */ div.sphinxsidebar, .menu-wrapper { background-color: #333; color: inherit; } #sidebarbutton { /* important to overwrite style attribute */ background-color: #555 !important; color: inherit !important; } div.sidebar, aside.sidebar { background-color: #424242; border-color: #616161; } /* ANCHORS AND HIGHLIGHTS */ div.body a { color: #7af; } div.body a:visited { color: #09e; } a.headerlink:hover { background-color: #424242; } div.related a { color: currentColor; } div.footer, div.footer a { color: currentColor; /* classic overwrites */ } dt:target, span.highlighted { background-color: #616161; } .footnote:target { background-color: #2c3e50; } /* Below for most things in text */ dl.field-list > dt { background-color: #434; } table.docutils td, table.docutils th { border-color: #616161 !important; } table.docutils th { background-color: #424242; } .stableabi { color: #bbf; } div.body pre { border-color: #616161; } code { background-color: #424242; } div.body div.seealso { background-color: rgba(255, 255, 0, 0.1); } div.warning { background-color: rgba(255, 0, 0, 0.2); } .warning code { background-color: rgba(255, 0, 0, 0.5); } /* Admonitions */ :root { --admonition-background: #ffffff1a; --admonition-border: currentColor; --admonition-color: #ffffffde; --attention-background: #ffffff1a; --attention-border: currentColor; --caution-background: #ffff001a; --caution-border: #dd6; --danger-background: #f003; --danger-border: #f66; --error-background: #f003; --error-border: #f66; --hint-background: #0044117a; --hint-border: green; --seealso-background: #ffff001a; --seealso-border: #dd6; --tip-background: #0044117a; --tip-border: green; --warning-background: #ff000033; --warning-border: #ff6666; } aside.topic, div.topic, div.note, nav.contents { background-color: rgba(255, 255, 255, 0.1); border-color: currentColor; } .note code { background-color: rgba(255, 255, 255, 0.1); } .mobile-nav { box-shadow: rgba(255, 255, 255, 0.25) 0 0 2px 0; } .nav-content { background-color: black; } img.invert-in-dark-mode { filter: invert(1) hue-rotate(.5turn); } /* -- object description styles --------------------------------------------- */ /* C++ specific styling */ /* Override Sphinx's basic.css to fix colour contrast */ .sig.c .k, .sig.c .kt, .sig.cpp .k, .sig.cpp .kt { color: #5283ff; } /* Version change directives */ :root { --versionadded: var(--good-color); --versionchanged: var(--middle-color); --deprecated: var(--bad-color); } .copybutton { color: #ac9; /* follows div.body pre */ background-color: #222222; /* follows body */ } .copybutton:hover { background-color: #434343; } .copybutton:active { background-color: #656565; } python-docs-theme-2025.9.2/python_docs_theme/static/search-focus.js000066400000000000000000000010571506254525300252560ustar00rootroot00000000000000function isInputFocused() { const activeElement = document.activeElement; return ( activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable ); } document.addEventListener('keydown', function(event) { if (event.key === '/') { if (!isInputFocused()) { // Prevent "/" from being entered in the search box event.preventDefault(); // Set the focus on the search box const searchBox = document.getElementById('search-box'); searchBox.focus(); } } }); python-docs-theme-2025.9.2/python_docs_theme/static/themetoggle.js000066400000000000000000000014131506254525300251740ustar00rootroot00000000000000const pydocthemeDark = document.getElementById('pydoctheme_dark_css') const pygmentsDark = document.getElementById('pygments_dark_css') const themeSelectors = document.getElementsByClassName('theme-selector') function activateTheme(theme) { localStorage.setItem('currentTheme', theme); [...themeSelectors].forEach(e => e.value = theme) switch (theme) { case 'light': pydocthemeDark.media = 'not all' pygmentsDark.media = 'not all' break; case 'dark': pydocthemeDark.media = 'all' pygmentsDark.media = 'all' break; default: // auto pydocthemeDark.media = '(prefers-color-scheme: dark)' pygmentsDark.media = '(prefers-color-scheme: dark)' } } activateTheme(localStorage.getItem('currentTheme') || 'auto') python-docs-theme-2025.9.2/python_docs_theme/theme.toml000066400000000000000000000021631506254525300230450ustar00rootroot00000000000000[theme] inherit = "default" stylesheets = [ "classic.css", "pydoctheme.css", ] pygments_style = { default = "default", dark = "monokai" } [options] bodyfont = "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif" headfont = "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif" footerbgcolor = "white" footertextcolor = "#555555" relbarbgcolor = "white" relbartextcolor = "#666666" relbarlinkcolor = "#444444" sidebarbgcolor = "white" sidebartextcolor = "#444444" sidebarlinkcolor = "#444444" sidebarbtncolor = "#cccccc" bgcolor = "white" textcolor = "#222222" linkcolor = "#0090c0" visitedlinkcolor = "#00608f" headtextcolor = "#1a1a1a" headbgcolor = "white" headlinkcolor = "#aaaaaa" codebgcolor = "#eeffcc" codetextcolor = "#333333" hosted_on = "" issues_url = "" license_url = "" root_name = "Python" root_url = "https://www.python.org/" root_icon = "py.svg" root_icon_alt_text = "Python logo" root_include_title = "True" copyright_url = "" python-docs-theme-2025.9.2/requirements.txt000066400000000000000000000000431506254525300206120ustar00rootroot00000000000000# for babel_runner.py Babel Jinja2