pax_global_header00006660000000000000000000000064147556531250014527gustar00rootroot0000000000000052 comment=23f6936ae956428463f2ec97eebc2fe68bdd344b sphinx-book-theme-1.1.4/000077500000000000000000000000001475565312500150735ustar00rootroot00000000000000sphinx-book-theme-1.1.4/.flake8000066400000000000000000000000571475565312500162500ustar00rootroot00000000000000[flake8] max-line-length = 88 ignore=E203,W503 sphinx-book-theme-1.1.4/.github/000077500000000000000000000000001475565312500164335ustar00rootroot00000000000000sphinx-book-theme-1.1.4/.github/dependabot.yml000066400000000000000000000013151475565312500212630ustar00rootroot00000000000000# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "pip" directory: "/" schedule: interval: "monthly" - package-ecosystem: "npm" directory: "/" schedule: interval: "monthly" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "monthly" groups: actions: patterns: - "*" labels: - "github_actions" sphinx-book-theme-1.1.4/.github/workflows/000077500000000000000000000000001475565312500204705ustar00rootroot00000000000000sphinx-book-theme-1.1.4/.github/workflows/lighthouserc.json000066400000000000000000000007361475565312500240710ustar00rootroot00000000000000{ "ci": { "collect": { "autodiscoverUrlBlocklist": ["index.html"], "staticDistDir": "./docs/_build/html/reference/kitchen-sink", "settings": { "skipAudits": ["canonical"] } }, "assert": { "assertions": { "categories:performance": ["error", { "minScore": 0.8 }], "categories:accessibility": ["error", { "minScore": 0.8 }], "categories:best-practices": ["error", { "minScore": 0.8 }] } } } } sphinx-book-theme-1.1.4/.github/workflows/publish.yml000066400000000000000000000016541475565312500226670ustar00rootroot00000000000000# This will run every time a tag is created and pushed to the repository. # It calls our tests workflow via a `workflow_call`, and if tests pass # then it triggers our upload to PyPI for a new release. name: Publish to PyPI on: release: types: ["published"] jobs: tests: uses: ./.github/workflows/tests.yml publish: name: publish needs: [tests] # require tests to pass before deploy runs runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v4 - name: Set up Python 3.11 uses: actions/setup-python@v5 with: python-version: 3.11 - name: Build package run: | sudo apt-get install gettext python -m pip install -U pip build python -m build - name: Publish uses: pypa/gh-action-pypi-publish@v1.12.2 with: user: __token__ password: ${{ secrets.PYPI_KEY }} sphinx-book-theme-1.1.4/.github/workflows/tests.yml000066400000000000000000000104351475565312500223600ustar00rootroot00000000000000name: continuous-integration on: push: branches: [master] tags: - 'v*' pull_request: workflow_call: env: PY_COLORS: 1 FORCE_COLOR: True jobs: pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.11 - uses: pre-commit/action@v3.0.1 tests: continue-on-error: ${{ matrix.experimental || false }} strategy: fail-fast: false matrix: os: [ubuntu-latest] python-version: ["3.10", "3.11", "3.12.*", "3.13"] # Only test the latest major release of Sphinx because otherwise we need to # keep multiple versions of regression tests on file and this creates lots of # noise in the tests. sphinx: ["~=6.0","~=7.0", "~=8.0"] include: - os: windows-latest # Python 3.12 is broken on windows builds until the following PR is released: # https://github.com/pradyunsg/sphinx-theme-builder/pull/47 python-version: 3.11 # Windows pulling in dependencies fails experimental: true - os: macos-latest python-version: 3.x # Sphinx <8 is 3.9+ - os: ubuntu-latest python-version: "3.9" sphinx: "~=7.0" - os: ubuntu-latest python-version: "3.9" sphinx: "~=6.0" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "pip" cache-dependency-path: "pyproject.toml" - name: Install dependencies with Sphinx ${{ matrix.sphinx }} run: | python -m pip install --upgrade pip python -m pip install --upgrade "sphinx${{matrix.sphinx}}" -e .[test] --pre - name: Run pytest run: > pytest --durations=10 --cov=sphinx_book_theme --cov-report=xml --cov-report=term-missing # Only upload to codecov on pull requests so that we don't trigger rate limit blocks # Disabled for now with false && - name: Upload to Codecov if: false && matrix.os == 'ubuntu-latest' && matrix.python-version == 3.9 && matrix.sphinx == '~=7.0' && github.repository == 'executablebooks/sphinx-book-theme' && github.event_name == 'pull_request' uses: codecov/codecov-action@v5.0.7 with: name: ebp-sbt-pytests-py3.7 flags: pytests file: ./coverage.xml fail_ci_if_error: true # Build the docs and fail if an *unexpected* warning occurs. docs-audit: runs-on: ubuntu-latest name: Build and Audit Documentation steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.9' cache: "pip" cache-dependency-path: "pyproject.toml" - name: Install fonts # This is required until sphinx-opengraph fixes their fallback run: sudo apt-get install -y fonts-roboto - name: Install dependencies run: | python -m pip install --upgrade pip pip install -e .[doc] # Only check for broken links on pull requests so that we don't block releases - name: Check for broken links if: github.event_name == 'pull_request' run: > sphinx-build -b linkcheck docs docs/_build/linkcheck - name: Build documentation to audit run: > sphinx-build -b html docs docs/_build/html -w warnings.txt - name: Check that there are no unexpected warnings shell: python run: | from pathlib import Path import re text = Path("./warnings.txt").read_text().strip() expected_warning_patterns = [r"kitchen\-sink", r"urllib/parse\.py", r"Glyph 10024 .*? missing from current font"] print("\n=== Sphinx Warnings ===\n\n" + text) # Print just for reference so we can look at the logs unexpected = [l for l in text.splitlines() if not any(re.search(p, l) for p in expected_warning_patterns)] assert len(unexpected) == 0, unexpected - name: Audit with Lighthouse uses: treosh/lighthouse-ci-action@12.1.0 with: configPath: ".github/workflows/lighthouserc.json" temporaryPublicStorage: true uploadArtifacts: true runs: 5 sphinx-book-theme-1.1.4/.gitignore000066400000000000000000000036461475565312500170740ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg _build # 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 *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ examples/_build # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # mac OS .DS_Store # nodejs .nodeenv/ node_modules/ # Editors .vscode/ .idea # Files we create automatically docs/content/pydata-content-blocks.md sphinx-book-theme-1.1.4/.pre-commit-config.yaml000066400000000000000000000022151475565312500213540ustar00rootroot00000000000000# Install pre-commit hooks via # pre-commit install exclude: > (?x)^( \.vscode/settings\.json| package-lock\.json| )$ # Fix the node version to avoid a GLIBC error # ref: https://stackoverflow.com/questions/71939099/bitbucket-pipeline-error-installing-pre-commit-ts-lint/71940852#71940852 default_language_version: node: 16.14.2 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - id: check-toml - id: check-json - id: check-yaml - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.8.4 hooks: - id: ruff args: ["--fix", "--show-fixes"] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-prettier rev: v4.0.0-alpha.8 hooks: - id: prettier types_or: [scss, javascript] - repo: https://github.com/codespell-project/codespell rev: v2.3.0 hooks: - id: codespell exclude: > (?x)^( docs/reference/kitchen-sink/.*| src/sphinx_book_theme/assets/.*| tests/.*| pyproject\.toml )$ sphinx-book-theme-1.1.4/.readthedocs.yml000066400000000000000000000003601475565312500201600ustar00rootroot00000000000000version: 2 # Set the OS, Python version and other tools you might need build: os: ubuntu-22.04 tools: python: "3.10" python: install: - method: pip path: ".[doc]" sphinx: builder: html configuration: docs/conf.py sphinx-book-theme-1.1.4/ARCHITECTURE.md000066400000000000000000000125011475565312500172760ustar00rootroot00000000000000# Architecture of the repository This is a short overview of the general architecture and structure of the repository, to help you orient yourself. This theme uses [sphinx-theme-builder](https://sphinx-theme-builder.readthedocs.io/en/latest/) as its build backend, and follows the [filesystem layout](https://sphinx-theme-builder.readthedocs.io/en/latest/filesystem-layout/) recommended by it. See below for some more specific sections ```{contents} ``` ## `src/sphinx_book_theme/` - Theme source files This folder contains all of the source files for this theme, and most changes to the theme are made somewhere inside this folder. `__init__.py` : The theme's Python module, which runs several configuration and set-up steps. This module does things like load in Sphinx's default HTML for the sidebar, and modify it in order to have dropdown nested lists. It also inserts several variables into the Jinja template context that are then used in our HTML templates. `header_buttons/` : Scripts to generate metadata for buttons in the header. We use [Jinja Macros](https://jinja.palletsprojects.com/en/3.0.x/templates/) (in the `macros/` folder) to generate the HTML for header buttons. The scripts in `header_buttons/` generate the data structure that is used to generate buttons with these macros (in the `header-article.html` template). `header_buttons/launch.py` : Logic to create the correct URLs for our launch buttons. This basically means building the URL for a given launch service in a proper fashion. The other folders in this section are described in the next few sections. ### `/theme/sphinx_book_theme/` - HTML templates This is the actual theme source that is packaged and distributed via PyPI. It contains HTML templates that make up the theme structure. These follow the [`sphinx-basic-ng` template structure](https://sphinx-basic-ng.readthedocs.io/en/latest). - `layout.html` inherits from the [pydata sphinx theme](https://pydata-sphinx-theme.readthedocs.io/) and modifies several sections. - `theme.conf` contains the Sphinx configuration file for this theme. - `macros/` contains HTML templates that define Jinja macros - `sections/` contains HTML templates for major sections of the page. - `components/` contains HTML templates for smaller, self-contained parts of the page. ### `/assets/scripts` - JavaScript assets Contains JavaScript files for this theme. They are automatically compiled and inserted into the theme when new releases are made (or, via the command `stb compile`). They are **not checked in to `git` history**. ### `/assets/styles` - SCSS assets Contains SCSS files for this theme. These are compiled and bundled with the theme at build time. See the [Style and Design section](contributing/style) for more information. ### `/translations/` - Translations and internationalization This folder contains all of the translations that we use in this theme, so that it may be used in many different base languages. For more information about our translation infrastructure, see `/translations/README.md`. ## `docs/` - Site documentation The documentation for the theme, written as a Sphinx documentation site. The documentation tries to follow [the Diataxis.fr documentation framework](https://diataxis.fr/). Here is a brief overview: - `docs/*.md`: Contains several topic sections for the documentation (e.g. `content-blocks.md` covers special content blocks for this theme) - `docs/tutorials/`: Step-by-step tutorials that cover how to do a particular thing from beginning to end. - `docs/reference/`: Reference sections of the documentation, to demonstrate the look and feel of the theme. The "kitchen sink" is pulled directly [from the `sphinx-themes` website](https://github.com/sphinx-themes/sphinx-themes.org/tree/master/sample-docs/kitchen-sink). There are also other sections for theme-specific elements. ## `webpack.config.js` and `package.json` - Webpack and dependencies `webpack.config.js` contains the compilation code to convert source files like SCSS and JS in `src/sphinx_book_theme/assets/*` into the production assets in `src/sphinx_book_theme/theme/sphinx_book_theme/static/` . This compilation is called by default, during development commands (see below). ## `tests/` - Testing infrastructure Testing infrastructure that uses `pytest` along with `beautifulsoup` to validate that the generated HTML is what we expect it to be. Much of these tests also use `pytest-regressions`, to check whether newly-generated HTML differs from previously-generated HTML. ## `.github/workflows/` - Continuous Integration and Deployment Contains Continuous-integration (CI) workflows, run on commits/PRs to the GitHub repository. ## Parent theme - `pydata-sphinx-theme` This theme inherits a lot of functionality and design rules from its parent theme, the [PyData Sphinx Theme](https://github.com/pydata/pydata-sphinx-theme). This is a theme designed for the PyData community, with a similar look and feel to the book theme. Over time, we try to upstream any improvements made here into the parent theme, as long as the look and feel is the same between the two. If you come across something in the codebase and you're not sure where it comes from (an example is the `generate_nav_html` function), you should [check the PyData Theme source files](https://github.com/pydata/pydata-sphinx-theme/tree/master/src/pydata_sphinx_theme) to see if it is defined there. sphinx-book-theme-1.1.4/CHANGELOG.md000066400000000000000000001320471475565312500167130ustar00rootroot00000000000000# Changelog ## v1.1.2 -- 2024-02-13 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.1...3da24da74f6042599fe6c9e2d612f5cbdef42280)) ### Enhancements made - ENH: bump version [#818](https://github.com/executablebooks/sphinx-book-theme/pull/818) ([@agoose77](https://github.com/agoose77)) ### Bugs fixed - FIX: correct event-handler signature [#817](https://github.com/executablebooks/sphinx-book-theme/pull/817) ([@agoose77](https://github.com/agoose77)) ### Contributors to this release ([GitHub contributors page for this release](https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2024-02-13&to=2024-02-13&type=c)) [@agoose77](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2024-02-13..2024-02-13&type=Issues) ## v1.1.1 -- 2024-02-13 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v1.1.0...9335ab99b0bc77b826cb2c5afcef3432f14e8780)) ### Enhancements made - ENH: bump version for 1.1.1 [#815](https://github.com/executablebooks/sphinx-book-theme/pull/815) ([@agoose77](https://github.com/agoose77)) ### Bugs fixed - FIX: use `config-inited` event to register config [#814](https://github.com/executablebooks/sphinx-book-theme/pull/814) ([@agoose77](https://github.com/agoose77)) ### Other merged PRs - Build(deps): Bump actions/setup-python from 4 to 5 [#803](https://github.com/executablebooks/sphinx-book-theme/pull/803) ([@dependabot](https://github.com/dependabot)) - [pre-commit.ci] pre-commit autoupdate [#801](https://github.com/executablebooks/sphinx-book-theme/pull/801) ([@pre-commit-ci](https://github.com/pre-commit-ci)) ### Contributors to this release ([GitHub contributors page for this release](https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2023-12-19&to=2024-02-13&type=c)) [@agoose77](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2023-12-19..2024-02-13&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Acholdgraf+updated%3A2023-12-19..2024-02-13&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Adependabot+updated%3A2023-12-19..2024-02-13&type=Issues) | [@ghisvail](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aghisvail+updated%3A2023-12-19..2024-02-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apre-commit-ci+updated%3A2023-12-19..2024-02-13&type=Issues) | [@welcome](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Awelcome+updated%3A2023-12-19..2024-02-13&type=Issues) ## v1.1.0 -- 2023-12-19 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v1.0.1...v1.1.0)) ### Enhancements made - ENH: prepare for 1.1.0rc2 [#793](https://github.com/executablebooks/sphinx-book-theme/pull/793) ([@agoose77](https://github.com/agoose77)) - ENH: Add search field back to sidebar [#775](https://github.com/executablebooks/sphinx-book-theme/pull/775) ([@choldgraf](https://github.com/choldgraf)) - ENH: Update Swedish translations [#724](https://github.com/executablebooks/sphinx-book-theme/pull/724) ([@Kladdy](https://github.com/Kladdy)) ### Bugs fixed - FIX: don't include `_static` in css_files [#794](https://github.com/executablebooks/sphinx-book-theme/pull/794) ([@agoose77](https://github.com/agoose77)) - FIX: properly handle CSS objects in css_files [#791](https://github.com/executablebooks/sphinx-book-theme/pull/791) ([@agoose77](https://github.com/agoose77)) - FIX: builds on Windows and docs errors [#784](https://github.com/executablebooks/sphinx-book-theme/pull/784) ([@choldgraf](https://github.com/choldgraf)) - FIX: Correctly disappear search button icon on wide screens [#781](https://github.com/executablebooks/sphinx-book-theme/pull/781) ([@choldgraf](https://github.com/choldgraf)) - FIX: set bd-docs-nav as a class attribute instead of an id to restore compat with pydata-sphinx-theme JS [#754](https://github.com/executablebooks/sphinx-book-theme/pull/754) ([@ogrisel](https://github.com/ogrisel)) - FIX: typos in navbar documentation [#707](https://github.com/executablebooks/sphinx-book-theme/pull/707) ([@CalMacCQ](https://github.com/CalMacCQ)) ### Maintenance and upkeep improvements - MAINT: use codespell in pre-commit [#788](https://github.com/executablebooks/sphinx-book-theme/pull/788) ([@agoose77](https://github.com/agoose77)) - MAINT: use ruff instead of black [#776](https://github.com/executablebooks/sphinx-book-theme/pull/776) ([@agoose77](https://github.com/agoose77)) - MAINT: Fix tests with updated upstream [#766](https://github.com/executablebooks/sphinx-book-theme/pull/766) ([@choldgraf](https://github.com/choldgraf)) ### Documentation improvements - DOCS: update CHANGELOG for deprecation [#790](https://github.com/executablebooks/sphinx-book-theme/pull/790) ([@agoose77](https://github.com/agoose77)) - DOCS: use `datetime` as kitchen-sink API module [#787](https://github.com/executablebooks/sphinx-book-theme/pull/787) ([@agoose77](https://github.com/agoose77)) - DOCS: Update required minimum Python version to 3.9 in docs [#767](https://github.com/executablebooks/sphinx-book-theme/pull/767) ([@stevepiercy](https://github.com/stevepiercy)) - DOCS: Typo correction [#730](https://github.com/executablebooks/sphinx-book-theme/pull/730) ([@Alex-JG3](https://github.com/Alex-JG3)) ### Other merged PRs - [pre-commit.ci] pre-commit autoupdate [#789](https://github.com/executablebooks/sphinx-book-theme/pull/789) ([@pre-commit-ci](https://github.com/pre-commit-ci)) - Build(deps): Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 [#785](https://github.com/executablebooks/sphinx-book-theme/pull/785) ([@dependabot](https://github.com/dependabot)) - [pre-commit.ci] pre-commit autoupdate [#783](https://github.com/executablebooks/sphinx-book-theme/pull/783) ([@pre-commit-ci](https://github.com/pre-commit-ci)) - RLS: v1.1.0rc1 [#780](https://github.com/executablebooks/sphinx-book-theme/pull/780) ([@choldgraf](https://github.com/choldgraf)) - [pre-commit.ci] pre-commit autoupdate [#779](https://github.com/executablebooks/sphinx-book-theme/pull/779) ([@pre-commit-ci](https://github.com/pre-commit-ci)) - Update style.md [#774](https://github.com/executablebooks/sphinx-book-theme/pull/774) ([@callezenwaka](https://github.com/callezenwaka)) - Update launch.md [#773](https://github.com/executablebooks/sphinx-book-theme/pull/773) ([@callezenwaka](https://github.com/callezenwaka)) - [pre-commit.ci] pre-commit autoupdate [#772](https://github.com/executablebooks/sphinx-book-theme/pull/772) ([@pre-commit-ci](https://github.com/pre-commit-ci)) - Make article width take up whole page in absence of secondary sidebar [#771](https://github.com/executablebooks/sphinx-book-theme/pull/771) ([@flying-sheep](https://github.com/flying-sheep)) - Build(deps): Bump actions/checkout from 3 to 4 [#764](https://github.com/executablebooks/sphinx-book-theme/pull/764) ([@dependabot](https://github.com/dependabot)) - Update footer.md [#756](https://github.com/executablebooks/sphinx-book-theme/pull/756) ([@Sdaher21](https://github.com/Sdaher21)) - Build(deps): Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.10 [#755](https://github.com/executablebooks/sphinx-book-theme/pull/755) ([@dependabot](https://github.com/dependabot)) - [pre-commit.ci] pre-commit autoupdate [#748](https://github.com/executablebooks/sphinx-book-theme/pull/748) ([@pre-commit-ci](https://github.com/pre-commit-ci)) - Build(deps): Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.7 [#747](https://github.com/executablebooks/sphinx-book-theme/pull/747) ([@dependabot](https://github.com/dependabot)) - Sphinx 7 support [#744](https://github.com/executablebooks/sphinx-book-theme/pull/744) ([@LecrisUT](https://github.com/LecrisUT)) - update python requirements according to NEP 29 [#741](https://github.com/executablebooks/sphinx-book-theme/pull/741) ([@akhmerov](https://github.com/akhmerov)) - add support for gitlab issue button [#740](https://github.com/executablebooks/sphinx-book-theme/pull/740) ([@akhmerov](https://github.com/akhmerov)) - Build(deps): Bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.6 [#739](https://github.com/executablebooks/sphinx-book-theme/pull/739) ([@dependabot](https://github.com/dependabot)) - Build(deps): Bump codecov/codecov-action from 3.1.1 to 3.1.4 [#738](https://github.com/executablebooks/sphinx-book-theme/pull/738) ([@dependabot](https://github.com/dependabot)) - Build(deps): Bump treosh/lighthouse-ci-action from 9.3.1 to 10.1.0 [#725](https://github.com/executablebooks/sphinx-book-theme/pull/725) ([@dependabot](https://github.com/dependabot)) - Build(deps): Bump treosh/lighthouse-ci-action from 9.3.1 to 9.6.8 [#718](https://github.com/executablebooks/sphinx-book-theme/pull/718) ([@dependabot](https://github.com/dependabot)) - Build(deps): Bump pypa/gh-action-pypi-publish from 1.6.4 to 1.8.4 [#717](https://github.com/executablebooks/sphinx-book-theme/pull/717) ([@dependabot](https://github.com/dependabot)) - RLS: v1.0.1 [#716](https://github.com/executablebooks/sphinx-book-theme/pull/716) ([@AakashGfude](https://github.com/AakashGfude)) - [pre-commit.ci] pre-commit autoupdate [#705](https://github.com/executablebooks/sphinx-book-theme/pull/705) ([@pre-commit-ci](https://github.com/pre-commit-ci)) - [ENH, DOC] Allow setting the `navbar_max_depth` and `collapse_navbar` [#605](https://github.com/executablebooks/sphinx-book-theme/pull/605) ([@gilbertbw](https://github.com/gilbertbw)) ### Contributors to this release ([GitHub contributors page for this release](https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2023-03-31&to=2023-12-19&type=c)) [@AakashGfude](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AAakashGfude+updated%3A2023-03-31..2023-12-19&type=Issues) | [@adam-grant-hendry](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aadam-grant-hendry+updated%3A2023-03-31..2023-12-19&type=Issues) | [@agoose77](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aagoose77+updated%3A2023-03-31..2023-12-19&type=Issues) | [@akhmerov](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aakhmerov+updated%3A2023-03-31..2023-12-19&type=Issues) | [@Alex-JG3](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AAlex-JG3+updated%3A2023-03-31..2023-12-19&type=Issues) | [@avivajpeyi](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aavivajpeyi+updated%3A2023-03-31..2023-12-19&type=Issues) | [@bradbell](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Abradbell+updated%3A2023-03-31..2023-12-19&type=Issues) | [@callezenwaka](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Acallezenwaka+updated%3A2023-03-31..2023-12-19&type=Issues) | [@CalMacCQ](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3ACalMacCQ+updated%3A2023-03-31..2023-12-19&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Acholdgraf+updated%3A2023-03-31..2023-12-19&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Adependabot+updated%3A2023-03-31..2023-12-19&type=Issues) | [@Eutropios](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AEutropios+updated%3A2023-03-31..2023-12-19&type=Issues) | [@flying-sheep](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aflying-sheep+updated%3A2023-03-31..2023-12-19&type=Issues) | [@gilbertbw](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Agilbertbw+updated%3A2023-03-31..2023-12-19&type=Issues) | [@Gouvernathor](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AGouvernathor+updated%3A2023-03-31..2023-12-19&type=Issues) | [@jackshiwl](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ajackshiwl+updated%3A2023-03-31..2023-12-19&type=Issues) | [@jayaddison](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ajayaddison+updated%3A2023-03-31..2023-12-19&type=Issues) | [@Kladdy](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AKladdy+updated%3A2023-03-31..2023-12-19&type=Issues) | [@LecrisUT](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3ALecrisUT+updated%3A2023-03-31..2023-12-19&type=Issues) | [@Maetveis](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AMaetveis+updated%3A2023-03-31..2023-12-19&type=Issues) | [@ogrisel](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aogrisel+updated%3A2023-03-31..2023-12-19&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apre-commit-ci+updated%3A2023-03-31..2023-12-19&type=Issues) | [@Sdaher21](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3ASdaher21+updated%3A2023-03-31..2023-12-19&type=Issues) | [@stevepiercy](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Astevepiercy+updated%3A2023-03-31..2023-12-19&type=Issues) | [@welcome](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Awelcome+updated%3A2023-03-31..2023-12-19&type=Issues) ## v1.0.1 -- 2023-03-31 This is a minor release supporting pydata>=0.13.3, with a few import changes from pydata. ## v1.0.0 -- 2023-03-01 This is a major release that brings in the latest PyData Sphinx Theme and a number of new features with it. It also overhauls and standardizes the HTML structure of the theme. Because of this large refactor, we are bumping the major version to `1.0`. Note that this doesn't imply any new long-term support or stability, we will continue to try not to make major breaking changes but will continue incrementing major versions if we must do so. ### Enhancements made - PyData Sphinx Theme `v0.13`. See [the PyData Sphinx Theme `v0.13` release notes](https://github.com/pydata/pydata-sphinx-theme/releases/tag/v0.13.0) for details. - Icon links, more source providers, and bug fixes [#691](https://github.com/executablebooks/sphinx-book-theme/pull/691) ([@choldgraf](https://github.com/choldgraf), [@mmcky](https://github.com/mmcky)) - **We now support GitHub, GitLab, and BitBucket source providers**. - **You can now include lists of icon links in your primary sidebar**. - Allowing inline elements in sidenotes and marginnotes [#641](https://github.com/executablebooks/sphinx-book-theme/pull/641) ([@AakashGfude](https://github.com/AakashGfude)) - Improve Chinese (Taiwan) and Chinese (China) translation [#585](https://github.com/executablebooks/sphinx-book-theme/pull/585) ([@whyjz](https://github.com/whyjz)) - sphinx >=4,<6 [#644](https://github.com/executablebooks/sphinx-book-theme/pull/644) ([@AakashGfude](https://github.com/AakashGfude)) ### Bugs fixed - FIX: Scroll padding on top for anchor links [#669](https://github.com/executablebooks/sphinx-book-theme/pull/669) ([@choldgraf](https://github.com/choldgraf)) - πŸ› FIX: Correcting a broken link in CHANGELOG.md [#623](https://github.com/executablebooks/sphinx-book-theme/pull/623) ([@AakashGfude](https://github.com/AakashGfude)) - FIX: Scroll to active navigation item [#609](https://github.com/executablebooks/sphinx-book-theme/pull/609) ([@ksuess](https://github.com/ksuess)) - [FIX] Use logo url as is to allow for web urls. [#661](https://github.com/executablebooks/sphinx-book-theme/pull/661) ([@feanil](https://github.com/feanil)) ### Maintenance and upkeep improvements - MAINT: Update pre-commit versions and fix minor bugs in tests [#660](https://github.com/executablebooks/sphinx-book-theme/pull/660) ([@choldgraf](https://github.com/choldgraf)) - MAINT: Move dependabot updates to monthly [#658](https://github.com/executablebooks/sphinx-book-theme/pull/658) ([@choldgraf](https://github.com/choldgraf)) - MAINT: Factor publish to pypi workflow into dedicated file [#645](https://github.com/executablebooks/sphinx-book-theme/pull/645) ([@choldgraf](https://github.com/choldgraf)) - MAINT: Remove duplication with pydata-sphinx-theme [#640](https://github.com/executablebooks/sphinx-book-theme/pull/640) ([@choldgraf](https://github.com/choldgraf)) - MAINT: remove incorrect comment from sphinx pin. [#588](https://github.com/executablebooks/sphinx-book-theme/pull/588) ([@rossbar](https://github.com/rossbar)) - IntersectionObserver at 1/3 screen [#567](https://github.com/executablebooks/sphinx-book-theme/pull/567) ([@choldgraf](https://github.com/choldgraf)) ### Documentation improvements - DOCS: Minor typo correction [#649](https://github.com/executablebooks/sphinx-book-theme/pull/649) ([@bmorris3](https://github.com/bmorris3)) - DOC: Update kitchen sink [#610](https://github.com/executablebooks/sphinx-book-theme/pull/610) ([@choldgraf](https://github.com/choldgraf)) ### Breaking changes to structure and API - UPGRADE/BREAKING: PyData v0.13 and HTML refactoring [#677](https://github.com/executablebooks/sphinx-book-theme/pull/677) ([@choldgraf](https://github.com/choldgraf)) - Remove JQuery and update versions [#668](https://github.com/executablebooks/sphinx-book-theme/pull/668) ([@choldgraf](https://github.com/choldgraf)) ### Tips for migration **Long sidebar entries now wrap**. If you'd like to un-do this and revert to old behavior (where they are cut off if too long), then use the following CSS rule in your custom Sphinx CSS: ```css .bd-sidebar-primary a { word-wrap: unset; } ``` **`single_page` is deprecated**. If you'd like to restore the old behavior (hiding sidebars), then use the following configuration in your `conf.py`: ```python html_sidebars = { "**": [] } ``` ### Contributors to this release ([GitHub contributors page for this release](https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2022-07-17&to=2023-02-19&type=c)) @12rambau ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3A12rambau+updated%3A2022-07-17..2023-03-01&type=Issues)) | @AakashGfude ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AAakashGfude+updated%3A2022-07-17..2023-03-01&type=Issues)) | @akhmerov ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aakhmerov+updated%3A2022-07-17..2023-03-01&type=Issues)) | @AllenDowney ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AAllenDowney+updated%3A2022-07-17..2023-03-01&type=Issues)) | @avivajpeyi ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aavivajpeyi+updated%3A2022-07-17..2023-03-01&type=Issues)) | @bmorris3 ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Abmorris3+updated%3A2022-07-17..2023-03-01&type=Issues)) | @choldgraf ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Acholdgraf+updated%3A2022-07-17..2023-03-01&type=Issues)) | @chrisjsewell ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Achrisjsewell+updated%3A2022-07-17..2023-03-01&type=Issues)) | @consideRatio ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AconsideRatio+updated%3A2022-07-17..2023-03-01&type=Issues)) | @dependabot ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Adependabot+updated%3A2022-07-17..2023-03-01&type=Issues)) | @feanil ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Afeanil+updated%3A2022-07-17..2023-03-01&type=Issues)) | @fm75 ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Afm75+updated%3A2022-07-17..2023-03-01&type=Issues)) | @ghutchis ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aghutchis+updated%3A2022-07-17..2023-03-01&type=Issues)) | @guillaume-haerinck ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aguillaume-haerinck+updated%3A2022-07-17..2023-03-01&type=Issues)) | @haklc ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ahaklc+updated%3A2022-07-17..2023-03-01&type=Issues)) | @iasbusi ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aiasbusi+updated%3A2022-07-17..2023-03-01&type=Issues)) | @ivirshup ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aivirshup+updated%3A2022-07-17..2023-03-01&type=Issues)) | @James11222 ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AJames11222+updated%3A2022-07-17..2023-03-01&type=Issues)) | @kloczek ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Akloczek+updated%3A2022-07-17..2023-03-01&type=Issues)) | @ksuess ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Aksuess+updated%3A2022-07-17..2023-03-01&type=Issues)) | @martinfleis ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Amartinfleis+updated%3A2022-07-17..2023-03-01&type=Issues)) | @mathbunnyru ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Amathbunnyru+updated%3A2022-07-17..2023-03-01&type=Issues)) | @mcjulian1107 ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Amcjulian1107+updated%3A2022-07-17..2023-03-01&type=Issues)) | @melund ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Amelund+updated%3A2022-07-17..2023-03-01&type=Issues)) | @mmcky ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ammcky+updated%3A2022-07-17..2023-03-01&type=Issues)) | @paugier ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apaugier+updated%3A2022-07-17..2023-03-01&type=Issues)) | @PhilipVinc ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3APhilipVinc+updated%3A2022-07-17..2023-03-01&type=Issues)) | @pradyunsg ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apradyunsg+updated%3A2022-07-17..2023-03-01&type=Issues)) | @pre-commit-ci ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apre-commit-ci+updated%3A2022-07-17..2023-03-01&type=Issues)) | @rkdarst ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Arkdarst+updated%3A2022-07-17..2023-03-01&type=Issues)) | @rossbar ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Arossbar+updated%3A2022-07-17..2023-03-01&type=Issues)) | @scmmmh ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ascmmmh+updated%3A2022-07-17..2023-03-01&type=Issues)) | @sieler ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Asieler+updated%3A2022-07-17..2023-03-01&type=Issues)) | @SilverRainZ ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3ASilverRainZ+updated%3A2022-07-17..2023-03-01&type=Issues)) | @stevepiercy ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Astevepiercy+updated%3A2022-07-17..2023-03-01&type=Issues)) | @trallard ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Atrallard+updated%3A2022-07-17..2023-03-01&type=Issues)) | @whyjz ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Awhyjz+updated%3A2022-07-17..2023-03-01&type=Issues)) | @yuvipanda ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ayuvipanda+updated%3A2022-07-17..2023-03-01&type=Issues)) | @ZedThree ([activity](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AZedThree+updated%3A2022-07-17..2023-03-01&type=Issues)) ## v0.3.3 -- 2022-07-17 ### Fixes: - Style edits for last-child zero-margin on dd's [#586](https://github.com/executablebooks/sphinx-book-theme/pull/586) ([@benjaoming](https://github.com/benjaoming)) - Escape colon in JupyterHub link to repo [#556](https://github.com/executablebooks/sphinx-book-theme/pull/556) ([@matthew-brett](https://github.com/matthew-brett)) - Myst-nb pinning to 0.13.2 [#560](https://github.com/executablebooks/sphinx-book-theme/pull/560) ([@choldgraf](https://github.com/choldgraf)) - Stylizing ReadTheDocs in `_readthedocs.scss` as per guidelines [#579](https://github.com/executablebooks/sphinx-book-theme/pull/579) ([@pradyunsg](https://github.com/pradyunsg)) - `templates_path` in config was overriding any value append to `templates_path` in this package. [#566](https://github.com/executablebooks/sphinx-book-theme/pull/566) ([@AakashGfude](https://github.com/AakashGfude)) ### Enhancements made: - Added sidenote and marginnote using footnote syntax [#546](https://github.com/executablebooks/sphinx-book-theme/pull/546) ([@AakashGfude](https://github.com/AakashGfude)) ### Docs: - Added Docs for sphinx-examples [#550](https://github.com/executablebooks/sphinx-book-theme/pull/550) ([@choldgraf](https://github.com/choldgraf)) - Lychee link fixes [#553](https://github.com/executablebooks/sphinx-book-theme/pull/553) ([@choldgraf](https://github.com/choldgraf)) - Beta and lychee link fix [#552](https://github.com/executablebooks/sphinx-book-theme/pull/552) ([@choldgraf](https://github.com/choldgraf)) ## v0.3.2 -- 2022-03-28 Two patch releases fixed two bugs for figure content in the margin. ## v0.3.0 - 2022-03-25 This is a significant change in the HTML and CSS of the site, with the goal of making it more standardized and robust. There are several design tweaks that have been made. Here is a short overview: - The sidebars are now a slightly smaller font, with more padding, to give more attention to the page's content. - The HTML structure of the site has been re-worked to make `sticky` and other CSS behaviors more dependable. - The header buttons are now standardized and have an updated look and feel. - The in-page margin CSS is now more reliable - Improvements to scrollbar style throughout the site See the PRs below for where most of these changes occurred. ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.2.0...d9c1abc4197445faab7892291520de448f363274)) ### Enhancements made - ‼️ REFACTOR: HTML and CSS restructuring [#472](https://github.com/executablebooks/sphinx-book-theme/pull/472) ([@choldgraf](https://github.com/choldgraf)) - ENH: Standardize scrollbar behavior [#481](https://github.com/executablebooks/sphinx-book-theme/pull/481) ([@choldgraf](https://github.com/choldgraf)) - ENH: Standardize header buttons [#490](https://github.com/executablebooks/sphinx-book-theme/pull/490) ([@choldgraf](https://github.com/choldgraf)) - ENH: Updating search page style [#491](https://github.com/executablebooks/sphinx-book-theme/pull/491) ([@choldgraf](https://github.com/choldgraf)) - ENH: Add CSS for comments libraries [#524](https://github.com/executablebooks/sphinx-book-theme/pull/524) ([@choldgraf](https://github.com/choldgraf)) - ENH: Add support for ReadTheDocs popup [#518](https://github.com/executablebooks/sphinx-book-theme/pull/518) ([@choldgraf](https://github.com/choldgraf)) - STYLE: Search color highlighting in-line with Jupyter orange [#532](https://github.com/executablebooks/sphinx-book-theme/pull/532) ([@choldgraf](https://github.com/choldgraf)) ### ‼️ Breaking changes This release modifies the HTML structure of some of the major theme sections (in particular, the sidebar and top-bar). If you had custom CSS or JavaScript that assumed a particular HTML structure, double-check that it still behaves the same way, as you may need to adjust things for the new structure. ## v0.1.10...v0.2.0 This release includes a few under-the-hood and performance improvements to the CSS and HTML of the theme. While there are no major new features, some of these changes have restructured the HTML so double-check your documentation, especially if you had custom CSS rules the sidebar. Here are a few improvements: - The right Table of Contents is now hidden using the [Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) which will reduce the number of JavaScript calls and improve reliability of this feature. [#448](https://github.com/executablebooks/sphinx-book-theme/pull/448) ([@choldgraf](https://github.com/choldgraf)) - The left sidebar is now toggle-able **only with CSS**, which should make it less prone to failure due to other conflicting javascript on the page. It now includes a "sidebar drawer" on mobile that gives more vertical space for the sidebar. [#454](https://github.com/executablebooks/sphinx-book-theme/pull/454) ([@choldgraf](https://github.com/choldgraf)) - You can now add Deepnote buttons for notebook launch buttons [#385](https://github.com/executablebooks/sphinx-book-theme/pull/385) ([@jakubzitny](https://github.com/jakubzitny)) ## v0.1.9 .. v0.1.10 Maintenance release, to remove the unused `click` dependency. ## v0.1.8 .. v0.1.9 This is a minor release to fix a bug that was introduced which broke the right sidebar anchor links. ## v0.1.7 .. v0.1.8 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.7...862632b892f6acd640aa080eb1f50ac6d3de7bc3)) This is a minor release that makes a few bugfixes and small enhancements. - Printing to PDF from HTML is now formatted more elegantly [#438](https://github.com/executablebooks/sphinx-book-theme/pull/438) ([@AakashGfude](https://github.com/AakashGfude)) - Minor stylistic bugfixes across the theme CSS ## v0.1.6 .. v0.1.7 **Full Changelog**: https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.6...v0.1.7 ### Summary This release primarily updates the pydata theme to bring in a few new theme features and bug-fixes. ### What's Changed * UPDATE: pydata sphinx theme v0.7.2 by @ocefpaf in https://github.com/executablebooks/sphinx-book-theme/pull/406 * UPDATE: pydata-sphinx-theme 0.7.2 by @kousu in https://github.com/executablebooks/sphinx-book-theme/pull/429 * IMPROVE: translation in the footer for Japanese language by @KengoTODA in https://github.com/executablebooks/sphinx-book-theme/pull/426 ## v0.1.5...v0.1.6 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.5...1515334eec40575b0a80c51ce78453ced2ff2484)) ### Enhancements made - Add pst prefix to variables [#413](https://github.com/executablebooks/sphinx-book-theme/pull/413) ([@choldgraf](https://github.com/choldgraf)) - Note TOC level auto-show [#410](https://github.com/executablebooks/sphinx-book-theme/pull/410) ([@choldgraf](https://github.com/choldgraf)) - Add note of margin CSS classes [#405](https://github.com/executablebooks/sphinx-book-theme/pull/405) ([@choldgraf](https://github.com/choldgraf)) ## v0.1.5 - 2021-09-23 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.4...c85925c0109a1038994947acb951d1d918a819f8)) ### Enhancements made - Move CSS hash to GET parameter so downstream themes can bust CSS properly [#397](https://github.com/executablebooks/sphinx-book-theme/pull/397) ([@jacobtomlinson](https://github.com/jacobtomlinson)) ## v0.1.4 - 2021-09-16 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.3...28358bbc0dc2f1e6e9fff0ac64321685c9edfc00)) ### Enhancements made - ⬆️ UPGRADE: Sphinx v4.0.0 [#364](https://github.com/executablebooks/sphinx-book-theme/pull/364) ([@choldgraf](https://github.com/choldgraf)) - ✨ IMPROVE: Harmonize themes between static and live code [#393](https://github.com/executablebooks/sphinx-book-theme/pull/393) ([@patrickmineault](https://github.com/patrickmineault)) - ✨ IMPROVE: Minor tweaks to footer css [#389](https://github.com/executablebooks/sphinx-book-theme/pull/389) ([@choldgraf](https://github.com/choldgraf)) ## v0.1.3 - 2021-08-25 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.2...9a2da30342ace86978ddbd345eb69f5b4479b31c)) ### Enhancements made - ✨ IMPROVE: Add chevrons to prev/next [#386](https://github.com/executablebooks/sphinx-book-theme/pull/386) ([@choldgraf](https://github.com/choldgraf)) - ✨ IMPROVE: Improving accessibility labeling [#375](https://github.com/executablebooks/sphinx-book-theme/pull/375) ([@choldgraf](https://github.com/choldgraf)) - ✨ IMPROVE: improve math styling [#369](https://github.com/executablebooks/sphinx-book-theme/pull/369) ([@akhmerov](https://github.com/akhmerov)) ### Bugs fixed - πŸ› FIX: Fix translation for prev/next [#384](https://github.com/executablebooks/sphinx-book-theme/pull/384) ([@choldgraf](https://github.com/choldgraf)) ## v0.1.1...v0.1.2 - 2021-08-06 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.1...v0.1.2)) * πŸ”§ MAINT: Reduce `full-width` from 136% to 134% [#357](https://github.com/executablebooks/sphinx-book-theme/pull/357): This avoid clipping full-width content on certain resolutions * πŸ› FIX: Dropdown menus on mobile [#367](https://github.com/executablebooks/sphinx-book-theme/pull/367): Menus are translated left, so that they are not clipped on small screens ## v0.1.0...v0.1.1 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.1.0...e05def5b9a4fc777f702553a0bcaf7939440dbd3)) ### New features added * Add logo_only theme option [#349](https://github.com/executablebooks/sphinx-book-theme/pull/349) ([@djangoliv](https://github.com/djangoliv)) ### Enhancements made * Add css to highlight searched for phrases [#350](https://github.com/executablebooks/sphinx-book-theme/pull/350) ([@sanjayankur31](https://github.com/sanjayankur31)) * Add logo_only theme option [#349](https://github.com/executablebooks/sphinx-book-theme/pull/349) ([@djangoliv](https://github.com/djangoliv)) * Soften edges in admonitions and remove some ink [#352](https://github.com/executablebooks/sphinx-book-theme/pull/352) ([@choldgraf](https://github.com/choldgraf)) ### Bugs fixed * πŸ› FIX: Path to custom output directory for _sources [#346](https://github.com/executablebooks/sphinx-book-theme/pull/346) ([@dfm](https://github.com/dfm)) * πŸ› FIX: Fixing sidebar animation [#333](https://github.com/executablebooks/sphinx-book-theme/pull/333) ([@choldgraf](https://github.com/choldgraf)) ## v0.0.42...v0.1.0 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.0.42...6320ef6347a77eb91ed67c472b2336fd66d75724)) This updates to the latest PyData Sphinx Theme, which re-works some of the HTML structure (thus, the minor version bump). It also includes some minor fixes to the scrolling and TOC behavior. ### Enhancements made - ✨ ENH: Adding fullscreen button optional [#328](https://github.com/executablebooks/sphinx-book-theme/pull/328) ([@choldgraf](https://github.com/choldgraf)) ### Bugs fixed - πŸ› FIX: Fixing sidebar scroll [#311](https://github.com/executablebooks/sphinx-book-theme/pull/311) ([@choldgraf](https://github.com/choldgraf)) ### API and Breaking Changes - ⬆ UPGRADE: Pydata Sphinx Theme v0.6.0 [#324](https://github.com/executablebooks/sphinx-book-theme/pull/324) ([@choldgraf](https://github.com/choldgraf)) ### Deprecated features - DEPRECATE: Removing opengraph functionality [#316](https://github.com/executablebooks/sphinx-book-theme/pull/316) ([@choldgraf](https://github.com/choldgraf)) ## v0.0.42 2021-03-13 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.0.41...458fe679ff482a623ec2dd6b13bdd19232069c50)) ### Bugs fixed - πŸ› FIX: hover target bug on right TOC [#300](https://github.com/executablebooks/sphinx-book-theme/pull/300) ([@DrDrij](https://github.com/DrDrij)) ## v0.0.41 2021-03-09 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.0.40...3d9189d889a9be4096ca57859dadf8e11f246a4a)) ### Enhancements made - The Table of Contents titles is now configurable. See [#299](https://github.com/executablebooks/sphinx-book-theme/pull/299) ([@AakashGfude](https://github.com/AakashGfude)) - The left sidebar has a drawer-style layout on mobile. See [#298](https://github.com/executablebooks/sphinx-book-theme/pull/298) ([@DrDrij](https://github.com/DrDrij)) ## v0.0.40 - 2021-02-27 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.0.39...4ab518e211163a52f01562912ce6e41548a734d1)) ### New features added - Added tag for cell-input [#259](https://github.com/executablebooks/sphinx-book-theme/pull/259) ([@AakashGfude](https://github.com/AakashGfude)) - Add a shadow to header, on scroll [#255](https://github.com/executablebooks/sphinx-book-theme/pull/255) ([@pradyunsg](https://github.com/pradyunsg)) - Add CSS to center align images with class [#292](https://github.com/executablebooks/sphinx-book-theme/pull/292) ([@DrDrij](https://github.com/DrDrij)) ### Enhancements made - Add footnote translations [#274](https://github.com/executablebooks/sphinx-book-theme/pull/274) ([@chrisjsewell](https://github.com/chrisjsewell)) ### Bugs fixed - translation of suggest edit [#284](https://github.com/executablebooks/sphinx-book-theme/pull/284) ([@chrisjsewell](https://github.com/chrisjsewell)) - Pin bs4 and sphinx dependencies [#271](https://github.com/executablebooks/sphinx-book-theme/pull/271) ([@chrisjsewell](https://github.com/chrisjsewell)) - fixing right toc whitespace overlap [#268](https://github.com/executablebooks/sphinx-book-theme/pull/268) ([@choldgraf](https://github.com/choldgraf)) - Fixing linenos style [#263](https://github.com/executablebooks/sphinx-book-theme/pull/263) ([@AakashGfude](https://github.com/AakashGfude)) ## v0.0.39 - 2020-11-08 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.0.38...v0.0.39)) ### New features added * sphinx sidebars functionality [#233](https://github.com/executablebooks/sphinx-book-theme/pull/233) ([@choldgraf](https://github.com/choldgraf)). You can now use the `html_sidebars` functionality that is native in Sphinx. [See the sidebars documentation](https://sphinx-book-theme.readthedocs.io/en/latest/sections/sidebar-primary.html). * Collapsible lists in sidebars [#226](https://github.com/executablebooks/sphinx-book-theme/pull/226) ([@AakashGfude](https://github.com/AakashGfude)). Sidebars that have nested sections will now have an arrow that allows you to reveal these sections without changing the current page. You can [control the depth](https://sphinx-book-theme.readthedocs.io/en/latest/sections/sidebar-primary.html#control-the-depth-of-the-left-sidebar-lists-to-expand) of expanded sections with `show_navbar_depth`. ### Enhancements made * Option for download button [#245](https://github.com/executablebooks/sphinx-book-theme/pull/245) ([@bknaepen](https://github.com/bknaepen)). The "download" button used to be automatically added, but can now be removed. See [the download button configuration](https://sphinx-book-theme.readthedocs.io/en/latest/components/download.html). ## v0.0.38 ## Enhancements made πŸ‘Œ IMPROVE: Add missing aria-label to fullscreen button [#228](https://github.com/executablebooks/sphinx-book-theme/pull/228) ([@foster999](https://github.com/foster999)) πŸ‘Œ IMPROVE: declare parallel read safe [#225](https://github.com/executablebooks/sphinx-book-theme/pull/225) ([@rscohn2](https://github.com/rscohn2)) πŸ› FIX: fixing dirhtml builds [#230](https://github.com/executablebooks/sphinx-book-theme/pull/230) ([@choldgraf](https://github.com/choldgraf)) πŸ› FIX: fixing margin for code blocks [#229](https://github.com/executablebooks/sphinx-book-theme/pull/229) ([@choldgraf](https://github.com/choldgraf)) ## v0.0.37 ✨ NEW: Sphinx translations for all buttons and tooltips in major UI elements. See [the Sphinx i18n documentation](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language) for how to activate other languages. [#214](https://github.com/executablebooks/sphinx-book-theme/pull/214) ([@chrisjsewell](https://github.com/chrisjsewell)) ⬆️ UPGRADE: pydata-sphinx-theme v0.4.0. See [the `pydata-sphinx-theme` changelog](https://github.com/pandas-dev/pydata-sphinx-theme/releases/tag/v0.4.0) for more information. ⬆️ UPGRADE: Use pyScss instead of libsass for scss compilation. This should make the theme more lightweight to install and develop locally. [#200](https://github.com/executablebooks/sphinx-book-theme/pull/200) ([@hason](https://github.com/hason)) ### Contributors to this release ([GitHub contributors page for this release](https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2020-08-25&to=2020-09-28&type=c)) [@choldgraf](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Acholdgraf+updated%3A2020-08-25..2020-09-28&type=Issues) | [@chrisjsewell](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Achrisjsewell+updated%3A2020-08-25..2020-09-28&type=Issues) | [@fm75](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Afm75+updated%3A2020-08-25..2020-09-28&type=Issues) | [@hason](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Ahason+updated%3A2020-08-25..2020-09-28&type=Issues) | [@najuzilu](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Anajuzilu+updated%3A2020-08-25..2020-09-28&type=Issues) | [@nathancarter](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Anathancarter+updated%3A2020-08-25..2020-09-28&type=Issues) | [@pauleveritt](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apauleveritt+updated%3A2020-08-25..2020-09-28&type=Issues) | [@pradyunsg](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apradyunsg+updated%3A2020-08-25..2020-09-28&type=Issues) | ## v0.0.36 2020-08-25 πŸ‘Œ IMPROVED: The main theme change in this release, is the addition of CSS styling for definition lists, including those created by [sphinx.ext.autodoc](https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html). See [Definition and Field Lists](https://sphinx-book-theme.readthedocs.io/en/latest/reference/kitchen-sink/lists.html), and the [Python API documentation](https://sphinx-book-theme.readthedocs.io/en/latest/reference/kitchen-sink/api.html). πŸ”§ MAINTENANCE: Under the hood, there has also been work undertaken to improve the development environment for working with the package. Thanks to [@pradyunsg](https://github.com/pradyunsg). ### Contributors to this release [@chrisjsewell](https://github.com/chrisjsewell) | [@pradyunsg](https://github.com/pradyunsg) ## v0.0.34...v0.0.35 ([full changelog](https://github.com/executablebooks/sphinx-book-theme/compare/v0.0.34...v0.0.35)) ### Enhancements πŸ‘Œ * Change "On this page" -> "Contents" [#159](https://github.com/executablebooks/sphinx-book-theme/pull/159) ([@pradyunsg](https://github.com/pradyunsg)) * Use consistent font size in toc [#157](https://github.com/executablebooks/sphinx-book-theme/pull/157) ([@pradyunsg](https://github.com/pradyunsg)) * Consistent font size in navigation [#156](https://github.com/executablebooks/sphinx-book-theme/pull/156) ([@pradyunsg](https://github.com/pradyunsg)) ### Bugs fixed πŸ› * backref superscript [#171](https://github.com/executablebooks/sphinx-book-theme/pull/171) ([@AakashGfude](https://github.com/AakashGfude)) * Fixing sidebar overlap on narrow screens [#167](https://github.com/executablebooks/sphinx-book-theme/pull/167) ([@choldgraf](https://github.com/choldgraf)) * Fixing jupyterhub urls [#166](https://github.com/executablebooks/sphinx-book-theme/pull/166) ([@choldgraf](https://github.com/choldgraf)) * Create parent folders, when adding notebook to sources [#152](https://github.com/executablebooks/sphinx-book-theme/pull/152) ([@pradyunsg](https://github.com/pradyunsg)) ### Documentation improvements πŸ“š * Adding contributing docs [#163](https://github.com/executablebooks/sphinx-book-theme/pull/163) ([@choldgraf](https://github.com/choldgraf)) ### Contributors to this release ([GitHub contributors page for this release](https://github.com/executablebooks/sphinx-book-theme/graphs/contributors?from=2020-08-05&to=2020-08-10&type=c)) [@AakashGfude](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3AAakashGfude+updated%3A2020-08-05..2020-08-10&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Acholdgraf+updated%3A2020-08-05..2020-08-10&type=Issues) | [@chrisjsewell](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Achrisjsewell+updated%3A2020-08-05..2020-08-10&type=Issues) | [@pradyunsg](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Apradyunsg+updated%3A2020-08-05..2020-08-10&type=Issues) | [@welcome](https://github.com/search?q=repo%3Aexecutablebooks%2Fsphinx-book-theme+involves%3Awelcome+updated%3A2020-08-05..2020-08-10&type=Issues) sphinx-book-theme-1.1.4/CONTRIBUTING.md000066400000000000000000000001621475565312500173230ustar00rootroot00000000000000See [the contributing documentation](https://sphinx-book-theme.readthedocs.io/en/stable/contributing/index.html). sphinx-book-theme-1.1.4/LICENSE000066400000000000000000000027621475565312500161070ustar00rootroot00000000000000BSD 3-Clause License Copyright (c) 2020, Chris Holdgraf All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. sphinx-book-theme-1.1.4/README.md000066400000000000000000000036301475565312500163540ustar00rootroot00000000000000# sphinx-book-theme [![codecov][codecov-badge]][codecov-link] [![Documentation Status][rtd-badge]][rtd-link] [![PyPI][pypi-badge]][pypi-link] **An interactive book theme for Sphinx**. This is a lightweight Sphinx theme designed to mimic the look-and-feel of an interactive book. It has the following primary features: * **Bootstrap 5** for visual elements and functionality. * **Flexible content layout** that is inspired by beautiful online books, such as [the Edward Tufte CSS guide](https://edwardtufte.github.io/tufte-css/) * **Visual classes designed for Jupyter Notebooks**. Cell inputs, outputs, and interactive functionality are all supported. * **Launch buttons for online interactivity**. For pages that are built with computational material, connect your site to an online BinderHub for interactive content. ## Get started To get started with `sphinx-book-theme`, first install it with `pip`: ``` pip install sphinx-book-theme ``` then, activate the theme in your Sphinx configuration (`conf.py`): ``` ... html_theme = "sphinx_book_theme" ... ``` This will activate the Sphinx Book Theme for your documentation. Note that you may need to change your `html_theme_options` configuration depending on your previous theme. See the pages to the left for information about what you can configure with `sphinx-book-theme`. ## Documentation See [the Sphinx Book Theme documentation](https://sphinx-book-theme.readthedocs.io/en/latest/) for more information. [codecov-badge]: https://codecov.io/gh/executablebooks/sphinx-book-theme/branch/master/graph/badge.svg [codecov-link]: https://codecov.io/gh/executablebooks/sphinx-book-theme [rtd-badge]: https://readthedocs.org/projects/sphinx-book-theme/badge/?version=latest [rtd-link]: https://sphinx-book-theme.readthedocs.io/en/latest/?badge=latest [pypi-badge]: https://img.shields.io/pypi/v/sphinx-book-theme.svg [pypi-link]: https://pypi.org/project/sphinx-book-theme sphinx-book-theme-1.1.4/codecov.yml000066400000000000000000000002621475565312500172400ustar00rootroot00000000000000comment: false coverage: status: project: default: target: 85% threshold: 0.5% patch: default: target: 80% threshold: 0.5% sphinx-book-theme-1.1.4/docs/000077500000000000000000000000001475565312500160235ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/_static/000077500000000000000000000000001475565312500174515ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/_static/custom.css000066400000000000000000000000511475565312500214710ustar00rootroot00000000000000:root { --sd-color-primary: #f37726; } sphinx-book-theme-1.1.4/docs/_static/ebp-logo.png000066400000000000000000000027431475565312500216710ustar00rootroot00000000000000‰PNG  IHDRA@E«ΰ pHYs‰‰mhϊsRGBΞιgAMA± όaxIDATxν›ΟOGΗί:a£TEpi+Νh/Dν.Tΐ”J=pˆΪpθ ΤΠΏ ?ΰz©jΤ‡J₯(G£684ΰKsI,P’ $(8@°3ίΑγΜ»λΩ΅w―ωH#οΪ»ΓΜwή{σf–5H!—Λ}Η>Ύeε*+R8Ψg%ΙΚΓ0ώP4Δλ|;ϋX’³Ξ‡™4+ύLŒ΄ψ‚‹ΰ?VΪ©6H“$„α1Վ‚$‘‘| h§ΪγjΎο‘³ X«πΎLžYΐ-ϋΜ%š BΞξŠωωyZ[[£r222Β‹`ww—¦¦¦Θ ρxœb±΅΄΄πΩΩI½½½δ&‚₯*δπ𐗽½=ΪΪΪβ΅ΌΌΜ…Φ%βτcGGWΚϋκξιι‘ΆΆ6*X„€υΊΕΡdVWWiaa‘pš΅cccΪχMNNςΜΜΜX^KΨήή¦d2I¦ίά΄-0whnn6uΜ πy;`=}}}”H$hqq±π=,bppPΫ‚#δ'θ°έτ@D@l‘ά―ψ‚Έ"WΡ%wεΕO0ez%Kxί ›››¦sLνΊ„Bδ²ˆ=n2ΘͺΜ"W@ώ!―Ϋ4ά³˜‚R©TΡλΠ¨‰‰ ς ’';2™ B@bζ”[XαY(/ΤwΒmƒTt“,$NΓΓÞώ^h#ά)6\Agpd<[Bww7/Ε(59²[;Έ‚Š"CΔΉCΧ*<‹ ςvΏ)Φ΄C¬BΕϊB`59==M:„Ζ°~@z.ΐ>ƒNΰ‘Κ‡††LηjeG¨Dhmm5ομμhέ*Τψqpp u_`#v¦d~,©Υ‘ΧέΗDLeςΦ\WW—/"¨{ΨΡ!wπΊ΅ζm5έ•d – λ›^A^077gΚέ¬$‹Š€Šaf˜weπμηN¨χͺˆΜubQ$£ŽzŸUΫΐψψ8ιψ(0;;[πW/O œ@¬ΊP΅O ¬@η‘5ΊΩj8Š€R©Ka+δMQ4ΨΛ£3, λ†Rž`i? +p‡‹έfΊΨrη؊{ύŠ—j&χβ‰Φu¦˜€NŸ>HΠΙϊeŸ¦¨~`œκϊͺχΏy2ΏίδBD|AuΧnΠ₯+_ž»ΖbŠΜΡΡݟ™/ωΩΙΪŠ^šŒ†ΛTm σ§ξσγμϊ΄˜άΑhψ€"ΏK2²¬’γΔmͺ6 ¬@&ϊΩ€νυηbBύ€ω¬αθξOΪώUi²Or²R{#MŸPτs{,σT"LΙTσ«ΊkΜ=ΨρϋΖι£ι 3ϋ“ΌιΛ4|σ o»ˆ –"@՜d ˆ‘/Nπλς.fη*"8c$ω •yιx}φYŠrϟβ˜UβΣΪήo+€ ΐΚ…°$ΥέΙγ•ΉsX €ψ8–£ΰθ―-Ν« Fμϋ?M ;^ΉΝ(7Nn (*@γΠΘr" ᇨΏαζoΜ »Š^«%ΐΜ€Ζ–Σ*.±#uπλWT.`ώHξPtsm"yσ`…²ϋl bA+[ΒΤ‰‘Β”ζt؈]ζΦ„z@XΧυΈΑ θ$"ψΙϊίEƒ:½~ƒw "S D§ψb0ƒ πύΎ λ΅^UBAΰϋ υƒηwaώ•ΜBgJ‡εE[%¨Θn3βRŒ|T|>χ“‹Χ £ څχ"”o•T}πΎ‹—Cρ-a=X%Ν\αSˆΩK­4ΥiVϊΕ !Ξp?Υ†ˆύς γ…<_ζΝγ+χθμuϋ°€Ύάcεޏ–oXν]"cΨV'IENDB`‚sphinx-book-theme-1.1.4/docs/_static/logo-square.png000066400000000000000000000050741475565312500224230ustar00rootroot00000000000000‰PNG  IHDR€€Γ>aΛ pHYs  šœsRGBΞιgAMA± όa ΡIDATxν;lTG†ΟΝΓ Dh€€€@(x B J0 QP$@4„€šh `  @ ᐠ™"Qx€ΰΥ 4[DxmlΌ™vΗ¬Χ»3χ΅{ο9Ÿ4άυξέe}Ο?sΜ9s!δσωqβ0_΄fΡVˆ6]΄qΔ$‰.ΡnΫΥL&sΑΛ›2Ί‹†ί!ΪNbƒ§ΡZE;%ΔΠQν€ͺΖ‡αχ>νtˆΆ_ˆ ΅‹ Œ=z=c‡…v•?9LΒψ'Ε‘…i"Ψ\ϊDΆτ‡bΟo!ΖVZŠ6dp/΄ˆΓIb\`— ぀0ώtqψ• Σ;Ζ~0eœ!DΠ₯\ΐ&bγ»fv2ΘW#ΐbΈ†²Βψk‰ο"2» °‚WY Μ#ΖU>ΘΠIœξu•. O!Έxρ"={φŒj͘1cΫ„ hβΔ‰4mΪ4Šš³gΟRww7₯\›7ϊzO#…δή½{tώ}Š‹Y³fI!,[Ά,AάΈqƒž?Ni’ξˆˆνςεΛ4uκTZ½z΅γ,YΔ£Gθψργ΄{χξΊΈ%°J "@|Βθ ν–/_Ncǎ•ύαΓ‡”$”𛛉©Lhΐί–ϊ\ˆbΈyσ&]»v­κϋΌΝž=›Ό‚ΟΜεr2BGΰιˆΡρͺU«(,Ϋ·o—ŸεΈ€jA%> Ÿι—C‡QTD"GΓ/§Œ¦gBψ|έ‘ΐΤNΝ‚‚ίgαΒ…%ψL?@ipT3•ΤΖΈp[·n•½ΣAj‘sJ”ί%υA Œ˜¦~˜*ϊqε Χ%/‚χŠ5³$@LqIP’ΌθaAΎ#*¬όι–-[΄η„@”=,<Tq.JΗL"hž?I# @Γ‚ ΄―Ν&M~§£ΥHύZ@9&C™FΜ,*ՏŠJωƒ ίΡ:˜0͟ƒΜΛγ ͺοiεZ€Ž¦¦&bή`LC|†ςΈ±N¦©$eτ’€U@„―«N2M]Δ* *HW Η χλ€ι! `8VLαχ=ͺ=BΜpR-DόθυhΊθɝ$eς’Dl€Α‚¦eΡγμ‘ΔKf‡ώκΔ&Υskz<₯<νΣc]*XΥ‘ρ”ΟŒU€ΑQgˆA6Ύ7¬Κ @ν"~Tγςζ3Φ.!@„ΒƒΪŽυ«4χξέΛ£Ab‹ΰ«Γμ ΐpι φΒΘ:γTοΫ·cƒ2R;¨Mˆφa\„κ’=βf(ΦΈμQ„ΟΧ‰UΑ΅Μ=€«b•όс½‚i½H-°.DζO[¨υ¦€•³ΣNΰ0[ΔlΓJ @Δnΰj`!)­χŠkσ¦­ά< °V¦υN °V¦ϊ@gG¦€΅ΐύ„3Φ ΰεΛ—Δ˜±VXΑ.’€΅0Mσ’tǏ8±φN‘¦ΫΑp±h+`ΊE,z?»€Φ =¦›GβŽβLλ6‡šjΡσuλaEY8> ϋ^ώpv ρπ†Tn j{˜:zΑT+ΰ"‘f2€*ΠT“ΆάŠ^o* Cιzμ₯ϊH₯hιγzZŒυoy‘ΦΖooo§'NP”ΤkS«υ·‰Cu†}.―Œ΅@Ιψš5kRsίΏΈ°ns(†MleΓ{#•(ύ#’šTπΔFχOθ I7Ξέ*– ΐqXŽΓp€γ°'^ύ; <ε­UqΣύ'ΚχόGaπœ€ΡϋοόBύžι Ήr»h_°GξΨηςqγ’uΤ8w%5ΎΏ’ό’@Ύσ1½ΊvjΠθCή8ϊm³ηŠ8ΎELύι=·‡ϊŸςl0χc±h=5Μ\βιs΄.`@ ―ύΤ0γ<ΧΧήJLύAΗ,7Ύ|^Ψ€_V‚Θ†Ffό»ωΞ((0t>χBΊΛ|Nύι]™Zχ3/Χ°ι‹3:™/ΰ v°–’ςRT“ηΦ₯‘f'a¬'wdΏΏίžYF}ς πύ+|Χφ‰Τpο%s@'•λ JωΪGR :τ+…VΚC'‘ Α(†eΔ:A]]= 3τ+ @fΕJTPŸUoΌ‘H΄τ^:θ―ˆΒψ pYxΪD`ZΎFŠΥ”eK Q„ή€xqA¨&‚4.|~TΣκH6† G€‹8‚,`Ή;θΏΣ&3miβ…ˆ£$²A²xDˆ ιΑ‘,dΩqAφ |gδ6’.ά¨{})‘o SB@Τ ‹ šτΩ Ύ'z½ί?Τto \Cν6)†€EΦ£7π΄ΊVOTR ΅}‹ΧΧ₯άn›CeM€;‘φΜϋX "ΜΚaF—0iljΖ'RβοL‘Gd2Ρκ]c™ϊέΑRX]Ε"J[Νάzfγb‘YœTH7ΓxΆΓZ·="€oBθα£DπUK7Φήσz£AΑTSFΫ±ϊAj@-ζΫIΕ꽁r1θS½οqΕψΐϊΝ‘#–mςΎK>ί±νnNμφΊg.‹0Ž•Ή!€Ελ<η₯ϊΩ6œ@!Γ6ΗxžΝΣ½j8sƒˆ†Iϊ{ΊZ΅μΞB4›\AΦQX³hEΓ{K΄ RΩKΜγ‰ NqGŒ‹tΑtγ*· €«ΔΈΚ_ΐb\ε7ΔπˆγΧθΘd23²βŸ.ρΓb\CΦςgπΞΡ!Ϊ‡’σwΘDPqΨOŒ+μ‡ρρ`0(ž8Lμ \ΰˆ°u«ϊ!Sώͺpx1Ψfs&ιœΖo)}bΨZ@ρ μγHΉρAΕΕ qβNqΨLœ%΄Δw»Š6FFχNᦋC \Βtb„šή.ωΡ  !άh…hσD›OIENDB`‚sphinx-book-theme-1.1.4/docs/_static/logo-square.svg000066400000000000000000000041371475565312500224350ustar00rootroot00000000000000 sphinx-book-theme-1.1.4/docs/_static/logo-wide-dark.svg000066400000000000000000000240351475565312500230030ustar00rootroot00000000000000 sphinx-book-theme-1.1.4/docs/_static/logo-wide.svg000066400000000000000000000222331475565312500220620ustar00rootroot00000000000000 sphinx-book-theme-1.1.4/docs/_static/rtd-data.js000066400000000000000000000004121475565312500215040ustar00rootroot00000000000000// Dummy data for testing ReadTheDocs footer insertion // This mimics RTD data for a project that uses both versions + languages var READTHEDOCS_DATA = { project: "frc-docs", version: "latest", language: "en", proxied_api_host: "https://readthedocs.org", }; sphinx-book-theme-1.1.4/docs/_templates/000077500000000000000000000000001475565312500201605ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/_templates/test.html000066400000000000000000000003111475565312500220200ustar00rootroot00000000000000{# This is a test template to try out insertion in the header. You can un-comment the line that adds this to our header in `conf.py` #} sphinx-book-theme-1.1.4/docs/changelog.md000066400000000000000000000000411475565312500202670ustar00rootroot00000000000000```{include} ../CHANGELOG.md ``` sphinx-book-theme-1.1.4/docs/components/000077500000000000000000000000001475565312500202105ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/components/custom-css.md000066400000000000000000000010471475565312500226340ustar00rootroot00000000000000# Add your own CSS rules To customize the look of your site further, you can customize your CSS stylesheets, as described in the [ReadTheDocs Docs](https://docs.readthedocs.io/en/stable/guides/adding-custom-css.html). First, create a CSS file and place it in `_static/custom.css`. An example CSS file to change the color of the top-level headers might look like this. ```css h1 { color: #003B71 !important; } ``` You also need these two lines in your `conf.py` file ```python html_static_path = ["_static"] html_css_files = ["custom.css"] ``` sphinx-book-theme-1.1.4/docs/components/download.md000066400000000000000000000012621475565312500223420ustar00rootroot00000000000000 # Add a download page button You can add a button allowing users to download the currently viewed page in several formats: `raw source`, `pdf` or `ipynb` if one was generated as part of the build. To include this button, use the following configuration: ```python html_theme_options = { ... "use_download_button": True, ... } ``` ```{note} This theme over-rides the Sphinx default for `html_sourcelink_suffix` to be `''` instead of `.txt`. This is because most users of this theme want to download source files of the pages themselves, which do not begin with `.txt`. If you wish to add a different source suffix, manually specify `html_sourcelink_suffix` in `conf.py`. ``` sphinx-book-theme-1.1.4/docs/components/icon-links.md000066400000000000000000000004511475565312500226000ustar00rootroot00000000000000# Icon links and badges You can add a collection of icon links and badges to your primary sidebar. For example, to include links to your GitHub repository or a [shields.io badge](https://shields.io). See the {external:ref}`PyData Icon Links documentation ` for how to configure this. sphinx-book-theme-1.1.4/docs/components/index.md000066400000000000000000000002531475565312500216410ustar00rootroot00000000000000# Component customization Components are specific UI elements that you can control with configuration. ```{toctree} logo icon-links download source-files custom-css ``` sphinx-book-theme-1.1.4/docs/components/logo.md000066400000000000000000000004361475565312500214750ustar00rootroot00000000000000 (sidebar-primary:logo)= # Logo and branding You can customize the logo, title, and favicon of your site. Refer to {external:doc}`the PyData Sphinx Theme branding documentation ` for how to customize the logo and title. This theme re-uses the same configuration. sphinx-book-theme-1.1.4/docs/components/source-files.md000066400000000000000000000064271475565312500231430ustar00rootroot00000000000000(customize:source-files)= # Buttons that link to source files There are a collection of buttons that you can use to link back to your source repository. This lets users browse the repository, or take actions like suggest an edit or open an issue. (source-buttons:repository)= ## Set your source repository You need to define a **source repository** for this functionality to work. This is the online space where your code / documentation is hosted. In each case, they require the following configuration to exist: ```python html_theme_options = { ... "repository_url": "https://{your-provider}/{org}/{repo}", ... } ``` Three providers are supported: - **GitHub**: For example, `https://github.com/executablebooks/sphinx-book-theme`. This includes custom URLs for self-hosted GitHub. - **GitLab**: For example, `https://gitlab.com/gitlab-org/gitlab`. This includes custom URLs for self-hosted GitLab. - **BitBucket**: For example, `https://opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities`. In each case, we **assume the final two URL items are the `org/repo` pair**. ### Manually specify the provider If your provider URL is more complex (e.g., if you're self-hosting your provider), you can manually specify the provider with the following configuration: ```python html_theme_options = { ... "repository_provider": "gitlab" # or "github", "bitbucket", "repository_url": "selfhostedgh.mycompany.org/user/repo", ... } ``` Once this is provided, you may add source buttons by following the following sections. (source-buttons:source)= ## Add a button to the page source Show the raw source of the page on the provider you've proivded. To add a button to the page source, first [configure your source repository](source-buttons:repository) and then add: ```python html_theme_options = { ... "use_source_button": True, ... } ``` Then configure the **repository branch** to use for your source. By default it is `main`, but if you'd like to change this, use the following configuration: ```python html_theme_options = { ... "repository_branch": "{your-branch}", ... } ``` Finally, **configure the relative path to your documentation**. By default, this is the root of the repository, but if your documentation is hosted in a sub-folder, use the following configuration: ```python html_theme_options = { ... "path_to_docs": "{path-relative-to-site-root}", ... } ``` ## Add a button to suggest edits Allow users to edit the page text directly on the provider and submit a pull request to update the documentation. To add a button to edit the page, first [configure your source repository](source-buttons:repository) and then add: ```python html_theme_options = { ... "use_edit_page_button": True, ... } ``` Then follow the [branch and relative path instructions in the source file section](source-buttons:source). (source-files:repository)= ## Add a link to your repository To add a link to your repository, add the following configuration: ```python html_theme_options = { ... "use_repository_button": True, ... } ``` ## Add a button to open issues To add a button to open an issue about the current page, use the following configuration: ```python html_theme_options = { ... "use_issues_button": True, ... } ``` sphinx-book-theme-1.1.4/docs/conf.py000066400000000000000000000203741475565312500173300ustar00rootroot00000000000000# -- Project information ----------------------------------------------------- import os from urllib.request import urlopen from pathlib import Path from datetime import datetime project = "Sphinx Book Theme" copyright = str(datetime.now().year) author = "the Executable Book Project" # language = "fr" # For testing language translations master_doc = "index" # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ "ablog", "myst_nb", "numpydoc", "sphinx.ext.autodoc", "sphinx.ext.intersphinx", "sphinx.ext.viewcode", "sphinxcontrib.youtube", "sphinx_copybutton", "sphinx_design", "sphinx_examples", "sphinx_tabs.tabs", "sphinx_thebe", "sphinx_togglebutton", "sphinxcontrib.bibtex", "sphinxext.opengraph", # For the kitchen sink "sphinx.ext.todo", ] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] intersphinx_mapping = { "python": ("https://docs.python.org/3.8", None), "sphinx": ("https://www.sphinx-doc.org/en/master", None), "pst": ("https://pydata-sphinx-theme.readthedocs.io/en/latest/", None), } nitpick_ignore = [ ("py:class", "docutils.nodes.document"), ("py:class", "docutils.parsers.rst.directives.body.Sidebar"), ] suppress_warnings = ["myst.domains", "ref.ref"] numfig = True myst_enable_extensions = [ "dollarmath", "amsmath", "deflist", # "html_admonition", # "html_image", "colon_fence", # "smartquotes", # "replacements", # "linkify", # "substitution", ] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = "sphinx_book_theme" html_logo = "_static/logo-wide.svg" html_title = "Sphinx Book Theme" html_copy_source = True html_favicon = "_static/logo-square.svg" html_last_updated_fmt = "" html_sidebars = { "reference/blog/*": [ "navbar-logo.html", "search-field.html", "ablog/postcard.html", "ablog/recentposts.html", "ablog/tagcloud.html", "ablog/categories.html", "ablog/archives.html", "sbt-sidebar-nav.html", ] } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] html_css_files = ["custom.css"] nb_execution_mode = "cache" thebe_config = { "repository_url": "https://github.com/binder-examples/jupyter-stacks-datascience", "repository_branch": "master", } html_theme_options = { "path_to_docs": "docs", "repository_url": "https://github.com/executablebooks/sphinx-book-theme", "repository_branch": "master", "launch_buttons": { "binderhub_url": "https://mybinder.org", "colab_url": "https://colab.research.google.com/", "deepnote_url": "https://deepnote.com/", "notebook_interface": "jupyterlab", "thebe": True, # "jupyterhub_url": "https://datahub.berkeley.edu", # For testing }, "use_edit_page_button": True, "use_source_button": True, "use_issues_button": True, # "use_repository_button": True, "use_download_button": True, "use_sidenotes": True, "show_toc_level": 2, "announcement": ( "⚠️The latest release refactored our HTML, " "so double-check your custom CSS rules!⚠️" ), "logo": { "image_dark": "_static/logo-wide-dark.svg", # "text": html_title, # Uncomment to try text with logo }, "icon_links": [ { "name": "Executable Books", "url": "https://executablebooks.org/", "icon": "_static/ebp-logo.png", "type": "local", }, { "name": "GitHub", "url": "https://github.com/executablebooks/sphinx-book-theme", "icon": "fa-brands fa-github", }, { "name": "PyPI", "url": "https://pypi.org/project/sphinx-book-theme/", "icon": "https://img.shields.io/pypi/dw/sphinx-book-theme", "type": "url", }, ], # For testing # "use_fullscreen_button": False, # "home_page_in_toc": True, # "extra_footer": "Test", # DEPRECATED KEY # "show_navbar_depth": 2, # Testing layout areas # "navbar_start": ["test.html"], # "navbar_center": ["test.html"], # "navbar_end": ["test.html"], # "navbar_persistent": ["test.html"], # "footer_start": ["test.html"], # "footer_end": ["test.html"] } # sphinxext.opengraph ogp_social_cards = { "image": "_static/logo-square.png", } # -- sphinx-copybutton config ------------------------------------- copybutton_exclude = ".linenos, .gp" # -- ABlog config ------------------------------------------------- blog_path = "reference/blog" blog_post_pattern = "reference/blog/*.md" blog_baseurl = "https://sphinx-book-theme.readthedocs.io" fontawesome_included = True post_auto_image = 1 post_auto_excerpt = 2 nb_execution_show_tb = "READTHEDOCS" in os.environ bibtex_bibfiles = ["references.bib"] # To test that style looks good with common bibtex config bibtex_reference_style = "author_year" bibtex_default_style = "plain" numpydoc_show_class_members = False # for automodule:: urllib.parse stub file issue linkcheck_ignore = [ "http://someurl/release", # This is a fake link "https://doi.org", # These don't resolve properly and cause SSL issues ] linkcheck_exclude_documents = ["changelog"] # -- Download latest theme elements page from PyData ----------------------------- path_pydata_content = "https://raw.githubusercontent.com/pydata/pydata-sphinx-theme/main/docs/user_guide/theme-elements.md" # noqa path_content_file = Path(__file__).parent / "content/pydata-content-blocks.md" if not path_content_file.exists(): with urlopen(path_pydata_content) as resp: # Read in the content page file, then update the title and add context content = resp.read().decode().split("\n") ix_title = content.index("# Theme-specific elements") content[ix_title] = "# PyData Theme Elements" content.insert( ix_title + 1, "\nThis is a collection of content blocks with special support from this theme's parent theme, [the PyData Sphinx Theme](https://pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/theme-elements.html)\n", # noqa ) # noqa content = "\n".join(content) # Replace a relative link in the pydata docs w/ the respective one here content = content.replace("../examples/pydata.ipynb", "notebooks.md") # Write to disk in a location that will be ignored by git path_content_file.write_text(content) def setup(app): # -- To demonstrate ReadTheDocs switcher ------------------------------------- # This links a few JS and CSS files that mimic the environment that RTD uses # so that we can test RTD-like behavior. We don't need to run it on RTD and we # don't wanted it loaded in GitHub Actions because it messes up the lighthouse # results. if not os.environ.get("READTHEDOCS") and not os.environ.get("GITHUB_ACTIONS"): app.add_css_file( "https://assets.readthedocs.org/static/css/readthedocs-doc-embed.css" ) app.add_css_file("https://assets.readthedocs.org/static/css/badge_only.css") # Create the dummy data file so we can link it # ref: https://github.com/readthedocs/readthedocs.org/blob/bc3e147770e5740314a8e8c33fec5d111c850498/readthedocs/core/static-src/core/js/doc-embed/footer.js # noqa: E501 app.add_js_file("rtd-data.js") app.add_js_file( "https://assets.readthedocs.org/static/javascript/readthedocs-doc-embed.js", priority=501, ) sphinx-book-theme-1.1.4/docs/content/000077500000000000000000000000001475565312500174755ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/content/content-blocks.md000066400000000000000000000174151475565312500227540ustar00rootroot00000000000000--- jupytext: formats: ipynb,md:myst text_representation: extension: .md format_name: myst format_version: '0.8' jupytext_version: 1.4.2 kernelspec: display_name: Python 3 language: python name: python3 --- # Special content blocks There are a few content blocks that are unique to this theme. ## Quotations and epigraphs Here is what quotations and epigraphs look like in `sphinx-book-theme`: ```{example} Default markdown quotes > Here's my quote, it's pretty neat. > I wonder how many lines I can create with > a single stream-of-consciousness quote. > I could try to add a list of ideas to talk about. > I suppose I could just keep going on forever, > but I'll stop here. ``` Sometimes you'd like to draw more attention to a quote. To do so, use the `{epigraph}` directive. Below is an epigraph, click the button to the right of it to show the code that was used to generate it: ````{example} A basic epigraph ```{epigraph} Here's my quote, it's pretty neat. I wonder how many lines I can create with a single stream-of-consciousness quote. I could try to add a list of ideas to talk about. I suppose I could just keep going on forever, but I'll stop here. ``` ```` You can also add an attribution to epigraphs by adding a blank line, followed by a line that starts with `--`. This will be rendered like so: ````{example} Epigraphs with attribution ```{epigraph} Here's my quote, it's pretty neat. I wonder how many lines I can create with a single stream-of-consciousness quote. I could try to add a list of ideas to talk about. I suppose I could just keep going on forever, but I'll stop here. -- Jo the Jovyan, *[the jupyter book docs](https://jupyterbook.org)* ``` ```` (margin:sidenote)= ## Sidenotes and marginnotes This theme has support for [Tufte-style margin / side notes](https://edwardtufte.github.io/tufte-css/), with a UX similar to [pandoc-sidenote](https://github.com/jez/pandoc-sidenote). Sidenotes are numbered, and behave like footnotes, except they live in the margin and don’t force the reader to jump their eye to the bottom of the page. For example, here is a sidenote[^ex]. On narrow screens, sidenotes are hidden until a user clicks the number. If you're on a mobile device, try clicking the sidenote number above. [^ex]: Here's my sidenote text! On narrow screens, this text won't show up unless you click the superscript number! Marginnotes are not numbered, but behave the same way as sidenotes. On mobile devices you'll see a symbol that will show the marginnote when clicked[^exmn]. For example, there's a marginnote in the previous sentence, and you should see a symbol show to display it on mobile screens. [^exmn]: {-} This is a margin note. Notice there isn’t a number preceding the note. :::{seealso} Sidenotes and marginnotes are inline content - you cannot use block-level content inside of these notes. If you'd like to use block-level content in the margins, see [](margin:block). ::: ### Activate sidenotes and marginnotes The theme activates sidenotes and marginnotes by over-riding footnote syntax to instead exist in the margin. To convert your footnotes to *instead* be sidenotes/marginnotes, use this configuration: ```python html_theme_options = { ... "use_sidenotes": True, ... } ``` This will turn your **footnotes** into **sidenotes** or **marginnotes**. ### Create a sidenote The following sentence defines a sidenote and its respective content: ```{example} :no-container: :reverse: Here's my sentence and a sidenote[^sn1]. [^sn1]: And here's my sidenote content. ``` ### Create a marginnote Marginnotes are defined by adding `{-}` at the beginning of the content block. The following syntax defines a marginnote: ```{example} :no-container: :reverse: Here's my sentence and a marginnote[^mn1]. [^mn1]: {-} And here's my marginnote content. ``` (margin:block)= ## Block margin content with the `{margin}` directive The `{margin}` directive allows you to create block-level margin content with an optional title. It is a wrapper around the Sphinx `{sidebar}` directive, and largely does its magic via CSS classes (see below). :::{seealso} If you'd like in-line margin content with numbered references, see [](margin:sidenote). ::: Here's how you can use the `{margin}` directive: ````{example} :no-container: :reverse: ```{margin} **Here is my margin content** It is pretty cool! ``` ```` ### Figure captions in the margin You can configure figures to use the margin for captions. Here is a figure with a caption to the right. ::::{example} :no-container: ```{figure} ../images/cool.jpg --- width: 60% figclass: margin-caption alt: My figure text name: myfig5 --- And here is my figure caption, if you look to the left, you can see that COOL is in big red letters. But you probably already noticed that, really I am just taking up space to see how the margin caption looks like when it is really long :-). ``` :::: We can reference the figure with {ref}`this reference `. Or a numbered reference like {numref}`myfig5`. ### CSS classes for custom margin content You may also directly add CSS classes to elements on your page in order to make them behave like margin content. To do so, add the `margin` CSS class to any element on the page. Many Sphinx directives allow you to directly add classes. For example, here's the syntax to add a `margin` class to a `{note}` directive: ```{example} :no-container: :reverse: :::{note} :class: margin This note will be in the margin! ::: ``` This works for most elements on the page, but in general this works best for "parent containers" that are the top-most element of a bundle of content. For example, you can also put the whole figure in the margin if you like. Here is a figure with a caption below. We'll add a note below to create some vertical space to see better. ````{example} :no-container: :reverse: ```{figure} ../images/cool.jpg --- figclass: margin alt: My figure text name: myfig4 --- And here is my figure caption ``` ```` We can reference the figure with {ref}`myfig4`. Or a numbered reference like {numref}`myfig4`. ### Content examples in the margin Margin content can include all kinds of things, such as code blocks: ````{margin} Code blocks in margins ```python print("here is some python") ``` ```` ````{margin} Code blocks in margins ```python print("here is some python") ``` ```` ````` `````{example} Admonitions and images in the margin :no-container: :reverse: ````{margin} **Notes in margins** ```{note} Wow, a note with an image in a margin! ![](../images/cool.jpg) ``` ```` ````` ## Sidebars Sidebars exist in-line with your text, but allow the rest of the page to flow around them, rather than moving to the right margin. To add content sidebars, use this syntax: `````{example} :no-container: ````{sidebar} **My sidebar title** ```{note} Here is my sidebar content, it is pretty cool! ``` ![](../images/cool.jpg) ```` ````` Note how the content wraps around the sidebar to the right. However, the sidebar text will still be in line with your content. There are certain kinds of elements, such as "note" blocks and code cells, that may clash with your sidebar. If this happens, try using a `{margin}` instead. ## Full-width content Full-width content extends into the right margin, making it stand out against the rest of your book's content. To add full-width content to your page, add the class `full-width` to any of the elements in your documentation. For example, you can add a `full-width` tag to a note element like this: ````{example} :no-container: ```{note} :class: full-width This content will be full-width ``` ```` ```{admonition} A note for ipynb users If you are using a Jupyter Notebook as inputs to your documentation using the [MyST-NB extension](https://myst-nb.readthedocs.io/en/latest/), you can trigger this behavior with a code cell by adding a `full-width` tag to the cell. ``` sphinx-book-theme-1.1.4/docs/content/index.md000066400000000000000000000002511475565312500211240ustar00rootroot00000000000000# Content and formatting These sections describe content-specific customization and formatting. ```{toctree} content-blocks pydata-content-blocks notebooks launch ``` sphinx-book-theme-1.1.4/docs/content/launch.md000066400000000000000000000077221475565312500213010ustar00rootroot00000000000000(customize:launch)= # Launch buttons for interactivity You can automatically add buttons that allow users to interact with your book's content. This is either by directing them to a BinderHub or JupyterHub that runs in the cloud, or by making your page interactive using Thebe. To use either Binder or JupyterHub links, you'll first need to configure your documentation's repository url: ```python html_theme_options = { ... "repository_url": "https://github.com/{your-docs-url}", "repository_branch": "{your-branch}", "path_to_docs": "{path-relative-to-site-root}", ... } ``` ```{margin} Paired ipynb files If you're using [Jupytext](https://jupytext.readthedocs.io/en/latest/) to pair an ipynb file with your text files, and that ipynb file is in the same folder as your content, then Binder/JupyterHub links will point to the ipynb file instead of the text file. ``` ## Binder / BinderHub To add Binder links to your page, add the following configuration: ```python html_theme_options = { ... "launch_buttons": { "binderhub_url": "https://{your-binderhub-url}" }, ... } ``` ## JupyterHub To add JupyterHub links to your page, add the following configuration: ```python html_theme_options = { ... "launch_buttons": { "jupyterhub_url": "https://{your-binderhub-url}" }, ... } ``` ## Google Colab To add Google Colab links to your page, add the following configuration: ```python html_theme_options = { ... "launch_buttons": { "colab_url": "https://colab.research.google.com" }, ... } ``` ## Deepnote To add [Deepnote](https://deepnote.com) links to your page, add the following configuration: ```python html_theme_options = { ... "launch_buttons": { "deepnote_url": "https://deepnote.com" }, ... } ``` ```{warning} This will create a new Deepnote project every time you click the launch button. ``` ## Live code cells with Thebe [Thebe](http://thebe.readthedocs.org/) converts your static code blocks into *interactive* code blocks powered by a Jupyter kernel. It does this by asking for a BinderHub kernel *under the hood* and converts all of your code cells into *interactive* code cells. This allows users to run the code on your page without leaving the page. You can use the Sphinx extension [`sphinx-thebe`](https://sphinx-thebe.readthedocs.io/en/latest/) to add live code functionality to your documentation. You can install `sphinx-thebe` from `pip`, then activate it by putting it in your `conf.py` extensions list: ```python extensions = [ ... "sphinx_thebe" ... ] ``` If you'd like to activate UI elements for `sphinx-thebe` in the `sphinx-book-theme`, add the following theme configuration: ```python html_theme_options = { ... "launch_buttons": { "thebe": True, }, ... } ``` This will add a custom launch button and some UI elements will be added for Thebe. If you also specify a `repository_url` with your theme configuration, `sphinx-thebe` will use this repository for its environment: ```python html_theme_options = { ... "repository_url": "https://github.com/{your-docs-url}", ... } ``` ```{tip} You can also manually customize Thebe with the `thebe_config` dictionary. This will over-ride any configuration that is pulled from your `html_theme_options` configuration. See the [`sphinx-thebe`](https://sphinx-thebe.readthedocs.io/en/latest/) documentation for what you can configure. ``` ## Configure a relative path to your source file To configure a relative path to your documentation, add the following configuration: ```python html_theme_options = { ... "path_to_docs" = "{path-relative-to-repo-root}" ... } ``` ## Control the user interface that is opened You can control the interface that is opened when somebody clicks on a launch button. To do so, add the following configuration: ```python html_theme_options = { ... "launch_buttons": { "notebook_interface": "jupyterlab", }, ... } ``` sphinx-book-theme-1.1.4/docs/content/notebooks.md000066400000000000000000000200771475565312500220300ustar00rootroot00000000000000--- jupytext: formats: ipynb,md:myst text_representation: extension: .md format_name: myst format_version: 0.12 jupytext_version: 1.8.2 kernelspec: display_name: Python 3 language: python name: python3 --- # Jupyter notebooks You can also create content with Jupyter Notebooks, using the [MyST-NB Sphinx extension](https://myst-nb.readthedocs.io/en/latest/). This page demonstrates some extra functionality that works with this theme. ## Markdown + notebooks As it is markdown, you can embed images, HTML, etc into your posts! ![](../images/cool.jpg) You an also $add_{math}$ and $$ math^{blocks} $$ or $$ \begin{align*} \mbox{mean} la_{tex} \\ \\ math blocks \end{align*} $$ But make sure you \$Escape \$your \$dollar signs \$you want to keep! ## Code blocks and image outputs Jupyter Book will also embed your code blocks and output in your book. For example, here's some sample Matplotlib code: ```{code-cell} ipython3 :tags: [hide-cell, thebe-init] from matplotlib import rcParams, cycler import matplotlib.pyplot as plt import numpy as np ``` ```{code-cell} ipython3 # Fixing random state for reproducibility np.random.seed(19680801) N = 10 data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)] data = np.array(data).T cmap = plt.cm.coolwarm rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N))) from matplotlib.lines import Line2D custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4), Line2D([0], [0], color=cmap(.5), lw=4), Line2D([0], [0], color=cmap(1.), lw=4)] fig, ax = plt.subplots(figsize=(10, 5)) lines = ax.plot(data) ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']); ``` Note that the image above is captured and displayed. ```{code-cell} ipython3 :tags: [remove_input] # Fixing random state for reproducibility np.random.seed(19680801) N = 10 data = [np.logspace(0, 1, 100) + .1*np.random.randn(100) + ii for ii in range(N)] data = np.array(data).T cmap = plt.cm.coolwarm rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N))) from matplotlib.lines import Line2D custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4), Line2D([0], [0], color=cmap(.5), lw=4), Line2D([0], [0], color=cmap(1.), lw=4)] fig, ax = plt.subplots(figsize=(10, 5)) lines = ax.plot(data) ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']) ax.set(title="Smoother lines"); ``` ```{margin} You can also pop out content to the margin For more information on how to do this, check out [](content-blocks.md). ``` ```{code-cell} ipython3 :tags: [margin] print("this works for code cells too, if you add a `margin` tag to them") ``` ```{code-cell} ipython3 # You can also include enriched outputs like Math from IPython.display import Math Math(r"\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}") ``` ## Removing content before publishing You can also remove some content before publishing your book to the web. For example, in {download}`./notebooks.md`, there used to be a cell below... ```{code-cell} ipython3 :tags: [remove_cell] thisvariable = "none of this should show up in the textbook" fig, ax = plt.subplots() x = np.random.randn(100) y = np.random.randn(100) ax.scatter(x, y, s=np.abs(x*100), c=x, cmap=plt.cm.coolwarm) ax.text(0, .5, thisvariable, fontsize=20, transform=ax.transAxes) ax.set_axis_off() ``` You can also **remove only the code** so that images and other output still show up. Below we'll *only* display an image. It was generated with Python code in a cell, which you can {download}`see in the original notebook <./notebooks.md>`. ```{code-cell} ipython3 :tags: [hide_input] thisvariable = "this plot *will* show up in the textbook." fig, ax = plt.subplots() x = np.random.randn(100) y = np.random.randn(100) ax.scatter(x, y, s=np.abs(x*100), c=x, cmap=plt.cm.coolwarm) ax.text(0, .5, thisvariable, fontsize=20, transform=ax.transAxes) ax.set_axis_off() ``` And here we'll *only* display a Pandas DataFrame. ```{code-cell} ipython3 :tags: [hide_input] import pandas as pd df = pd.DataFrame([['hi', 'there'], ['this', 'is'], ['a', 'DataFrame']], columns=['Word A', 'Word B']) df ``` You can even style Pandas DataFrames! See [the Pandas Styling docs](https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html) for more information. ```{code-cell} ipython3 :tags: [hide-input] import pandas as pd from pandas.io.formats.style import Styler np.random.seed(24) df = pd.DataFrame({'A': np.linspace(1, 10, 10)}) df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))], axis=1) df.iloc[3, 3] = np.nan df.iloc[0, 2] = np.nan def color_negative_red(val): """ Takes a scalar and returns a string with the css property `'color: red'` for negative strings, black otherwise. """ color = 'red' if val < 0 else 'black' return 'color: %s' % color def highlight_max(s): ''' highlight the maximum in a Series yellow. ''' is_max = s == s.max() return ['background-color: yellow' if v else '' for v in is_max] Styler(df, uuid="1").\ map(color_negative_red).\ apply(highlight_max).\ set_table_attributes('style="font-size: 10px"') ``` +++ {"tags": ["margin"]} Testing margins before headers +++ ## Interactive outputs We can even do the same for *interactive* material. Below we'll display a map using [folium](https://python-visualization.github.io/folium/). When the notebook is converted to Markdown, the code for creating the interactive map is retained. **Note that this will only work for some packages.** They need to be able to output standalone HTML/Javascript, and not depend on an underlying Python kernel to work. ```{code-cell} ipython3 import folium ``` ```{code-cell} ipython3 m = folium.Map( location=[45.372, -121.6972], zoom_start=12, tiles='Stamen Terrain', attr="Placeholder attr" ) folium.Marker( location=[45.3288, -121.6625], popup='Mt. Hood Meadows', icon=folium.Icon(icon='cloud'), attr="Placeholder attr" ).add_to(m) folium.Marker( location=[45.3311, -121.7113], popup='Timberline Lodge', icon=folium.Icon(color='green') ).add_to(m) folium.Marker( location=[45.3300, -121.6823], popup='Some Other Location', icon=folium.Icon(color='red', icon='info-sign'), attr="Placeholder attr" ).add_to(m) m ``` ## Rich outputs from notebook cells +++ Because notebooks have rich text outputs, you can store these in your Jupyter Book as well! ```{code-cell} ipython3 # The ! causes this to run as a shell command !jupyter -h ``` ## Formatting code cells ### Scrolling cell outputs The traditional Jupyter Notebook interface allows you to toggle **output scrolling** for your cells. This allows you to visualize part of a long output without it taking up the entire page. You can trigger this behavior in Jupyter Book by adding the following tag to a cell's metadata: ```json { "tags": [ "scroll-output", ] } ``` For example, the following cell has a long output, but will be scrollable in the book: ```{code-cell} ipython3 :tags: [output_scroll] for ii in range(40): print(f"this is output line {ii}") ``` ### Scrolling cell inputs If your input code is long and takes up a lot of your page, you can make it scrollable as well by adding the following tag to a cell's metadata: ```json { "tags": [ "scroll-input", ] } ``` For example, the following cell has a long input, but will be scrollable in the book: ```{code-cell} ipython3 :tags: [scroll-input] b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" b = "This line has no meaning" print(b) ``` sphinx-book-theme-1.1.4/docs/contributing/000077500000000000000000000000001475565312500205325ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/contributing/architecture.md000066400000000000000000000000471475565312500235370ustar00rootroot00000000000000```{include} ../../ARCHITECTURE.md ``` sphinx-book-theme-1.1.4/docs/contributing/index.md000066400000000000000000000011111475565312500221550ustar00rootroot00000000000000# Contributing guide Thank you for being interested in contributing to the `sphinx-book-theme`! You are awesome ✨. This project follows the Executable Books Project [contribution guidelines](https://executablebooks.org/en/latest/contribute). It contains information about our conventions around coding style, pull request workflow, commit messages and more. The rest of these sections contain information about developing the `sphinx-book-theme` specifically. ```{toctree} :maxdepth: 2 :caption: Contributing Guide setup architecture style tests versions translate subthemes ``` sphinx-book-theme-1.1.4/docs/contributing/setup.md000066400000000000000000000115431475565312500222200ustar00rootroot00000000000000# Set up your development workflow The following instructions will help you set up a basic development environment so that you can begin experimenting with changes. This covers the basics, and see the other sections of the Contributing Guide for more details. ## Set up your development environment First we'll install the necessary tools that you can use to begin making changes. Follow these steps: 1. Get the source code of this project using git: ```bash git clone https://github.com/executablebooks/sphinx-book-theme cd sphinx-book-theme ``` 2. Ensure you have Python 3.9 or newer! 3. Install `tox`. `tox` is a tool for managing virtual environments for test suites or common jobs that are run with a repository. It ensures that your environment is consistent each time you build the docs or run tests. ```console $ pip install tox ``` 4. Install `pre-commit`. We use [pre-commit](https://pre-commit.com) to ensure that the code meets certain standards any time a commit is made. ```console $ pip install pre-commit ``` Next, [follow the `pre-commit` installation instructions](https://pre-commit.com/#install). Finally, install the local dependencies for pre-commit. Run the following command in the same folder as the repository: ```console $ pre-commit install ``` :::{margin} You can also run pre-commit via `tox`: ```console $ tox -e py38-pre-commit -- --all ``` or manually run all `pre-commit` jobs for this repository: ```console $ pre-commit run --all-files ``` ::: The rest of these instructions use `tox` to automate the installation and commands necessary to do many common things. ## Build the documentation Now that you've installed the necessary tools, try building the documentation for this theme locally. To do so, run the following `tox` command: ```console $ tox -e docs-update ``` This will build the documentation using the latest version of the theme and put the outputs in `docs/_build/html`. You may then preview them by opening one of the HTML files. ## Update the theme's assets (CSS/JS) Now that you've previewed the documentation, try making changes to this theme's assets and see how they affect the documentation builds. This is an easy way to preview the effect that your changes will make. First, **make your changes in `src/sphinx_book_theme/assets/`**. This folder contains all of the SCSS and Javascript that are used in this site. For example, edit one of the `scss` files to add or modify a rule. Next, **compile the changes**. Run the following command: ```console $ tox -e compile ``` This uses the [Sphinx Theme Builder](https://sphinx-theme-builder.readthedocs.io/) to compile our SCSS/JS files and bundle them with our theme at `src/sphinx_book_theme/theme/sphinx_book_theme/static`. These compiled assets are **not included** in our git repository, but they **are included** in distributions of the theme. Finally, **re-build the documentation** to preview your changes: ```console $ rm -rf docs/_build/html $ tox -e docs-update ``` When you open the HTML files for the documentation, your changes should be reflected. ## Auto-build the docs when you make changes You can bundle both of the steps above into a single command, which also opens a live server that watches for changes to the theme's assets and documentation, and automatically compiles changes + re-builds the theme. To do so, use this `tox` command: ```console $ tox -e docs-live ``` This will do the following: - Generate the theme's documentation (similar to running `tox -e docs-update`) - Start a development server on an available port `127.0.0.1:xxxx` - Open it in your default browser - Watch for changes and automagically regenerate the documentation and auto-reload your browser when a change is made. With this, you can modify the theme in an editor, and see how those modifications render on the browser. ## Run the tests Once you've made a change to the theme, you should confirm that the tests still pass, and potentially add or modify a test for your changes. To run the test suite with the default `tox` environment, simply run this command: ```console $ tox ``` This will run `pytest` against all of the files in `tests/` and display the result. You can pass arguments to the `pytest` command like so: ```console $ tox -- -k test_match ``` Anything passed after `--` will be passed directly to `pytest`. :::{seealso} See [](contribute/testing) for more information. ::: ## The `{example}` directive This theme uses the [sphinx-examples](https://github.com/executablebooks/sphinx-examples) extension to make it easy to quickly show off example snippets. Basic usage is like so: :::{example} ```{example} Example title This will be both **rendered** and **shown as source code**. ``` ::: See [the sphinx-examples documentation](https://ebp-sphinx-examples.readthedocs.io/en/latest/) for more details. sphinx-book-theme-1.1.4/docs/contributing/style.md000066400000000000000000000055011475565312500222150ustar00rootroot00000000000000(contributing/style)= # Style and design This describes the principles and infrastructure behind the style and design aspects of this theme. ## Design principles and inspiration Here are a few guiding principles for the design of this theme: - **Use minimalistic visual elements.** This theme should not have "strong visual opinions" beyond a clean and minimal design. For example, use whitespace instead of color blocks to separate content, use unintrusive visual elements where possible, use color sparingly, etc. - **Focus on a single book use-case.** This theme is designed for the use-case where a person has documentation for a single reader archetype, where all aspects of the documentation may be exposed to the reader. This means we follow a two-column layout with a single navigation bar across all pages. Header navigation should require more customization. - **Add design elements from the Tufte theme**. The [Edward Tufte CSS theme](https://edwardtufte.github.io/tufte-css/) defines several styles and elements that are unique for communicating ideas with data. We give a few of these (like margin content) special treatment, and generally assume Tufte knows what he's doing. This theme draws inspiration and borrows design elements from the following themes: - The [PyData Sphinx Theme](https://pydata-sphinx-theme.readthedocs.io/) - The [Furo theme](https://pradyunsg.me/furo/) - The [Edward Tufte CSS theme](https://edwardtufte.github.io/tufte-css/) - [GitBook](https://docs.gitbook.com/) - The [Tailwind CSS docs](https://tailwindcss.com/docs/installation) ## SCSS build process Our SCSS source files at in `src/sphinx_book_theme/assets/styles`. We use the [Sphinx Theme Builder](https://github.com/pradyunsg/sphinx-theme-builder) to compile these assets and bundle them with the theme at `src/sphinx_book_theme/theme/sphinx_book_theme/static/styles`. These compiled files are **not checked in to `git` history**. You can run the compilation process with `tox` like so: ```console $ tox -e compile ``` or you may manually run this if you have installed the `sphinx-theme-builder` with this command: ```console $ stb compile ``` ## CSS/SCSS naming conventions We try to follow the [`block__element--modifier` naming convention for CSS](https://cssguidelin.es/#bem-like-naming). This is aspirational! Many of our HTML elements do not quite follow this naming, and over time we hope to continue making adjustments to get closer to this frameowrk. ## SCSS folder structure Our SCSS files follow the structured described in [the sass-guidelines guide](https://sass-guidelin.es/#architecture). For a high-level overview, see the file `/assets/styles/index.scss`. ```{note} We also inherit a lot of SCSS rules from [the PyData Sphinx Theme styles](https://github.com/pydata/pydata-sphinx-theme/tree/master/src/pydata_sphinx_theme/assets/styles). ``` sphinx-book-theme-1.1.4/docs/contributing/subthemes.md000066400000000000000000000031721475565312500230560ustar00rootroot00000000000000# Creating sub-themes It is possible to create sub-themes from this, in order to bring much of the same functionality but modify the style and behavior a bit. This page has a few helpful tips for doing so. :::{warning} Creating sub-themes requires advanced Sphinx skills, and is not explicitly a supported feature of this theme. There are no promises that we won't make breaking changes here, so be sure to test your sub-theme against the latest branch and / or pin your versions!! ::: ## Hashing your assets This theme defines a function called `hash_html_assets` that can be used to create hashes for your style files, and updates the Sphinx links to include them with `?digest=`. You can reuse this function in a sub-theme if you wish - to do so, look at the function signature of `hash_html_assets`. For example, here's a Python snippet that reuses this function: ```python from sphinx_book_theme import hash_assets_for_files def hash_html_assets(app, pagename, templatename, context, doctree): assets = ["styles/your-css-asset.css", "scripts/your-js-asset.js"] STATIC_PATH = "path to your theme's static folder" hash_assets_for_files(assets, STATIC_PATH, context) def setup(app): app.connect("html-page-context", hash_html_assets) ``` ## Defining your own CSS If you'd like to define a new CSS stylesheet for your sub-theme, make sure to import the CSS for this theme as well. As a best practice, you should put your sub-theme's CSS stylesheet in the `STATIC_PATH/styles/` folder, similar to this theme. Then, you can import this theme's CSS with: ```scss @import "sphinx-book-theme.css"; // And include your own CSS below ``` sphinx-book-theme-1.1.4/docs/contributing/tests.md000066400000000000000000000066451475565312500222310ustar00rootroot00000000000000(contribute/testing)= # Testing infrastructure Our testing infrastructure uses pytest ## Run the tests with a single environment You can run the test suite with the default environment like so: ```console $ tox ``` You can specify a specific environment like so: ```console # Run the tests with Python 3.9, Sphinx 4 $ tox -e py39-sphinx4 ``` ## List all test environments To list all of the test environments to may choose from, run: ```console $ tox -a ``` Each one corresponds to a test environment or a task to build the documentation, and has its own virtual environment. See the `tox.ini` file in the repository's root for details of all available development environments. ## Supply arguments to pytest To supply arguments to pytest, use `--` and pass arguments after. For example: ```console $ tox -- -x ``` ## Re-build an environment from scratch By default, `tox` will only install the necessary environment **once**. If you'd like to force a re-build, use the `-r` parameter. For example: ```console $ tox -r -e py38-sphinx3 ``` ## Test audits with lighthouse This theme uses the [`treosh/lighthouse-ci-action`](https://github.com/treosh/lighthouse-ci-action) to run some basic audits on our performance, accessibility, etc. To preview the output of these tests: - Click on the `docs-audit` GitHub Action job from a Pull Request. - Scroll to the "Audit with Lighthouse" section - If there are errors, you should see them along with the link to preview the report at `report: `. - If there are not errors, you can list them by clicking the `uploading` section, which will reveal links to the report for each page ## Test multiple Sphinx versions This theme is tested against the latest two major versions of Sphinx. We try to set up our regression tests such that there are no differences between these two Sphinx versions. ### Unit tests Use the variable `sphinx_build.software_versions` to conditionally run tests based on the version of Sphinx. For example: ```python if sphinx_build.software_versions == ".sphinx3": foo elif sphinx_build.software_versions == ".sphinx4": bar ``` ### Regression tests Regression tests are trickier, because updating them generally requires re-running the tests, not hand-editing code. This is cumbersome for maintenance because we have to run the test suite two times for each regression that is updated. For this reason, we have a more lightweight approach: **If a regression test differs between Sphinx versions**, decide if the difference is substantial. Do we gain something meaningful by testing both major versions of Sphinx, or is the difference unrelated to our theme's functionality? 1. **If not substantial**, then add a conditional and only run the regression test on the latest Sphinx version we support. Add a note to explain why you're only testing against one version of Sphinx. For example: ```python if sphinx_build.software_versions == ".sphinx4": # Only Sphinx4 because Sphinx3 adds an extra whitespace and isn't important file_regression.check(...) ``` 2. **If it is substantial**, follow these steps: To support multiple Sphinx versions with regression tests, use the `extension` key to create a different regression file for that version of Sphinx. For example: ```python file_regression.check( html.prettify(), basename="foo", extension=f"{sphinx_build.software_versions}.html", encoding="utf8", ) ``` sphinx-book-theme-1.1.4/docs/contributing/translate.md000066400000000000000000000001131475565312500230440ustar00rootroot00000000000000```{include} ../../src/sphinx_book_theme/assets/translations/README.md ``` sphinx-book-theme-1.1.4/docs/contributing/versions.md000066400000000000000000000045401475565312500227270ustar00rootroot00000000000000# Releases and version numbers These describe some of our practices and principles for making releases. ## Release strategy Here are guiding principles for making releases: **Release early and often**. If it has been more than a few weeks since the last release, anybody is encouraged to make a new one. Releases should be as painless and automated as possible. **Roughly follow semver**. See [our SemVer guide](releases:semver) for interpretation of what this means. **We can always make another release**. Don't try to get everything perfect before a release. Favor making more releases more quickly rather than fewer bigger releases. (releases:semver)= ## Version numbers This theme roughly follows the [SemVer](https://semver.org) versioning scheme. This corresponds to: - **Major versions**: Significant refactoring of theme structure or functionality that requires major re-configurations for users and developers. - **Minor versions**: Most enhancements and tweaks to theme behavior. This is the majority of version bumps. - **Patch versions**: Tiny bugfixes and very minor improvements that trigger a release right when they are implemented. Here are some guiding principles for version numbering: **Do not worry about it too much**. Don't take too much energy in deciding and debating versions. Life is too short to worry about getting the perfect version number, just go with your gut (or ask another person if you really wish). **It is more important to document a breaking change properly**. When we make breaking changes, the important thing is to properly document them and create deprecation warnings and pathways. This should get more energy than deciding whether to bump the major/minor version. **Major version bumps should be for truly major overhauls**. We're likely be breaking things here and there throughout, not every single breaking change. Reserve major version changes for significant overhauls (for example, ones that require someone to comprehensively re-work their CSS rules). **Major versions do not have any special meaning other than semver**. While we generally try not to bump major versions, they also carry no special meaning other than reflecting how much changed since the last version. We try to follow [SemVer](https://semver.org) and this is all that major versions signify. We don't make any promises about long term support and stability. sphinx-book-theme-1.1.4/docs/images/000077500000000000000000000000001475565312500172705ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/images/cool.jpg000066400000000000000000000220651475565312500207330ustar00rootroot00000000000000ΨΰJFIFΫ„ (!%!1!%)+...383,7(-.+  -%%.-.---/----------------------/--------------------ΐ–OΔΔO  !1AQ"2aqr‘3R’‘±²BSbt‚’³ΑΡ#45CcsTƒ“ΒπEα$d”£΄ΔΔ>1!2AQqa‘±Ρπ"R‘Αα34Br#Βρ’Sb‚’²Ϊ ?ΌP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ‚φΈΎλ‹‘Ϋ3Ϊ€ € € —”3†žZωApΦΖHρΦΦ[ίe\ͺΒ9³M,jΊα\r]¬εɟ’)ΟHlcΤη‚ͺυͺfΕΠψ‡Γ΄πό€hΌ‚f ζΈx³RXšoyΡ8₯’O“FJ~rkυU°vƒΩο4)ͺ°βS.ΔΗφ3£IœΤrœ1Υΐγζ‰Y‹ΒχRS‹ήS,=XνEφPTŠO¨~TΛ1SωGrˆΈcEήFϋl&Γ₯Bu# Ω} 5JΟΨ_Δ:»„qˆΆ&2γas€“Ύ8Ε‡€VW‹χQμSθOϊ“·žΏGώΏ«σcο£ͺ·‘λsΰ‚αύηΪΌ ƒ„Z‘ͺšˆΦΦJθδτTΦ/Š*—AΗ8ΟευΉŽ.βΡΜΒ5€ζΈK ±b£ΐ‘τ_Ϋ$vrg Y>RŸ$$ό«,;άΰ;μ§Dž―DβaΊό‰5K$h’7΅μpΈsHsHήΠUΙάσef¬Μ¨pΓWTȚ_#ƒZ6ž@ €μI\m%vJ”ε£vArζξ*gnΓΖNzpL}n'^9β½Δ{˜~‡V¬όύ~€r£(VΝ₯ΖO―Rζ_89+3«7œRž OT`»/ίsΑgΧΘΏD³ƒιkQΣ—[£Kά]‹ΐτ**γζΟTΞ–NιΨ?Λ“O€RUͺ-εsΒajgΩnγZlυΚΤÝ“Η{c12Γ‘α‘₯§­[LΚeΡYnkβtrW M36Ί"Zΰ;$ή‘ΕρFzΏιύW§.ΘΝμζ¦­n*y.G9‡“#{Mέ.:V¨TŒς<[₯hS£]Fš²·‰6Wž`@@@^π$€’N€ΦI@•ς+¬ιΞχΙ!¦₯½Η8ά΄u\4΄Œ£·hXkWoTr>ƒΡΡ‚S«­ξ^|π#ρ䫁ΖΘηόΠLq¦2Ϊ:ΙXξ{ Ov―ƒ™ο\›Γ¦Ό•ΝKdΆώ-ώΛ_Τ»cΊ,ΙMRΙ&88jΡ°ξ#aθ+Xα”‹θ(U‡Š‘³|R[ ω'žAa;¬J•‹)Ν©yσεžΫgΉ$7’lЍΩ&✞HχC–Lzβ„Ή±ξ|š€›§O%»€θWl­GœδδΫ—ΗθΎηa@ιŠj€Πt^Ϊτ€ΡΪqΠ:΅τ%Ž₯sEΉX“ΙkΡ­sϋš@ΏŠι7M›”uŒ•Έ˜uAiΪΣ€h―'fg!p,±ζΤ M³$ι‰ΖΜqιc΄_qΤ³V% Yωψψφ™qQΆΜτϊΩ"‰Β#Κ•ΝŽ6όS&Όg’6›υΈnVΣ½šάaΔΖšWkλ’ψχ#{'ΡΆΫvk'[‰ΦγJγw"ΊΝ‚m€9yW+²Λ‘±ίPp.yπ0Ž’{””o‘Υk]ε؎\Οέ†:˜οζΙkO@p:=k f„eJZ£-|ΞέPΖγΪY+EΛ Έ#ΞcΎ3TZ8ՍεΐiεFΘΗ1ά׌.;ΌΗυ΅Ϊz‹—S|WΗΌγΠT» džR7?­»{ŏzŒ•™²—΄Œ΅oΌ5?F—ί‰v•β”yύ$vhό›;-φΩfe†Κ2!ό si»UπVG#΄Άί5άȊ Η€οΩς}%u ί…Ψ>O¦RΏŠοe†΄8@@@xš@Φ—@z€Ή\nΗR»²*Nj*ζ¨wΕ&&nΈ8₯#λY ξe—•VWwβ}v’§MEn6ΥF‚%ž™ΐθ0Ε΄Ž.Ϊƞhnη8iΎβυl!r©NΪϋ<|ΚbI}ψŠΏF< =%kίI“ ήΛeΰΞο)5΄ !q́ρ˜HΣΈτͺe j4F£’Χ™:T–™N“ρωνs{Θ»>ΨjμYΗ«_žΏ‘Ι5Ž1>aΟ kόιŽψ gΈ$aν1U―J1γ­ό<]‰m0Š6ΖέM›m='_z7vcKQ•Ϋ―n“¨o'  ž Έ„•Κ―:2γͺd-i"’ΫμΏ9Ϋάu“΄Β)ke$φSζψύΈ8ξAˆ6*Φο©™γtΛ !eΊ&VΌCΔ3:Φlδα“΄Η9 ΞιYε j5Ζͺ–­λΟί΄˜*KL5P΅Ν-w4‚Χv\,ο ϊ‘u}D>ž₯Μ7σ£.c·έ†ή±o ζzΈkNŸ/=Η~’ԐuS°F7q―εΜα κ*Χ©Xςt΄ε₯Η_Ρ|»ΞΊ#K+W"|ΞκsΙ΄m=ίRΫT’ΘΛ‡›,ό>%C[Pω^ι$qsœI$τ­QZ*ΘΝQΉ½ΐρMHιΨΨάO{šΦ΄k.q u’“)”cΫ.<βΝ7ΠRΐζΘe’βΖv–ι– m|€αHΐν:”+RPΦ²cx‹ΒYξϊx>hΨ†Pφ΅ν7k€ ο\z–F¬z έ\τζάXκ:ΠιΛΝ1ΜΙ~U₯;δ‹SIa½vJρ4a$”τ|λΦΎ¨Η ψ’ͺϊ,Ÿy<Νδ”co{ϋdJ(ό›;-φ)fy°ΩFUΒD?„m7j£ή Θδv–Ϋζ»™Caxπϋ>O€Ώξ‘[π»ΙτίκWρ]μ°ΦƒΗ€ € FuΥρT²<μ‘ΚpτZUU ΝX*zuβŠΛ!Δ[O<βΠηoΔώS½n+Λ–gΦG+›Ε·Π5›ΦM‡΅q ;&ʟ/ΟΗTΛ.Βχaμƒf„μˆ*zΌωΜηρ+ΊG}'Μ\”euKΎ+iήd!­:~ͺ5x·ΐ’€•)ΑqdΏ%ε8έ E7˜†!{αΈλY䡚£[#dΧ³A‰hδ:AΈπΈ„ ΪhβPΡ`’8†―„ΥΛυbύh’¬άVδδυυΙύ "¨°ζg-AŽ–gx0ŽΉξ—©Ε–k·³οb¬β•χ;菆$ΈτH½fΝΖ³!A(—oΕ3 ΘP³Ρ ϊΡώ’κ<,-{γ«Οΐγ䚎2€:άΖ“ΧaZσε™ξΗ#eΝΈ±ΤW iι―•#TœTέΘmδυ°©΅{§UŒαoΎ¨λfέΜiηJω$?Yζίd5ry•₯­ωΛQΥQ:DxAŸτQEηΘχž¦5­Η⭁―'π__Ε«.OΡ“nr`—)±Δh‰“’ϊί[οά£G›žΕnΕݝ4ΑτζγSš{‰Β°η+«Ζπg‹‚©‘Y?=_2¬Ν’~uΖηΖ~£Θ«/2YŸV³~zΞͺ‰Σƒžή•ξω7Ε ρ,«œDe£4όκΧβGς4—Ž―θ―ϋΘ—"΅›qnρ?ν‘8£ςlμ·Ψ%™‚(ΚΈH‡πΝ¦νT{ΑYŽΫ|Χs"(l/ΏgΙτ—ύΤ+~`ω>›ύJώ+½–Πxα@@αR\9>Kk7“\ίχ,ψ•Μτz1ZύDa­°Άν Νg¬€ΫNν>+πHζF¦ΙO0hW3TUΥΟV\ΉέΟΰw%qπW7f?ƒ΄9‘₯Γ {ƒ΅…¦„TβΣ<>–­θͺΣi^Χd²N―ͺΎ€uG±Š~«LΔϊf»έΟΉ‘?Eίχ:―~K« OψΞίΰGγΙί«ψ8{ž!νΖξs‹ͺd$ŸEbͺ’m.'΅†œ§ΞNνλω#¦©5μω}©Hσ₯„x O䬁―?‡Υ)\Χ’o mKœjΚηκ·ψ1fΑΕ ω/Bͺφρ8Wύdω•Nl~¬ΑΈΘίFWμ^\³>·{ζΞ’‰Σ‡•#Γ;%ΪΚZίV;}β±dBϊνrώί‘‘Y†žΊ(ύΐ£<ΩΨdn¨’ ΉϊοΒέΡ<ϊSΘU±Θν%vωΎδFl»sF‰hπιͺŸ΄GτœγώΥ« ›<œΥ.e­—GώšεIξ’jρg‡‡v«Φ»Κ›% KVέΥR[Ό4ώkΚ–γλ ξ―Τ»‘P&sςδx©ηΐ“ΤθέώΥ(œyǟzd+7xκώˆΌ‰Ky}WxCŸφ²GδΩΩo°(K3<6Q•p‘α›MΪ¨χ‚²9₯ΆωζDPΨ^<~Ο“ι/ϋ¨Vό.Ας}7ϊ•όW{,5 ρΒ€ € ΒΟκ.λσOΰV|FK™ιt_ζΎOΈ•ζJc›šξΛύΗ.¬ΘΟ.Ξς’Pκ Η™²šφQιp‹‹€#UۏέrΫ…ΩgΜtχζΓ—Τ΄–£Β )~ӟ°ύ/*ΆΣζ}fς‘ΛθŒκ“YΟΟΥ›όθύΩTΰ!ω‹ΞτAWMΆ2Σ[OΞo΄.¬ΘT^ΓδΟΤ9oΘ;­žϋW₯WaŸ †όΤTy΅δσ&ϋη―*GΧ¬ΩΥQ:qςΡΦ?φ΅ΏμόŠšΘ―χ仍όšCώ=Π£,Ω(l£ep‘ΟίΦ#ώHϋΧ«Dθ-o›ϊΔ5Ψ΅ΈηΥφ`φΚ΅αwŸ;ΣΛςώ?BΡΛ_«Mό©=Β΅K&xΆγΝ5λŸHwΈΥδΘϊϊy.KΈθ¨™SΘMό™½Οό£j<Ρ͟%WτG}δJΗ΄[=ˆs_όΘ°hό›;-φ\³)†Κ2!ό si»UπVG#΄Άί5άȊ Η€οΩς}%u ί…Ψ>O¦RΏŠοe†΄8@@@DΈP‡O `8ψFσνgΔlόOG’ίυνΕHŸ‰‘ΓhΔ]y―S>–/Qθ‹Ψo zFߊ#“Ω*8Ω£ώlSoYθR^Κ>ΰQΉf‰jp%UΕΆΆϊšΨŸmΊΈΏ³ -R>o§ι^TνΎλΈ”IΒœ‘£CΰΩΥ"Ÿ­ΐΖΊ΅―₯Ÿ©/ dΫκ|Yψž΅ψ-_ywε=cjΓΉΝ,¨½MŸ~υ’€”›hυhRt’©Λ5ΰŽ’€p3Φ;Έω²B}r4ϋαN"ν5ηz ˜.zš ±.qΗQϊ_,UƒF%œ"pκ.c½—=ΛΣͺ¦Ωπ8h?XQλe]› ΅,g~'zOsΏζK3κΦo›:Š'NQ–υ°CηSΥυ8ά>Ζ«E|_ZωhύΞ†oɊ–ό6DXϊŒσ%JΗAD‘ Ο¨I·²Vϊ3<ϋSYaφΪσ’#X.nΡ,f΅MD{]]θ>ίοZπ[GΟ¨)ΏG u²ΨΛΏ«L7ΖφŽ·Ρλ+]M–|ζσcΝ.Fv'ΤΙηULGPΒίΑyRά}t΅u.δtΤ œάΰ— 5CΏ‚αήι#ρR‰΅wμL…fΧ“¬ϊ#ώς%d³,–ΜW_φΘ°hό›;-φT³+†Κ2!ό si»UπVG#΄Άί5άȊ Η€οΩς}%u ί…Ψ>O¦RΏŠοe†΄8@@@s3’ŸŒ¦•§Vž nο³uUhή Ρ„ž…hΎ²­Θ.Žβ“ΉΏ R:–~~·=Œ†7 ³Vœ8œΩwΐέ+οΘt/5₯ΏΩ-λxWR›‹}hσzJ”+B;š’·ŸŸΐΙ’2c ,2ΖΒχχъο%δ―F+w.K2˜ΙΫQΉύ— ‘r%Οn²ΓΈ„ͺI&ξFς~Q9ΣέΦ<τκAg€sAVXƒVσΓWΤ—ͺ‰š9j—†HΖ·1ΐv…žί[ϊΚQv8σOΞ½DJ—&cc^58…\b β›3 ‰ΠΉvKNη)eΌ9‘ίτŒaŽΫIΓΕF:ΘxwΤ;–οI₯I-ηΚΛ ‘œnοοΥρ5h©ψΈΩψk}ΰ²·vzVFWΊΐ•Γ€ .e>/*5χ»`tLΎρώ<₯z^Ι\uΖάW~²W›ƒƒδ¦x‡œm=ψ‚ͺD“ΎΎ:ϋ~ηQD‘ΟlQ±ώd’ηseho©ΜΏΦRYX•)hΤMω·ΩόŽ ΙU€ΟcΨβHσ¦šΊ)†Ίρ»©βΓν«πυ4j+žgLQ\$”sZΧΓνrΟ*α9$νΔz’ύ'…ΪΦύ`½ D­γΊ>“©YyΟQZζδ%΄Ρβη8›λΌ„ΏO₯κ^lσ>₯;έρ:j'Hζ|Τα€svΙ#έ/qρ{|”Φ²k’ο~ŒζΙδVύy”·nφητ‘aΡω6v[μ ©fF(ΚΈH‡πΝ¦νT{ΑYŽΫ|Χs"(l/ΏgΙτ—ύΤ+~`ω>›ύJώ+½–Πxα@@ρΒβΗR’Κ†’ΊHO2SvŸžΦ‹χΊ<'­ Κ« ΡυΈJή–”gπ~|ξ6&£‹—r_Λk‹\4€M7-{F’ΫιjΉΩ«½E”¦βξˆΑΙσm©„;Ρα­-_§™ΫΙ™?x¦—:"A–W8ά:[m?»Ύ’vϋ$­j’¨υΏq'P heΊαK}-i·mࡃΦ]υ’ΘJΪ“ηπZόΔ3b€q¦›2v˜‰Ψλ;ΉαΎ΅|–«•Ζ||ρ,œ“Tdˆh{nΩη·CΏ>’ZΛ–­FΫΫq»qΪιJ‰/”©&Ξ4φ!ΔΈΕ¨΄žqŽϊΨN›lΊλ³ΜΣFz9«š0Šη›`ΐ6ΉφkGI%sE:ρ[ŽΝ\k˜ΠqΓ±ΊB,&˜hG˜Ν=κ[(ΓVNr» ‡=ο°ο¨œ5««,tΞΥΗΦG1½ο·pr”Q kφxχoωδΣ—8Έ›—Iι%iJڊ\ξΫ,”qq“ε)εθ–?$γΪa·YTΙf‹bξ―η_ίΌ•*‹ zθΨZαvZΰ5–vι:[m«¨JΊι©ΐk›£›+t΅Γa;ŽυΗδm₯(ΪΞζ¬9zY‚8Λ‰Ψ%4 ι­Δ§*ε9λΞxk~[©‘ƒ|ΐι‘φ#Ν4|ͺJIinhŽΥ’œw™κΚΪ·οκκϊ²+umŠnXΩ *Έ±΅nΒξEFƒlL Ϋ°‹mWrΟ8[WaͺœΤΦ¬Φο?.D¬ι ’ΓΔΠ΅βΞh#€_Όn@΅djœ‘ ΦΜ]sάίEΔ…Ϋ’—u’ځ»bαγoω€“¨΄  Yύ–nE#8N)H: υ΄4zˊΎœw”Τ•—[ω/ΏuˆeΥΕ,σfyι*g7δ4N{MΜ‘/iΫ€ !%IΈι-ΕKUTή6ψψ<“Xηƒš%CΖύΟoΝpΣβ²5ΌτrΤo¨5f£εs Φ[kΆAλ΅Π’“F“\tδh`c λ!·π]ΤuΝπFΝ"nΪ5δοq:Iι(έΘΧΞΛYU΄ρ:s­Ί#t»Hf³Σ‡qRŠ»#+=O-όΈ|{ŠŠi œ\MΙ$“V€¬¬f”΄›l‘fŒg‹­uŽ‚Έ^Ϊ.dŒΪϋμ …MΔ©΅tΊώ’,z?&ΞΛ}g–eπΩFeΒF€ΤXψΩ[ΠΧΡΎΐ…۝M£Ι‡όDώ”‹–›ΰ»φsΏΔΝΥύ4ϊ‘σϋ=βeπ‹ϊϊN€|}€π‡κ:Ωτ¦ ͺkΙ|όHvz6Վc"υ°λ%YΈaδδ“|>¬α?QE™’Y3υͺυΟΟ€ € "9Χ™­¨ύ$Vl—Εk–‚ο9―cHΈ;F›¬ΥpϊZ㩞 €έ‘S\~kΟψd«α4§ νΠ6Κ8£έ(7ž’Σ”v‘τjR¬―NWκίٟΘϊά©ό7u‡ΒGŽ0«.τoΝό ZΜΰŠ1wΙ>Ά7υ`n΄€£|ˆΙ(«Ι۞ς-•σ‚z€c₯†bΧh/ s€xέΙkzΡ y†:”uEέραΛΔδΠζvQ˜Ω”5n‰Ρ·}‡­hτlσε‹‚ήXY₯ΐ»Λ„™B@ΦθmJr†Χiυ8lM,JΌ½λΟzωeHώ>(Ξη΄·νsOqUXΡ£.A”aωXύ6ώk–/υυ‚ΧΫΞ<†’η[GUΗ4YΞ,πkdΕ!Έ2c/ ˆχ›hΔ{­ut)ΆUV€až|<|$a<5‘Ο{ކ΄<ž€4•₯G‚uΥΫ“,ΌΗΰ’yάΩ«†Šύό~μoΏ+^­[\L±Ιj†|KΦ’•‘1±FΠΖ4Φ΄Y  @yεΆΫ»+ΜτΝGFο…SςCo€ ρ`λkΫρ‘?c«›†΅ž”r>‡£ρρœ}W―s󿿞||¬έ ˜qO:Dξ˜δΤoΈΨ¬vΰzΞ-ÁζIEά@Ι°ρA™£”r›"f9XΟ ΡN‘Ϊ=ΧΦ:·ΛΟ²ΞΈκ©1K‘ŒšίΟ₯j„,d©U?f9wΎ&ώfζ]VQx7@ςηp<[wασέσGEΘ֍6Μ5±p¦ΊΛk;s~˜κhfˆf.qη½ΔΕwΌν&έΐ4ΜBJ)"Ύ©*•œ₯ηS9Τ~M–ϋ‘`–g· ”e\$Τβ^iκ>Δ:³EžίΏ±έ΅[Έ–erϊ³„ύEqfi–Lύj½sσΐ€ € αh: FL‹LγwSBNσ ρ²ζŠΰX«TZ”Ÿiž ™Μ‰μ±£ΨΔ\›Ν›]"βXšΰZζ‡4θ €Aˆ:Πκm;’?U™t7c_ς€s[άΓvΰ¨–›άo§˜˜jΏ5žfŸύψͺ¬PXŠκ©²χΣUψG³ξ$ΰށώU³K۞_c\‘‘Mn3ΤιΥ“ΥͺuΧβΈNΎΟΉΩ·^5SΤͺŠcο=sΥͺp&ΊKwɞkΗξ*ΗSθέψ•ΟW©ΐ’ι Ό»$c9"ΈkгΠ₯w±sΠTΰOΧ°oχ―ύΌ†Š°kŽ―ŒΣξ„τ5=ΡλxWϋΧkπ1ΰ©ω:ϊΏΉθ§ξ“τψ~?ξF)$ŸQγ]GζΉθηξ²Q«Cί_ξDk9(f¨«s⧝ΰ²1a —δ΄4θΓ}aMBMdrjTυJk.+‰žƒœ₯.ͺbΐvΘφ3Ε€βυ)Ζ„ήβͺ½+…Š~Υω#τRτOŽ€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €Ωsphinx-book-theme-1.1.4/docs/index.md000066400000000000000000000044231475565312500174570ustar00rootroot00000000000000--- title: The Sphinx Book Theme --- ::::{grid} :reverse: :gutter: 2 1 1 1 :margin: 4 4 1 1 :::{grid-item} :columns: 4 ```{image} ./_static/logo-square.svg :width: 150px ``` ::: :::{grid-item} :columns: 8 :class: sd-fs-3 A Sphinx theme with a clean design, support for interactive content, and a modern book-like look and feel. ::: :::: [Flexible content layout](reference/special-theme-elements.md) : Inspired by beautiful online books, such as [the Edward Tufte CSS guide](https://edwardtufte.github.io/tufte-css/) [Visual classes designed for Jupyter Notebooks](reference/notebooks) : Cell inputs, outputs, and interactive functionality are all supported. [Launch buttons for online interactivity](content/launch) : For pages that are built with computational material, connect your site to an online BinderHub for interactive content. [Bootstrap 5](https://getbootstrap.com/docs/5.0/getting-started/introduction/) : To style visual elements and add functionality. International : All text integrated in the theme is translated to the specified [Sphinx language](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language). :::{seealso} This is the default theme in [Jupyter Book](https://jupyterbook.org). ::: # Topic areas The following topic areas will help you understand and use the theme. ```{toctree} :maxdepth: 1 :caption: Topic Areas tutorials/get-started content/index sections/index components/index reference contributing/index changelog ``` # Example pages Examples pages demonstrate the visual look of this theme. ```{toctree} :caption: Example pages :maxdepth: 2 reference/kitchen-sink/index reference/special-theme-elements reference/extensions reference/notebooks reference/thebe reference/blog reference/api-numpy reference/comments ``` # Inspiration This theme draws inspiration and borrows design elements from the following themes: - The [PyData Sphinx Theme](https://pydata-sphinx-theme.readthedocs.io/) - The [Furo theme](https://pradyunsg.me/furo/) - The [Edward Tufte CSS theme](https://edwardtufte.github.io/tufte-css/) - [GitBook](https://docs.gitbook.com/) - The [Tailwind CSS docs](https://tailwindcss.com/docs/installation) [pypi-badge]: https://img.shields.io/pypi/v/sphinx-book-theme.svg [pypi-link]: https://pypi.org/project/sphinx-book-theme sphinx-book-theme-1.1.4/docs/reference.md000066400000000000000000000045371475565312500203140ustar00rootroot00000000000000 # Reference of theme options The following theme-specific options are available via `html_theme_options`. ```{admonition} See the PyData Theme as well These are **in addition to** all of the {external:doc}`options available in the PyData Sphinx Theme `. ``` ```{list-table} :widths: 10 5 40 :header-rows: 1 * - Key - Type - Description * - `path_to_docs` - string - Path to the documentation, relative to the repository root (e.g. `docs/`). See [](customize:source-files). * - `repository_url` - string - URL of the repository for the documentation (e.g. the GitHub repository URL). See [](source-files:repository). * - `repository_branch` - string - Branch of the repository for the documentation (e.g., `master`, `main`, `docs`). See [](source-files:repository). * - `use_issues_button` - bool - Add an button in the header with a link to issues for the repository (used in conjunction with `repository_url` and `repository_branch`). See [](source-files:repository). * - `use_download_button` - bool - Add a button in the header to download the source file of the page. See [](customize:source-files). * - `use_fullscreen_button` - bool - Add a button in the header to trigger full-screen mode. * - `use_repository_button` - bool - Add a button in the header that links to the repository of the documentation.See [](source-files:repository). * - `launch_buttons` - bool - Include Binder launch buttons for pages that were built from Jupyter Notebooks. See [](customize:launch). * - `home_page_in_toc` - bool - Whether to put the home page in the Navigation Bar (at the top). See [](sidebar-primary:home-page). * - `show_navbar_depth` - int - Show children in the navigation bar down to the depth listed here. See [](sidebar:show-navbar-depth). * - `max_navbar_depth` - int - The maximum number of levels to show in the navbar. See [](sidebar:max-navbar-depth). (4 is default) * - `collapse_navbar` - bool - Whether to collapse the navbar, stopping the tree from being expanded. See [](sidebar:max-navbar-depth), (False is default) * - `extra_navbar` - str - Extra HTML to add below the sidebar footer. See [](content-footer:extra-footer). * - `extra_footer` - str - Extra HTML to add in the footer of each page. * - `toc_title` - str - The text to be displayed with the in-page TOC (`Contents` is default) ``` sphinx-book-theme-1.1.4/docs/reference/000077500000000000000000000000001475565312500177615ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/reference/api-numpy.md000066400000000000000000000003651475565312500222260ustar00rootroot00000000000000# NumPy docstrings This page demonstrates NumPy docstrings for the theme, as well as some other common Sphinx directives for API documentation. ```{versionadded} 0.1.1 ``` ```{eval-rst} .. automodule:: numpy :members: array, transpose ``` sphinx-book-theme-1.1.4/docs/reference/blog.md000066400000000000000000000001431475565312500212240ustar00rootroot00000000000000# Reference for Blog This page will be replaced by ABlog. It's here to make sure it's in the TOC. sphinx-book-theme-1.1.4/docs/reference/blog/000077500000000000000000000000001475565312500207045ustar00rootroot00000000000000sphinx-book-theme-1.1.4/docs/reference/blog/post1.md000066400000000000000000000001061475565312500222710ustar00rootroot00000000000000--- author: Jo the Jovyan date: 2020-01-01 --- # Post 1 Some content sphinx-book-theme-1.1.4/docs/reference/blog/post2.md000066400000000000000000000001171475565312500222740ustar00rootroot00000000000000--- author: Jo the Jovyan date: 2020-02-01 --- # Post 2 Some sample content. sphinx-book-theme-1.1.4/docs/reference/comments.md000066400000000000000000000017021475565312500221300ustar00rootroot00000000000000# Comments This page demonstrates functionality of comment libraries. The theme does not change the style of these libraries, but should hide their UI elements on print. ## Hypothes.is You can activate hypothes.is with the following JS: ``` ``` ```{raw} html ``` ## Utterances You can activate utterances with the following JS: ``` {% endmacro %} sphinx-book-theme-1.1.4/src/sphinx_book_theme/theme/sphinx_book_theme/theme.conf000066400000000000000000000027761475565312500301630ustar00rootroot00000000000000[theme] inherit = pydata_sphinx_theme pygments_style = tango sidebars = navbar-logo.html, icon-links.html, search-button-field.html, sbt-sidebar-nav.html stylesheet = styles/sphinx-book-theme.css [options] # Announcement bar (empty by default) announcement = # Secondary sidebar: Removes the extra page-specific links from sidebar secondary_sidebar_items = page-toc.html toc_title = Contents # Article header: The top bar that is displayed on most pages article_header_start = toggle-primary-sidebar.html article_header_end = article-header-buttons.html use_download_button = True use_fullscreen_button = True use_issues_button = False use_source_button = False use_repository_button = False # Note: We also inherit use_edit_page_button from the PyData theme # Configuration for GitHub / GitLab repo buttons path_to_docs = repository_url = repository_branch = repository_provider = launch_buttons = {} # Header / navbar. # Over-ride the PST navbar components (users could provide their own if they wish) navbar_start = navbar_center = navbar_end = navbar_persistent = # Primary sidebar behavior home_page_in_toc = False show_navbar_depth = 1 max_navbar_depth = 4 collapse_navbar = False # Footer at the bottom of the content extra_footer = footer_content_items = author.html, copyright.html, last-updated.html, extra-footer.html # Footer at the bottom of the site (PST over-ride) footer_start = footer_end = # Content and directive flags use_sidenotes = False # DEPRECATE after a few release cycles expand_toc_sections = [] sphinx-book-theme-1.1.4/tests/000077500000000000000000000000001475565312500162355ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/conftest.py000066400000000000000000000000531475565312500204320ustar00rootroot00000000000000pytest_plugins = "sphinx.testing.fixtures" sphinx-book-theme-1.1.4/tests/sites/000077500000000000000000000000001475565312500173645ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/sites/base/000077500000000000000000000000001475565312500202765ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/sites/base/Makefile000066400000000000000000000011721475565312500217370ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) sphinx-book-theme-1.1.4/tests/sites/base/conf.py000066400000000000000000000022631475565312500216000ustar00rootroot00000000000000# -- Project information ----------------------------------------------------- project = "Sphinx Book Theme" copyright = "2020, Executable Book Project" author = "Executable Book Project" master_doc = "index" # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ["myst_nb", "sphinx_thebe"] html_theme = "sphinx_book_theme" html_copy_source = True html_sourcelink_suffix = "" nb_execution_mode = "auto" # Base options, we can add other key/vals later html_theme_options = { "path_to_docs": "TESTPATH", "repository_url": "https://github.com/executablebooks/sphinx-book-theme", # "repository_branch": "master", # Not using this, should default to master "launch_buttons": { "binderhub_url": "https://mybinder.org", "jupyterhub_url": "https://datahub.berkeley.edu", "colab_url": "https://colab.research.google.com", "deepnote_url": "https://deepnote.com", "notebook_interface": "jupyterlab", "thebe": True, }, "navigation_with_keys": True, } sphinx-book-theme-1.1.4/tests/sites/base/index.rst000066400000000000000000000002731475565312500221410ustar00rootroot00000000000000Index ``with code`` in title ============================ .. toctree:: :caption: My caption :numbered: page1 page2 section1/index titles/index Google sphinx-book-theme-1.1.4/tests/sites/base/page1.rst000066400000000000000000000002011475565312500220160ustar00rootroot00000000000000Page 1 ====== Test content with Some raw HTML to test. Section 1 --------- First section Section 2 --------- Second section sphinx-book-theme-1.1.4/tests/sites/base/page2.rst000066400000000000000000000005661475565312500220350ustar00rootroot00000000000000Page 2 ====== Sidenotes --------- Some text to test out one sidenote [1]_ and another sidenote [2]_ Marginnotes ----------- Some text to test out one marginnote [3]_ and another marginnote [4]_ This is the end of Page 2. .. [1] This is a sidenote. .. [2] This is *another* **sidenote**. .. [3] {-} This is a marginnote. .. [4] {-} This is *another* **marginnote**. sphinx-book-theme-1.1.4/tests/sites/base/section1/000077500000000000000000000000001475565312500220235ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/sites/base/section1/index.rst000066400000000000000000000001411475565312500236600ustar00rootroot00000000000000Section 1 index =============== .. toctree:: page1 ntbk ntbkmd ntbk_octave ntbk_julia sphinx-book-theme-1.1.4/tests/sites/base/section1/ntbk.ipynb000066400000000000000000000013531475565312500240260ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# A test notebook" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hi\n" ] } ], "source": [ "print(\"hi\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "version": "3.8.0" } }, "nbformat": 4, "nbformat_minor": 4 } sphinx-book-theme-1.1.4/tests/sites/base/section1/ntbk_julia.ipynb000066400000000000000000004360761475565312500252300ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Julia\n", "\n", "This is a Julia notebook." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Plots; pyplot()\n", "x=range(-8,stop=8,length=41)\n", "y=range(-8,stop=8,length=41)\n", "r(x,y) = sqrt(x^2 + y^2) + eps()\n", "f(x,y) = sin(r(x,y))/r(x,y)\n", "plot(x,y,f,st=:surface,camera=(-30,30))" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.4.1", "language": "julia", "name": "julia-1.4" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.4.1" } }, "nbformat": 4, "nbformat_minor": 4 } sphinx-book-theme-1.1.4/tests/sites/base/section1/ntbk_octave.ipynb000066400000000000000000001202111475565312500253620ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Octave\n", "\n", "This is an octave notebook." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = linspace(-8, 8, 41)';\n", "y = x;\n", "[X, Y] = meshgrid(x, y);\n", "R = sqrt(X.^2 + Y.^2) + eps;\n", "Z = sin(R)./ R;\n", "surf(X, Y, Z);" ] } ], "metadata": { "kernelspec": { "display_name": "Octave", "language": "octave", "name": "octave" }, "language_info": { "file_extension": ".m", "help_links": [ { "text": "GNU Octave", "url": "https://www.gnu.org/software/octave/support.html" }, { "text": "Octave Kernel", "url": "https://github.com/Calysto/octave_kernel" }, { "text": "MetaKernel Magics", "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" } ], "mimetype": "text/x-octave", "name": "octave", "version": "4.2.2" } }, "nbformat": 4, "nbformat_minor": 4 } sphinx-book-theme-1.1.4/tests/sites/base/section1/ntbkmd.md000066400000000000000000000004231475565312500236230ustar00rootroot00000000000000--- jupytext: cell_metadata_filter: -all formats: md:myst text_representation: extension: .md format_name: myst format_version: '0.8' jupytext_version: 1.4.2 kernelspec: display_name: Python 3 language: python name: python3 --- # Section 1 page1 sphinx-book-theme-1.1.4/tests/sites/base/section1/page1.rst000066400000000000000000000000401475565312500235440ustar00rootroot00000000000000Section 1 page1 =============== sphinx-book-theme-1.1.4/tests/sites/base/titles/000077500000000000000000000000001475565312500216025ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/sites/base/titles/index.rst000066400000000000000000000001261475565312500234420ustar00rootroot00000000000000Testing titles and TOCtree ========================== .. toctree:: :glob: ./* sphinx-book-theme-1.1.4/tests/sites/base/titles/page-multipletitles.rst000066400000000000000000000003161475565312500263260ustar00rootroot00000000000000A page with multiple top-level titles ===================================== Some text A sub-heading ------------- Another top-level title ======================= Another sub-heading ------------------- sphinx-book-theme-1.1.4/tests/sites/base/titles/page-onetitle.rst000066400000000000000000000002471475565312500250740ustar00rootroot00000000000000A page with one title and sub-headings ====================================== Some text Here’s a sub-heading -------------------- Here’s another -------------- sphinx-book-theme-1.1.4/tests/sites/base/titles/page-onetitlenoheadings.rst000066400000000000000000000001331475565312500271260ustar00rootroot00000000000000A page with a title but no sub-headings ======================================= Some text sphinx-book-theme-1.1.4/tests/sites/notitle/000077500000000000000000000000001475565312500210425ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/sites/notitle/conf.py000066400000000000000000000005541475565312500223450ustar00rootroot00000000000000# -- Project information ----------------------------------------------------- project = "Sphinx Book Theme" copyright = "2020, Executable Book Project" author = "Executable Book Project" master_doc = "index" extensions = ["myst_parser"] html_theme = "sphinx_book_theme" html_theme_options = { "home_page_in_toc": True, "navigation_with_keys": True, } sphinx-book-theme-1.1.4/tests/sites/notitle/index.rst000066400000000000000000000000271475565312500227020ustar00rootroot00000000000000This page has no title sphinx-book-theme-1.1.4/tests/sites/parallel-build/000077500000000000000000000000001475565312500222555ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/sites/parallel-build/Makefile000066400000000000000000000012011475565312500237070ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= -j auto SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) sphinx-book-theme-1.1.4/tests/sites/parallel-build/conf.py000066400000000000000000000001711475565312500235530ustar00rootroot00000000000000""" Sample ``conf.py``. """ html_theme = "sphinx_book_theme" html_theme_options = { "navigation_with_keys": True, } sphinx-book-theme-1.1.4/tests/sites/parallel-build/five.rst000066400000000000000000000000261475565312500237360ustar00rootroot00000000000000======= Five ======= sphinx-book-theme-1.1.4/tests/sites/parallel-build/four.rst000066400000000000000000000000261475565312500237600ustar00rootroot00000000000000======= Four ======= sphinx-book-theme-1.1.4/tests/sites/parallel-build/index.rst000066400000000000000000000004561475565312500241230ustar00rootroot00000000000000Samples for substitution directives =================================== .. This is a test of parallel document builds. You need at least 5 documents. See: https://github.com/adamtheturtle/sphinx-substitution-extensions/pull/173 .. toctree:: :hidden: one two three four five sphinx-book-theme-1.1.4/tests/sites/parallel-build/one.rst000066400000000000000000000000211475565312500235610ustar00rootroot00000000000000===== One ===== sphinx-book-theme-1.1.4/tests/sites/parallel-build/three.rst000066400000000000000000000000271475565312500241150ustar00rootroot00000000000000======= Three ======= sphinx-book-theme-1.1.4/tests/sites/parallel-build/two.rst000066400000000000000000000000211475565312500236110ustar00rootroot00000000000000===== Two ===== sphinx-book-theme-1.1.4/tests/test_build.py000066400000000000000000000423001475565312500207440ustar00rootroot00000000000000import os from pathlib import Path from shutil import copytree, rmtree from importlib.metadata import version from packaging.version import parse from bs4 import BeautifulSoup import pytest import sphinx from sphinx.testing.util import SphinxTestApp sphinx_version = parse(version("sphinx")) if sphinx_version.major < 7: from sphinx.testing.path import path as sphinx_path else: from pathlib import Path as sphinx_path path_tests = Path(__file__).parent class SphinxBuild: def __init__(self, app: SphinxTestApp, src: Path): self.app = app self.src = src self.software_versions = ( f".sphinx{sphinx.version_info[0]}" # software version tracking for fixtures ) def build(self, assert_pass=True, assert_no_warnings=True): self.app.build() if assert_no_warnings: assert self.warnings == "", self.status return self @property def status(self): return self.app._status.getvalue() @property def warnings(self): return self.app._warning.getvalue() @property def outdir(self): return Path(self.app.outdir) def html_tree(self, *path): path_page = self.outdir.joinpath(*path) if not path_page.exists(): raise ValueError(f"{path_page} does not exist") return BeautifulSoup(path_page.read_text("utf8"), "html.parser") @pytest.fixture() def sphinx_build_factory(make_app, tmp_path): def _func(src_folder, **kwargs): copytree(path_tests / "sites" / src_folder, tmp_path / src_folder) app = make_app(srcdir=sphinx_path(tmp_path / src_folder), **kwargs) return SphinxBuild(app, tmp_path / src_folder) yield _func def test_parallel_build(sphinx_build_factory): sphinx_build = sphinx_build_factory("parallel-build", parallel=2) # type: SphinxBuild sphinx_build.build( assert_pass=True, assert_no_warnings=False ) # TODO: filter these warnings assert (sphinx_build.outdir / "index.html").exists(), sphinx_build.outdir.glob("*") def test_build_book(sphinx_build_factory, file_regression): """Test building the base book template and config.""" sphinx_build = sphinx_build_factory("base") # type: SphinxBuild sphinx_build.build(assert_pass=True) assert (sphinx_build.outdir / "index.html").exists(), sphinx_build.outdir.glob("*") # -- Notebooks ------------------------------------------------------------ # Check for correct kernel name kernels_expected = { "ntbk.html": "python3", "ntbk_octave.html": "octave", "ntbk_julia.html": "julia-1.4", } for filename, kernel in kernels_expected.items(): ntbk_html = sphinx_build.html_tree("section1", filename) thebe_config = ntbk_html.find("script", attrs={"type": "text/x-thebe-config"}) kernel_name = f'name: "{kernel}",' if kernel_name not in thebe_config.prettify(): raise AssertionError(f"{kernel_name} not in {kernels_expected}") # -- Sidebar -------------------------------------------------------------- index_html = sphinx_build.html_tree("index.html") # Navigation entries if sphinx_build.software_versions == ".sphinx4": # Sphinx 4 adds some aria labeling that isn't in sphinx3, so just test sphinx4 sidebar = index_html.find(attrs={"class": "bd-docs-nav"}) file_regression.check( sidebar.prettify(), basename="build__sidebar-primary__nav", extension=".html", encoding="utf8", ) # Check navbar numbering sidebar_ntbk = sphinx_build.html_tree("section1", "ntbk.html").find( "nav", attrs={"class": "bd-docs-nav"} ) # Pages and sub-pages should be numbered assert "1. Page 1" in str(sidebar_ntbk) assert "3.1. Section 1 page1" in str(sidebar_ntbk) # -- Header --------------------------------------------------------------- header_article = sphinx_build.html_tree("section1", "ntbk.html").find( "div", class_="bd-header-article" ) file_regression.check( header_article.prettify(), basename="build__header-article", extension=".html", encoding="utf8", ) # Edit button should not be on page assert 'EXTRA FOOTER"), ], ) def test_navbar_options(sphinx_build_factory, option, value): sphinx_build = sphinx_build_factory( "base", confoverrides={f"html_theme_options.{option}": value} ).build(assert_pass=True) # type: SphinxBuild assert value in str(sphinx_build.html_tree("section1", "ntbk.html")) @pytest.mark.parametrize( "edit,repo,issues,name", [ (True, True, True, "all-on"), (True, False, False, "one-on"), (False, False, False, "all-off"), ], ) def test_header_repository_buttons( sphinx_build_factory, file_regression, edit, repo, issues, name ): # All buttons on confoverrides = { "html_theme_options": { "use_edit_page_button": edit, "use_repository_button": repo, "use_issues_button": issues, "repository_url": "https://github.com/executablebooks/sphinx-book-theme", "navigation_with_keys": True, } } sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) header = sphinx_build.html_tree("section1", "ntbk.html").select( ".header-article-items__end" ) file_regression.check( header[0].prettify(), basename=f"header__repo-buttons--{name}", extension=".html", encoding="utf8", ) @pytest.mark.parametrize( "provider, repo", [ ("", "https://github.com/executablebooks/sphinx-book-theme"), ("github", "https://gh.mycompany.com/executablebooks/sphinx-book-theme"), ("", "https://gitlab.com/gitlab-org/gitlab"), ("", "https://opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities"), ("gitlab", "https://mywebsite.com/gitlab/gitlab-org/gitlab"), ], ) def test_source_button_url(sphinx_build_factory, file_regression, provider, repo): """Test that source button URLs are properly constructed.""" # All buttons on use_issues = "github.com" in repo or "gitlab.com" in repo or provider == "gitlab" confoverrides = { "html_theme_options": { "repository_url": repo, "use_repository_button": True, "use_edit_page_button": True, "use_source_button": True, "use_issues_button": use_issues, "navigation_with_keys": True, } } # Decide if we've manually given the provider manual = provider != "" # Infer the provider from the names so we can name the regression tests if not provider: for iprov in ["github", "gitlab", "bitbucket"]: if iprov in repo: provider = iprov break provider_reg_file = provider if manual: confoverrides["html_theme_options"]["repository_provider"] = provider provider_reg_file = provider_reg_file + "_manual" sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) # Check that link of each button is correct, and that the icon has right provider links = sphinx_build.html_tree("section1", "ntbk.html").select( ".dropdown-source-buttons .dropdown-menu a" ) icons = sphinx_build.html_tree("section1", "ntbk.html").select( ".dropdown-source-buttons .dropdown-menu i" ) links = [ii["href"] for ii in links] icons = [str(ii) for ii in icons] check = "\n".join(["\n".join(ii) for ii in zip(links, icons)]) file_regression.check( check, basename=f"header__source-buttons--{provider_reg_file}", extension=".html", encoding="utf8", ) def test_header_launchbtns(sphinx_build_factory, file_regression): """Test launch buttons.""" sphinx_build = sphinx_build_factory("base").build(assert_pass=True) launch_btns = sphinx_build.html_tree("section1", "ntbk.html").select( ".dropdown-launch-buttons" ) file_regression.check(launch_btns[0].prettify(), extension=".html", encoding="utf8") def test_empty_header_launchbtns(sphinx_build_factory, file_regression): """Launch buttons should not show at all if no valid launch providers.""" # Here we define part of the launch button config, but no valid provider sphinx_build = sphinx_build_factory( "base", confoverrides={ "html_theme_options": { "launch_buttons": {"notebook_interface": "notebook"}, "navigation_with_keys": True, } }, ).build(assert_pass=True) launch_btns = sphinx_build.html_tree("section1", "ntbk.html").select( ".dropdown-launch-buttons" ) assert len(launch_btns) == 0 @pytest.mark.parametrize( "provider, repo", [ ("", "https://github.com/executablebooks/sphinx-book-theme"), ("", "https://gitlab.com/gitlab-org/gitlab"), ("", "https://opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities"), ("gitlab", "https://mywebsite.com/gitlab/gitlab-org/gitlab"), ], ) def test_launch_button_url(sphinx_build_factory, file_regression, provider, repo): """Test that source button URLs are properly constructed.""" launch_buttons = { "binderhub_url": "https://mybinder.org", "jupyterhub_url": "https://hub.myorg.edu", } if "github.com" in repo: launch_buttons["colab_url"] = "https://colab.research.google.com" launch_buttons["deepnote_url"] = "https://deepnote.com" confoverrides = { "html_theme_options": { "repository_url": repo, "repository_branch": "foo", "path_to_docs": "docs", "launch_buttons": launch_buttons, "navigation_with_keys": True, } } sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) # Check that link of each button is correct all_links = [] for ifile in (("section1", "ntbk.html"), ("section1", "ntbkmd.html")): links = sphinx_build.html_tree(*ifile).select( ".dropdown-launch-buttons .dropdown-menu a" ) links = [ii["href"] for ii in links] all_links.append("/".join(ifile)) all_links.append("\n".join(links) + "\n") if provider == "": provider = [ii for ii in ["github", "gitlab", "bitbucket"] if ii in repo][0] else: provider += "_manual" file_regression.check( "\n".join(all_links), basename=f"header__launch-buttons--{provider}", extension=".html", encoding="utf8", ) def test_repo_custombranch(sphinx_build_factory, file_regression): """Test custom branch for launch and edit buttons.""" sphinx_build = sphinx_build_factory( "base", confoverrides={ "html_theme_options": { "repository_branch": "foo", "use_edit_page_button": True, "repository_url": "https://github.com/executablebooks/sphinx-book-theme", # noqa: E501 "launch_buttons": {"binderhub_url": "https://mybinder.org"}, "navigation_with_keys": True, } }, ).build(assert_pass=True) header = sphinx_build.html_tree("section1", "ntbk.html").select( ".header-article-items__end" ) # The Binder link should point to `foo`, as should the `edit` button file_regression.check( header[0].prettify(), basename="header__repo-buttons--custom-branch", extension=".html", encoding="utf8", ) @pytest.mark.skipif(os.name == "nt", reason="myst-nb path concatenation error (#212)") def test_singlehtml(sphinx_build_factory): """Test building with a single HTML page.""" sphinx_build = sphinx_build_factory("base", buildername="singlehtml").build( assert_pass=True ) assert (sphinx_build.outdir / "index.html").exists(), sphinx_build.outdir.glob("*") def test_docs_dirhtml(sphinx_build_factory): """Test that builds with dirhtml pass without error.""" sphinx_build = sphinx_build_factory("base", buildername="dirhtml").build( assert_pass=True ) assert (sphinx_build.outdir / "index.html").exists(), sphinx_build.outdir.glob("*") def test_show_navbar_depth(sphinx_build_factory): """Test with different levels of show_navbar_depth.""" sphinx_build = sphinx_build_factory( "base", confoverrides={ "html_theme_options": { "show_navbar_depth": 2, "navigation_with_keys": True, } }, ).build(assert_pass=True) # type: SphinxBuild sidebar = sphinx_build.html_tree("section1", "ntbk.html").find_all( attrs={"class": "bd-sidebar"} )[0] for checkbox in sidebar.select("li.toctree-l1 > input"): assert "checked" in checkbox.attrs for checkbox in sidebar.select("li.toctree-l2 > input"): assert "checked" not in checkbox.attrs def test_header_download_button_off(sphinx_build_factory): """Download button should not show up in the header when configured as False.""" confoverrides = { "html_theme_options": { "use_download_button": False, "navigation_with_keys": True, } } sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) download_btns = sphinx_build.html_tree("section1", "ntbk.html").select( ".menu-dropdown-download-buttons" ) assert len(download_btns) == 0 def test_header_fullscreen_button_off(sphinx_build_factory, file_regression): confoverrides = { "html_theme_options.use_fullscreen_button": False, } sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) fullscreen_buttons = sphinx_build.html_tree("section1", "ntbk.html").select( ".full-screen-button" ) assert len(fullscreen_buttons) == 0 def test_right_sidebar_title(sphinx_build_factory, file_regression): confoverrides = {"html_theme_options.toc_title": "My test content title"} sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) sidebar_title = sphinx_build.html_tree("page1.html").find_all( "div", attrs={"class": "tocsection"} )[0] file_regression.check(sidebar_title.prettify(), extension=".html", encoding="utf8") # Testing the exception for empty title rmtree(str(sphinx_build.src)) confoverrides = {"html_theme_options.toc_title": ""} def test_sidenote(sphinx_build_factory, file_regression): confoverrides = {"html_theme_options.use_sidenotes": True} sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) page2 = sphinx_build.html_tree("page2.html") sidenote_html = page2.select("section > #sidenotes") regression_file = "test_sidenote_6" if sphinx_version.major < 7 else "test_sidenote" file_regression.check( sidenote_html[0].prettify(), extension=".html", encoding="utf8", basename=regression_file, ) def test_marginnote(sphinx_build_factory, file_regression): confoverrides = {"html_theme_options.use_sidenotes": True} sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build( assert_pass=True ) page2 = sphinx_build.html_tree("page2.html") marginnote_html = page2.select("section > #marginnotes") regression_file = ( "test_marginnote_6" if sphinx_version.major < 7 else "test_marginnote" ) file_regression.check( marginnote_html[0].prettify(), extension=".html", encoding="utf8", basename=regression_file, ) sphinx-book-theme-1.1.4/tests/test_build/000077500000000000000000000000001475565312500203735ustar00rootroot00000000000000sphinx-book-theme-1.1.4/tests/test_build/build__header-article.html000066400000000000000000000130171475565312500254520ustar00rootroot00000000000000
sphinx-book-theme-1.1.4/tests/test_build/build__pagetoc--page-multipletitles.html000066400000000000000000000023211475565312500302640ustar00rootroot00000000000000 sphinx-book-theme-1.1.4/tests/test_build/build__pagetoc--page-onetitle.html000066400000000000000000000013361475565312500270340ustar00rootroot00000000000000 sphinx-book-theme-1.1.4/tests/test_build/header__launch-buttons--bitbucket.html000066400000000000000000000012551475565312500277300ustar00rootroot00000000000000section1/ntbk.html https://mybinder.org/v2/git/https%3A//opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities/foo?urlpath=tree/docs/section1/ntbk.ipynb https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities&urlpath=tree/3dutilities/docs/section1/ntbk.ipynb&branch=foo section1/ntbkmd.html https://mybinder.org/v2/git/https%3A//opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities/foo?urlpath=tree/docs/section1/ntbkmd.md https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities&urlpath=tree/3dutilities/docs/section1/ntbkmd.md&branch=foo sphinx-book-theme-1.1.4/tests/test_build/header__launch-buttons--github.html000066400000000000000000000020731475565312500272350ustar00rootroot00000000000000section1/ntbk.html https://mybinder.org/v2/gh/executablebooks/sphinx-book-theme/foo?urlpath=tree/docs/section1/ntbk.ipynb https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//github.com/executablebooks/sphinx-book-theme&urlpath=tree/sphinx-book-theme/docs/section1/ntbk.ipynb&branch=foo https://colab.research.google.com/github/executablebooks/sphinx-book-theme/blob/foo/docs/section1/ntbk.ipynb https://deepnote.com/launch?url=https%3A%2F%2Fgithub.com%2Fexecutablebooks%2Fsphinx-book-theme%2Fblob%2Ffoo%2Fdocs/section1/ntbk.ipynb section1/ntbkmd.html https://mybinder.org/v2/gh/executablebooks/sphinx-book-theme/foo?urlpath=tree/docs/section1/ntbkmd.md https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//github.com/executablebooks/sphinx-book-theme&urlpath=tree/sphinx-book-theme/docs/section1/ntbkmd.md&branch=foo https://colab.research.google.com/github/executablebooks/sphinx-book-theme/blob/foo/docs/section1/ntbkmd.md https://deepnote.com/launch?url=https%3A%2F%2Fgithub.com%2Fexecutablebooks%2Fsphinx-book-theme%2Fblob%2Ffoo%2Fdocs/section1/ntbkmd.md sphinx-book-theme-1.1.4/tests/test_build/header__launch-buttons--gitlab.html000066400000000000000000000010031475565312500272050ustar00rootroot00000000000000section1/ntbk.html https://mybinder.org/v2/gl/gitlab-org%2Fgitlab/foo?urlpath=tree/docs/section1/ntbk.ipynb https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//gitlab.com/gitlab-org/gitlab&urlpath=tree/gitlab/docs/section1/ntbk.ipynb&branch=foo section1/ntbkmd.html https://mybinder.org/v2/gl/gitlab-org%2Fgitlab/foo?urlpath=tree/docs/section1/ntbkmd.md https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//gitlab.com/gitlab-org/gitlab&urlpath=tree/gitlab/docs/section1/ntbkmd.md&branch=foo sphinx-book-theme-1.1.4/tests/test_build/header__launch-buttons--gitlab_manual.html000066400000000000000000000011231475565312500305450ustar00rootroot00000000000000section1/ntbk.html https://mybinder.org/v2/git/https%3A//mywebsite.com/gitlab/gitlab-org/gitlab/foo?urlpath=tree/docs/section1/ntbk.ipynb https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//mywebsite.com/gitlab/gitlab-org/gitlab&urlpath=tree/gitlab/docs/section1/ntbk.ipynb&branch=foo section1/ntbkmd.html https://mybinder.org/v2/git/https%3A//mywebsite.com/gitlab/gitlab-org/gitlab/foo?urlpath=tree/docs/section1/ntbkmd.md https://hub.myorg.edu/hub/user-redirect/git-pull?repo=https%3A//mywebsite.com/gitlab/gitlab-org/gitlab&urlpath=tree/gitlab/docs/section1/ntbkmd.md&branch=foo sphinx-book-theme-1.1.4/tests/test_build/header__repo-buttons--all-off.html000066400000000000000000000042761475565312500267750ustar00rootroot00000000000000
sphinx-book-theme-1.1.4/tests/test_build/header__repo-buttons--all-on.html000066400000000000000000000075651475565312500266430ustar00rootroot00000000000000
sphinx-book-theme-1.1.4/tests/test_build/header__repo-buttons--custom-branch.html000066400000000000000000000064151475565312500302170ustar00rootroot00000000000000
sphinx-book-theme-1.1.4/tests/test_build/header__repo-buttons--one-on.html000066400000000000000000000050121475565312500266350ustar00rootroot00000000000000
sphinx-book-theme-1.1.4/tests/test_build/header__source-buttons--bitbucket.html000066400000000000000000000005541475565312500277570ustar00rootroot00000000000000https://opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities https://opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities/src/main/section1/ntbk.ipynb https://opensource.ncsa.illinois.edu/bitbucket/scm/u3d/3dutilities/src/main/section1/ntbk.ipynb?mode=edit sphinx-book-theme-1.1.4/tests/test_build/header__source-buttons--github.html000066400000000000000000000007641475565312500272700ustar00rootroot00000000000000https://github.com/executablebooks/sphinx-book-theme https://github.com/executablebooks/sphinx-book-theme/blob/main/section1/ntbk.ipynb?plain=1 https://github.com/executablebooks/sphinx-book-theme/edit/main/section1/ntbk.ipynb https://github.com/executablebooks/sphinx-book-theme/issues/new?title=Issue%20on%20page%20%2Fsection1/ntbk.html&body=Your%20issue%20content%20here. sphinx-book-theme-1.1.4/tests/test_build/header__source-buttons--github_manual.html000066400000000000000000000005211475565312500306140ustar00rootroot00000000000000https://gh.mycompany.com/executablebooks/sphinx-book-theme https://gh.mycompany.com/executablebooks/sphinx-book-theme/blob/main/section1/ntbk.ipynb?plain=1 https://gh.mycompany.com/executablebooks/sphinx-book-theme/edit/main/section1/ntbk.ipynb sphinx-book-theme-1.1.4/tests/test_build/header__source-buttons--gitlab.html000066400000000000000000000007071475565312500272450ustar00rootroot00000000000000https://gitlab.com/gitlab-org/gitlab https://gitlab.com/gitlab-org/gitlab/-/blob/main/section1/ntbk.ipynb https://gitlab.com/gitlab-org/gitlab/-/edit/main/section1/ntbk.ipynb https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Issue%20on%20page%20%2Fsection1/ntbk.html&issue[description]=Your%20issue%20content%20here. sphinx-book-theme-1.1.4/tests/test_build/header__source-buttons--gitlab_manual.html000066400000000000000000000007571475565312500306070ustar00rootroot00000000000000https://mywebsite.com/gitlab/gitlab-org/gitlab https://mywebsite.com/gitlab/gitlab-org/gitlab/-/blob/main/section1/ntbk.ipynb https://mywebsite.com/gitlab/gitlab-org/gitlab/-/edit/main/section1/ntbk.ipynb https://mywebsite.com/gitlab/gitlab-org/gitlab/-/issues/new?issue[title]=Issue%20on%20page%20%2Fsection1/ntbk.html&issue[description]=Your%20issue%20content%20here. sphinx-book-theme-1.1.4/tests/test_build/test_header_launchbtns.html000066400000000000000000000050371475565312500257760ustar00rootroot00000000000000 sphinx-book-theme-1.1.4/tests/test_build/test_marginnote.html000066400000000000000000000015401475565312500244630ustar00rootroot00000000000000

2.2. Marginnotes #

Some text to test out one marginnote This is a marginnote. and another marginnote This is another marginnote .

This is the end of Page 2.

sphinx-book-theme-1.1.4/tests/test_build/test_marginnote_6.html000066400000000000000000000015451475565312500247150ustar00rootroot00000000000000

2.2. Marginnotes #

Some text to test out one marginnote This is a marginnote. and another marginnote This is another marginnote .

This is the end of Page 2.

sphinx-book-theme-1.1.4/tests/test_build/test_right_sidebar_title.html000066400000000000000000000001571475565312500263320ustar00rootroot00000000000000
My test content title
sphinx-book-theme-1.1.4/tests/test_build/test_sidenote.html000066400000000000000000000016361475565312500241400ustar00rootroot00000000000000

2.1. Sidenotes #

Some text to test out one sidenote 1 This is a sidenote. and another sidenote 2 This is another sidenote .

sphinx-book-theme-1.1.4/tests/test_build/test_sidenote_6.html000066400000000000000000000016431475565312500243630ustar00rootroot00000000000000

2.1. Sidenotes #

Some text to test out one sidenote 1 This is a sidenote. and another sidenote 2 This is another sidenote .

sphinx-book-theme-1.1.4/tests/test_locale_convert.py000066400000000000000000000015371475565312500226530ustar00rootroot00000000000000from sphinx_book_theme._compile_translations import convert_json def test_convert(tmp_path, monkeypatch): # Generate folder structures needed path_translation = tmp_path / "assets" / "translations" path_jsons = path_translation / "jsons" path_compiled = tmp_path / "theme" / "sphinx_book_theme" / "static" / "locales" path_jsons.mkdir(parents=True) (path_jsons / "test.json").write_text( '[{"language":"English","symbol":"en","text":"Text"},' '{"language":"Other","symbol":"ot","text":"Translate"}]' ) monkeypatch.setattr("subprocess.check_call", lambda args: None) convert_json(path_translation) assert (path_compiled / "ot").exists() path_lc = path_compiled / "ot" / "LC_MESSAGES" assert (path_lc / "booktheme.po").exists() assert "Translate" in (path_lc / "booktheme.po").read_text("utf8") sphinx-book-theme-1.1.4/tox.ini000066400000000000000000000024621475565312500164120ustar00rootroot00000000000000# To use tox, see https://tox.readthedocs.io # Simply pip or conda install tox # If you use conda, you may also want to install tox-conda # then run `tox` or `tox -- {pytest args}` # To run in parallel using `tox -p` (this does not appear to work for this repo) # To rebuild the tox environment, for example when dependencies change, use # `tox -r` # Note: if the following error is encountered: `ImportError while loading conftest` # then then deleting compiled files has been found to fix it: `find . -name \*.pyc -delete` [tox] envlist = py310-sphinx6 [testenv] usedevelop=true passenv = TERM # To make terminal coloring / other variables pass through [testenv:py{39,310,311}-pre-commit] extras = code_style commands = pre-commit run {posargs} [testenv:compile] deps = sphinx-theme-builder[cli] commands = stb compile [testenv:docs-{update,clean}] extras = doc deps = sphinx-theme-builder[cli] whitelist_externals = rm commands = clean: rm -rf docs/_build sphinx-build -n --keep-going -b {posargs:html} docs/ docs/_build/{posargs:html} [testenv:docs-live] extras = doc deps = sphinx-theme-builder[cli] commands = stb serve docs --open-browser [testenv:py{39,310,311}-sphinx{5,6}] extras = test deps = sphinx5: sphinx>=5,<6 sphinx6: sphinx>=6,<7 commands = pytest {posargs} sphinx-book-theme-1.1.4/webpack.config.js000066400000000000000000000027321475565312500203150ustar00rootroot00000000000000// Webpack configuration for sphinx-book-theme const { resolve } = require("path"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); // Compile our translation files const { exec } = require("child_process"); exec("python src/sphinx_book_theme/_compile_translations.py"); // Paths for various assets (sources and destinations) const staticPath = resolve( __dirname, "src/sphinx_book_theme/theme/sphinx_book_theme/static", ); module.exports = { mode: "production", devtool: "source-map", entry: { "sphinx-book-theme": ["./src/sphinx_book_theme/assets/scripts/index.js"], }, output: { filename: "scripts/[name].js", path: staticPath, }, optimization: { minimizer: ["...", new CssMinimizerPlugin()] }, module: { rules: [ { test: /\.scss$/, use: [ { loader: MiniCssExtractPlugin.loader }, // Interprets `@import` and `url()` like `import/require()` and will resolve them { loader: "css-loader", options: { url: false, }, }, { // Loads a SASS/SCSS file and compiles it to CSS loader: "sass-loader", options: { sassOptions: { outputStyle: "expanded" }, }, }, ], }, ], }, plugins: [ new MiniCssExtractPlugin({ filename: "styles/[name].css", }), ], };