From 7b284714d9b31db0a3e4d21bedac42d3e75b0ff5 Mon Sep 17 00:00:00 2001 From: Rambaud Pierrick <12rambau@users.noreply.github.com> Date: Tue, 17 Oct 2023 15:22:10 +0000 Subject: [PATCH 1/7] test: add a codecov token to the coverage pipeline --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 74f276b08..92f8141b2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -96,6 +96,7 @@ jobs: if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest' uses: codecov/codecov-action@v3.1.4 with: + token: ${{ secrets.CODECOV_TOKEN }} files: cov.xml fail_ci_if_error: true From b1ef5eccd97726e3c40ba7b08593faedc8b3b03f Mon Sep 17 00:00:00 2001 From: Rambaud Pierrick <12rambau@users.noreply.github.com> Date: Wed, 18 Oct 2023 07:20:36 +0000 Subject: [PATCH 2/7] trigger CI From e106b64d2faf04cd2fc9640fcd9a0a192f6ea934 Mon Sep 17 00:00:00 2001 From: Rambaud Pierrick <12rambau@users.noreply.github.com> Date: Wed, 18 Oct 2023 08:04:08 +0000 Subject: [PATCH 3/7] fix: use default filename --- .github/workflows/tests.yml | 5 ++--- pyproject.toml | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 92f8141b2..49c19412d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -91,13 +91,12 @@ jobs: pip install nox nox -s compile - name: Run tests - run: pytest -m "not a11y" --color=yes --cov pydata_sphinx_theme --cov-branch --cov-report xml:cov.xml --cov-report= --cov-fail-under ${{ env.COVERAGE_THRESHOLD }} + run: pytest -m "not a11y" --color=yes --cov --cov-branch --cov-report=xml --cov-fail-under ${{ env.COVERAGE_THRESHOLD }} - name: Upload to Codecov if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest' - uses: codecov/codecov-action@v3.1.4 + uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} - files: cov.xml fail_ci_if_error: true # note I am setting this on top of the Python cache as I could not find diff --git a/pyproject.toml b/pyproject.toml index 221518678..fb39f7f49 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -115,3 +115,6 @@ ignore = "H006,J018,T003,H025" [tool.pytest.ini_options] markers = "a11y: mark a test as an accessibility test" + +[tool.coverage.run] +source = ["pydata_sphinx_theme"] From 26478b47503e6ea3b8d7b96f264123097f53358a Mon Sep 17 00:00:00 2001 From: Rambaud Pierrick <12rambau@users.noreply.github.com> Date: Wed, 18 Oct 2023 08:06:36 +0000 Subject: [PATCH 4/7] fix: stop checking branches as codecov don't display them --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 49c19412d..0bca9180e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -91,7 +91,7 @@ jobs: pip install nox nox -s compile - name: Run tests - run: pytest -m "not a11y" --color=yes --cov --cov-branch --cov-report=xml --cov-fail-under ${{ env.COVERAGE_THRESHOLD }} + run: pytest -m "not a11y" --color=yes --cov --cov-report=xml --cov-fail-under ${{ env.COVERAGE_THRESHOLD }} - name: Upload to Codecov if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest' uses: codecov/codecov-action@v3 From 85b91b41a1ca45f3e22f5720e2befa88a89763a4 Mon Sep 17 00:00:00 2001 From: Rambaud Pierrick <12rambau@users.noreply.github.com> Date: Wed, 18 Oct 2023 08:15:22 +0000 Subject: [PATCH 5/7] refactor: set fail_under parameter in pyproject --- .github/workflows/tests.yml | 5 +---- pyproject.toml | 3 +++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0bca9180e..178005863 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -20,9 +20,6 @@ on: pull_request: workflow_call: -env: - COVERAGE_THRESHOLD: 60 - jobs: lint: strategy: @@ -91,7 +88,7 @@ jobs: pip install nox nox -s compile - name: Run tests - run: pytest -m "not a11y" --color=yes --cov --cov-report=xml --cov-fail-under ${{ env.COVERAGE_THRESHOLD }} + run: pytest -m "not a11y" --color=yes --cov --cov-report=xml - name: Upload to Codecov if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest' uses: codecov/codecov-action@v3 diff --git a/pyproject.toml b/pyproject.toml index fb39f7f49..031b8ebf3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,3 +118,6 @@ markers = "a11y: mark a test as an accessibility test" [tool.coverage.run] source = ["pydata_sphinx_theme"] + +[tool.coverage.report] +fail_under = 60 From 73041157df145b53ae838c5e5854e242d0ecc6a2 Mon Sep 17 00:00:00 2001 From: Rambaud Pierrick <12rambau@users.noreply.github.com> Date: Thu, 19 Oct 2023 05:05:45 -0700 Subject: [PATCH 6/7] get back green tests ! (#13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * BUG - Clear alt_text in conf.py (#1471) * comment out alt_text in conf.py * set alt_text to empty string * remove alt_text from conf.py * fix: use 12rambau fork until it's merged with nikeee repo (#1517) * deps: drop support for Sphinx 5 (#1516) * remove ref to myst-nb * update minimal supported version of sphinx * Fix: (webpack.config.js) css-loader API change (#1508) * Fix: (webpack.config.js) css-loader API change The build was broken in /. This change fixes the build, and it seems to be in accordance with the current API as described at . Closes . * dedup * restore version bump --------- Co-authored-by: Daniel McCloy * Fix duplicate HTML IDs (#1425) * Fix duplicate HTML IDs * fix tests * Do not animate the version admonitions colors. (#1424) Otherwise a delay has to be added to the accessibility color contrast checks, to wait for the colors to fully transition. * BUG - Remove redundant ARIA in breadcrumb navigation (#1426) * style(i18n): French Typo fixed (#1430) * Add the ability to add a center section to the footer (#1432) * Add a center section for the footer * Add docs for footer_center * Add a test site for the center footer * test it in our own docs * remove new test site * add footer test --------- Co-authored-by: Daniel McCloy * Build(deps): Bump actions/checkout from 3 to 4 (#1433) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add dropdown_text argument to generate_header_nav_html (#1423) * Add dropdown_text argument to generate_header_nav_html * Add a test, fix typo in theme.conf and remove header_dropdown_text from docs/conf.py * fixed? --------- Co-authored-by: Daniel McCloy * fix: rollback ref and Id changes (#1438) * bump: version 0.13.3 → 0.14.0 (#1440) * bump version * update version switcher * back to dev * fix: change the z-index of the dropdown (#1442) In order to be on top of the primary sidebar on small screens. * fix: set the same background for dark/light (#1443) * fix: set the same background for dark/light et the same background color for all state of the search field. It is currently only applied when hovered * fix: wrong css selector * Update src/pydata_sphinx_theme/assets/styles/components/_search.scss * Update src/pydata_sphinx_theme/assets/styles/components/_search.scss * Fix duplicate HTML IDs * fix tests * unique_html_id * backwards-compat generate_header_nav_html * feedback review * update fixture * ughhhh...caching * code cleanup * fix test snapshot * put comment inside def --------- Signed-off-by: dependabot[bot] Co-authored-by: Denis Bitouzé Co-authored-by: Stuart Mumford Co-authored-by: Daniel McCloy Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alenka Frim Co-authored-by: Rambaud Pierrick <12rambau@users.noreply.github.com> * chore: build the devcontainer automatically in codespace (#1483) * chore: build the devcontainer automaticallyin codespace * refactor: lint * add pandoc to the environment * Fix font color in search input box (#1524) * Fix color * Use --pst-color-text-base * docs: add DecentralChain (#1528) Co-authored-by: jourlez * Updates for file src/pydata_sphinx_theme/locale/en/LC_MESSAGES/sphinx.po in ru [Manual Sync] (#1527) i18n: Translate sphinx.po in ru [Manual Sync] 96% of minimum 20% translated source file: 'sphinx.po' on 'ru'. Sync of partially translated files: untranslated content is included with an empty translation or source language content depending on file format Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> * ignore transient errors in windows build CI (#1520) * use warning list * clean up notebook * refactor to pass on all platforms? * simplify * fix logic * iterate backwards * fix plaform detection? also don't log unnecessarily * ignore empty string warnings * remove notebook metawarning * Revert "remove notebook metawarning" This reverts commit 42f46723eb9eeea7603efb91fbfb6bdfa1de28b3. * try again * debug the mysterious empty warning * escape color codes * import * triage by intermittency, not by platform; better var names * simplify * fix list.remove * undo what I broke * Update tests/utils/check_warnings.py --------- Signed-off-by: dependabot[bot] Co-authored-by: gabalafou Co-authored-by: Adam Porter Co-authored-by: Daniel McCloy Co-authored-by: Denis Bitouzé Co-authored-by: Stuart Mumford Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alenka Frim Co-authored-by: Harutaka Kawamura Co-authored-by: jourlez Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- .devcontainer/devcontainer.json | 11 ++ .github/workflows/tests.yml | 4 +- docs/conf.py | 1 - docs/examples/gallery.md | 2 + docs/examples/pydata.ipynb | 19 -- package.json | 2 +- .../assets/styles/components/_search.scss | 1 + .../locale/ru/LC_MESSAGES/sphinx.po | 165 ++++++++++++++++++ .../components/version-switcher.html | 20 ++- src/pydata_sphinx_theme/toctree.py | 69 +++++--- src/pydata_sphinx_theme/utils.py | 7 + tests/intermittent_warning_list.txt | 2 + tests/test_build.py | 7 +- tests/test_build/navbar_switcher.html | 15 +- tests/utils/check_warnings.py | 44 +++-- tools/github_actions_install.sh | 6 +- webpack.config.js | 2 +- 17 files changed, 296 insertions(+), 81 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 src/pydata_sphinx_theme/locale/ru/LC_MESSAGES/sphinx.po create mode 100644 tests/intermittent_warning_list.txt diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..e8ad847b8 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,11 @@ +// container instruction for codespace users +{ + "name": "Python 3", + "image": "mcr.microsoft.com/devcontainers/python:1-3.10-bullseye", + "features": { + "ghcr.io/devcontainers-contrib/features/nox:2": {}, + "ghcr.io/devcontainers-contrib/features/pre-commit:2": {}, + "ghcr.io/rocker-org/devcontainer-features/pandoc:1": {} + }, + "postCreateCommand": "pre-commit install" +} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 178005863..3a797d44b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -134,7 +134,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: nikeee/setup-pandoc@v1 + # waiting for https://github.com/nikeee/setup-pandoc/pull/8 + # using 12rambau fork until then + - uses: 12rambau/setup-pandoc@test - name: Setup Python uses: actions/setup-python@v4 with: diff --git a/docs/conf.py b/docs/conf.py index 9fbca8c83..e8d564a63 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -161,7 +161,6 @@ "logo": { "text": "PyData Theme", "image_dark": "_static/logo-dark.svg", - "alt_text": "PyData Theme", }, "use_edit_page_button": True, "show_toc_level": 1, diff --git a/docs/examples/gallery.md b/docs/examples/gallery.md index e344ee969..888b6d416 100644 --- a/docs/examples/gallery.md +++ b/docs/examples/gallery.md @@ -43,4 +43,6 @@ Thanks for your support! link: https://docs.pyvista.org - title: Pastas link: https://pastas.readthedocs.io/ +- title: DecentralChain + link: https://docs.decentralchain.io/en/master/ ``` diff --git a/docs/examples/pydata.ipynb b/docs/examples/pydata.ipynb index 34a8da267..742a0b7c3 100644 --- a/docs/examples/pydata.ipynb +++ b/docs/examples/pydata.ipynb @@ -37,20 +37,6 @@ "## Matplotlib" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "nbsphinx": "hidden" - }, - "outputs": [], - "source": [ - "import matplotlib\n", - "\n", - "# avoid warnings upon doc build\n", - "matplotlib.set_loglevel(\"critical\")" - ] - }, { "cell_type": "code", "execution_count": null, @@ -69,11 +55,6 @@ "metadata": {}, "outputs": [], "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "matplotlib.set_loglevel(\"critical\")\n", - "\n", "rng = np.random.default_rng()\n", "data = rng.standard_normal((3, 100))\n", "fig, ax = plt.subplots()\n", diff --git a/package.json b/package.json index f992c9a7a..e767243ef 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "axe-core": "^4.6.3", "copy-webpack-plugin": "^11.0.0", - "css-loader": "^3.4.2", + "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^4.2.2", "dedent": "^0.7.0", "html-webpack-plugin": "^4.3.0", diff --git a/src/pydata_sphinx_theme/assets/styles/components/_search.scss b/src/pydata_sphinx_theme/assets/styles/components/_search.scss index 8a7a6bf4a..91ed09eb2 100644 --- a/src/pydata_sphinx_theme/assets/styles/components/_search.scss +++ b/src/pydata_sphinx_theme/assets/styles/components/_search.scss @@ -53,6 +53,7 @@ .form-control { background-color: var(--pst-color-background); + color: var(--pst-color-text-base); &:focus, &:focus-visible { diff --git a/src/pydata_sphinx_theme/locale/ru/LC_MESSAGES/sphinx.po b/src/pydata_sphinx_theme/locale/ru/LC_MESSAGES/sphinx.po new file mode 100644 index 000000000..0ab80aef9 --- /dev/null +++ b/src/pydata_sphinx_theme/locale/ru/LC_MESSAGES/sphinx.po @@ -0,0 +1,165 @@ +# English translations for pydata-sphinx-theme. +# Copyright (C) 2023 PyData developers +# This file is distributed under the same license as the pydata-sphinx-theme project. +# +# Translators: +# Rambaud Pierrick , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2023-02-16 14:32-0500\n" +"PO-Revision-Date: 2023-04-14 14:57+0000\n" +"Last-Translator: Rambaud Pierrick , 2023\n" +"Language-Team: Russian (https://app.transifex.com/12rambau/teams/166811/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.11.0\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/layout.html:50 +msgid "Skip to main content" +msgstr "Перейти к основному содержанию" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/search-button.html:7 +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/search.html:5 +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/search.html:28 +msgid "Search" +msgstr "Поиск" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/search.html:8 +msgid "Error" +msgstr "Ошибка" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/search.html:9 +msgid "Please activate JavaScript to enable the search functionality." +msgstr "Активируйте JavaScript, чтобы включить функцию поиска." + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/breadcrumbs.html:12 +msgid "Breadcrumbs" +msgstr "Навигационная цепочка" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/breadcrumbs.html:13 +msgid "Breadcrumb" +msgstr "Хлебная крошка" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/breadcrumbs.html:16 +msgid "Home" +msgstr "Главная" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/copyright.html:4 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Копирайт %(copyright)s." + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/copyright.html:7 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "© Копирайт %(copyright)s." + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/edit-this-page.html:9 +#, python-format +msgid "Edit on %(provider)s" +msgstr "Редактировать на %(provider)s" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/edit-this-page.html:11 +msgid "Edit" +msgstr "Редактировать" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/icon-links.html:31 +msgid "GitHub" +msgstr "GitHub" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/icon-links.html:32 +msgid "GitLab" +msgstr "GitLab" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/icon-links.html:33 +msgid "Bitbucket" +msgstr "Bitbucket" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/icon-links.html:34 +msgid "Twitter" +msgstr "Twitter" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/indices.html:2 +msgid "Indices" +msgstr "" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/indices.html:9 +msgid "General Index" +msgstr "Общий указатель" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/indices.html:13 +msgid "Global Module Index" +msgstr "Глобальный индекс модулей" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/indices.html:17 +msgid "Python Module Index" +msgstr "Индекс модулей Python" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/last-updated.html:2 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "Последнее обновление %(last_updated)s." + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/navbar-nav.html:5 +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/navbar-nav.html:6 +msgid "Site Navigation" +msgstr "Навигация по сайту" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/page-toc.html:4 +msgid "On this page" +msgstr "На этой странице" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/sidebar-nav-bs.html:2 +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/sidebar-nav-bs.html:3 +msgid "Section Navigation" +msgstr "В этом разделе" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/sourcelink.html:4 +msgid "Show Source" +msgstr "Просмотр исходного кода" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/sphinx-version.html:3 +#, python-format +msgid "" +"Created using Sphinx " +"%(sphinx_version)s." +msgstr "" +"Создано с помощью Sphinx " +"%(sphinx_version)s." + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-switcher.html:5 +msgid "light/dark" +msgstr "светлая/темная" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:2 +#, python-format +msgid "" +"Built with the PyData Sphinx Theme " +"%(theme_version)s." +msgstr "" +"Собрано с использованием темы PyData Sphinx " +"%(theme_version)s." + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/footer-article/prev-next.html:6 +msgid "previous page" +msgstr "предыдущая страница" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/footer-article/prev-next.html:9 +msgid "previous" +msgstr "назад" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/footer-article/prev-next.html:17 +msgid "next page" +msgstr "следующая страница" + +#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/footer-article/prev-next.html:19 +msgid "next" +msgstr "далее" diff --git a/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/version-switcher.html b/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/version-switcher.html index 5d07b9336..7f5ee9327 100644 --- a/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/version-switcher.html +++ b/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/version-switcher.html @@ -1,14 +1,24 @@ -{# As the version switcher will only work when JavaScript is enabled, we add it through JavaScript. - #} +{%- set button_id = unique_html_id("pst-version-switcher-button") -%} +{%- set dropdown_id = unique_html_id("pst-version-switcher-list") -%} +{# As the version switcher will only work when JavaScript is enabled, we add it through JavaScript. #}