From b2d3bd873a4335afdda7995c9fd5e178122a6872 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 20:37:50 +0200 Subject: [PATCH 01/13] docs: cleanup the docs --- .gitignore | 2 +- .pre-commit-config.yaml | 13 +- README.md | 2 +- .../images/pyopensci-logo-package-guide.png | Bin 0 -> 31308 bytes docs/conf.py | 5 +- docs/develop.md | 9 ++ docs/features.md | 67 --------- docs/index.md | 15 +- docs/showcase.md | 34 ++++- docs/use.md | 28 ++-- noxfile.py | 6 +- pyproject.toml | 1 - src/pyos_sphinx_theme/__init__.py | 136 ++++++++---------- .../assets/styles/pyos-sphinx-theme.scss | 6 + src/pyos_sphinx_theme/html2dirhtml.py | 2 +- .../static/styles/.gitignore | 2 +- .../theme/pyos_sphinx_theme/theme.conf | 2 +- src/pyos_sphinx_theme/video.py | 3 +- 18 files changed, 149 insertions(+), 184 deletions(-) create mode 100644 docs/_static/images/pyopensci-logo-package-guide.png delete mode 100644 docs/features.md diff --git a/.gitignore b/.gitignore index 9c58425..1ddfb22 100644 --- a/.gitignore +++ b/.gitignore @@ -156,4 +156,4 @@ cython_debug/ .nodeenv/* .DS_Store -node_modules/* \ No newline at end of file +node_modules/* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 294d4f3..28970e2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,4 +3,15 @@ repos: rev: 'v4.0.0-alpha.8' hooks: - id: prettier - types_or: [css, javascript, scss] \ No newline at end of file + types_or: [css, javascript, scss] + +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + # ref: https://github.com/pre-commit/pre-commit-hooks#hooks-available + hooks: + # Autoformat: Makes sure files end in a newline and only a newline. + - id: end-of-file-fixer + # Lint: Check for files with names that would conflict on a + # case-insensitive filesystem like MacOS HFS+ or Windows FAT. + - id: check-case-conflict + - id: trailing-whitespace diff --git a/README.md b/README.md index afa7142..4319d8f 100755 --- a/README.md +++ b/README.md @@ -10,4 +10,4 @@ github.com/pydata/sphinx-theme) for use with the [pyOpenSci](https://pyopensci.o Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! diff --git a/docs/_static/images/pyopensci-logo-package-guide.png b/docs/_static/images/pyopensci-logo-package-guide.png new file mode 100644 index 0000000000000000000000000000000000000000..cad4d0ff10c9105ffdd0b9f2c4c8f5cf402f1ad6 GIT binary patch literal 31308 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 z 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 \ No newline at end of file +``` --> diff --git a/docs/showcase.md b/docs/showcase.md index 0c24285..a9adc22 100644 --- a/docs/showcase.md +++ b/docs/showcase.md @@ -1,6 +1,34 @@ -# Showcase +# Showcase +## Admonitions -:::{note} hi +```{note} hi This is a note. -::: \ No newline at end of file +``` + +```{warning} hi +This is a warning. +``` + +```{tip} hi +This is a tip. +``` + +```{admonition} hi +This is an admonition. +``` + +```{seealso} hi +This is a seealso. +``` + +## images + +```{figure} _static/images/pyopensci-logo-package-guide.png +--- +name: pyopensci-logo-package-guide +width: 80% +alt: This is a logo. +--- +This is a logo. +``` diff --git a/docs/use.md b/docs/use.md index 7d91a91..5c72562 100644 --- a/docs/use.md +++ b/docs/use.md @@ -2,22 +2,16 @@ To use this theme in a repository, follow these steps: -- Add this theme to the `pip` install requirements of the repo. For now, point it to the `main` branch like so: +To install the theme, run: - ``` - # in requirements.txt - git+https://github.com/2i2c-org/sphinx-2i2c-theme - ``` - - or to install locally - - ```console - $ pip install git+https://github.com/2i2c-org/sphinx-2i2c-theme - ``` -- Configure the Sphinx docs to use the theme by editing `conf.py` +```bash +pip install pyos-sphinx-theme +``` - ```python - html_theme = "sphinx_2i2c_theme" - ``` - -- Make any customizations that you wish, following the [sphinx book theme documenation](https://sphinx-book-theme.readthedocs.io). +Then, in your `conf.py`, add: + +```python +html_theme = "pyos_sphinx_theme" +``` + +This will build the theme in directory `docs/_build/html`.You can then open `docs/_build/html/index.html` to see the theme in action. diff --git a/noxfile.py b/noxfile.py index b7fe180..e3f7841 100644 --- a/noxfile.py +++ b/noxfile.py @@ -10,9 +10,7 @@ nox -s docs -- -r """ import nox -import os import pathlib -import shutil import nox nox.options.reuse_existing_virtualenvs = True @@ -48,7 +46,7 @@ def docs(session): """Build the packaging guide.""" session.install("-e", ".") session.run(SPHINX_BUILD, *BUILD_PARAMETERS, SOURCE_DIR, OUTPUT_DIR, *session.posargs) - + @nox.session(name="docs-live") def docs_live(session): @@ -73,7 +71,7 @@ def docs_live(session): # for folder in AUTOBUILD_INCLUDE: # cmd.extend(["--watch", folder]) session.run(*cmd) - + @nox.session(name="docs-test") def docs_test(session): """ diff --git a/pyproject.toml b/pyproject.toml index b063521..1e4b1cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,6 @@ description = "PyOS Documentation Theme." dynamic = ["version"] readme = "README.md" - requires-python = ">=3.9" dependencies = [ "pydata-sphinx-theme", diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 70e63bf..11fabd3 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -4,8 +4,12 @@ from sphinx.util import logging from pydata_sphinx_theme.utils import config_provided_by_user -from .video import Video -from .html2dirhtml import redirect_from_html_to_dirhtml + +# disable the video directive and html2dirhtml redirection because they are not implemented yet with this theme +from .video import Video # activate this line to enable the video directive +from .html2dirhtml import redirect_from_html_to_dirhtml # nactivate this line to enable the html2dirhtml redirection + + __version__ = "0.0.1dev0" LOGGER = logging.getLogger(__name__) @@ -24,51 +28,42 @@ def update_config(app): # These are the theme options that will be used in the build theme_options = app.config.html_theme_options - - if "ogp_site_url" not in app.config: - app.config.ogp_site_url = "https://2i2c.org" - - - # If no URL is set, don't generate social previews - if not config_provided_by_user(app, "ogp_site_url"): - app.config.ogp_site_url = "2i2c.org" - + # add icons to the navbar if "icon_links" not in theme_options: - + theme_options["icon_links"] =[ - { - "name": "Twitter", - "url": "https://twitter.com/2i2c_org", - "icon": "fa-brands fa-twitter", - }, - { - "name": "Mastodon", - "url": "https://hachyderm.io/@2i2c_org", - "icon": "fa-brands fa-mastodon", - # This allows us to verify this page in Mastodon - "attributes": { - "rel" : "me", - }, - }, - { - "name": "Contact", - "url": "https://2i2c.org/#contact", - "icon": "fas fa-envelope", - }, - { - "name": "Blog", - "url": "https://2i2c.org/blog", - "icon": "fas fa-newspaper", - }, - ] - + { + "name": "Mastodon", + "url": "https://fosstodon.org/@pyOpenSci", + "icon": "fa-brands fa-mastodon", + }, + ] + + if "external_links" not in theme_options: + theme_options["external_links"] = [ + { + "url": "https://www.pyopensci.org", + "name": "pyOpenSci Website", + }, + { + "url": "https://www.pyopensci.org/software-peer-review", + "name": "Peer Review Guide", + }, + { + "url": "https://pyopensci.org/handbook", + "name": "Handbook", + }, + ] + if not "logo" in theme_options: theme_options["logo"] = { - "image_dark": LOGO_DARK, - "image_light": LOGO_LIGHT, - } - + "image_dark": LOGO_DARK, + "image_light": LOGO_LIGHT + } + + if not "header_links_before_dropdown" in theme_options: + theme_options["header_links_before_dropdown"] = 4 # Social previews config social_cards = app.config.__dict__.get("ogp_social_cards", {}) @@ -81,55 +76,50 @@ def update_config(app): app.config.ogp_social_cards = social_cards -def hash_html_assets(app, pagename, templatename, context, doctree): - assets = ["styles/pyos-sphinx-theme.css"] - # hash_assets_for_files(assets, THEME_PATH / "static", context, app) +def activate_extensions(app, extensions): + """Activate extensions bundled with this theme. -# def activate_extensions(app, extensions): -# """Activate extensions bundled with this theme. - -# This also manually triggers the `config-inited` build step to account for -# added extensions that hook into this event. -# """ + This also manually triggers the `config-inited` build step to account for + added extensions that hook into this event. + """ -# # Remove all of the `config-inited` event listeners because they've already triggered -# # We'll then re-trigger this event after adding extensions so that *only* their event hooks trigger -# old_listeners = app.events.listeners["config-inited"] -# app.events.listeners["config-inited"] = [] + # Remove all of the `config-inited` event listeners because they've already triggered + # We'll then re-trigger this event after adding extensions so that *only* their event hooks trigger + old_listeners = app.events.listeners["config-inited"] + app.events.listeners["config-inited"] = [] -# # Activate a few extensions by default -# for extension in extensions: -# # If it's already been activated just skip it -# if extension in app.config.extensions: -# continue -# app.setup_extension(extension) + # Activate a few extensions by default + for extension in extensions: + # If it's already been activated just skip it + if extension in app.config.extensions: + continue + app.setup_extension(extension) -# # Emit the config-inited event so that the new extensions run their hooks -# app.emit("config-inited", app.config) + # Emit the config-inited event so that the new extensions run their hooks + app.emit("config-inited", app.config) -# # Finally join back the lists -# app.events.listeners["config-inited"][:0] = old_listeners + # Finally join back the lists + app.events.listeners["config-inited"][:0] = old_listeners def setup(app): app.add_html_theme("pyos_sphinx_theme", THEME_PATH) app.config.html_favicon = "https://www.pyopensci.org/images/favicon.ico" app.connect("builder-inited", update_config) - app.connect("html-page-context", hash_html_assets) - app.connect("html-page-context", redirect_from_html_to_dirhtml) + # app.connect("html-page-context", redirect_from_html_to_dirhtml) app.add_css_file("static/styles/pyos-sphinx-theme.css") app.add_js_file("static/scripts/matomo.js") app.add_css_file("https://fonts.gstatic.com", rel="preconnect") app.add_css_file("https://fonts.googleapis.com/css2?family=Itim&family=Poppins:wght@400;700&family=Work+Sans:wght@400;700") - # add_extensions = ["sphinx_copybutton", - # "sphinx_togglebutton", - # "sphinxext.opengraph", - # "sphinx.ext.intersphinx", - # "sphinx_design", + # add_extensions = ["sphinx_copybutton", + # "sphinx_togglebutton", + # "sphinxext.opengraph", + # "sphinx.ext.intersphinx", + # "sphinx_design", # "sphinx_sitemap",] - # activate_extensions(app, add_extensions) +# activate_extensions(app, add_extensions) # Video directive # app.add_directive("video", Video) diff --git a/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss b/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss index 2e9973e..bbb4d3e 100644 --- a/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss +++ b/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss @@ -268,3 +268,9 @@ ugly scrollbar to show all the time background-color: #185355; /* Darker shade of #216A6B */ color: #fff; } + +@media (min-width: 960px) { + .col-lg-3 { + width: fit-content; + } +} diff --git a/src/pyos_sphinx_theme/html2dirhtml.py b/src/pyos_sphinx_theme/html2dirhtml.py index a5f6781..6b46ccc 100644 --- a/src/pyos_sphinx_theme/html2dirhtml.py +++ b/src/pyos_sphinx_theme/html2dirhtml.py @@ -36,4 +36,4 @@ def redirect_from_html_to_dirhtml(app, pagename, templatename, context, doctree) LOGGER.info(f"Redirecting {pagename}.html to {pagename}") elif app.builder.name == "html": - LOGGER.warn("Use the dirhtml builder instead of html builder!") \ No newline at end of file + LOGGER.warn("Use the dirhtml builder instead of html builder!") diff --git a/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/styles/.gitignore b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/styles/.gitignore index c96a04f..d6b7ef3 100644 --- a/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/styles/.gitignore +++ b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/styles/.gitignore @@ -1,2 +1,2 @@ * -!.gitignore \ No newline at end of file +!.gitignore diff --git a/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/theme.conf b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/theme.conf index 2111c46..2902956 100644 --- a/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/theme.conf +++ b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/theme.conf @@ -5,4 +5,4 @@ stylesheet = styles/pyos-sphinx-theme.css [options] # Myst syntax extensions -myst_enable_extensions = ["colon_fence",] \ No newline at end of file +myst_enable_extensions = ["colon_fence",] diff --git a/src/pyos_sphinx_theme/video.py b/src/pyos_sphinx_theme/video.py index 01cc234..d202cc0 100644 --- a/src/pyos_sphinx_theme/video.py +++ b/src/pyos_sphinx_theme/video.py @@ -34,8 +34,7 @@ def run(self): iframe = IFRAME_TEMPLATE.format(width=width, height=height, src=f"https://www.youtube.com/embed/{uid}") else: raise ValueError(f"Unidentified video link: {link}") - + # Use a raw pass-through node para = nodes.raw("", iframe, format="html") return [para] - \ No newline at end of file From e77d37f07d82cf161eb0ed0b279053aa0bd473b4 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 22:05:17 +0200 Subject: [PATCH 02/13] docs: cleanup the docs --- pyproject.toml | 2 +- src/pyos_sphinx_theme/__init__.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1e4b1cf..6dc6608 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ readme = "README.md" requires-python = ">=3.9" dependencies = [ - "pydata-sphinx-theme", + "pydata-sphinx-theme==0.15.2", "sphinx", "myst_nb", "sphinxext-opengraph", diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 11fabd3..81459e8 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -9,8 +9,6 @@ from .video import Video # activate this line to enable the video directive from .html2dirhtml import redirect_from_html_to_dirhtml # nactivate this line to enable the html2dirhtml redirection - - __version__ = "0.0.1dev0" LOGGER = logging.getLogger(__name__) From c64b6c38a1c384fbbdde19953168e668215e4610 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 22:35:15 +0200 Subject: [PATCH 03/13] docs: cleanup the docs --- README.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/README.md b/README.md index d7bfae9..09bae23 100755 --- a/README.md +++ b/README.md @@ -12,20 +12,5 @@ github.com/pydata/sphinx-theme) for use with the [pyOpenSci](https://pyopensci.o ## Contributors Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - - - - - - -
Revathy Venugopal
Revathy Venugopal

💻 👀
- - - - - This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! From 85b3798ebfb051d4d5495188e7b5a224cc56ff05 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 23:13:42 +0200 Subject: [PATCH 04/13] docs: cleanup the docs --- src/pyos_sphinx_theme/__init__.py | 18 +++--------------- src/pyos_sphinx_theme/assets/scripts/.gitkeep | 0 2 files changed, 3 insertions(+), 15 deletions(-) create mode 100644 src/pyos_sphinx_theme/assets/scripts/.gitkeep diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 81459e8..83e42c7 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -13,15 +13,9 @@ LOGGER = logging.getLogger(__name__) THIS_PATH = Path(__file__).parent.resolve() -THEME_PATH = (THIS_PATH / "theme" / "pyos_sphinx_theme").resolve() -LOGO_LIGHT = THIS_PATH / "assets" / "images" / "logo-light-mode.png" -# change windows path to linux path -LOGO_LIGHT = str(LOGO_LIGHT).replace("\\", "/") -LOGO_DARK = THIS_PATH / "assets" / "images" / "logo-dark-mode.png" -LOGO_DARK = str(LOGO_DARK).replace("\\", "/") -PYOS_PACKAGE_LOGO = THIS_PATH / "assets" / "images" / "pyopensci-logo-package-guide.png" -STYLE_PATH = THIS_PATH / "assets" / "styles" / "pyos-sphinx-theme.css" - +THEME_PATH = THIS_PATH / "theme" / "pyos_sphinx_theme" +LOGO_LIGHT = str((THIS_PATH / "assets" / "images" / "logo-light-mode.png").absolute()).replace("\\", "/") +LOGO_DARK = str((THIS_PATH / "assets" / "images" / "logo-dark-mode.png").absolute()).replace("\\", "/") def update_config(app): # These are the theme options that will be used in the build @@ -111,12 +105,6 @@ def setup(app): app.add_css_file("https://fonts.gstatic.com", rel="preconnect") app.add_css_file("https://fonts.googleapis.com/css2?family=Itim&family=Poppins:wght@400;700&family=Work+Sans:wght@400;700") - # add_extensions = ["sphinx_copybutton", - # "sphinx_togglebutton", - # "sphinxext.opengraph", - # "sphinx.ext.intersphinx", - # "sphinx_design", - # "sphinx_sitemap",] # activate_extensions(app, add_extensions) # Video directive diff --git a/src/pyos_sphinx_theme/assets/scripts/.gitkeep b/src/pyos_sphinx_theme/assets/scripts/.gitkeep new file mode 100644 index 0000000..e69de29 From 915687c9f68095d754dc69753d84ca448788cb5c Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 23:15:59 +0200 Subject: [PATCH 05/13] docs: cleanup the workflow --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cda0a41..c0a7000 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,13 +47,13 @@ jobs: uses: peaceiris/actions-gh-pages@v3.9.3 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: "./_build/html" + publish_dir: "./docs/_build/html" # Test for bad links and ensure alt tags for usability - name: Check HTML using htmlproofer uses: chabad360/htmlproofer@master with: - directory: ./_build/html + directory: ./docs/_build/html arguments: | --ignore-files "/.+\/_static\/.+/" --ignore-status-codes "0, 200, 301, 401, 403, 503" @@ -65,4 +65,4 @@ jobs: with: name: book-html path: | - ./_build/html + ./docs/_build/html From 16deda28540d2f266472b1e7502caff86fe0a0ce Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 23:21:56 +0200 Subject: [PATCH 06/13] docs: cleanup the workflow --- .github/workflows/build.yml | 6 +++--- .gitignore | 1 + noxfile.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c0a7000..cda0a41 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,13 +47,13 @@ jobs: uses: peaceiris/actions-gh-pages@v3.9.3 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: "./docs/_build/html" + publish_dir: "./_build/html" # Test for bad links and ensure alt tags for usability - name: Check HTML using htmlproofer uses: chabad360/htmlproofer@master with: - directory: ./docs/_build/html + directory: ./_build/html arguments: | --ignore-files "/.+\/_static\/.+/" --ignore-status-codes "0, 200, 301, 401, 403, 503" @@ -65,4 +65,4 @@ jobs: with: name: book-html path: | - ./docs/_build/html + ./_build/html diff --git a/.gitignore b/.gitignore index 1ddfb22..723051f 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,7 @@ instance/ # Sphinx documentation docs/_build/ +_build/ # PyBuilder .pybuilder/ diff --git a/noxfile.py b/noxfile.py index e3f7841..ec600d0 100644 --- a/noxfile.py +++ b/noxfile.py @@ -19,7 +19,7 @@ # Sphinx output and source directories SOURCE_DIR = pathlib.Path("docs") -BUILD_DIR = pathlib.Path(SOURCE_DIR, "_build") +BUILD_DIR = pathlib.Path("_build") OUTPUT_DIR = pathlib.Path(BUILD_DIR, "html") nox.options.reuse_existing_virtualenvs = True From 7ff9cda2da01b4e4196017da851e8ddaa51d0cc8 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 23:29:47 +0200 Subject: [PATCH 07/13] docs: cleanup the workflow --- src/pyos_sphinx_theme/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 83e42c7..762795c 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -100,8 +100,8 @@ def setup(app): app.config.html_favicon = "https://www.pyopensci.org/images/favicon.ico" app.connect("builder-inited", update_config) # app.connect("html-page-context", redirect_from_html_to_dirhtml) - app.add_css_file("static/styles/pyos-sphinx-theme.css") - app.add_js_file("static/scripts/matomo.js") + # app.add_css_file("static/styles/pyos-sphinx-theme.css") + # app.add_js_file("static/scripts/matomo.js") app.add_css_file("https://fonts.gstatic.com", rel="preconnect") app.add_css_file("https://fonts.googleapis.com/css2?family=Itim&family=Poppins:wght@400;700&family=Work+Sans:wght@400;700") From 6cbc57822f135c4639f79dde2bce72f557e2fdad Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Sun, 14 Jul 2024 23:41:42 +0200 Subject: [PATCH 08/13] docs: cleanup the static files --- src/pyos_sphinx_theme/__init__.py | 3 --- src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss | 7 +++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 762795c..8d9cc5d 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -102,9 +102,6 @@ def setup(app): # app.connect("html-page-context", redirect_from_html_to_dirhtml) # app.add_css_file("static/styles/pyos-sphinx-theme.css") # app.add_js_file("static/scripts/matomo.js") - - app.add_css_file("https://fonts.gstatic.com", rel="preconnect") - app.add_css_file("https://fonts.googleapis.com/css2?family=Itim&family=Poppins:wght@400;700&family=Work+Sans:wght@400;700") # activate_extensions(app, add_extensions) # Video directive diff --git a/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss b/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss index bbb4d3e..bb7358c 100644 --- a/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss +++ b/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss @@ -274,3 +274,10 @@ ugly scrollbar to show all the time width: fit-content; } } + +.bd-header .navbar-nav li a.nav-link:hover { + text-decoration: none; + text-decoration-thickness: none; + border-bottom: max(3px, .1875rem, .12em) solid var(--pst-color-link-hover); + text-underline-offset: none; +} \ No newline at end of file From 859987f667f4a665afbd0286226a672a2f4cffd8 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Mon, 15 Jul 2024 00:04:01 +0200 Subject: [PATCH 09/13] docs: cleanup the static files --- src/pyos_sphinx_theme/__init__.py | 3 +++ .../assets/styles/pyos-sphinx-theme.scss | 19 +++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 8d9cc5d..762795c 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -102,6 +102,9 @@ def setup(app): # app.connect("html-page-context", redirect_from_html_to_dirhtml) # app.add_css_file("static/styles/pyos-sphinx-theme.css") # app.add_js_file("static/scripts/matomo.js") + + app.add_css_file("https://fonts.gstatic.com", rel="preconnect") + app.add_css_file("https://fonts.googleapis.com/css2?family=Itim&family=Poppins:wght@400;700&family=Work+Sans:wght@400;700") # activate_extensions(app, add_extensions) # Video directive diff --git a/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss b/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss index bb7358c..1a2367b 100644 --- a/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss +++ b/src/pyos_sphinx_theme/assets/styles/pyos-sphinx-theme.scss @@ -1,6 +1,5 @@ -// Load the book theme because we re-use most of its CSS -// Book theme is in `styles/`, as is this theme's CSS -@import "sphinx-book-theme.css"; + +@import "pydata_sphinx_theme.css"; // Load theme-specific SCSS @import "abstract/variables"; @@ -14,7 +13,7 @@ font-family: "Poppins"; font-style: normal; font-weight: 400; - src: url("./fonts/poppins-v20-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/poppins-v20-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* poppins-italic - latin */ @@ -23,7 +22,7 @@ font-family: "Poppins"; font-style: italic; font-weight: 400; - src: url("./fonts/poppins-v20-latin-italic.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/poppins-v20-latin-italic.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* poppins-700 - latin */ @@ -32,7 +31,7 @@ font-family: "Poppins"; font-style: normal; font-weight: 700; - src: url("./fonts/poppins-v20-latin-700.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/poppins-v20-latin-700.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* poppins-700italic - latin */ @@ -41,7 +40,7 @@ font-family: "Poppins"; font-style: italic; font-weight: 700; - src: url("./fonts/poppins-v20-latin-700italic.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/poppins-v20-latin-700italic.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* itim-regular - latin */ @@ -50,7 +49,7 @@ font-family: "Itim"; font-style: normal; font-weight: 400; - src: url("./fonts/itim-v14-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/itim-v14-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* poppins-500 - latin */ @@ -59,7 +58,7 @@ font-family: "Poppins"; font-style: normal; font-weight: 500; - src: url("./fonts/poppins-v20-latin-500.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/poppins-v20-latin-500.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* poppins-600 - latin */ @font-face { @@ -67,7 +66,7 @@ font-family: "Poppins"; font-style: normal; font-weight: 600; - src: url("./fonts/poppins-v20-latin-600.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("fonts/poppins-v20-latin-600.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } .sd-card-title { From e00fdeffa66a87da2727216b51b9aa2b8f771576 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Mon, 15 Jul 2024 00:06:04 +0200 Subject: [PATCH 10/13] docs: cleanup the static files --- src/pyos_sphinx_theme/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 762795c..805b9b7 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -102,8 +102,6 @@ def setup(app): # app.connect("html-page-context", redirect_from_html_to_dirhtml) # app.add_css_file("static/styles/pyos-sphinx-theme.css") # app.add_js_file("static/scripts/matomo.js") - - app.add_css_file("https://fonts.gstatic.com", rel="preconnect") app.add_css_file("https://fonts.googleapis.com/css2?family=Itim&family=Poppins:wght@400;700&family=Work+Sans:wght@400;700") # activate_extensions(app, add_extensions) From 4832288d74e9aa0d8a047ea918bd5fdf4d60adb5 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Mon, 15 Jul 2024 00:08:45 +0200 Subject: [PATCH 11/13] docs: cleanup the rst files --- docs/index.md | 9 - docs/reference/kitchen-sink/index.rst | 12 - .../kitchen-sink/lists-and-tables.rst | 346 ------------- .../kitchen-sink/paragraph-markup.rst | 474 ------------------ 4 files changed, 841 deletions(-) delete mode 100644 docs/reference/kitchen-sink/index.rst delete mode 100644 docs/reference/kitchen-sink/lists-and-tables.rst delete mode 100644 docs/reference/kitchen-sink/paragraph-markup.rst diff --git a/docs/index.md b/docs/index.md index 0f2d3c9..9c9641d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -19,12 +19,3 @@ use develop showcase ``` - -## Reference - -See the kitchen sink for some example pages. - diff --git a/docs/reference/kitchen-sink/index.rst b/docs/reference/kitchen-sink/index.rst deleted file mode 100644 index 552ca51..0000000 --- a/docs/reference/kitchen-sink/index.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT -============ -Kitchen Sink -============ - -This section showcases the various elements that Sphinx supports out-of-the-box. - -.. toctree:: - - paragraph-markup - api - lists-and-tables diff --git a/docs/reference/kitchen-sink/lists-and-tables.rst b/docs/reference/kitchen-sink/lists-and-tables.rst deleted file mode 100644 index 097bb8a..0000000 --- a/docs/reference/kitchen-sink/lists-and-tables.rst +++ /dev/null @@ -1,346 +0,0 @@ -.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT -************** -Lists & Tables -************** - -Lists -===== - -Enumerated Lists ----------------- - -1. Arabic numerals. - - a) lower alpha) - - (i) (lower roman) - - A. upper alpha. - - I) upper roman) - -2. Lists that don't start at 1: - - 3. Three - - 4. Four - - C. C - - D. D - - iii. iii - - iv. iv - -#. List items may also be auto-enumerated. - -Definition Lists ----------------- - -Term - Definition -Term : classifier - Definition paragraph 1. - - Definition paragraph 2. -Term - Definition - -I have no clue why the definition list below is classified as a different style -of definition list than the one above. - -Is it the spaces in the term? - Maybe it was the multiple line paragraph - in the line below that caused this? - -Is it the paragraph above the list maybe? - I guess a lot of these lists don't have leading paragraphs? - -Is it everything all at once? - Who knows?! - -Option Lists ------------- - -For listing command-line options: - --a command-line option "a" --b file options can have arguments - and long descriptions ---long options can be long also ---input=file long options can also have - arguments - ---very-long-option - The description can also start on the next line. - - The description may contain multiple body elements, - regardless of where it starts. - --x, -y, -z Multiple options are an "option group". --v, --verbose Commonly-seen: short & long options. --1 file, --one=file, --two file - Multiple options with arguments. -/V DOS/VMS-style options too - -There must be at least two spaces between the option and the description. - -Field list ----------- - -.. bibliographic fields (which also require a transform): - -:Author: David Goodger -:Address: 123 Example Street - Example, EX Canada - A1B 2C3 -:Contact: docutils-develop@lists.sourceforge.net -:Authors: Me; Myself; I -:organization: humankind -:date: $Date: 2012-01-03 19:23:53 +0000 (Tue, 03 Jan 2012) $ -:status: This is a "work in progress" -:revision: $Revision: 7302 $ -:version: 1 -:copyright: This document has been placed in the public domain. You - may do with it as you wish. You may copy, modify, - redistribute, reattribute, sell, buy, rent, lease, - destroy, or improve it, quote it at length, excerpt, - incorporate, collate, fold, staple, or mutilate it, or do - anything else to it that your or anyone else's heart - desires. -:field name: This is a generic bibliographic field. -:field name 2: - Generic bibliographic fields may contain multiple body elements. - - Like this. - -:Dedication: - - For Docutils users & co-developers. - -:abstract: - - This document is a demonstration of the reStructuredText markup - language, containing examples of all basic reStructuredText - constructs and many advanced constructs. - -Bullet Lists ------------- - -.. - Docutils supports two types of lists, "simple" and "complex". Complex lists - have item margins, simple lists do not. - https://docutils.sourceforge.io/sandbox/html4strict/data/simple-lists.html - -Simple -^^^^^^ - -- A simple list. -- There are no margins between list items. -- Simple lists do not contain multiple paragraphs. That's a complex list. -- In the case of a nested list - - - There are no margins between elements - - - Still no margins - - - Still no margins - -Complex -^^^^^^^ - -- A bullet list - - + Nested bullet list. - + Nested item 2. - -- Item 2. - - Paragraph 2 of item 2. - - * Nested bullet list. - * Nested item 2. - - - Third level. - - Item 2. - - * Nested item 3. - -- ``inline literall`` -- ``inline literall`` -- ``inline literall`` -- This item has multiple paragraphs. - - This item has multiple paragraphs. -- This item has multiple paragraphs. - - This item has multiple paragraphs. - - -Second list level -^^^^^^^^^^^^^^^^^ - -- here is a list in a second-level section. -- `yahoo `_ -- `yahoo `_ - - - `yahoo `_ - - here is an inner bullet ``oh`` - - - one more ``with an inline literally``. `yahoo `_ - - heh heh. child. try to beat this embed: - - .. literalinclude:: api.rst - :language: rst - :linenos: - - - and another. `yahoo `_ - - `yahoo `_ - - ``hi`` -- how about an admonition? - - .. note:: - This is a note nested in a list. - -- and hehe - -But deeper down the rabbit hole -""""""""""""""""""""""""""""""" - -- I kept saying that, "deeper down the rabbit hole". `yahoo `_ - - - I cackle at night `yahoo `_. -- I'm so lonely here in GZ ``guangzhou`` -- A man of python destiny, hopes and dreams. `yahoo `_ - - - `yahoo `_ - - - `yahoo `_ ``hi`` - - ``destiny`` - -Hlists ------- - -.. hlist:: - :columns: 2 - - - First item - - Second item - - Third item - - Forth item - - Fifth item - - Sixths item - -.. rubric:: Hlist with images - -.. hlist:: - :columns: 2 - - - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals - - This is a short caption for a figure. - - - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals - - This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non. - -Numbered List -------------- - -#. One, -#. Two. -#. Three with long text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - Sed feugiat sagittis neque quis eleifend. Duis rutrum lectus sit amet mattis suscipit. - -- A) Using bullets and letters. (A) -- B) Using bullets and letters. (B) -- C) Using bullets and letters. (C) - -Tables -====== - -Grid Tables ------------ - -Here's a grid table followed by a simple table: - -+------------------------+------------+----------+----------+ -| Header row, column 1 | Header 2 | Header 3 | Header 4 | -| (header rows optional) | | | | -+========================+============+==========+==========+ -| body row 1, column 1 | column 2 | column 3 | column 4 | -+------------------------+------------+----------+----------+ -| body row 2 | Cells may span columns. | -+------------------------+------------+---------------------+ -| body row 3 | Cells may | - Table cells | -+------------------------+ span rows. | - contain | -| body row 4 | | - body elements. | -+------------------------+------------+----------+----------+ -| body row 5 | Cells may also be | | -| | empty: ``-->`` | | -+------------------------+-----------------------+----------+ - -===== ===== ====== - Inputs Output ------------- ------ - A B A or B -===== ===== ====== -False False False -True False True -False True True -True True True -===== ===== ====== - -Giant Tables -^^^^^^^^^^^^ - -+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+ -| Header 1 | Header 2 | Header 3 | Header 1 | Header 2 | Header 3 | Header 1 | Header 2 | Header 3 | Header 1 | Header 2 | Header 3 | -+============+============+===========+============+============+===========+============+============+===========+============+============+===========+ -| body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | -+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+ -| body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | -+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+ -| body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | -+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+ -| body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | body row 1 | column 2 | column 3 | -+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+ - -List Tables ------------ - -.. list-table:: List tables can have captions like this one. - :widths: 10 5 10 50 - :header-rows: 1 - :stub-columns: 1 - - * - List table - - Header 1 - - Header 2 - - Header 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu. - * - Stub Row 1 - - Row 1 - - Column 2 - - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu. - * - Stub Row 2 - - Row 2 - - Column 2 - - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu. - * - Stub Row 3 - - Row 3 - - Column 2 - - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu. - -.. list-table:: This is a list table with images in it. - - * - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals - - This is a short caption for a figure. - - - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals - - This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non. diff --git a/docs/reference/kitchen-sink/paragraph-markup.rst b/docs/reference/kitchen-sink/paragraph-markup.rst deleted file mode 100644 index 9254df9..0000000 --- a/docs/reference/kitchen-sink/paragraph-markup.rst +++ /dev/null @@ -1,474 +0,0 @@ -.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT -.. This is a comment. Note how any initial comments are moved by - transforms to after the document title, subtitle, and docinfo. - -.. demo.rst from: http://docutils.sourceforge.net/docs/user/rst/demo.txt - -.. |EXAMPLE| image:: https://source.unsplash.com/200x200/daily?cute+animals - :width: 1em - -********************** -Paragraph Level Markup -********************** - -Inline Markup -============= - -Paragraphs contain text and may contain inline markup: *emphasis*, **strong emphasis**, ``inline literals``, -standalone hyperlinks (http://www.python.org), external hyperlinks (Python_), internal cross-references (example_), -external hyperlinks with embedded URIs (`Python web site `__), footnote references -(manually numbered [1]_, anonymous auto-numbered [#]_, labeled auto-numbered [#label]_, or symbolic [*]_), -citation references ([12]_), substitution references (|example|), and _`inline hyperlink targets` -(see Targets_ below for a reference back to here). Character-level inline markup is also possible -(although exceedingly ugly!) in *re*\ ``Structured``\ *Text*. Problems are indicated by |problematic| -text (generated by processing errors; this one is intentional). - -Also with ``sphinx.ext.autodoc``, which I use in the demo, I can link to :class:`test_py_module.test.Foo`. -It will link you right to my code documentation for it. - -The default role for interpreted text is `Title Reference`. Here are some explicit interpreted text roles: -a PEP reference (:PEP:`287`); an RFC reference (:RFC:`2822`); a :sub:`subscript`; a :sup:`superscript`; -and explicit roles for :emphasis:`standard` :strong:`inline` :literal:`markup`. - -GUI labels are a useful way to indicate that :guilabel:`Some action` is to be taken by the user. -The GUI label should not run over ``line-height`` so as not to :guilabel:`interfere` with text from adjacent lines. - -Key-bindings indicate that the read is to press a button on the keyboard or mouse, -for example :kbd:`MMB` and :kbd:`Shift-MMB`. Another useful markup to indicate a user action -is to use ``menuselection`` this can be used to show short and long menus in software. -For example, and ``menuselection`` can be seen here that breaks is too long to fit on this line. -:menuselection:`My --> Software --> Some menu --> Some sub menu 1 --> sub menu 2`. - -.. DO NOT RE-WRAP THE FOLLOWING PARAGRAPH! - -Let's test wrapping and whitespace significance in inline literals: -``This is an example of --inline-literal --text, --including some-- -strangely--hyphenated-words. Adjust-the-width-of-your-browser-window -to see how the text is wrapped. -- ---- -------- Now note the -spacing between the words of this sentence (words -should be grouped in pairs).`` - -If the ``--pep-references`` option was supplied, there should be a live link to PEP 258 here. - -Math -==== - -This is a test. Here is an equation: -:math:`X_{0:5} = (X_0, X_1, X_2, X_3, X_4)`. -Here is another: - -.. math:: - :label: This is a label - - \nabla^2 f = - \frac{1}{r^2} \frac{\partial}{\partial r} - \left( r^2 \frac{\partial f}{\partial r} \right) + - \frac{1}{r^2 \sin \theta} \frac{\partial f}{\partial \theta} - \left( \sin \theta \, \frac{\partial f}{\partial \theta} \right) + - \frac{1}{r^2 \sin^2\theta} \frac{\partial^2 f}{\partial \phi^2} - -You can add a link to equations like the one above :eq:`This is a label` by using ``:eq:``. - -Meta -==== - -.. meta:: - :keywords: reStructuredText, demonstration, demo, parser - :description lang=en: A demonstration of the reStructuredText - markup language, containing examples of all basic - constructs and many advanced constructs. - -Blocks -====== - -Literal Blocks --------------- - -Literal blocks are indicated with a double-colon ("::") at the end of -the preceding paragraph (over there ``-->``). They can be indented:: - - if literal_block: - text = 'is left as-is' - spaces_and_linebreaks = 'are preserved' - markup_processing = None - -Or they can be quoted without indentation:: - ->> Great idea! -> -> Why didn't I think of that? - -Line Blocks ------------ - -| This is a line block. It ends with a blank line. -| Each new line begins with a vertical bar ("|"). -| Line breaks and initial indents are preserved. -| Continuation lines are wrapped portions of long lines; - they begin with a space in place of the vertical bar. -| The left edge of a continuation line need not be aligned with - the left edge of the text above it. - -| This is a second line block. -| -| Blank lines are permitted internally, but they must begin with a "|". - -Take it away, Eric the Orchestra Leader! - - | A one, two, a one two three four - | - | Half a bee, philosophically, - | must, *ipso facto*, half not be. - | But half the bee has got to be, - | *vis a vis* its entity. D'you see? - | - | But can a bee be said to be - | or not to be an entire bee, - | when half the bee is not a bee, - | due to some ancient injury? - | - | Singing... - -Block Quotes ------------- - -Block quotes consist of indented body elements: - - My theory by A. Elk. Brackets Miss, brackets. This theory goes - as follows and begins now. All brontosauruses are thin at one - end, much much thicker in the middle and then thin again at the - far end. That is my theory, it is mine, and belongs to me and I - own it, and what it is too. - - -- Anne Elk (Miss) - -Doctest Blocks --------------- - ->>> print 'Python-specific usage examples; begun with ">>>"' -Python-specific usage examples; begun with ">>>" ->>> print '(cut and pasted from interactive Python sessions)' -(cut and pasted from interactive Python sessions) - -Code Blocks ------------ - -.. parsed-literal:: - - # parsed-literal test - curl -O http://someurl/release-|version|.tar-gz - - -.. code-block:: json - :caption: Code Blocks can have captions. - - { - "windows": [ - { - "panes": [ - { - "shell_command": [ - "echo 'did you know'", - "echo 'you can inline'" - ] - }, - { - "shell_command": "echo 'single commands'" - }, - "echo 'for panes'" - ], - "window_name": "long form" - } - ], - "session_name": "shorthands" - } - -Emphasized lines with line numbers -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code-block:: python - :linenos: - :emphasize-lines: 3,5 - - def some_function(): - interesting = False - print 'This line is highlighted.' - print 'This one is not...' - print '...but this one is.' - -Sidebar -======= - -.. sidebar:: Ch'ien / The Creative - - .. image:: https://source.unsplash.com/200x200/daily?cute+animals - - *Above* CH'IEN THE CREATIVE, HEAVEN - - *Below* CH'IEN THE CREATIVE, HEAVEN - -The first hexagram is made up of six unbroken lines. These unbroken lines stand for the primal power, -which is light-giving, active, strong, and of the spirit. The hexagram is consistently strong in character, -and since it is without weakness, its essence is power or energy. Its image is heaven. -Its energy is represented as unrestricted by any fixed conditions in space and is therefore conceived of as motion. -Time is regarded as the basis of this motion. -Thus the hexagram includes also the power of time and the power of persisting in time, that is, duration. - -The power represented by the hexagram is to be interpreted in a dual sense in terms of its action -on the universe and of its action on the world of men. In relation to the universe, the hexagram expresses the strong, -creative action of the Deity. In relation to the human world, it denotes the creative action of the holy man or sage, -of the ruler or leader of men, who through his power awakens and develops their higher nature. - -Code with Sidebar ------------------ - -.. sidebar:: A code example - - With a sidebar on the right. - -.. literalinclude:: api.rst - :language: rst - :caption: Literal includes can also have captions. - :linenos: - :lines: 5-15 - -References -========== - -Footnotes ---------- - -.. [1] A footnote contains body elements, consistently indented by at - least 3 spaces. - - This is the footnote's second paragraph. - -.. [#label] Footnotes may be numbered, either manually (as in [1]_) or - automatically using a "#"-prefixed label. This footnote has a - label so it can be referred to from multiple places, both as a - footnote reference ([#label]_) and as a hyperlink reference - (label_). - -.. [#] This footnote is numbered automatically and anonymously using a - label of "#" only. - -.. [*] Footnotes may also use symbols, specified with a "*" label. - Here's a reference to the next footnote: [*]_. - -.. [*] This footnote shows the next symbol in the sequence. - -.. [4] Here's an unreferenced footnote, with a reference to a - nonexistent footnote: [5]_. - -Citations ---------- - -.. [11] This is the citation I made, let's make this extremely long so that we can tell that it doesn't follow the normal responsive table stuff. - -.. [12] This citation has some ``code blocks`` in it, maybe some **bold** and - *italics* too. Heck, lets put a link to a meta citation [13]_ too. - -.. [13] This citation will have two backlinks. - - -Here's a reference to the above, [12]_, and a [nonexistent]_ citation. - -Here is another type of citation: `citation` - -Glossary --------- - -This is a glossary with definition terms for thing like :term:`Writing`: - -.. glossary:: - - Documentation - Provides users with the knowledge they need to use something. - - Reading - The process of taking information into ones mind through the use of eyes. - - Writing - The process of putting thoughts into a medium for other people to :term:`read `. - -Targets -------- - -.. _example: - -This paragraph is pointed to by the explicit "example" target. -A reference can be found under `Inline Markup`_, above. `Inline -hyperlink targets`_ are also possible. - -Section headers are implicit targets, referred to by name. See -Targets_, which is a subsection of `Body Elements`_. - -Explicit external targets are interpolated into references such as "Python_". - -.. _Python: http://www.python.org/ - -Targets may be indirect and anonymous. Thus `this phrase`__ may also -refer to the Targets_ section. - -__ Targets_ - -Here's a `hyperlink reference without a target`_, which generates an error. - - -Directives -========== - -.. contents:: - :local: - -Above mini table of contents is generated by the ``.. contents::`` directive. -It and all the other directives presented here are just a sample of the many -reStructuredText Directives. For others, please see: -http://docutils.sourceforge.net/docs/ref/rst/directives.html. - - -Centered text -------------- - -You can create a statement with centered text with ``.. centered::`` - -.. centered:: This is centered text! - -Images & Figures ----------------- - -Images -^^^^^^ - -An image directive (also clickable -- a hyperlink reference): - -.. image:: https://source.unsplash.com/200x200/daily?cute+animals - :target: directives_ - -Figures -^^^^^^^ - -.. figure:: https://source.unsplash.com/200x200/daily?cute+animals - :alt: reStructuredText, the markup syntax - - A figure is an image with a caption and/or a legend: - - +------------+-----------------------------------------------+ - | re | Revised, revisited, based on 're' module. | - +------------+-----------------------------------------------+ - | Structured | Structure-enhanced text, structuredtext. | - +------------+-----------------------------------------------+ - | Text | Well it is, isn't it? | - +------------+-----------------------------------------------+ - - This paragraph is also part of the legend. - -A figure directive with center alignment - -.. figure:: https://source.unsplash.com/200x200/daily?cute+animals - :align: center - - This caption should be centered. - -Admonitions ------------ - -.. Attention:: Directives at large. - -.. Caution:: Don't take any wooden nickels. - -.. DANGER:: Mad scientist at work! - -.. Error:: Does not compute. - -.. Hint:: It's bigger than a bread box. - -.. Important:: - - Wash behind your ears. - - Clean up your room. - - - Including the closet. - - The bathroom too. - - - Take the trash out of the bathroom. - - Clean the sink. - - Call your mother. - - Back up your data. - -.. Note:: This is a note. - Equations within a note: - :math:`G_{\mu\nu} = 8 \pi G (T_{\mu\nu} + \rho_\Lambda g_{\mu\nu})`. - -.. Tip:: 15% if the service is good. - - +---------+ - | Example | - +=========+ - | Thing1 | - +---------+ - | Thing2 | - +---------+ - | Thing3 | - +---------+ - -.. WARNING:: Strong prose may provoke extreme mental exertion. - Reader discretion is strongly advised. - -.. admonition:: And, by the way... - - You can make up your own admonition too. - -Topics, Sidebars, and Rubrics ------------------------------ - -.. sidebar:: Sidebar Title - :subtitle: Optional Subtitle - - This is a sidebar. It is for text outside the flow of the main - text. - - .. rubric:: This is a rubric inside a sidebar - - Sidebars often appears beside the main text with a border and - background color. - -.. topic:: Topic Title - - This is a topic. - -.. rubric:: This is a rubric - -Target Footnotes ----------------- - -.. target-notes:: - -Replacement Text ----------------- - -I recommend you try |Python|_. - -.. |Python| replace:: Python, *the* best language around - -Compound Paragraph ------------------- - -.. compound:: - - This paragraph contains a literal block:: - - Connecting... OK - Transmitting data... OK - Disconnecting... OK - - and thus consists of a simple paragraph, a literal block, and - another simple paragraph. Nonetheless it is semantically *one* - paragraph. - -This construct is called a *compound paragraph* and can be produced -with the "compound" directive. - -Download Links -============== - -:download:`This long long long long long long long long long long long long long long long download link should be blue, normal weight text with a leading icon, and should wrap white-spaces ` From e6bf462e272c643970718ec2069cd32b5e86e079 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Mon, 15 Jul 2024 00:10:53 +0200 Subject: [PATCH 12/13] docs: cleanup the links --- docs/develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/develop.md b/docs/develop.md index 1b0f07b..8159cca 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -7,7 +7,7 @@ This will download a local copy of NodeJS and build the theme's assets with the ## Theme structure -This theme follows the [`sphinx-theme-builder` filesystem layout](https://sphinx-theme-builder.readthedocs.io/en/latest/reference/filesystem-layout/). +This theme follows the [`sphinx-theme-builder` filesystem layout](https://sphinx-theme-builder.readthedocs.io/en/latest/filesystem-layout/). ## clone the repository From 426ccf0249c02f278de3a6bbec9287994a75e729 Mon Sep 17 00:00:00 2001 From: Revathyvenugopal162 Date: Mon, 15 Jul 2024 00:28:56 +0200 Subject: [PATCH 13/13] docs: cleanup the images --- src/pyos_sphinx_theme/__init__.py | 19 +++++++++++++----- .../static}/images/logo-dark-mode.png | Bin .../static}/images/logo-light-mode.png | Bin .../images/pyopensci-logo-package-guide.png | Bin .../images/pyopensci-python-package-guide.png | Bin 5 files changed, 14 insertions(+), 5 deletions(-) rename src/pyos_sphinx_theme/{assets => theme/pyos_sphinx_theme/static}/images/logo-dark-mode.png (100%) rename src/pyos_sphinx_theme/{assets => theme/pyos_sphinx_theme/static}/images/logo-light-mode.png (100%) rename src/pyos_sphinx_theme/{assets => theme/pyos_sphinx_theme/static}/images/pyopensci-logo-package-guide.png (100%) rename src/pyos_sphinx_theme/{assets => theme/pyos_sphinx_theme/static}/images/pyopensci-python-package-guide.png (100%) diff --git a/src/pyos_sphinx_theme/__init__.py b/src/pyos_sphinx_theme/__init__.py index 805b9b7..32ebfd4 100644 --- a/src/pyos_sphinx_theme/__init__.py +++ b/src/pyos_sphinx_theme/__init__.py @@ -14,8 +14,11 @@ THIS_PATH = Path(__file__).parent.resolve() THEME_PATH = THIS_PATH / "theme" / "pyos_sphinx_theme" -LOGO_LIGHT = str((THIS_PATH / "assets" / "images" / "logo-light-mode.png").absolute()).replace("\\", "/") -LOGO_DARK = str((THIS_PATH / "assets" / "images" / "logo-dark-mode.png").absolute()).replace("\\", "/") +LOGO_LIGHT = str((THEME_PATH / "static" / "images" / "logo-light-mode.png").absolute()).replace("\\", "/") +LOGO_DARK = str((THEME_PATH / "static" / "images" / "logo-dark-mode.png").absolute()).replace("\\", "/") + +PYOPENSCI_LOGO_PACKAGE_GUIDE = str((THEME_PATH / "static" / "images" / "pyopensci-logo-package-guide.png").absolute()).replace("\\", "/") +PYOPENSCI_PYTHON_PACKAGE_GUIDE = str((THEME_PATH / "static" / "images" /"pyopensci-python-package-guide.png").absolute()).replace("\\", "/") def update_config(app): # These are the theme options that will be used in the build @@ -59,12 +62,18 @@ def update_config(app): # Social previews config social_cards = app.config.__dict__.get("ogp_social_cards", {}) + + app.config.ogp_site_name = "pyOpenSci Python Package Guide" + app.config.ogp_social_cards = { + "line_color": "#6D597A", + "image": "_static/pyopensci-logo-package-guide.png", + } # If no html_logo is set then use a stock 2i2c logo if not config_provided_by_user(app, "html_logo") and not social_cards.get("image"): - path_static = Path(__file__).parent / "theme/pyos_sphinx_theme/static" - path_img = path_static / "images/logo.png" - social_cards["image"] = str(path_img) + line_color = "#6D597A" + social_cards["image"] = str(LOGO_LIGHT) + social_cards["line_color"] = line_color app.config.ogp_social_cards = social_cards diff --git a/src/pyos_sphinx_theme/assets/images/logo-dark-mode.png b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/logo-dark-mode.png similarity index 100% rename from src/pyos_sphinx_theme/assets/images/logo-dark-mode.png rename to src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/logo-dark-mode.png diff --git a/src/pyos_sphinx_theme/assets/images/logo-light-mode.png b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/logo-light-mode.png similarity index 100% rename from src/pyos_sphinx_theme/assets/images/logo-light-mode.png rename to src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/logo-light-mode.png diff --git a/src/pyos_sphinx_theme/assets/images/pyopensci-logo-package-guide.png b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/pyopensci-logo-package-guide.png similarity index 100% rename from src/pyos_sphinx_theme/assets/images/pyopensci-logo-package-guide.png rename to src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/pyopensci-logo-package-guide.png diff --git a/src/pyos_sphinx_theme/assets/images/pyopensci-python-package-guide.png b/src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/pyopensci-python-package-guide.png similarity index 100% rename from src/pyos_sphinx_theme/assets/images/pyopensci-python-package-guide.png rename to src/pyos_sphinx_theme/theme/pyos_sphinx_theme/static/images/pyopensci-python-package-guide.png