vmklib
Advanced tools
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="../" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
| <title>Overview: module code — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="../_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="../_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="../_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="../_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="../_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="../_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="../_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="../_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="../_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = '_modules/index';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="../genindex.html" /> | ||
| <link rel="search" title="Search" href="../search.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="../search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="../index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="nav bd-sidenav"> | ||
| <li class="toctree-l1 has-children"><a class="reference internal" href="../vmklib.html">vmklib package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="../vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="../vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="../vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="../vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1></h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <h1>All modules for which code is available</h1> | ||
| <ul><li><a href="vcorelib/python.html">vcorelib.python</a></li> | ||
| <li><a href="vmklib/app.html">vmklib.app</a></li> | ||
| <li><a href="vmklib/entry.html">vmklib.entry</a></li> | ||
| <li><a href="vmklib/tasks.html">vmklib.tasks</a></li> | ||
| <ul><li><a href="vmklib/tasks/args.html">vmklib.tasks.args</a></li> | ||
| <li><a href="vmklib/tasks/clean.html">vmklib.tasks.clean</a></li> | ||
| <li><a href="vmklib/tasks/github.html">vmklib.tasks.github</a></li> | ||
| <li><a href="vmklib/tasks/mixins/concrete.html">vmklib.tasks.mixins.concrete</a></li> | ||
| <li><a href="vmklib/tasks/mixins/curl.html">vmklib.tasks.mixins.curl</a></li> | ||
| <li><a href="vmklib/tasks/node.html">vmklib.tasks.node</a></li> | ||
| <li><a href="vmklib/tasks/python/build.html">vmklib.tasks.python.build</a></li> | ||
| <li><a href="vmklib/tasks/python/datazen.html">vmklib.tasks.python.datazen</a></li> | ||
| <li><a href="vmklib/tasks/python/docs.html">vmklib.tasks.python.docs</a></li> | ||
| <li><a href="vmklib/tasks/python/lint.html">vmklib.tasks.python.lint</a></li> | ||
| <li><a href="vmklib/tasks/python/package.html">vmklib.tasks.python.package</a></li> | ||
| <li><a href="vmklib/tasks/python/release.html">vmklib.tasks.python.release</a></li> | ||
| <li><a href="vmklib/tasks/python/sa.html">vmklib.tasks.python.sa</a></li> | ||
| <li><a href="vmklib/tasks/python/test.html">vmklib.tasks.python.test</a></li> | ||
| <li><a href="vmklib/tasks/python/yaml.html">vmklib.tasks.python.yaml</a></li> | ||
| <li><a href="vmklib/tasks/release.html">vmklib.tasks.release</a></li> | ||
| <li><a href="vmklib/tasks/venv.html">vmklib.tasks.venv</a></li> | ||
| </ul><li><a href="vmklib/util.html">vmklib.util</a></li> | ||
| </ul> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="../_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="../../" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
| <title>vcorelib.python — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="../../_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="../../_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="../../_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="../../_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="../../_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="../../_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="../../_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="../../_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="../../_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = '_modules/vcorelib/python';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="../../genindex.html" /> | ||
| <link rel="search" title="Search" href="../../search.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="../../search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="../../index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="nav bd-sidenav"> | ||
| <li class="toctree-l1 has-children"><a class="reference internal" href="../../vmklib.html">vmklib package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="../../vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="../../vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="../../vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="../../vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1></h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <h1>Source code for vcorelib.python</h1><div class="highlight"><pre> | ||
| <span></span><span class="sd">"""</span> | ||
| <span class="sd">A module for working with paths to python interpreters and virtual</span> | ||
| <span class="sd">environments.</span> | ||
| <span class="sd">"""</span> | ||
| <span class="c1"># built-in</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">os</span><span class="w"> </span><span class="kn">import</span> <span class="n">environ</span> <span class="k">as</span> <span class="n">_environ</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> <span class="k">as</span> <span class="n">_Path</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">shutil</span><span class="w"> </span><span class="kn">import</span> <span class="n">which</span> <span class="k">as</span> <span class="n">_which</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">sys</span><span class="w"> </span><span class="kn">import</span> <span class="n">executable</span> <span class="k">as</span> <span class="n">_executable</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">sys</span><span class="w"> </span><span class="kn">import</span> <span class="n">version_info</span> <span class="k">as</span> <span class="n">_version_info</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">NamedTuple</span> | ||
| <span class="c1"># internal</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">vcorelib.paths</span><span class="w"> </span><span class="kn">import</span> <span class="n">Pathlike</span> <span class="k">as</span> <span class="n">_Pathlike</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">vcorelib.paths</span><span class="w"> </span><span class="kn">import</span> <span class="n">normalize</span> <span class="k">as</span> <span class="n">_normalize</span> | ||
| <span class="c1"># third-party</span> | ||
| <span class="kn">from</span><span class="w"> </span><span class="nn">vcorelib.task.subprocess.run</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_windows</span> <span class="k">as</span> <span class="n">_is_windows</span> | ||
| <span class="n">CURRENT_PYTHON</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">_version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">_version_info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> | ||
| <div class="viewcode-block" id="python_version"> | ||
| <a class="viewcode-back" href="../../vmklib.tasks.python.html#vmklib.tasks.python.python_version">[docs]</a> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">python_version</span><span class="p">()</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Get the version of Python to use."""</span> | ||
| <span class="k">return</span> <span class="n">_environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"PYTHON_VERSION"</span><span class="p">,</span> <span class="n">CURRENT_PYTHON</span><span class="p">)</span></div> | ||
| <div class="viewcode-block" id="python_entry"> | ||
| <a class="viewcode-back" href="../../vmklib.tasks.python.html#vmklib.tasks.python.python_entry">[docs]</a> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">python_entry</span><span class="p">(</span><span class="n">version</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Attempt to get a Python entry-point as a string."""</span> | ||
| <span class="n">result</span> <span class="o">=</span> <span class="kc">None</span> | ||
| <span class="k">if</span> <span class="n">version</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> | ||
| <span class="n">version</span> <span class="o">=</span> <span class="n">python_version</span><span class="p">()</span> | ||
| <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"python</span><span class="si">{</span><span class="n">version</span><span class="si">}{</span><span class="s1">'.exe'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">_is_windows</span><span class="p">()</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> | ||
| <span class="c1"># Use the current executable as a candidate if it's the right version.</span> | ||
| <span class="k">if</span> <span class="n">version</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">CURRENT_PYTHON</span><span class="p">):</span> | ||
| <span class="n">result</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">_executable</span><span class="p">)</span> | ||
| <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> | ||
| <span class="k">for</span> <span class="n">option</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span> | ||
| <span class="k">if</span> <span class="n">_which</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> | ||
| <span class="n">result</span> <span class="o">=</span> <span class="n">option</span> | ||
| <span class="k">break</span> | ||
| <span class="k">assert</span> <span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Couldn't find 'python</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">'!"</span> | ||
| <span class="k">return</span> <span class="n">result</span></div> | ||
| <div class="viewcode-block" id="venv_name"> | ||
| <a class="viewcode-back" href="../../vmklib.tasks.python.html#vmklib.tasks.python.venv_name">[docs]</a> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">venv_name</span><span class="p">(</span><span class="n">version</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Get the name for a virtual environment to use."""</span> | ||
| <span class="k">if</span> <span class="n">version</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> | ||
| <span class="n">version</span> <span class="o">=</span> <span class="n">python_version</span><span class="p">()</span> | ||
| <span class="k">return</span> <span class="sa">f</span><span class="s2">"venv</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">"</span></div> | ||
| <div class="viewcode-block" id="venv_dir"> | ||
| <a class="viewcode-back" href="../../vmklib.tasks.python.html#vmklib.tasks.python.venv_dir">[docs]</a> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">venv_dir</span><span class="p">(</span><span class="n">cwd</span><span class="p">:</span> <span class="n">_Pathlike</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">_Path</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Get the path for a virtual environment to use."""</span> | ||
| <span class="k">return</span> <span class="n">_normalize</span><span class="p">(</span><span class="n">cwd</span><span class="p">)</span><span class="o">.</span><span class="n">joinpath</span><span class="p">(</span><span class="n">venv_name</span><span class="p">(</span><span class="n">version</span><span class="p">))</span></div> | ||
| <div class="viewcode-block" id="venv_bin"> | ||
| <a class="viewcode-back" href="../../vmklib.tasks.python.html#vmklib.tasks.python.venv_bin">[docs]</a> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">venv_bin</span><span class="p">(</span> | ||
| <span class="n">cwd</span><span class="p">:</span> <span class="n">_Pathlike</span><span class="p">,</span> <span class="n">program</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span> | ||
| <span class="p">)</span> <span class="o">-></span> <span class="n">_Path</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Get the path to a virtual environment's script directory."""</span> | ||
| <span class="n">path</span> <span class="o">=</span> <span class="n">venv_dir</span><span class="p">(</span><span class="n">cwd</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span><span class="o">.</span><span class="n">joinpath</span><span class="p">(</span> | ||
| <span class="s2">"Scripts"</span> <span class="k">if</span> <span class="n">_is_windows</span><span class="p">()</span> <span class="k">else</span> <span class="s2">"bin"</span> | ||
| <span class="p">)</span> | ||
| <span class="k">if</span> <span class="n">program</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> | ||
| <span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">joinpath</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">program</span><span class="si">}{</span><span class="s1">'.exe'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">_is_windows</span><span class="p">()</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> | ||
| <span class="k">return</span> <span class="n">path</span></div> | ||
| <span class="k">class</span><span class="w"> </span><span class="nc">StrToBool</span><span class="p">(</span><span class="n">NamedTuple</span><span class="p">):</span> | ||
| <span class="w"> </span><span class="sd">"""A container for results when converting strings to boolean."""</span> | ||
| <span class="n">result</span><span class="p">:</span> <span class="nb">bool</span> | ||
| <span class="n">valid</span><span class="p">:</span> <span class="nb">bool</span> | ||
| <span class="k">def</span><span class="w"> </span><span class="fm">__bool__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Determine boolean status."""</span> | ||
| <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> | ||
| <span class="nd">@staticmethod</span> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">check</span><span class="p">(</span><span class="n">data</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Check a string for a boolean 'true' value."""</span> | ||
| <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">StrToBool</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> | ||
| <span class="nd">@staticmethod</span> | ||
| <span class="k">def</span><span class="w"> </span><span class="nf">parse</span><span class="p">(</span><span class="n">data</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="s2">"StrToBool"</span><span class="p">:</span> | ||
| <span class="w"> </span><span class="sd">"""Parse a string to boolean."""</span> | ||
| <span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> | ||
| <span class="n">is_true</span> <span class="o">=</span> <span class="n">data</span> <span class="o">==</span> <span class="s2">"true"</span> | ||
| <span class="n">resolved</span> <span class="o">=</span> <span class="n">is_true</span> <span class="ow">or</span> <span class="n">data</span> <span class="o">==</span> <span class="s2">"false"</span> | ||
| <span class="k">return</span> <span class="n">StrToBool</span><span class="p">(</span><span class="n">is_true</span><span class="p">,</span> <span class="n">resolved</span><span class="p">)</span> | ||
| </pre></div> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="../../_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="../../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
| // @ts-check | ||
| /**@constructor*/ | ||
| BaseStemmer = function() { | ||
| /** @protected */ | ||
| this.current = ''; | ||
| this.cursor = 0; | ||
| this.limit = 0; | ||
| this.limit_backward = 0; | ||
| this.bra = 0; | ||
| this.ket = 0; | ||
| /** | ||
| * @param {string} value | ||
| */ | ||
| this.setCurrent = function(value) { | ||
| this.current = value; | ||
| this.cursor = 0; | ||
| this.limit = this.current.length; | ||
| this.limit_backward = 0; | ||
| this.bra = this.cursor; | ||
| this.ket = this.limit; | ||
| }; | ||
| /** | ||
| * @return {string} | ||
| */ | ||
| this.getCurrent = function() { | ||
| return this.current; | ||
| }; | ||
| /** | ||
| * @param {BaseStemmer} other | ||
| */ | ||
| this.copy_from = function(other) { | ||
| /** @protected */ | ||
| this.current = other.current; | ||
| this.cursor = other.cursor; | ||
| this.limit = other.limit; | ||
| this.limit_backward = other.limit_backward; | ||
| this.bra = other.bra; | ||
| this.ket = other.ket; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.in_grouping = function(s, min, max) { | ||
| /** @protected */ | ||
| if (this.cursor >= this.limit) return false; | ||
| var ch = this.current.charCodeAt(this.cursor); | ||
| if (ch > max || ch < min) return false; | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; | ||
| this.cursor++; | ||
| return true; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.go_in_grouping = function(s, min, max) { | ||
| /** @protected */ | ||
| while (this.cursor < this.limit) { | ||
| var ch = this.current.charCodeAt(this.cursor); | ||
| if (ch > max || ch < min) | ||
| return true; | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) | ||
| return true; | ||
| this.cursor++; | ||
| } | ||
| return false; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.in_grouping_b = function(s, min, max) { | ||
| /** @protected */ | ||
| if (this.cursor <= this.limit_backward) return false; | ||
| var ch = this.current.charCodeAt(this.cursor - 1); | ||
| if (ch > max || ch < min) return false; | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; | ||
| this.cursor--; | ||
| return true; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.go_in_grouping_b = function(s, min, max) { | ||
| /** @protected */ | ||
| while (this.cursor > this.limit_backward) { | ||
| var ch = this.current.charCodeAt(this.cursor - 1); | ||
| if (ch > max || ch < min) return true; | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true; | ||
| this.cursor--; | ||
| } | ||
| return false; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.out_grouping = function(s, min, max) { | ||
| /** @protected */ | ||
| if (this.cursor >= this.limit) return false; | ||
| var ch = this.current.charCodeAt(this.cursor); | ||
| if (ch > max || ch < min) { | ||
| this.cursor++; | ||
| return true; | ||
| } | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { | ||
| this.cursor++; | ||
| return true; | ||
| } | ||
| return false; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.go_out_grouping = function(s, min, max) { | ||
| /** @protected */ | ||
| while (this.cursor < this.limit) { | ||
| var ch = this.current.charCodeAt(this.cursor); | ||
| if (ch <= max && ch >= min) { | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) { | ||
| return true; | ||
| } | ||
| } | ||
| this.cursor++; | ||
| } | ||
| return false; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.out_grouping_b = function(s, min, max) { | ||
| /** @protected */ | ||
| if (this.cursor <= this.limit_backward) return false; | ||
| var ch = this.current.charCodeAt(this.cursor - 1); | ||
| if (ch > max || ch < min) { | ||
| this.cursor--; | ||
| return true; | ||
| } | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { | ||
| this.cursor--; | ||
| return true; | ||
| } | ||
| return false; | ||
| }; | ||
| /** | ||
| * @param {number[]} s | ||
| * @param {number} min | ||
| * @param {number} max | ||
| * @return {boolean} | ||
| */ | ||
| this.go_out_grouping_b = function(s, min, max) { | ||
| /** @protected */ | ||
| while (this.cursor > this.limit_backward) { | ||
| var ch = this.current.charCodeAt(this.cursor - 1); | ||
| if (ch <= max && ch >= min) { | ||
| ch -= min; | ||
| if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) { | ||
| return true; | ||
| } | ||
| } | ||
| this.cursor--; | ||
| } | ||
| return false; | ||
| }; | ||
| /** | ||
| * @param {string} s | ||
| * @return {boolean} | ||
| */ | ||
| this.eq_s = function(s) | ||
| { | ||
| /** @protected */ | ||
| if (this.limit - this.cursor < s.length) return false; | ||
| if (this.current.slice(this.cursor, this.cursor + s.length) != s) | ||
| { | ||
| return false; | ||
| } | ||
| this.cursor += s.length; | ||
| return true; | ||
| }; | ||
| /** | ||
| * @param {string} s | ||
| * @return {boolean} | ||
| */ | ||
| this.eq_s_b = function(s) | ||
| { | ||
| /** @protected */ | ||
| if (this.cursor - this.limit_backward < s.length) return false; | ||
| if (this.current.slice(this.cursor - s.length, this.cursor) != s) | ||
| { | ||
| return false; | ||
| } | ||
| this.cursor -= s.length; | ||
| return true; | ||
| }; | ||
| /** | ||
| * @param {Among[]} v | ||
| * @return {number} | ||
| */ | ||
| this.find_among = function(v) | ||
| { | ||
| /** @protected */ | ||
| var i = 0; | ||
| var j = v.length; | ||
| var c = this.cursor; | ||
| var l = this.limit; | ||
| var common_i = 0; | ||
| var common_j = 0; | ||
| var first_key_inspected = false; | ||
| while (true) | ||
| { | ||
| var k = i + ((j - i) >>> 1); | ||
| var diff = 0; | ||
| var common = common_i < common_j ? common_i : common_j; // smaller | ||
| // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) | ||
| var w = v[k]; | ||
| var i2; | ||
| for (i2 = common; i2 < w[0].length; i2++) | ||
| { | ||
| if (c + common == l) | ||
| { | ||
| diff = -1; | ||
| break; | ||
| } | ||
| diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); | ||
| if (diff != 0) break; | ||
| common++; | ||
| } | ||
| if (diff < 0) | ||
| { | ||
| j = k; | ||
| common_j = common; | ||
| } | ||
| else | ||
| { | ||
| i = k; | ||
| common_i = common; | ||
| } | ||
| if (j - i <= 1) | ||
| { | ||
| if (i > 0) break; // v->s has been inspected | ||
| if (j == i) break; // only one item in v | ||
| // - but now we need to go round once more to get | ||
| // v->s inspected. This looks messy, but is actually | ||
| // the optimal approach. | ||
| if (first_key_inspected) break; | ||
| first_key_inspected = true; | ||
| } | ||
| } | ||
| do { | ||
| var w = v[i]; | ||
| if (common_i >= w[0].length) | ||
| { | ||
| this.cursor = c + w[0].length; | ||
| if (w.length < 4) return w[2]; | ||
| var res = w[3](this); | ||
| this.cursor = c + w[0].length; | ||
| if (res) return w[2]; | ||
| } | ||
| i = w[1]; | ||
| } while (i >= 0); | ||
| return 0; | ||
| }; | ||
| // find_among_b is for backwards processing. Same comments apply | ||
| /** | ||
| * @param {Among[]} v | ||
| * @return {number} | ||
| */ | ||
| this.find_among_b = function(v) | ||
| { | ||
| /** @protected */ | ||
| var i = 0; | ||
| var j = v.length | ||
| var c = this.cursor; | ||
| var lb = this.limit_backward; | ||
| var common_i = 0; | ||
| var common_j = 0; | ||
| var first_key_inspected = false; | ||
| while (true) | ||
| { | ||
| var k = i + ((j - i) >> 1); | ||
| var diff = 0; | ||
| var common = common_i < common_j ? common_i : common_j; | ||
| var w = v[k]; | ||
| var i2; | ||
| for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) | ||
| { | ||
| if (c - common == lb) | ||
| { | ||
| diff = -1; | ||
| break; | ||
| } | ||
| diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); | ||
| if (diff != 0) break; | ||
| common++; | ||
| } | ||
| if (diff < 0) | ||
| { | ||
| j = k; | ||
| common_j = common; | ||
| } | ||
| else | ||
| { | ||
| i = k; | ||
| common_i = common; | ||
| } | ||
| if (j - i <= 1) | ||
| { | ||
| if (i > 0) break; | ||
| if (j == i) break; | ||
| if (first_key_inspected) break; | ||
| first_key_inspected = true; | ||
| } | ||
| } | ||
| do { | ||
| var w = v[i]; | ||
| if (common_i >= w[0].length) | ||
| { | ||
| this.cursor = c - w[0].length; | ||
| if (w.length < 4) return w[2]; | ||
| var res = w[3](this); | ||
| this.cursor = c - w[0].length; | ||
| if (res) return w[2]; | ||
| } | ||
| i = w[1]; | ||
| } while (i >= 0); | ||
| return 0; | ||
| }; | ||
| /* to replace chars between c_bra and c_ket in this.current by the | ||
| * chars in s. | ||
| */ | ||
| /** | ||
| * @param {number} c_bra | ||
| * @param {number} c_ket | ||
| * @param {string} s | ||
| * @return {number} | ||
| */ | ||
| this.replace_s = function(c_bra, c_ket, s) | ||
| { | ||
| /** @protected */ | ||
| var adjustment = s.length - (c_ket - c_bra); | ||
| this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); | ||
| this.limit += adjustment; | ||
| if (this.cursor >= c_ket) this.cursor += adjustment; | ||
| else if (this.cursor > c_bra) this.cursor = c_bra; | ||
| return adjustment; | ||
| }; | ||
| /** | ||
| * @return {boolean} | ||
| */ | ||
| this.slice_check = function() | ||
| { | ||
| /** @protected */ | ||
| if (this.bra < 0 || | ||
| this.bra > this.ket || | ||
| this.ket > this.limit || | ||
| this.limit > this.current.length) | ||
| { | ||
| return false; | ||
| } | ||
| return true; | ||
| }; | ||
| /** | ||
| * @param {number} c_bra | ||
| * @return {boolean} | ||
| */ | ||
| this.slice_from = function(s) | ||
| { | ||
| /** @protected */ | ||
| var result = false; | ||
| if (this.slice_check()) | ||
| { | ||
| this.replace_s(this.bra, this.ket, s); | ||
| result = true; | ||
| } | ||
| return result; | ||
| }; | ||
| /** | ||
| * @return {boolean} | ||
| */ | ||
| this.slice_del = function() | ||
| { | ||
| /** @protected */ | ||
| return this.slice_from(""); | ||
| }; | ||
| /** | ||
| * @param {number} c_bra | ||
| * @param {number} c_ket | ||
| * @param {string} s | ||
| */ | ||
| this.insert = function(c_bra, c_ket, s) | ||
| { | ||
| /** @protected */ | ||
| var adjustment = this.replace_s(c_bra, c_ket, s); | ||
| if (c_bra <= this.bra) this.bra += adjustment; | ||
| if (c_bra <= this.ket) this.ket += adjustment; | ||
| }; | ||
| /** | ||
| * @return {string} | ||
| */ | ||
| this.slice_to = function() | ||
| { | ||
| /** @protected */ | ||
| var result = ''; | ||
| if (this.slice_check()) | ||
| { | ||
| result = this.current.slice(this.bra, this.ket); | ||
| } | ||
| return result; | ||
| }; | ||
| /** | ||
| * @return {string} | ||
| */ | ||
| this.assign_to = function() | ||
| { | ||
| /** @protected */ | ||
| return this.current.slice(0, this.limit); | ||
| }; | ||
| }; |
| /* | ||
| * Sphinx stylesheet -- basic theme. | ||
| */ | ||
| /* -- main layout ----------------------------------------------------------- */ | ||
| div.clearer { | ||
| clear: both; | ||
| } | ||
| div.section::after { | ||
| display: block; | ||
| content: ''; | ||
| clear: left; | ||
| } | ||
| /* -- relbar ---------------------------------------------------------------- */ | ||
| div.related { | ||
| width: 100%; | ||
| font-size: 90%; | ||
| } | ||
| div.related h3 { | ||
| display: none; | ||
| } | ||
| div.related ul { | ||
| margin: 0; | ||
| padding: 0 0 0 10px; | ||
| list-style: none; | ||
| } | ||
| div.related li { | ||
| display: inline; | ||
| } | ||
| div.related li.right { | ||
| float: right; | ||
| margin-right: 5px; | ||
| } | ||
| /* -- sidebar --------------------------------------------------------------- */ | ||
| div.sphinxsidebarwrapper { | ||
| padding: 10px 5px 0 10px; | ||
| } | ||
| div.sphinxsidebar { | ||
| float: left; | ||
| width: 270px; | ||
| margin-left: -100%; | ||
| font-size: 90%; | ||
| word-wrap: break-word; | ||
| overflow-wrap : break-word; | ||
| } | ||
| div.sphinxsidebar ul { | ||
| list-style: none; | ||
| } | ||
| div.sphinxsidebar ul ul, | ||
| div.sphinxsidebar ul.want-points { | ||
| margin-left: 20px; | ||
| list-style: square; | ||
| } | ||
| div.sphinxsidebar ul ul { | ||
| margin-top: 0; | ||
| margin-bottom: 0; | ||
| } | ||
| div.sphinxsidebar form { | ||
| margin-top: 10px; | ||
| } | ||
| div.sphinxsidebar input { | ||
| border: 1px solid #98dbcc; | ||
| font-family: sans-serif; | ||
| font-size: 1em; | ||
| } | ||
| div.sphinxsidebar #searchbox form.search { | ||
| overflow: hidden; | ||
| } | ||
| div.sphinxsidebar #searchbox input[type="text"] { | ||
| float: left; | ||
| width: 80%; | ||
| padding: 0.25em; | ||
| box-sizing: border-box; | ||
| } | ||
| div.sphinxsidebar #searchbox input[type="submit"] { | ||
| float: left; | ||
| width: 20%; | ||
| border-left: none; | ||
| padding: 0.25em; | ||
| box-sizing: border-box; | ||
| } | ||
| img { | ||
| border: 0; | ||
| max-width: 100%; | ||
| } | ||
| /* -- search page ----------------------------------------------------------- */ | ||
| ul.search { | ||
| margin-top: 10px; | ||
| } | ||
| ul.search li { | ||
| padding: 5px 0; | ||
| } | ||
| ul.search li a { | ||
| font-weight: bold; | ||
| } | ||
| ul.search li p.context { | ||
| color: #888; | ||
| margin: 2px 0 0 30px; | ||
| text-align: left; | ||
| } | ||
| ul.keywordmatches li.goodmatch a { | ||
| font-weight: bold; | ||
| } | ||
| /* -- index page ------------------------------------------------------------ */ | ||
| table.contentstable { | ||
| width: 90%; | ||
| margin-left: auto; | ||
| margin-right: auto; | ||
| } | ||
| table.contentstable p.biglink { | ||
| line-height: 150%; | ||
| } | ||
| a.biglink { | ||
| font-size: 1.3em; | ||
| } | ||
| span.linkdescr { | ||
| font-style: italic; | ||
| padding-top: 5px; | ||
| font-size: 90%; | ||
| } | ||
| /* -- general index --------------------------------------------------------- */ | ||
| table.indextable { | ||
| width: 100%; | ||
| } | ||
| table.indextable td { | ||
| text-align: left; | ||
| vertical-align: top; | ||
| } | ||
| table.indextable ul { | ||
| margin-top: 0; | ||
| margin-bottom: 0; | ||
| list-style-type: none; | ||
| } | ||
| table.indextable > tbody > tr > td > ul { | ||
| padding-left: 0em; | ||
| } | ||
| table.indextable tr.pcap { | ||
| height: 10px; | ||
| } | ||
| table.indextable tr.cap { | ||
| margin-top: 10px; | ||
| background-color: #f2f2f2; | ||
| } | ||
| img.toggler { | ||
| margin-right: 3px; | ||
| margin-top: 3px; | ||
| cursor: pointer; | ||
| } | ||
| div.modindex-jumpbox { | ||
| border-top: 1px solid #ddd; | ||
| border-bottom: 1px solid #ddd; | ||
| margin: 1em 0 1em 0; | ||
| padding: 0.4em; | ||
| } | ||
| div.genindex-jumpbox { | ||
| border-top: 1px solid #ddd; | ||
| border-bottom: 1px solid #ddd; | ||
| margin: 1em 0 1em 0; | ||
| padding: 0.4em; | ||
| } | ||
| /* -- domain module index --------------------------------------------------- */ | ||
| table.modindextable td { | ||
| padding: 2px; | ||
| border-collapse: collapse; | ||
| } | ||
| /* -- general body styles --------------------------------------------------- */ | ||
| div.body { | ||
| min-width: 360px; | ||
| max-width: 800px; | ||
| } | ||
| div.body p, div.body dd, div.body li, div.body blockquote { | ||
| -moz-hyphens: auto; | ||
| -ms-hyphens: auto; | ||
| -webkit-hyphens: auto; | ||
| hyphens: auto; | ||
| } | ||
| a.headerlink { | ||
| visibility: hidden; | ||
| } | ||
| a:visited { | ||
| color: #551A8B; | ||
| } | ||
| h1:hover > a.headerlink, | ||
| h2:hover > a.headerlink, | ||
| h3:hover > a.headerlink, | ||
| h4:hover > a.headerlink, | ||
| h5:hover > a.headerlink, | ||
| h6:hover > a.headerlink, | ||
| dt:hover > a.headerlink, | ||
| caption:hover > a.headerlink, | ||
| p.caption:hover > a.headerlink, | ||
| div.code-block-caption:hover > a.headerlink { | ||
| visibility: visible; | ||
| } | ||
| div.body p.caption { | ||
| text-align: inherit; | ||
| } | ||
| div.body td { | ||
| text-align: left; | ||
| } | ||
| .first { | ||
| margin-top: 0 !important; | ||
| } | ||
| p.rubric { | ||
| margin-top: 30px; | ||
| font-weight: bold; | ||
| } | ||
| img.align-left, figure.align-left, .figure.align-left, object.align-left { | ||
| clear: left; | ||
| float: left; | ||
| margin-right: 1em; | ||
| } | ||
| img.align-right, figure.align-right, .figure.align-right, object.align-right { | ||
| clear: right; | ||
| float: right; | ||
| margin-left: 1em; | ||
| } | ||
| img.align-center, figure.align-center, .figure.align-center, object.align-center { | ||
| display: block; | ||
| margin-left: auto; | ||
| margin-right: auto; | ||
| } | ||
| img.align-default, figure.align-default, .figure.align-default { | ||
| display: block; | ||
| margin-left: auto; | ||
| margin-right: auto; | ||
| } | ||
| .align-left { | ||
| text-align: left; | ||
| } | ||
| .align-center { | ||
| text-align: center; | ||
| } | ||
| .align-default { | ||
| text-align: center; | ||
| } | ||
| .align-right { | ||
| text-align: right; | ||
| } | ||
| /* -- sidebars -------------------------------------------------------------- */ | ||
| div.sidebar, | ||
| aside.sidebar { | ||
| margin: 0 0 0.5em 1em; | ||
| border: 1px solid #ddb; | ||
| padding: 7px; | ||
| background-color: #ffe; | ||
| width: 40%; | ||
| float: right; | ||
| clear: right; | ||
| overflow-x: auto; | ||
| } | ||
| p.sidebar-title { | ||
| font-weight: bold; | ||
| } | ||
| nav.contents, | ||
| aside.topic, | ||
| div.admonition, div.topic, blockquote { | ||
| clear: left; | ||
| } | ||
| /* -- topics ---------------------------------------------------------------- */ | ||
| nav.contents, | ||
| aside.topic, | ||
| div.topic { | ||
| border: 1px solid #ccc; | ||
| padding: 7px; | ||
| margin: 10px 0 10px 0; | ||
| } | ||
| p.topic-title { | ||
| font-size: 1.1em; | ||
| font-weight: bold; | ||
| margin-top: 10px; | ||
| } | ||
| /* -- admonitions ----------------------------------------------------------- */ | ||
| div.admonition { | ||
| margin-top: 10px; | ||
| margin-bottom: 10px; | ||
| padding: 7px; | ||
| } | ||
| div.admonition dt { | ||
| font-weight: bold; | ||
| } | ||
| p.admonition-title { | ||
| margin: 0px 10px 5px 0px; | ||
| font-weight: bold; | ||
| } | ||
| div.body p.centered { | ||
| text-align: center; | ||
| margin-top: 25px; | ||
| } | ||
| /* -- content of sidebars/topics/admonitions -------------------------------- */ | ||
| div.sidebar > :last-child, | ||
| aside.sidebar > :last-child, | ||
| nav.contents > :last-child, | ||
| aside.topic > :last-child, | ||
| div.topic > :last-child, | ||
| div.admonition > :last-child { | ||
| margin-bottom: 0; | ||
| } | ||
| div.sidebar::after, | ||
| aside.sidebar::after, | ||
| nav.contents::after, | ||
| aside.topic::after, | ||
| div.topic::after, | ||
| div.admonition::after, | ||
| blockquote::after { | ||
| display: block; | ||
| content: ''; | ||
| clear: both; | ||
| } | ||
| /* -- tables ---------------------------------------------------------------- */ | ||
| table.docutils { | ||
| margin-top: 10px; | ||
| margin-bottom: 10px; | ||
| border: 0; | ||
| border-collapse: collapse; | ||
| } | ||
| table.align-center { | ||
| margin-left: auto; | ||
| margin-right: auto; | ||
| } | ||
| table.align-default { | ||
| margin-left: auto; | ||
| margin-right: auto; | ||
| } | ||
| table caption span.caption-number { | ||
| font-style: italic; | ||
| } | ||
| table caption span.caption-text { | ||
| } | ||
| table.docutils td, table.docutils th { | ||
| padding: 1px 8px 1px 5px; | ||
| border-top: 0; | ||
| border-left: 0; | ||
| border-right: 0; | ||
| border-bottom: 1px solid #aaa; | ||
| } | ||
| th { | ||
| text-align: left; | ||
| padding-right: 5px; | ||
| } | ||
| table.citation { | ||
| border-left: solid 1px gray; | ||
| margin-left: 1px; | ||
| } | ||
| table.citation td { | ||
| border-bottom: none; | ||
| } | ||
| th > :first-child, | ||
| td > :first-child { | ||
| margin-top: 0px; | ||
| } | ||
| th > :last-child, | ||
| td > :last-child { | ||
| margin-bottom: 0px; | ||
| } | ||
| /* -- figures --------------------------------------------------------------- */ | ||
| div.figure, figure { | ||
| margin: 0.5em; | ||
| padding: 0.5em; | ||
| } | ||
| div.figure p.caption, figcaption { | ||
| padding: 0.3em; | ||
| } | ||
| div.figure p.caption span.caption-number, | ||
| figcaption span.caption-number { | ||
| font-style: italic; | ||
| } | ||
| div.figure p.caption span.caption-text, | ||
| figcaption span.caption-text { | ||
| } | ||
| /* -- field list styles ----------------------------------------------------- */ | ||
| table.field-list td, table.field-list th { | ||
| border: 0 !important; | ||
| } | ||
| .field-list ul { | ||
| margin: 0; | ||
| padding-left: 1em; | ||
| } | ||
| .field-list p { | ||
| margin: 0; | ||
| } | ||
| .field-name { | ||
| -moz-hyphens: manual; | ||
| -ms-hyphens: manual; | ||
| -webkit-hyphens: manual; | ||
| hyphens: manual; | ||
| } | ||
| /* -- hlist styles ---------------------------------------------------------- */ | ||
| table.hlist { | ||
| margin: 1em 0; | ||
| } | ||
| table.hlist td { | ||
| vertical-align: top; | ||
| } | ||
| /* -- object description styles --------------------------------------------- */ | ||
| .sig { | ||
| font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; | ||
| } | ||
| .sig-name, code.descname { | ||
| background-color: transparent; | ||
| font-weight: bold; | ||
| } | ||
| .sig-name { | ||
| font-size: 1.1em; | ||
| } | ||
| code.descname { | ||
| font-size: 1.2em; | ||
| } | ||
| .sig-prename, code.descclassname { | ||
| background-color: transparent; | ||
| } | ||
| .optional { | ||
| font-size: 1.3em; | ||
| } | ||
| .sig-paren { | ||
| font-size: larger; | ||
| } | ||
| .sig-param.n { | ||
| font-style: italic; | ||
| } | ||
| /* C++ specific styling */ | ||
| .sig-inline.c-texpr, | ||
| .sig-inline.cpp-texpr { | ||
| font-family: unset; | ||
| } | ||
| .sig.c .k, .sig.c .kt, | ||
| .sig.cpp .k, .sig.cpp .kt { | ||
| color: #0033B3; | ||
| } | ||
| .sig.c .m, | ||
| .sig.cpp .m { | ||
| color: #1750EB; | ||
| } | ||
| .sig.c .s, .sig.c .sc, | ||
| .sig.cpp .s, .sig.cpp .sc { | ||
| color: #067D17; | ||
| } | ||
| /* -- other body styles ----------------------------------------------------- */ | ||
| ol.arabic { | ||
| list-style: decimal; | ||
| } | ||
| ol.loweralpha { | ||
| list-style: lower-alpha; | ||
| } | ||
| ol.upperalpha { | ||
| list-style: upper-alpha; | ||
| } | ||
| ol.lowerroman { | ||
| list-style: lower-roman; | ||
| } | ||
| ol.upperroman { | ||
| list-style: upper-roman; | ||
| } | ||
| :not(li) > ol > li:first-child > :first-child, | ||
| :not(li) > ul > li:first-child > :first-child { | ||
| margin-top: 0px; | ||
| } | ||
| :not(li) > ol > li:last-child > :last-child, | ||
| :not(li) > ul > li:last-child > :last-child { | ||
| margin-bottom: 0px; | ||
| } | ||
| ol.simple ol p, | ||
| ol.simple ul p, | ||
| ul.simple ol p, | ||
| ul.simple ul p { | ||
| margin-top: 0; | ||
| } | ||
| ol.simple > li:not(:first-child) > p, | ||
| ul.simple > li:not(:first-child) > p { | ||
| margin-top: 0; | ||
| } | ||
| ol.simple p, | ||
| ul.simple p { | ||
| margin-bottom: 0; | ||
| } | ||
| aside.footnote > span, | ||
| div.citation > span { | ||
| float: left; | ||
| } | ||
| aside.footnote > span:last-of-type, | ||
| div.citation > span:last-of-type { | ||
| padding-right: 0.5em; | ||
| } | ||
| aside.footnote > p { | ||
| margin-left: 2em; | ||
| } | ||
| div.citation > p { | ||
| margin-left: 4em; | ||
| } | ||
| aside.footnote > p:last-of-type, | ||
| div.citation > p:last-of-type { | ||
| margin-bottom: 0em; | ||
| } | ||
| aside.footnote > p:last-of-type:after, | ||
| div.citation > p:last-of-type:after { | ||
| content: ""; | ||
| clear: both; | ||
| } | ||
| dl.field-list { | ||
| display: grid; | ||
| grid-template-columns: fit-content(30%) auto; | ||
| } | ||
| dl.field-list > dt { | ||
| font-weight: bold; | ||
| word-break: break-word; | ||
| padding-left: 0.5em; | ||
| padding-right: 5px; | ||
| } | ||
| dl.field-list > dd { | ||
| padding-left: 0.5em; | ||
| margin-top: 0em; | ||
| margin-left: 0em; | ||
| margin-bottom: 0em; | ||
| } | ||
| dl { | ||
| margin-bottom: 15px; | ||
| } | ||
| dd > :first-child { | ||
| margin-top: 0px; | ||
| } | ||
| dd ul, dd table { | ||
| margin-bottom: 10px; | ||
| } | ||
| dd { | ||
| margin-top: 3px; | ||
| margin-bottom: 10px; | ||
| margin-left: 30px; | ||
| } | ||
| .sig dd { | ||
| margin-top: 0px; | ||
| margin-bottom: 0px; | ||
| } | ||
| .sig dl { | ||
| margin-top: 0px; | ||
| margin-bottom: 0px; | ||
| } | ||
| dl > dd:last-child, | ||
| dl > dd:last-child > :last-child { | ||
| margin-bottom: 0; | ||
| } | ||
| dt:target, span.highlighted { | ||
| background-color: #fbe54e; | ||
| } | ||
| rect.highlighted { | ||
| fill: #fbe54e; | ||
| } | ||
| dl.glossary dt { | ||
| font-weight: bold; | ||
| font-size: 1.1em; | ||
| } | ||
| .versionmodified { | ||
| font-style: italic; | ||
| } | ||
| .system-message { | ||
| background-color: #fda; | ||
| padding: 5px; | ||
| border: 3px solid red; | ||
| } | ||
| .footnote:target { | ||
| background-color: #ffa; | ||
| } | ||
| .line-block { | ||
| display: block; | ||
| margin-top: 1em; | ||
| margin-bottom: 1em; | ||
| } | ||
| .line-block .line-block { | ||
| margin-top: 0; | ||
| margin-bottom: 0; | ||
| margin-left: 1.5em; | ||
| } | ||
| .guilabel, .menuselection { | ||
| font-family: sans-serif; | ||
| } | ||
| .accelerator { | ||
| text-decoration: underline; | ||
| } | ||
| .classifier { | ||
| font-style: oblique; | ||
| } | ||
| .classifier:before { | ||
| font-style: normal; | ||
| margin: 0 0.5em; | ||
| content: ":"; | ||
| display: inline-block; | ||
| } | ||
| abbr, acronym { | ||
| border-bottom: dotted 1px; | ||
| cursor: help; | ||
| } | ||
| /* -- code displays --------------------------------------------------------- */ | ||
| pre { | ||
| overflow: auto; | ||
| overflow-y: hidden; /* fixes display issues on Chrome browsers */ | ||
| } | ||
| pre, div[class*="highlight-"] { | ||
| clear: both; | ||
| } | ||
| span.pre { | ||
| -moz-hyphens: none; | ||
| -ms-hyphens: none; | ||
| -webkit-hyphens: none; | ||
| hyphens: none; | ||
| white-space: nowrap; | ||
| } | ||
| div[class*="highlight-"] { | ||
| margin: 1em 0; | ||
| } | ||
| td.linenos pre { | ||
| border: 0; | ||
| background-color: transparent; | ||
| color: #aaa; | ||
| } | ||
| table.highlighttable { | ||
| display: block; | ||
| } | ||
| table.highlighttable tbody { | ||
| display: block; | ||
| } | ||
| table.highlighttable tr { | ||
| display: flex; | ||
| } | ||
| table.highlighttable td { | ||
| margin: 0; | ||
| padding: 0; | ||
| } | ||
| table.highlighttable td.linenos { | ||
| padding-right: 0.5em; | ||
| } | ||
| table.highlighttable td.code { | ||
| flex: 1; | ||
| overflow: hidden; | ||
| } | ||
| .highlight .hll { | ||
| display: block; | ||
| } | ||
| div.highlight pre, | ||
| table.highlighttable pre { | ||
| margin: 0; | ||
| } | ||
| div.code-block-caption + div { | ||
| margin-top: 0; | ||
| } | ||
| div.code-block-caption { | ||
| margin-top: 1em; | ||
| padding: 2px 5px; | ||
| font-size: small; | ||
| } | ||
| div.code-block-caption code { | ||
| background-color: transparent; | ||
| } | ||
| table.highlighttable td.linenos, | ||
| span.linenos, | ||
| div.highlight span.gp { /* gp: Generic.Prompt */ | ||
| user-select: none; | ||
| -webkit-user-select: text; /* Safari fallback only */ | ||
| -webkit-user-select: none; /* Chrome/Safari */ | ||
| -moz-user-select: none; /* Firefox */ | ||
| -ms-user-select: none; /* IE10+ */ | ||
| } | ||
| div.code-block-caption span.caption-number { | ||
| padding: 0.1em 0.3em; | ||
| font-style: italic; | ||
| } | ||
| div.code-block-caption span.caption-text { | ||
| } | ||
| div.literal-block-wrapper { | ||
| margin: 1em 0; | ||
| } | ||
| code.xref, a code { | ||
| background-color: transparent; | ||
| font-weight: bold; | ||
| } | ||
| h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { | ||
| background-color: transparent; | ||
| } | ||
| .viewcode-link { | ||
| float: right; | ||
| } | ||
| .viewcode-back { | ||
| float: right; | ||
| font-family: sans-serif; | ||
| } | ||
| div.viewcode-block:target { | ||
| margin: -1px -10px; | ||
| padding: 0 10px; | ||
| } | ||
| /* -- math display ---------------------------------------------------------- */ | ||
| img.math { | ||
| vertical-align: middle; | ||
| } | ||
| div.body div.math p { | ||
| text-align: center; | ||
| } | ||
| span.eqno { | ||
| float: right; | ||
| } | ||
| span.eqno a.headerlink { | ||
| position: absolute; | ||
| z-index: 1; | ||
| } | ||
| div.math:hover a.headerlink { | ||
| visibility: visible; | ||
| } | ||
| /* -- printout stylesheet --------------------------------------------------- */ | ||
| @media print { | ||
| div.document, | ||
| div.documentwrapper, | ||
| div.bodywrapper { | ||
| margin: 0 !important; | ||
| width: 100%; | ||
| } | ||
| div.sphinxsidebar, | ||
| div.related, | ||
| div.footer, | ||
| #top-link { | ||
| display: none; | ||
| } | ||
| } |
| /* | ||
| * Base JavaScript utilities for all Sphinx HTML documentation. | ||
| */ | ||
| "use strict"; | ||
| const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ | ||
| "TEXTAREA", | ||
| "INPUT", | ||
| "SELECT", | ||
| "BUTTON", | ||
| ]); | ||
| const _ready = (callback) => { | ||
| if (document.readyState !== "loading") { | ||
| callback(); | ||
| } else { | ||
| document.addEventListener("DOMContentLoaded", callback); | ||
| } | ||
| }; | ||
| /** | ||
| * Small JavaScript module for the documentation. | ||
| */ | ||
| const Documentation = { | ||
| init: () => { | ||
| Documentation.initDomainIndexTable(); | ||
| Documentation.initOnKeyListeners(); | ||
| }, | ||
| /** | ||
| * i18n support | ||
| */ | ||
| TRANSLATIONS: {}, | ||
| PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), | ||
| LOCALE: "unknown", | ||
| // gettext and ngettext don't access this so that the functions | ||
| // can safely bound to a different name (_ = Documentation.gettext) | ||
| gettext: (string) => { | ||
| const translated = Documentation.TRANSLATIONS[string]; | ||
| switch (typeof translated) { | ||
| case "undefined": | ||
| return string; // no translation | ||
| case "string": | ||
| return translated; // translation exists | ||
| default: | ||
| return translated[0]; // (singular, plural) translation tuple exists | ||
| } | ||
| }, | ||
| ngettext: (singular, plural, n) => { | ||
| const translated = Documentation.TRANSLATIONS[singular]; | ||
| if (typeof translated !== "undefined") | ||
| return translated[Documentation.PLURAL_EXPR(n)]; | ||
| return n === 1 ? singular : plural; | ||
| }, | ||
| addTranslations: (catalog) => { | ||
| Object.assign(Documentation.TRANSLATIONS, catalog.messages); | ||
| Documentation.PLURAL_EXPR = new Function( | ||
| "n", | ||
| `return (${catalog.plural_expr})`, | ||
| ); | ||
| Documentation.LOCALE = catalog.locale; | ||
| }, | ||
| /** | ||
| * helper function to focus on search bar | ||
| */ | ||
| focusSearchBar: () => { | ||
| document.querySelectorAll("input[name=q]")[0]?.focus(); | ||
| }, | ||
| /** | ||
| * Initialise the domain index toggle buttons | ||
| */ | ||
| initDomainIndexTable: () => { | ||
| const toggler = (el) => { | ||
| const idNumber = el.id.substr(7); | ||
| const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); | ||
| if (el.src.substr(-9) === "minus.png") { | ||
| el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; | ||
| toggledRows.forEach((el) => (el.style.display = "none")); | ||
| } else { | ||
| el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; | ||
| toggledRows.forEach((el) => (el.style.display = "")); | ||
| } | ||
| }; | ||
| const togglerElements = document.querySelectorAll("img.toggler"); | ||
| togglerElements.forEach((el) => | ||
| el.addEventListener("click", (event) => toggler(event.currentTarget)), | ||
| ); | ||
| togglerElements.forEach((el) => (el.style.display = "")); | ||
| if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); | ||
| }, | ||
| initOnKeyListeners: () => { | ||
| // only install a listener if it is really needed | ||
| if ( | ||
| !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS | ||
| && !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS | ||
| ) | ||
| return; | ||
| document.addEventListener("keydown", (event) => { | ||
| // bail for input elements | ||
| if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) | ||
| return; | ||
| // bail with special keys | ||
| if (event.altKey || event.ctrlKey || event.metaKey) return; | ||
| if (!event.shiftKey) { | ||
| switch (event.key) { | ||
| case "ArrowLeft": | ||
| if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | ||
| const prevLink = document.querySelector('link[rel="prev"]'); | ||
| if (prevLink && prevLink.href) { | ||
| window.location.href = prevLink.href; | ||
| event.preventDefault(); | ||
| } | ||
| break; | ||
| case "ArrowRight": | ||
| if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | ||
| const nextLink = document.querySelector('link[rel="next"]'); | ||
| if (nextLink && nextLink.href) { | ||
| window.location.href = nextLink.href; | ||
| event.preventDefault(); | ||
| } | ||
| break; | ||
| } | ||
| } | ||
| // some keyboard layouts may need Shift to get / | ||
| switch (event.key) { | ||
| case "/": | ||
| if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; | ||
| Documentation.focusSearchBar(); | ||
| event.preventDefault(); | ||
| } | ||
| }); | ||
| }, | ||
| }; | ||
| // quick alias for translations | ||
| const _ = Documentation.gettext; | ||
| _ready(Documentation.init); |
| const DOCUMENTATION_OPTIONS = { | ||
| VERSION: '2.0.11', | ||
| LANGUAGE: 'en', | ||
| COLLAPSE_INDEX: false, | ||
| BUILDER: 'html', | ||
| FILE_SUFFIX: '.html', | ||
| LINK_SUFFIX: '.html', | ||
| HAS_SOURCE: true, | ||
| SOURCELINK_SUFFIX: '', | ||
| NAVIGATION_WITH_KEYS: true, | ||
| SHOW_SEARCH_SUMMARY: true, | ||
| ENABLE_SEARCH_SHORTCUTS: true, | ||
| }; |
| // Generated from english.sbl by Snowball 3.0.1 - https://snowballstem.org/ | ||
| /**@constructor*/ | ||
| var EnglishStemmer = function() { | ||
| var base = new BaseStemmer(); | ||
| /** @const */ var a_0 = [ | ||
| ["arsen", -1, -1], | ||
| ["commun", -1, -1], | ||
| ["emerg", -1, -1], | ||
| ["gener", -1, -1], | ||
| ["later", -1, -1], | ||
| ["organ", -1, -1], | ||
| ["past", -1, -1], | ||
| ["univers", -1, -1] | ||
| ]; | ||
| /** @const */ var a_1 = [ | ||
| ["'", -1, 1], | ||
| ["'s'", 0, 1], | ||
| ["'s", -1, 1] | ||
| ]; | ||
| /** @const */ var a_2 = [ | ||
| ["ied", -1, 2], | ||
| ["s", -1, 3], | ||
| ["ies", 1, 2], | ||
| ["sses", 1, 1], | ||
| ["ss", 1, -1], | ||
| ["us", 1, -1] | ||
| ]; | ||
| /** @const */ var a_3 = [ | ||
| ["succ", -1, 1], | ||
| ["proc", -1, 1], | ||
| ["exc", -1, 1] | ||
| ]; | ||
| /** @const */ var a_4 = [ | ||
| ["even", -1, 2], | ||
| ["cann", -1, 2], | ||
| ["inn", -1, 2], | ||
| ["earr", -1, 2], | ||
| ["herr", -1, 2], | ||
| ["out", -1, 2], | ||
| ["y", -1, 1] | ||
| ]; | ||
| /** @const */ var a_5 = [ | ||
| ["", -1, -1], | ||
| ["ed", 0, 2], | ||
| ["eed", 1, 1], | ||
| ["ing", 0, 3], | ||
| ["edly", 0, 2], | ||
| ["eedly", 4, 1], | ||
| ["ingly", 0, 2] | ||
| ]; | ||
| /** @const */ var a_6 = [ | ||
| ["", -1, 3], | ||
| ["bb", 0, 2], | ||
| ["dd", 0, 2], | ||
| ["ff", 0, 2], | ||
| ["gg", 0, 2], | ||
| ["bl", 0, 1], | ||
| ["mm", 0, 2], | ||
| ["nn", 0, 2], | ||
| ["pp", 0, 2], | ||
| ["rr", 0, 2], | ||
| ["at", 0, 1], | ||
| ["tt", 0, 2], | ||
| ["iz", 0, 1] | ||
| ]; | ||
| /** @const */ var a_7 = [ | ||
| ["anci", -1, 3], | ||
| ["enci", -1, 2], | ||
| ["ogi", -1, 14], | ||
| ["li", -1, 16], | ||
| ["bli", 3, 12], | ||
| ["abli", 4, 4], | ||
| ["alli", 3, 8], | ||
| ["fulli", 3, 9], | ||
| ["lessli", 3, 15], | ||
| ["ousli", 3, 10], | ||
| ["entli", 3, 5], | ||
| ["aliti", -1, 8], | ||
| ["biliti", -1, 12], | ||
| ["iviti", -1, 11], | ||
| ["tional", -1, 1], | ||
| ["ational", 14, 7], | ||
| ["alism", -1, 8], | ||
| ["ation", -1, 7], | ||
| ["ization", 17, 6], | ||
| ["izer", -1, 6], | ||
| ["ator", -1, 7], | ||
| ["iveness", -1, 11], | ||
| ["fulness", -1, 9], | ||
| ["ousness", -1, 10], | ||
| ["ogist", -1, 13] | ||
| ]; | ||
| /** @const */ var a_8 = [ | ||
| ["icate", -1, 4], | ||
| ["ative", -1, 6], | ||
| ["alize", -1, 3], | ||
| ["iciti", -1, 4], | ||
| ["ical", -1, 4], | ||
| ["tional", -1, 1], | ||
| ["ational", 5, 2], | ||
| ["ful", -1, 5], | ||
| ["ness", -1, 5] | ||
| ]; | ||
| /** @const */ var a_9 = [ | ||
| ["ic", -1, 1], | ||
| ["ance", -1, 1], | ||
| ["ence", -1, 1], | ||
| ["able", -1, 1], | ||
| ["ible", -1, 1], | ||
| ["ate", -1, 1], | ||
| ["ive", -1, 1], | ||
| ["ize", -1, 1], | ||
| ["iti", -1, 1], | ||
| ["al", -1, 1], | ||
| ["ism", -1, 1], | ||
| ["ion", -1, 2], | ||
| ["er", -1, 1], | ||
| ["ous", -1, 1], | ||
| ["ant", -1, 1], | ||
| ["ent", -1, 1], | ||
| ["ment", 15, 1], | ||
| ["ement", 16, 1] | ||
| ]; | ||
| /** @const */ var a_10 = [ | ||
| ["e", -1, 1], | ||
| ["l", -1, 2] | ||
| ]; | ||
| /** @const */ var a_11 = [ | ||
| ["andes", -1, -1], | ||
| ["atlas", -1, -1], | ||
| ["bias", -1, -1], | ||
| ["cosmos", -1, -1], | ||
| ["early", -1, 5], | ||
| ["gently", -1, 3], | ||
| ["howe", -1, -1], | ||
| ["idly", -1, 2], | ||
| ["news", -1, -1], | ||
| ["only", -1, 6], | ||
| ["singly", -1, 7], | ||
| ["skies", -1, 1], | ||
| ["sky", -1, -1], | ||
| ["ugly", -1, 4] | ||
| ]; | ||
| /** @const */ var /** Array<int> */ g_aeo = [17, 64]; | ||
| /** @const */ var /** Array<int> */ g_v = [17, 65, 16, 1]; | ||
| /** @const */ var /** Array<int> */ g_v_WXY = [1, 17, 65, 208, 1]; | ||
| /** @const */ var /** Array<int> */ g_valid_LI = [55, 141, 2]; | ||
| var /** boolean */ B_Y_found = false; | ||
| var /** number */ I_p2 = 0; | ||
| var /** number */ I_p1 = 0; | ||
| /** @return {boolean} */ | ||
| function r_prelude() { | ||
| B_Y_found = false; | ||
| /** @const */ var /** number */ v_1 = base.cursor; | ||
| lab0: { | ||
| base.bra = base.cursor; | ||
| if (!(base.eq_s("'"))) | ||
| { | ||
| break lab0; | ||
| } | ||
| base.ket = base.cursor; | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| base.cursor = v_1; | ||
| /** @const */ var /** number */ v_2 = base.cursor; | ||
| lab1: { | ||
| base.bra = base.cursor; | ||
| if (!(base.eq_s("y"))) | ||
| { | ||
| break lab1; | ||
| } | ||
| base.ket = base.cursor; | ||
| if (!base.slice_from("Y")) | ||
| { | ||
| return false; | ||
| } | ||
| B_Y_found = true; | ||
| } | ||
| base.cursor = v_2; | ||
| /** @const */ var /** number */ v_3 = base.cursor; | ||
| lab2: { | ||
| while(true) | ||
| { | ||
| /** @const */ var /** number */ v_4 = base.cursor; | ||
| lab3: { | ||
| golab4: while(true) | ||
| { | ||
| /** @const */ var /** number */ v_5 = base.cursor; | ||
| lab5: { | ||
| if (!(base.in_grouping(g_v, 97, 121))) | ||
| { | ||
| break lab5; | ||
| } | ||
| base.bra = base.cursor; | ||
| if (!(base.eq_s("y"))) | ||
| { | ||
| break lab5; | ||
| } | ||
| base.ket = base.cursor; | ||
| base.cursor = v_5; | ||
| break golab4; | ||
| } | ||
| base.cursor = v_5; | ||
| if (base.cursor >= base.limit) | ||
| { | ||
| break lab3; | ||
| } | ||
| base.cursor++; | ||
| } | ||
| if (!base.slice_from("Y")) | ||
| { | ||
| return false; | ||
| } | ||
| B_Y_found = true; | ||
| continue; | ||
| } | ||
| base.cursor = v_4; | ||
| break; | ||
| } | ||
| } | ||
| base.cursor = v_3; | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_mark_regions() { | ||
| I_p1 = base.limit; | ||
| I_p2 = base.limit; | ||
| /** @const */ var /** number */ v_1 = base.cursor; | ||
| lab0: { | ||
| lab1: { | ||
| /** @const */ var /** number */ v_2 = base.cursor; | ||
| lab2: { | ||
| if (base.find_among(a_0) == 0) | ||
| { | ||
| break lab2; | ||
| } | ||
| break lab1; | ||
| } | ||
| base.cursor = v_2; | ||
| if (!base.go_out_grouping(g_v, 97, 121)) | ||
| { | ||
| break lab0; | ||
| } | ||
| base.cursor++; | ||
| if (!base.go_in_grouping(g_v, 97, 121)) | ||
| { | ||
| break lab0; | ||
| } | ||
| base.cursor++; | ||
| } | ||
| I_p1 = base.cursor; | ||
| if (!base.go_out_grouping(g_v, 97, 121)) | ||
| { | ||
| break lab0; | ||
| } | ||
| base.cursor++; | ||
| if (!base.go_in_grouping(g_v, 97, 121)) | ||
| { | ||
| break lab0; | ||
| } | ||
| base.cursor++; | ||
| I_p2 = base.cursor; | ||
| } | ||
| base.cursor = v_1; | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_shortv() { | ||
| lab0: { | ||
| /** @const */ var /** number */ v_1 = base.limit - base.cursor; | ||
| lab1: { | ||
| if (!(base.out_grouping_b(g_v_WXY, 89, 121))) | ||
| { | ||
| break lab1; | ||
| } | ||
| if (!(base.in_grouping_b(g_v, 97, 121))) | ||
| { | ||
| break lab1; | ||
| } | ||
| if (!(base.out_grouping_b(g_v, 97, 121))) | ||
| { | ||
| break lab1; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = base.limit - v_1; | ||
| lab2: { | ||
| if (!(base.out_grouping_b(g_v, 97, 121))) | ||
| { | ||
| break lab2; | ||
| } | ||
| if (!(base.in_grouping_b(g_v, 97, 121))) | ||
| { | ||
| break lab2; | ||
| } | ||
| if (base.cursor > base.limit_backward) | ||
| { | ||
| break lab2; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = base.limit - v_1; | ||
| if (!(base.eq_s_b("past"))) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_R1() { | ||
| return I_p1 <= base.cursor; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_R2() { | ||
| return I_p2 <= base.cursor; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_1a() { | ||
| var /** number */ among_var; | ||
| /** @const */ var /** number */ v_1 = base.limit - base.cursor; | ||
| lab0: { | ||
| base.ket = base.cursor; | ||
| if (base.find_among_b(a_1) == 0) | ||
| { | ||
| base.cursor = base.limit - v_1; | ||
| break lab0; | ||
| } | ||
| base.bra = base.cursor; | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| base.ket = base.cursor; | ||
| among_var = base.find_among_b(a_2); | ||
| if (among_var == 0) | ||
| { | ||
| return false; | ||
| } | ||
| base.bra = base.cursor; | ||
| switch (among_var) { | ||
| case 1: | ||
| if (!base.slice_from("ss")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| lab1: { | ||
| /** @const */ var /** number */ v_2 = base.limit - base.cursor; | ||
| lab2: { | ||
| { | ||
| /** @const */ var /** number */ c1 = base.cursor - 2; | ||
| if (c1 < base.limit_backward) | ||
| { | ||
| break lab2; | ||
| } | ||
| base.cursor = c1; | ||
| } | ||
| if (!base.slice_from("i")) | ||
| { | ||
| return false; | ||
| } | ||
| break lab1; | ||
| } | ||
| base.cursor = base.limit - v_2; | ||
| if (!base.slice_from("ie")) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| break; | ||
| case 3: | ||
| if (base.cursor <= base.limit_backward) | ||
| { | ||
| return false; | ||
| } | ||
| base.cursor--; | ||
| if (!base.go_out_grouping_b(g_v, 97, 121)) | ||
| { | ||
| return false; | ||
| } | ||
| base.cursor--; | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_1b() { | ||
| var /** number */ among_var; | ||
| base.ket = base.cursor; | ||
| among_var = base.find_among_b(a_5); | ||
| base.bra = base.cursor; | ||
| lab0: { | ||
| /** @const */ var /** number */ v_1 = base.limit - base.cursor; | ||
| lab1: { | ||
| switch (among_var) { | ||
| case 1: | ||
| /** @const */ var /** number */ v_2 = base.limit - base.cursor; | ||
| lab2: { | ||
| lab3: { | ||
| /** @const */ var /** number */ v_3 = base.limit - base.cursor; | ||
| lab4: { | ||
| if (base.find_among_b(a_3) == 0) | ||
| { | ||
| break lab4; | ||
| } | ||
| if (base.cursor > base.limit_backward) | ||
| { | ||
| break lab4; | ||
| } | ||
| break lab3; | ||
| } | ||
| base.cursor = base.limit - v_3; | ||
| if (!r_R1()) | ||
| { | ||
| break lab2; | ||
| } | ||
| if (!base.slice_from("ee")) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| } | ||
| base.cursor = base.limit - v_2; | ||
| break; | ||
| case 2: | ||
| break lab1; | ||
| case 3: | ||
| among_var = base.find_among_b(a_4); | ||
| if (among_var == 0) | ||
| { | ||
| break lab1; | ||
| } | ||
| switch (among_var) { | ||
| case 1: | ||
| /** @const */ var /** number */ v_4 = base.limit - base.cursor; | ||
| if (!(base.out_grouping_b(g_v, 97, 121))) | ||
| { | ||
| break lab1; | ||
| } | ||
| if (base.cursor > base.limit_backward) | ||
| { | ||
| break lab1; | ||
| } | ||
| base.cursor = base.limit - v_4; | ||
| base.bra = base.cursor; | ||
| if (!base.slice_from("ie")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| if (base.cursor > base.limit_backward) | ||
| { | ||
| break lab1; | ||
| } | ||
| break; | ||
| } | ||
| break; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = base.limit - v_1; | ||
| /** @const */ var /** number */ v_5 = base.limit - base.cursor; | ||
| if (!base.go_out_grouping_b(g_v, 97, 121)) | ||
| { | ||
| return false; | ||
| } | ||
| base.cursor--; | ||
| base.cursor = base.limit - v_5; | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| base.ket = base.cursor; | ||
| base.bra = base.cursor; | ||
| /** @const */ var /** number */ v_6 = base.limit - base.cursor; | ||
| among_var = base.find_among_b(a_6); | ||
| switch (among_var) { | ||
| case 1: | ||
| if (!base.slice_from("e")) | ||
| { | ||
| return false; | ||
| } | ||
| return false; | ||
| case 2: | ||
| { | ||
| /** @const */ var /** number */ v_7 = base.limit - base.cursor; | ||
| lab5: { | ||
| if (!(base.in_grouping_b(g_aeo, 97, 111))) | ||
| { | ||
| break lab5; | ||
| } | ||
| if (base.cursor > base.limit_backward) | ||
| { | ||
| break lab5; | ||
| } | ||
| return false; | ||
| } | ||
| base.cursor = base.limit - v_7; | ||
| } | ||
| break; | ||
| case 3: | ||
| if (base.cursor != I_p1) | ||
| { | ||
| return false; | ||
| } | ||
| /** @const */ var /** number */ v_8 = base.limit - base.cursor; | ||
| if (!r_shortv()) | ||
| { | ||
| return false; | ||
| } | ||
| base.cursor = base.limit - v_8; | ||
| if (!base.slice_from("e")) | ||
| { | ||
| return false; | ||
| } | ||
| return false; | ||
| } | ||
| base.cursor = base.limit - v_6; | ||
| base.ket = base.cursor; | ||
| if (base.cursor <= base.limit_backward) | ||
| { | ||
| return false; | ||
| } | ||
| base.cursor--; | ||
| base.bra = base.cursor; | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_1c() { | ||
| base.ket = base.cursor; | ||
| lab0: { | ||
| /** @const */ var /** number */ v_1 = base.limit - base.cursor; | ||
| lab1: { | ||
| if (!(base.eq_s_b("y"))) | ||
| { | ||
| break lab1; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = base.limit - v_1; | ||
| if (!(base.eq_s_b("Y"))) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| base.bra = base.cursor; | ||
| if (!(base.out_grouping_b(g_v, 97, 121))) | ||
| { | ||
| return false; | ||
| } | ||
| lab2: { | ||
| if (base.cursor > base.limit_backward) | ||
| { | ||
| break lab2; | ||
| } | ||
| return false; | ||
| } | ||
| if (!base.slice_from("i")) | ||
| { | ||
| return false; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_2() { | ||
| var /** number */ among_var; | ||
| base.ket = base.cursor; | ||
| among_var = base.find_among_b(a_7); | ||
| if (among_var == 0) | ||
| { | ||
| return false; | ||
| } | ||
| base.bra = base.cursor; | ||
| if (!r_R1()) | ||
| { | ||
| return false; | ||
| } | ||
| switch (among_var) { | ||
| case 1: | ||
| if (!base.slice_from("tion")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| if (!base.slice_from("ence")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 3: | ||
| if (!base.slice_from("ance")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 4: | ||
| if (!base.slice_from("able")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 5: | ||
| if (!base.slice_from("ent")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 6: | ||
| if (!base.slice_from("ize")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 7: | ||
| if (!base.slice_from("ate")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 8: | ||
| if (!base.slice_from("al")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 9: | ||
| if (!base.slice_from("ful")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 10: | ||
| if (!base.slice_from("ous")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 11: | ||
| if (!base.slice_from("ive")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 12: | ||
| if (!base.slice_from("ble")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 13: | ||
| if (!base.slice_from("og")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 14: | ||
| if (!(base.eq_s_b("l"))) | ||
| { | ||
| return false; | ||
| } | ||
| if (!base.slice_from("og")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 15: | ||
| if (!base.slice_from("less")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 16: | ||
| if (!(base.in_grouping_b(g_valid_LI, 99, 116))) | ||
| { | ||
| return false; | ||
| } | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_3() { | ||
| var /** number */ among_var; | ||
| base.ket = base.cursor; | ||
| among_var = base.find_among_b(a_8); | ||
| if (among_var == 0) | ||
| { | ||
| return false; | ||
| } | ||
| base.bra = base.cursor; | ||
| if (!r_R1()) | ||
| { | ||
| return false; | ||
| } | ||
| switch (among_var) { | ||
| case 1: | ||
| if (!base.slice_from("tion")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| if (!base.slice_from("ate")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 3: | ||
| if (!base.slice_from("al")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 4: | ||
| if (!base.slice_from("ic")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 5: | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 6: | ||
| if (!r_R2()) | ||
| { | ||
| return false; | ||
| } | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_4() { | ||
| var /** number */ among_var; | ||
| base.ket = base.cursor; | ||
| among_var = base.find_among_b(a_9); | ||
| if (among_var == 0) | ||
| { | ||
| return false; | ||
| } | ||
| base.bra = base.cursor; | ||
| if (!r_R2()) | ||
| { | ||
| return false; | ||
| } | ||
| switch (among_var) { | ||
| case 1: | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| lab0: { | ||
| /** @const */ var /** number */ v_1 = base.limit - base.cursor; | ||
| lab1: { | ||
| if (!(base.eq_s_b("s"))) | ||
| { | ||
| break lab1; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = base.limit - v_1; | ||
| if (!(base.eq_s_b("t"))) | ||
| { | ||
| return false; | ||
| } | ||
| } | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_Step_5() { | ||
| var /** number */ among_var; | ||
| base.ket = base.cursor; | ||
| among_var = base.find_among_b(a_10); | ||
| if (among_var == 0) | ||
| { | ||
| return false; | ||
| } | ||
| base.bra = base.cursor; | ||
| switch (among_var) { | ||
| case 1: | ||
| lab0: { | ||
| lab1: { | ||
| if (!r_R2()) | ||
| { | ||
| break lab1; | ||
| } | ||
| break lab0; | ||
| } | ||
| if (!r_R1()) | ||
| { | ||
| return false; | ||
| } | ||
| { | ||
| /** @const */ var /** number */ v_1 = base.limit - base.cursor; | ||
| lab2: { | ||
| if (!r_shortv()) | ||
| { | ||
| break lab2; | ||
| } | ||
| return false; | ||
| } | ||
| base.cursor = base.limit - v_1; | ||
| } | ||
| } | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| if (!r_R2()) | ||
| { | ||
| return false; | ||
| } | ||
| if (!(base.eq_s_b("l"))) | ||
| { | ||
| return false; | ||
| } | ||
| if (!base.slice_del()) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_exception1() { | ||
| var /** number */ among_var; | ||
| base.bra = base.cursor; | ||
| among_var = base.find_among(a_11); | ||
| if (among_var == 0) | ||
| { | ||
| return false; | ||
| } | ||
| base.ket = base.cursor; | ||
| if (base.cursor < base.limit) | ||
| { | ||
| return false; | ||
| } | ||
| switch (among_var) { | ||
| case 1: | ||
| if (!base.slice_from("sky")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 2: | ||
| if (!base.slice_from("idl")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 3: | ||
| if (!base.slice_from("gentl")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 4: | ||
| if (!base.slice_from("ugli")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 5: | ||
| if (!base.slice_from("earli")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 6: | ||
| if (!base.slice_from("onli")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| case 7: | ||
| if (!base.slice_from("singl")) | ||
| { | ||
| return false; | ||
| } | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| /** @return {boolean} */ | ||
| function r_postlude() { | ||
| if (!B_Y_found) | ||
| { | ||
| return false; | ||
| } | ||
| while(true) | ||
| { | ||
| /** @const */ var /** number */ v_1 = base.cursor; | ||
| lab0: { | ||
| golab1: while(true) | ||
| { | ||
| /** @const */ var /** number */ v_2 = base.cursor; | ||
| lab2: { | ||
| base.bra = base.cursor; | ||
| if (!(base.eq_s("Y"))) | ||
| { | ||
| break lab2; | ||
| } | ||
| base.ket = base.cursor; | ||
| base.cursor = v_2; | ||
| break golab1; | ||
| } | ||
| base.cursor = v_2; | ||
| if (base.cursor >= base.limit) | ||
| { | ||
| break lab0; | ||
| } | ||
| base.cursor++; | ||
| } | ||
| if (!base.slice_from("y")) | ||
| { | ||
| return false; | ||
| } | ||
| continue; | ||
| } | ||
| base.cursor = v_1; | ||
| break; | ||
| } | ||
| return true; | ||
| }; | ||
| this.stem = /** @return {boolean} */ function() { | ||
| lab0: { | ||
| /** @const */ var /** number */ v_1 = base.cursor; | ||
| lab1: { | ||
| if (!r_exception1()) | ||
| { | ||
| break lab1; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = v_1; | ||
| lab2: { | ||
| { | ||
| /** @const */ var /** number */ v_2 = base.cursor; | ||
| lab3: { | ||
| { | ||
| /** @const */ var /** number */ c1 = base.cursor + 3; | ||
| if (c1 > base.limit) | ||
| { | ||
| break lab3; | ||
| } | ||
| base.cursor = c1; | ||
| } | ||
| break lab2; | ||
| } | ||
| base.cursor = v_2; | ||
| } | ||
| break lab0; | ||
| } | ||
| base.cursor = v_1; | ||
| r_prelude(); | ||
| r_mark_regions(); | ||
| base.limit_backward = base.cursor; base.cursor = base.limit; | ||
| /** @const */ var /** number */ v_3 = base.limit - base.cursor; | ||
| r_Step_1a(); | ||
| base.cursor = base.limit - v_3; | ||
| /** @const */ var /** number */ v_4 = base.limit - base.cursor; | ||
| r_Step_1b(); | ||
| base.cursor = base.limit - v_4; | ||
| /** @const */ var /** number */ v_5 = base.limit - base.cursor; | ||
| r_Step_1c(); | ||
| base.cursor = base.limit - v_5; | ||
| /** @const */ var /** number */ v_6 = base.limit - base.cursor; | ||
| r_Step_2(); | ||
| base.cursor = base.limit - v_6; | ||
| /** @const */ var /** number */ v_7 = base.limit - base.cursor; | ||
| r_Step_3(); | ||
| base.cursor = base.limit - v_7; | ||
| /** @const */ var /** number */ v_8 = base.limit - base.cursor; | ||
| r_Step_4(); | ||
| base.cursor = base.limit - v_8; | ||
| /** @const */ var /** number */ v_9 = base.limit - base.cursor; | ||
| r_Step_5(); | ||
| base.cursor = base.limit - v_9; | ||
| base.cursor = base.limit_backward; | ||
| /** @const */ var /** number */ v_10 = base.cursor; | ||
| r_postlude(); | ||
| base.cursor = v_10; | ||
| } | ||
| return true; | ||
| }; | ||
| /**@return{string}*/ | ||
| this['stemWord'] = function(/**string*/word) { | ||
| base.setCurrent(word); | ||
| this.stem(); | ||
| return base.getCurrent(); | ||
| }; | ||
| }; |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="utf-8"?> | ||
| <!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | ||
| <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||
| viewBox="0 0 44.4 44.4" style="enable-background:new 0 0 44.4 44.4;" xml:space="preserve"> | ||
| <style type="text/css"> | ||
| .st0{fill:none;stroke:#F5A252;stroke-width:5;stroke-miterlimit:10;} | ||
| .st1{fill:none;stroke:#579ACA;stroke-width:5;stroke-miterlimit:10;} | ||
| .st2{fill:none;stroke:#E66581;stroke-width:5;stroke-miterlimit:10;} | ||
| </style> | ||
| <title>logo</title> | ||
| <g> | ||
| <path class="st0" d="M33.9,6.4c3.6,3.9,3.4,9.9-0.5,13.5s-9.9,3.4-13.5-0.5s-3.4-9.9,0.5-13.5l0,0C24.2,2.4,30.2,2.6,33.9,6.4z"/> | ||
| <path class="st1" d="M35.1,27.3c2.6,4.6,1.1,10.4-3.5,13c-4.6,2.6-10.4,1.1-13-3.5s-1.1-10.4,3.5-13l0,0 | ||
| C26.6,21.2,32.4,22.7,35.1,27.3z"/> | ||
| <path class="st2" d="M25.9,17.8c2.6,4.6,1.1,10.4-3.5,13s-10.4,1.1-13-3.5s-1.1-10.4,3.5-13l0,0C17.5,11.7,23.3,13.2,25.9,17.8z"/> | ||
| <path class="st1" d="M19.2,26.4c3.1-4.3,9.1-5.2,13.3-2.1c1.1,0.8,2,1.8,2.7,3"/> | ||
| <path class="st0" d="M19.9,19.4c-3.6-3.9-3.4-9.9,0.5-13.5s9.9-3.4,13.5,0.5"/> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
| <svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 128h52.512l29.539-11.077-11.077-43.487-34.051 3.693L0 128Z" fill="#0076D4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M52.513 128s16.6-8.759 19.673-24.277c3.072-15.517-12.091-26.594-35.263-26.594 0-.41 20.343-28.718 20.343-28.718l49.4 1.435L95.71 107.7l-20.452 15.978L52.513 128Z" fill="#002868"/><path fill-rule="evenodd" clip-rule="evenodd" d="M0 60.718 41.025.001s1.006.01 3.282 0c16.082-.068 81.23 3.12 81.23 60.368 0 65.352-73.025 67.631-73.025 67.631s30.495-5.839 30.495-34.816c0-28.978-27.541-32.466-45.264-32.466H0Z" fill="#00A9FF"/></svg> |
| <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="38.73" height="50" viewBox="0 0 38.73 50"><defs><style>.cls-1{fill:#767677;}.cls-2{fill:#f37726;}.cls-3{fill:#9e9e9e;}.cls-4{fill:#616262;}.cls-5{font-size:17.07px;fill:#fff;font-family:Roboto-Regular, Roboto;}</style></defs><title>logo_jupyterhub</title><g id="Canvas"><path id="path7_fill" data-name="path7 fill" class="cls-1" d="M39.51,3.53a3,3,0,0,1-1.7,2.9A3,3,0,0,1,34.48,6a3,3,0,0,1-.82-3.26,3,3,0,0,1,1.05-1.41A3,3,0,0,1,37.52.86a2.88,2.88,0,0,1,1,.6,3,3,0,0,1,.7.93,3.18,3.18,0,0,1,.28,1.14Z" transform="translate(-1.87 -0.69)"/><path id="path8_fill" data-name="path8 fill" class="cls-2" d="M21.91,38.39c-8,0-15.06-2.87-18.7-7.12a19.93,19.93,0,0,0,37.39,0C37,35.52,30,38.39,21.91,38.39Z" transform="translate(-1.87 -0.69)"/><path id="path9_fill" data-name="path9 fill" class="cls-2" d="M21.91,10.78c8,0,15.05,2.87,18.69,7.12a19.93,19.93,0,0,0-37.39,0C6.85,13.64,13.86,10.78,21.91,10.78Z" transform="translate(-1.87 -0.69)"/><path id="path10_fill" data-name="path10 fill" class="cls-3" d="M10.88,46.66a3.86,3.86,0,0,1-.52,2.15,3.81,3.81,0,0,1-1.62,1.51,3.93,3.93,0,0,1-2.19.34,3.79,3.79,0,0,1-2-.94,3.73,3.73,0,0,1-1.14-1.9,3.79,3.79,0,0,1,.1-2.21,3.86,3.86,0,0,1,1.33-1.78,3.92,3.92,0,0,1,3.54-.53,3.85,3.85,0,0,1,2.14,1.93,3.74,3.74,0,0,1,.37,1.43Z" transform="translate(-1.87 -0.69)"/><path id="path11_fill" data-name="path11 fill" class="cls-4" d="M4.12,9.81A2.18,2.18,0,0,1,2.9,9.48a2.23,2.23,0,0,1-.84-1A2.26,2.26,0,0,1,1.9,7.26a2.13,2.13,0,0,1,.56-1.13,2.18,2.18,0,0,1,2.36-.56,2.13,2.13,0,0,1,1,.76,2.18,2.18,0,0,1,.42,1.2A2.22,2.22,0,0,1,4.12,9.81Z" transform="translate(-1.87 -0.69)"/></g><text class="cls-5" transform="translate(5.24 30.01)">Hub</text></svg> |
| /* | ||
| * This script contains the language-specific data used by searchtools.js, | ||
| * namely the set of stopwords, stemmer, scorer and splitter. | ||
| */ | ||
| const stopwords = new Set(["a", "about", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]); | ||
| window.stopwords = stopwords; // Export to global scope | ||
| /* Non-minified versions are copied as separate JavaScript files, if available */ | ||
| BaseStemmer=function(){this.current="",this.cursor=0,this.limit=0,this.limit_backward=0,this.bra=0,this.ket=0,this.setCurrent=function(t){this.current=t,this.cursor=0,this.limit=this.current.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},this.getCurrent=function(){return this.current},this.copy_from=function(t){this.current=t.current,this.cursor=t.cursor,this.limit=t.limit,this.limit_backward=t.limit_backward,this.bra=t.bra,this.ket=t.ket},this.in_grouping=function(t,r,i){return!(this.cursor>=this.limit||i<(i=this.current.charCodeAt(this.cursor))||i<r||0==(t[(i-=r)>>>3]&1<<(7&i))||(this.cursor++,0))},this.go_in_grouping=function(t,r,i){for(;this.cursor<this.limit;){var s=this.current.charCodeAt(this.cursor);if(i<s||s<r)return!0;if(0==(t[(s-=r)>>>3]&1<<(7&s)))return!0;this.cursor++}return!1},this.in_grouping_b=function(t,r,i){return!(this.cursor<=this.limit_backward||i<(i=this.current.charCodeAt(this.cursor-1))||i<r||0==(t[(i-=r)>>>3]&1<<(7&i))||(this.cursor--,0))},this.go_in_grouping_b=function(t,r,i){for(;this.cursor>this.limit_backward;){var s=this.current.charCodeAt(this.cursor-1);if(i<s||s<r)return!0;if(0==(t[(s-=r)>>>3]&1<<(7&s)))return!0;this.cursor--}return!1},this.out_grouping=function(t,r,i){return!(this.cursor>=this.limit)&&(i<(i=this.current.charCodeAt(this.cursor))||i<r||0==(t[(i-=r)>>>3]&1<<(7&i)))&&(this.cursor++,!0)},this.go_out_grouping=function(t,r,i){for(;this.cursor<this.limit;){var s=this.current.charCodeAt(this.cursor);if(s<=i&&r<=s&&0!=(t[(s-=r)>>>3]&1<<(7&s)))return!0;this.cursor++}return!1},this.out_grouping_b=function(t,r,i){return!(this.cursor<=this.limit_backward)&&(i<(i=this.current.charCodeAt(this.cursor-1))||i<r||0==(t[(i-=r)>>>3]&1<<(7&i)))&&(this.cursor--,!0)},this.go_out_grouping_b=function(t,r,i){for(;this.cursor>this.limit_backward;){var s=this.current.charCodeAt(this.cursor-1);if(s<=i&&r<=s&&0!=(t[(s-=r)>>>3]&1<<(7&s)))return!0;this.cursor--}return!1},this.eq_s=function(t){return!(this.limit-this.cursor<t.length||this.current.slice(this.cursor,this.cursor+t.length)!=t||(this.cursor+=t.length,0))},this.eq_s_b=function(t){return!(this.cursor-this.limit_backward<t.length||this.current.slice(this.cursor-t.length,this.cursor)!=t||(this.cursor-=t.length,0))},this.find_among=function(t){for(var r=0,i=t.length,s=this.cursor,h=this.limit,e=0,n=0,c=!1;;){for(var u=r+(i-r>>>1),o=0,a=e<n?e:n,l=t[u],f=a;f<l[0].length;f++){if(s+a==h){o=-1;break}if(0!=(o=this.current.charCodeAt(s+a)-l[0].charCodeAt(f)))break;a++}if(o<0?(i=u,n=a):(r=u,e=a),i-r<=1){if(0<r)break;if(i==r)break;if(c)break;c=!0}}do{if(e>=(l=t[r])[0].length){if(this.cursor=s+l[0].length,l.length<4)return l[2];var g=l[3](this);if(this.cursor=s+l[0].length,g)return l[2]}}while(0<=(r=l[1]));return 0},this.find_among_b=function(t){for(var r=0,i=t.length,s=this.cursor,h=this.limit_backward,e=0,n=0,c=!1;;){for(var u,o=r+(i-r>>1),a=0,l=e<n?e:n,f=(u=t[o])[0].length-1-l;0<=f;f--){if(s-l==h){a=-1;break}if(0!=(a=this.current.charCodeAt(s-1-l)-u[0].charCodeAt(f)))break;l++}if(a<0?(i=o,n=l):(r=o,e=l),i-r<=1){if(0<r)break;if(i==r)break;if(c)break;c=!0}}do{if(e>=(u=t[r])[0].length){if(this.cursor=s-u[0].length,u.length<4)return u[2];var g=u[3](this);if(this.cursor=s-u[0].length,g)return u[2]}}while(0<=(r=u[1]));return 0},this.replace_s=function(t,r,i){var s=i.length-(r-t);return this.current=this.current.slice(0,t)+i+this.current.slice(r),this.limit+=s,this.cursor>=r?this.cursor+=s:this.cursor>t&&(this.cursor=t),s},this.slice_check=function(){return!(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length)},this.slice_from=function(t){var r=!1;return this.slice_check()&&(this.replace_s(this.bra,this.ket,t),r=!0),r},this.slice_del=function(){return this.slice_from("")},this.insert=function(t,r,i){r=this.replace_s(t,r,i);t<=this.bra&&(this.bra+=r),t<=this.ket&&(this.ket+=r)},this.slice_to=function(){var t="";return t=this.slice_check()?this.current.slice(this.bra,this.ket):t},this.assign_to=function(){return this.current.slice(0,this.limit)}}; | ||
| var EnglishStemmer=function(){var a=new BaseStemmer,c=[["arsen",-1,-1],["commun",-1,-1],["emerg",-1,-1],["gener",-1,-1],["later",-1,-1],["organ",-1,-1],["past",-1,-1],["univers",-1,-1]],o=[["'",-1,1],["'s'",0,1],["'s",-1,1]],u=[["ied",-1,2],["s",-1,3],["ies",1,2],["sses",1,1],["ss",1,-1],["us",1,-1]],t=[["succ",-1,1],["proc",-1,1],["exc",-1,1]],l=[["even",-1,2],["cann",-1,2],["inn",-1,2],["earr",-1,2],["herr",-1,2],["out",-1,2],["y",-1,1]],n=[["",-1,-1],["ed",0,2],["eed",1,1],["ing",0,3],["edly",0,2],["eedly",4,1],["ingly",0,2]],f=[["",-1,3],["bb",0,2],["dd",0,2],["ff",0,2],["gg",0,2],["bl",0,1],["mm",0,2],["nn",0,2],["pp",0,2],["rr",0,2],["at",0,1],["tt",0,2],["iz",0,1]],_=[["anci",-1,3],["enci",-1,2],["ogi",-1,14],["li",-1,16],["bli",3,12],["abli",4,4],["alli",3,8],["fulli",3,9],["lessli",3,15],["ousli",3,10],["entli",3,5],["aliti",-1,8],["biliti",-1,12],["iviti",-1,11],["tional",-1,1],["ational",14,7],["alism",-1,8],["ation",-1,7],["ization",17,6],["izer",-1,6],["ator",-1,7],["iveness",-1,11],["fulness",-1,9],["ousness",-1,10],["ogist",-1,13]],m=[["icate",-1,4],["ative",-1,6],["alize",-1,3],["iciti",-1,4],["ical",-1,4],["tional",-1,1],["ational",5,2],["ful",-1,5],["ness",-1,5]],b=[["ic",-1,1],["ance",-1,1],["ence",-1,1],["able",-1,1],["ible",-1,1],["ate",-1,1],["ive",-1,1],["ize",-1,1],["iti",-1,1],["al",-1,1],["ism",-1,1],["ion",-1,2],["er",-1,1],["ous",-1,1],["ant",-1,1],["ent",-1,1],["ment",15,1],["ement",16,1]],k=[["e",-1,1],["l",-1,2]],g=[["andes",-1,-1],["atlas",-1,-1],["bias",-1,-1],["cosmos",-1,-1],["early",-1,5],["gently",-1,3],["howe",-1,-1],["idly",-1,2],["news",-1,-1],["only",-1,6],["singly",-1,7],["skies",-1,1],["sky",-1,-1],["ugly",-1,4]],d=[17,64],v=[17,65,16,1],i=[1,17,65,208,1],w=[55,141,2],p=!1,y=0,h=0;function q(){var r=a.limit-a.cursor;return!!(a.out_grouping_b(i,89,121)&&a.in_grouping_b(v,97,121)&&a.out_grouping_b(v,97,121)||(a.cursor=a.limit-r,a.out_grouping_b(v,97,121)&&a.in_grouping_b(v,97,121)&&!(a.cursor>a.limit_backward))||(a.cursor=a.limit-r,a.eq_s_b("past")))}function z(){return h<=a.cursor}function Y(){return y<=a.cursor}this.stem=function(){var r=a.cursor;if(!(()=>{var r;if(a.bra=a.cursor,0!=(r=a.find_among(g))&&(a.ket=a.cursor,!(a.cursor<a.limit))){switch(r){case 1:if(a.slice_from("sky"))break;return;case 2:if(a.slice_from("idl"))break;return;case 3:if(a.slice_from("gentl"))break;return;case 4:if(a.slice_from("ugli"))break;return;case 5:if(a.slice_from("earli"))break;return;case 6:if(a.slice_from("onli"))break;return;case 7:if(a.slice_from("singl"))break;return}return 1}})()){a.cursor=r;var i=a.cursor,e=a.cursor+3;if(e>a.limit)a.cursor=i;else{a.cursor=e,a.cursor=r,(()=>{p=!1;var r=a.cursor;if(a.bra=a.cursor,!a.eq_s("'")||(a.ket=a.cursor,a.slice_del())){a.cursor=r;r=a.cursor;if(a.bra=a.cursor,a.eq_s("y")){if(a.ket=a.cursor,!a.slice_from("Y"))return;p=!0}a.cursor=r;for(r=a.cursor;;){var i=a.cursor;r:{for(;;){var e=a.cursor;if(a.in_grouping(v,97,121)&&(a.bra=a.cursor,a.eq_s("y"))){a.ket=a.cursor,a.cursor=e;break}if(a.cursor=e,a.cursor>=a.limit)break r;a.cursor++}if(!a.slice_from("Y"))return;p=!0;continue}a.cursor=i;break}a.cursor=r}})(),h=a.limit,y=a.limit;i=a.cursor;r:{var s=a.cursor;if(0==a.find_among(c)){if(a.cursor=s,!a.go_out_grouping(v,97,121))break r;if(a.cursor++,!a.go_in_grouping(v,97,121))break r;a.cursor++}h=a.cursor,a.go_out_grouping(v,97,121)&&(a.cursor++,a.go_in_grouping(v,97,121))&&(a.cursor++,y=a.cursor)}a.cursor=i,a.limit_backward=a.cursor,a.cursor=a.limit;var e=a.limit-a.cursor,r=((()=>{var r=a.limit-a.cursor;if(a.ket=a.cursor,0==a.find_among_b(o))a.cursor=a.limit-r;else if(a.bra=a.cursor,!a.slice_del())return;if(a.ket=a.cursor,0!=(r=a.find_among_b(u)))switch(a.bra=a.cursor,r){case 1:if(a.slice_from("ss"))break;return;case 2:r:{var i=a.limit-a.cursor,e=a.cursor-2;if(!(e<a.limit_backward)){if(a.cursor=e,a.slice_from("i"))break r;return}if(a.cursor=a.limit-i,!a.slice_from("ie"))return}break;case 3:if(a.cursor<=a.limit_backward)return;if(a.cursor--,!a.go_out_grouping_b(v,97,121))return;if(a.cursor--,a.slice_del())break}})(),a.cursor=a.limit-e,a.limit-a.cursor),i=((()=>{a.ket=a.cursor,o=a.find_among_b(n),a.bra=a.cursor;r:{var r=a.limit-a.cursor;i:{switch(o){case 1:var i=a.limit-a.cursor;e:{var e=a.limit-a.cursor;if(0==a.find_among_b(t)||a.cursor>a.limit_backward){if(a.cursor=a.limit-e,!z())break e;if(!a.slice_from("ee"))return}}a.cursor=a.limit-i;break;case 2:break i;case 3:if(0==(o=a.find_among_b(l)))break i;switch(o){case 1:var s=a.limit-a.cursor;if(!a.out_grouping_b(v,97,121))break i;if(a.cursor>a.limit_backward)break i;if(a.cursor=a.limit-s,a.bra=a.cursor,a.slice_from("ie"))break;return;case 2:if(a.cursor>a.limit_backward)break i}}break r}a.cursor=a.limit-r;var c=a.limit-a.cursor;if(!a.go_out_grouping_b(v,97,121))return;if(a.cursor--,a.cursor=a.limit-c,!a.slice_del())return;a.ket=a.cursor,a.bra=a.cursor;var o,c=a.limit-a.cursor;switch(o=a.find_among_b(f)){case 1:return a.slice_from("e");case 2:var u=a.limit-a.cursor;if(a.in_grouping_b(d,97,111)&&!(a.cursor>a.limit_backward))return;a.cursor=a.limit-u;break;case 3:return a.cursor!=h||(u=a.limit-a.cursor,q()&&(a.cursor=a.limit-u,a.slice_from("e")))}if(a.cursor=a.limit-c,a.ket=a.cursor,a.cursor<=a.limit_backward)return;if(a.cursor--,a.bra=a.cursor,!a.slice_del())return}})(),a.cursor=a.limit-r,a.limit-a.cursor),r=(a.ket=a.cursor,e=a.limit-a.cursor,(a.eq_s_b("y")||(a.cursor=a.limit-e,a.eq_s_b("Y")))&&(a.bra=a.cursor,a.out_grouping_b(v,97,121))&&a.cursor>a.limit_backward&&a.slice_from("i"),a.cursor=a.limit-i,a.limit-a.cursor),e=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(_))&&(a.bra=a.cursor,z()))switch(r){case 1:if(a.slice_from("tion"))break;return;case 2:if(a.slice_from("ence"))break;return;case 3:if(a.slice_from("ance"))break;return;case 4:if(a.slice_from("able"))break;return;case 5:if(a.slice_from("ent"))break;return;case 6:if(a.slice_from("ize"))break;return;case 7:if(a.slice_from("ate"))break;return;case 8:if(a.slice_from("al"))break;return;case 9:if(a.slice_from("ful"))break;return;case 10:if(a.slice_from("ous"))break;return;case 11:if(a.slice_from("ive"))break;return;case 12:if(a.slice_from("ble"))break;return;case 13:if(a.slice_from("og"))break;return;case 14:if(!a.eq_s_b("l"))return;if(a.slice_from("og"))break;return;case 15:if(a.slice_from("less"))break;return;case 16:if(!a.in_grouping_b(w,99,116))return;if(a.slice_del())break}})(),a.cursor=a.limit-r,a.limit-a.cursor),i=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(m))&&(a.bra=a.cursor,z()))switch(r){case 1:if(a.slice_from("tion"))break;return;case 2:if(a.slice_from("ate"))break;return;case 3:if(a.slice_from("al"))break;return;case 4:if(a.slice_from("ic"))break;return;case 5:if(a.slice_del())break;return;case 6:if(!Y())return;if(a.slice_del())break}})(),a.cursor=a.limit-e,a.limit-a.cursor),r=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(b))&&(a.bra=a.cursor,Y()))switch(r){case 1:if(a.slice_del())break;return;case 2:var i=a.limit-a.cursor;if(!a.eq_s_b("s")&&(a.cursor=a.limit-i,!a.eq_s_b("t")))return;if(a.slice_del())break}})(),a.cursor=a.limit-i,a.limit-a.cursor),e=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(k)))switch(a.bra=a.cursor,r){case 1:if(!Y()){if(!z())return;var i=a.limit-a.cursor;if(q())return;a.cursor=a.limit-i}if(a.slice_del())break;return;case 2:if(!Y())return;if(!a.eq_s_b("l"))return;if(a.slice_del())break}})(),a.cursor=a.limit-r,a.cursor=a.limit_backward,a.cursor);(()=>{if(p)for(;;){var r=a.cursor;r:{for(;;){var i=a.cursor;if(a.bra=a.cursor,a.eq_s("Y")){a.ket=a.cursor,a.cursor=i;break}if(a.cursor=i,a.cursor>=a.limit)break r;a.cursor++}if(a.slice_from("y"))continue;return}a.cursor=r;break}})(),a.cursor=e}}return!0},this.stemWord=function(r){return a.setCurrent(r),this.stem(),a.getCurrent()}}; | ||
| window.Stemmer = EnglishStemmer; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| html[data-theme="light"] .highlight pre { line-height: 125%; } | ||
| html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="light"] .highlight .hll { background-color: #fae4c2 } | ||
| html[data-theme="light"] .highlight { background: #fefefe; color: #080808 } | ||
| html[data-theme="light"] .highlight .c { color: #515151 } /* Comment */ | ||
| html[data-theme="light"] .highlight .err { color: #A12236 } /* Error */ | ||
| html[data-theme="light"] .highlight .k { color: #6730C5 } /* Keyword */ | ||
| html[data-theme="light"] .highlight .l { color: #7F4707 } /* Literal */ | ||
| html[data-theme="light"] .highlight .n { color: #080808 } /* Name */ | ||
| html[data-theme="light"] .highlight .o { color: #00622F } /* Operator */ | ||
| html[data-theme="light"] .highlight .p { color: #080808 } /* Punctuation */ | ||
| html[data-theme="light"] .highlight .ch { color: #515151 } /* Comment.Hashbang */ | ||
| html[data-theme="light"] .highlight .cm { color: #515151 } /* Comment.Multiline */ | ||
| html[data-theme="light"] .highlight .cp { color: #515151 } /* Comment.Preproc */ | ||
| html[data-theme="light"] .highlight .cpf { color: #515151 } /* Comment.PreprocFile */ | ||
| html[data-theme="light"] .highlight .c1 { color: #515151 } /* Comment.Single */ | ||
| html[data-theme="light"] .highlight .cs { color: #515151 } /* Comment.Special */ | ||
| html[data-theme="light"] .highlight .gd { color: #005B82 } /* Generic.Deleted */ | ||
| html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */ | ||
| html[data-theme="light"] .highlight .gh { color: #005B82 } /* Generic.Heading */ | ||
| html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */ | ||
| html[data-theme="light"] .highlight .gu { color: #005B82 } /* Generic.Subheading */ | ||
| html[data-theme="light"] .highlight .kc { color: #6730C5 } /* Keyword.Constant */ | ||
| html[data-theme="light"] .highlight .kd { color: #6730C5 } /* Keyword.Declaration */ | ||
| html[data-theme="light"] .highlight .kn { color: #6730C5 } /* Keyword.Namespace */ | ||
| html[data-theme="light"] .highlight .kp { color: #6730C5 } /* Keyword.Pseudo */ | ||
| html[data-theme="light"] .highlight .kr { color: #6730C5 } /* Keyword.Reserved */ | ||
| html[data-theme="light"] .highlight .kt { color: #7F4707 } /* Keyword.Type */ | ||
| html[data-theme="light"] .highlight .ld { color: #7F4707 } /* Literal.Date */ | ||
| html[data-theme="light"] .highlight .m { color: #7F4707 } /* Literal.Number */ | ||
| html[data-theme="light"] .highlight .s { color: #00622F } /* Literal.String */ | ||
| html[data-theme="light"] .highlight .na { color: #912583 } /* Name.Attribute */ | ||
| html[data-theme="light"] .highlight .nb { color: #7F4707 } /* Name.Builtin */ | ||
| html[data-theme="light"] .highlight .nc { color: #005B82 } /* Name.Class */ | ||
| html[data-theme="light"] .highlight .no { color: #005B82 } /* Name.Constant */ | ||
| html[data-theme="light"] .highlight .nd { color: #7F4707 } /* Name.Decorator */ | ||
| html[data-theme="light"] .highlight .ni { color: #00622F } /* Name.Entity */ | ||
| html[data-theme="light"] .highlight .ne { color: #6730C5 } /* Name.Exception */ | ||
| html[data-theme="light"] .highlight .nf { color: #005B82 } /* Name.Function */ | ||
| html[data-theme="light"] .highlight .nl { color: #7F4707 } /* Name.Label */ | ||
| html[data-theme="light"] .highlight .nn { color: #080808 } /* Name.Namespace */ | ||
| html[data-theme="light"] .highlight .nx { color: #080808 } /* Name.Other */ | ||
| html[data-theme="light"] .highlight .py { color: #005B82 } /* Name.Property */ | ||
| html[data-theme="light"] .highlight .nt { color: #005B82 } /* Name.Tag */ | ||
| html[data-theme="light"] .highlight .nv { color: #A12236 } /* Name.Variable */ | ||
| html[data-theme="light"] .highlight .ow { color: #6730C5 } /* Operator.Word */ | ||
| html[data-theme="light"] .highlight .pm { color: #080808 } /* Punctuation.Marker */ | ||
| html[data-theme="light"] .highlight .w { color: #080808 } /* Text.Whitespace */ | ||
| html[data-theme="light"] .highlight .mb { color: #7F4707 } /* Literal.Number.Bin */ | ||
| html[data-theme="light"] .highlight .mf { color: #7F4707 } /* Literal.Number.Float */ | ||
| html[data-theme="light"] .highlight .mh { color: #7F4707 } /* Literal.Number.Hex */ | ||
| html[data-theme="light"] .highlight .mi { color: #7F4707 } /* Literal.Number.Integer */ | ||
| html[data-theme="light"] .highlight .mo { color: #7F4707 } /* Literal.Number.Oct */ | ||
| html[data-theme="light"] .highlight .sa { color: #00622F } /* Literal.String.Affix */ | ||
| html[data-theme="light"] .highlight .sb { color: #00622F } /* Literal.String.Backtick */ | ||
| html[data-theme="light"] .highlight .sc { color: #00622F } /* Literal.String.Char */ | ||
| html[data-theme="light"] .highlight .dl { color: #00622F } /* Literal.String.Delimiter */ | ||
| html[data-theme="light"] .highlight .sd { color: #00622F } /* Literal.String.Doc */ | ||
| html[data-theme="light"] .highlight .s2 { color: #00622F } /* Literal.String.Double */ | ||
| html[data-theme="light"] .highlight .se { color: #00622F } /* Literal.String.Escape */ | ||
| html[data-theme="light"] .highlight .sh { color: #00622F } /* Literal.String.Heredoc */ | ||
| html[data-theme="light"] .highlight .si { color: #00622F } /* Literal.String.Interpol */ | ||
| html[data-theme="light"] .highlight .sx { color: #00622F } /* Literal.String.Other */ | ||
| html[data-theme="light"] .highlight .sr { color: #A12236 } /* Literal.String.Regex */ | ||
| html[data-theme="light"] .highlight .s1 { color: #00622F } /* Literal.String.Single */ | ||
| html[data-theme="light"] .highlight .ss { color: #005B82 } /* Literal.String.Symbol */ | ||
| html[data-theme="light"] .highlight .bp { color: #7F4707 } /* Name.Builtin.Pseudo */ | ||
| html[data-theme="light"] .highlight .fm { color: #005B82 } /* Name.Function.Magic */ | ||
| html[data-theme="light"] .highlight .vc { color: #A12236 } /* Name.Variable.Class */ | ||
| html[data-theme="light"] .highlight .vg { color: #A12236 } /* Name.Variable.Global */ | ||
| html[data-theme="light"] .highlight .vi { color: #A12236 } /* Name.Variable.Instance */ | ||
| html[data-theme="light"] .highlight .vm { color: #7F4707 } /* Name.Variable.Magic */ | ||
| html[data-theme="light"] .highlight .il { color: #7F4707 } /* Literal.Number.Integer.Long */ | ||
| html[data-theme="dark"] .highlight pre { line-height: 125%; } | ||
| html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||
| html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e } | ||
| html[data-theme="dark"] .highlight { background: #2b2b2b; color: #F8F8F2 } | ||
| html[data-theme="dark"] .highlight .c { color: #FFD900 } /* Comment */ | ||
| html[data-theme="dark"] .highlight .err { color: #FFA07A } /* Error */ | ||
| html[data-theme="dark"] .highlight .k { color: #DCC6E0 } /* Keyword */ | ||
| html[data-theme="dark"] .highlight .l { color: #FFD900 } /* Literal */ | ||
| html[data-theme="dark"] .highlight .n { color: #F8F8F2 } /* Name */ | ||
| html[data-theme="dark"] .highlight .o { color: #ABE338 } /* Operator */ | ||
| html[data-theme="dark"] .highlight .p { color: #F8F8F2 } /* Punctuation */ | ||
| html[data-theme="dark"] .highlight .ch { color: #FFD900 } /* Comment.Hashbang */ | ||
| html[data-theme="dark"] .highlight .cm { color: #FFD900 } /* Comment.Multiline */ | ||
| html[data-theme="dark"] .highlight .cp { color: #FFD900 } /* Comment.Preproc */ | ||
| html[data-theme="dark"] .highlight .cpf { color: #FFD900 } /* Comment.PreprocFile */ | ||
| html[data-theme="dark"] .highlight .c1 { color: #FFD900 } /* Comment.Single */ | ||
| html[data-theme="dark"] .highlight .cs { color: #FFD900 } /* Comment.Special */ | ||
| html[data-theme="dark"] .highlight .gd { color: #00E0E0 } /* Generic.Deleted */ | ||
| html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */ | ||
| html[data-theme="dark"] .highlight .gh { color: #00E0E0 } /* Generic.Heading */ | ||
| html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */ | ||
| html[data-theme="dark"] .highlight .gu { color: #00E0E0 } /* Generic.Subheading */ | ||
| html[data-theme="dark"] .highlight .kc { color: #DCC6E0 } /* Keyword.Constant */ | ||
| html[data-theme="dark"] .highlight .kd { color: #DCC6E0 } /* Keyword.Declaration */ | ||
| html[data-theme="dark"] .highlight .kn { color: #DCC6E0 } /* Keyword.Namespace */ | ||
| html[data-theme="dark"] .highlight .kp { color: #DCC6E0 } /* Keyword.Pseudo */ | ||
| html[data-theme="dark"] .highlight .kr { color: #DCC6E0 } /* Keyword.Reserved */ | ||
| html[data-theme="dark"] .highlight .kt { color: #FFD900 } /* Keyword.Type */ | ||
| html[data-theme="dark"] .highlight .ld { color: #FFD900 } /* Literal.Date */ | ||
| html[data-theme="dark"] .highlight .m { color: #FFD900 } /* Literal.Number */ | ||
| html[data-theme="dark"] .highlight .s { color: #ABE338 } /* Literal.String */ | ||
| html[data-theme="dark"] .highlight .na { color: #FFD900 } /* Name.Attribute */ | ||
| html[data-theme="dark"] .highlight .nb { color: #FFD900 } /* Name.Builtin */ | ||
| html[data-theme="dark"] .highlight .nc { color: #00E0E0 } /* Name.Class */ | ||
| html[data-theme="dark"] .highlight .no { color: #00E0E0 } /* Name.Constant */ | ||
| html[data-theme="dark"] .highlight .nd { color: #FFD900 } /* Name.Decorator */ | ||
| html[data-theme="dark"] .highlight .ni { color: #ABE338 } /* Name.Entity */ | ||
| html[data-theme="dark"] .highlight .ne { color: #DCC6E0 } /* Name.Exception */ | ||
| html[data-theme="dark"] .highlight .nf { color: #00E0E0 } /* Name.Function */ | ||
| html[data-theme="dark"] .highlight .nl { color: #FFD900 } /* Name.Label */ | ||
| html[data-theme="dark"] .highlight .nn { color: #F8F8F2 } /* Name.Namespace */ | ||
| html[data-theme="dark"] .highlight .nx { color: #F8F8F2 } /* Name.Other */ | ||
| html[data-theme="dark"] .highlight .py { color: #00E0E0 } /* Name.Property */ | ||
| html[data-theme="dark"] .highlight .nt { color: #00E0E0 } /* Name.Tag */ | ||
| html[data-theme="dark"] .highlight .nv { color: #FFA07A } /* Name.Variable */ | ||
| html[data-theme="dark"] .highlight .ow { color: #DCC6E0 } /* Operator.Word */ | ||
| html[data-theme="dark"] .highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */ | ||
| html[data-theme="dark"] .highlight .w { color: #F8F8F2 } /* Text.Whitespace */ | ||
| html[data-theme="dark"] .highlight .mb { color: #FFD900 } /* Literal.Number.Bin */ | ||
| html[data-theme="dark"] .highlight .mf { color: #FFD900 } /* Literal.Number.Float */ | ||
| html[data-theme="dark"] .highlight .mh { color: #FFD900 } /* Literal.Number.Hex */ | ||
| html[data-theme="dark"] .highlight .mi { color: #FFD900 } /* Literal.Number.Integer */ | ||
| html[data-theme="dark"] .highlight .mo { color: #FFD900 } /* Literal.Number.Oct */ | ||
| html[data-theme="dark"] .highlight .sa { color: #ABE338 } /* Literal.String.Affix */ | ||
| html[data-theme="dark"] .highlight .sb { color: #ABE338 } /* Literal.String.Backtick */ | ||
| html[data-theme="dark"] .highlight .sc { color: #ABE338 } /* Literal.String.Char */ | ||
| html[data-theme="dark"] .highlight .dl { color: #ABE338 } /* Literal.String.Delimiter */ | ||
| html[data-theme="dark"] .highlight .sd { color: #ABE338 } /* Literal.String.Doc */ | ||
| html[data-theme="dark"] .highlight .s2 { color: #ABE338 } /* Literal.String.Double */ | ||
| html[data-theme="dark"] .highlight .se { color: #ABE338 } /* Literal.String.Escape */ | ||
| html[data-theme="dark"] .highlight .sh { color: #ABE338 } /* Literal.String.Heredoc */ | ||
| html[data-theme="dark"] .highlight .si { color: #ABE338 } /* Literal.String.Interpol */ | ||
| html[data-theme="dark"] .highlight .sx { color: #ABE338 } /* Literal.String.Other */ | ||
| html[data-theme="dark"] .highlight .sr { color: #FFA07A } /* Literal.String.Regex */ | ||
| html[data-theme="dark"] .highlight .s1 { color: #ABE338 } /* Literal.String.Single */ | ||
| html[data-theme="dark"] .highlight .ss { color: #00E0E0 } /* Literal.String.Symbol */ | ||
| html[data-theme="dark"] .highlight .bp { color: #FFD900 } /* Name.Builtin.Pseudo */ | ||
| html[data-theme="dark"] .highlight .fm { color: #00E0E0 } /* Name.Function.Magic */ | ||
| html[data-theme="dark"] .highlight .vc { color: #FFA07A } /* Name.Variable.Class */ | ||
| html[data-theme="dark"] .highlight .vg { color: #FFA07A } /* Name.Variable.Global */ | ||
| html[data-theme="dark"] .highlight .vi { color: #FFA07A } /* Name.Variable.Instance */ | ||
| html[data-theme="dark"] .highlight .vm { color: #FFD900 } /* Name.Variable.Magic */ | ||
| html[data-theme="dark"] .highlight .il { color: #FFD900 } /* Literal.Number.Integer.Long */ |
| <!-- | ||
| All these macros are auto-generated and must **NOT** be edited by hand. | ||
| See the webpack.config.js file, to learn more about how this is generated. | ||
| --> | ||
| {% macro head_pre_bootstrap() %} | ||
| <link href="{{ pathto('_static/styles/sphinx-book-theme.css', 1) }}" rel="stylesheet"> | ||
| {% endmacro %} | ||
| {% macro body_post() %} | ||
| <script src="{{ pathto('_static/scripts/sphinx-book-theme.js', 1) }}"></script> | ||
| {% endmacro %} |
Sorry, the diff of this file is too big to display
| /*! | ||
| * Bootstrap v5.3.3 (https://getbootstrap.com/) | ||
| * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
| */ |
Sorry, the diff of this file is too big to display
| (()=>{"use strict";function e(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}const t=e=>"string"==typeof e&&/^[v\d]/.test(e)&&o.test(e),n=(e,t,n)=>{u(n);const o=((e,t)=>{const n=r(e),o=r(t),a=n.pop(),c=o.pop(),s=i(n,o);return 0!==s?s:a&&c?i(a.split("."),c.split(".")):a||c?a?-1:1:0})(e,t);return d[n].includes(o)},o=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,r=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(o);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},a=e=>"*"===e||"x"===e||"X"===e,c=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},s=(e,t)=>{if(a(e)||a(t))return 0;const[n,o]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(c(e),c(t));return n>o?1:n<o?-1:0},i=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const o=s(e[n]||"0",t[n]||"0");if(0!==o)return o}return 0},d={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},l=Object.keys(d),u=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===l.indexOf(e))throw new Error(`Invalid operator, expected one of ${l.join("|")}`)};var m=window.matchMedia("(prefers-color-scheme: dark)");function h(e){document.documentElement.dataset.theme=m.matches?"dark":"light"}function p(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto");var t=m.matches?"dark":"light";document.documentElement.dataset.mode=e;var n="auto"==e?t:e;document.documentElement.dataset.theme=n,document.querySelectorAll(".dropdown-menu").forEach((e=>{"dark"===n?e.classList.add("dropdown-menu-dark"):e.classList.remove("dropdown-menu-dark")})),localStorage.setItem("mode",e),localStorage.setItem("theme",n),console.log(`[PST]: Changed to ${e} mode using the ${n} theme.`),m.onchange="auto"==e?h:""}function f(){const e=document.documentElement.dataset.defaultMode||"auto",t=localStorage.getItem("mode")||e;var n,o;p(((o=(n=m.matches?["auto","light","dark"]:["auto","dark","light"]).indexOf(t)+1)===n.length&&(o=0),n[o]))}var g=()=>{let e=document.querySelectorAll("form.bd-search");return e.length?(1==e.length?e[0]:document.querySelector("div:not(.search-button__search-container) > form.bd-search")).querySelector("input"):void 0},v=()=>{let e=g(),t=document.querySelector(".search-button__wrapper");e===t.querySelector("input")&&t.classList.toggle("show"),document.activeElement===e?e.blur():(e.focus(),e.select(),e.scrollIntoView({block:"center"}))},y=0===navigator.platform.indexOf("Mac")||"iPhone"===navigator.platform,b=()=>"dirhtml"==DOCUMENTATION_OPTIONS.BUILDER?"index"==DOCUMENTATION_OPTIONS.pagename?"/":`${DOCUMENTATION_OPTIONS.pagename}/`:`${DOCUMENTATION_OPTIONS.pagename}.html`;async function w(e){document.querySelector("#bd-header-version-warning").remove();const t=DOCUMENTATION_OPTIONS.VERSION,n=new Date,o=JSON.parse(localStorage.getItem("pst_banner_pref")||"{}");console.debug(`[PST] Dismissing the version warning banner on ${t} starting ${n}.`),o[t]=n,localStorage.setItem("pst_banner_pref",JSON.stringify(o))}async function E(e){e.preventDefault();const t=b();let n=e.currentTarget.getAttribute("href"),o=n.replace(t,"");try{(await fetch(n,{method:"HEAD"})).ok?location.href=n:location.href=o}catch(e){location.href=o}}async function S(){var e=document.querySelectorAll(".version-switcher__button");const o=e.length>0,r=DOCUMENTATION_OPTIONS.hasOwnProperty("theme_switcher_json_url"),a=DOCUMENTATION_OPTIONS.show_version_warning_banner;if(r&&(o||a)){const o=await async function(e){try{var t=new URL(e)}catch(n){if(!(n instanceof TypeError))throw n;{if(!window.location.origin)return null;const n=await fetch(window.location.origin,{method:"HEAD"});t=new URL(e,n.url)}}const n=await fetch(t);return await n.json()}(DOCUMENTATION_OPTIONS.theme_switcher_json_url);o&&(function(e,t){const n=b();t.forEach((e=>{e.dataset.activeVersionName="",e.dataset.activeVersion=""}));const o=(e=e.map((e=>(e.match=e.version==DOCUMENTATION_OPTIONS.theme_switcher_version_match,e.preferred=e.preferred||!1,"name"in e||(e.name=e.version),e)))).map((e=>e.preferred&&e.match)).some(Boolean);var r=!1;e.forEach((e=>{const a=document.createElement("a");a.setAttribute("class","dropdown-item list-group-item list-group-item-action py-1"),a.setAttribute("href",`${e.url}${n}`),a.setAttribute("role","option");const c=document.createElement("span");c.textContent=`${e.name}`,a.appendChild(c),a.dataset.versionName=e.name,a.dataset.version=e.version;let s=o&&e.preferred,i=!o&&!r&&e.match;(s||i)&&(a.classList.add("active"),t.forEach((t=>{t.innerText=e.name,t.dataset.activeVersionName=e.name,t.dataset.activeVersion=e.version})),r=!0),document.querySelectorAll(".version-switcher__menu").forEach((e=>{let t=a.cloneNode(!0);t.onclick=E,e.append(t)}))}))}(o,e),a&&function(e){var o=DOCUMENTATION_OPTIONS.VERSION,r=e.filter((e=>e.preferred));if(1!==r.length){const e=0==r.length?"No":"Multiple";return void console.log(`[PST] ${e} versions marked "preferred" found in versions JSON, ignoring.`)}const a=r[0].version,c=r[0].url,s=t(o)&&t(a);if(s&&n(o,a,"="))return void console.log("This is the prefered version of the docs, not showing the warning banner.");const i=JSON.parse(localStorage.getItem("pst_banner_pref")||"{}")[o];if(null!=i){const e=new Date(i),t=(new Date-e)/864e5;if(t<14)return void console.info(`[PST] Suppressing version warning banner; was dismissed ${Math.floor(t)} day(s) ago`)}const d=document.querySelector("#bd-header-version-warning"),l=document.createElement("div"),u=document.createElement("div"),m=document.createElement("strong"),h=document.createElement("a"),p=document.createElement("a");l.classList="bd-header-announcement__content ms-auto me-auto",u.classList="sidebar-message",h.classList="btn text-wrap font-weight-bold ms-3 my-1 align-baseline pst-button-link-to-stable-version",h.href=`${c}${b()}`,h.innerText="Switch to stable version",h.onclick=E,p.classList="ms-3 my-1 align-baseline";const f=document.createElement("i");p.append(f),f.classList="fa-solid fa-xmark",p.onclick=w,u.innerText="This is documentation for ";const g=o.includes("dev")||o.includes("rc")||o.includes("pre"),v=s&&n(o,a,">");g||v?m.innerText="an unstable development version":s&&n(o,a,"<")?m.innerText=`an old version (${o})`:m.innerText=o?`version ${o}`:"an unknown version",d.appendChild(l),d.append(p),l.appendChild(u),u.appendChild(m),u.appendChild(document.createTextNode(".")),u.appendChild(h),d.classList.remove("d-none")}(o))}}function T(){const e=()=>{document.querySelectorAll("pre, .nboutput > .output_area, .cell_output > .output, .jp-RenderedHTMLCommon").forEach((e=>{e.tabIndex=e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientHeight?0:-1}))},t=function(e,t){let n=null;return(...t)=>{clearTimeout(n),n=setTimeout((()=>{e(...t)}),300)}}(e);window.addEventListener("resize",t),new MutationObserver(t).observe(document.getElementById("main-content"),{subtree:!0,childList:!0}),e()}async function O(){const e=document.querySelector(".bd-header-announcement"),{pstAnnouncementUrl:t}=e?e.dataset:null;if(t)try{const n=await fetch(t);if(!n.ok)throw new Error(`[PST]: HTTP response status not ok: ${n.status} ${n.statusText}`);const o=await n.text();if(0===o.length)return void console.log(`[PST]: Empty announcement at: ${t}`);e.innerHTML=`<div class="bd-header-announcement__content">${o}</div>`,e.classList.remove("d-none")}catch(e){console.log(`[PST]: Failed to load announcement at: ${t}`),console.error(e)}}e((async function(){await Promise.allSettled([S(),O()]);const e=document.querySelector(".pst-async-banner-revealer");if(!e)return;e.classList.remove("d-none");const t=Array.from(e.children).reduce(((e,t)=>e+t.offsetHeight),0);e.style.setProperty("height",`${t}px`),setTimeout((()=>{e.style.setProperty("height","auto")}),320)})),e((function(){p(document.documentElement.dataset.mode),document.querySelectorAll(".theme-switch-button").forEach((e=>{e.addEventListener("click",f)}))})),e((function(){if(!document.querySelector(".bd-docs-nav"))return;var e=document.querySelector("div.bd-sidebar");let t=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(t)){var n=document.querySelector(".bd-docs-nav").querySelectorAll(".active");if(n.length>0){var o=n[n.length-1],r=o.getBoundingClientRect().y-e.getBoundingClientRect().y;if(o.getBoundingClientRect().y>.5*window.innerHeight){let t=.25;e.scrollTop=r-e.clientHeight*t,console.log("[PST]: Scrolled sidebar using last active link...")}}}else e.scrollTop=t,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",(()=>{sessionStorage.setItem("sidebar-scroll-top",e.scrollTop)}))})),e((function(){window.addEventListener("activate.bs.scrollspy",(function(){document.querySelectorAll(".bd-toc-nav a").forEach((e=>{e.parentElement.classList.remove("active")})),document.querySelectorAll(".bd-toc-nav a.active").forEach((e=>{e.parentElement.classList.add("active")}))}))})),e((()=>{(()=>{let e=document.querySelectorAll(".search-button__kbd-shortcut");y&&e.forEach((e=>e.querySelector("kbd.kbd-shortcut__modifier").innerText="⌘"))})(),window.addEventListener("keydown",(e=>{let t=g();e.shiftKey||e.altKey||(y?!e.metaKey||e.ctrlKey:e.metaKey||!e.ctrlKey)||!/^k$/i.test(e.key)?document.activeElement===t&&/Escape/i.test(e.key)&&v():(e.preventDefault(),v())}),!0),document.querySelectorAll(".search-button__button").forEach((e=>{e.onclick=v}));let e=document.querySelector(".search-button__overlay");e&&(e.onclick=v)})),e((function(){new MutationObserver(((e,t)=>{e.forEach((e=>{0!==e.addedNodes.length&&void 0!==e.addedNodes[0].data&&-1!=e.addedNodes[0].data.search("Inserted RTD Footer")&&e.addedNodes.forEach((e=>{document.getElementById("rtd-footer-container").append(e)}))}))})).observe(document.body,{childList:!0})})),e((function(){const e=document.getElementById("pst-primary-sidebar-checkbox"),t=document.getElementById("pst-secondary-sidebar-checkbox"),n=document.querySelector(".bd-sidebar-primary"),o=document.querySelector(".bd-sidebar-secondary"),r=document.querySelector(".primary-toggle"),a=document.querySelector(".secondary-toggle");[[r,e,n],[a,t,o]].forEach((([e,t,n])=>{e&&e.addEventListener("click",(e=>{if(e.preventDefault(),e.stopPropagation(),t.checked=!t.checked,t.checked){const e=n.querySelector("a, button");setTimeout((()=>e.focus()),100)}}))})),[[n,e,r],[o,t,a]].forEach((([e,t,n])=>{e&&e.addEventListener("keydown",(e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t.checked=!1,n.focus())}))})),[[e,r],[t,a]].forEach((([e,t])=>{e.addEventListener("change",(e=>{e.currentTarget.checked||t.focus()}))}))})),"complete"===document.readyState?T():window.addEventListener("load",T)})(); | ||
| //# sourceMappingURL=pydata-sphinx-theme.js.map |
| {"version":3,"file":"scripts/pydata-sphinx-theme.js","mappings":"mBASO,SAASA,EAAcC,GACD,WAAvBC,SAASC,WAAyBF,IACjCC,SAASE,iBAAiB,mBAAoBH,EACrD,CCLO,MAiCMI,EAAYC,GAA+B,iBAAZA,GAAwB,SAASC,KAAKD,IAAYE,EAAOD,KAAKD,GAkB7FG,EAAU,CAACC,EAAIC,EAAIC,KAE5BC,EAAoBD,GAGpB,MAAME,EAxDqB,EAACJ,EAAIC,KAEhC,MAAMI,EAAKC,EAAiBN,GACtBO,EAAKD,EAAiBL,GAEtBO,EAAKH,EAAGI,MACRC,EAAKH,EAAGE,MAERE,EAAIC,EAAgBP,EAAIE,GAC9B,OAAU,IAANI,EACOA,EAEPH,GAAME,EACCE,EAAgBJ,EAAGK,MAAM,KAAMH,EAAGG,MAAM,MAE1CL,GAAME,EACJF,GAAM,EAAI,EAEd,CAAC,EAsCIM,CAAgBd,EAAIC,GAChC,OAAOc,EAAeb,GAAUc,SAASZ,EAAI,EAgD3CN,EAAS,6IACTQ,EAAoBV,IACtB,GAAuB,iBAAZA,EACP,MAAM,IAAIqB,UAAU,oCAExB,MAAMC,EAAQtB,EAAQsB,MAAMpB,GAC5B,IAAKoB,EACD,MAAM,IAAIC,MAAM,uCAAuCvB,gBAG3D,OADAsB,EAAME,QACCF,CAAK,EAEVG,EAAcC,GAAY,MAANA,GAAmB,MAANA,GAAmB,MAANA,EAC9CC,EAAYC,IACd,MAAMC,EAAIC,SAASF,EAAG,IACtB,OAAOG,MAAMF,GAAKD,EAAIC,CAAC,EAGrBG,EAAiB,CAACC,EAAGC,KACvB,GAAIT,EAAWQ,IAAMR,EAAWS,GAC5B,OAAO,EACX,MAAOC,EAAIC,GAJG,EAACH,EAAGC,WAAaD,UAAaC,EAAI,CAACG,OAAOJ,GAAII,OAAOH,IAAM,CAACD,EAAGC,GAI5DI,CAAUX,EAASM,GAAIN,EAASO,IACjD,OAAIC,EAAKC,EACE,EACPD,EAAKC,GACG,EACL,CAAC,EAENpB,EAAkB,CAACiB,EAAGC,KACxB,IAAK,IAAIK,EAAI,EAAGA,EAAIC,KAAKC,IAAIR,EAAES,OAAQR,EAAEQ,QAASH,IAAK,CACnD,MAAMxB,EAAIiB,EAAeC,EAAEM,IAAM,IAAKL,EAAEK,IAAM,KAC9C,GAAU,IAANxB,EACA,OAAOA,CACf,CACA,OAAO,CAAC,EAENI,EAAiB,CACnB,IAAK,CAAC,GACN,KAAM,CAAC,EAAG,GACV,IAAK,CAAC,GACN,KAAM,EAAE,EAAG,GACX,IAAK,EAAE,IAELwB,EAAmBC,OAAOC,KAAK1B,GAC/BZ,EAAuBuC,IACzB,GAAkB,iBAAPA,EACP,MAAM,IAAIzB,UAAU,yDAAyDyB,GAEjF,IAAsC,IAAlCH,EAAiBI,QAAQD,GACzB,MAAM,IAAIvB,MAAM,qCAAqCoB,EAAiBK,KAAK,OAC/E,ECxJJ,IAAIC,EAAcC,OAAOC,WAAW,gCAOpC,SAASC,EAAUC,GACjBzD,SAAS0D,gBAAgBC,QAAQC,MAAQP,EAAYQ,QACjD,OACA,OACN,CAQA,SAASC,EAASC,GACH,UAATA,GAA6B,SAATA,GAA4B,SAATA,IACzCC,QAAQC,MAAM,2BAA2BF,yBACzCA,EAAO,QAIT,IAAIG,EAAcb,EAAYQ,QAAU,OAAS,QACjD7D,SAAS0D,gBAAgBC,QAAQI,KAAOA,EACxC,IAAIH,EAAgB,QAARG,EAAiBG,EAAcH,EAC3C/D,SAAS0D,gBAAgBC,QAAQC,MAAQA,EAGzC5D,SAASmE,iBAAiB,kBAAkBC,SAASC,IACrC,SAAVT,EACFS,EAAGC,UAAUC,IAAI,sBAEjBF,EAAGC,UAAUE,OAAO,qBACtB,IAIFC,aAAaC,QAAQ,OAAQX,GAC7BU,aAAaC,QAAQ,QAASd,GAC9BI,QAAQW,IAAI,qBAAqBZ,oBAAuBH,YAGxDP,EAAYuB,SAAmB,QAARb,EAAiBP,EAAY,EACtD,CAMA,SAASqB,IACP,MAAMC,EAAc9E,SAAS0D,gBAAgBC,QAAQmB,aAAe,OAC9DC,EAAcN,aAAaO,QAAQ,SAAWF,EAEpD,IAAiBG,EACXC,EAYNpB,IAZMoB,GADWD,EASF5B,EAAYQ,QACvB,CAAC,OAAQ,QAAS,QAClB,CAAC,OAAQ,OAAQ,UAVIV,QAWS4B,GAXU,KACrBE,EAAInC,SACvBoC,EAAe,GAEVD,EAAIC,IASf,CAsGA,IAAIC,EAAkB,KACpB,IAAIC,EAAQpF,SAASmE,iBAAiB,kBACtC,OAAKiB,EAAMtC,QAKW,GAAhBsC,EAAMtC,OAEDsC,EAAM,GAGNpF,SAASqF,cACd,+DAGQA,cAAc,cAZ1B,CAaF,EAQEC,EAAoB,KAEtB,IAAIC,EAAQJ,IAIRK,EAAqBxF,SAASqF,cAAc,2BAE5CE,IADcC,EAAmBH,cAAc,UAEjDG,EAAmBlB,UAAUmB,OAAO,QAGlCzF,SAAS0F,gBAAkBH,EAC7BA,EAAMI,QAENJ,EAAMK,QACNL,EAAMM,SACNN,EAAMO,eAAe,CAAEC,MAAO,WAChC,EA2CEC,EACoC,IAAtCC,UAAUC,SAAS/C,QAAQ,QAAuC,WAAvB8C,UAAUC,SA8CnDC,EAAoB,IACe,WAAjCC,sBAAsBC,QACiB,SAAlCD,sBAAsBE,SACzB,IACA,GAAGF,sBAAsBE,YAExB,GAAGF,sBAAsBE,gBAUlCC,eAAeC,EAA0BC,GACxBzG,SAASqF,cAAc,8BAC/Bb,SACP,MAAMpE,EAAUgG,sBAAsBM,QAChCC,EAAM,IAAIC,KACVC,EAAcC,KAAKC,MACvBtC,aAAaO,QAAQ,oBAAsB,MAE7ChB,QAAQgD,MACN,kDAAkD5G,cAAoBuG,MAExEE,EAAYzG,GAAWuG,EACvBlC,aAAaC,QAAQ,kBAAmBoC,KAAKG,UAAUJ,GACzD,CAQAN,eAAeW,EAA2BT,GAExCA,EAAMU,iBACN,MAAMC,EAAkBjB,IACxB,IAAIkB,EAASZ,EAAMa,cAAcC,aAAa,QAC1CC,EAAoBH,EAAOI,QAAQL,EAAiB,IACxD,WACmBM,MAAML,EAAQ,CAAEM,OAAQ,UAChCC,GACPC,SAASC,KAAOT,EAEhBQ,SAASC,KAAON,CAEpB,CAAE,MAAOO,GAEPF,SAASC,KAAON,CAClB,CACF,CAgPAjB,eAAeyB,IAGb,IAAIC,EAAsBjI,SAASmE,iBACjC,6BAEF,MAAM+D,EAAkBD,EAAoBnF,OAAS,EAC/CqF,EAAkB/B,sBAAsBgC,eAC5C,2BAEIC,EAAqBjC,sBAAsBkC,4BAEjD,GAAIH,IAAoBD,GAAmBG,GAAqB,CAC9D,MAAME,QAtPVhC,eAAwCiC,GAEtC,IACE,IAAIC,EAAS,IAAIC,IAAIF,EACvB,CAAE,MAAOT,GACP,KAAIA,aAAetG,WAejB,MAAMsG,EAfsB,CAC5B,IAAKzE,OAAOuE,SAASc,OAMnB,OAAO,KAIT,MAAMA,QAAejB,MAAMpE,OAAOuE,SAASc,OAAQ,CAAEhB,OAAQ,SAC7Dc,EAAS,IAAIC,IAAIF,EAAKG,EAAOH,IAC/B,CAIF,CAEA,MAAMI,QAAiBlB,MAAMe,GAE7B,aADmBG,EAASC,MAE9B,CA2NuBC,CACjB1C,sBAAsB2C,yBAIpBR,IA7NR,SAAiCA,EAAMN,GACrC,MAAMb,EAAkBjB,IACxB8B,EAAoB7D,SAAS4E,IAE3BA,EAAIrF,QAA2B,kBAAI,GACnCqF,EAAIrF,QAAuB,cAAI,EAAE,IAkBnC,MAAMsF,GAXNV,EAAOA,EAAKW,KAAKC,IAEfA,EAAMzH,MACJyH,EAAM/I,SAAWgG,sBAAsBgD,6BACzCD,EAAME,UAAYF,EAAME,YAAa,EAE/B,SAAUF,IACdA,EAAMG,KAAOH,EAAM/I,SAEd+I,MAGND,KAAKC,GAAUA,EAAME,WAAaF,EAAMzH,QACxC6H,KAAKC,SACR,IAAIC,GAAa,EAEjBlB,EAAKnE,SAAS+E,IAEZ,MAAMO,EAAS1J,SAAS2J,cAAc,KACtCD,EAAOE,aACL,QACA,6DAEFF,EAAOE,aAAa,OAAQ,GAAGT,EAAMX,MAAMpB,KAC3CsC,EAAOE,aAAa,OAAQ,UAC5B,MAAMC,EAAO7J,SAAS2J,cAAc,QACpCE,EAAKC,YAAc,GAAGX,EAAMG,OAC5BI,EAAOK,YAAYF,GAGnBH,EAAO/F,QAAqB,YAAIwF,EAAMG,KACtCI,EAAO/F,QAAiB,QAAIwF,EAAM/I,QAIlC,IAAI4J,EAAwBf,GAA6BE,EAAME,UAC3DY,GACDhB,IAA8BQ,GAAcN,EAAMzH,OACjDsI,GAAyBC,KAC3BP,EAAOpF,UAAUC,IAAI,UACrB0D,EAAoB7D,SAAS4E,IAC3BA,EAAIkB,UAAYf,EAAMG,KACtBN,EAAIrF,QAA2B,kBAAIwF,EAAMG,KACzCN,EAAIrF,QAAuB,cAAIwF,EAAM/I,OAAO,IAE9CqJ,GAAa,GAIfzJ,SAASmE,iBAAiB,2BAA2BC,SAAS+F,IAG5D,IAAIC,EAAOV,EAAOW,WAAU,GAC5BD,EAAKE,QAAUpD,EAIfiD,EAAKI,OAAOH,EAAK,GACjB,GAEN,CAsJMI,CAAwBjC,EAAMN,GAC1BI,GAzIV,SAAkCE,GAChC,IAAInI,EAAUgG,sBAAsBM,QAEhC+D,EAAmBlC,EAAKmC,QAAQvB,GAAUA,EAAME,YACpD,GAAgC,IAA5BoB,EAAiB3H,OAAc,CACjC,MAAM6H,EAAqC,GAA3BF,EAAiB3H,OAAc,KAAO,WAItD,YAHAkB,QAAQW,IACN,SAASgG,kEAGb,CACA,MAAMC,EAAmBH,EAAiB,GAAGrK,QACvCyK,EAAeJ,EAAiB,GAAGjC,IAEnCsC,EAAwB3K,EAASC,IAAYD,EAASyK,GAC5D,GAAIE,GAAyBvK,EAAQH,EAASwK,EAAkB,KAI9D,YAHA5G,QAAQW,IACN,6EAKJ,MAAMoG,EAAmBjE,KAAKC,MAC5BtC,aAAaO,QAAQ,oBAAsB,MAC3C5E,GACF,GAAwB,MAApB2K,EAA0B,CAC5B,MAAMC,EAAe,IAAIpE,KAAKmE,GAGxBE,GAFM,IAAIrE,KAEWoE,GADG,MAG9B,GAAIC,EADoB,GAKtB,YAHAjH,QAAQkH,KACN,2DAA2DtI,KAAKuI,MAAMF,gBAI5E,CAGA,MAAMG,EAASpL,SAASqF,cAAc,8BAChCgG,EAASrL,SAAS2J,cAAc,OAChC2B,EAAQtL,SAAS2J,cAAc,OAC/B4B,EAAOvL,SAAS2J,cAAc,UAC9B6B,EAASxL,SAAS2J,cAAc,KAChC8B,EAAYzL,SAAS2J,cAAc,KAGzC0B,EAAO/G,UAAY,mDACnBgH,EAAMhH,UAAY,kBAClBkH,EAAOlH,UACL,4FACFkH,EAAO1D,KAAO,GAAG+C,IAAe1E,MAChCqF,EAAOtB,UAAY,2BACnBsB,EAAOlB,QAAUpD,EACjBuE,EAAUnH,UAAY,2BACtB,MAAMoH,EAAU1L,SAAS2J,cAAc,KACvC8B,EAAUlB,OAAOmB,GACjBA,EAAQpH,UAAY,oBACpBmH,EAAUnB,QAAU9D,EAEpB8E,EAAMpB,UAAY,6BAClB,MAAMyB,EACJvL,EAAQoB,SAAS,QACjBpB,EAAQoB,SAAS,OACjBpB,EAAQoB,SAAS,OACboK,EACJd,GAAyBvK,EAAQH,EAASwK,EAAkB,KAC1De,GAASC,EACXL,EAAKrB,UAAY,kCACRY,GAAyBvK,EAAQH,EAASwK,EAAkB,KACrEW,EAAKrB,UAAY,mBAAmB9J,KAIpCmL,EAAKrB,UAHK9J,EAGO,WAAWA,IAFX,qBAInBgL,EAAOrB,YAAYsB,GACnBD,EAAOb,OAAOkB,GACdJ,EAAOtB,YAAYuB,GACnBA,EAAMvB,YAAYwB,GAClBD,EAAMvB,YAAY/J,SAAS6L,eAAe,MAC1CP,EAAMvB,YAAYyB,GAClBJ,EAAO9G,UAAUE,OAAO,SAC1B,CAsDQsH,CAAyBvD,GAG/B,CACF,CA0FA,SAASwD,IACP,MAAMC,EAAiB,KACrBhM,SACGmE,iBACC,iFAKDC,SAASC,IACRA,EAAG4H,SACD5H,EAAG6H,YAAc7H,EAAG8H,aAAe9H,EAAG+H,aAAe/H,EAAGgI,aACpD,GACC,CAAC,GACR,EAEAC,EAqBR,SAAkBvM,EAAUwM,GAC1B,IAAIC,EAAY,KAChB,MAAO,IAAIC,KACTC,aAAaF,GACbA,EAAYG,YAAW,KACrB5M,KAAY0M,EAAK,GA1BoC,IA2B/C,CAEZ,CA7BkCG,CAASZ,GAGzC1I,OAAOpD,iBAAiB,SAAUoM,GAOb,IAAIO,iBAAiBP,GAG7BQ,QAAQ9M,SAAS+M,eAAe,gBAAiB,CAC5DC,SAAS,EACTC,WAAW,IAIbjB,GACF,CAcAzF,eAAe2G,IACb,MAAM9B,EAASpL,SAASqF,cAAc,4BAChC,mBAAE8H,GAAuB/B,EAASA,EAAOzH,QAAU,KAEzD,GAAKwJ,EAIL,IACE,MAAMvE,QAAiBlB,MAAMyF,GAC7B,IAAKvE,EAAShB,GACZ,MAAM,IAAIjG,MACR,uCAAuCiH,EAASwE,UAAUxE,EAASyE,cAGvE,MAAM9E,QAAaK,EAAS0E,OAC5B,GAAoB,IAAhB/E,EAAKzF,OAEP,YADAkB,QAAQW,IAAI,iCAAiCwI,KAG/C/B,EAAOmC,UAAY,gDAAgDhF,UACnE6C,EAAO9G,UAAUE,OAAO,SAC1B,CAAE,MAAOgJ,GACPxJ,QAAQW,IAAI,0CAA0CwI,KACtDnJ,QAAQC,MAAMuJ,EAChB,CACF,CA2CA1N,GAtCAyG,uBAEQkH,QAAQC,WAAW,CAAC1F,IAAuBkF,MAKjD,MAAMS,EAAW3N,SAASqF,cAAc,8BACxC,IAAKsI,EACH,OAIFA,EAASrJ,UAAUE,OAAO,UAG1B,MAAMoJ,EAASC,MAAMC,KAAKH,EAASI,UAAUC,QAC3C,CAACJ,EAAQvJ,IAAOuJ,EAASvJ,EAAG4J,cAC5B,GAKFN,EAASO,MAAMC,YAAY,SAAU,GAAGP,OAIxCjB,YAAW,KACTgB,EAASO,MAAMC,YAAY,SAAU,OAAO,GAC3C,IACL,IAUArO,GAxvBA,WAGEgE,EAAS9D,SAAS0D,gBAAgBC,QAAQI,MAG1C/D,SAASmE,iBAAiB,wBAAwBC,SAASC,IACzDA,EAAGnE,iBAAiB,QAAS2E,EAAU,GAE3C,IAgvBA/E,GA3sBA,WAEE,IAAKE,SAASqF,cAAc,gBAC1B,OAGF,IAAI+I,EAAUpO,SAASqF,cAAc,kBAIrC,IAAIgJ,EAAkBnM,SACpBoM,eAAetJ,QAAQ,sBACvB,IAGF,GAAK7C,MAAMkM,GAIJ,CAEL,IACIE,EADavO,SAASqF,cAAc,gBACVlB,iBAAiB,WAC/C,GAAIoK,EAAazL,OAAS,EAAG,CAE3B,IAAI0L,EAAgBD,EAAaA,EAAazL,OAAS,GACnD2L,EACFD,EAAcE,wBAAwBC,EACtCP,EAAQM,wBAAwBC,EAElC,GAAIH,EAAcE,wBAAwBC,EAAyB,GAArBrL,OAAOsL,YAAmB,CACtE,IAAIC,EAAS,IACbT,EAAQU,UAAYL,EAASL,EAAQ/B,aAAewC,EACpD7K,QAAQW,IAAI,oDACd,CACF,CACF,MAnBEyJ,EAAQU,UAAYT,EACpBrK,QAAQW,IAAI,4DAqBdrB,OAAOpD,iBAAiB,gBAAgB,KACtCoO,eAAe5J,QAAQ,qBAAsB0J,EAAQU,UAAU,GAEnE,IAkqBAhP,GAluBA,WACEwD,OAAOpD,iBAAiB,yBAAyB,WAC9BF,SAASmE,iBAAiB,iBAElCC,SAAS2K,IAChBA,EAAQC,cAAc1K,UAAUE,OAAO,SAAS,IAG3BxE,SAASmE,iBAAiB,wBAClCC,SAAS2K,IACtBA,EAAQC,cAAc1K,UAAUC,IAAI,SAAS,GAEjD,GACF,IAstBAzE,GAjjByB,KAZK,MAC5B,IAAImP,EAAYjP,SAASmE,iBAAiB,gCACtC6B,GACFiJ,EAAU7K,SACP8K,GAAOA,EAAE7J,cAAc,8BAA8B6E,UAAY,KAEtE,EAOAiF,GAxDA7L,OAAOpD,iBACL,WACCuG,IACC,IAAIlB,EAAQJ,IAITsB,EAAM2I,UACN3I,EAAM4I,SAENrJ,GACGS,EAAM6I,SAAY7I,EAAM8I,QACvB9I,EAAM6I,UAAW7I,EAAM8I,WAE5B,OAAOlP,KAAKoG,EAAM+I,KAMXxP,SAAS0F,gBAAkBH,GAAS,UAAUlF,KAAKoG,EAAM+I,MAChElK,KALAmB,EAAMU,iBACN7B,IAKF,IAEF,GAoCFtF,SAASmE,iBAAiB,0BAA0BC,SAAS4E,IAC3DA,EAAIsB,QAAUhF,CAAiB,IAIjC,IAAImK,EAAUzP,SAASqF,cAAc,2BACjCoK,IACFA,EAAQnF,QAAUhF,EACpB,IAqiBFxF,GAvQA,WAkBmB,IAAI+M,kBAjBG,CAAC6C,EAAcC,KACrCD,EAAatL,SAASwL,IAEe,IAA/BA,EAASC,WAAW/M,aAGYgN,IAAhCF,EAASC,WAAW,GAAGtH,OAGuC,GAA9DqH,EAASC,WAAW,GAAGtH,KAAKwH,OAAO,wBACrCH,EAASC,WAAWzL,SAASgG,IAC3BpK,SAAS+M,eAAe,wBAAwBxC,OAAOH,EAAK,GAEhE,GACA,IAKK0C,QAAQ9M,SAASgQ,KADX,CAAE/C,WAAW,GAE9B,IAmPAnN,GAhNA,WAGE,MAAMmQ,EAAgBjQ,SAAS+M,eAAe,gCACxCmD,EAAkBlQ,SAAS+M,eAC/B,kCAEIoD,EAAiBnQ,SAASqF,cAAc,uBACxC+K,EAAmBpQ,SAASqF,cAAc,yBAO1CgL,EAA0BrQ,SAASqF,cAAc,mBACjDiL,EAA4BtQ,SAASqF,cAAc,qBACzD,CACE,CAACgL,EAAyBJ,EAAeE,GACzC,CAACG,EAA2BJ,EAAiBE,IAC7ChM,SAAQ,EAAEmM,EAAkB9K,EAAQ2I,MAC/BmC,GAGLA,EAAiBrQ,iBAAiB,SAAUuG,IAO1C,GANAA,EAAMU,iBACNV,EAAM+J,kBACN/K,EAAOgL,SAAWhL,EAAOgL,QAIrBhL,EAAOgL,QAAS,CAGlB,MAAMC,EAAUtC,EAAQ/I,cAAc,aAGtCsH,YAAW,IAAM+D,EAAQ9K,SAAS,IACpC,IACA,IAOJ,CACE,CAACuK,EAAgBF,EAAeI,GAChC,CAACD,EAAkBF,EAAiBI,IACpClM,SAAQ,EAAEgK,EAAS3I,EAAQkL,MACtBvC,GAGLA,EAAQlO,iBAAiB,WAAYuG,IACjB,WAAdA,EAAM+I,MACR/I,EAAMU,iBACNV,EAAM+J,kBACN/K,EAAOgL,SAAU,EACjBE,EAAY/K,QACd,GACA,IAKJ,CACE,CAACqK,EAAeI,GAChB,CAACH,EAAiBI,IAClBlM,SAAQ,EAAEqB,EAAQkL,MAClBlL,EAAOvF,iBAAiB,UAAWuG,IAC5BA,EAAMa,cAAcmJ,SACvBE,EAAY/K,OACd,GACA,GAEN,IAyI4B,aAAxB5F,SAASC,WACX8L,IAEAzI,OAAOpD,iBAAiB,OAAQ6L,E","sources":["webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./node_modules/compare-versions/lib/esm/index.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js"],"sourcesContent":["/* define several functions to replace jQuery methods\n * inspired by https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/\n */\n\n/**\n * Execute a method if DOM has finished loading\n *\n * @param {function} callback the method to execute\n */\nexport function documentReady(callback) {\n if (document.readyState != \"loading\") callback();\n else document.addEventListener(\"DOMContentLoaded\", callback);\n}\n","/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1, v2) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0)\n return r;\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n }\n else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n return 0;\n};\n/**\n * Validate [semver](https://semver.org/) version strings.\n *\n * @param version Version number to validate\n * @returns `true` if the version number is a valid semver version number, `false` otherwise.\n *\n * @example\n * ```\n * validate('1.0.0-rc.1'); // return true\n * validate('1.0-rc.1'); // return false\n * validate('foo'); // return false\n * ```\n */\nexport const validate = (version) => typeof version === 'string' && /^[v\\d]/.test(version) && semver.test(version);\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n return operatorResMap[operator].includes(res);\n};\n/**\n * Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.\n *\n * @param version Version number to match\n * @param range Range pattern for version\n * @returns `true` if the version number is within the range, `false` otherwise.\n *\n * @example\n * ```\n * satisfies('1.1.0', '^1.0.0'); // return true\n * satisfies('1.1.0', '~1.0.0'); // return false\n * ```\n */\nexport const satisfies = (version, range) => {\n // if no range operator then \"=\"\n const m = range.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~')\n return compare(version, range, op);\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3, , vp] = validateAndParse(version);\n const [r1, r2, r3, , rp] = validateAndParse(range);\n const v = [v1, v2, v3];\n const r = [r1, r2 !== null && r2 !== void 0 ? r2 : 'x', r3 !== null && r3 !== void 0 ? r3 : 'x'];\n // validate pre-release\n if (rp) {\n if (!vp)\n return false;\n if (compareSegments(v, r) !== 0)\n return false;\n if (compareSegments(vp.split('.'), rp.split('.')) === -1)\n return false;\n }\n // first non-zero number\n const nonZero = r.findIndex((v) => v !== '0') + 1;\n // pointer to where segments can be >=\n const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;\n // before pointer must be equal\n if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0)\n return false;\n // after pointer must be >=\n if (compareSegments(v.slice(i), r.slice(i)) === -1)\n return false;\n return true;\n};\nconst semver = /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\nconst validateAndParse = (version) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${version}' received)`);\n }\n match.shift();\n return match;\n};\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\nconst forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b))\n return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp)\n return 1;\n if (ap < bp)\n return -1;\n return 0;\n};\nconst compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0)\n return r;\n }\n return 0;\n};\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n};\nconst allowedOperators = Object.keys(operatorResMap);\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);\n }\n};\n//# sourceMappingURL=index.js.map","// Define the custom behavior of the page\nimport { documentReady } from \"./mixin\";\nimport { compare, validate } from \"compare-versions\";\n\nimport \"../styles/pydata-sphinx-theme.scss\";\n\n/*******************************************************************************\n * Theme interaction\n */\n\nvar prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n/**\n * set the the body theme to the one specified by the user browser\n *\n * @param {event} e\n */\nfunction autoTheme(e) {\n document.documentElement.dataset.theme = prefersDark.matches\n ? \"dark\"\n : \"light\";\n}\n\n/**\n * Set the theme using the specified mode.\n * It can be one of [\"auto\", \"dark\", \"light\"]\n *\n * @param {str} mode\n */\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n // get the theme\n var colorScheme = prefersDark.matches ? \"dark\" : \"light\";\n document.documentElement.dataset.mode = mode;\n var theme = mode == \"auto\" ? colorScheme : mode;\n document.documentElement.dataset.theme = theme;\n // TODO: remove this line after Bootstrap upgrade\n // v5.3 has a colors mode: https://getbootstrap.com/docs/5.3/customize/color-modes/\n document.querySelectorAll(\".dropdown-menu\").forEach((el) => {\n if (theme === \"dark\") {\n el.classList.add(\"dropdown-menu-dark\");\n } else {\n el.classList.remove(\"dropdown-menu-dark\");\n }\n });\n\n // save mode and theme\n localStorage.setItem(\"mode\", mode);\n localStorage.setItem(\"theme\", theme);\n console.log(`[PST]: Changed to ${mode} mode using the ${theme} theme.`);\n\n // add a listener if set on auto\n prefersDark.onchange = mode == \"auto\" ? autoTheme : \"\";\n}\n\n/**\n * Change the theme option order so that clicking on the btn is always a change\n * from \"auto\"\n */\nfunction cycleMode() {\n const defaultMode = document.documentElement.dataset.defaultMode || \"auto\";\n const currentMode = localStorage.getItem(\"mode\") || defaultMode;\n\n var loopArray = (arr, current) => {\n var nextPosition = arr.indexOf(current) + 1;\n if (nextPosition === arr.length) {\n nextPosition = 0;\n }\n return arr[nextPosition];\n };\n\n // make sure the next theme after auto is always a change\n var modeList = prefersDark.matches\n ? [\"auto\", \"light\", \"dark\"]\n : [\"auto\", \"dark\", \"light\"];\n var newMode = loopArray(modeList, currentMode);\n setTheme(newMode);\n}\n\n/**\n * add the theme listener on the btns of the navbar\n */\nfunction addModeListener() {\n // the theme was set a first time using the initial mini-script\n // running setMode will ensure the use of the dark mode if auto is selected\n setTheme(document.documentElement.dataset.mode);\n\n // Attach event handlers for toggling themes colors\n document.querySelectorAll(\".theme-switch-button\").forEach((el) => {\n el.addEventListener(\"click\", cycleMode);\n });\n}\n\n/*******************************************************************************\n * TOC interactivity\n */\n\n/**\n * TOC sidebar - add \"active\" class to parent list\n *\n * Bootstrap's scrollspy adds the active class to the <a> link,\n * but for the automatic collapsing we need this on the parent list item.\n *\n * The event is triggered on \"window\" (and not the nav item as documented),\n * see https://github.com/twbs/bootstrap/issues/20086\n */\nfunction addTOCInteractivity() {\n window.addEventListener(\"activate.bs.scrollspy\", function () {\n const navLinks = document.querySelectorAll(\".bd-toc-nav a\");\n\n navLinks.forEach((navLink) => {\n navLink.parentElement.classList.remove(\"active\");\n });\n\n const activeNavLinks = document.querySelectorAll(\".bd-toc-nav a.active\");\n activeNavLinks.forEach((navLink) => {\n navLink.parentElement.classList.add(\"active\");\n });\n });\n}\n\n/*******************************************************************************\n * Scroll\n */\n\n/**\n * Navigation sidebar scrolling to active page\n */\nfunction scrollToActive() {\n // If the docs nav doesn't exist, do nothing (e.g., on search page)\n if (!document.querySelector(\".bd-docs-nav\")) {\n return;\n }\n\n var sidebar = document.querySelector(\"div.bd-sidebar\");\n\n // Remember the sidebar scroll position between page loads\n // Inspired on source of revealjs.com\n let storedScrollTop = parseInt(\n sessionStorage.getItem(\"sidebar-scroll-top\"),\n 10,\n );\n\n if (!isNaN(storedScrollTop)) {\n // If we've got a saved scroll position, just use that\n sidebar.scrollTop = storedScrollTop;\n console.log(\"[PST]: Scrolled sidebar using stored browser position...\");\n } else {\n // Otherwise, calculate a position to scroll to based on the lowest `active` link\n var sidebarNav = document.querySelector(\".bd-docs-nav\");\n var active_pages = sidebarNav.querySelectorAll(\".active\");\n if (active_pages.length > 0) {\n // Use the last active page as the offset since it's the page we're on\n var latest_active = active_pages[active_pages.length - 1];\n var offset =\n latest_active.getBoundingClientRect().y -\n sidebar.getBoundingClientRect().y;\n // Only scroll the navbar if the active link is lower than 50% of the page\n if (latest_active.getBoundingClientRect().y > window.innerHeight * 0.5) {\n let buffer = 0.25; // Buffer so we have some space above the scrolled item\n sidebar.scrollTop = offset - sidebar.clientHeight * buffer;\n console.log(\"[PST]: Scrolled sidebar using last active link...\");\n }\n }\n }\n\n // Store the sidebar scroll position\n window.addEventListener(\"beforeunload\", () => {\n sessionStorage.setItem(\"sidebar-scroll-top\", sidebar.scrollTop);\n });\n}\n\n/*******************************************************************************\n * Search\n */\n\n/**\n * Find any search forms on the page and return their input element\n */\nvar findSearchInput = () => {\n let forms = document.querySelectorAll(\"form.bd-search\");\n if (!forms.length) {\n // no search form found\n return;\n } else {\n var form;\n if (forms.length == 1) {\n // there is exactly one search form (persistent or hidden)\n form = forms[0];\n } else {\n // must be at least one persistent form, use the first persistent one\n form = document.querySelector(\n \"div:not(.search-button__search-container) > form.bd-search\",\n );\n }\n return form.querySelector(\"input\");\n }\n};\n\n/**\n * Activate the search field on the page.\n * - If there is a search field already visible it will be activated.\n * - If not, then a search field will pop up.\n */\nvar toggleSearchField = () => {\n // Find the search input to highlight\n let input = findSearchInput();\n\n // if the input field is the hidden one (the one associated with the\n // search button) then toggle the button state (to show/hide the field)\n let searchPopupWrapper = document.querySelector(\".search-button__wrapper\");\n let hiddenInput = searchPopupWrapper.querySelector(\"input\");\n if (input === hiddenInput) {\n searchPopupWrapper.classList.toggle(\"show\");\n }\n // when toggling off the search field, remove its focus\n if (document.activeElement === input) {\n input.blur();\n } else {\n input.focus();\n input.select();\n input.scrollIntoView({ block: \"center\" });\n }\n};\n\n/**\n * Add an event listener for toggleSearchField() for Ctrl/Cmd + K\n */\nvar addEventListenerForSearchKeyboard = () => {\n window.addEventListener(\n \"keydown\",\n (event) => {\n let input = findSearchInput();\n // toggle on Ctrl+k or ⌘+k\n if (\n // Ignore if shift or alt are pressed\n !event.shiftKey &&\n !event.altKey &&\n // On Mac use ⌘, all other OS use Ctrl\n (useCommandKey\n ? event.metaKey && !event.ctrlKey\n : !event.metaKey && event.ctrlKey) &&\n // Case-insensitive so the shortcut still works with caps lock\n /^k$/i.test(event.key)\n ) {\n event.preventDefault();\n toggleSearchField();\n }\n // also allow Escape key to hide (but not show) the dynamic search field\n else if (document.activeElement === input && /Escape/i.test(event.key)) {\n toggleSearchField();\n }\n },\n true,\n );\n};\n\n/**\n * If the user is on a Mac, use command (⌘) instead of control (ctrl) key\n *\n * Note: `navigator.platform` is deprecated; however MDN still recommends using\n * it for the one specific use case of detecting whether a keyboard shortcut\n * should use control or command:\n * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform#examples\n */\nvar useCommandKey =\n navigator.platform.indexOf(\"Mac\") === 0 || navigator.platform === \"iPhone\";\n\n/**\n * Change the search hint to `meta key` if we are a Mac\n */\n\nvar changeSearchShortcutKey = () => {\n let shortcuts = document.querySelectorAll(\".search-button__kbd-shortcut\");\n if (useCommandKey) {\n shortcuts.forEach(\n (f) => (f.querySelector(\"kbd.kbd-shortcut__modifier\").innerText = \"⌘\"),\n );\n }\n};\n\n/**\n * Activate callbacks for search button popup\n */\nvar setupSearchButtons = () => {\n changeSearchShortcutKey();\n addEventListenerForSearchKeyboard();\n\n // Add the search button trigger event callback\n document.querySelectorAll(\".search-button__button\").forEach((btn) => {\n btn.onclick = toggleSearchField;\n });\n\n // Add the search button overlay event callback\n let overlay = document.querySelector(\".search-button__overlay\");\n if (overlay) {\n overlay.onclick = toggleSearchField;\n }\n};\n\n/*******************************************************************************\n * Version Switcher\n * Note that this depends on two variables existing that are defined in\n * and `html-page-context` hook:\n *\n * - DOCUMENTATION_OPTIONS.pagename\n * - DOCUMENTATION_OPTIONS.theme_switcher_url\n */\n\n/**\n * path component of URL\n */\nvar getCurrentUrlPath = () => {\n if (DOCUMENTATION_OPTIONS.BUILDER == \"dirhtml\") {\n return DOCUMENTATION_OPTIONS.pagename == \"index\"\n ? `/`\n : `${DOCUMENTATION_OPTIONS.pagename}/`;\n }\n return `${DOCUMENTATION_OPTIONS.pagename}.html`;\n};\n\n/**\n * Allow user to dismiss the warning banner about the docs version being dev / old.\n * We store the dismissal date and version, to give us flexibility about making the\n * dismissal last for longer than one browser session, if we decide to do that.\n *\n * @param {event} event the event that trigger the check\n */\nasync function DismissBannerAndStorePref(event) {\n const banner = document.querySelector(\"#bd-header-version-warning\");\n banner.remove();\n const version = DOCUMENTATION_OPTIONS.VERSION;\n const now = new Date();\n const banner_pref = JSON.parse(\n localStorage.getItem(\"pst_banner_pref\") || \"{}\",\n );\n console.debug(\n `[PST] Dismissing the version warning banner on ${version} starting ${now}.`,\n );\n banner_pref[version] = now;\n localStorage.setItem(\"pst_banner_pref\", JSON.stringify(banner_pref));\n}\n\n/**\n * Check if corresponding page path exists in other version of docs\n * and, if so, go there instead of the homepage of the other docs version\n *\n * @param {event} event the event that trigger the check\n */\nasync function checkPageExistsAndRedirect(event) {\n // ensure we don't follow the initial link\n event.preventDefault();\n const currentFilePath = getCurrentUrlPath();\n let tryUrl = event.currentTarget.getAttribute(\"href\");\n let otherDocsHomepage = tryUrl.replace(currentFilePath, \"\");\n try {\n let head = await fetch(tryUrl, { method: \"HEAD\" });\n if (head.ok) {\n location.href = tryUrl; // the page exists, go there\n } else {\n location.href = otherDocsHomepage;\n }\n } catch (err) {\n // something went wrong, probably CORS restriction, fallback to other docs homepage\n location.href = otherDocsHomepage;\n }\n}\n\n/**\n * Load and parse the version switcher JSON file from an absolute or relative URL.\n *\n * @param {string} url The URL to load version switcher entries from.\n */\nasync function fetchVersionSwitcherJSON(url) {\n // first check if it's a valid URL\n try {\n var result = new URL(url);\n } catch (err) {\n if (err instanceof TypeError) {\n if (!window.location.origin) {\n // window.location.origin is null for local static sites\n // (ie. window.location.protocol == 'file:')\n //\n // TODO: Fix this to return the static version switcher by working out\n // how to get the correct path to the switcher JSON file on local static builds\n return null;\n }\n // assume we got a relative path, and fix accordingly. But first, we need to\n // use `fetch()` to follow redirects so we get the correct final base URL\n const origin = await fetch(window.location.origin, { method: \"HEAD\" });\n result = new URL(url, origin.url);\n } else {\n // something unexpected happened\n throw err;\n }\n }\n // load and return the JSON\n const response = await fetch(result);\n const data = await response.json();\n return data;\n}\n\n// Populate the version switcher from the JSON data\nfunction populateVersionSwitcher(data, versionSwitcherBtns) {\n const currentFilePath = getCurrentUrlPath();\n versionSwitcherBtns.forEach((btn) => {\n // Set empty strings by default so that these attributes exist and can be used in CSS selectors\n btn.dataset[\"activeVersionName\"] = \"\";\n btn.dataset[\"activeVersion\"] = \"\";\n });\n // in case there are multiple entries with the same version string, this helps us\n // decide which entry's `name` to put on the button itself. Without this, it would\n // always be the *last* version-matching entry; now it will be either the\n // version-matching entry that is also marked as `\"preferred\": true`, or if that\n // doesn't exist: the *first* version-matching entry.\n data = data.map((entry) => {\n // does this entry match the version that we're currently building/viewing?\n entry.match =\n entry.version == DOCUMENTATION_OPTIONS.theme_switcher_version_match;\n entry.preferred = entry.preferred || false;\n // if no custom name specified (e.g., \"latest\"), use version string\n if (!(\"name\" in entry)) {\n entry.name = entry.version;\n }\n return entry;\n });\n const hasMatchingPreferredEntry = data\n .map((entry) => entry.preferred && entry.match)\n .some(Boolean);\n var foundMatch = false;\n // create links to the corresponding page in the other docs versions\n data.forEach((entry) => {\n // create the node\n const anchor = document.createElement(\"a\");\n anchor.setAttribute(\n \"class\",\n \"dropdown-item list-group-item list-group-item-action py-1\",\n );\n anchor.setAttribute(\"href\", `${entry.url}${currentFilePath}`);\n anchor.setAttribute(\"role\", \"option\");\n const span = document.createElement(\"span\");\n span.textContent = `${entry.name}`;\n anchor.appendChild(span);\n // Add dataset values for the version and name in case people want\n // to apply CSS styling based on this information.\n anchor.dataset[\"versionName\"] = entry.name;\n anchor.dataset[\"version\"] = entry.version;\n // replace dropdown button text with the preferred display name of the\n // currently-viewed version, rather than using sphinx's {{ version }} variable.\n // also highlight the dropdown entry for the currently-viewed version's entry\n let matchesAndIsPreferred = hasMatchingPreferredEntry && entry.preferred;\n let matchesAndIsFirst =\n !hasMatchingPreferredEntry && !foundMatch && entry.match;\n if (matchesAndIsPreferred || matchesAndIsFirst) {\n anchor.classList.add(\"active\");\n versionSwitcherBtns.forEach((btn) => {\n btn.innerText = entry.name;\n btn.dataset[\"activeVersionName\"] = entry.name;\n btn.dataset[\"activeVersion\"] = entry.version;\n });\n foundMatch = true;\n }\n // There may be multiple version-switcher elements, e.g. one\n // in a slide-over panel displayed on smaller screens.\n document.querySelectorAll(\".version-switcher__menu\").forEach((menu) => {\n // we need to clone the node for each menu, but onclick attributes are not\n // preserved by `.cloneNode()` so we add onclick here after cloning.\n let node = anchor.cloneNode(true);\n node.onclick = checkPageExistsAndRedirect;\n // on click, AJAX calls will check if the linked page exists before\n // trying to redirect, and if not, will redirect to the homepage\n // for that version of the docs.\n menu.append(node);\n });\n });\n}\n\n/*******************************************************************************\n * Warning banner when viewing non-stable version of the docs.\n */\n\n/**\n * Show a warning banner when viewing a non-stable version of the docs.\n *\n * adapted 2023-06 from https://mne.tools/versionwarning.js, which was\n * originally adapted 2020-05 from https://scikit-learn.org/versionwarning.js\n *\n * @param {Array} data The version data used to populate the switcher menu.\n */\nfunction showVersionWarningBanner(data) {\n var version = DOCUMENTATION_OPTIONS.VERSION;\n // figure out what latest stable version is\n var preferredEntries = data.filter((entry) => entry.preferred);\n if (preferredEntries.length !== 1) {\n const howMany = preferredEntries.length == 0 ? \"No\" : \"Multiple\";\n console.log(\n `[PST] ${howMany} versions marked \"preferred\" found in versions JSON, ignoring.`,\n );\n return;\n }\n const preferredVersion = preferredEntries[0].version;\n const preferredURL = preferredEntries[0].url;\n // if already on preferred version, nothing to do\n const versionsAreComparable = validate(version) && validate(preferredVersion);\n if (versionsAreComparable && compare(version, preferredVersion, \"=\")) {\n console.log(\n \"This is the prefered version of the docs, not showing the warning banner.\",\n );\n return;\n }\n // check if banner has been dismissed recently\n const dismiss_date_str = JSON.parse(\n localStorage.getItem(\"pst_banner_pref\") || \"{}\",\n )[version];\n if (dismiss_date_str != null) {\n const dismiss_date = new Date(dismiss_date_str);\n const now = new Date();\n const milliseconds_in_a_day = 24 * 60 * 60 * 1000;\n const days_passed = (now - dismiss_date) / milliseconds_in_a_day;\n const timeout_in_days = 14;\n if (days_passed < timeout_in_days) {\n console.info(\n `[PST] Suppressing version warning banner; was dismissed ${Math.floor(days_passed)} day(s) ago`,\n );\n return;\n }\n }\n\n // now construct the warning banner\n const banner = document.querySelector(\"#bd-header-version-warning\");\n const middle = document.createElement(\"div\");\n const inner = document.createElement(\"div\");\n const bold = document.createElement(\"strong\");\n const button = document.createElement(\"a\");\n const close_btn = document.createElement(\"a\");\n // these classes exist since pydata-sphinx-theme v0.10.0\n // the init class is used for animation\n middle.classList = \"bd-header-announcement__content ms-auto me-auto\";\n inner.classList = \"sidebar-message\";\n button.classList =\n \"btn text-wrap font-weight-bold ms-3 my-1 align-baseline pst-button-link-to-stable-version\";\n button.href = `${preferredURL}${getCurrentUrlPath()}`;\n button.innerText = \"Switch to stable version\";\n button.onclick = checkPageExistsAndRedirect;\n close_btn.classList = \"ms-3 my-1 align-baseline\";\n const close_x = document.createElement(\"i\");\n close_btn.append(close_x);\n close_x.classList = \"fa-solid fa-xmark\";\n close_btn.onclick = DismissBannerAndStorePref;\n // add the version-dependent text\n inner.innerText = \"This is documentation for \";\n const isDev =\n version.includes(\"dev\") ||\n version.includes(\"rc\") ||\n version.includes(\"pre\");\n const newerThanPreferred =\n versionsAreComparable && compare(version, preferredVersion, \">\");\n if (isDev || newerThanPreferred) {\n bold.innerText = \"an unstable development version\";\n } else if (versionsAreComparable && compare(version, preferredVersion, \"<\")) {\n bold.innerText = `an old version (${version})`;\n } else if (!version) {\n bold.innerText = \"an unknown version\"; // e.g., an empty string\n } else {\n bold.innerText = `version ${version}`;\n }\n banner.appendChild(middle);\n banner.append(close_btn);\n middle.appendChild(inner);\n inner.appendChild(bold);\n inner.appendChild(document.createTextNode(\".\"));\n inner.appendChild(button);\n banner.classList.remove(\"d-none\");\n}\n\n/*******************************************************************************\n * MutationObserver to move the ReadTheDocs button\n */\n\n/**\n * intercept the RTD flyout and place it in the rtd-footer-container if existing\n * if not it stays where on top of the page\n */\nfunction initRTDObserver() {\n const mutatedCallback = (mutationList, observer) => {\n mutationList.forEach((mutation) => {\n // Check whether the mutation is for RTD, which will have a specific structure\n if (mutation.addedNodes.length === 0) {\n return;\n }\n if (mutation.addedNodes[0].data === undefined) {\n return;\n }\n if (mutation.addedNodes[0].data.search(\"Inserted RTD Footer\") != -1) {\n mutation.addedNodes.forEach((node) => {\n document.getElementById(\"rtd-footer-container\").append(node);\n });\n }\n });\n };\n\n const observer = new MutationObserver(mutatedCallback);\n const config = { childList: true };\n observer.observe(document.body, config);\n}\n\nasync function fetchAndUseVersions() {\n // fetch the JSON version data (only once), then use it to populate the version\n // switcher and maybe show the version warning bar\n var versionSwitcherBtns = document.querySelectorAll(\n \".version-switcher__button\",\n );\n const hasSwitcherMenu = versionSwitcherBtns.length > 0;\n const hasVersionsJSON = DOCUMENTATION_OPTIONS.hasOwnProperty(\n \"theme_switcher_json_url\",\n );\n const wantsWarningBanner = DOCUMENTATION_OPTIONS.show_version_warning_banner;\n\n if (hasVersionsJSON && (hasSwitcherMenu || wantsWarningBanner)) {\n const data = await fetchVersionSwitcherJSON(\n DOCUMENTATION_OPTIONS.theme_switcher_json_url,\n );\n // TODO: remove the `if(data)` once the `return null` is fixed within fetchVersionSwitcherJSON.\n // We don't really want the switcher and warning bar to silently not work.\n if (data) {\n populateVersionSwitcher(data, versionSwitcherBtns);\n if (wantsWarningBanner) {\n showVersionWarningBanner(data);\n }\n }\n }\n}\n\n/*******************************************************************************\n * Add keyboard functionality to mobile sidebars.\n *\n * Wire up the hamburger-style buttons using the click event which (on buttons)\n * handles both mouse clicks and the space and enter keys.\n */\nfunction setupMobileSidebarKeyboardHandlers() {\n // These are hidden checkboxes at the top of the page whose :checked property\n // allows the mobile sidebars to be hidden or revealed via CSS.\n const primaryToggle = document.getElementById(\"pst-primary-sidebar-checkbox\");\n const secondaryToggle = document.getElementById(\n \"pst-secondary-sidebar-checkbox\",\n );\n const primarySidebar = document.querySelector(\".bd-sidebar-primary\");\n const secondarySidebar = document.querySelector(\".bd-sidebar-secondary\");\n\n // Toggle buttons -\n //\n // These are the hamburger-style buttons in the header nav bar. When the user\n // clicks, the button transmits the click to the hidden checkboxes used by the\n // CSS to control whether the sidebar is open or closed.\n const primaryClickTransmitter = document.querySelector(\".primary-toggle\");\n const secondaryClickTransmitter = document.querySelector(\".secondary-toggle\");\n [\n [primaryClickTransmitter, primaryToggle, primarySidebar],\n [secondaryClickTransmitter, secondaryToggle, secondarySidebar],\n ].forEach(([clickTransmitter, toggle, sidebar]) => {\n if (!clickTransmitter) {\n return;\n }\n clickTransmitter.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n toggle.checked = !toggle.checked;\n\n // If we are opening the sidebar, move focus to the first focusable item\n // in the sidebar\n if (toggle.checked) {\n // Note: this selector is not exhaustive, and we may need to update it\n // in the future\n const tabStop = sidebar.querySelector(\"a, button\");\n // use setTimeout because you cannot move focus synchronously during a\n // click in the handler for the click event\n setTimeout(() => tabStop.focus(), 100);\n }\n });\n });\n\n // Escape key -\n //\n // When sidebar is open, user should be able to press escape key to close the\n // sidebar.\n [\n [primarySidebar, primaryToggle, primaryClickTransmitter],\n [secondarySidebar, secondaryToggle, secondaryClickTransmitter],\n ].forEach(([sidebar, toggle, transmitter]) => {\n if (!sidebar) {\n return;\n }\n sidebar.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n toggle.checked = false;\n transmitter.focus();\n }\n });\n });\n\n // When the <label> overlay is clicked to close the sidebar, return focus to\n // the opener button in the nav bar.\n [\n [primaryToggle, primaryClickTransmitter],\n [secondaryToggle, secondaryClickTransmitter],\n ].forEach(([toggle, transmitter]) => {\n toggle.addEventListener(\"change\", (event) => {\n if (!event.currentTarget.checked) {\n transmitter.focus();\n }\n });\n });\n}\n\n/**\n * When the page loads, or the window resizes, or descendant nodes are added or\n * removed from the main element, check all code blocks and Jupyter notebook\n * outputs, and for each one that has scrollable overflow, set tabIndex = 0.\n */\nfunction addTabStopsToScrollableElements() {\n const updateTabStops = () => {\n document\n .querySelectorAll(\n \"pre, \" + // code blocks\n \".nboutput > .output_area, \" + // NBSphinx notebook output\n \".cell_output > .output, \" + // Myst-NB\n \".jp-RenderedHTMLCommon\", // ipywidgets\n )\n .forEach((el) => {\n el.tabIndex =\n el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight\n ? 0\n : -1;\n });\n };\n const debouncedUpdateTabStops = debounce(updateTabStops, 300);\n\n // On window resize\n window.addEventListener(\"resize\", debouncedUpdateTabStops);\n\n // The following MutationObserver is for ipywidgets, which take some time to\n // finish loading and rendering on the page (so even after the \"load\" event is\n // fired, they still have not finished rendering). Would be nice to replace\n // the MutationObserver if there is a way to hook into the ipywidgets code to\n // know when it is done.\n const mainObserver = new MutationObserver(debouncedUpdateTabStops);\n\n // On descendant nodes added/removed from main element\n mainObserver.observe(document.getElementById(\"main-content\"), {\n subtree: true,\n childList: true,\n });\n\n // On page load (when this function gets called)\n updateTabStops();\n}\nfunction debounce(callback, wait) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n}\n\n/*******************************************************************************\n * Announcement banner - fetch and load remote HTML\n */\nasync function setupAnnouncementBanner() {\n const banner = document.querySelector(\".bd-header-announcement\");\n const { pstAnnouncementUrl } = banner ? banner.dataset : null;\n\n if (!pstAnnouncementUrl) {\n return;\n }\n\n try {\n const response = await fetch(pstAnnouncementUrl);\n if (!response.ok) {\n throw new Error(\n `[PST]: HTTP response status not ok: ${response.status} ${response.statusText}`,\n );\n }\n const data = await response.text();\n if (data.length === 0) {\n console.log(`[PST]: Empty announcement at: ${pstAnnouncementUrl}`);\n return;\n }\n banner.innerHTML = `<div class=\"bd-header-announcement__content\">${data}</div>`;\n banner.classList.remove(\"d-none\");\n } catch (_error) {\n console.log(`[PST]: Failed to load announcement at: ${pstAnnouncementUrl}`);\n console.error(_error);\n }\n}\n\n/*******************************************************************************\n * Reveal (and animate) the banners (version warning, announcement) together\n */\nasync function fetchRevealBannersTogether() {\n // Wait until finished fetching and loading banners\n await Promise.allSettled([fetchAndUseVersions(), setupAnnouncementBanner()]);\n\n // The revealer element should have CSS rules that set height to 0, overflow\n // to hidden, and an animation transition on the height (unless the user has\n // turned off animations)\n const revealer = document.querySelector(\".pst-async-banner-revealer\");\n if (!revealer) {\n return;\n }\n\n // Remove the d-none (display-none) class to calculate the children heights.\n revealer.classList.remove(\"d-none\");\n\n // Add together the heights of the element's children\n const height = Array.from(revealer.children).reduce(\n (height, el) => height + el.offsetHeight,\n 0,\n );\n\n // Use the calculated height to give the revealer a non-zero height (if\n // animations allowed, the height change will animate)\n revealer.style.setProperty(\"height\", `${height}px`);\n\n // Wait for a bit more than 300ms (the transition duration), then set height\n // to auto so the banner can resize if the window is resized.\n setTimeout(() => {\n revealer.style.setProperty(\"height\", \"auto\");\n }, 320);\n}\n\n/*******************************************************************************\n * Call functions after document loading.\n */\n\n// This one first to kick off the network request for the version warning\n// and announcement banner data as early as possible.\ndocumentReady(fetchRevealBannersTogether);\n\ndocumentReady(addModeListener);\ndocumentReady(scrollToActive);\ndocumentReady(addTOCInteractivity);\ndocumentReady(setupSearchButtons);\ndocumentReady(initRTDObserver);\ndocumentReady(setupMobileSidebarKeyboardHandlers);\n\n// Determining whether an element has scrollable content depends on stylesheets,\n// so we're checking for the \"load\" event rather than \"DOMContentLoaded\"\nif (document.readyState === \"complete\") {\n addTabStopsToScrollableElements();\n} else {\n window.addEventListener(\"load\", addTabStopsToScrollableElements);\n}\n"],"names":["documentReady","callback","document","readyState","addEventListener","validate","version","test","semver","compare","v1","v2","operator","assertValidOperator","res","n1","validateAndParse","n2","p1","pop","p2","r","compareSegments","split","compareVersions","operatorResMap","includes","TypeError","match","Error","shift","isWildcard","s","tryParse","v","n","parseInt","isNaN","compareStrings","a","b","ap","bp","String","forceType","i","Math","max","length","allowedOperators","Object","keys","op","indexOf","join","prefersDark","window","matchMedia","autoTheme","e","documentElement","dataset","theme","matches","setTheme","mode","console","error","colorScheme","querySelectorAll","forEach","el","classList","add","remove","localStorage","setItem","log","onchange","cycleMode","defaultMode","currentMode","getItem","arr","nextPosition","findSearchInput","forms","querySelector","toggleSearchField","input","searchPopupWrapper","toggle","activeElement","blur","focus","select","scrollIntoView","block","useCommandKey","navigator","platform","getCurrentUrlPath","DOCUMENTATION_OPTIONS","BUILDER","pagename","async","DismissBannerAndStorePref","event","VERSION","now","Date","banner_pref","JSON","parse","debug","stringify","checkPageExistsAndRedirect","preventDefault","currentFilePath","tryUrl","currentTarget","getAttribute","otherDocsHomepage","replace","fetch","method","ok","location","href","err","fetchAndUseVersions","versionSwitcherBtns","hasSwitcherMenu","hasVersionsJSON","hasOwnProperty","wantsWarningBanner","show_version_warning_banner","data","url","result","URL","origin","response","json","fetchVersionSwitcherJSON","theme_switcher_json_url","btn","hasMatchingPreferredEntry","map","entry","theme_switcher_version_match","preferred","name","some","Boolean","foundMatch","anchor","createElement","setAttribute","span","textContent","appendChild","matchesAndIsPreferred","matchesAndIsFirst","innerText","menu","node","cloneNode","onclick","append","populateVersionSwitcher","preferredEntries","filter","howMany","preferredVersion","preferredURL","versionsAreComparable","dismiss_date_str","dismiss_date","days_passed","info","floor","banner","middle","inner","bold","button","close_btn","close_x","isDev","newerThanPreferred","createTextNode","showVersionWarningBanner","addTabStopsToScrollableElements","updateTabStops","tabIndex","scrollWidth","clientWidth","scrollHeight","clientHeight","debouncedUpdateTabStops","wait","timeoutId","args","clearTimeout","setTimeout","debounce","MutationObserver","observe","getElementById","subtree","childList","setupAnnouncementBanner","pstAnnouncementUrl","status","statusText","text","innerHTML","_error","Promise","allSettled","revealer","height","Array","from","children","reduce","offsetHeight","style","setProperty","sidebar","storedScrollTop","sessionStorage","active_pages","latest_active","offset","getBoundingClientRect","y","innerHeight","buffer","scrollTop","navLink","parentElement","shortcuts","f","changeSearchShortcutKey","shiftKey","altKey","metaKey","ctrlKey","key","overlay","mutationList","observer","mutation","addedNodes","undefined","search","body","primaryToggle","secondaryToggle","primarySidebar","secondarySidebar","primaryClickTransmitter","secondaryClickTransmitter","clickTransmitter","stopPropagation","checked","tabStop","transmitter"],"sourceRoot":""} |
| (()=>{"use strict";var e=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=document.querySelector("section h1");e.nextElementSibling.classList.contains("thebe-launch-button")||e.insertAdjacentHTML("afterend","<button class='thebe-launch-button'></button>"),initThebe()},window.toggleFullScreen=()=>{var e=document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement;let t=document.documentElement;e?(console.log("[SBT]: Exiting full screen"),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()):(console.log("[SBT]: Entering full screen"),t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},e((()=>{var e=[];let t=new IntersectionObserver(((t,n)=>{t.forEach((t=>{if(t.isIntersecting)e.push(t.target);else for(let n=0;n<e.length;n++)if(e[n]===t.target){e.splice(n,1);break}})),e.length>0?document.querySelector("div.bd-sidebar-secondary").classList.add("hide"):document.querySelector("div.bd-sidebar-secondary").classList.remove("hide")}),{rootMargin:"0px 0px -33% 0px"}),n=[];["marginnote","sidenote","margin","margin-caption","full-width","sidebar","popout"].forEach((e=>{n.push(`.${e}`,`.tag_${e}`,`.${e.replace("-","_")}`,`.tag_${e.replace("-","_")}`)})),document.querySelectorAll(n.join(", ")).forEach((e=>{t.observe(e)})),new IntersectionObserver(((e,t)=>{e[0].boundingClientRect.y<0?document.body.classList.add("scrolled"):document.body.classList.remove("scrolled")})).observe(document.querySelector(".sbt-scroll-pixel-helper"))})),e((function(){var e=[".bd-header-announcement",".bd-header",".bd-header-article",".bd-sidebar-primary",".bd-sidebar-secondary",".bd-footer-article",".bd-footer-content",".bd-footer"].join(",");document.querySelectorAll(e).forEach((e=>{e.classList.add("noprint")}))}))})(); | ||
| //# sourceMappingURL=sphinx-book-theme.js.map |
| {"version":3,"file":"scripts/sphinx-book-theme.js","mappings":"mBASA,IAAIA,EAAsBC,IACG,WAAvBC,SAASC,WACXF,IACSC,SAASE,iBAClBF,SAASE,iBAAiB,mBAAoBH,GAE9CC,SAASG,YAAY,sBAAsB,WACd,YAAvBH,SAASC,YAA0BF,GACzC,GACF,EAkKFK,OAAOC,aAtCY,KACjB,IAAIC,EAAQN,SAASO,cAAc,cACrBD,EAAME,mBAGPC,UAAUC,SAAS,wBAC9BJ,EAAMK,mBACJ,WACA,iDAIJC,WAAW,EA2BbR,OAAOS,iBAzJgB,KACrB,IAAIC,EACDd,SAASe,mBAAoD,OAA/Bf,SAASe,mBACvCf,SAASgB,yBAC6B,OAArChB,SAASgB,wBACb,IAAIC,EAASjB,SAASkB,gBACjBJ,GAQHK,QAAQC,IAAI,8BACRpB,SAASqB,eACXrB,SAASqB,iBACArB,SAASsB,sBAClBtB,SAASsB,yBAXXH,QAAQC,IAAI,+BACRH,EAAOM,kBACTN,EAAOM,oBACEN,EAAOO,yBAChBP,EAAOO,0BASX,EA0IF1B,GAzHkB,KAChB,IAAI2B,EAAgB,GACpB,IAwCIC,EAAc,IAAIC,sBAxCA,CAACC,EAASC,KAE9BD,EAAQE,SAASC,IACf,GAAIA,EAAMC,eAERP,EAAcQ,KAAKF,EAAMG,aAGzB,IAAK,IAAIC,EAAK,EAAGA,EAAKV,EAAcW,OAAQD,IAC1C,GAAIV,EAAcU,KAAQJ,EAAMG,OAAQ,CACtCT,EAAcY,OAAOF,EAAI,GACzB,KACF,CAEJ,IAIEV,EAAcW,OAAS,EACzBpC,SAASO,cAAc,4BAA4BE,UAAU6B,IAAI,QAEjEtC,SACGO,cAAc,4BACdE,UAAU8B,OAAO,OACtB,GAYY,CAEZC,WAAY,qBAaVC,EAAiB,GATG,CACtB,aACA,WACA,SACA,iBACA,aACA,UACA,UAGcX,SAASK,IAEvBM,EAAeR,KAEX,IAAIE,IACJ,QAAQA,IACR,IAAIA,EAAGO,QAAQ,IAAK,OACpB,QAAQP,EAAGO,QAAQ,IAAK,OAE3B,IAEH1C,SAAS2C,iBAAiBF,EAAeG,KAAK,OAAOd,SAASK,IAC5DT,EAAYmB,QAAQV,EAAG,IAIJ,IAAIR,sBA1CO,CAACC,EAASC,KAEpCD,EAAQ,GAAGkB,mBAAmBC,EAAI,EACpC/C,SAASgD,KAAKvC,UAAU6B,IAAI,YAE5BtC,SAASgD,KAAKvC,UAAU8B,OAAO,WACjC,IAqCaM,QAAQ7C,SAASO,cAAc,4BAA4B,IAmD5ET,GA1BA,WACE,IAAImD,EAAkB,CACpB,0BACA,aACA,qBACA,sBACA,wBACA,qBACA,qBACA,cACAL,KAAK,KACP5C,SAAS2C,iBAAiBM,GAAiBnB,SAASK,IAClDA,EAAG1B,UAAU6B,IAAI,UAAU,GAE/B,G","sources":["webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/scripts/index.js"],"sourcesContent":["// Import CSS variables\n// ref: https://css-tricks.com/getting-javascript-to-talk-to-css-and-sass/\nimport \"../styles/index.scss\";\n\n/**\n * A helper function to load scripts when the DOM is loaded.\n * This waits for everything to be on the page first before running, since\n * some functionality doesn't behave properly until everything is ready.\n */\nvar sbRunWhenDOMLoaded = (cb) => {\n if (document.readyState != \"loading\") {\n cb();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", cb);\n } else {\n document.attachEvent(\"onreadystatechange\", function () {\n if (document.readyState == \"complete\") cb();\n });\n }\n};\n\n/**\n * Toggle full-screen with button\n *\n * There are some browser-specific hacks in here:\n * - Safari requires a `webkit` prefix, so this uses conditionals to check for that\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API\n */\nvar toggleFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null);\n let docElm = document.documentElement;\n if (!isInFullScreen) {\n console.log(\"[SBT]: Entering full screen\");\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.webkitRequestFullscreen) {\n docElm.webkitRequestFullscreen();\n }\n } else {\n console.log(\"[SBT]: Exiting full screen\");\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n};\n\n/**\n * Manage scrolling behavior. This is primarily two things:\n *\n * 1. Hide the Table of Contents any time sidebar content is on the screen.\n *\n * This will be triggered any time a sidebar item enters or exits the screen.\n * It adds/removes items from an array if they have entered the screen, and\n * removes them when they exit the screen. It hides the TOC if anything is\n * on-screen.\n *\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n *\n * 2. Add a `scrolled` class to <body> to trigger CSS changes.\n */\nvar initTocHide = () => {\n var onScreenItems = [];\n let hideTocCallback = (entries, observer) => {\n // Check whether any sidebar item is displayed\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // If an element just came on screen, add it our list\n onScreenItems.push(entry.target);\n } else {\n // Otherwise, if it's in our list then remove it\n for (let ii = 0; ii < onScreenItems.length; ii++) {\n if (onScreenItems[ii] === entry.target) {\n onScreenItems.splice(ii, 1);\n break;\n }\n }\n }\n });\n\n // Hide the TOC if any margin content is displayed on the screen\n if (onScreenItems.length > 0) {\n document.querySelector(\"div.bd-sidebar-secondary\").classList.add(\"hide\");\n } else {\n document\n .querySelector(\"div.bd-sidebar-secondary\")\n .classList.remove(\"hide\");\n }\n };\n let manageScrolledClassOnBody = (entries, observer) => {\n // The pixel is at the top, so if we're < 0 that it means we've scrolled\n if (entries[0].boundingClientRect.y < 0) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n };\n\n // Set up the intersection observer to watch all margin content\n let options = {\n // Trigger callback when the top of a margin item is 1/3 up the screen\n rootMargin: \"0px 0px -33% 0px\",\n };\n let tocObserver = new IntersectionObserver(hideTocCallback, options);\n // TODO: deprecate popout after v0.5.0\n const selectorClasses = [\n \"marginnote\",\n \"sidenote\",\n \"margin\",\n \"margin-caption\",\n \"full-width\",\n \"sidebar\",\n \"popout\",\n ];\n let marginSelector = [];\n selectorClasses.forEach((ii) => {\n // Use three permutations of each class name because `tag_` and `_` used to be supported\n marginSelector.push(\n ...[\n `.${ii}`,\n `.tag_${ii}`,\n `.${ii.replace(\"-\", \"_\")}`,\n `.tag_${ii.replace(\"-\", \"_\")}`,\n ],\n );\n });\n document.querySelectorAll(marginSelector.join(\", \")).forEach((ii) => {\n tocObserver.observe(ii);\n });\n\n // Set up the observer to check if we've scrolled from top of page\n let scrollObserver = new IntersectionObserver(manageScrolledClassOnBody);\n scrollObserver.observe(document.querySelector(\".sbt-scroll-pixel-helper\"));\n};\n\n/**\n * Activate Thebe with a custom button click.\n */\nvar initThebeSBT = () => {\n var title = document.querySelector(\"section h1\");\n var sibling = title.nextElementSibling;\n // If the next element after the title isn't a thebe button, add one now.\n // That way it is initiatlized when thebe is first-clicked and isn't re-added after.\n if (!sibling.classList.contains(\"thebe-launch-button\")) {\n title.insertAdjacentHTML(\n \"afterend\",\n \"<button class='thebe-launch-button'></button>\",\n );\n }\n // This function is provided by sphinx-thebe\n initThebe();\n};\n\n/**\n * Add no print class to certain DOM elements\n */\n\nfunction addNoPrint() {\n var noPrintSelector = [\n \".bd-header-announcement\",\n \".bd-header\",\n \".bd-header-article\",\n \".bd-sidebar-primary\",\n \".bd-sidebar-secondary\",\n \".bd-footer-article\",\n \".bd-footer-content\",\n \".bd-footer\",\n ].join(\",\");\n document.querySelectorAll(noPrintSelector).forEach((ii) => {\n ii.classList.add(\"noprint\");\n });\n}\n\n/**\n * Set up callback functions for UI click actions\n */\nwindow.initThebeSBT = initThebeSBT;\nwindow.toggleFullScreen = toggleFullScreen;\n\n/**\n * Set up functions to load when the DOM is ready\n */\nsbRunWhenDOMLoaded(initTocHide);\nsbRunWhenDOMLoaded(addNoPrint);\n"],"names":["sbRunWhenDOMLoaded","cb","document","readyState","addEventListener","attachEvent","window","initThebeSBT","title","querySelector","nextElementSibling","classList","contains","insertAdjacentHTML","initThebe","toggleFullScreen","isInFullScreen","fullscreenElement","webkitFullscreenElement","docElm","documentElement","console","log","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitRequestFullscreen","onScreenItems","tocObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","push","target","ii","length","splice","add","remove","rootMargin","marginSelector","replace","querySelectorAll","join","observe","boundingClientRect","y","body","noPrintSelector"],"sourceRoot":""} |
| /* | ||
| * Sphinx JavaScript utilities for the full-text search. | ||
| */ | ||
| "use strict"; | ||
| /** | ||
| * Simple result scoring code. | ||
| */ | ||
| if (typeof Scorer === "undefined") { | ||
| var Scorer = { | ||
| // Implement the following function to further tweak the score for each result | ||
| // The function takes a result array [docname, title, anchor, descr, score, filename] | ||
| // and returns the new score. | ||
| /* | ||
| score: result => { | ||
| const [docname, title, anchor, descr, score, filename, kind] = result | ||
| return score | ||
| }, | ||
| */ | ||
| // query matches the full name of an object | ||
| objNameMatch: 11, | ||
| // or matches in the last dotted part of the object name | ||
| objPartialMatch: 6, | ||
| // Additive scores depending on the priority of the object | ||
| objPrio: { | ||
| 0: 15, // used to be importantResults | ||
| 1: 5, // used to be objectResults | ||
| 2: -5, // used to be unimportantResults | ||
| }, | ||
| // Used when the priority is not in the mapping. | ||
| objPrioDefault: 0, | ||
| // query found in title | ||
| title: 15, | ||
| partialTitle: 7, | ||
| // query found in terms | ||
| term: 5, | ||
| partialTerm: 2, | ||
| }; | ||
| } | ||
| // Global search result kind enum, used by themes to style search results. | ||
| // prettier-ignore | ||
| class SearchResultKind { | ||
| static get index() { return "index"; } | ||
| static get object() { return "object"; } | ||
| static get text() { return "text"; } | ||
| static get title() { return "title"; } | ||
| } | ||
| const _removeChildren = (element) => { | ||
| while (element && element.lastChild) element.removeChild(element.lastChild); | ||
| }; | ||
| /** | ||
| * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping | ||
| */ | ||
| const _escapeRegExp = (string) => | ||
| string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string | ||
| const _escapeHTML = (text) => { | ||
| return text | ||
| .replaceAll("&", "&") | ||
| .replaceAll("<", "<") | ||
| .replaceAll(">", ">") | ||
| .replaceAll('"', """) | ||
| .replaceAll("'", "'"); | ||
| }; | ||
| const _displayItem = (item, searchTerms, highlightTerms) => { | ||
| const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; | ||
| const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; | ||
| const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; | ||
| const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; | ||
| const contentRoot = document.documentElement.dataset.content_root; | ||
| const [docName, title, anchor, descr, score, _filename, kind] = item; | ||
| let listItem = document.createElement("li"); | ||
| // Add a class representing the item's type: | ||
| // can be used by a theme's CSS selector for styling | ||
| // See SearchResultKind for the class names. | ||
| listItem.classList.add(`kind-${kind}`); | ||
| let requestUrl; | ||
| let linkUrl; | ||
| if (docBuilder === "dirhtml") { | ||
| // dirhtml builder | ||
| let dirname = docName + "/"; | ||
| if (dirname.match(/\/index\/$/)) | ||
| dirname = dirname.substring(0, dirname.length - 6); | ||
| else if (dirname === "index/") dirname = ""; | ||
| requestUrl = contentRoot + dirname; | ||
| linkUrl = requestUrl; | ||
| } else { | ||
| // normal html builders | ||
| requestUrl = contentRoot + docName + docFileSuffix; | ||
| linkUrl = docName + docLinkSuffix; | ||
| } | ||
| let linkEl = listItem.appendChild(document.createElement("a")); | ||
| linkEl.href = linkUrl + anchor; | ||
| linkEl.dataset.score = score; | ||
| linkEl.innerHTML = _escapeHTML(title); | ||
| if (descr) { | ||
| listItem.appendChild(document.createElement("span")).innerHTML = | ||
| ` (${_escapeHTML(descr)})`; | ||
| // highlight search terms in the description | ||
| if (SPHINX_HIGHLIGHT_ENABLED) | ||
| // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js | ||
| highlightTerms.forEach((term) => | ||
| _highlightText(listItem, term, "highlighted"), | ||
| ); | ||
| } else if (showSearchSummary) | ||
| fetch(requestUrl) | ||
| .then((responseData) => responseData.text()) | ||
| .then((data) => { | ||
| if (data) | ||
| listItem.appendChild( | ||
| Search.makeSearchSummary(data, searchTerms, anchor), | ||
| ); | ||
| // highlight search terms in the summary | ||
| if (SPHINX_HIGHLIGHT_ENABLED) | ||
| // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js | ||
| highlightTerms.forEach((term) => | ||
| _highlightText(listItem, term, "highlighted"), | ||
| ); | ||
| }); | ||
| Search.output.appendChild(listItem); | ||
| }; | ||
| const _finishSearch = (resultCount) => { | ||
| Search.stopPulse(); | ||
| Search.title.innerText = _("Search Results"); | ||
| if (!resultCount) | ||
| Search.status.innerText = Documentation.gettext( | ||
| "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.", | ||
| ); | ||
| else | ||
| Search.status.innerText = Documentation.ngettext( | ||
| "Search finished, found one page matching the search query.", | ||
| "Search finished, found ${resultCount} pages matching the search query.", | ||
| resultCount, | ||
| ).replace("${resultCount}", resultCount); | ||
| }; | ||
| const _displayNextItem = ( | ||
| results, | ||
| resultCount, | ||
| searchTerms, | ||
| highlightTerms, | ||
| ) => { | ||
| // results left, load the summary and display it | ||
| // this is intended to be dynamic (don't sub resultsCount) | ||
| if (results.length) { | ||
| _displayItem(results.pop(), searchTerms, highlightTerms); | ||
| setTimeout( | ||
| () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), | ||
| 5, | ||
| ); | ||
| } | ||
| // search finished, update title and status message | ||
| else _finishSearch(resultCount); | ||
| }; | ||
| // Helper function used by query() to order search results. | ||
| // Each input is an array of [docname, title, anchor, descr, score, filename, kind]. | ||
| // Order the results by score (in opposite order of appearance, since the | ||
| // `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. | ||
| const _orderResultsByScoreThenName = (a, b) => { | ||
| const leftScore = a[4]; | ||
| const rightScore = b[4]; | ||
| if (leftScore === rightScore) { | ||
| // same score: sort alphabetically | ||
| const leftTitle = a[1].toLowerCase(); | ||
| const rightTitle = b[1].toLowerCase(); | ||
| if (leftTitle === rightTitle) return 0; | ||
| return leftTitle > rightTitle ? -1 : 1; // inverted is intentional | ||
| } | ||
| return leftScore > rightScore ? 1 : -1; | ||
| }; | ||
| /** | ||
| * Default splitQuery function. Can be overridden in ``sphinx.search`` with a | ||
| * custom function per language. | ||
| * | ||
| * The regular expression works by splitting the string on consecutive characters | ||
| * that are not Unicode letters, numbers, underscores, or emoji characters. | ||
| * This is the same as ``\W+`` in Python, preserving the surrogate pair area. | ||
| */ | ||
| if (typeof splitQuery === "undefined") { | ||
| var splitQuery = (query) => | ||
| query | ||
| .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) | ||
| .filter((term) => term); // remove remaining empty strings | ||
| } | ||
| /** | ||
| * Search Module | ||
| */ | ||
| const Search = { | ||
| _index: null, | ||
| _queued_query: null, | ||
| _pulse_status: -1, | ||
| htmlToText: (htmlString, anchor) => { | ||
| const htmlElement = new DOMParser().parseFromString( | ||
| htmlString, | ||
| "text/html", | ||
| ); | ||
| for (const removalQuery of [".headerlink", "script", "style"]) { | ||
| htmlElement.querySelectorAll(removalQuery).forEach((el) => { | ||
| el.remove(); | ||
| }); | ||
| } | ||
| if (anchor) { | ||
| const anchorContent = htmlElement.querySelector( | ||
| `[role="main"] ${anchor}`, | ||
| ); | ||
| if (anchorContent) return anchorContent.textContent; | ||
| console.warn( | ||
| `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`, | ||
| ); | ||
| } | ||
| // if anchor not specified or not found, fall back to main content | ||
| const docContent = htmlElement.querySelector('[role="main"]'); | ||
| if (docContent) return docContent.textContent; | ||
| console.warn( | ||
| "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template.", | ||
| ); | ||
| return ""; | ||
| }, | ||
| init: () => { | ||
| const query = new URLSearchParams(window.location.search).get("q"); | ||
| document | ||
| .querySelectorAll('input[name="q"]') | ||
| .forEach((el) => (el.value = query)); | ||
| if (query) Search.performSearch(query); | ||
| }, | ||
| loadIndex: (url) => | ||
| (document.body.appendChild(document.createElement("script")).src = url), | ||
| setIndex: (index) => { | ||
| Search._index = index; | ||
| if (Search._queued_query !== null) { | ||
| const query = Search._queued_query; | ||
| Search._queued_query = null; | ||
| Search.query(query); | ||
| } | ||
| }, | ||
| hasIndex: () => Search._index !== null, | ||
| deferQuery: (query) => (Search._queued_query = query), | ||
| stopPulse: () => (Search._pulse_status = -1), | ||
| startPulse: () => { | ||
| if (Search._pulse_status >= 0) return; | ||
| const pulse = () => { | ||
| Search._pulse_status = (Search._pulse_status + 1) % 4; | ||
| Search.dots.innerText = ".".repeat(Search._pulse_status); | ||
| if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); | ||
| }; | ||
| pulse(); | ||
| }, | ||
| /** | ||
| * perform a search for something (or wait until index is loaded) | ||
| */ | ||
| performSearch: (query) => { | ||
| // create the required interface elements | ||
| const searchText = document.createElement("h2"); | ||
| searchText.textContent = _("Searching"); | ||
| const searchSummary = document.createElement("p"); | ||
| searchSummary.classList.add("search-summary"); | ||
| searchSummary.innerText = ""; | ||
| const searchList = document.createElement("ul"); | ||
| searchList.setAttribute("role", "list"); | ||
| searchList.classList.add("search"); | ||
| const out = document.getElementById("search-results"); | ||
| Search.title = out.appendChild(searchText); | ||
| Search.dots = Search.title.appendChild(document.createElement("span")); | ||
| Search.status = out.appendChild(searchSummary); | ||
| Search.output = out.appendChild(searchList); | ||
| const searchProgress = document.getElementById("search-progress"); | ||
| // Some themes don't use the search progress node | ||
| if (searchProgress) { | ||
| searchProgress.innerText = _("Preparing search..."); | ||
| } | ||
| Search.startPulse(); | ||
| // index already loaded, the browser was quick! | ||
| if (Search.hasIndex()) Search.query(query); | ||
| else Search.deferQuery(query); | ||
| }, | ||
| _parseQuery: (query) => { | ||
| // stem the search terms and add them to the correct list | ||
| const stemmer = new Stemmer(); | ||
| const searchTerms = new Set(); | ||
| const excludedTerms = new Set(); | ||
| const highlightTerms = new Set(); | ||
| const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); | ||
| splitQuery(query.trim()).forEach((queryTerm) => { | ||
| const queryTermLower = queryTerm.toLowerCase(); | ||
| // maybe skip this "word" | ||
| // stopwords set is from language_data.js | ||
| if (stopwords.has(queryTermLower) || queryTerm.match(/^\d+$/)) return; | ||
| // stem the word | ||
| let word = stemmer.stemWord(queryTermLower); | ||
| // select the correct list | ||
| if (word[0] === "-") excludedTerms.add(word.substr(1)); | ||
| else { | ||
| searchTerms.add(word); | ||
| highlightTerms.add(queryTermLower); | ||
| } | ||
| }); | ||
| if (SPHINX_HIGHLIGHT_ENABLED) { | ||
| // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js | ||
| localStorage.setItem( | ||
| "sphinx_highlight_terms", | ||
| [...highlightTerms].join(" "), | ||
| ); | ||
| } | ||
| // console.debug("SEARCH: searching for:"); | ||
| // console.info("required: ", [...searchTerms]); | ||
| // console.info("excluded: ", [...excludedTerms]); | ||
| return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; | ||
| }, | ||
| /** | ||
| * execute search (requires search index to be loaded) | ||
| */ | ||
| _performSearch: ( | ||
| query, | ||
| searchTerms, | ||
| excludedTerms, | ||
| highlightTerms, | ||
| objectTerms, | ||
| ) => { | ||
| const filenames = Search._index.filenames; | ||
| const docNames = Search._index.docnames; | ||
| const titles = Search._index.titles; | ||
| const allTitles = Search._index.alltitles; | ||
| const indexEntries = Search._index.indexentries; | ||
| // Collect multiple result groups to be sorted separately and then ordered. | ||
| // Each is an array of [docname, title, anchor, descr, score, filename, kind]. | ||
| const normalResults = []; | ||
| const nonMainIndexResults = []; | ||
| _removeChildren(document.getElementById("search-progress")); | ||
| const queryLower = query.toLowerCase().trim(); | ||
| for (const [title, foundTitles] of Object.entries(allTitles)) { | ||
| if ( | ||
| title.toLowerCase().trim().includes(queryLower) | ||
| && queryLower.length >= title.length / 2 | ||
| ) { | ||
| for (const [file, id] of foundTitles) { | ||
| const score = Math.round( | ||
| (Scorer.title * queryLower.length) / title.length, | ||
| ); | ||
| const boost = titles[file] === title ? 1 : 0; // add a boost for document titles | ||
| normalResults.push([ | ||
| docNames[file], | ||
| titles[file] !== title ? `${titles[file]} > ${title}` : title, | ||
| id !== null ? "#" + id : "", | ||
| null, | ||
| score + boost, | ||
| filenames[file], | ||
| SearchResultKind.title, | ||
| ]); | ||
| } | ||
| } | ||
| } | ||
| // search for explicit entries in index directives | ||
| for (const [entry, foundEntries] of Object.entries(indexEntries)) { | ||
| if (entry.includes(queryLower) && queryLower.length >= entry.length / 2) { | ||
| for (const [file, id, isMain] of foundEntries) { | ||
| const score = Math.round((100 * queryLower.length) / entry.length); | ||
| const result = [ | ||
| docNames[file], | ||
| titles[file], | ||
| id ? "#" + id : "", | ||
| null, | ||
| score, | ||
| filenames[file], | ||
| SearchResultKind.index, | ||
| ]; | ||
| if (isMain) { | ||
| normalResults.push(result); | ||
| } else { | ||
| nonMainIndexResults.push(result); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| // lookup as object | ||
| objectTerms.forEach((term) => | ||
| normalResults.push(...Search.performObjectSearch(term, objectTerms)), | ||
| ); | ||
| // lookup as search terms in fulltext | ||
| normalResults.push( | ||
| ...Search.performTermsSearch(searchTerms, excludedTerms), | ||
| ); | ||
| // let the scorer override scores with a custom scoring function | ||
| if (Scorer.score) { | ||
| normalResults.forEach((item) => (item[4] = Scorer.score(item))); | ||
| nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); | ||
| } | ||
| // Sort each group of results by score and then alphabetically by name. | ||
| normalResults.sort(_orderResultsByScoreThenName); | ||
| nonMainIndexResults.sort(_orderResultsByScoreThenName); | ||
| // Combine the result groups in (reverse) order. | ||
| // Non-main index entries are typically arbitrary cross-references, | ||
| // so display them after other results. | ||
| let results = [...nonMainIndexResults, ...normalResults]; | ||
| // remove duplicate search results | ||
| // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept | ||
| let seen = new Set(); | ||
| results = results.reverse().reduce((acc, result) => { | ||
| let resultStr = result | ||
| .slice(0, 4) | ||
| .concat([result[5]]) | ||
| .map((v) => String(v)) | ||
| .join(","); | ||
| if (!seen.has(resultStr)) { | ||
| acc.push(result); | ||
| seen.add(resultStr); | ||
| } | ||
| return acc; | ||
| }, []); | ||
| return results.reverse(); | ||
| }, | ||
| query: (query) => { | ||
| const [ | ||
| searchQuery, | ||
| searchTerms, | ||
| excludedTerms, | ||
| highlightTerms, | ||
| objectTerms, | ||
| ] = Search._parseQuery(query); | ||
| const results = Search._performSearch( | ||
| searchQuery, | ||
| searchTerms, | ||
| excludedTerms, | ||
| highlightTerms, | ||
| objectTerms, | ||
| ); | ||
| // for debugging | ||
| //Search.lastresults = results.slice(); // a copy | ||
| // console.info("search results:", Search.lastresults); | ||
| // print the results | ||
| _displayNextItem(results, results.length, searchTerms, highlightTerms); | ||
| }, | ||
| /** | ||
| * search for object names | ||
| */ | ||
| performObjectSearch: (object, objectTerms) => { | ||
| const filenames = Search._index.filenames; | ||
| const docNames = Search._index.docnames; | ||
| const objects = Search._index.objects; | ||
| const objNames = Search._index.objnames; | ||
| const titles = Search._index.titles; | ||
| const results = []; | ||
| const objectSearchCallback = (prefix, match) => { | ||
| const name = match[4]; | ||
| const fullname = (prefix ? prefix + "." : "") + name; | ||
| const fullnameLower = fullname.toLowerCase(); | ||
| if (fullnameLower.indexOf(object) < 0) return; | ||
| let score = 0; | ||
| const parts = fullnameLower.split("."); | ||
| // check for different match types: exact matches of full name or | ||
| // "last name" (i.e. last dotted part) | ||
| if (fullnameLower === object || parts.slice(-1)[0] === object) | ||
| score += Scorer.objNameMatch; | ||
| else if (parts.slice(-1)[0].indexOf(object) > -1) | ||
| score += Scorer.objPartialMatch; // matches in last name | ||
| const objName = objNames[match[1]][2]; | ||
| const title = titles[match[0]]; | ||
| // If more than one term searched for, we require other words to be | ||
| // found in the name/title/description | ||
| const otherTerms = new Set(objectTerms); | ||
| otherTerms.delete(object); | ||
| if (otherTerms.size > 0) { | ||
| const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); | ||
| if ( | ||
| [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) | ||
| ) | ||
| return; | ||
| } | ||
| let anchor = match[3]; | ||
| if (anchor === "") anchor = fullname; | ||
| else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; | ||
| const descr = objName + _(", in ") + title; | ||
| // add custom score for some objects according to scorer | ||
| if (Scorer.objPrio.hasOwnProperty(match[2])) | ||
| score += Scorer.objPrio[match[2]]; | ||
| else score += Scorer.objPrioDefault; | ||
| results.push([ | ||
| docNames[match[0]], | ||
| fullname, | ||
| "#" + anchor, | ||
| descr, | ||
| score, | ||
| filenames[match[0]], | ||
| SearchResultKind.object, | ||
| ]); | ||
| }; | ||
| Object.keys(objects).forEach((prefix) => | ||
| objects[prefix].forEach((array) => objectSearchCallback(prefix, array)), | ||
| ); | ||
| return results; | ||
| }, | ||
| /** | ||
| * search for full-text terms in the index | ||
| */ | ||
| performTermsSearch: (searchTerms, excludedTerms) => { | ||
| // prepare search | ||
| const terms = Search._index.terms; | ||
| const titleTerms = Search._index.titleterms; | ||
| const filenames = Search._index.filenames; | ||
| const docNames = Search._index.docnames; | ||
| const titles = Search._index.titles; | ||
| const scoreMap = new Map(); | ||
| const fileMap = new Map(); | ||
| // perform the search on the required terms | ||
| searchTerms.forEach((word) => { | ||
| const files = []; | ||
| // find documents, if any, containing the query word in their text/title term indices | ||
| // use Object.hasOwnProperty to avoid mismatching against prototype properties | ||
| const arr = [ | ||
| { | ||
| files: terms.hasOwnProperty(word) ? terms[word] : undefined, | ||
| score: Scorer.term, | ||
| }, | ||
| { | ||
| files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, | ||
| score: Scorer.title, | ||
| }, | ||
| ]; | ||
| // add support for partial matches | ||
| if (word.length > 2) { | ||
| const escapedWord = _escapeRegExp(word); | ||
| if (!terms.hasOwnProperty(word)) { | ||
| Object.keys(terms).forEach((term) => { | ||
| if (term.match(escapedWord)) | ||
| arr.push({ files: terms[term], score: Scorer.partialTerm }); | ||
| }); | ||
| } | ||
| if (!titleTerms.hasOwnProperty(word)) { | ||
| Object.keys(titleTerms).forEach((term) => { | ||
| if (term.match(escapedWord)) | ||
| arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); | ||
| }); | ||
| } | ||
| } | ||
| // no match but word was a required one | ||
| if (arr.every((record) => record.files === undefined)) return; | ||
| // found search word in contents | ||
| arr.forEach((record) => { | ||
| if (record.files === undefined) return; | ||
| let recordFiles = record.files; | ||
| if (recordFiles.length === undefined) recordFiles = [recordFiles]; | ||
| files.push(...recordFiles); | ||
| // set score for the word in each file | ||
| recordFiles.forEach((file) => { | ||
| if (!scoreMap.has(file)) scoreMap.set(file, new Map()); | ||
| const fileScores = scoreMap.get(file); | ||
| fileScores.set(word, record.score); | ||
| }); | ||
| }); | ||
| // create the mapping | ||
| files.forEach((file) => { | ||
| if (!fileMap.has(file)) fileMap.set(file, [word]); | ||
| else if (fileMap.get(file).indexOf(word) === -1) | ||
| fileMap.get(file).push(word); | ||
| }); | ||
| }); | ||
| // now check if the files don't contain excluded terms | ||
| const results = []; | ||
| for (const [file, wordList] of fileMap) { | ||
| // check if all requirements are matched | ||
| // as search terms with length < 3 are discarded | ||
| const filteredTermCount = [...searchTerms].filter( | ||
| (term) => term.length > 2, | ||
| ).length; | ||
| if ( | ||
| wordList.length !== searchTerms.size | ||
| && wordList.length !== filteredTermCount | ||
| ) | ||
| continue; | ||
| // ensure that none of the excluded terms is in the search result | ||
| if ( | ||
| [...excludedTerms].some( | ||
| (term) => | ||
| terms[term] === file | ||
| || titleTerms[term] === file | ||
| || (terms[term] || []).includes(file) | ||
| || (titleTerms[term] || []).includes(file), | ||
| ) | ||
| ) | ||
| break; | ||
| // select one (max) score for the file. | ||
| const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); | ||
| // add result to the result list | ||
| results.push([ | ||
| docNames[file], | ||
| titles[file], | ||
| "", | ||
| null, | ||
| score, | ||
| filenames[file], | ||
| SearchResultKind.text, | ||
| ]); | ||
| } | ||
| return results; | ||
| }, | ||
| /** | ||
| * helper function to return a node containing the | ||
| * search summary for a given text. keywords is a list | ||
| * of stemmed words. | ||
| */ | ||
| makeSearchSummary: (htmlText, keywords, anchor) => { | ||
| const text = Search.htmlToText(htmlText, anchor); | ||
| if (text === "") return null; | ||
| const textLower = text.toLowerCase(); | ||
| const actualStartPosition = [...keywords] | ||
| .map((k) => textLower.indexOf(k.toLowerCase())) | ||
| .filter((i) => i > -1) | ||
| .slice(-1)[0]; | ||
| const startWithContext = Math.max(actualStartPosition - 120, 0); | ||
| const top = startWithContext === 0 ? "" : "..."; | ||
| const tail = startWithContext + 240 < text.length ? "..." : ""; | ||
| let summary = document.createElement("p"); | ||
| summary.classList.add("context"); | ||
| summary.textContent = | ||
| top + text.substr(startWithContext, 240).trim() + tail; | ||
| return summary; | ||
| }, | ||
| }; | ||
| _ready(Search.init); |
| /* Highlighting utilities for Sphinx HTML documentation. */ | ||
| "use strict"; | ||
| const SPHINX_HIGHLIGHT_ENABLED = true; | ||
| /** | ||
| * highlight a given string on a node by wrapping it in | ||
| * span elements with the given class name. | ||
| */ | ||
| const _highlight = (node, addItems, text, className) => { | ||
| if (node.nodeType === Node.TEXT_NODE) { | ||
| const val = node.nodeValue; | ||
| const parent = node.parentNode; | ||
| const pos = val.toLowerCase().indexOf(text); | ||
| if ( | ||
| pos >= 0 | ||
| && !parent.classList.contains(className) | ||
| && !parent.classList.contains("nohighlight") | ||
| ) { | ||
| let span; | ||
| const closestNode = parent.closest("body, svg, foreignObject"); | ||
| const isInSVG = closestNode && closestNode.matches("svg"); | ||
| if (isInSVG) { | ||
| span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | ||
| } else { | ||
| span = document.createElement("span"); | ||
| span.classList.add(className); | ||
| } | ||
| span.appendChild(document.createTextNode(val.substr(pos, text.length))); | ||
| const rest = document.createTextNode(val.substr(pos + text.length)); | ||
| parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling)); | ||
| node.nodeValue = val.substr(0, pos); | ||
| /* There may be more occurrences of search term in this node. So call this | ||
| * function recursively on the remaining fragment. | ||
| */ | ||
| _highlight(rest, addItems, text, className); | ||
| if (isInSVG) { | ||
| const rect = document.createElementNS( | ||
| "http://www.w3.org/2000/svg", | ||
| "rect", | ||
| ); | ||
| const bbox = parent.getBBox(); | ||
| rect.x.baseVal.value = bbox.x; | ||
| rect.y.baseVal.value = bbox.y; | ||
| rect.width.baseVal.value = bbox.width; | ||
| rect.height.baseVal.value = bbox.height; | ||
| rect.setAttribute("class", className); | ||
| addItems.push({ parent: parent, target: rect }); | ||
| } | ||
| } | ||
| } else if (node.matches && !node.matches("button, select, textarea")) { | ||
| node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); | ||
| } | ||
| }; | ||
| const _highlightText = (thisNode, text, className) => { | ||
| let addItems = []; | ||
| _highlight(thisNode, addItems, text, className); | ||
| addItems.forEach((obj) => | ||
| obj.parent.insertAdjacentElement("beforebegin", obj.target), | ||
| ); | ||
| }; | ||
| /** | ||
| * Small JavaScript module for the documentation. | ||
| */ | ||
| const SphinxHighlight = { | ||
| /** | ||
| * highlight the search words provided in localstorage in the text | ||
| */ | ||
| highlightSearchWords: () => { | ||
| if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight | ||
| // get and clear terms from localstorage | ||
| const url = new URL(window.location); | ||
| const highlight = | ||
| localStorage.getItem("sphinx_highlight_terms") | ||
| || url.searchParams.get("highlight") | ||
| || ""; | ||
| localStorage.removeItem("sphinx_highlight_terms"); | ||
| // Update history only if '?highlight' is present; otherwise it | ||
| // clears text fragments (not set in window.location by the browser) | ||
| if (url.searchParams.has("highlight")) { | ||
| url.searchParams.delete("highlight"); | ||
| window.history.replaceState({}, "", url); | ||
| } | ||
| // get individual terms from highlight string | ||
| const terms = highlight | ||
| .toLowerCase() | ||
| .split(/\s+/) | ||
| .filter((x) => x); | ||
| if (terms.length === 0) return; // nothing to do | ||
| // There should never be more than one element matching "div.body" | ||
| const divBody = document.querySelectorAll("div.body"); | ||
| const body = divBody.length ? divBody[0] : document.querySelector("body"); | ||
| window.setTimeout(() => { | ||
| terms.forEach((term) => _highlightText(body, term, "highlighted")); | ||
| }, 10); | ||
| const searchBox = document.getElementById("searchbox"); | ||
| if (searchBox === null) return; | ||
| searchBox.appendChild( | ||
| document | ||
| .createRange() | ||
| .createContextualFragment( | ||
| '<p class="highlight-link">' | ||
| + '<a href="javascript:SphinxHighlight.hideSearchWords()">' | ||
| + _("Hide Search Matches") | ||
| + "</a></p>", | ||
| ), | ||
| ); | ||
| }, | ||
| /** | ||
| * helper function to hide the search marks again | ||
| */ | ||
| hideSearchWords: () => { | ||
| document | ||
| .querySelectorAll("#searchbox .highlight-link") | ||
| .forEach((el) => el.remove()); | ||
| document | ||
| .querySelectorAll("span.highlighted") | ||
| .forEach((el) => el.classList.remove("highlighted")); | ||
| localStorage.removeItem("sphinx_highlight_terms"); | ||
| }, | ||
| initEscapeListener: () => { | ||
| // only install a listener if it is really needed | ||
| if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; | ||
| document.addEventListener("keydown", (event) => { | ||
| // bail for input elements | ||
| if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) | ||
| return; | ||
| // bail with special keys | ||
| if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) | ||
| return; | ||
| if ( | ||
| DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS | ||
| && event.key === "Escape" | ||
| ) { | ||
| SphinxHighlight.hideSearchWords(); | ||
| event.preventDefault(); | ||
| } | ||
| }); | ||
| }, | ||
| }; | ||
| _ready(() => { | ||
| /* Do not call highlightSearchWords() when we are on the search page. | ||
| * It will highlight words from the *previous* search query. | ||
| */ | ||
| if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); | ||
| SphinxHighlight.initEscapeListener(); | ||
| }); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| @charset "UTF-8"; | ||
| /*! sphinx-book-theme CSS | ||
| * BSD 3-Clause License | ||
| * Copyright (c) 2020, EBP | ||
| * All rights reserved. | ||
| * | ||
| * This follows the 7-1 pattern described here: | ||
| * https://sass-guidelin.es/#architecture | ||
| */html[data-theme=dark],html[data-theme=light]{--pst-font-size-base:none;--pst-color-secondary:#e89217}html[data-theme=light]{--sbt-color-announcement:#616161;--pst-color-primary:#176de8}html[data-theme=dark]{--pst-color-primary:#528fe4;--sbt-color-announcement:#616161;--pst-color-background:#121212}html{scroll-padding-top:4rem}.sbt-scroll-pixel-helper{height:0;left:0;position:absolute;top:0;width:0}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}.noprint{display:none!important}}.bd-article-container h1,.bd-article-container h2,.bd-article-container h3,.bd-article-container h4,.bd-article-container h5,.bd-article-container p.caption{color:var(--pst-color-muted)}.bd-article-container h1,.bd-article-container h2{font-weight:500}a.brackets:before{color:inherit;font-family:inherit;margin-right:0}table{position:relative}@media print{.bd-main .bd-content{height:auto;margin-left:2rem}.bd-main .bd-content #jb-print-docs-body{margin-left:0}.bd-main .bd-content #jb-print-docs-body h1{font-size:3em;margin-bottom:0;text-align:center}.bd-main .bd-content .bd-article{padding-top:0}.bd-main .bd-content .bd-article h1:first-of-type{display:none}.bd-main .bd-content .container{min-width:0!important}.bd-main .bd-content h1{margin-bottom:1em;margin-top:1em}.bd-main .bd-content h1,.bd-main .bd-content h2,.bd-main .bd-content h3,.bd-main .bd-content h4{break-after:avoid;color:#000}.bd-main .bd-content table{break-inside:avoid}.bd-main .bd-content pre{word-wrap:break-word}.bd-main .bd-content a.headerlink{display:none}.bd-main .bd-content aside.margin,.bd-main .bd-content aside.sidebar,.bd-main .bd-content blockquote.epigraph{border:none}.bd-main .bd-content .footer{margin-top:1em}.bd-main .bd-content #jb-print-toc{margin-bottom:1.5rem;margin-left:0}.bd-main .bd-content #jb-print-toc .section-nav{border-left:0!important;list-style-type:disc!important;margin-left:3em!important}.bd-main .bd-content #jb-print-toc .section-nav a{text-decoration:none!important}.bd-main .bd-content #jb-print-toc .section-nav li{display:list-item!important}.bd-main .bd-content #jb-print-toc .section-nav .nav{display:none}.bd-main .bd-footer-content{display:none!important}}.bd-header-announcement{background-color:var(--sbt-color-announcement);color:#fff}.bd-main .bd-content{justify-content:left}.bd-main .bd-content .bd-article-container{min-width:0;overflow-x:unset;padding:0}@media (min-width:1200px){.bd-main .bd-content .bd-article-container{max-width:calc(100% - var(--pst-sidebar-secondary))}}.bd-main .bd-content .bd-article-container .bd-article{padding-left:2rem;padding-right:2rem}@media (max-width:768px){.bd-main .bd-content .bd-article-container .bd-article{padding-left:1rem;padding-right:1rem}}.bd-main .bd-content .bd-article-container details.above-input summary,.bd-main .bd-content .bd-article-container details.below-input summary{border-left:3px solid var(--pst-color-primary)} | ||
| /*! sphinx-book-theme CSS | ||
| * BSD 3-Clause License | ||
| * Copyright (c) 2020, EBP | ||
| * All rights reserved. | ||
| * | ||
| * This follows the 7-1 pattern described here: | ||
| * https://sass-guidelin.es/#architecture | ||
| */@media (min-width:768px){button.sidebar-toggle.primary-toggle{display:inline-block}}@media (max-width:768px){button.sidebar-toggle.primary-toggle{margin-bottom:0}}@media (min-width:1200px){button.sidebar-toggle.secondary-toggle{display:none}}@media (max-width:768px){button.sidebar-toggle.secondary-toggle{margin-bottom:0}}.bd-header-article{align-items:center;background-color:var(--pst-color-background);display:flex;font-size:.9em;padding:0 1rem;position:sticky;top:0;transition:left .2s;z-index:1020}@media (max-width:768px){.bd-header-article{height:3.5rem;padding:0 .5rem}}.scrolled .bd-header-article{box-shadow:0 6px 6px -6px var(--pst-color-shadow)}.bd-header-article .header-article__inner{padding:0}.bd-header-article .header-article-items{align-items:center;display:flex;height:3rem;width:100%}.bd-header-article .header-article-item{align-items:center;display:flex}.bd-header-article .article-header-buttons{display:flex}.bd-header-article .btn{align-items:center;border:none;color:var(--pst-color-text-muted);display:flex;font-size:1.3rem;padding-left:.5rem;padding-right:.5rem}.bd-header-article .btn svg{width:1.3rem}.bd-header-article .btn.show,.bd-header-article .btn:hover{border:none;color:var(--pst-color-text-base)}.bd-header-article .btn.show+.dropdown-menu,.bd-header-article .btn:hover+.dropdown-menu{display:block}.bd-header-article .btn:focus{box-shadow:none}.bd-header-article .btn.dropdown-toggle:after{display:none}.bd-header-article div.dropdown{align-items:center;display:flex}.bd-header-article .theme-switch-button{margin:0}.bd-header-article .theme-switch-button button,.bd-header-article .theme-switch-button i,.bd-header-article .theme-switch-button span{padding:0}.bd-header-article .theme-switch-button i,.bd-header-article .theme-switch-button span{transition:color .25s ease-out}.bd-header-article .theme-switch-button:active,.bd-header-article .theme-switch-button:hover{background-color:unset!important}.bd-header-article .theme-switch-button:active i,.bd-header-article .theme-switch-button:active span,.bd-header-article .theme-switch-button:hover i,.bd-header-article .theme-switch-button:hover span{color:var(--pst-color-text-base)}.bd-header-article .dropdown-menu{background-color:var(--pst-color-background);border-color:var(--pst-color-border);box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;color:var(--pst-color-text-muted);top:2rem;transform:translateX(-75%)}.bd-header-article .dropdown-menu:hover{display:block}.bd-header-article .dropdown-menu .dropdown-item{align-items:center;display:inline-flex;font-size:1em;padding-left:.5em}.bd-header-article .dropdown-menu .dropdown-item:hover{background-color:initial;color:var(--pst-color-text-base);text-decoration:none}.bd-header-article .dropdown-menu .dropdown-item span img{height:1em}.bd-header-article .dropdown-menu .dropdown-item span.btn__icon-container{align-items:center;display:inline-flex;justify-content:center;width:1.7em}.bd-header{position:inherit}.bd-header button.sidebar-toggle{display:none}.bd-sidebar-primary{max-height:100vh;padding:1rem;top:0;transition:margin-left .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s}@media (max-width:768px){.bd-sidebar-primary{z-index:1081}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}@media (min-width:992px){.bd-sidebar-primary{flex-basis:20%}input#pst-primary-sidebar-checkbox:checked~.bd-container .bd-sidebar-primary{margin-left:-20%;opacity:0;visibility:hidden}}.bd-sidebar-secondary{top:0}@media (max-width:1200px){.bd-sidebar-secondary{z-index:1081}}.bd-sidebar-secondary .sidebar-secondary-items{display:flex;gap:.5rem;padding:0}.bd-sidebar-secondary .sidebar-secondary-items .sidebar-secondary-item{padding-bottom:0;padding-top:0}.bd-sidebar-secondary .onthispage{align-items:center;color:var(--pst-color-muted);display:flex;gap:.5rem;height:3rem;margin:0;min-height:3rem}@media (min-width:1200px){.bd-sidebar-secondary{background:var(--pst-color-background);height:fit-content;padding:0;transition:max-height .4s ease;z-index:2}.bd-sidebar-secondary .toc-item{border-left-color:var(--pst-color-surface);padding-top:0}.bd-sidebar-secondary .toc-item nav.page-toc{margin-bottom:0;transition:opacity .4s ease}.bd-sidebar-secondary.hide:not(:hover){max-height:3rem;overflow-y:hidden}.scrolled .bd-sidebar-secondary.hide:not(:hover){box-shadow:0 6px 6px -6px rgba(0,0,0,.3)}.bd-sidebar-secondary.hide:not(:hover) .onthispage:after{content:"\f107";font-family:Font Awesome\ 5 Free;font-weight:900;opacity:1;padding-left:.5em;transition:opacity .3s ease}.bd-sidebar-secondary.hide:not(:hover) nav.page-toc{opacity:0}}footer{font-size:var(--sbt-font-size-small-1)}footer.bd-footer-content{border-top:1px solid #ccc;display:flex;flex-wrap:wrap;font-size:87.5%;padding:15px}footer.bd-footer-content .bd-footer-content__inner{padding-left:0}footer.bd-footer-content .bd-footer-content__inner p{margin-bottom:0}.bd-footer-article{padding:0 1rem}@media (max-width:768px){.bd-footer-article{padding:0 .5rem}}#pst-back-to-top{font-size:.8rem}@media (min-width:1200px){#pst-back-to-top{display:none!important}}.bd-sidebar-primary .navbar-icon-links{column-gap:.5rem}.bd-sidebar-primary .navbar-icon-links .nav-link i,.bd-sidebar-primary .navbar-icon-links .nav-link span{font-size:1.2rem}.bd-sidebar-primary .navbar-icon-links .nav-link img{font-size:.8rem}.navbar-brand{flex-direction:column;gap:.25rem;height:unset;justify-content:center;max-height:unset}.navbar-brand:hover{text-decoration:none}.navbar-brand .logo__title{font-size:1.25rem;text-align:center;white-space:normal}.navbar-brand .logo__image{height:unset}.bd-search-container{margin:2em}.bd-search-container #search-results h2:first-child{display:none}.search-button-field{display:none;font-size:.9rem;width:100%}.search-button-field .search-button__kbd-shortcut{margin-left:auto}@media (min-width:992px){.search-button{display:none!important}.search-button-field{display:flex}}div#searchbox{padding-left:2rem;padding-right:2rem}@media (max-width:768px){div#searchbox{padding-left:1rem;padding-right:1rem}}@media (min-width:768px){div#searchbox p.highlight-link{margin-left:0}div#searchbox p.highlight-link a{font-size:1rem}}img{max-width:100%}img.align-center{display:block;margin-left:auto;margin-right:auto}img.align-left{clear:left;float:left;margin-right:1em}img.align-right{clear:right;float:right;margin-left:1em}div.figure{margin-bottom:1em;text-align:center;width:100%}div.figure.align-left{text-align:left}div.figure.align-left p.caption{margin-left:0}div.figure.align-right{text-align:right}div.figure.align-right p.caption{margin-right:0}div.figure p.caption{margin:.5em 10%}div.figure.margin p.caption,div.figure.margin-caption p.caption{margin:.5em 0}div.figure.margin-caption p.caption{text-align:left}div.figure span.caption-number{font-weight:700}div.figure span{font-size:.9rem}label.margin-toggle{margin-bottom:0}label.margin-toggle.marginnote-label{display:none}label.margin-toggle sup{user-select:none}@media (max-width:992px){label.margin-toggle{color:#0071bc;cursor:pointer}label.margin-toggle.marginnote-label{display:inline}label.margin-toggle.marginnote-label:after{content:"⊕"}}input.margin-toggle{display:none}@media (max-width:992px){input.margin-toggle:checked+.marginnote,input.margin-toggle:checked+.sidenote{clear:both;display:block;float:left;left:1rem;margin:1rem 2.5%;position:relative;width:95%}}span.marginnote,span.sidenote{background-color:unset;border-left:none;float:right;font-size:.9em;margin-left:.5rem;position:relative;width:40%;z-index:2}@media (min-width:992px),print{span.marginnote,span.sidenote{clear:right;margin:0 -36% 0 0;width:33%}span.marginnote p.sidebar-title,span.sidenote p.sidebar-title{border-bottom:none;margin-bottom:-1rem;padding-left:0}span.marginnote p.sidebar-title~*,span.sidenote p.sidebar-title~*{padding-left:0;padding-right:0}}span.marginnote sup,span.sidenote sup{user-select:none}@media (max-width:992px){span.marginnote,span.sidenote{display:none}}aside.sidebar .note{margin:1rem;padding:0 0 1rem}aside.sidebar .admonition-title{margin:0 -1rem 0 0}aside.sidebar.margin .sidebar-title:empty{display:none}aside.sidebar.margin .admonition{margin:.5rem;padding-left:0;padding-right:0}aside.sidebar.margin .admonition .admonition-title{margin-left:0;margin-right:0}@media (min-width:992px){aside.sidebar.margin{border:none}aside.sidebar.margin .admonition{margin:1rem 0;padding:0 0 1rem}}.cell.tag_margin,.cell.tag_popout,.margin.docutils.container,aside.margin,div.margin,figure.margin{background-color:unset;float:right;font-size:.9em;margin-left:.5rem;position:relative;width:40%;z-index:2}@media (min-width:992px),print{.cell.tag_margin,.cell.tag_popout,.margin.docutils.container,aside.margin,div.margin,figure.margin{clear:right;margin:0 -36% 0 0;width:33%}.cell.tag_margin p.sidebar-title,.cell.tag_popout p.sidebar-title,.margin.docutils.container p.sidebar-title,aside.margin p.sidebar-title,div.margin p.sidebar-title,figure.margin p.sidebar-title{border-bottom:none;margin-bottom:-1rem;padding-left:0}.cell.tag_margin p.sidebar-title~*,.cell.tag_popout p.sidebar-title~*,.margin.docutils.container p.sidebar-title~*,aside.margin p.sidebar-title~*,div.margin p.sidebar-title~*,figure.margin p.sidebar-title~*{padding-left:0;padding-right:0}}.cell.tag_margin div.cell.tag_margin .cell_output,.cell.tag_popout div.cell.tag_margin .cell_output,.margin.docutils.container div.cell.tag_margin .cell_output,aside.margin div.cell.tag_margin .cell_output,div.margin div.cell.tag_margin .cell_output,figure.margin div.cell.tag_margin .cell_output{padding-left:0}div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{background-color:unset;float:right;font-size:.9em;margin-left:.5rem;position:relative;width:40%;z-index:2}@media (min-width:992px),print{div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{clear:right;margin:0 -36% 0 0;width:33%}div.figure.margin-caption figcaption p.sidebar-title,div.figure.margin-caption p.caption p.sidebar-title,figure.margin-caption figcaption p.sidebar-title{border-bottom:none;margin-bottom:-1rem;padding-left:0}div.figure.margin-caption figcaption p.sidebar-title~*,div.figure.margin-caption p.caption p.sidebar-title~*,figure.margin-caption figcaption p.sidebar-title~*{padding-left:0;padding-right:0}}.margin-caption figcaption{text-align:left}div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{position:relative;z-index:2}@media (min-width:992px){div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{max-width:136%;width:136%}}blockquote.epigraph,blockquote.highlights,blockquote.pull-quote{background-color:var(--pst-color-background);border-left:none;font-size:1.25em}blockquote div>p+p.attribution{color:#6c757d;font-size:.9em;font-style:normal;padding-right:2em;text-align:right}div[class*=highlight-],pre{clear:none}div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-input div.cell_input,div.cell.tag_scroll-output div.cell_output{max-height:24em;overflow-y:auto}@media only print{div.utterances,hypothesis-sidebar{display:none}}.thebelab-cell{border:none!important;margin-right:.5em!important}.thebelab-cell .thebelab-input{padding-left:10px!important}.cell.docutils.container{padding-right:0!important}button.thebe-launch-button{font-size:1em;height:2.5em} | ||
| /*# sourceMappingURL=sphinx-book-theme.css.map*/ |
| {"version":3,"file":"styles/sphinx-book-theme.css","mappings":"AAqEE,gBC2mBF;AAhrBA;;;;;;;EAAA,CC0CA,6CAGE,yBAA0B,CAG1B,6BDlBF,CCuBA,uBAEE,gCAAyC,CAEzC,2BDtBF,CCyBA,sBAEE,2BAA4B,CAG5B,gCAAyC,CAEzC,8BD1BF,CEpCA,KAIE,uBFuCF,CEhCA,yBAGE,QAAW,CAEX,MAAO,CAJP,iBAAkB,CAGlB,KAAM,CAFN,OFyCF,CE1BA,gBACE,YFoCF,CElCE,aAHF,WAII,uBFqCF,CEhCF,SAEI,sBFoCF,CALF,CGtEE,6JAME,4BHkFJ,CG9EE,kDAEE,eHgFJ,CG3EA,kBACE,aAAc,CACd,mBAAoB,CACpB,cH8EF,CG3EA,MACE,iBH8EF,CIxGA,aAEI,qBAEE,WAAY,CADZ,gBJ8GJ,CI3GI,yCACE,aJ6GN,CI3GM,4CACE,aAAc,CAEd,eAAgB,CADhB,iBJ8GR,CIzGI,iCACE,aJ2GN,CIxGM,kDACE,YJ0GR,CIrGI,gCACE,qBJuGN,CInGI,wBAEE,iBAAkB,CADlB,cJsGN,CInGI,gGAIE,iBAAkB,CAClB,UJqGN,CIlGI,2BACE,kBJoGN,CIjGI,yBACE,oBJmGN,CIhGI,kCACE,YJkGN,CI9FI,8GAGE,WJgGN,CI7FI,6BACE,cJ+FN,CI5FI,mCACE,oBAAqB,CACrB,aJ8FN,CI7FM,gDACE,uBAA2B,CAC3B,8BAAgC,CAChC,yBJ+FR,CI9FQ,kDACE,8BJgGV,CI9FQ,mDACE,2BJgGV,CI9FQ,qDACE,YJgGV,CIzFE,4BACE,sBJ2FJ,CACF,CKvLA,wBACE,8CAA+C,CAC/C,ULyLF,CM3LA,qBAEE,oBN6LF,CO7LA,2CAME,WAAY,CAFZ,gBAAiB,CAFjB,SPiMF,CO3LE,0BARF,2CAUI,mDP6LF,CACF,CO3LE,uDAEE,iBAAkB,CADlB,kBP8LJ,CO5LI,yBAHF,uDAKI,iBAAkB,CADlB,kBPgMJ,CACF,CO3LI,8IACE,8CP8LN;;AAxNA;;;;;;;EAAA,CQqBE,yBADF,qCAEI,oBRyNF,CACF,CQxNE,yBAJF,qCAKI,eR2NF,CACF,CQtNE,0BADF,uCAEI,YR0NF,CACF,CQzNE,yBAJF,uCAKI,eR4NF,CACF,CQxNA,mBAEE,kBAAmB,CAGnB,4CAA6C,CAJ7C,YAAa,CAMb,cAAgB,CAChB,cAAe,CALf,eAAgB,CAChB,KAAM,CAEN,mBAAqB,CAGrB,YR8NF,CQpQE,yBA6BF,mBA5BI,cA2CA,eR4NF,CACF,CQzNE,6BACE,iDRgOJ,CQ5NE,0CACE,SR8NJ,CQ1NE,yCAEE,kBAAmB,CADnB,YAAa,CAEb,WP7CoB,CO8CpB,UR4NJ,CQxNE,wCAEE,kBAAmB,CADnB,YR2NJ,CQnNE,2CACE,YRqNJ,CQjNE,wBAUE,kBAAmB,CANnB,WAAY,CADZ,iCAAkC,CAMlC,YAAa,CAPb,gBAAiB,CAGjB,kBAAoB,CACpB,mBRoNJ,CQ7MI,4BACE,YR+MN,CQ3MI,2DAGE,WAAY,CADZ,gCR6MN,CQ3MM,yFACE,aR6MR,CQ1MI,8BACE,eR4MN,CQvMM,8CACE,YRyMR,CQnME,gCAEE,kBAAmB,CADnB,YRsMJ,CQlME,wCAEE,QRmMJ,CQhMI,sIAGE,SRkMN,CQ9LI,uFAEE,8BRgMN,CQ9LI,6FAEE,gCR+LN,CQ9LM,wMAEE,gCRiMR,CQ3LE,kCAaE,4CAA6C,CAD7C,oCAAqC,CC1JvC,+FACE,CD2JA,iCAAkC,CAPlC,QAAS,CACT,0BR2LJ,CQjMI,wCACE,aRmMN,CQtLI,iDAEE,kBAAmB,CADnB,mBAAoB,CAYpB,aAAc,CAVd,iBRyLN,CQtLM,uDAEE,wBAAyB,CACzB,gCAAiC,CAFjC,oBR0LR,CQjLM,0DACE,URmLR,CQhLM,0EAEE,kBAAmB,CACnB,mBAAoB,CACpB,sBAAuB,CAHvB,WRqLR,CU5XA,WAEE,gBV8XF,CU1XE,iCACE,YV4XJ,CW7XA,oBAGE,gBAAiB,CAGjB,YAAa,CAJb,KAAM,CAON,gFX8XF,CWzXE,yBAdF,oBAgBI,YX2XF,CACF,CWxXE,kDACE,eX0XJ,CWtXE,yBAzBF,oBA0BI,cXyXF,CWjXA,6EAGE,iBAEA,SAAU,CADV,iBXqXF,CAPF,CYpZA,sBAEE,KZgaF,CY9ZE,0BAJF,sBAMI,YZgaF,CACF,CY7ZE,+CAEE,YAAa,CACb,SAAW,CAFX,SZiaJ,CY5ZI,uEAEE,gBAAiB,CADjB,aZ+ZN,CYzZE,kCAKE,kBAAmB,CAEnB,4BAA6B,CAJ7B,YAAa,CACb,SAAW,CAHX,WXHoB,CWQpB,QAAS,CAJT,eZgaJ,CYvZE,0BAlCF,sBAmCI,sCAAuC,CACvC,kBAAmB,CAOnB,SAAU,CANV,8BAAgC,CAGhC,SZyZF,CYnZE,gCAEE,0CAA2C,CAE3C,aZmZJ,CYhZI,6CAEE,eAAgB,CAGhB,2BZ+YN,CYzYE,uCAEE,eX7CkB,CW8ClB,iBZ0YJ,CYvYI,iDACE,wCZyYN,CYrYI,yDAEE,eAAgB,CAChB,gCAAkC,CAClC,eAAgB,CAHhB,SAAU,CAIV,iBAAmB,CACnB,2BZuYN,CYnYI,oDACE,SZqYN,CACF,Ca7dA,OACE,sCbmeF,CaleE,yBAIE,yBAA0B,CAH1B,YAAa,CACb,cAAe,CAGf,eZyBoB,CY3BpB,YbseJ,CaneI,mDACE,cbqeN,CapeM,qDACE,ebseR,CcpfA,mBACE,cdufF,CctfE,yBAFF,mBAII,edwfF,CACF,Ce7fA,iBAEE,ef+fF,Ce1fE,0BAPF,iBAQI,sBf6fF,CACF,CgBpgBE,uCACE,gBhB0gBJ,CgBtgBM,yGAEE,gBhBwgBR,CgBpgBM,qDACE,ehBsgBR,CiBthBA,cAKE,qBAAsB,CAEtB,UAAY,CANZ,YAAa,CAKb,sBAAuB,CAJvB,gBjB4hBF,CiBphBE,oBACE,oBjBshBJ,CiBphBE,2BACE,iBAAkB,CAElB,iBAAkB,CADlB,kBjBuhBJ,CiBnhBE,2BACE,YjBqhBJ,CkBtiBA,qBACE,UlByiBF,CkBtiBI,oDACE,YlBwiBN,CkBliBA,qBAIE,YAAa,CAFb,eAAiB,CADjB,UlBuiBF,CkBliBE,kDACE,gBlBoiBJ,CkB/hBA,yBACE,eACE,sBlBkiBF,CkB/hBA,qBACE,YlBiiBF,CACF,CkB5hBA,cAEE,iBAAkB,CADlB,kBlB+hBF,CkB7hBE,yBAHF,cAKI,iBAAkB,CADlB,kBlBiiBF,CACF,CkB5hBI,yBAFF,+BAGI,alB+hBJ,CkB9hBI,iCACE,clBgiBN,CACF,CmBnlBA,IACE,cnBslBF,CmBplBE,iBAGE,aAAc,CAFd,gBAAiB,CACjB,iBnBulBJ,CmBnlBE,eACE,UAAW,CACX,UAAW,CACX,gBnBqlBJ,CmBllBE,gBACE,WAAY,CACZ,WAAY,CACZ,enBolBJ,CmB/kBA,WAEE,iBAAkB,CAClB,iBAAkB,CAFlB,UnBolBF,CmBhlBE,sBACE,enBklBJ,CmBjlBI,gCACE,anBmlBN,CmBhlBE,uBACE,gBnBklBJ,CmBjlBI,iCACE,cnBmlBN,CmB/kBE,qBACE,enBilBJ,CmB5kBI,gEACE,anB8kBN,CmB1kBE,oCACE,enB4kBJ,CmBzkBE,+BACE,enB2kBJ,CmBxkBE,gBACE,enB0kBJ,CD3kBA,oBACE,eCgmBF,CD/lBE,qCACE,YCimBJ,CD/lBE,wBACE,gBCimBJ,CD/lBE,yBARF,oBAUI,aAAuB,CADvB,cCmmBF,CDjmBE,qCACE,cCmmBJ,CDlmBI,2CACE,WComBN,CACF,CD/lBA,oBACE,YCkmBF,CDjmBE,yBACE,8EAKE,UAAW,CAHX,aAAc,CACd,UAAW,CACX,SAAU,CAGV,gBAAiB,CACjB,iBAAkB,CAFlB,SComBJ,CACF,CD9lBA,8BAlEE,sBAAuB,CAsEvB,gBAAiB,CAvEjB,WAAY,CAEZ,cAAgB,CAChB,iBAAmB,CAmEnB,iBAAkB,CAvElB,SAAU,CAsEV,SCwmBF,CDvqBE,+BA6DF,8BAxDI,WAAY,CAHZ,kBADA,SC6qBF,CDvqBE,8DAEE,kBAAmB,CADnB,mBAAoB,CAEpB,cC0qBJ,CDvqBI,kEACE,cAAiB,CACjB,eC0qBN,CACF,CDvnBE,sCACE,gBC0nBJ,CDxnBE,yBATF,8BAUI,YC4nBF,CACF,CDxnBE,oBAEE,WAAY,CACZ,gBC0nBJ,CDvnBE,gCACE,kBCynBJ,CD9mBE,0CACE,YCqnBJ,CD/mBE,iCACE,YAAc,CACd,cAAe,CACf,eCinBJ,CD9mBI,mDACE,aAAc,CACd,cCgnBN,CD5mBE,yBAtBF,qBAwBI,WC8mBF,CD3mBE,iCACE,aAAiB,CACjB,gBC6mBJ,CACF,CDzmBA,mGAlIE,sBAAuB,CADvB,WAAY,CAEZ,cAAgB,CAChB,iBAAmB,CAuInB,iBAAkB,CA3IlB,SAAU,CA0IV,SCknBF,CDrvBE,+BA6HF,mGAxHI,WAAY,CAHZ,kBADA,SC+vBF,CDzvBE,mMAEE,kBAAmB,CADnB,mBAAoB,CAEpB,cCgwBJ,CD7vBI,+MACE,cAAiB,CACjB,eCowBN,CACF,CD5oBE,ySACE,cCmpBJ,CD9oBA,0GAnJE,sBAAuB,CADvB,WAAY,CAEZ,cAAgB,CAChB,iBAAmB,CAqJnB,iBAAkB,CAzJlB,SAAU,CAwJV,SCupBF,CDxyBE,+BA8IF,0GAzII,WAAY,CAHZ,kBADA,SC+yBF,CDzyBE,0JAEE,kBAAmB,CADnB,mBAAoB,CAEpB,cC6yBJ,CD1yBI,gKACE,cAAiB,CACjB,eC8yBN,CACF,CDvqBA,2BACE,eC0qBF,CDhqBA,8EAKE,iBAAkB,CADlB,SCuqBF,CDrqBE,yBANF,8EAOI,cATsB,CAUtB,UC2qBF,CACF,CoBr3BE,gEAKE,4CAA6C,CAD7C,gBAAiB,CADjB,gBpB23BJ,CoBt3BE,+BAIE,aAAc,CAFd,cAAgB,CADhB,iBAAkB,CAIlB,iBAAkB,CAFlB,gBpB03BJ,CqBz4BA,2BAEE,UrB44BF,CsBx4BA,+HACE,eAAgB,CAChB,etBi5BF,CuBn5BA,kBACE,kCAEE,YvB45BF,CACF,CwBn6BA,eACE,qBAAuB,CACvB,2BxBy6BF,CwBt6BA,+BACE,2BxBy6BF,CwBt6BA,yBACE,yBxBy6BF,CwBt6BA,2BAEE,aAAc,CADd,YxB06BF","sources":["webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_margin.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/index.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/abstracts/_variables.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/base/_base.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/base/_typography.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/base/_print.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_announcement.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_article.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_article-container.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_header-article.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/abstracts/_mixins.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_header-primary.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_sidebar-primary.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_sidebar-secondary.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_footer-content.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_footer-article.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_back-to-top.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_icon-links.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_logo.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_search.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_images.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_quotes.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_code.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_notebooks.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/extensions/_comments.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/extensions/_thebe.scss"],"sourcesContent":["@use \"../abstracts/variables\";\n\n/**\n * Margin content\n * This is the area to the right of the main content\n * normally covered by the in-page table of contents\n * but if `.margin` classes are present, it shows up to the right in the margin\n * and the in-page TOC is hidden.\n * On narrow screens, margin content behaves like a sidebar\n */\n\n/**\n * Variables for calculating margin widths\n */\n// We want our margin content to be 1/3 the width of the main page content\n// after factoring in a small margin\n$margin-width-relative-to-content: 36%;\n$margin-gutter: 3%;\n$margin-width-width-gutter: $margin-width-relative-to-content - $margin-gutter;\n\n// re-subtract the gutter width because we want it to leave a white-space\n// This is how much to offset the margin content.\n$margin-offset: -$margin-width-relative-to-content;\n\n/**\n * This mixin will cause something to \"pop out\" to the margin on wide screens\n */\n@mixin margin-content() {\n // On narrow screens this is the width of margin content\n width: 40%;\n float: right;\n background-color: unset;\n font-size: 0.9em;\n margin-left: 0.5rem;\n\n // Wide screens and printing should force margin behavior\n @media (min-width: variables.$breakpoint-lg), print {\n width: $margin-width-width-gutter;\n margin: 0 $margin-offset 0 0;\n\n // Prevent sequential margin content from overlapping\n clear: right;\n\n p.sidebar-title {\n margin-bottom: -1rem;\n border-bottom: none;\n padding-left: 0px;\n\n // Content of admonitions has fewer horizontal white space to save space\n ~ * {\n padding-left: 0px;\n padding-right: 0px;\n }\n }\n }\n}\n\n/**\n * Sidenotes and marginnotes\n * over-rides the \"footnote\" behavior to pop out to the margin instead.\n */\nlabel.margin-toggle {\n margin-bottom: 0em;\n &.marginnote-label {\n display: none;\n }\n sup {\n user-select: none;\n }\n @media (max-width: variables.$breakpoint-lg) {\n cursor: pointer;\n color: rgb(0, 113, 188);\n &.marginnote-label {\n display: inline;\n &:after {\n content: \"\\2295\";\n }\n }\n }\n}\n\ninput.margin-toggle {\n display: none;\n @media (max-width: variables.$breakpoint-lg) {\n &:checked + .sidenote,\n &:checked + .marginnote {\n display: block;\n float: left;\n left: 1rem;\n clear: both;\n width: 95%;\n margin: 1rem 2.5%;\n position: relative;\n }\n }\n}\n\nspan.sidenote,\nspan.marginnote {\n z-index: variables.$zindex-middle;\n position: relative;\n border-left: none;\n @include margin-content();\n sup {\n user-select: none;\n }\n @media (max-width: variables.$breakpoint-lg) {\n display: none;\n }\n}\n\naside.sidebar {\n .note {\n // styling for notes inside sidebars\n margin: 1rem;\n padding: 0rem 0rem 1rem 0rem;\n }\n // The titles sticking\n .admonition-title {\n margin: 0rem -1rem 0rem 0rem;\n }\n}\n\n/**\n * Sidebar content in the margin.\n * This will be added by the `margin` directive or the `sidebar` directive\n */\naside.sidebar.margin {\n // Margin content can have an empty title so this prevents an empty title block\n // from showing up on mobile\n .sidebar-title:empty {\n display: none;\n }\n\n // On narrow screens padding is added to all sidebar content\n // This replaces padding w/ margin for admonitions because padding is used\n // for the title background color\n .admonition {\n margin: 0.5rem;\n padding-left: 0;\n padding-right: 0;\n\n // Remove the title margin so it\n .admonition-title {\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n @media (min-width: variables.$breakpoint-lg) {\n // No border for margin sidebars on wide screen\n border: none;\n\n // Admonitions don't need the extra whitespace in the margin\n .admonition {\n margin: 1rem 0rem;\n padding: 0rem 0rem 1rem 0rem;\n }\n }\n}\n\ndiv.margin,\nfigure.margin,\naside.margin,\n.margin.docutils.container,\n.cell.tag_popout,\n.cell.tag_margin {\n z-index: variables.$zindex-middle;\n position: relative;\n @include margin-content();\n\n // Make cell outputs take up more space if they're in the margin\n div.cell.tag_margin .cell_output {\n padding-left: 0;\n }\n}\n\n// A few permutations because docutils 0.18 switched to semantic tags\ndiv.figure.margin-caption p.caption,\ndiv.figure.margin-caption figcaption,\nfigure.margin-caption figcaption {\n z-index: variables.$zindex-middle;\n position: relative;\n @include margin-content();\n}\n\n// Margin captions\n.margin-caption figcaption {\n text-align: left;\n}\n\n/**\n * Full width content\n */\n\n// Grow 100% by the ratio of the margin to the content width.\n$content-fullwidth-width: 100% + $margin-width-relative-to-content;\n\ndiv.cell.tag_full-width,\ndiv.cell.tag_full_width,\ndiv.full_width,\ndiv.full-width {\n z-index: variables.$zindex-middle;\n position: relative;\n @media (min-width: variables.$breakpoint-lg) {\n max-width: $content-fullwidth-width;\n width: $content-fullwidth-width;\n }\n}\n","/*! sphinx-book-theme CSS\n * BSD 3-Clause License\n * Copyright (c) 2020, EBP\n * All rights reserved.\n *\n * This follows the 7-1 pattern described here:\n * https://sass-guidelin.es/#architecture\n */\n// Variables and re-usable SCSS functions\n@use \"abstracts/mixins\";\n@use \"abstracts/variables\";\n\n// Basic styling applied throughout site\n@use \"base/base\";\n@use \"base/typography\";\n@use \"base/print\";\n\n// Major theme layout, skeleton, and whitespace\n@use \"sections/announcement\";\n@use \"sections/article\";\n@use \"sections/article-container\";\n@use \"sections/header-article\";\n@use \"sections/header-primary\";\n@use \"sections/sidebar-primary\";\n@use \"sections/sidebar-secondary\";\n@use \"sections/footer-content\";\n@use \"sections/footer-article\";\n\n// Re-usable components across the theme\n@use \"components/back-to-top\";\n@use \"components/icon-links\";\n@use \"components/logo\";\n@use \"components/search\";\n\n// Content blocks in standard Sphinx\n@use \"content/images\";\n@use \"content/margin\";\n@use \"content/quotes\";\n@use \"content/code\";\n@use \"content/notebooks\";\n\n// Content blocks from Sphinx extensions\n\n@use \"extensions/comments\";\n@use \"extensions/thebe\";\n","/*********************************************\n* Variables *\n*********************************************/\n// Breakpoints from Bootstrap: https://getbootstrap.com/docs/5.0/layout/breakpoints/\n$breakpoint-xxl: 1200px;\n$breakpoint-xl: 1200px;\n$breakpoint-lg: 992px;\n$breakpoint-md: 768px;\n$breakpoint-sm: 576px;\n\n// A few semantic z-indices\n$zindex-bottom: 1;\n$zindex-middle: 2;\n$zindex-top: 3;\n\n// Semantic Z-index from bootstrap. Copied here so we can re-use if needed.\n// ref: https://getbootstrap.com/docs/5.0/layout/z-index/\n$zindex-dropdown: 1000;\n$zindex-sticky: 1020;\n$zindex-fixed: 1030;\n$zindex-modal-backdrop: 1040;\n$zindex-offcanvas: 1050;\n$zindex-modal: 1060;\n$zindex-popover: 1070;\n$zindex-tooltip: 1080;\n\n// Spacing\n$header-article-height: 3rem;\n$sidebar-primary-width-widescreen: 20%;\n$toc-width-mobile: 75%;\n\n// Consistent styling for page elements\n$box-border-radius: 0.4em;\n\n$animation-time: 0.25s;\n\n// Font sizes\n$sbt-font-size-small-1: 87.5%;\n\n/**\n * Variables that aren't impacted by light/dark\n */\nhtml[data-theme=\"light\"],\nhtml[data-theme=\"dark\"] {\n // Over-ride the pydata theme so that readers can use their system base\n --pst-font-size-base: none;\n // Default secondary color (has enough contrast on both light/dark so\n // no need to special case.\n --pst-color-secondary: #e89217;\n}\n\n// Overrides for pydata sphinx theme.\n// See https://github.com/pydata/pydata-sphinx-theme/blob/master/pydata_sphinx_theme/static/css/theme.css\nhtml[data-theme=\"light\"] {\n // Announcement\n --sbt-color-announcement: rgb(97, 97, 97);\n // Default primary color (need to adjust on dark theme due to bad contrast)\n --pst-color-primary: #176de8;\n}\n\nhtml[data-theme=\"dark\"] {\n // Slightly lighten these colors to make them stand out more on dark\n --pst-color-primary: #528fe4;\n\n // Over-ride the purple announcement color\n --sbt-color-announcement: rgb(97, 97, 97);\n // Desaturate the background\n --pst-color-background: #121212;\n}\n","@use \"../abstracts/variables\";\n\n/**\n * General structural things\n */\nhtml {\n // The PyData theme value for this is based on `header-height` variable.\n // We set the variable to 0 and have our own $article-header-height SCSS variable.\n // So here we follow the same pattern but now using our variable.\n scroll-padding-top: variables.$header-article-height + 1rem;\n}\n\n/**\n* Utility classes used in a few places\n*/\n// For the helper pixel that we can watch to decide whether we've scrolled\n.sbt-scroll-pixel-helper {\n position: absolute;\n width: 0px;\n height: 0px;\n top: 0;\n left: 0;\n}\n\n// We define our own display-none class since bootstrap uses !important and we want to be able to over-ride\n.d-n {\n display: none;\n}\n\n/**\n * Printing behavior\n */\n// Only display upon printing\n.onlyprint {\n display: none;\n\n @media print {\n display: block !important;\n }\n}\n\n// Prevent an item from being printed\n.noprint {\n @media print {\n display: none !important;\n }\n}\n","/*********************************************\n* Basic text formatting and content structure *\n*********************************************/\n\n.bd-article-container {\n h1,\n h2,\n h3,\n h4,\n h5,\n p.caption {\n color: var(--pst-color-muted);\n }\n\n // Top two headers are slightly bolder\n h1,\n h2 {\n font-weight: 500;\n }\n}\n\n// counteracting pydata style on a::before, for citation style\na.brackets::before {\n color: inherit;\n font-family: inherit;\n margin-right: 0rem;\n}\n\ntable {\n position: relative;\n}\n","/*********************************************\n* Print-specific CSS *\n*********************************************/\n@media print {\n .bd-main {\n .bd-content {\n margin-left: 2rem;\n height: auto;\n // Structural elements\n #jb-print-docs-body {\n margin-left: 0rem;\n\n h1 {\n font-size: 3em;\n text-align: center;\n margin-bottom: 0;\n }\n }\n // Main content adjustments\n .bd-article {\n padding-top: 0;\n\n // The first H1 is the title, we've already displayed above\n h1:first-of-type {\n display: none;\n }\n }\n\n // HACK: Without this, some code cells take the whole width\n .container {\n min-width: 0% !important;\n }\n\n // Content\n h1 {\n margin-top: 1em;\n margin-bottom: 1em;\n }\n h1,\n h2,\n h3,\n h4 {\n break-after: avoid;\n color: black;\n }\n\n table {\n break-inside: avoid;\n }\n\n pre {\n word-wrap: break-word;\n }\n\n a.headerlink {\n display: none;\n }\n\n // Remove borders to save some ink\n blockquote.epigraph,\n aside.margin,\n aside.sidebar {\n border: none;\n }\n\n .footer {\n margin-top: 1em;\n }\n // Print-only table of contents\n #jb-print-toc {\n margin-bottom: 1.5rem;\n margin-left: 0rem;\n .section-nav {\n border-left: 0px !important;\n list-style-type: disc !important;\n margin-left: 3em !important;\n a {\n text-decoration: none !important;\n }\n li {\n display: list-item !important;\n }\n .nav {\n display: none;\n }\n }\n }\n }\n\n // Hide the footer on printing\n .bd-footer-content {\n display: none !important;\n }\n }\n}\n",".bd-header-announcement {\n background-color: var(--sbt-color-announcement);\n color: #fff;\n}\n",".bd-main .bd-content {\n // make article container left aligned in absence of sidebar\n justify-content: left;\n}\n","@use \"../abstracts/variables\";\n\n.bd-main .bd-content .bd-article-container {\n // Re-adjust padding defaults to be flush on the top and right\n padding: 0rem;\n // Unset overflow x so that sticky: top works for the article header\n overflow-x: unset;\n // prevent from overflowing the flex container\n min-width: 0;\n\n @media (min-width: variables.$breakpoint-xl) {\n // keep article at reasonable width in absence of sidebar\n max-width: calc(100% - var(--pst-sidebar-secondary));\n }\n\n .bd-article {\n padding-right: 2rem;\n padding-left: 2rem;\n @media (max-width: variables.$breakpoint-md) {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n }\n details.above-input,\n details.below-input {\n summary {\n border-left: 3px solid var(--pst-color-primary);\n }\n }\n}\n","@use \"../abstracts/mixins\";\n@use \"../abstracts/variables\";\n\n/*********************************************\n* Top Bar *\n*********************************************/\n/**\n * Mixin:\n * Header behavior on mobile\n */\n@mixin header-height-mobile {\n @media (max-width: variables.$breakpoint-md) {\n height: variables.$header-article-height + 0.5rem;\n }\n}\n\n/**\n * Sidebar toggle over-rides for PST\n */\n// Primary toggle is always visible\nbutton.sidebar-toggle.primary-toggle {\n @media (min-width: variables.$breakpoint-md) {\n display: inline-block;\n }\n @media (max-width: variables.$breakpoint-md) {\n margin-bottom: 0px;\n }\n}\n\n// Secondary toggle mimics behavior of \"persistent header\" div of PST\nbutton.sidebar-toggle.secondary-toggle {\n @media (min-width: variables.$breakpoint-xl) {\n display: none;\n }\n @media (max-width: variables.$breakpoint-md) {\n margin-bottom: 0px;\n }\n}\n\n// Wrapper container\n.bd-header-article {\n display: flex;\n align-items: center;\n position: sticky;\n top: 0;\n background-color: var(--pst-color-background);\n transition: left 0.2s;\n font-size: 0.9em;\n padding: 0 1rem;\n z-index: variables.$zindex-sticky;\n\n @include header-height-mobile;\n\n @media (max-width: variables.$breakpoint-md) {\n // Give mobile view a bit more space for text\n padding: 0 0.5rem;\n }\n\n // The box shadow that shows up when you've scrolled past the top\n .scrolled & {\n box-shadow: 0 6px 6px -6px var(--pst-color-shadow);\n }\n\n // Remove inner padding so that spacing of buttons is a bit tighter\n .header-article__inner {\n padding: 0;\n }\n\n // Inner container with items in it\n .header-article-items {\n display: flex;\n align-items: center;\n height: variables.$header-article-height;\n width: 100%;\n }\n\n // Contains the individual item components so we want it centered\n .header-article-item {\n display: flex;\n align-items: center;\n }\n\n /**\n * Buttons in the header\n */\n // A series of buttons we special-case in the theme\n .article-header-buttons {\n display: flex;\n }\n\n // Generic button styles\n .btn {\n // Basic button size\n font-size: 1.3rem;\n color: var(--pst-color-text-muted);\n border: none;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n\n // Make sure anything inside is aligned vertically\n display: flex;\n align-items: center;\n\n // Fix width of buttons so they're all the same\n svg {\n width: 1.3rem;\n }\n\n // Hover / active behavior\n &.show,\n &:hover {\n color: var(--pst-color-text-base);\n border: none;\n & + .dropdown-menu {\n display: block;\n }\n }\n &:focus {\n box-shadow: none;\n }\n\n &.dropdown-toggle {\n // Hide the bootstrap caret\n &:after {\n display: none;\n }\n }\n }\n\n // Vertically align dropdown buttons\n div.dropdown {\n display: flex;\n align-items: center;\n }\n\n .theme-switch-button {\n // Removing some special-casing that was needed in PST\n margin: 0;\n\n // Remove extra padding since it is already there between sidebar items\n span,\n i,\n button {\n padding: 0;\n }\n\n // No background on hover. Need important to over-ride the PST which uses it too.\n span,\n i {\n transition: color variables.$animation-time ease-out;\n }\n &:active,\n &:hover {\n background-color: unset !important;\n span,\n i {\n color: var(--pst-color-text-base);\n }\n }\n }\n\n // The menu that is normally hidden until you hover\n .dropdown-menu {\n // Hidden unless we are hovering\n &:hover {\n display: block;\n }\n\n // Positioning and layout of dropdown items to be standardized\n top: 2rem;\n transform: translateX(-75%);\n @include mixins.pst-box-shadow;\n\n // Color and shadowing\n border-color: var(--pst-color-border);\n background-color: var(--pst-color-background);\n color: var(--pst-color-text-muted);\n\n .dropdown-item {\n display: inline-flex;\n align-items: center;\n padding-left: 0.5em;\n\n // To prevent link underline from showing up\n &:hover {\n text-decoration: none;\n background-color: initial;\n color: var(--pst-color-text-base);\n }\n\n // Slightly smaller font for everything\n font-size: 1em;\n\n // Image icons should be the same height as <i> icons\n span img {\n height: 1em;\n }\n\n span.btn__icon-container {\n width: 1.7em;\n align-items: center;\n display: inline-flex;\n justify-content: center;\n }\n }\n }\n}\n","/*********************************************\n* SASS Mixins\n*********************************************/\n/**\n* Hide the scrollbar until the element is hovered, so keep the page clean\n* Use this sparingly because it's not a great UX pattern.\n*/\n@mixin scrollbar-on-hover() {\n &:not(:hover) {\n &::-webkit-scrollbar-thumb {\n visibility: hidden;\n }\n }\n}\n\n/**\n * The PyData Sphinx Theme box shadow rule\n * Copied here in csae we need to re-use.\n*/\n@mixin pst-box-shadow() {\n box-shadow:\n 0 0.2rem 0.5rem var(--pst-color-shadow),\n 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\n",".bd-header {\n // Turn off sticky positioning so that it scrolls\n position: inherit;\n\n // Turn these off because we'll show it in the article header\n // The primary sidebar toggle\n button.sidebar-toggle {\n display: none;\n }\n}\n","@use \"../abstracts/variables\";\n\n/*********************************************\n* Left Nav Bar *\n*********************************************/\n\n.bd-sidebar-primary {\n // So that it sticks to the top of the page instead of the header height\n top: 0;\n max-height: 100vh;\n\n // Tighter padding so the spacing is more equal\n padding: 1rem;\n\n // Draw open/close animation\n transition:\n margin-left variables.$animation-time ease 0s,\n opacity variables.$animation-time ease 0s,\n visibility variables.$animation-time ease 0s;\n\n @media (max-width: variables.$breakpoint-md) {\n // So that tooltips don't overlap\n z-index: variables.$zindex-tooltip + 1;\n }\n\n // Remove the top border since there's often no header items above\n .sidebar-primary-items__start {\n border-top: none;\n }\n\n // On wide screens we have a smaller sidebar width than PST\n @media (min-width: variables.$breakpoint-lg) {\n flex-basis: variables.$sidebar-primary-width-widescreen;\n }\n}\n\n// Default visibility for left sidebar is the reverse of what it is on mobile.\n// It is shown by default, and hidden with a click.\n// Mobile behavior is defined in the pydata sphinx theme\n@media (min-width: variables.$breakpoint-lg) {\n input#pst-primary-sidebar-checkbox:checked\n ~ .bd-container\n .bd-sidebar-primary {\n margin-left: -(variables.$sidebar-primary-width-widescreen);\n visibility: hidden;\n opacity: 0;\n }\n}\n","@use \"../abstracts/variables\";\n\n/*********************************************\n* Table of Contents (right nav bar) *\n*********************************************/\n\n.bd-sidebar-secondary {\n // So that it sticks to the top of the page instead of the header height\n top: 0;\n\n @media (max-width: variables.$breakpoint-xl) {\n // So that tooltips don't overlap\n z-index: variables.$zindex-tooltip + 1;\n }\n\n // So that we can center the TOC button with the article header buttons\n .sidebar-secondary-items {\n padding: 0;\n display: flex;\n gap: 0.5rem;\n\n // Remove the manual padding since we'll use `gap`\n .sidebar-secondary-item {\n padding-top: 0;\n padding-bottom: 0;\n }\n }\n\n // The 'on this page' title div should take up the full header\n .onthispage {\n height: variables.$header-article-height;\n min-height: variables.$header-article-height;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n color: var(--pst-color-muted);\n }\n\n // Wide screen behavior\n @media (min-width: variables.$breakpoint-xl) {\n background: var(--pst-color-background);\n height: fit-content;\n transition: max-height 0.4s ease;\n\n // To make sure it shows above the page content\n z-index: variables.$zindex-middle;\n\n // Remove padding so that it's flush on the top and left\n padding: 0;\n\n // This is the container div for the secondary sidebar nav\n .toc-item {\n // Border is a bit less prominent\n border-left-color: var(--pst-color-surface);\n // Flush with the top so that we can fix the height of the toc header div\n padding-top: 0;\n\n // The table of contents <ul> after the title div\n nav.page-toc {\n // Remove extra margin the PST adds for other sidebar items\n margin-bottom: 0;\n\n // Items after \"on this page' should fade in and out\n transition: opacity 0.4s ease;\n }\n }\n\n // Rules for when sidebar is hidden\n // the `not:hover` means that hovering over the sidebar will show it again.\n &.hide:not(:hover) {\n // Cap the height, and remove the scrollbar\n max-height: variables.$header-article-height;\n overflow-y: hidden;\n\n // Shadow matches what we have in the article header\n .scrolled & {\n box-shadow: 0 6px 6px -6px rgba(0, 0, 0, 0.3);\n }\n\n // Show a down carot\n .onthispage:after {\n opacity: 1;\n content: \"\\f107\";\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n padding-left: 0.5em;\n transition: opacity 0.3s ease;\n }\n\n // The page-toc list is hidden\n nav.page-toc {\n opacity: 0;\n }\n }\n }\n}\n","@use \"../abstracts/variables\";\n\n/*********************************************\n* Footer - content *\n*********************************************/\nfooter {\n font-size: var(--sbt-font-size-small-1);\n &.bd-footer-content {\n display: flex;\n flex-wrap: wrap;\n padding: 15px;\n border-top: 1px solid #ccc;\n font-size: variables.$sbt-font-size-small-1;\n .bd-footer-content__inner {\n padding-left: 0px;\n p {\n margin-bottom: 0px;\n }\n }\n }\n}\n","@use \"../abstracts/variables\";\n\n.bd-footer-article {\n padding: 0rem 1rem;\n @media (max-width: variables.$breakpoint-md) {\n // More room for text on mobile\n padding: 0rem 0.5rem;\n }\n}\n","@use \"../abstracts/variables\";\n\n#pst-back-to-top {\n // Reduce size to be slightly less intrusive on the page\n font-size: 0.8rem;\n\n // We should only display the back-to-top button when the TOC is not available.\n // AKA, on narrow-ish screens.\n // This over-rides a PST default\n @media (min-width: variables.$breakpoint-xl) {\n display: none !important;\n }\n}\n","/**\n * Icon links design for the primary sidebar, where it defaults in this theme.\n */\n.bd-sidebar-primary {\n .navbar-icon-links {\n column-gap: 0.5rem;\n\n .nav-link {\n // There are few kinds of elements that can be icon links and each is different\n i,\n span {\n font-size: 1.2rem;\n }\n\n // Images usually fill more vertical space so we make them a bit smaller\n img {\n font-size: 0.8rem;\n }\n }\n }\n}\n",".navbar-brand {\n height: unset;\n max-height: unset;\n\n // Auto-center the image and title and make items vertical\n flex-direction: column;\n justify-content: center;\n gap: 0.25rem;\n\n // To prevent site text from having underlines\n &:hover {\n text-decoration: none;\n }\n .logo__title {\n font-size: 1.25rem;\n white-space: normal;\n text-align: center;\n }\n // Prevent images from stretching vertically\n .logo__image {\n height: unset;\n }\n}\n","@use \"../abstracts/variables\";\n\n// Clean up the search page so that it has less unnecessary text\n.bd-search-container {\n margin: 2em;\n\n #search-results {\n h2:first-child {\n display: none;\n }\n }\n}\n\n// Sidebar search button field\n.search-button-field {\n width: 100%;\n font-size: 0.9rem;\n // Hide by default and we'll add a rule to show it on wide sreen below\n display: none;\n\n .search-button__kbd-shortcut {\n margin-left: auto;\n }\n}\n\n// Rules to switch off visibility of the field button and the header button\n@media (min-width: variables.$breakpoint-lg) {\n .search-button {\n display: none !important;\n }\n\n .search-button-field {\n display: flex;\n }\n}\n\n// The \"clear search results\" button\n// Make it line up with our content better\ndiv#searchbox {\n padding-right: 2rem;\n padding-left: 2rem;\n @media (max-width: variables.$breakpoint-md) {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n\n p.highlight-link {\n // Remove the extra margin that is added\n @media (min-width: variables.$breakpoint-md) {\n margin-left: 0;\n a {\n font-size: 1rem;\n }\n }\n }\n}\n","// Images\nimg {\n max-width: 100%;\n\n &.align-center {\n margin-left: auto;\n margin-right: auto;\n display: block;\n }\n\n &.align-left {\n clear: left;\n float: left;\n margin-right: 1em;\n }\n\n &.align-right {\n clear: right;\n float: right;\n margin-left: 1em;\n }\n}\n\n// Figures\ndiv.figure {\n width: 100%;\n margin-bottom: 1em;\n text-align: center;\n\n &.align-left {\n text-align: left;\n p.caption {\n margin-left: 0;\n }\n }\n &.align-right {\n text-align: right;\n p.caption {\n margin-right: 0;\n }\n }\n\n p.caption {\n margin: 0.5em 10%;\n }\n\n &.margin,\n &.margin-caption {\n p.caption {\n margin: 0.5em 0;\n }\n }\n\n &.margin-caption p.caption {\n text-align: left;\n }\n\n span.caption-number {\n font-weight: bold;\n }\n\n span {\n font-size: 0.9rem;\n }\n}\n","/**\n * Epigraphs and other \"special\" quote blocks\n */\n\nblockquote {\n &.pull-quote,\n &.epigraph,\n &.highlights {\n font-size: 1.25em;\n border-left: none;\n background-color: var(--pst-color-background);\n }\n\n div > p + p.attribution {\n font-style: normal;\n font-size: 0.9em;\n text-align: right;\n color: #6c757d;\n padding-right: 2em;\n }\n}\n","// Over-ride Sphinx default so that content fills whitespace w/ margin content\npre,\ndiv[class*=\"highlight-\"] {\n clear: none;\n}\n","// MyST-NB and Jupyter Notebooks\ndiv.cell.tag_output_scroll div.cell_output,\ndiv.cell.tag_scroll-output div.cell_output {\n max-height: 24em;\n overflow-y: auto;\n}\n\ndiv.cell.tag_scroll-input div.cell_input {\n max-height: 24em;\n overflow-y: auto;\n}\n","/**\n * Comment JavaScript libraries\n * Libraries supported here are:\n * - Hypothes.is : https://web.hypothes.is/\n * - Utteranc.es : https://utteranc.es/\n */\n// In general we want to hide any comment libraries on print\n@media only print {\n hypothesis-sidebar,\n div.utterances {\n display: none;\n }\n}\n","/*********************************************\n* Thebe *\n* ref: https://github.com/executablebooks/thebe\n*********************************************/\n.thebelab-cell {\n border: none !important;\n margin-right: 0.5em !important;\n}\n\n.thebelab-cell .thebelab-input {\n padding-left: 10px !important;\n}\n\n.cell.docutils.container {\n padding-right: 0px !important;\n}\n\nbutton.thebe-launch-button {\n height: 2.5em;\n font-size: 1em;\n}\n"],"names":[],"sourceRoot":""} |
| /* Provided by Sphinx's 'basic' theme, and included in the final set of assets */ | ||
| @import "../basic.css"; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| /*! | ||
| * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com | ||
| * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) | ||
| * Copyright 2024 Fonticons, Inc. | ||
| */ |
| Fonticons, Inc. (https://fontawesome.com) | ||
| -------------------------------------------------------------------------------- | ||
| Font Awesome Free License | ||
| Font Awesome Free is free, open source, and GPL friendly. You can use it for | ||
| commercial projects, open source projects, or really almost whatever you want. | ||
| Full Font Awesome Free license: https://fontawesome.com/license/free. | ||
| -------------------------------------------------------------------------------- | ||
| # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) | ||
| The Font Awesome Free download is licensed under a Creative Commons | ||
| Attribution 4.0 International License and applies to all icons packaged | ||
| as SVG and JS file types. | ||
| -------------------------------------------------------------------------------- | ||
| # Fonts: SIL OFL 1.1 License | ||
| In the Font Awesome Free download, the SIL OFL license applies to all icons | ||
| packaged as web and desktop font files. | ||
| Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com) | ||
| with Reserved Font Name: "Font Awesome". | ||
| This Font Software is licensed under the SIL Open Font License, Version 1.1. | ||
| This license is copied below, and is also available with a FAQ at: | ||
| http://scripts.sil.org/OFL | ||
| SIL OPEN FONT LICENSE | ||
| Version 1.1 - 26 February 2007 | ||
| PREAMBLE | ||
| The goals of the Open Font License (OFL) are to stimulate worldwide | ||
| development of collaborative font projects, to support the font creation | ||
| efforts of academic and linguistic communities, and to provide a free and | ||
| open framework in which fonts may be shared and improved in partnership | ||
| with others. | ||
| The OFL allows the licensed fonts to be used, studied, modified and | ||
| redistributed freely as long as they are not sold by themselves. The | ||
| fonts, including any derivative works, can be bundled, embedded, | ||
| redistributed and/or sold with any software provided that any reserved | ||
| names are not used by derivative works. The fonts and derivatives, | ||
| however, cannot be released under any other type of license. The | ||
| requirement for fonts to remain under this license does not apply | ||
| to any document created using the fonts or their derivatives. | ||
| DEFINITIONS | ||
| "Font Software" refers to the set of files released by the Copyright | ||
| Holder(s) under this license and clearly marked as such. This may | ||
| include source files, build scripts and documentation. | ||
| "Reserved Font Name" refers to any names specified as such after the | ||
| copyright statement(s). | ||
| "Original Version" refers to the collection of Font Software components as | ||
| distributed by the Copyright Holder(s). | ||
| "Modified Version" refers to any derivative made by adding to, deleting, | ||
| or substituting — in part or in whole — any of the components of the | ||
| Original Version, by changing formats or by porting the Font Software to a | ||
| new environment. | ||
| "Author" refers to any designer, engineer, programmer, technical | ||
| writer or other person who contributed to the Font Software. | ||
| PERMISSION & CONDITIONS | ||
| Permission is hereby granted, free of charge, to any person obtaining | ||
| a copy of the Font Software, to use, study, copy, merge, embed, modify, | ||
| redistribute, and sell modified and unmodified copies of the Font | ||
| Software, subject to the following conditions: | ||
| 1) Neither the Font Software nor any of its individual components, | ||
| in Original or Modified Versions, may be sold by itself. | ||
| 2) Original or Modified Versions of the Font Software may be bundled, | ||
| redistributed and/or sold with any software, provided that each copy | ||
| contains the above copyright notice and this license. These can be | ||
| included either as stand-alone text files, human-readable headers or | ||
| in the appropriate machine-readable metadata fields within text or | ||
| binary files as long as those fields can be easily viewed by the user. | ||
| 3) No Modified Version of the Font Software may use the Reserved Font | ||
| Name(s) unless explicit written permission is granted by the corresponding | ||
| Copyright Holder. This restriction only applies to the primary font name as | ||
| presented to the users. | ||
| 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font | ||
| Software shall not be used to promote, endorse or advertise any | ||
| Modified Version, except to acknowledge the contribution(s) of the | ||
| Copyright Holder(s) and the Author(s) or with their explicit written | ||
| permission. | ||
| 5) The Font Software, modified or unmodified, in part or in whole, | ||
| must be distributed entirely under this license, and must not be | ||
| distributed under any other license. The requirement for fonts to | ||
| remain under this license does not apply to any document created | ||
| using the Font Software. | ||
| TERMINATION | ||
| This license becomes null and void if any of the above conditions are | ||
| not met. | ||
| DISCLAIMER | ||
| THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF | ||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT | ||
| OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE | ||
| COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
| INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL | ||
| DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM | ||
| OTHER DEALINGS IN THE FONT SOFTWARE. | ||
| -------------------------------------------------------------------------------- | ||
| # Code: MIT License (https://opensource.org/licenses/MIT) | ||
| In the Font Awesome Free download, the MIT license applies to all non-font and | ||
| non-icon files. | ||
| Copyright 2024 Fonticons, Inc. | ||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
| this software and associated documentation files (the "Software"), to deal in the | ||
| Software without restriction, including without limitation the rights to use, copy, | ||
| modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, | ||
| and to permit persons to whom the Software is furnished to do so, subject to the | ||
| following conditions: | ||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, | ||
| INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A | ||
| PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
| HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| -------------------------------------------------------------------------------- | ||
| # Attribution | ||
| Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font | ||
| Awesome Free files already contain embedded comments with sufficient | ||
| attribution, so you shouldn't need to do anything additional when using these | ||
| files normally. | ||
| We've kept attribution comments terse, so we ask that you do not actively work | ||
| to remove them from files, especially code. They're a great way for folks to | ||
| learn about Font Awesome. | ||
| -------------------------------------------------------------------------------- | ||
| # Brand Icons | ||
| All brand icons are trademarks of their respective owners. The use of these | ||
| trademarks does not indicate endorsement of the trademark holder by Font | ||
| Awesome, nor vice versa. **Please do not use brand logos for any purpose except | ||
| to represent the company, product, or service to which they refer.** |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| <!-- | ||
| AUTO-GENERATED from webpack.config.js, do **NOT** edit by hand. | ||
| These are re-used in layout.html | ||
| --> | ||
| {# Load FontAwesome icons #} | ||
| {% macro head_pre_icons() %} | ||
| <link href="{{ pathto('_static/vendor/fontawesome/6.5.2/css/all.min.css', 1) }}?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="{{ pathto('_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2', 1) }}" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="{{ pathto('_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2', 1) }}" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="{{ pathto('_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2', 1) }}" /> | ||
| {% endmacro %} | ||
| {% macro head_pre_assets() %} | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="{{ pathto('_static/styles/theme.css', 1) }}?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="{{ pathto('_static/styles/bootstrap.css', 1) }}?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="{{ pathto('_static/styles/pydata-sphinx-theme.css', 1) }}?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| {% endmacro %} | ||
| {% macro head_js_preload() %} | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="{{ pathto('_static/vendor/fontawesome/6.5.2/js/all.min.js', 1) }}?digest=dfe6caa3a7d634c4db9b"></script> | ||
| {% endmacro %} | ||
| {% macro body_post() %} | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=dfe6caa3a7d634c4db9b"></script> | ||
| {% endmacro %} |
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="./" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
| <title>Index — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = 'genindex';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="#" /> | ||
| <link rel="search" title="Search" href="search.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="nav bd-sidenav"> | ||
| <li class="toctree-l1 has-children"><a class="reference internal" href="vmklib.html">vmklib package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1></h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <h1 id="index">Index</h1> | ||
| <div class="genindex-jumpbox"> | ||
| <a href="#A"><strong>A</strong></a> | ||
| | <a href="#B"><strong>B</strong></a> | ||
| | <a href="#C"><strong>C</strong></a> | ||
| | <a href="#D"><strong>D</strong></a> | ||
| | <a href="#E"><strong>E</strong></a> | ||
| | <a href="#G"><strong>G</strong></a> | ||
| | <a href="#I"><strong>I</strong></a> | ||
| | <a href="#L"><strong>L</strong></a> | ||
| | <a href="#M"><strong>M</strong></a> | ||
| | <a href="#N"><strong>N</strong></a> | ||
| | <a href="#P"><strong>P</strong></a> | ||
| | <a href="#R"><strong>R</strong></a> | ||
| | <a href="#S"><strong>S</strong></a> | ||
| | <a href="#T"><strong>T</strong></a> | ||
| | <a href="#U"><strong>U</strong></a> | ||
| | <a href="#V"><strong>V</strong></a> | ||
| | <a href="#Y"><strong>Y</strong></a> | ||
| </div> | ||
| <h2 id="A">A</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.app.add_app_args">add_app_args() (in module vmklib.app)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="B">B</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.VmklibBase.build_dir">build_dir() (vmklib.tasks.VmklibBase class method)</a> | ||
| </li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.app.build_makefile">build_makefile() (in module vmklib.app)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="C">C</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.clean.Clean">Clean (class in vmklib.tasks.clean)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.CommandResult.code">code (vmklib.tasks.mixins.CommandResult attribute)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.CommandResult.code">(vmklib.tasks.mixins.curl.CommandResult attribute)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.CommandResult">CommandResult (class in vmklib.tasks.mixins)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.CommandResult">(class in vmklib.tasks.mixins.curl)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.concrete_path">concrete_path() (vmklib.tasks.mixins.concrete.ConcreteBuilderMixin method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteBuilderMixin.concrete_path">(vmklib.tasks.mixins.ConcreteBuilderMixin method)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteBuilderMixin">ConcreteBuilderMixin (class in vmklib.tasks.mixins)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteBuilderMixin">(class in vmklib.tasks.mixins.concrete)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteOnceMixin">ConcreteOnceMixin (class in vmklib.tasks.mixins)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteOnceMixin">(class in vmklib.tasks.mixins.concrete)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.create_release">create_release() (vmklib.tasks.release.GithubRelease method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.CurlMixin.curl">curl() (vmklib.tasks.mixins.curl.CurlMixin method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.CurlMixin.curl">(vmklib.tasks.mixins.CurlMixin method)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl_headers">curl_headers() (in module vmklib.tasks.mixins)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.curl_headers">(in module vmklib.tasks.mixins.curl)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.CurlMixin">CurlMixin (class in vmklib.tasks.mixins)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.CurlMixin">(class in vmklib.tasks.mixins.curl)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="D">D</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.datazen.DatazenTask">DatazenTask (class in vmklib.tasks.python.datazen)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.datazen.DatazenTask.default_requirements">default_requirements (vmklib.tasks.python.datazen.DatazenTask attribute)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.docs.PydepsTask.default_requirements">(vmklib.tasks.python.docs.PydepsTask attribute)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.lint.PythonLinter.default_requirements">(vmklib.tasks.python.lint.PythonLinter attribute)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.package.PythonPackage.default_requirements">(vmklib.tasks.python.package.PythonPackage attribute)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.test.PythonTester.default_requirements">(vmklib.tasks.python.test.PythonTester attribute)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.yaml.Yamllint.default_requirements">(vmklib.tasks.python.yaml.Yamllint attribute)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.VmklibBase.default_requirements">(vmklib.tasks.VmklibBase attribute)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="E">E</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.github.ensure_api_token">ensure_api_token() (in module vmklib.tasks.github)</a> | ||
| </li> | ||
| <li><a href="vmklib.html#vmklib.app.entry">entry() (in module vmklib.app)</a> | ||
| </li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.args.environ_fallback">environ_fallback() (in module vmklib.tasks.args)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.args.environ_fallback_split">environ_fallback_split() (in module vmklib.tasks.args)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="G">G</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.app.get_data">get_data() (in module vmklib.app)</a> | ||
| </li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease">GithubRelease (class in vmklib.tasks.release)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="I">I</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.app.initialize_task_manager">initialize_task_manager() (in module vmklib.app)</a> | ||
| </li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.is_concrete_stale">is_concrete_stale() (vmklib.tasks.mixins.concrete.ConcreteBuilderMixin method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteBuilderMixin.is_concrete_stale">(vmklib.tasks.mixins.ConcreteBuilderMixin method)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="L">L</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.lint.PythonLinter.linter_args">linter_args (vmklib.tasks.python.lint.PythonLinter attribute)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="M">M</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.entry.main">main() (in module vmklib.entry)</a> | ||
| </li> | ||
| <li> | ||
| module | ||
| <ul> | ||
| <li><a href="vmklib.html#module-vmklib">vmklib</a> | ||
| </li> | ||
| <li><a href="vmklib.html#module-vmklib.app">vmklib.app</a> | ||
| </li> | ||
| <li><a href="vmklib.html#module-vmklib.entry">vmklib.entry</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks">vmklib.tasks</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.args">vmklib.tasks.args</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.clean">vmklib.tasks.clean</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.github">vmklib.tasks.github</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins">vmklib.tasks.mixins</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.concrete">vmklib.tasks.mixins.concrete</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.curl">vmklib.tasks.mixins.curl</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.node.html#module-vmklib.tasks.node">vmklib.tasks.node</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python">vmklib.tasks.python</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.build">vmklib.tasks.python.build</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.datazen">vmklib.tasks.python.datazen</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.docs">vmklib.tasks.python.docs</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.lint">vmklib.tasks.python.lint</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.package">vmklib.tasks.python.package</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.release">vmklib.tasks.python.release</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.sa">vmklib.tasks.python.sa</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.test">vmklib.tasks.python.test</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.yaml">vmklib.tasks.python.yaml</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.release">vmklib.tasks.release</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.venv">vmklib.tasks.venv</a> | ||
| </li> | ||
| <li><a href="vmklib.html#module-vmklib.util">vmklib.util</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="N">N</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.node.html#vmklib.tasks.node.Npx">Npx (class in vmklib.tasks.node)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="P">P</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.app.project">project() (in module vmklib.app)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.docs.PydepsTask">PydepsTask (class in vmklib.tasks.python.docs)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.python_entry">python_entry() (in module vmklib.tasks.python)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.python_version">python_version() (in module vmklib.tasks.python)</a> | ||
| </li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.build.PythonBuild">PythonBuild (class in vmklib.tasks.python.build)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.lint.PythonLinter">PythonLinter (class in vmklib.tasks.python.lint)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.package.PythonPackage">PythonPackage (class in vmklib.tasks.python.package)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.test.PythonTester">PythonTester (class in vmklib.tasks.python.test)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="R">R</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.node.html#vmklib.tasks.node.register">register() (in module vmklib.tasks.node)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.build.register">(in module vmklib.tasks.python.build)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.datazen.register">(in module vmklib.tasks.python.datazen)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.docs.register">(in module vmklib.tasks.python.docs)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.lint.register">(in module vmklib.tasks.python.lint)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.package.register">(in module vmklib.tasks.python.package)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.release.register">(in module vmklib.tasks.python.release)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.sa.register">(in module vmklib.tasks.python.sa)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.test.register">(in module vmklib.tasks.python.test)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.yaml.register">(in module vmklib.tasks.python.yaml)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.venv.register">(in module vmklib.tasks.venv)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.release">release() (vmklib.tasks.release.GithubRelease method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.github.repo_url">repo_url() (in module vmklib.tasks.github)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.venv.RequirementsInstaller">RequirementsInstaller (class in vmklib.tasks.venv)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.clean.Clean.run">run() (vmklib.tasks.clean.Clean method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.node.html#vmklib.tasks.node.Npx.run">(vmklib.tasks.node.Npx method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.build.PythonBuild.run">(vmklib.tasks.python.build.PythonBuild method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.datazen.DatazenTask.run">(vmklib.tasks.python.datazen.DatazenTask method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.docs.PydepsTask.run">(vmklib.tasks.python.docs.PydepsTask method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.lint.PythonLinter.run">(vmklib.tasks.python.lint.PythonLinter method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.package.PythonPackage.run">(vmklib.tasks.python.package.PythonPackage method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.test.PythonTester.run">(vmklib.tasks.python.test.PythonTester method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.yaml.Yamllint.run">(vmklib.tasks.python.yaml.Yamllint method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.run">(vmklib.tasks.release.GithubRelease method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.venv.RequirementsInstaller.run">(vmklib.tasks.venv.RequirementsInstaller method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.venv.Venv.run">(vmklib.tasks.venv.Venv method)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteOnceMixin.run_enter">run_enter() (vmklib.tasks.mixins.concrete.ConcreteOnceMixin method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteOnceMixin.run_enter">(vmklib.tasks.mixins.ConcreteOnceMixin method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.venv.Venv.run_enter">(vmklib.tasks.venv.Venv method)</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.run_exit">run_exit() (vmklib.tasks.mixins.concrete.ConcreteBuilderMixin method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteBuilderMixin.run_exit">(vmklib.tasks.mixins.ConcreteBuilderMixin method)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="S">S</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.lint.PythonLinter.source_args">source_args() (vmklib.tasks.python.lint.PythonLinter static method)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.CommandResult.stderr">stderr (vmklib.tasks.mixins.CommandResult attribute)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.CommandResult.stderr">(vmklib.tasks.mixins.curl.CommandResult attribute)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.CommandResult.stdout">stdout (vmklib.tasks.mixins.CommandResult attribute)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.curl.CommandResult.stdout">(vmklib.tasks.mixins.curl.CommandResult attribute)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="T">T</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.html#vmklib.util.to_slug">to_slug() (in module vmklib.util)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="U">U</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.update_concrete">update_concrete() (vmklib.tasks.mixins.concrete.ConcreteBuilderMixin method)</a> | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#vmklib.tasks.mixins.ConcreteBuilderMixin.update_concrete">(vmklib.tasks.mixins.ConcreteBuilderMixin method)</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.upload_release_asset">upload_release_asset() (vmklib.tasks.release.GithubRelease method)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="V">V</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.venv.Venv">Venv (class in vmklib.tasks.venv)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.venv_bin">venv_bin() (in module vmklib.tasks.python)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.venv_dir">venv_dir() (in module vmklib.tasks.python)</a> | ||
| </li> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.venv_name">venv_name() (in module vmklib.tasks.python)</a> | ||
| </li> | ||
| <li> | ||
| vmklib | ||
| <ul> | ||
| <li><a href="vmklib.html#module-vmklib">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.app | ||
| <ul> | ||
| <li><a href="vmklib.html#module-vmklib.app">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.entry | ||
| <ul> | ||
| <li><a href="vmklib.html#module-vmklib.entry">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks | ||
| <ul> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.args | ||
| <ul> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.args">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.clean | ||
| <ul> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.clean">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.github | ||
| <ul> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.github">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.mixins | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.mixins.concrete | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.concrete">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.mixins.curl | ||
| <ul> | ||
| <li><a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.curl">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.node | ||
| <ul> | ||
| <li><a href="vmklib.tasks.node.html#module-vmklib.tasks.node">module</a> | ||
| </li> | ||
| </ul></li> | ||
| </ul></td> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li> | ||
| vmklib.tasks.python | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.build | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.build">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.datazen | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.datazen">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.docs | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.docs">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.lint | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.lint">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.package | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.package">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.release | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.release">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.sa | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.sa">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.test | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.test">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.python.yaml | ||
| <ul> | ||
| <li><a href="vmklib.tasks.python.html#module-vmklib.tasks.python.yaml">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.release | ||
| <ul> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.release">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.tasks.venv | ||
| <ul> | ||
| <li><a href="vmklib.tasks.html#module-vmklib.tasks.venv">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li> | ||
| vmklib.util | ||
| <ul> | ||
| <li><a href="vmklib.html#module-vmklib.util">module</a> | ||
| </li> | ||
| </ul></li> | ||
| <li><a href="vmklib.tasks.html#vmklib.tasks.VmklibBase">VmklibBase (class in vmklib.tasks)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| <h2 id="Y">Y</h2> | ||
| <table style="width: 100%" class="indextable genindextable"><tr> | ||
| <td style="width: 33%; vertical-align: top;"><ul> | ||
| <li><a href="vmklib.tasks.python.html#vmklib.tasks.python.yaml.Yamllint">Yamllint (class in vmklib.tasks.python.yaml)</a> | ||
| </li> | ||
| </ul></td> | ||
| </tr></table> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="./" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
| <title>vmklib — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = 'index';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="genindex.html" /> | ||
| <link rel="search" title="Search" href="search.html" /> | ||
| <link rel="next" title="vmklib package" href="vmklib.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="#"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="nav bd-sidenav"> | ||
| <li class="toctree-l1 has-children"><a class="reference internal" href="vmklib.html">vmklib package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <div class="dropdown dropdown-download-buttons"> | ||
| <button class="btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download this page"> | ||
| <i class="fas fa-download"></i> | ||
| </button> | ||
| <ul class="dropdown-menu"> | ||
| <li><a href="_sources/index.rst" target="_blank" | ||
| class="btn btn-sm btn-download-source-button dropdown-item" | ||
| title="Download source file" | ||
| data-bs-placement="left" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-file"></i> | ||
| </span> | ||
| <span class="btn__text-container">.rst</span> | ||
| </a> | ||
| </li> | ||
| <li> | ||
| <button onclick="window.print()" | ||
| class="btn btn-sm btn-download-pdf-button dropdown-item" | ||
| title="Print to PDF" | ||
| data-bs-placement="left" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-file-pdf"></i> | ||
| </span> | ||
| <span class="btn__text-container">.pdf</span> | ||
| </button> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1>vmklib</h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <section id="vmklib"> | ||
| <h1>vmklib<a class="headerlink" href="#vmklib" title="Link to this heading">#</a></h1> | ||
| <p>Consider <a class="reference external" href="https://github.com/sponsors/libre-embedded">sponsoring development</a>.</p> | ||
| <div class="toctree-wrapper compound"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul> | ||
| <li class="toctree-l1"><a class="reference internal" href="vmklib.html">vmklib package</a><ul> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.html#subpackages">Subpackages</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#subpackages">Subpackages</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#submodules">Submodules</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.args">vmklib.tasks.args module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.clean">vmklib.tasks.clean module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.github">vmklib.tasks.github module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.release">vmklib.tasks.release module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.venv">vmklib.tasks.venv module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks">Module contents</a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.html#submodules">Submodules</a></li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.html#module-vmklib.app">vmklib.app module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.app.add_app_args"><code class="docutils literal notranslate"><span class="pre">add_app_args()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.app.build_makefile"><code class="docutils literal notranslate"><span class="pre">build_makefile()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.app.entry"><code class="docutils literal notranslate"><span class="pre">entry()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.app.get_data"><code class="docutils literal notranslate"><span class="pre">get_data()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.app.initialize_task_manager"><code class="docutils literal notranslate"><span class="pre">initialize_task_manager()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.app.project"><code class="docutils literal notranslate"><span class="pre">project()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.html#module-vmklib.entry">vmklib.entry module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.entry.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.html#module-vmklib.util">vmklib.util module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.html#vmklib.util.to_slug"><code class="docutils literal notranslate"><span class="pre">to_slug()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.html#module-vmklib">Module contents</a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </section> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| <a class="right-next" | ||
| href="vmklib.html" | ||
| title="next page"> | ||
| <div class="prev-next-info"> | ||
| <p class="prev-next-subtitle">next</p> | ||
| <p class="prev-next-title">vmklib package</p> | ||
| </div> | ||
| <i class="fa-solid fa-angle-right"></i> | ||
| </a> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="./" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
| <title>Python Module Index — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = 'py-modindex';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="genindex.html" /> | ||
| <link rel="search" title="Search" href="search.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="nav bd-sidenav"> | ||
| <li class="toctree-l1 has-children"><a class="reference internal" href="vmklib.html">vmklib package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1></h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <h1>Python Module Index</h1> | ||
| <div class="modindex-jumpbox"> | ||
| <a href="#cap-v"><strong>v</strong></a> | ||
| </div> | ||
| <table class="indextable modindextable"> | ||
| <tr class="pcap"><td></td><td> </td><td></td></tr> | ||
| <tr class="cap" id="cap-v"><td></td><td> | ||
| <strong>v</strong></td><td></td></tr> | ||
| <tr> | ||
| <td><img src="_static/minus.png" class="toggler" | ||
| id="toggle-1" style="display: none" alt="-" /></td> | ||
| <td> | ||
| <a href="vmklib.html#module-vmklib"><code class="xref">vmklib</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.html#module-vmklib.app"><code class="xref">vmklib.app</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.html#module-vmklib.entry"><code class="xref">vmklib.entry</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.html#module-vmklib.tasks"><code class="xref">vmklib.tasks</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.html#module-vmklib.tasks.args"><code class="xref">vmklib.tasks.args</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.html#module-vmklib.tasks.clean"><code class="xref">vmklib.tasks.clean</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.html#module-vmklib.tasks.github"><code class="xref">vmklib.tasks.github</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins"><code class="xref">vmklib.tasks.mixins</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.concrete"><code class="xref">vmklib.tasks.mixins.concrete</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.curl"><code class="xref">vmklib.tasks.mixins.curl</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.node.html#module-vmklib.tasks.node"><code class="xref">vmklib.tasks.node</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python"><code class="xref">vmklib.tasks.python</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.build"><code class="xref">vmklib.tasks.python.build</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.datazen"><code class="xref">vmklib.tasks.python.datazen</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.docs"><code class="xref">vmklib.tasks.python.docs</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.lint"><code class="xref">vmklib.tasks.python.lint</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.package"><code class="xref">vmklib.tasks.python.package</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.release"><code class="xref">vmklib.tasks.python.release</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.sa"><code class="xref">vmklib.tasks.python.sa</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.test"><code class="xref">vmklib.tasks.python.test</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.python.html#module-vmklib.tasks.python.yaml"><code class="xref">vmklib.tasks.python.yaml</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.html#module-vmklib.tasks.release"><code class="xref">vmklib.tasks.release</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.tasks.html#module-vmklib.tasks.venv"><code class="xref">vmklib.tasks.venv</code></a></td><td> | ||
| <em></em></td></tr> | ||
| <tr class="cg-1"> | ||
| <td></td> | ||
| <td>    | ||
| <a href="vmklib.html#module-vmklib.util"><code class="xref">vmklib.util</code></a></td><td> | ||
| <em></em></td></tr> | ||
| </table> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="./" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Search - docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = 'search';</script> | ||
| <script src="_static/searchtools.js"></script> | ||
| <script src="_static/language_data.js"></script> | ||
| <script src="searchindex.js"></script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="genindex.html" /> | ||
| <link rel="search" title="Search" href="#" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="#" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="nav bd-sidenav"> | ||
| <li class="toctree-l1 has-children"><a class="reference internal" href="vmklib.html">vmklib package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div class="bd-search-container"> | ||
| <h1>Search</h1> | ||
| <noscript> | ||
| <div class="admonition error"> | ||
| <p class="admonition-title">Error</p> | ||
| <p>Please activate JavaScript to enable the search functionality.</p> | ||
| </div> | ||
| </noscript> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="#" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form> | ||
| <div id="search-results"></div> | ||
| </div> | ||
| <script> | ||
| // Activate the search field on page load | ||
| let searchInput = document.querySelector("form.bd-search input"); | ||
| if (searchInput) { | ||
| searchInput.focus(); | ||
| searchInput.select(); | ||
| console.log("[PST]: Set focus on search field."); | ||
| } | ||
| </script> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
| Search.setIndex({"alltitles":{"Contents:":[[0,null]],"Module contents":[[1,"module-vmklib"],[2,"module-vmklib.tasks"],[3,"module-vmklib.tasks.mixins"],[4,"module-vmklib.tasks.node"],[5,"module-vmklib.tasks.python"]],"Submodules":[[1,"submodules"],[2,"submodules"],[3,"submodules"],[5,"submodules"]],"Subpackages":[[1,"subpackages"],[2,"subpackages"]],"vmklib":[[0,null]],"vmklib package":[[1,null]],"vmklib.app module":[[1,"module-vmklib.app"]],"vmklib.entry module":[[1,"module-vmklib.entry"]],"vmklib.tasks package":[[2,null]],"vmklib.tasks.args module":[[2,"module-vmklib.tasks.args"]],"vmklib.tasks.clean module":[[2,"module-vmklib.tasks.clean"]],"vmklib.tasks.github module":[[2,"module-vmklib.tasks.github"]],"vmklib.tasks.mixins package":[[3,null]],"vmklib.tasks.mixins.concrete module":[[3,"module-vmklib.tasks.mixins.concrete"]],"vmklib.tasks.mixins.curl module":[[3,"module-vmklib.tasks.mixins.curl"]],"vmklib.tasks.node package":[[4,null]],"vmklib.tasks.python package":[[5,null]],"vmklib.tasks.python.build module":[[5,"module-vmklib.tasks.python.build"]],"vmklib.tasks.python.datazen module":[[5,"module-vmklib.tasks.python.datazen"]],"vmklib.tasks.python.docs module":[[5,"module-vmklib.tasks.python.docs"]],"vmklib.tasks.python.lint module":[[5,"module-vmklib.tasks.python.lint"]],"vmklib.tasks.python.package module":[[5,"module-vmklib.tasks.python.package"]],"vmklib.tasks.python.release module":[[5,"module-vmklib.tasks.python.release"]],"vmklib.tasks.python.sa module":[[5,"module-vmklib.tasks.python.sa"]],"vmklib.tasks.python.test module":[[5,"module-vmklib.tasks.python.test"]],"vmklib.tasks.python.yaml module":[[5,"module-vmklib.tasks.python.yaml"]],"vmklib.tasks.release module":[[2,"module-vmklib.tasks.release"]],"vmklib.tasks.venv module":[[2,"module-vmklib.tasks.venv"]],"vmklib.util module":[[1,"module-vmklib.util"]]},"docnames":["index","vmklib","vmklib.tasks","vmklib.tasks.mixins","vmklib.tasks.node","vmklib.tasks.python"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1},"filenames":["index.rst","vmklib.rst","vmklib.tasks.rst","vmklib.tasks.mixins.rst","vmklib.tasks.node.rst","vmklib.tasks.python.rst"],"indexentries":{"add_app_args() (in module vmklib.app)":[[1,"vmklib.app.add_app_args",false]],"build_dir() (vmklib.tasks.vmklibbase class method)":[[2,"vmklib.tasks.VmklibBase.build_dir",false]],"build_makefile() (in module vmklib.app)":[[1,"vmklib.app.build_makefile",false]],"clean (class in vmklib.tasks.clean)":[[2,"vmklib.tasks.clean.Clean",false]],"code (vmklib.tasks.mixins.commandresult attribute)":[[3,"vmklib.tasks.mixins.CommandResult.code",false]],"code (vmklib.tasks.mixins.curl.commandresult attribute)":[[3,"vmklib.tasks.mixins.curl.CommandResult.code",false]],"commandresult (class in vmklib.tasks.mixins)":[[3,"vmklib.tasks.mixins.CommandResult",false]],"commandresult (class in vmklib.tasks.mixins.curl)":[[3,"vmklib.tasks.mixins.curl.CommandResult",false]],"concrete_path() (vmklib.tasks.mixins.concrete.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.concrete_path",false]],"concrete_path() (vmklib.tasks.mixins.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.ConcreteBuilderMixin.concrete_path",false]],"concretebuildermixin (class in vmklib.tasks.mixins)":[[3,"vmklib.tasks.mixins.ConcreteBuilderMixin",false]],"concretebuildermixin (class in vmklib.tasks.mixins.concrete)":[[3,"vmklib.tasks.mixins.concrete.ConcreteBuilderMixin",false]],"concreteoncemixin (class in vmklib.tasks.mixins)":[[3,"vmklib.tasks.mixins.ConcreteOnceMixin",false]],"concreteoncemixin (class in vmklib.tasks.mixins.concrete)":[[3,"vmklib.tasks.mixins.concrete.ConcreteOnceMixin",false]],"create_release() (vmklib.tasks.release.githubrelease method)":[[2,"vmklib.tasks.release.GithubRelease.create_release",false]],"curl() (vmklib.tasks.mixins.curl.curlmixin method)":[[3,"vmklib.tasks.mixins.curl.CurlMixin.curl",false]],"curl() (vmklib.tasks.mixins.curlmixin method)":[[3,"vmklib.tasks.mixins.CurlMixin.curl",false]],"curl_headers() (in module vmklib.tasks.mixins)":[[3,"vmklib.tasks.mixins.curl_headers",false]],"curl_headers() (in module vmklib.tasks.mixins.curl)":[[3,"vmklib.tasks.mixins.curl.curl_headers",false]],"curlmixin (class in vmklib.tasks.mixins)":[[3,"vmklib.tasks.mixins.CurlMixin",false]],"curlmixin (class in vmklib.tasks.mixins.curl)":[[3,"vmklib.tasks.mixins.curl.CurlMixin",false]],"datazentask (class in vmklib.tasks.python.datazen)":[[5,"vmklib.tasks.python.datazen.DatazenTask",false]],"default_requirements (vmklib.tasks.python.datazen.datazentask attribute)":[[5,"vmklib.tasks.python.datazen.DatazenTask.default_requirements",false]],"default_requirements (vmklib.tasks.python.docs.pydepstask attribute)":[[5,"vmklib.tasks.python.docs.PydepsTask.default_requirements",false]],"default_requirements (vmklib.tasks.python.lint.pythonlinter attribute)":[[5,"vmklib.tasks.python.lint.PythonLinter.default_requirements",false]],"default_requirements (vmklib.tasks.python.package.pythonpackage attribute)":[[5,"vmklib.tasks.python.package.PythonPackage.default_requirements",false]],"default_requirements (vmklib.tasks.python.test.pythontester attribute)":[[5,"vmklib.tasks.python.test.PythonTester.default_requirements",false]],"default_requirements (vmklib.tasks.python.yaml.yamllint attribute)":[[5,"vmklib.tasks.python.yaml.Yamllint.default_requirements",false]],"default_requirements (vmklib.tasks.vmklibbase attribute)":[[2,"vmklib.tasks.VmklibBase.default_requirements",false]],"ensure_api_token() (in module vmklib.tasks.github)":[[2,"vmklib.tasks.github.ensure_api_token",false]],"entry() (in module vmklib.app)":[[1,"vmklib.app.entry",false]],"environ_fallback() (in module vmklib.tasks.args)":[[2,"vmklib.tasks.args.environ_fallback",false]],"environ_fallback_split() (in module vmklib.tasks.args)":[[2,"vmklib.tasks.args.environ_fallback_split",false]],"get_data() (in module vmklib.app)":[[1,"vmklib.app.get_data",false]],"githubrelease (class in vmklib.tasks.release)":[[2,"vmklib.tasks.release.GithubRelease",false]],"initialize_task_manager() (in module vmklib.app)":[[1,"vmklib.app.initialize_task_manager",false]],"is_concrete_stale() (vmklib.tasks.mixins.concrete.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.is_concrete_stale",false]],"is_concrete_stale() (vmklib.tasks.mixins.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.ConcreteBuilderMixin.is_concrete_stale",false]],"linter_args (vmklib.tasks.python.lint.pythonlinter attribute)":[[5,"vmklib.tasks.python.lint.PythonLinter.linter_args",false]],"main() (in module vmklib.entry)":[[1,"vmklib.entry.main",false]],"module":[[1,"module-vmklib",false],[1,"module-vmklib.app",false],[1,"module-vmklib.entry",false],[1,"module-vmklib.util",false],[2,"module-vmklib.tasks",false],[2,"module-vmklib.tasks.args",false],[2,"module-vmklib.tasks.clean",false],[2,"module-vmklib.tasks.github",false],[2,"module-vmklib.tasks.release",false],[2,"module-vmklib.tasks.venv",false],[3,"module-vmklib.tasks.mixins",false],[3,"module-vmklib.tasks.mixins.concrete",false],[3,"module-vmklib.tasks.mixins.curl",false],[4,"module-vmklib.tasks.node",false],[5,"module-vmklib.tasks.python",false],[5,"module-vmklib.tasks.python.build",false],[5,"module-vmklib.tasks.python.datazen",false],[5,"module-vmklib.tasks.python.docs",false],[5,"module-vmklib.tasks.python.lint",false],[5,"module-vmklib.tasks.python.package",false],[5,"module-vmklib.tasks.python.release",false],[5,"module-vmklib.tasks.python.sa",false],[5,"module-vmklib.tasks.python.test",false],[5,"module-vmklib.tasks.python.yaml",false]],"npx (class in vmklib.tasks.node)":[[4,"vmklib.tasks.node.Npx",false]],"project() (in module vmklib.app)":[[1,"vmklib.app.project",false]],"pydepstask (class in vmklib.tasks.python.docs)":[[5,"vmklib.tasks.python.docs.PydepsTask",false]],"python_entry() (in module vmklib.tasks.python)":[[5,"vmklib.tasks.python.python_entry",false]],"python_version() (in module vmklib.tasks.python)":[[5,"vmklib.tasks.python.python_version",false]],"pythonbuild (class in vmklib.tasks.python.build)":[[5,"vmklib.tasks.python.build.PythonBuild",false]],"pythonlinter (class in vmklib.tasks.python.lint)":[[5,"vmklib.tasks.python.lint.PythonLinter",false]],"pythonpackage (class in vmklib.tasks.python.package)":[[5,"vmklib.tasks.python.package.PythonPackage",false]],"pythontester (class in vmklib.tasks.python.test)":[[5,"vmklib.tasks.python.test.PythonTester",false]],"register() (in module vmklib.tasks.node)":[[4,"vmklib.tasks.node.register",false]],"register() (in module vmklib.tasks.python.build)":[[5,"vmklib.tasks.python.build.register",false]],"register() (in module vmklib.tasks.python.datazen)":[[5,"vmklib.tasks.python.datazen.register",false]],"register() (in module vmklib.tasks.python.docs)":[[5,"vmklib.tasks.python.docs.register",false]],"register() (in module vmklib.tasks.python.lint)":[[5,"vmklib.tasks.python.lint.register",false]],"register() (in module vmklib.tasks.python.package)":[[5,"vmklib.tasks.python.package.register",false]],"register() (in module vmklib.tasks.python.release)":[[5,"vmklib.tasks.python.release.register",false]],"register() (in module vmklib.tasks.python.sa)":[[5,"vmklib.tasks.python.sa.register",false]],"register() (in module vmklib.tasks.python.test)":[[5,"vmklib.tasks.python.test.register",false]],"register() (in module vmklib.tasks.python.yaml)":[[5,"vmklib.tasks.python.yaml.register",false]],"register() (in module vmklib.tasks.venv)":[[2,"vmklib.tasks.venv.register",false]],"release() (vmklib.tasks.release.githubrelease method)":[[2,"vmklib.tasks.release.GithubRelease.release",false]],"repo_url() (in module vmklib.tasks.github)":[[2,"vmklib.tasks.github.repo_url",false]],"requirementsinstaller (class in vmklib.tasks.venv)":[[2,"vmklib.tasks.venv.RequirementsInstaller",false]],"run() (vmklib.tasks.clean.clean method)":[[2,"vmklib.tasks.clean.Clean.run",false]],"run() (vmklib.tasks.node.npx method)":[[4,"vmklib.tasks.node.Npx.run",false]],"run() (vmklib.tasks.python.build.pythonbuild method)":[[5,"vmklib.tasks.python.build.PythonBuild.run",false]],"run() (vmklib.tasks.python.datazen.datazentask method)":[[5,"vmklib.tasks.python.datazen.DatazenTask.run",false]],"run() (vmklib.tasks.python.docs.pydepstask method)":[[5,"vmklib.tasks.python.docs.PydepsTask.run",false]],"run() (vmklib.tasks.python.lint.pythonlinter method)":[[5,"vmklib.tasks.python.lint.PythonLinter.run",false]],"run() (vmklib.tasks.python.package.pythonpackage method)":[[5,"vmklib.tasks.python.package.PythonPackage.run",false]],"run() (vmklib.tasks.python.test.pythontester method)":[[5,"vmklib.tasks.python.test.PythonTester.run",false]],"run() (vmklib.tasks.python.yaml.yamllint method)":[[5,"vmklib.tasks.python.yaml.Yamllint.run",false]],"run() (vmklib.tasks.release.githubrelease method)":[[2,"vmklib.tasks.release.GithubRelease.run",false]],"run() (vmklib.tasks.venv.requirementsinstaller method)":[[2,"vmklib.tasks.venv.RequirementsInstaller.run",false]],"run() (vmklib.tasks.venv.venv method)":[[2,"vmklib.tasks.venv.Venv.run",false]],"run_enter() (vmklib.tasks.mixins.concrete.concreteoncemixin method)":[[3,"vmklib.tasks.mixins.concrete.ConcreteOnceMixin.run_enter",false]],"run_enter() (vmklib.tasks.mixins.concreteoncemixin method)":[[3,"vmklib.tasks.mixins.ConcreteOnceMixin.run_enter",false]],"run_enter() (vmklib.tasks.venv.venv method)":[[2,"vmklib.tasks.venv.Venv.run_enter",false]],"run_exit() (vmklib.tasks.mixins.concrete.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.run_exit",false]],"run_exit() (vmklib.tasks.mixins.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.ConcreteBuilderMixin.run_exit",false]],"source_args() (vmklib.tasks.python.lint.pythonlinter static method)":[[5,"vmklib.tasks.python.lint.PythonLinter.source_args",false]],"stderr (vmklib.tasks.mixins.commandresult attribute)":[[3,"vmklib.tasks.mixins.CommandResult.stderr",false]],"stderr (vmklib.tasks.mixins.curl.commandresult attribute)":[[3,"vmklib.tasks.mixins.curl.CommandResult.stderr",false]],"stdout (vmklib.tasks.mixins.commandresult attribute)":[[3,"vmklib.tasks.mixins.CommandResult.stdout",false]],"stdout (vmklib.tasks.mixins.curl.commandresult attribute)":[[3,"vmklib.tasks.mixins.curl.CommandResult.stdout",false]],"to_slug() (in module vmklib.util)":[[1,"vmklib.util.to_slug",false]],"update_concrete() (vmklib.tasks.mixins.concrete.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.concrete.ConcreteBuilderMixin.update_concrete",false]],"update_concrete() (vmklib.tasks.mixins.concretebuildermixin method)":[[3,"vmklib.tasks.mixins.ConcreteBuilderMixin.update_concrete",false]],"upload_release_asset() (vmklib.tasks.release.githubrelease method)":[[2,"vmklib.tasks.release.GithubRelease.upload_release_asset",false]],"venv (class in vmklib.tasks.venv)":[[2,"vmklib.tasks.venv.Venv",false]],"venv_bin() (in module vmklib.tasks.python)":[[5,"vmklib.tasks.python.venv_bin",false]],"venv_dir() (in module vmklib.tasks.python)":[[5,"vmklib.tasks.python.venv_dir",false]],"venv_name() (in module vmklib.tasks.python)":[[5,"vmklib.tasks.python.venv_name",false]],"vmklib":[[1,"module-vmklib",false]],"vmklib.app":[[1,"module-vmklib.app",false]],"vmklib.entry":[[1,"module-vmklib.entry",false]],"vmklib.tasks":[[2,"module-vmklib.tasks",false]],"vmklib.tasks.args":[[2,"module-vmklib.tasks.args",false]],"vmklib.tasks.clean":[[2,"module-vmklib.tasks.clean",false]],"vmklib.tasks.github":[[2,"module-vmklib.tasks.github",false]],"vmklib.tasks.mixins":[[3,"module-vmklib.tasks.mixins",false]],"vmklib.tasks.mixins.concrete":[[3,"module-vmklib.tasks.mixins.concrete",false]],"vmklib.tasks.mixins.curl":[[3,"module-vmklib.tasks.mixins.curl",false]],"vmklib.tasks.node":[[4,"module-vmklib.tasks.node",false]],"vmklib.tasks.python":[[5,"module-vmklib.tasks.python",false]],"vmklib.tasks.python.build":[[5,"module-vmklib.tasks.python.build",false]],"vmklib.tasks.python.datazen":[[5,"module-vmklib.tasks.python.datazen",false]],"vmklib.tasks.python.docs":[[5,"module-vmklib.tasks.python.docs",false]],"vmklib.tasks.python.lint":[[5,"module-vmklib.tasks.python.lint",false]],"vmklib.tasks.python.package":[[5,"module-vmklib.tasks.python.package",false]],"vmklib.tasks.python.release":[[5,"module-vmklib.tasks.python.release",false]],"vmklib.tasks.python.sa":[[5,"module-vmklib.tasks.python.sa",false]],"vmklib.tasks.python.test":[[5,"module-vmklib.tasks.python.test",false]],"vmklib.tasks.python.yaml":[[5,"module-vmklib.tasks.python.yaml",false]],"vmklib.tasks.release":[[2,"module-vmklib.tasks.release",false]],"vmklib.tasks.venv":[[2,"module-vmklib.tasks.venv",false]],"vmklib.util":[[1,"module-vmklib.util",false]],"vmklibbase (class in vmklib.tasks)":[[2,"vmklib.tasks.VmklibBase",false]],"yamllint (class in vmklib.tasks.python.yaml)":[[5,"vmklib.tasks.python.yaml.Yamllint",false]]},"objects":{"":[[1,0,0,"-","vmklib"]],"vmklib":[[1,0,0,"-","app"],[1,0,0,"-","entry"],[2,0,0,"-","tasks"],[1,0,0,"-","util"]],"vmklib.app":[[1,1,1,"","add_app_args"],[1,1,1,"","build_makefile"],[1,1,1,"","entry"],[1,1,1,"","get_data"],[1,1,1,"","initialize_task_manager"],[1,1,1,"","project"]],"vmklib.entry":[[1,1,1,"","main"]],"vmklib.tasks":[[2,2,1,"","VmklibBase"],[2,0,0,"-","args"],[2,0,0,"-","clean"],[2,0,0,"-","github"],[3,0,0,"-","mixins"],[4,0,0,"-","node"],[5,0,0,"-","python"],[2,0,0,"-","release"],[2,0,0,"-","venv"]],"vmklib.tasks.VmklibBase":[[2,3,1,"","build_dir"],[2,4,1,"","default_requirements"]],"vmklib.tasks.args":[[2,1,1,"","environ_fallback"],[2,1,1,"","environ_fallback_split"]],"vmklib.tasks.clean":[[2,2,1,"","Clean"]],"vmklib.tasks.clean.Clean":[[2,3,1,"","run"]],"vmklib.tasks.github":[[2,1,1,"","ensure_api_token"],[2,1,1,"","repo_url"]],"vmklib.tasks.mixins":[[3,2,1,"","CommandResult"],[3,2,1,"","ConcreteBuilderMixin"],[3,2,1,"","ConcreteOnceMixin"],[3,2,1,"","CurlMixin"],[3,0,0,"-","concrete"],[3,0,0,"-","curl"],[3,1,1,"","curl_headers"]],"vmklib.tasks.mixins.CommandResult":[[3,4,1,"","code"],[3,4,1,"","stderr"],[3,4,1,"","stdout"]],"vmklib.tasks.mixins.ConcreteBuilderMixin":[[3,3,1,"","concrete_path"],[3,3,1,"","is_concrete_stale"],[3,3,1,"","run_exit"],[3,3,1,"","update_concrete"]],"vmklib.tasks.mixins.ConcreteOnceMixin":[[3,3,1,"","run_enter"]],"vmklib.tasks.mixins.CurlMixin":[[3,3,1,"","curl"]],"vmklib.tasks.mixins.concrete":[[3,2,1,"","ConcreteBuilderMixin"],[3,2,1,"","ConcreteOnceMixin"]],"vmklib.tasks.mixins.concrete.ConcreteBuilderMixin":[[3,3,1,"","concrete_path"],[3,3,1,"","is_concrete_stale"],[3,3,1,"","run_exit"],[3,3,1,"","update_concrete"]],"vmklib.tasks.mixins.concrete.ConcreteOnceMixin":[[3,3,1,"","run_enter"]],"vmklib.tasks.mixins.curl":[[3,2,1,"","CommandResult"],[3,2,1,"","CurlMixin"],[3,1,1,"","curl_headers"]],"vmklib.tasks.mixins.curl.CommandResult":[[3,4,1,"","code"],[3,4,1,"","stderr"],[3,4,1,"","stdout"]],"vmklib.tasks.mixins.curl.CurlMixin":[[3,3,1,"","curl"]],"vmklib.tasks.node":[[4,2,1,"","Npx"],[4,1,1,"","register"]],"vmklib.tasks.node.Npx":[[4,3,1,"","run"]],"vmklib.tasks.python":[[5,0,0,"-","build"],[5,0,0,"-","datazen"],[5,0,0,"-","docs"],[5,0,0,"-","lint"],[5,0,0,"-","package"],[5,1,1,"","python_entry"],[5,1,1,"","python_version"],[5,0,0,"-","release"],[5,0,0,"-","sa"],[5,0,0,"-","test"],[5,1,1,"","venv_bin"],[5,1,1,"","venv_dir"],[5,1,1,"","venv_name"],[5,0,0,"-","yaml"]],"vmklib.tasks.python.build":[[5,2,1,"","PythonBuild"],[5,1,1,"","register"]],"vmklib.tasks.python.build.PythonBuild":[[5,3,1,"","run"]],"vmklib.tasks.python.datazen":[[5,2,1,"","DatazenTask"],[5,1,1,"","register"]],"vmklib.tasks.python.datazen.DatazenTask":[[5,4,1,"","default_requirements"],[5,3,1,"","run"]],"vmklib.tasks.python.docs":[[5,2,1,"","PydepsTask"],[5,1,1,"","register"]],"vmklib.tasks.python.docs.PydepsTask":[[5,4,1,"","default_requirements"],[5,3,1,"","run"]],"vmklib.tasks.python.lint":[[5,2,1,"","PythonLinter"],[5,1,1,"","register"]],"vmklib.tasks.python.lint.PythonLinter":[[5,4,1,"","default_requirements"],[5,4,1,"","linter_args"],[5,3,1,"","run"],[5,3,1,"","source_args"]],"vmklib.tasks.python.package":[[5,2,1,"","PythonPackage"],[5,1,1,"","register"]],"vmklib.tasks.python.package.PythonPackage":[[5,4,1,"","default_requirements"],[5,3,1,"","run"]],"vmklib.tasks.python.release":[[5,1,1,"","register"]],"vmklib.tasks.python.sa":[[5,1,1,"","register"]],"vmklib.tasks.python.test":[[5,2,1,"","PythonTester"],[5,1,1,"","register"]],"vmklib.tasks.python.test.PythonTester":[[5,4,1,"","default_requirements"],[5,3,1,"","run"]],"vmklib.tasks.python.yaml":[[5,2,1,"","Yamllint"],[5,1,1,"","register"]],"vmklib.tasks.python.yaml.Yamllint":[[5,4,1,"","default_requirements"],[5,3,1,"","run"]],"vmklib.tasks.release":[[2,2,1,"","GithubRelease"]],"vmklib.tasks.release.GithubRelease":[[2,3,1,"","create_release"],[2,3,1,"","release"],[2,3,1,"","run"],[2,3,1,"","upload_release_asset"]],"vmklib.tasks.venv":[[2,2,1,"","RequirementsInstaller"],[2,2,1,"","Venv"],[2,1,1,"","register"]],"vmklib.tasks.venv.RequirementsInstaller":[[2,3,1,"","run"]],"vmklib.tasks.venv.Venv":[[2,3,1,"","run"],[2,3,1,"","run_enter"]],"vmklib.util":[[1,1,1,"","to_slug"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","4":"py:attribute"},"terms":{"A":[2,3,4,5],"An":1,"By":3,"If":1,"This":[1,3],"_arg":[2,3],"_default":2,"_inbox":[2,3],"_kwarg":[2,3],"_outbox":[2,3],"add":[1,2],"add_app_arg":[0,1],"aggreg":3,"alia":3,"also":2,"analysi":5,"ani":[1,2,3,4,5],"api":2,"app":0,"applic":1,"arg":[0,1,3,4,5],"argument":[1,2,3],"argumentpars":1,"argv":1,"assess":3,"asset":2,"assist":2,"async":[2,3,4,5],"attempt":[2,5],"back":2,"base":[2,3,4,5],"boilerpl":1,"bool":[2,3,4,5],"bootstrap":3,"build":[1,2,3],"build_dir":[1,2],"build_makefil":[0,1],"callabl":[2,3,4,5],"can":1,"candid":3,"check":[2,3,5],"class":[2,3,4,5],"classmethod":2,"clean":[0,1],"code":[2,3],"command":[1,3,4,5],"commandresult":[2,3],"compat":3,"compil":3,"complet":[2,3],"concret":[1,2],"concrete_path":[2,3],"concretebuildermixin":[2,3],"concreteoncemixin":[2,3,5],"configur":[1,2,3],"consid":0,"contain":3,"convert":1,"coroutin":[2,3,4,5],"creat":[2,3,5],"create_releas":[1,2],"curl":[1,2],"curl_head":[2,3],"curlmixin":[2,3],"cwd":[2,4,5],"data":[1,2,3],"datazen":[1,2],"datazentask":[2,5],"default":[1,3],"default_requir":[1,2,5],"develop":0,"dict":[1,2,3,4,5],"directori":[1,2,3,5],"disk":3,"dist":2,"doc":[1,2],"document":5,"either":1,"endpoint":2,"ensur":[2,3],"ensure_api_token":[1,2],"entri":[0,3,5],"environ":[2,5],"environ_fallback":[1,2],"environ_fallback_split":[1,2],"execut":[1,2,3,4,5],"expos":[1,2],"extern":1,"fall":2,"field":3,"file":[2,3],"found":1,"generat":[2,3],"get":[2,3,5],"get_data":[0,1],"github":[0,1],"githubreleas":[1,2],"given":2,"gnu":3,"guess":1,"header":[2,3],"implement":[2,4,5],"import":1,"inbox":[2,3,4,5],"individu":5,"init":[2,5],"initialize_task_manag":[0,1],"instal":[2,5],"int":[1,2,3],"interfac":1,"intern":1,"is_concrete_stal":[2,3],"iter":[1,3],"js":4,"key":2,"keyword":2,"kind":2,"kwarg":[2,3,4,5],"like":3,"line":1,"lint":[1,2],"linter":5,"linter_arg":[2,5],"list":[1,2,5],"load":1,"log":[2,3,4,5],"logger":[2,3,4,5],"main":[0,1,3],"make":3,"makefil":1,"manag":[1,2,4,5],"metadata":1,"method":3,"miscellan":1,"mixin":[1,2],"modifi":3,"modul":0,"name":[1,2,3,4,5],"namedtupl":3,"namespac":1,"need":3,"ninja":[2,3],"node":[1,2],"none":[1,2,3,4,5],"npx":[2,4],"number":3,"onc":3,"onli":3,"option":2,"otherwis":2,"outbox":[2,4,5],"output":[2,3],"owner":2,"packag":0,"parent":1,"parser":1,"path":[1,2,3,4,5],"point":[1,5],"post_data":3,"prefix":1,"program":[1,5],"proj":1,"project":[0,1,2,4,5],"prototyp":2,"provid":1,"pydep":5,"pydepstask":[2,5],"pytest":5,"python":[1,2],"python_entri":[2,5],"python_vers":[2,5],"pythonbuild":[2,5],"pythonlint":[2,5],"pythonpackag":[2,5],"pythontest":[2,5],"regist":[1,2,4,5],"releas":[0,1],"release_id":2,"remov":2,"repo":2,"repo_url":[1,2],"request":1,"requir":2,"requirementsinstal":[1,2],"result":3,"retriev":2,"return":1,"ruff":5,"run":[1,2,3,4,5],"run_ent":[1,2,3],"run_exit":[2,3],"s":[1,2,5],"sa":[1,2],"script":5,"separ":2,"set":[2,5],"singl":5,"slug":1,"sourc":[1,2,3,4,5],"source_arg":[2,5],"specif":1,"sponsor":0,"static":5,"stderr":[2,3],"stdout":[2,3],"str":[1,2,3,4,5],"string":[1,5],"submodul":0,"subpackag":0,"subprocesslogmixin":[2,3,4,5],"substitut":[1,2,3,4,5],"system":[2,3],"t":1,"target":[1,2,3,4,5],"task":[0,1],"task_regist":1,"taskmanag":[1,2,4,5],"temporari":1,"test":[1,2],"text":3,"timer":[2,3,4,5],"to_slug":[0,1],"token":2,"tool":3,"true":3,"tupl":1,"unit":5,"updat":[2,3,5],"update_concret":[2,3],"upload":2,"upload_release_asset":[1,2],"url":2,"use":[1,2,3,5],"user_fil":1,"util":[0,5],"valu":2,"variabl":2,"venv":[0,1,5],"venv_bin":[2,5],"venv_dir":[2,5],"venv_nam":[2,5],"version":[2,5],"virtual":[2,5],"vmklibbas":[1,2,3],"wasn":1,"whitespac":2,"within":5,"work":[2,3,4,5],"write":3,"yaml":[1,2],"yamllint":[2,5]},"titles":["vmklib","vmklib package","vmklib.tasks package","vmklib.tasks.mixins package","vmklib.tasks.node package","vmklib.tasks.python package"],"titleterms":{"app":1,"arg":2,"build":5,"clean":2,"concret":3,"content":[0,1,2,3,4,5],"curl":3,"datazen":5,"doc":5,"entri":1,"github":2,"lint":5,"mixin":3,"modul":[1,2,3,4,5],"node":4,"packag":[1,2,3,4,5],"python":5,"releas":[2,5],"sa":5,"submodul":[1,2,3,5],"subpackag":[1,2],"task":[2,3,4,5],"test":5,"util":1,"venv":2,"vmklib":[0,1,2,3,4,5],"yaml":5}}) |
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="./" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
| <title>vmklib package — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = 'vmklib';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="genindex.html" /> | ||
| <link rel="search" title="Search" href="search.html" /> | ||
| <link rel="next" title="vmklib.tasks package" href="vmklib.tasks.html" /> | ||
| <link rel="prev" title="vmklib" href="index.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="current nav bd-sidenav"> | ||
| <li class="toctree-l1 current active has-children"><a class="current reference internal" href="#">vmklib package</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l2 has-children"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.node.html">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <div class="dropdown dropdown-download-buttons"> | ||
| <button class="btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download this page"> | ||
| <i class="fas fa-download"></i> | ||
| </button> | ||
| <ul class="dropdown-menu"> | ||
| <li><a href="_sources/vmklib.rst" target="_blank" | ||
| class="btn btn-sm btn-download-source-button dropdown-item" | ||
| title="Download source file" | ||
| data-bs-placement="left" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-file"></i> | ||
| </span> | ||
| <span class="btn__text-container">.rst</span> | ||
| </a> | ||
| </li> | ||
| <li> | ||
| <button onclick="window.print()" | ||
| class="btn btn-sm btn-download-pdf-button dropdown-item" | ||
| title="Print to PDF" | ||
| data-bs-placement="left" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-file-pdf"></i> | ||
| </span> | ||
| <span class="btn__text-container">.pdf</span> | ||
| </button> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <button class="sidebar-toggle secondary-toggle btn btn-sm" title="Toggle secondary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-list"></span> | ||
| </button> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1>vmklib package</h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| <div> | ||
| <h2> Contents </h2> | ||
| </div> | ||
| <nav aria-label="Page"> | ||
| <ul class="visible nav section-nav flex-column"> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#subpackages">Subpackages</a></li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.app">vmklib.app module</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.add_app_args"><code class="docutils literal notranslate"><span class="pre">add_app_args()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.build_makefile"><code class="docutils literal notranslate"><span class="pre">build_makefile()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.entry"><code class="docutils literal notranslate"><span class="pre">entry()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.get_data"><code class="docutils literal notranslate"><span class="pre">get_data()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.initialize_task_manager"><code class="docutils literal notranslate"><span class="pre">initialize_task_manager()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.project"><code class="docutils literal notranslate"><span class="pre">project()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.entry">vmklib.entry module</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.entry.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.util">vmklib.util module</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.util.to_slug"><code class="docutils literal notranslate"><span class="pre">to_slug()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib">Module contents</a></li> | ||
| </ul> | ||
| </nav> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <section id="vmklib-package"> | ||
| <h1>vmklib package<a class="headerlink" href="#vmklib-package" title="Link to this heading">#</a></h1> | ||
| <section id="subpackages"> | ||
| <h2>Subpackages<a class="headerlink" href="#subpackages" title="Link to this heading">#</a></h2> | ||
| <div class="toctree-wrapper compound"> | ||
| <ul> | ||
| <li class="toctree-l1"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><ul> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#subpackages">Subpackages</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.mixins.html#submodules">Submodules</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.concrete">vmklib.tasks.mixins.concrete module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins.curl">vmklib.tasks.mixins.curl module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.mixins.html#module-vmklib.tasks.mixins">Module contents</a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.node.html">vmklib.tasks.node package</a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.node.html#module-vmklib.tasks.node">Module contents</a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#submodules">Submodules</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.build">vmklib.tasks.python.build module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.datazen">vmklib.tasks.python.datazen module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.docs">vmklib.tasks.python.docs module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.lint">vmklib.tasks.python.lint module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.package">vmklib.tasks.python.package module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.release">vmklib.tasks.python.release module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.sa">vmklib.tasks.python.sa module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.test">vmklib.tasks.python.test module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python.yaml">vmklib.tasks.python.yaml module</a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.python.html#module-vmklib.tasks.python">Module contents</a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#submodules">Submodules</a></li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.args">vmklib.tasks.args module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.args.environ_fallback"><code class="docutils literal notranslate"><span class="pre">environ_fallback()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.args.environ_fallback_split"><code class="docutils literal notranslate"><span class="pre">environ_fallback_split()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.clean">vmklib.tasks.clean module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.clean.Clean"><code class="docutils literal notranslate"><span class="pre">Clean</span></code></a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.clean.Clean.run"><code class="docutils literal notranslate"><span class="pre">Clean.run()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.github">vmklib.tasks.github module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.github.ensure_api_token"><code class="docutils literal notranslate"><span class="pre">ensure_api_token()</span></code></a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.github.repo_url"><code class="docutils literal notranslate"><span class="pre">repo_url()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.release">vmklib.tasks.release module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease"><code class="docutils literal notranslate"><span class="pre">GithubRelease</span></code></a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.create_release"><code class="docutils literal notranslate"><span class="pre">GithubRelease.create_release()</span></code></a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.release"><code class="docutils literal notranslate"><span class="pre">GithubRelease.release()</span></code></a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.run"><code class="docutils literal notranslate"><span class="pre">GithubRelease.run()</span></code></a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.release.GithubRelease.upload_release_asset"><code class="docutils literal notranslate"><span class="pre">GithubRelease.upload_release_asset()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks.venv">vmklib.tasks.venv module</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.venv.RequirementsInstaller"><code class="docutils literal notranslate"><span class="pre">RequirementsInstaller</span></code></a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.venv.RequirementsInstaller.run"><code class="docutils literal notranslate"><span class="pre">RequirementsInstaller.run()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.venv.Venv"><code class="docutils literal notranslate"><span class="pre">Venv</span></code></a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.venv.Venv.run"><code class="docutils literal notranslate"><span class="pre">Venv.run()</span></code></a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.venv.Venv.run_enter"><code class="docutils literal notranslate"><span class="pre">Venv.run_enter()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.venv.register"><code class="docutils literal notranslate"><span class="pre">register()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toctree-l2"><a class="reference internal" href="vmklib.tasks.html#module-vmklib.tasks">Module contents</a><ul> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.VmklibBase"><code class="docutils literal notranslate"><span class="pre">VmklibBase</span></code></a><ul> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.VmklibBase.build_dir"><code class="docutils literal notranslate"><span class="pre">VmklibBase.build_dir()</span></code></a></li> | ||
| <li class="toctree-l4"><a class="reference internal" href="vmklib.tasks.html#vmklib.tasks.VmklibBase.default_requirements"><code class="docutils literal notranslate"><span class="pre">VmklibBase.default_requirements</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </section> | ||
| <section id="submodules"> | ||
| <h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> | ||
| </section> | ||
| <section id="module-vmklib.app"> | ||
| <span id="vmklib-app-module"></span><h2>vmklib.app module<a class="headerlink" href="#module-vmklib.app" title="Link to this heading">#</a></h2> | ||
| <p>vmklib - This package’s command-line entry-point application.</p> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.app.add_app_args"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.app.</span></span><span class="sig-name descname"><span class="pre">add_app_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ArgumentParser</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/vmklib/app.html#add_app_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.app.add_app_args" title="Link to this definition">#</a></dt> | ||
| <dd><p>Add application-specific arguments to the command-line parser.</p> | ||
| </dd></dl> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.app.build_makefile"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.app.</span></span><span class="sig-name descname"><span class="pre">build_makefile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">directory</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">proj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="_modules/vmklib/app.html#build_makefile"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.app.build_makefile" title="Link to this definition">#</a></dt> | ||
| <dd><p>Build a temporary makefile and return the path.</p> | ||
| </dd></dl> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.app.entry"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.app.</span></span><span class="sig-name descname"><span class="pre">entry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Namespace</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="_modules/vmklib/app.html#entry"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.app.entry" title="Link to this definition">#</a></dt> | ||
| <dd><p>Execute the requested task.</p> | ||
| </dd></dl> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.app.get_data"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.app.</span></span><span class="sig-name descname"><span class="pre">get_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">targets</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="_modules/vmklib/app.html#get_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.app.get_data" title="Link to this definition">#</a></dt> | ||
| <dd><p>Load configuration data if it can be found.</p> | ||
| </dd></dl> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.app.initialize_task_manager"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.app.</span></span><span class="sig-name descname"><span class="pre">initialize_task_manager</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manager</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">TaskManager</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">proj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_register</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">directory</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">substitutions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/vmklib/app.html#initialize_task_manager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.app.initialize_task_manager" title="Link to this definition">#</a></dt> | ||
| <dd><p>Load internal and external tasks to the task manager.</p> | ||
| </dd></dl> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.app.project"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.app.</span></span><span class="sig-name descname"><span class="pre">project</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="_modules/vmklib/app.html#project"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.app.project" title="Link to this definition">#</a></dt> | ||
| <dd><p>If the project name wasn’t provided, guess that it’s either the name | ||
| of the parent directory, or that name as a slug.</p> | ||
| </dd></dl> | ||
| </section> | ||
| <section id="module-vmklib.entry"> | ||
| <span id="vmklib-entry-module"></span><h2>vmklib.entry module<a class="headerlink" href="#module-vmklib.entry" title="Link to this heading">#</a></h2> | ||
| <p>This package’s command-line entry-point (boilerplate).</p> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.entry.main"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.entry.</span></span><span class="sig-name descname"><span class="pre">main</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">argv</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="_modules/vmklib/entry.html#main"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.entry.main" title="Link to this definition">#</a></dt> | ||
| <dd><p>Program entry-point.</p> | ||
| </dd></dl> | ||
| </section> | ||
| <section id="module-vmklib.util"> | ||
| <span id="vmklib-util-module"></span><h2>vmklib.util module<a class="headerlink" href="#module-vmklib.util" title="Link to this heading">#</a></h2> | ||
| <p>An interface exposing miscellaneous utilities.</p> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.util.to_slug"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.util.</span></span><span class="sig-name descname"><span class="pre">to_slug</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="_modules/vmklib/util.html#to_slug"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.util.to_slug" title="Link to this definition">#</a></dt> | ||
| <dd><p>Convert a string to an import slug.</p> | ||
| </dd></dl> | ||
| </section> | ||
| <section id="module-vmklib"> | ||
| <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-vmklib" title="Link to this heading">#</a></h2> | ||
| <p>Useful defaults and other package metadata.</p> | ||
| </section> | ||
| </section> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| <a class="left-prev" | ||
| href="index.html" | ||
| title="previous page"> | ||
| <i class="fa-solid fa-angle-left"></i> | ||
| <div class="prev-next-info"> | ||
| <p class="prev-next-subtitle">previous</p> | ||
| <p class="prev-next-title">vmklib</p> | ||
| </div> | ||
| </a> | ||
| <a class="right-next" | ||
| href="vmklib.tasks.html" | ||
| title="next page"> | ||
| <div class="prev-next-info"> | ||
| <p class="prev-next-subtitle">next</p> | ||
| <p class="prev-next-title">vmklib.tasks package</p> | ||
| </div> | ||
| <i class="fa-solid fa-angle-right"></i> | ||
| </a> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> | ||
| <div class="sidebar-secondary-item"> | ||
| <div class="page-toc tocsection onthispage"> | ||
| <i class="fa-solid fa-list"></i> Contents | ||
| </div> | ||
| <nav class="bd-toc-nav page-toc"> | ||
| <ul class="visible nav section-nav flex-column"> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#subpackages">Subpackages</a></li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.app">vmklib.app module</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.add_app_args"><code class="docutils literal notranslate"><span class="pre">add_app_args()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.build_makefile"><code class="docutils literal notranslate"><span class="pre">build_makefile()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.entry"><code class="docutils literal notranslate"><span class="pre">entry()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.get_data"><code class="docutils literal notranslate"><span class="pre">get_data()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.initialize_task_manager"><code class="docutils literal notranslate"><span class="pre">initialize_task_manager()</span></code></a></li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.app.project"><code class="docutils literal notranslate"><span class="pre">project()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.entry">vmklib.entry module</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.entry.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.util">vmklib.util module</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.util.to_slug"><code class="docutils literal notranslate"><span class="pre">to_slug()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib">Module contents</a></li> | ||
| </ul> | ||
| </nav></div> | ||
| </div></div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| <!DOCTYPE html> | ||
| <html lang="en" data-content_root="./" > | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
| <title>vmklib.tasks.node package — docs</title> | ||
| <script data-cfasync="false"> | ||
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | ||
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; | ||
| </script> | ||
| <!-- Loaded before other Sphinx assets --> | ||
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> | ||
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> | ||
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> | ||
| <!-- Pre-loaded scripts that we'll load fully later --> | ||
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> | ||
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/documentation_options.js?v=55d7fe76"></script> | ||
| <script src="_static/doctools.js?v=fd6eb6e6"></script> | ||
| <script src="_static/sphinx_highlight.js?v=6ffebe34"></script> | ||
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> | ||
| <script>DOCUMENTATION_OPTIONS.pagename = 'vmklib.tasks.node';</script> | ||
| <link rel="icon" href="https://www.libre-embedded.com/favicon.ico"/> | ||
| <link rel="index" title="Index" href="genindex.html" /> | ||
| <link rel="search" title="Search" href="search.html" /> | ||
| <link rel="next" title="vmklib.tasks.python package" href="vmklib.tasks.python.html" /> | ||
| <link rel="prev" title="vmklib.tasks.mixins package" href="vmklib.tasks.mixins.html" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| <meta name="docsearch:language" content="en"/> | ||
| </head> | ||
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | ||
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> | ||
| <div id="pst-scroll-pixel-helper"></div> | ||
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> | ||
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-primary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> | ||
| <input type="checkbox" | ||
| class="sidebar-toggle" | ||
| id="pst-secondary-sidebar-checkbox"/> | ||
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> | ||
| <div class="search-button__wrapper"> | ||
| <div class="search-button__overlay"></div> | ||
| <div class="search-button__search-container"> | ||
| <form class="bd-search d-flex align-items-center" | ||
| action="search.html" | ||
| method="get"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <input type="search" | ||
| class="form-control" | ||
| name="q" | ||
| id="search-input" | ||
| placeholder="Search..." | ||
| aria-label="Search..." | ||
| autocomplete="off" | ||
| autocorrect="off" | ||
| autocapitalize="off" | ||
| spellcheck="false"/> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | ||
| </form></div> | ||
| </div> | ||
| <div class="pst-async-banner-revealer d-none"> | ||
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> | ||
| </div> | ||
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> | ||
| </header> | ||
| <div class="bd-container"> | ||
| <div class="bd-container__inner bd-page-width"> | ||
| <div class="bd-sidebar-primary bd-sidebar"> | ||
| <div class="sidebar-header-items sidebar-primary__section"> | ||
| </div> | ||
| <div class="sidebar-primary-items__start sidebar-primary__section"> | ||
| <div class="sidebar-primary-item"> | ||
| <a class="navbar-brand logo" href="index.html"> | ||
| <img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-light" alt="docs - Home"/> | ||
| <script>document.write(`<img src="https://www.libre-embedded.com/static/png/chip-circle-bootstrap/128x128.png" class="logo__image only-dark" alt="docs - Home"/>`);</script> | ||
| </a></div> | ||
| <div class="sidebar-primary-item"> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass"></i> | ||
| <span class="search-button__default-text">Search</span> | ||
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> | ||
| </button> | ||
| `); | ||
| </script></div> | ||
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> | ||
| <div class="bd-toc-item navbar-nav active"> | ||
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Contents:</span></p> | ||
| <ul class="current nav bd-sidenav"> | ||
| <li class="toctree-l1 current active has-children"><a class="reference internal" href="vmklib.html">vmklib package</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> | ||
| <li class="toctree-l2 current active has-children"><a class="reference internal" href="vmklib.tasks.html">vmklib.tasks package</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.mixins.html">vmklib.tasks.mixins package</a></li> | ||
| <li class="toctree-l3 current active"><a class="current reference internal" href="#">vmklib.tasks.node package</a></li> | ||
| <li class="toctree-l3"><a class="reference internal" href="vmklib.tasks.python.html">vmklib.tasks.python package</a></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </details></li> | ||
| </ul> | ||
| </div> | ||
| </nav></div> | ||
| </div> | ||
| <div class="sidebar-primary-items__end sidebar-primary__section"> | ||
| </div> | ||
| <div id="rtd-footer-container"></div> | ||
| </div> | ||
| <main id="main-content" class="bd-main" role="main"> | ||
| <div class="sbt-scroll-pixel-helper"></div> | ||
| <div class="bd-content"> | ||
| <div class="bd-article-container"> | ||
| <div class="bd-header-article d-print-none"> | ||
| <div class="header-article-items header-article__inner"> | ||
| <div class="header-article-items__start"> | ||
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-bars"></span> | ||
| </button></div> | ||
| </div> | ||
| <div class="header-article-items__end"> | ||
| <div class="header-article-item"> | ||
| <div class="article-header-buttons"> | ||
| <div class="dropdown dropdown-download-buttons"> | ||
| <button class="btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download this page"> | ||
| <i class="fas fa-download"></i> | ||
| </button> | ||
| <ul class="dropdown-menu"> | ||
| <li><a href="_sources/vmklib.tasks.node.rst" target="_blank" | ||
| class="btn btn-sm btn-download-source-button dropdown-item" | ||
| title="Download source file" | ||
| data-bs-placement="left" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-file"></i> | ||
| </span> | ||
| <span class="btn__text-container">.rst</span> | ||
| </a> | ||
| </li> | ||
| <li> | ||
| <button onclick="window.print()" | ||
| class="btn btn-sm btn-download-pdf-button dropdown-item" | ||
| title="Print to PDF" | ||
| data-bs-placement="left" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-file-pdf"></i> | ||
| </span> | ||
| <span class="btn__text-container">.pdf</span> | ||
| </button> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| <button onclick="toggleFullScreen()" | ||
| class="btn btn-sm btn-fullscreen-button" | ||
| title="Fullscreen mode" | ||
| data-bs-placement="bottom" data-bs-toggle="tooltip" | ||
| > | ||
| <span class="btn__icon-container"> | ||
| <i class="fas fa-expand"></i> | ||
| </span> | ||
| </button> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> | ||
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> | ||
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <script> | ||
| document.write(` | ||
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> | ||
| </button> | ||
| `); | ||
| </script> | ||
| <button class="sidebar-toggle secondary-toggle btn btn-sm" title="Toggle secondary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> | ||
| <span class="fa-solid fa-list"></span> | ||
| </button> | ||
| </div></div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="jb-print-docs-body" class="onlyprint"> | ||
| <h1>vmklib.tasks.node package</h1> | ||
| <!-- Table of contents --> | ||
| <div id="print-main-content"> | ||
| <div id="jb-print-toc"> | ||
| <div> | ||
| <h2> Contents </h2> | ||
| </div> | ||
| <nav aria-label="Page"> | ||
| <ul class="visible nav section-nav flex-column"> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.tasks.node">Module contents</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.tasks.node.Npx"><code class="docutils literal notranslate"><span class="pre">Npx</span></code></a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.tasks.node.Npx.run"><code class="docutils literal notranslate"><span class="pre">Npx.run()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.tasks.node.register"><code class="docutils literal notranslate"><span class="pre">register()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </nav> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div id="searchbox"></div> | ||
| <article class="bd-article"> | ||
| <section id="vmklib-tasks-node-package"> | ||
| <h1>vmklib.tasks.node package<a class="headerlink" href="#vmklib-tasks-node-package" title="Link to this heading">#</a></h1> | ||
| <section id="module-vmklib.tasks.node"> | ||
| <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-vmklib.tasks.node" title="Link to this heading">#</a></h2> | ||
| <p>Task implementations for working with node.js.</p> | ||
| <dl class="py class"> | ||
| <dt class="sig sig-object py" id="vmklib.tasks.node.Npx"> | ||
| <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">vmklib.tasks.node.</span></span><span class="sig-name descname"><span class="pre">Npx</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">execute</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Coroutine</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Logger</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Timer</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Target</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/vmklib/tasks/node.html#Npx"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.tasks.node.Npx" title="Link to this definition">#</a></dt> | ||
| <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">SubprocessLogMixin</span></code></p> | ||
| <p>A task that runs npx.</p> | ||
| <dl class="py method"> | ||
| <dt class="sig sig-object py" id="vmklib.tasks.node.Npx.run"> | ||
| <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inbox</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">outbox</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="_modules/vmklib/tasks/node.html#Npx.run"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.tasks.node.Npx.run" title="Link to this definition">#</a></dt> | ||
| <dd><p>Run command.</p> | ||
| </dd></dl> | ||
| </dd></dl> | ||
| <dl class="py function"> | ||
| <dt class="sig sig-object py" id="vmklib.tasks.node.register"> | ||
| <span class="sig-prename descclassname"><span class="pre">vmklib.tasks.node.</span></span><span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manager</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">TaskManager</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">project</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cwd</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">substitutions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="_modules/vmklib/tasks/node.html#register"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#vmklib.tasks.node.register" title="Link to this definition">#</a></dt> | ||
| <dd><p>Register node.js project tasks to the manager.</p> | ||
| </dd></dl> | ||
| </section> | ||
| </section> | ||
| </article> | ||
| <footer class="prev-next-footer d-print-none"> | ||
| <div class="prev-next-area"> | ||
| <a class="left-prev" | ||
| href="vmklib.tasks.mixins.html" | ||
| title="previous page"> | ||
| <i class="fa-solid fa-angle-left"></i> | ||
| <div class="prev-next-info"> | ||
| <p class="prev-next-subtitle">previous</p> | ||
| <p class="prev-next-title">vmklib.tasks.mixins package</p> | ||
| </div> | ||
| </a> | ||
| <a class="right-next" | ||
| href="vmklib.tasks.python.html" | ||
| title="next page"> | ||
| <div class="prev-next-info"> | ||
| <p class="prev-next-subtitle">next</p> | ||
| <p class="prev-next-title">vmklib.tasks.python package</p> | ||
| </div> | ||
| <i class="fa-solid fa-angle-right"></i> | ||
| </a> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> | ||
| <div class="sidebar-secondary-item"> | ||
| <div class="page-toc tocsection onthispage"> | ||
| <i class="fa-solid fa-list"></i> Contents | ||
| </div> | ||
| <nav class="bd-toc-nav page-toc"> | ||
| <ul class="visible nav section-nav flex-column"> | ||
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-vmklib.tasks.node">Module contents</a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.tasks.node.Npx"><code class="docutils literal notranslate"><span class="pre">Npx</span></code></a><ul class="nav section-nav flex-column"> | ||
| <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.tasks.node.Npx.run"><code class="docutils literal notranslate"><span class="pre">Npx.run()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#vmklib.tasks.node.register"><code class="docutils literal notranslate"><span class="pre">register()</span></code></a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </nav></div> | ||
| </div></div> | ||
| </div> | ||
| <footer class="bd-footer-content"> | ||
| <div class="bd-footer-content__inner container"> | ||
| <div class="footer-item"> | ||
| <p class="component-author"> | ||
| By Libre Embedded | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| <p class="copyright"> | ||
| © Copyright 2026, Libre Embedded. | ||
| <br/> | ||
| </p> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| <div class="footer-item"> | ||
| </div> | ||
| </div> | ||
| </footer> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <!-- Scripts loaded after <body> so the DOM is not blocked --> | ||
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> | ||
| <footer class="bd-footer"> | ||
| </footer> | ||
| </body> | ||
| </html> |
Sorry, the diff of this file is too big to display
+5
-5
| Metadata-Version: 2.4 | ||
| Name: vmklib | ||
| Version: 2.0.10 | ||
| Version: 2.0.11 | ||
| Summary: Simplify project workflows by standardizing use of GNU Make. | ||
@@ -22,4 +22,4 @@ Home-page: https://github.com/libre-embedded/vmklib | ||
| License-File: LICENSE | ||
| Requires-Dist: experimental-lowqa>=0.1.12 | ||
| Requires-Dist: vcorelib>=3.6.7 | ||
| Requires-Dist: experimental-lowqa>=0.1.12 | ||
| Provides-Extra: test | ||
@@ -49,7 +49,7 @@ Requires-Dist: pylint; extra == "test" | ||
| version=3.2.3 | ||
| hash=d8aa4ad5ca486b00a468ebf03d64f127 | ||
| hash=4f511a6c30ac02e87798ca5ac4bd5f94 | ||
| ===================================== | ||
| --> | ||
| # vmklib ([2.0.10](https://pypi.org/project/vmklib/)) | ||
| # vmklib ([2.0.11](https://pypi.org/project/vmklib/)) | ||
@@ -111,3 +111,3 @@ [](https://pypi.org/project/vmklib/) | ||
| ``` | ||
| $ ./venv3.13/bin/mk -h | ||
| $ ./venv3.14/bin/mk -h | ||
@@ -114,0 +114,0 @@ usage: mk [-h] [--version] [-v] [-q] [--curses] [--no-uvloop] [-C DIR] |
+1
-1
@@ -7,3 +7,3 @@ [build-system] | ||
| name = "vmklib" | ||
| version = "2.0.10" | ||
| version = "2.0.11" | ||
| description = "Simplify project workflows by standardizing use of GNU Make." | ||
@@ -10,0 +10,0 @@ readme = "README.md" |
+3
-3
@@ -5,7 +5,7 @@ <!-- | ||
| version=3.2.3 | ||
| hash=d8aa4ad5ca486b00a468ebf03d64f127 | ||
| hash=4f511a6c30ac02e87798ca5ac4bd5f94 | ||
| ===================================== | ||
| --> | ||
| # vmklib ([2.0.10](https://pypi.org/project/vmklib/)) | ||
| # vmklib ([2.0.11](https://pypi.org/project/vmklib/)) | ||
@@ -67,3 +67,3 @@ [](https://pypi.org/project/vmklib/) | ||
| ``` | ||
| $ ./venv3.13/bin/mk -h | ||
| $ ./venv3.14/bin/mk -h | ||
@@ -70,0 +70,0 @@ usage: mk [-h] [--version] [-v] [-q] [--curses] [--no-uvloop] [-C DIR] |
| Metadata-Version: 2.4 | ||
| Name: vmklib | ||
| Version: 2.0.10 | ||
| Version: 2.0.11 | ||
| Summary: Simplify project workflows by standardizing use of GNU Make. | ||
@@ -22,4 +22,4 @@ Home-page: https://github.com/libre-embedded/vmklib | ||
| License-File: LICENSE | ||
| Requires-Dist: experimental-lowqa>=0.1.12 | ||
| Requires-Dist: vcorelib>=3.6.7 | ||
| Requires-Dist: experimental-lowqa>=0.1.12 | ||
| Provides-Extra: test | ||
@@ -49,7 +49,7 @@ Requires-Dist: pylint; extra == "test" | ||
| version=3.2.3 | ||
| hash=d8aa4ad5ca486b00a468ebf03d64f127 | ||
| hash=4f511a6c30ac02e87798ca5ac4bd5f94 | ||
| ===================================== | ||
| --> | ||
| # vmklib ([2.0.10](https://pypi.org/project/vmklib/)) | ||
| # vmklib ([2.0.11](https://pypi.org/project/vmklib/)) | ||
@@ -111,3 +111,3 @@ [](https://pypi.org/project/vmklib/) | ||
| ``` | ||
| $ ./venv3.13/bin/mk -h | ||
| $ ./venv3.14/bin/mk -h | ||
@@ -114,0 +114,0 @@ usage: mk [-h] [--version] [-v] [-q] [--curses] [--no-uvloop] [-C DIR] |
@@ -0,3 +1,3 @@ | ||
| experimental-lowqa>=0.1.12 | ||
| vcorelib>=3.6.7 | ||
| experimental-lowqa>=0.1.12 | ||
@@ -4,0 +4,0 @@ [test] |
@@ -32,2 +32,148 @@ LICENSE | ||
| vmklib/data/data/header.mk | ||
| vmklib/data/docs/genindex.html | ||
| vmklib/data/docs/index.html | ||
| vmklib/data/docs/py-modindex.html | ||
| vmklib/data/docs/search.html | ||
| vmklib/data/docs/searchindex.js | ||
| vmklib/data/docs/vmklib.html | ||
| vmklib/data/docs/vmklib.tasks.html | ||
| vmklib/data/docs/vmklib.tasks.mixins.html | ||
| vmklib/data/docs/vmklib.tasks.node.html | ||
| vmklib/data/docs/vmklib.tasks.python.html | ||
| vmklib/data/docs/_modules/index.html | ||
| vmklib/data/docs/_modules/vcorelib/python.html | ||
| vmklib/data/docs/_static/base-stemmer.js | ||
| vmklib/data/docs/_static/basic.css | ||
| vmklib/data/docs/_static/doctools.js | ||
| vmklib/data/docs/_static/documentation_options.js | ||
| vmklib/data/docs/_static/english-stemmer.js | ||
| vmklib/data/docs/_static/file.png | ||
| vmklib/data/docs/_static/language_data.js | ||
| vmklib/data/docs/_static/minus.png | ||
| vmklib/data/docs/_static/plus.png | ||
| vmklib/data/docs/_static/pygments.css | ||
| vmklib/data/docs/_static/sbt-webpack-macros.html | ||
| vmklib/data/docs/_static/searchtools.js | ||
| vmklib/data/docs/_static/sphinx_highlight.js | ||
| vmklib/data/docs/_static/webpack-macros.html | ||
| vmklib/data/docs/_static/images/logo_binder.svg | ||
| vmklib/data/docs/_static/images/logo_colab.png | ||
| vmklib/data/docs/_static/images/logo_deepnote.svg | ||
| vmklib/data/docs/_static/images/logo_jupyterhub.svg | ||
| vmklib/data/docs/_static/locales/ar/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ar/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/bg/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/bg/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/bn/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/bn/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ca/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ca/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/cs/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/cs/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/da/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/da/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/de/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/de/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/el/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/el/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/eo/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/eo/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/es/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/es/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/et/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/et/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/fi/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/fi/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/fr/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/fr/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/hr/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/hr/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/id/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/id/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/it/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/it/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/iw/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/iw/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ja/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ja/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ko/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ko/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/lt/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/lt/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/lv/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/lv/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ml/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ml/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/mr/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/mr/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ms/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ms/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/nl/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/nl/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/no/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/no/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/pl/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/pl/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/pt/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/pt/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ro/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ro/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ru/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ru/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/sk/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/sk/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/sl/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/sl/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/sr/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/sr/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/sv/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/sv/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ta/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ta/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/te/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/te/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/tg/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/tg/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/th/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/th/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/tl/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/tl/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/tr/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/tr/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/uk/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/uk/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/ur/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/ur/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/vi/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/vi/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo | ||
| vmklib/data/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po | ||
| vmklib/data/docs/_static/scripts/bootstrap.js | ||
| vmklib/data/docs/_static/scripts/bootstrap.js.LICENSE.txt | ||
| vmklib/data/docs/_static/scripts/bootstrap.js.map | ||
| vmklib/data/docs/_static/scripts/pydata-sphinx-theme.js | ||
| vmklib/data/docs/_static/scripts/pydata-sphinx-theme.js.map | ||
| vmklib/data/docs/_static/scripts/sphinx-book-theme.js | ||
| vmklib/data/docs/_static/scripts/sphinx-book-theme.js.map | ||
| vmklib/data/docs/_static/styles/bootstrap.css | ||
| vmklib/data/docs/_static/styles/bootstrap.css.map | ||
| vmklib/data/docs/_static/styles/pydata-sphinx-theme.css | ||
| vmklib/data/docs/_static/styles/pydata-sphinx-theme.css.map | ||
| vmklib/data/docs/_static/styles/sphinx-book-theme.css | ||
| vmklib/data/docs/_static/styles/sphinx-book-theme.css.map | ||
| vmklib/data/docs/_static/styles/theme.css | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/LICENSE.txt | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/css/all.min.css | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/js/all.min.js | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/js/all.min.js.LICENSE.txt | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.ttf | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2 | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.ttf | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2 | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.ttf | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2 | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-v4compatibility.ttf | ||
| vmklib/data/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-v4compatibility.woff2 | ||
| vmklib/data/lib_tasks/__init__.py | ||
@@ -34,0 +180,0 @@ vmklib/data/lib_tasks/conf.py |
| # ===================================== | ||
| # generator=datazen | ||
| # version=3.2.3 | ||
| # hash=84ca640538298907d3ad1b6d85e95e37 | ||
| # hash=466e6e247f0d4c88668873009f88a021 | ||
| # ===================================== | ||
@@ -13,2 +13,2 @@ | ||
| PKG_NAME = "vmklib" | ||
| VERSION = "2.0.10" | ||
| VERSION = "2.0.11" |
Sorry, the diff of this file is not supported yet
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
5219204
4531.76%206
243.33%6491
306.7%