Release 92a26594015be798c2a5b438595067e9 ut update
This commit is contained in:
parent
9237f6f7f7
commit
aa321c8c9c
@ -1,4 +1,4 @@
|
|||||||
# Sphinx build info version 1
|
# Sphinx build info version 1
|
||||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||||
config: f5d67943169485e18d1baf85e44df2d2
|
config: b08cae1d15d0beb3312bc445500082d9
|
||||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||||
|
Binary file not shown.
BIN
_docs_/_downloads/c68c8cb37d326ff4fa7a0781182bc493/unittest.pdf
Normal file
BIN
_docs_/_downloads/c68c8cb37d326ff4fa7a0781182bc493/unittest.pdf
Normal file
Binary file not shown.
@ -1,10 +1,10 @@
|
|||||||
.. fstools documentation master file, created by
|
.. documentation master file, created by
|
||||||
sphinx-quickstart on Fri Jan 8 02:48:28 2021.
|
sphinx-quickstart on Fri Jan 1 19:56:01 2021.
|
||||||
You can adapt this file completely to your liking, but it should at least
|
You can adapt this file completely to your liking, but it should at least
|
||||||
contain the root `toctree` directive.
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
Welcome to fstools's documentation!
|
Welcome to cachings's documentation!
|
||||||
===================================
|
====================================
|
||||||
|
|
||||||
.. automodule:: fstools
|
.. automodule:: fstools
|
||||||
:members:
|
:members:
|
||||||
@ -21,3 +21,4 @@ Indices and tables
|
|||||||
* :ref:`genindex`
|
* :ref:`genindex`
|
||||||
* :ref:`modindex`
|
* :ref:`modindex`
|
||||||
* :ref:`search`
|
* :ref:`search`
|
||||||
|
|
||||||
|
@ -1,12 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* basic.css
|
|
||||||
* ~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx stylesheet -- basic theme.
|
* Sphinx stylesheet -- basic theme.
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* -- main layout ----------------------------------------------------------- */
|
/* -- main layout ----------------------------------------------------------- */
|
||||||
@ -15,6 +8,12 @@ div.clearer {
|
|||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.section::after {
|
||||||
|
display: block;
|
||||||
|
content: '';
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
|
||||||
/* -- relbar ---------------------------------------------------------------- */
|
/* -- relbar ---------------------------------------------------------------- */
|
||||||
|
|
||||||
div.related {
|
div.related {
|
||||||
@ -109,22 +108,18 @@ img {
|
|||||||
/* -- search page ----------------------------------------------------------- */
|
/* -- search page ----------------------------------------------------------- */
|
||||||
|
|
||||||
ul.search {
|
ul.search {
|
||||||
margin: 10px 0 0 20px;
|
margin-top: 10px;
|
||||||
padding: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.search li {
|
ul.search li {
|
||||||
padding: 5px 0 5px 20px;
|
padding: 5px 0;
|
||||||
background-image: url(file.png);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: 0 7px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.search li a {
|
ul.search li a {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.search li div.context {
|
ul.search li p.context {
|
||||||
color: #888;
|
color: #888;
|
||||||
margin: 2px 0 0 30px;
|
margin: 2px 0 0 30px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
@ -216,7 +211,7 @@ table.modindextable td {
|
|||||||
/* -- general body styles --------------------------------------------------- */
|
/* -- general body styles --------------------------------------------------- */
|
||||||
|
|
||||||
div.body {
|
div.body {
|
||||||
min-width: 450px;
|
min-width: 360px;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,6 +226,10 @@ a.headerlink {
|
|||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #551A8B;
|
||||||
|
}
|
||||||
|
|
||||||
h1:hover > a.headerlink,
|
h1:hover > a.headerlink,
|
||||||
h2:hover > a.headerlink,
|
h2:hover > a.headerlink,
|
||||||
h3:hover > a.headerlink,
|
h3:hover > a.headerlink,
|
||||||
@ -261,19 +260,25 @@ p.rubric {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
img.align-left, .figure.align-left, object.align-left {
|
img.align-left, figure.align-left, .figure.align-left, object.align-left {
|
||||||
clear: left;
|
clear: left;
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
img.align-right, .figure.align-right, object.align-right {
|
img.align-right, figure.align-right, .figure.align-right, object.align-right {
|
||||||
clear: right;
|
clear: right;
|
||||||
float: right;
|
float: right;
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
img.align-center, .figure.align-center, object.align-center {
|
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;
|
display: block;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
@ -287,30 +292,45 @@ img.align-center, .figure.align-center, object.align-center {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.align-default {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.align-right {
|
.align-right {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- sidebars -------------------------------------------------------------- */
|
/* -- sidebars -------------------------------------------------------------- */
|
||||||
|
|
||||||
div.sidebar {
|
div.sidebar,
|
||||||
|
aside.sidebar {
|
||||||
margin: 0 0 0.5em 1em;
|
margin: 0 0 0.5em 1em;
|
||||||
border: 1px solid #ddb;
|
border: 1px solid #ddb;
|
||||||
padding: 7px 7px 0 7px;
|
padding: 7px;
|
||||||
background-color: #ffe;
|
background-color: #ffe;
|
||||||
width: 40%;
|
width: 40%;
|
||||||
float: right;
|
float: right;
|
||||||
|
clear: right;
|
||||||
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sidebar-title {
|
p.sidebar-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nav.contents,
|
||||||
|
aside.topic,
|
||||||
|
div.admonition, div.topic, blockquote {
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
|
||||||
/* -- topics ---------------------------------------------------------------- */
|
/* -- topics ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
nav.contents,
|
||||||
|
aside.topic,
|
||||||
div.topic {
|
div.topic {
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
padding: 7px 7px 0 7px;
|
padding: 7px;
|
||||||
margin: 10px 0 10px 0;
|
margin: 10px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,10 +352,6 @@ div.admonition dt {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.admonition dl {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.admonition-title {
|
p.admonition-title {
|
||||||
margin: 0px 10px 5px 0px;
|
margin: 0px 10px 5px 0px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -346,9 +362,34 @@ div.body p.centered {
|
|||||||
margin-top: 25px;
|
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 ---------------------------------------------------------------- */
|
/* -- tables ---------------------------------------------------------------- */
|
||||||
|
|
||||||
table.docutils {
|
table.docutils {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
@ -358,6 +399,11 @@ table.align-center {
|
|||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.align-default {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
table caption span.caption-number {
|
table caption span.caption-number {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
@ -373,10 +419,6 @@ table.docutils td, table.docutils th {
|
|||||||
border-bottom: 1px solid #aaa;
|
border-bottom: 1px solid #aaa;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.footnote td, table.footnote th {
|
|
||||||
border: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
th {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-right: 5px;
|
padding-right: 5px;
|
||||||
@ -391,22 +433,34 @@ table.citation td {
|
|||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
th > :first-child,
|
||||||
|
td > :first-child {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th > :last-child,
|
||||||
|
td > :last-child {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
/* -- figures --------------------------------------------------------------- */
|
/* -- figures --------------------------------------------------------------- */
|
||||||
|
|
||||||
div.figure {
|
div.figure, figure {
|
||||||
margin: 0.5em;
|
margin: 0.5em;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.figure p.caption {
|
div.figure p.caption, figcaption {
|
||||||
padding: 0.3em;
|
padding: 0.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.figure p.caption span.caption-number {
|
div.figure p.caption span.caption-number,
|
||||||
|
figcaption span.caption-number {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.figure p.caption span.caption-text {
|
div.figure p.caption span.caption-text,
|
||||||
|
figcaption span.caption-text {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- field list styles ----------------------------------------------------- */
|
/* -- field list styles ----------------------------------------------------- */
|
||||||
@ -433,10 +487,71 @@ table.field-list td, table.field-list th {
|
|||||||
|
|
||||||
/* -- hlist styles ---------------------------------------------------------- */
|
/* -- hlist styles ---------------------------------------------------------- */
|
||||||
|
|
||||||
|
table.hlist {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
table.hlist td {
|
table.hlist td {
|
||||||
vertical-align: top;
|
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 ----------------------------------------------------- */
|
/* -- other body styles ----------------------------------------------------- */
|
||||||
|
|
||||||
@ -460,11 +575,81 @@ ol.upperroman {
|
|||||||
list-style: upper-roman;
|
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 {
|
dl {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
dd p {
|
dd > :first-child {
|
||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,6 +663,21 @@ dd {
|
|||||||
margin-left: 30px;
|
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 {
|
dt:target, span.highlighted {
|
||||||
background-color: #fbe54e;
|
background-color: #fbe54e;
|
||||||
}
|
}
|
||||||
@ -491,14 +691,6 @@ dl.glossary dt {
|
|||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.optional {
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sig-paren {
|
|
||||||
font-size: larger;
|
|
||||||
}
|
|
||||||
|
|
||||||
.versionmodified {
|
.versionmodified {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
@ -537,6 +729,13 @@ dl.glossary dt {
|
|||||||
font-style: oblique;
|
font-style: oblique;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.classifier:before {
|
||||||
|
font-style: normal;
|
||||||
|
margin: 0 0.5em;
|
||||||
|
content: ":";
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
abbr, acronym {
|
abbr, acronym {
|
||||||
border-bottom: dotted 1px;
|
border-bottom: dotted 1px;
|
||||||
cursor: help;
|
cursor: help;
|
||||||
@ -549,29 +748,69 @@ pre {
|
|||||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre, div[class*="highlight-"] {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
span.pre {
|
span.pre {
|
||||||
-moz-hyphens: none;
|
-moz-hyphens: none;
|
||||||
-ms-hyphens: none;
|
-ms-hyphens: none;
|
||||||
-webkit-hyphens: none;
|
-webkit-hyphens: none;
|
||||||
hyphens: none;
|
hyphens: none;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class*="highlight-"] {
|
||||||
|
margin: 1em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
td.linenos pre {
|
td.linenos pre {
|
||||||
padding: 5px 0px;
|
|
||||||
border: 0;
|
border: 0;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.highlighttable {
|
table.highlighttable {
|
||||||
margin-left: 0.5em;
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.highlighttable tbody {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.highlighttable tr {
|
||||||
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.highlighttable td {
|
table.highlighttable td {
|
||||||
padding: 0 0.5em 0 0.5em;
|
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 {
|
div.code-block-caption {
|
||||||
|
margin-top: 1em;
|
||||||
padding: 2px 5px;
|
padding: 2px 5px;
|
||||||
font-size: small;
|
font-size: small;
|
||||||
}
|
}
|
||||||
@ -580,8 +819,14 @@ div.code-block-caption code {
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.code-block-caption + div > div.highlight > pre {
|
table.highlighttable td.linenos,
|
||||||
margin-top: 0;
|
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 {
|
div.code-block-caption span.caption-number {
|
||||||
@ -593,21 +838,7 @@ div.code-block-caption span.caption-text {
|
|||||||
}
|
}
|
||||||
|
|
||||||
div.literal-block-wrapper {
|
div.literal-block-wrapper {
|
||||||
padding: 1em 1em 0;
|
margin: 1em 0;
|
||||||
}
|
|
||||||
|
|
||||||
div.literal-block-wrapper div.highlight {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
code.descname {
|
|
||||||
background-color: transparent;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
code.descclassname {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
code.xref, a code {
|
code.xref, a code {
|
||||||
@ -648,8 +879,7 @@ span.eqno {
|
|||||||
}
|
}
|
||||||
|
|
||||||
span.eqno a.headerlink {
|
span.eqno a.headerlink {
|
||||||
position: relative;
|
position: absolute;
|
||||||
left: 0px;
|
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
262
_docs_/_static/classic.css
Normal file
262
_docs_/_static/classic.css
Normal file
@ -0,0 +1,262 @@
|
|||||||
|
/*
|
||||||
|
* Sphinx stylesheet -- classic theme.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import url("basic.css");
|
||||||
|
|
||||||
|
/* -- page layout ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
html {
|
||||||
|
/* CSS hack for macOS's scrollbar (see #1125) */
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: white;
|
||||||
|
color: #000;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.document {
|
||||||
|
display: flex;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.documentwrapper {
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.bodywrapper {
|
||||||
|
margin: 0 0 0 230px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body {
|
||||||
|
background-color: white;
|
||||||
|
color: #222222;
|
||||||
|
padding: 0 20px 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer {
|
||||||
|
color: #555555;
|
||||||
|
width: 100%;
|
||||||
|
padding: 9px 0 9px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a {
|
||||||
|
color: #555555;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related {
|
||||||
|
background-color: white;
|
||||||
|
line-height: 30px;
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related a {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar {
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3 {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||||
|
color: #444444;
|
||||||
|
font-size: 1.4em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3 a {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h4 {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||||
|
color: #444444;
|
||||||
|
font-size: 1.3em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar p {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar p.topless {
|
||||||
|
margin: 5px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar ul {
|
||||||
|
margin: 10px;
|
||||||
|
padding: 0;
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar a {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar input {
|
||||||
|
border: 1px solid #444444;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -- hyperlink styles ------------------------------------------------------ */
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #0090c0;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #00608f;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -- body styles ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.body h1,
|
||||||
|
div.body h2,
|
||||||
|
div.body h3,
|
||||||
|
div.body h4,
|
||||||
|
div.body h5,
|
||||||
|
div.body h6 {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||||
|
background-color: white;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #1a1a1a;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
margin: 20px -20px 10px -20px;
|
||||||
|
padding: 3px 0 3px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body h1 { margin-top: 0; font-size: 200%; }
|
||||||
|
div.body h2 { font-size: 160%; }
|
||||||
|
div.body h3 { font-size: 140%; }
|
||||||
|
div.body h4 { font-size: 120%; }
|
||||||
|
div.body h5 { font-size: 110%; }
|
||||||
|
div.body h6 { font-size: 100%; }
|
||||||
|
|
||||||
|
a.headerlink {
|
||||||
|
color: #aaaaaa;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding: 0 4px 0 4px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.headerlink:hover {
|
||||||
|
background-color: #aaaaaa;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||||
|
text-align: justify;
|
||||||
|
line-height: 130%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition p.admonition-title + p {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition p {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition pre {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition ul, div.admonition ol {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.note {
|
||||||
|
background-color: #eee;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.seealso {
|
||||||
|
background-color: #ffc;
|
||||||
|
border: 1px solid #ff6;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.contents,
|
||||||
|
aside.topic,
|
||||||
|
div.topic {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.warning {
|
||||||
|
background-color: #ffe4e4;
|
||||||
|
border: 1px solid #f66;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title:after {
|
||||||
|
content: ":";
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 5px;
|
||||||
|
background-color: #eeffcc;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 120%;
|
||||||
|
border: 1px solid #ac9;
|
||||||
|
border-left: none;
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #ecf0f3;
|
||||||
|
padding: 0 1px 0 1px;
|
||||||
|
font-size: 0.95em;
|
||||||
|
}
|
||||||
|
|
||||||
|
th, dl.field-list > dt {
|
||||||
|
background-color: #ede;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning code {
|
||||||
|
background: #efc2c2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note code {
|
||||||
|
background: #d6d6d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewcode-back {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.viewcode-block:target {
|
||||||
|
background-color: #f4debf;
|
||||||
|
border-top: 1px solid #ac9;
|
||||||
|
border-bottom: 1px solid #ac9;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-block-caption {
|
||||||
|
color: #efefef;
|
||||||
|
background-color: #1c4e63;
|
||||||
|
}
|
84
_docs_/_static/copybutton.js
Normal file
84
_docs_/_static/copybutton.js
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
// Extract copyable text from the code block ignoring the
|
||||||
|
// prompts and output.
|
||||||
|
function getCopyableText(rootElement) {
|
||||||
|
rootElement = rootElement.cloneNode(true)
|
||||||
|
// tracebacks (.gt) contain bare text elements that
|
||||||
|
// need to be removed
|
||||||
|
const tracebacks = rootElement.querySelectorAll(".gt")
|
||||||
|
for (const el of tracebacks) {
|
||||||
|
while (
|
||||||
|
el.nextSibling &&
|
||||||
|
(el.nextSibling.nodeType !== Node.ELEMENT_NODE ||
|
||||||
|
!el.nextSibling.matches(".gp, .go"))
|
||||||
|
) {
|
||||||
|
el.nextSibling.remove()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Remove all elements with the "go" (Generic.Output),
|
||||||
|
// "gp" (Generic.Prompt), or "gt" (Generic.Traceback) CSS class
|
||||||
|
const elements = rootElement.querySelectorAll(".gp, .go, .gt")
|
||||||
|
for (const el of elements) {
|
||||||
|
el.remove()
|
||||||
|
}
|
||||||
|
return rootElement.innerText.trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
const loadCopyButton = () => {
|
||||||
|
const button = document.createElement("button")
|
||||||
|
button.classList.add("copybutton")
|
||||||
|
button.type = "button"
|
||||||
|
button.innerText = _("Copy")
|
||||||
|
button.title = _("Copy to clipboard")
|
||||||
|
|
||||||
|
const makeOnButtonClick = () => {
|
||||||
|
let timeout = null
|
||||||
|
// define the behavior of the button when it's clicked
|
||||||
|
return async event => {
|
||||||
|
// check if the clipboard is available
|
||||||
|
if (!navigator.clipboard || !navigator.clipboard.writeText) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
clearTimeout(timeout)
|
||||||
|
const buttonEl = event.currentTarget
|
||||||
|
const codeEl = buttonEl.nextElementSibling
|
||||||
|
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(getCopyableText(codeEl))
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e.message)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonEl.innerText = _("Copied!")
|
||||||
|
timeout = setTimeout(() => {
|
||||||
|
buttonEl.innerText = _("Copy")
|
||||||
|
}, 1500)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const highlightedElements = document.querySelectorAll(
|
||||||
|
".highlight-python .highlight,"
|
||||||
|
+ ".highlight-python3 .highlight,"
|
||||||
|
+ ".highlight-pycon .highlight,"
|
||||||
|
+ ".highlight-pycon3 .highlight,"
|
||||||
|
+ ".highlight-default .highlight"
|
||||||
|
)
|
||||||
|
|
||||||
|
// create and add the button to all the code blocks that contain >>>
|
||||||
|
highlightedElements.forEach(el => {
|
||||||
|
el.style.position = "relative"
|
||||||
|
|
||||||
|
// if we find a console prompt (.gp), prepend the (deeply cloned) button
|
||||||
|
const clonedButton = button.cloneNode(true)
|
||||||
|
// the onclick attribute is not cloned, set it on the new element
|
||||||
|
clonedButton.onclick = makeOnButtonClick()
|
||||||
|
el.prepend(clonedButton)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState !== "loading") {
|
||||||
|
loadCopyButton()
|
||||||
|
} else {
|
||||||
|
document.addEventListener("DOMContentLoaded", loadCopyButton)
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 434 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
1
_docs_/_static/default.css
Normal file
1
_docs_/_static/default.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import url("classic.css");
|
@ -1,315 +1,149 @@
|
|||||||
/*
|
/*
|
||||||
* doctools.js
|
* Base JavaScript utilities for all Sphinx HTML documentation.
|
||||||
* ~~~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx JavaScript utilities for all documentation.
|
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
"use strict";
|
||||||
|
|
||||||
/**
|
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
|
||||||
* select a different prefix for underscore
|
"TEXTAREA",
|
||||||
*/
|
"INPUT",
|
||||||
$u = _.noConflict();
|
"SELECT",
|
||||||
|
"BUTTON",
|
||||||
|
]);
|
||||||
|
|
||||||
/**
|
const _ready = (callback) => {
|
||||||
* make the code below compatible with browsers without
|
if (document.readyState !== "loading") {
|
||||||
* an installed firebug like debugger
|
callback();
|
||||||
if (!window.console || !console.firebug) {
|
|
||||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
|
||||||
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
|
||||||
"profile", "profileEnd"];
|
|
||||||
window.console = {};
|
|
||||||
for (var i = 0; i < names.length; ++i)
|
|
||||||
window.console[names[i]] = function() {};
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small helper function to urldecode strings
|
|
||||||
*/
|
|
||||||
jQuery.urldecode = function(x) {
|
|
||||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small helper function to urlencode strings
|
|
||||||
*/
|
|
||||||
jQuery.urlencode = encodeURIComponent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function returns the parsed url parameters of the
|
|
||||||
* current request. Multiple values per key are supported,
|
|
||||||
* it will always return arrays of strings for the value parts.
|
|
||||||
*/
|
|
||||||
jQuery.getQueryParameters = function(s) {
|
|
||||||
if (typeof s === 'undefined')
|
|
||||||
s = document.location.search;
|
|
||||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
|
||||||
var result = {};
|
|
||||||
for (var i = 0; i < parts.length; i++) {
|
|
||||||
var tmp = parts[i].split('=', 2);
|
|
||||||
var key = jQuery.urldecode(tmp[0]);
|
|
||||||
var value = jQuery.urldecode(tmp[1]);
|
|
||||||
if (key in result)
|
|
||||||
result[key].push(value);
|
|
||||||
else
|
|
||||||
result[key] = [value];
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* highlight a given string on a jquery object by wrapping it in
|
|
||||||
* span elements with the given class name.
|
|
||||||
*/
|
|
||||||
jQuery.fn.highlightText = function(text, className) {
|
|
||||||
function highlight(node, addItems) {
|
|
||||||
if (node.nodeType === 3) {
|
|
||||||
var val = node.nodeValue;
|
|
||||||
var pos = val.toLowerCase().indexOf(text);
|
|
||||||
if (pos >= 0 &&
|
|
||||||
!jQuery(node.parentNode).hasClass(className) &&
|
|
||||||
!jQuery(node.parentNode).hasClass("nohighlight")) {
|
|
||||||
var span;
|
|
||||||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
|
|
||||||
if (isInSVG) {
|
|
||||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
||||||
} else {
|
} else {
|
||||||
span = document.createElement("span");
|
document.addEventListener("DOMContentLoaded", callback);
|
||||||
span.className = className;
|
|
||||||
}
|
}
|
||||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
|
||||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
|
||||||
document.createTextNode(val.substr(pos + text.length)),
|
|
||||||
node.nextSibling));
|
|
||||||
node.nodeValue = val.substr(0, pos);
|
|
||||||
if (isInSVG) {
|
|
||||||
var bbox = span.getBBox();
|
|
||||||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
||||||
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);
|
|
||||||
var parentOfText = node.parentNode.parentNode;
|
|
||||||
addItems.push({
|
|
||||||
"parent": node.parentNode,
|
|
||||||
"target": rect});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!jQuery(node).is("button, select, textarea")) {
|
|
||||||
jQuery.each(node.childNodes, function() {
|
|
||||||
highlight(this, addItems);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var addItems = [];
|
|
||||||
var result = this.each(function() {
|
|
||||||
highlight(this, addItems);
|
|
||||||
});
|
|
||||||
for (var i = 0; i < addItems.length; ++i) {
|
|
||||||
jQuery(addItems[i].parent).before(addItems[i].target);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* backward compatibility for jQuery.browser
|
|
||||||
* This will be supported until firefox bug is fixed.
|
|
||||||
*/
|
|
||||||
if (!jQuery.browser) {
|
|
||||||
jQuery.uaMatch = function(ua) {
|
|
||||||
ua = ua.toLowerCase();
|
|
||||||
|
|
||||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
|
||||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
|
||||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
|
||||||
/(msie) ([\w.]+)/.exec(ua) ||
|
|
||||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
|
||||||
[];
|
|
||||||
|
|
||||||
return {
|
|
||||||
browser: match[ 1 ] || "",
|
|
||||||
version: match[ 2 ] || "0"
|
|
||||||
};
|
|
||||||
};
|
|
||||||
jQuery.browser = {};
|
|
||||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Small JavaScript module for the documentation.
|
* Small JavaScript module for the documentation.
|
||||||
*/
|
*/
|
||||||
var Documentation = {
|
const Documentation = {
|
||||||
|
init: () => {
|
||||||
init : function() {
|
Documentation.initDomainIndexTable();
|
||||||
this.fixFirefoxAnchorBug();
|
Documentation.initOnKeyListeners();
|
||||||
this.highlightSearchWords();
|
|
||||||
this.initIndexTable();
|
|
||||||
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
|
|
||||||
this.initOnKeyListeners();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* i18n support
|
* i18n support
|
||||||
*/
|
*/
|
||||||
TRANSLATIONS: {},
|
TRANSLATIONS: {},
|
||||||
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
|
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
|
||||||
LOCALE : 'unknown',
|
LOCALE: "unknown",
|
||||||
|
|
||||||
// gettext and ngettext don't access this so that the functions
|
// gettext and ngettext don't access this so that the functions
|
||||||
// can safely bound to a different name (_ = Documentation.gettext)
|
// can safely bound to a different name (_ = Documentation.gettext)
|
||||||
gettext : function(string) {
|
gettext: (string) => {
|
||||||
var translated = Documentation.TRANSLATIONS[string];
|
const translated = Documentation.TRANSLATIONS[string];
|
||||||
if (typeof translated === 'undefined')
|
switch (typeof translated) {
|
||||||
return string;
|
case "undefined":
|
||||||
return (typeof translated === 'string') ? translated : translated[0];
|
return string; // no translation
|
||||||
},
|
case "string":
|
||||||
|
return translated; // translation exists
|
||||||
ngettext : function(singular, plural, n) {
|
default:
|
||||||
var translated = Documentation.TRANSLATIONS[singular];
|
return translated[0]; // (singular, plural) translation tuple exists
|
||||||
if (typeof translated === 'undefined')
|
|
||||||
return (n == 1) ? singular : plural;
|
|
||||||
return translated[Documentation.PLURALEXPR(n)];
|
|
||||||
},
|
|
||||||
|
|
||||||
addTranslations : function(catalog) {
|
|
||||||
for (var key in catalog.messages)
|
|
||||||
this.TRANSLATIONS[key] = catalog.messages[key];
|
|
||||||
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
|
||||||
this.LOCALE = catalog.locale;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add context elements like header anchor links
|
|
||||||
*/
|
|
||||||
addContextElements : function() {
|
|
||||||
$('div[id] > :header:first').each(function() {
|
|
||||||
$('<a class="headerlink">\u00B6</a>').
|
|
||||||
attr('href', '#' + this.id).
|
|
||||||
attr('title', _('Permalink to this headline')).
|
|
||||||
appendTo(this);
|
|
||||||
});
|
|
||||||
$('dt[id]').each(function() {
|
|
||||||
$('<a class="headerlink">\u00B6</a>').
|
|
||||||
attr('href', '#' + this.id).
|
|
||||||
attr('title', _('Permalink to this definition')).
|
|
||||||
appendTo(this);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* workaround a firefox stupidity
|
|
||||||
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
|
||||||
*/
|
|
||||||
fixFirefoxAnchorBug : function() {
|
|
||||||
if (document.location.hash && $.browser.mozilla)
|
|
||||||
window.setTimeout(function() {
|
|
||||||
document.location.href += '';
|
|
||||||
}, 10);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* highlight the search words provided in the url in the text
|
|
||||||
*/
|
|
||||||
highlightSearchWords : function() {
|
|
||||||
var params = $.getQueryParameters();
|
|
||||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
|
||||||
if (terms.length) {
|
|
||||||
var body = $('div.body');
|
|
||||||
if (!body.length) {
|
|
||||||
body = $('body');
|
|
||||||
}
|
|
||||||
window.setTimeout(function() {
|
|
||||||
$.each(terms, function() {
|
|
||||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
|
||||||
});
|
|
||||||
}, 10);
|
|
||||||
$('<p class="highlight-link"><a href="javascript:Documentation.' +
|
|
||||||
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
|
|
||||||
.appendTo($('#searchbox'));
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
ngettext: (singular, plural, n) => {
|
||||||
* init the domain index toggle buttons
|
const translated = Documentation.TRANSLATIONS[singular];
|
||||||
*/
|
if (typeof translated !== "undefined")
|
||||||
initIndexTable : function() {
|
return translated[Documentation.PLURAL_EXPR(n)];
|
||||||
var togglers = $('img.toggler').click(function() {
|
return n === 1 ? singular : plural;
|
||||||
var src = $(this).attr('src');
|
},
|
||||||
var idnum = $(this).attr('id').substr(7);
|
|
||||||
$('tr.cg-' + idnum).toggle();
|
addTranslations: (catalog) => {
|
||||||
if (src.substr(-9) === 'minus.png')
|
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
|
||||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
Documentation.PLURAL_EXPR = new Function(
|
||||||
else
|
"n",
|
||||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
`return (${catalog.plural_expr})`
|
||||||
}).css('display', '');
|
);
|
||||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
Documentation.LOCALE = catalog.locale;
|
||||||
togglers.click();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* helper function to hide the search marks again
|
* helper function to focus on search bar
|
||||||
*/
|
*/
|
||||||
hideSearchWords : function() {
|
focusSearchBar: () => {
|
||||||
$('#searchbox .highlight-link').fadeOut(300);
|
document.querySelectorAll("input[name=q]")[0]?.focus();
|
||||||
$('span.highlighted').removeClass('highlighted');
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* make the url absolute
|
* Initialise the domain index toggle buttons
|
||||||
*/
|
*/
|
||||||
makeURL : function(relativeURL) {
|
initDomainIndexTable: () => {
|
||||||
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
const toggler = (el) => {
|
||||||
},
|
const idNumber = el.id.substr(7);
|
||||||
|
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
|
||||||
/**
|
if (el.src.substr(-9) === "minus.png") {
|
||||||
* get the current relative url
|
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
|
||||||
*/
|
toggledRows.forEach((el) => (el.style.display = "none"));
|
||||||
getCurrentURL : function() {
|
} else {
|
||||||
var path = document.location.pathname;
|
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
|
||||||
var parts = path.split(/\//);
|
toggledRows.forEach((el) => (el.style.display = ""));
|
||||||
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
|
||||||
if (this === '..')
|
|
||||||
parts.pop();
|
|
||||||
});
|
|
||||||
var url = parts.join('/');
|
|
||||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
initOnKeyListeners: function() {
|
|
||||||
$(document).keyup(function(event) {
|
|
||||||
var activeElementType = document.activeElement.tagName;
|
|
||||||
// don't navigate when in search box or textarea
|
|
||||||
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
|
|
||||||
switch (event.keyCode) {
|
|
||||||
case 37: // left
|
|
||||||
var prevHref = $('link[rel="prev"]').prop('href');
|
|
||||||
if (prevHref) {
|
|
||||||
window.location.href = prevHref;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
case 39: // right
|
|
||||||
var nextHref = $('link[rel="next"]').prop('href');
|
|
||||||
if (nextHref) {
|
|
||||||
window.location.href = nextHref;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// quick alias for translations
|
const togglerElements = document.querySelectorAll("img.toggler");
|
||||||
_ = Documentation.gettext;
|
togglerElements.forEach((el) =>
|
||||||
|
el.addEventListener("click", (event) => toggler(event.currentTarget))
|
||||||
|
);
|
||||||
|
togglerElements.forEach((el) => (el.style.display = ""));
|
||||||
|
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
|
||||||
|
},
|
||||||
|
|
||||||
$(document).ready(function() {
|
initOnKeyListeners: () => {
|
||||||
Documentation.init();
|
// 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);
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
var DOCUMENTATION_OPTIONS = {
|
const DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
|
||||||
VERSION: '',
|
VERSION: '',
|
||||||
LANGUAGE: 'None',
|
LANGUAGE: 'en',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
|
BUILDER: 'html',
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
LINK_SUFFIX: '.html',
|
||||||
HAS_SOURCE: true,
|
HAS_SOURCE: true,
|
||||||
SOURCELINK_SUFFIX: '.txt',
|
SOURCELINK_SUFFIX: '.txt',
|
||||||
NAVIGATION_WITH_KEYS: false,
|
NAVIGATION_WITH_KEYS: false,
|
||||||
|
SHOW_SEARCH_SUMMARY: true,
|
||||||
|
ENABLE_SEARCH_SHORTCUTS: true,
|
||||||
};
|
};
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 434 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
10365
_docs_/_static/jquery.js
vendored
10365
_docs_/_static/jquery.js
vendored
File diff suppressed because it is too large
Load Diff
@ -1 +0,0 @@
|
|||||||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}});
|
|
4
_docs_/_static/js/html5shiv-printshiv.min.js
vendored
4
_docs_/_static/js/html5shiv-printshiv.min.js
vendored
@ -1,4 +0,0 @@
|
|||||||
/**
|
|
||||||
* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
|
||||||
*/
|
|
||||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);
|
|
4
_docs_/_static/js/html5shiv.min.js
vendored
4
_docs_/_static/js/html5shiv.min.js
vendored
@ -1,4 +0,0 @@
|
|||||||
/**
|
|
||||||
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
|
||||||
*/
|
|
||||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
|
|
4
_docs_/_static/js/modernizr.min.js
vendored
4
_docs_/_static/js/modernizr.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n('<span class="toctree-expand"></span>'),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}t.length>0&&($(".wy-menu-vertical .current").removeClass("current"),t.addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l1").parent().addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l2").addClass("current"),t.closest("li.toctree-l3").addClass("current"),t.closest("li.toctree-l4").addClass("current"),t.closest("li.toctree-l5").addClass("current"),t[0].scrollIntoView())}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var i=(new Date).getTime(),o=Math.max(0,16-(i-n)),r=window.setTimeout((function(){e(i+o)}),o);return n=i+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()}).call(window)},function(n,e){n.exports=jQuery},function(n,e,t){}]);
|
|
@ -1,19 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* language_data.js
|
|
||||||
* ~~~~~~~~~~~~~~~~
|
|
||||||
*
|
|
||||||
* This script contains the language-specific data used by searchtools.js,
|
* This script contains the language-specific data used by searchtools.js,
|
||||||
* namely the list of stopwords, stemmer, scorer and splitter.
|
* namely the list of stopwords, stemmer, scorer and splitter.
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
|
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
|
||||||
|
|
||||||
|
|
||||||
/* Non-minified version JS is _stemmer.js if file is provided */
|
/* Non-minified version is copied as a separate JS file, if available */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Porter Stemmer
|
* Porter Stemmer
|
||||||
*/
|
*/
|
||||||
@ -196,102 +190,3 @@ var Stemmer = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var splitChars = (function() {
|
|
||||||
var result = {};
|
|
||||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
|
||||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
|
||||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
|
||||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
|
||||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
|
||||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
|
||||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
|
||||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
|
||||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
|
||||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
|
||||||
var i, j, start, end;
|
|
||||||
for (i = 0; i < singles.length; i++) {
|
|
||||||
result[singles[i]] = true;
|
|
||||||
}
|
|
||||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
|
||||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
|
||||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
|
||||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
|
||||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
|
||||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
|
||||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
|
||||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
|
||||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
|
||||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
|
||||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
|
||||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
|
||||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
|
||||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
|
||||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
|
||||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
|
||||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
|
||||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
|
||||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
|
||||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
|
||||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
|
||||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
|
||||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
|
||||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
|
||||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
|
||||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
|
||||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
|
||||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
|
||||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
|
||||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
|
||||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
|
||||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
|
||||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
|
||||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
|
||||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
|
||||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
|
||||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
|
||||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
|
||||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
|
||||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
|
||||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
|
||||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
|
||||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
|
||||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
|
||||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
|
||||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
|
||||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
|
||||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
|
||||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
|
||||||
for (i = 0; i < ranges.length; i++) {
|
|
||||||
start = ranges[i][0];
|
|
||||||
end = ranges[i][1];
|
|
||||||
for (j = start; j <= end; j++) {
|
|
||||||
result[j] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
})();
|
|
||||||
|
|
||||||
function splitQuery(query) {
|
|
||||||
var result = [];
|
|
||||||
var start = -1;
|
|
||||||
for (var i = 0; i < query.length; i++) {
|
|
||||||
if (splitChars[query.charCodeAt(i)]) {
|
|
||||||
if (start !== -1) {
|
|
||||||
result.push(query.slice(start, i));
|
|
||||||
start = -1;
|
|
||||||
}
|
|
||||||
} else if (start === -1) {
|
|
||||||
start = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (start !== -1) {
|
|
||||||
result.push(query.slice(start));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
57
_docs_/_static/menu.js
Normal file
57
_docs_/_static/menu.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
|
||||||
|
// Make tables responsive by wrapping them in a div and making them scrollable
|
||||||
|
const tables = document.querySelectorAll("table.docutils")
|
||||||
|
tables.forEach(function(table){
|
||||||
|
table.outerHTML = '<div class="responsive-table__container">' + table.outerHTML + "</div>"
|
||||||
|
})
|
||||||
|
|
||||||
|
const togglerInput = document.querySelector(".toggler__input")
|
||||||
|
const togglerLabel = document.querySelector(".toggler__label")
|
||||||
|
const sideMenu = document.querySelector(".menu-wrapper")
|
||||||
|
const menuItems = document.querySelectorAll(".menu")
|
||||||
|
const doc = document.querySelector(".document")
|
||||||
|
const body = document.querySelector("body")
|
||||||
|
|
||||||
|
function closeMenu() {
|
||||||
|
togglerInput.checked = false
|
||||||
|
sideMenu.setAttribute("aria-expanded", "false")
|
||||||
|
sideMenu.setAttribute("aria-hidden", "true")
|
||||||
|
togglerLabel.setAttribute("aria-pressed", "false")
|
||||||
|
body.style.overflow = "visible"
|
||||||
|
}
|
||||||
|
function openMenu() {
|
||||||
|
togglerInput.checked = true
|
||||||
|
sideMenu.setAttribute("aria-expanded", "true")
|
||||||
|
sideMenu.setAttribute("aria-hidden", "false")
|
||||||
|
togglerLabel.setAttribute("aria-pressed", "true")
|
||||||
|
body.style.overflow = "hidden"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close menu when link on the sideMenu is clicked
|
||||||
|
sideMenu.addEventListener("click", function (event) {
|
||||||
|
let target = event.target
|
||||||
|
if (target.tagName.toLowerCase() !== "a") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
closeMenu()
|
||||||
|
})
|
||||||
|
// Add accessibility data when sideMenu is opened/closed
|
||||||
|
togglerInput.addEventListener("change", function (_event) {
|
||||||
|
togglerInput.checked ? openMenu() : closeMenu()
|
||||||
|
})
|
||||||
|
// Make sideMenu links tabbable only when visible
|
||||||
|
for(let menuItem of menuItems) {
|
||||||
|
if(togglerInput.checked) {
|
||||||
|
menuItem.setAttribute("tabindex", "0")
|
||||||
|
} else {
|
||||||
|
menuItem.setAttribute("tabindex", "-1")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Close sideMenu when document body is clicked
|
||||||
|
doc.addEventListener("click", function () {
|
||||||
|
if (togglerInput.checked) {
|
||||||
|
closeMenu()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
BIN
_docs_/_static/py.png
Normal file
BIN
_docs_/_static/py.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 695 B |
14
_docs_/_static/py.svg
Normal file
14
_docs_/_static/py.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M7.90472 0.00013087C7.24498 0.00316295 6.61493 0.0588153 6.06056 0.15584C4.42744 0.441207 4.13093 1.0385 4.13093 2.14002V3.59479H7.99018V4.07971H4.13093H2.68259C1.56098 4.07971 0.578874 4.7465 0.271682 6.01495C-0.0826595 7.4689 -0.0983765 8.37618 0.271682 9.89434C0.546011 11.0244 1.20115 11.8296 2.32275 11.8296H3.64965V10.0856C3.64965 8.82574 4.75178 7.71441 6.06056 7.71441H9.91531C10.9883 7.71441 11.8449 6.84056 11.8449 5.77472V2.14002C11.8449 1.10556 10.9626 0.328486 9.91531 0.15584C9.25235 0.046687 8.56447 -0.00290121 7.90472 0.00013087ZM5.81767 1.17017C6.2163 1.17017 6.54184 1.49742 6.54184 1.89978C6.54184 2.30072 6.2163 2.62494 5.81767 2.62494C5.41761 2.62494 5.0935 2.30072 5.0935 1.89978C5.0935 1.49742 5.41761 1.17017 5.81767 1.17017Z" fill="url(#paint0_linear)"/>
|
||||||
|
<path d="M12.3262 4.07971V5.77472C12.3262 7.08883 11.1998 8.19488 9.9153 8.19488H6.06055C5.00466 8.19488 4.13092 9.0887 4.13092 10.1346V13.7693C4.13092 14.8037 5.04038 15.4122 6.06055 15.709C7.28217 16.0642 8.45364 16.1285 9.9153 15.709C10.8869 15.4307 11.8449 14.8708 11.8449 13.7693V12.3145H7.99017V11.8296H11.8449H13.7746C14.8962 11.8296 15.3141 11.0558 15.7042 9.89434C16.1071 8.69865 16.09 7.5488 15.7042 6.01495C15.427 4.91058 14.8976 4.07971 13.7746 4.07971H12.3262ZM10.1582 13.2843C10.5583 13.2843 10.8824 13.6086 10.8824 14.0095C10.8824 14.4119 10.5583 14.7391 10.1582 14.7391C9.75955 14.7391 9.43402 14.4119 9.43402 14.0095C9.43402 13.6086 9.75955 13.2843 10.1582 13.2843Z" fill="url(#paint1_linear)"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear" x1="1.25961e-08" y1="1.08223e-08" x2="8.81664" y2="7.59597" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#5A9FD4"/>
|
||||||
|
<stop offset="1" stop-color="#306998"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear" x1="10.0654" y1="13.8872" x2="6.91912" y2="9.42957" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#FFD43B"/>
|
||||||
|
<stop offset="1" stop-color="#FFE873"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
773
_docs_/_static/pydoctheme.css
Normal file
773
_docs_/_static/pydoctheme.css
Normal file
@ -0,0 +1,773 @@
|
|||||||
|
/* Common colours */
|
||||||
|
:root {
|
||||||
|
--good-color: rgb(41 100 51);
|
||||||
|
--good-border: rgb(79 196 100);
|
||||||
|
--middle-color: rgb(133 72 38);
|
||||||
|
--middle-border: rgb(244, 227, 76);
|
||||||
|
--bad-color: rgb(159 49 51);
|
||||||
|
--bad-border: rgb(244, 76, 78);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* unset some styles from the classic stylesheet */
|
||||||
|
div.document,
|
||||||
|
div.body,
|
||||||
|
div.related,
|
||||||
|
div.body h1,
|
||||||
|
div.body h2,
|
||||||
|
div.body h3,
|
||||||
|
div.body h4,
|
||||||
|
div.body h5,
|
||||||
|
div.body h6,
|
||||||
|
div.sphinxsidebar a,
|
||||||
|
div.sphinxsidebar p,
|
||||||
|
div.sphinxsidebar ul,
|
||||||
|
div.sphinxsidebar h3,
|
||||||
|
div.sphinxsidebar h3 a,
|
||||||
|
div.sphinxsidebar h4,
|
||||||
|
.menu a,
|
||||||
|
.menu p,
|
||||||
|
.menu ul,
|
||||||
|
.menu h3,
|
||||||
|
.menu h3 a,
|
||||||
|
.menu h4,
|
||||||
|
table.docutils td,
|
||||||
|
table.indextable tr.cap,
|
||||||
|
pre {
|
||||||
|
background-color: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add underlines to links */
|
||||||
|
a[href] {
|
||||||
|
text-decoration: underline 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Increase the underline offset for code to avoid obscuring underscores */
|
||||||
|
a[href]:has(> code) {
|
||||||
|
text-underline-offset: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* No underline for navigation */
|
||||||
|
a.headerlink,
|
||||||
|
div.genindex-jumpbox a,
|
||||||
|
div.modindex-jumpbox a,
|
||||||
|
div#search-results a,
|
||||||
|
div.sphinxsidebar a,
|
||||||
|
div.toctree-wrapper a,
|
||||||
|
div[role=navigation] a,
|
||||||
|
table.contentstable a,
|
||||||
|
table.indextable a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Except when hovered */
|
||||||
|
div.genindex-jumpbox a:hover,
|
||||||
|
div.modindex-jumpbox a:hover,
|
||||||
|
div#search-results a:hover,
|
||||||
|
div.sphinxsidebar a:hover,
|
||||||
|
div.toctree-wrapper a:hover,
|
||||||
|
div[role=navigation] a:hover,
|
||||||
|
table.contentstable a:hover,
|
||||||
|
table.indextable a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-nav,
|
||||||
|
.menu-wrapper {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
margin-bottom: 1.2em;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
border-width: 1px;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-nav + div.related {
|
||||||
|
border-bottom-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.document + div.related {
|
||||||
|
border-top-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related a:hover {
|
||||||
|
color: #0095c4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.related .switchers {
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switchers > div {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related ul::after {
|
||||||
|
content: '';
|
||||||
|
clear: both;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-search,
|
||||||
|
form.inline-search input {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
form.inline-search input[type='submit'] {
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.document {
|
||||||
|
display: flex;
|
||||||
|
/* Don't let long code literals extend beyond the right side of the screen */
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Don't let long code literals extend beyond the right side of the screen */
|
||||||
|
span.pre {
|
||||||
|
white-space: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar {
|
||||||
|
display: flex;
|
||||||
|
width: min(25vw, 350px);
|
||||||
|
float: none;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
max-height: 100vh;
|
||||||
|
color: #444;
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 5px;
|
||||||
|
line-height: 130%;
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3,
|
||||||
|
div.sphinxsidebar h4 {
|
||||||
|
margin-top: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.bodywrapper {
|
||||||
|
margin-left: min(25vw, 350px);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebarwrapper {
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 100%;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
float: none;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebarwrapper > h3:first-child {
|
||||||
|
margin-top: 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebarwrapper > ul > li > ul > li {
|
||||||
|
margin-bottom: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar a:hover {
|
||||||
|
color: #0095c4;
|
||||||
|
}
|
||||||
|
|
||||||
|
form.inline-search input,
|
||||||
|
div.sphinxsidebar input,
|
||||||
|
div.related input {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||||
|
border: 1px solid #999999;
|
||||||
|
font-size: smaller;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar input[type='text'] {
|
||||||
|
max-width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebarbutton {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 12px;
|
||||||
|
min-width: 12px;
|
||||||
|
border-radius: 0 5px 5px 0;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebarbutton:hover {
|
||||||
|
background-color: #AAAAAA;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body {
|
||||||
|
padding: 0 0 0 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||||
|
text-align: left;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 {
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
padding: 0.3em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body hr {
|
||||||
|
border: 0;
|
||||||
|
background-color: #ccc;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body pre {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #ac9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Admonitions */
|
||||||
|
:root {
|
||||||
|
--admonition-background: #eee;
|
||||||
|
--admonition-border: #ccc;
|
||||||
|
--admonition-color: black;
|
||||||
|
--attention-background: #bbddff5c;
|
||||||
|
--attention-border: #0000ff36;
|
||||||
|
--caution-background: #ffc;
|
||||||
|
--caution-border: #dd6;
|
||||||
|
--danger-background: #ffe4e4;
|
||||||
|
--danger-border: red;
|
||||||
|
--error-background: #ffe4e4;
|
||||||
|
--error-border: red;
|
||||||
|
--hint-background: #dfd;
|
||||||
|
--hint-border: green;
|
||||||
|
--seealso-background: #ffc;
|
||||||
|
--seealso-border: #dd6;
|
||||||
|
--tip-background: #dfd;
|
||||||
|
--tip-border: green;
|
||||||
|
--warning-background: #ffe4e4;
|
||||||
|
--warning-border: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition {
|
||||||
|
background-color: var(--admonition-background);
|
||||||
|
border: 1px solid var(--admonition-border);
|
||||||
|
border-radius: 3px;
|
||||||
|
color: var(--admonition-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.attention {
|
||||||
|
background-color: var(--attention-background);
|
||||||
|
border-color: var(--attention-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.caution {
|
||||||
|
background-color: var(--caution-background);
|
||||||
|
border-color: var(--caution-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.danger {
|
||||||
|
background-color: var(--danger-background);
|
||||||
|
border-color: var(--danger-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.error {
|
||||||
|
background-color: var(--error-background);
|
||||||
|
border-color: var(--error-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.hint {
|
||||||
|
background-color: var(--hint-background);
|
||||||
|
border-color: var(--hint-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.seealso {
|
||||||
|
background-color: var(--seealso-background);
|
||||||
|
border-color: var(--seealso-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.tip {
|
||||||
|
background-color: var(--tip-background);
|
||||||
|
border-color: var(--tip-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.admonition.warning {
|
||||||
|
background-color: var(--warning-background);
|
||||||
|
border-color: var(--warning-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.impl-detail {
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.impl-detail > p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body a {
|
||||||
|
color: #0072aa;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body a:visited {
|
||||||
|
color: #6363bb;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body a:hover {
|
||||||
|
color: #00b0e4;
|
||||||
|
}
|
||||||
|
|
||||||
|
tt, code, pre {
|
||||||
|
font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
|
||||||
|
font-size: 96.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body pre {
|
||||||
|
line-height: 120%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body tt,
|
||||||
|
div.body code {
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body tt.descname,
|
||||||
|
div.body code.descname {
|
||||||
|
font-size: 120%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body tt.xref,
|
||||||
|
div.body a tt,
|
||||||
|
div.body code.xref,
|
||||||
|
div.body a code {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.docutils {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
min-width: 20%;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.docutils td,
|
||||||
|
table.docutils th {
|
||||||
|
border: 1px solid #ddd !important;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 0.3em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table p,
|
||||||
|
table li {
|
||||||
|
text-align: left !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.docutils th {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.footnote,
|
||||||
|
table.footnote td {
|
||||||
|
border: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer {
|
||||||
|
line-height: 150%;
|
||||||
|
text-align: right;
|
||||||
|
width: auto;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a {
|
||||||
|
text-underline-offset: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a:hover {
|
||||||
|
color: #0095c4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* C API return value annotations */
|
||||||
|
:root {
|
||||||
|
--refcount: var(--good-color);
|
||||||
|
--refcount-return-borrowed-ref: var(--middle-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.refcount {
|
||||||
|
color: var(--refcount);
|
||||||
|
}
|
||||||
|
|
||||||
|
.refcount.return_borrowed_ref {
|
||||||
|
color: var(--refcount-return-borrowed-ref)
|
||||||
|
}
|
||||||
|
|
||||||
|
.stableabi {
|
||||||
|
color: #229;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl > dt span ~ em,
|
||||||
|
.sig {
|
||||||
|
font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toctree-wrapper ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-selector {
|
||||||
|
margin-left: .5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.genindex-jumpbox,
|
||||||
|
div.genindex-jumpbox > p {
|
||||||
|
display: inline-flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.genindex-jumpbox a {
|
||||||
|
margin: 0 5px;
|
||||||
|
min-width: 30px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copybutton {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
|
||||||
|
font-size: 80%;
|
||||||
|
padding-left: .5em;
|
||||||
|
padding-right: .5em;
|
||||||
|
height: 100%;
|
||||||
|
max-height: min(100%, 2.4em);
|
||||||
|
border-radius: 0 3px 0 0;
|
||||||
|
color: #000;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ac9; /* follows div.body pre */
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copybutton:hover {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copybutton:active {
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight:active .copybutton {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight:hover .copybutton {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1023px) {
|
||||||
|
/* Body layout */
|
||||||
|
div.body {
|
||||||
|
min-width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
div.bodywrapper {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
/* Typography */
|
||||||
|
div.body h1 {
|
||||||
|
font-size: 1.625rem;
|
||||||
|
}
|
||||||
|
div.body h2 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
div.body h3, div.body h4, div.body h5 {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
/* Override default styles to make more readable */
|
||||||
|
div.body ul {
|
||||||
|
padding-inline-start: 1rem;
|
||||||
|
}
|
||||||
|
div.body blockquote {
|
||||||
|
margin-inline-start: 1rem;
|
||||||
|
margin-inline-end: 0;
|
||||||
|
}
|
||||||
|
/* Remove sidebar and top related bar */
|
||||||
|
div.related, div.sphinxsidebar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
/* Anchorlinks are not hidden by fixed-positioned navbar when scrolled to */
|
||||||
|
html {
|
||||||
|
scroll-padding-top: 40px;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Top navigation bar */
|
||||||
|
.mobile-nav {
|
||||||
|
display: block;
|
||||||
|
height: 40px;
|
||||||
|
width: 100%;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
box-shadow: rgba(0, 0, 0, 0.25) 0 0 2px 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.mobile-nav * {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.nav-content {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
height: 40px;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.nav-items-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex: auto;
|
||||||
|
padding: .25rem;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
.nav-logo {
|
||||||
|
margin-right: 1rem;
|
||||||
|
flex-shrink: 0;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
.nav-content img {
|
||||||
|
display: block;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.version_switcher_placeholder {
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
.version_switcher_placeholder > select {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.nav-content .search {
|
||||||
|
display: flex;
|
||||||
|
flex: auto;
|
||||||
|
border: 1px solid #a9a9a9;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
.nav-content .search input[type=search] {
|
||||||
|
border: 0;
|
||||||
|
padding-left: 24px;
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.nav-content .search input[type=submit] {
|
||||||
|
height: 100%;
|
||||||
|
box-shadow: none;
|
||||||
|
border: 0;
|
||||||
|
border-left: 1px solid #a9a9a9;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.nav-content .search svg {
|
||||||
|
position: absolute;
|
||||||
|
align-self: center;
|
||||||
|
padding-left: 4px;
|
||||||
|
}
|
||||||
|
.toggler__input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.toggler__label {
|
||||||
|
width: 40px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 8px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.toggler__label:hover, .toggler__label:focus {
|
||||||
|
background-color: rgba(127 127 127 / 50%);
|
||||||
|
}
|
||||||
|
.toggler__label > span {
|
||||||
|
position: relative;
|
||||||
|
flex: none;
|
||||||
|
height: 2px;
|
||||||
|
width: 100%;
|
||||||
|
background: currentColor;
|
||||||
|
transition: all 400ms ease;
|
||||||
|
}
|
||||||
|
.toggler__label > span::before,
|
||||||
|
.toggler__label > span::after {
|
||||||
|
content: '';
|
||||||
|
height: 2px;
|
||||||
|
width: 100%;
|
||||||
|
background: inherit;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: -8px;
|
||||||
|
}
|
||||||
|
.toggler__label > span::after {
|
||||||
|
top: 8px;
|
||||||
|
}
|
||||||
|
.toggler__input:checked ~ nav > .toggler__label span {
|
||||||
|
transform: rotate(135deg);
|
||||||
|
}
|
||||||
|
.toggler__input:checked ~ nav > .toggler__label span::before {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.toggler__input:checked ~ nav > .toggler__label span::before,
|
||||||
|
.toggler__input:checked ~ nav > .toggler__label span::after {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.toggler__input:checked:hover ~ nav > .toggler__label span {
|
||||||
|
transform: rotate(315deg);
|
||||||
|
}
|
||||||
|
.toggler__input:checked ~ .menu-wrapper {
|
||||||
|
visibility: visible;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sliding side menu */
|
||||||
|
.menu-wrapper {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
transition: left 400ms ease;
|
||||||
|
left: -310px;
|
||||||
|
width: 300px;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #eee;
|
||||||
|
color: #444444;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.menu-wrapper.open {
|
||||||
|
visibility: visible;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
padding: 40px 10px 30px 20px;
|
||||||
|
}
|
||||||
|
.menu-wrapper h3,
|
||||||
|
.menu-wrapper h4 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.menu-wrapper h4 {
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
.menu-wrapper h3 {
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
.menu-wrapper h3 + p,
|
||||||
|
.menu-wrapper h4 + p {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
.menu a {
|
||||||
|
font-size: smaller;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.menu ul {
|
||||||
|
list-style: none;
|
||||||
|
line-height: 1.4;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.menu ul ul {
|
||||||
|
margin-left: 20px;
|
||||||
|
list-style: square;
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.language_switcher_placeholder {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
.language_switcher_placeholder select {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.document {
|
||||||
|
position: relative;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
/*Responsive tables*/
|
||||||
|
.responsive-table__container {
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu .theme-selector-label {
|
||||||
|
margin-top: .5em;
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu .theme-selector {
|
||||||
|
flex: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
div.footer {
|
||||||
|
margin-top: -2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Version change directives */
|
||||||
|
:root {
|
||||||
|
--versionadded: var(--good-color);
|
||||||
|
--versionchanged: var(--middle-color);
|
||||||
|
--deprecated: var(--bad-color);
|
||||||
|
|
||||||
|
--versionadded-border: var(--good-border);
|
||||||
|
--versionchanged-border: var(--middle-border);
|
||||||
|
--deprecated-border: var(--bad-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.versionadded,
|
||||||
|
div.versionchanged,
|
||||||
|
div.deprecated,
|
||||||
|
div.deprecated-removed {
|
||||||
|
border-left: 3px solid;
|
||||||
|
padding: 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.versionadded {
|
||||||
|
border-left-color: var(--versionadded-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.versionchanged {
|
||||||
|
border-left-color: var(--versionchanged-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.deprecated,
|
||||||
|
div.deprecated-removed,
|
||||||
|
div.versionremoved {
|
||||||
|
border-left-color: var(--deprecated-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.versionadded .versionmodified {
|
||||||
|
color: var(--versionadded);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.versionchanged .versionmodified {
|
||||||
|
color: var(--versionchanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.deprecated .versionmodified,
|
||||||
|
div.deprecated-removed .versionmodified,
|
||||||
|
div.versionremoved .versionmodified {
|
||||||
|
color: var(--deprecated);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide header when printing */
|
||||||
|
@media print {
|
||||||
|
div.mobile-nav {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
191
_docs_/_static/pydoctheme_dark.css
Normal file
191
_docs_/_static/pydoctheme_dark.css
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
/* Common colours */
|
||||||
|
:root {
|
||||||
|
--good-color: rgb(79 196 100);
|
||||||
|
--good-border: var(--good-color);
|
||||||
|
--middle-color: rgb(244, 227, 76);
|
||||||
|
--middle-border: var(--middle-color);
|
||||||
|
--bad-color: rgb(244, 76, 78);
|
||||||
|
--bad-border: var(--bad-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Browser elements */
|
||||||
|
:root {
|
||||||
|
scrollbar-color: #616161 transparent;
|
||||||
|
color-scheme: dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
background-color: #222;
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related {
|
||||||
|
color: rgba(255, 255, 255, 0.7); /* classic overwrite */
|
||||||
|
border-color: #424242;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SIDEBAR */
|
||||||
|
div.sphinxsidebar, .menu-wrapper {
|
||||||
|
background-color: #333;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebarbutton {
|
||||||
|
/* important to overwrite style attribute */
|
||||||
|
background-color: #555 !important;
|
||||||
|
color: inherit !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sidebar, aside.sidebar {
|
||||||
|
background-color: #424242;
|
||||||
|
border-color: #616161;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ANCHORS AND HIGHLIGHTS */
|
||||||
|
div.body a {
|
||||||
|
color: #7af;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body a:visited {
|
||||||
|
color: #09e;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.headerlink:hover {
|
||||||
|
background-color: #424242;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related a {
|
||||||
|
color: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer,
|
||||||
|
div.footer a {
|
||||||
|
color: currentColor; /* classic overwrites */
|
||||||
|
}
|
||||||
|
|
||||||
|
dt:target,
|
||||||
|
span.highlighted {
|
||||||
|
background-color: #616161;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote:target {
|
||||||
|
background-color: #2c3e50;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Below for most things in text */
|
||||||
|
|
||||||
|
dl.field-list > dt {
|
||||||
|
background-color: #434;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.docutils td,
|
||||||
|
table.docutils th {
|
||||||
|
border-color: #616161 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.docutils th {
|
||||||
|
background-color: #424242;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stableabi {
|
||||||
|
color: #bbf;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body pre {
|
||||||
|
border-color: #616161;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #424242;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.seealso {
|
||||||
|
background-color: rgba(255, 255, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.warning {
|
||||||
|
background-color: rgba(255, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning code {
|
||||||
|
background-color: rgba(255, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Admonitions */
|
||||||
|
:root {
|
||||||
|
--admonition-background: #ffffff1a;
|
||||||
|
--admonition-border: currentColor;
|
||||||
|
--admonition-color: #ffffffde;
|
||||||
|
--attention-background: #ffffff1a;
|
||||||
|
--attention-border: currentColor;
|
||||||
|
--caution-background: #ffff001a;
|
||||||
|
--caution-border: #dd6;
|
||||||
|
--danger-background: #f003;
|
||||||
|
--danger-border: #f66;
|
||||||
|
--error-background: #f003;
|
||||||
|
--error-border: #f66;
|
||||||
|
--hint-background: #0044117a;
|
||||||
|
--hint-border: green;
|
||||||
|
--seealso-background: #ffff001a;
|
||||||
|
--seealso-border: #dd6;
|
||||||
|
--tip-background: #0044117a;
|
||||||
|
--tip-border: green;
|
||||||
|
--warning-background: #ff000033;
|
||||||
|
--warning-border: #ff6666;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside.topic,
|
||||||
|
div.topic,
|
||||||
|
div.note,
|
||||||
|
nav.contents {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
border-color: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note code {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-nav {
|
||||||
|
box-shadow: rgba(255, 255, 255, 0.25) 0 0 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-content {
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.invert-in-dark-mode {
|
||||||
|
filter: invert(1) hue-rotate(.5turn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- object description styles --------------------------------------------- */
|
||||||
|
|
||||||
|
/* C++ specific styling */
|
||||||
|
|
||||||
|
/* Override Sphinx's basic.css to fix colour contrast */
|
||||||
|
.sig.c .k, .sig.c .kt,
|
||||||
|
.sig.cpp .k, .sig.cpp .kt {
|
||||||
|
color: #5283ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Version change directives */
|
||||||
|
:root {
|
||||||
|
--versionadded: var(--good-color);
|
||||||
|
--versionchanged: var(--middle-color);
|
||||||
|
--deprecated: var(--bad-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copybutton {
|
||||||
|
color: #ac9; /* follows div.body pre */
|
||||||
|
background-color: #222222; /* follows body */
|
||||||
|
}
|
||||||
|
|
||||||
|
.copybutton:hover {
|
||||||
|
background-color: #434343;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copybutton:active {
|
||||||
|
background-color: #656565;
|
||||||
|
}
|
@ -1,69 +1,75 @@
|
|||||||
|
pre { line-height: 125%; }
|
||||||
|
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||||
|
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||||
|
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||||
|
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||||
.highlight .hll { background-color: #ffffcc }
|
.highlight .hll { background-color: #ffffcc }
|
||||||
.highlight { background: #f8f8f8; }
|
.highlight { background: #f8f8f8; }
|
||||||
.highlight .c { color: #408080; font-style: italic } /* Comment */
|
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
|
||||||
.highlight .err { border: 1px solid #FF0000 } /* Error */
|
.highlight .err { border: 1px solid #F00 } /* Error */
|
||||||
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
|
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
|
||||||
.highlight .o { color: #666666 } /* Operator */
|
.highlight .o { color: #666 } /* Operator */
|
||||||
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
|
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
|
||||||
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
|
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
|
||||||
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
|
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
|
||||||
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
|
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
|
||||||
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
|
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
|
||||||
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
|
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
|
||||||
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
||||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
|
||||||
|
.highlight .gr { color: #E40000 } /* Generic.Error */
|
||||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
.highlight .gi { color: #008400 } /* Generic.Inserted */
|
||||||
.highlight .go { color: #888888 } /* Generic.Output */
|
.highlight .go { color: #717171 } /* Generic.Output */
|
||||||
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
||||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||||
.highlight .gt { color: #0044DD } /* Generic.Traceback */
|
.highlight .gt { color: #04D } /* Generic.Traceback */
|
||||||
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
||||||
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
||||||
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
||||||
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
|
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
|
||||||
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
||||||
.highlight .kt { color: #B00040 } /* Keyword.Type */
|
.highlight .kt { color: #B00040 } /* Keyword.Type */
|
||||||
.highlight .m { color: #666666 } /* Literal.Number */
|
.highlight .m { color: #666 } /* Literal.Number */
|
||||||
.highlight .s { color: #BA2121 } /* Literal.String */
|
.highlight .s { color: #BA2121 } /* Literal.String */
|
||||||
.highlight .na { color: #7D9029 } /* Name.Attribute */
|
.highlight .na { color: #687822 } /* Name.Attribute */
|
||||||
.highlight .nb { color: #008000 } /* Name.Builtin */
|
.highlight .nb { color: #008000 } /* Name.Builtin */
|
||||||
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
|
.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */
|
||||||
.highlight .no { color: #880000 } /* Name.Constant */
|
.highlight .no { color: #800 } /* Name.Constant */
|
||||||
.highlight .nd { color: #AA22FF } /* Name.Decorator */
|
.highlight .nd { color: #A2F } /* Name.Decorator */
|
||||||
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
|
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
|
||||||
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
|
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
|
||||||
.highlight .nf { color: #0000FF } /* Name.Function */
|
.highlight .nf { color: #00F } /* Name.Function */
|
||||||
.highlight .nl { color: #A0A000 } /* Name.Label */
|
.highlight .nl { color: #767600 } /* Name.Label */
|
||||||
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
|
.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */
|
||||||
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
||||||
.highlight .nv { color: #19177C } /* Name.Variable */
|
.highlight .nv { color: #19177C } /* Name.Variable */
|
||||||
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
|
.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */
|
||||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
.highlight .w { color: #BBB } /* Text.Whitespace */
|
||||||
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
|
.highlight .mb { color: #666 } /* Literal.Number.Bin */
|
||||||
.highlight .mf { color: #666666 } /* Literal.Number.Float */
|
.highlight .mf { color: #666 } /* Literal.Number.Float */
|
||||||
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
|
.highlight .mh { color: #666 } /* Literal.Number.Hex */
|
||||||
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
|
.highlight .mi { color: #666 } /* Literal.Number.Integer */
|
||||||
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
|
.highlight .mo { color: #666 } /* Literal.Number.Oct */
|
||||||
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
|
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
|
||||||
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
|
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
|
||||||
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
|
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
|
||||||
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
|
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
|
||||||
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
||||||
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
|
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
|
||||||
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
|
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
|
||||||
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
||||||
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
|
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
|
||||||
.highlight .sx { color: #008000 } /* Literal.String.Other */
|
.highlight .sx { color: #008000 } /* Literal.String.Other */
|
||||||
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
|
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
|
||||||
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
|
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
|
||||||
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
|
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
|
||||||
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
||||||
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
|
.highlight .fm { color: #00F } /* Name.Function.Magic */
|
||||||
.highlight .vc { color: #19177C } /* Name.Variable.Class */
|
.highlight .vc { color: #19177C } /* Name.Variable.Class */
|
||||||
.highlight .vg { color: #19177C } /* Name.Variable.Global */
|
.highlight .vg { color: #19177C } /* Name.Variable.Global */
|
||||||
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
|
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
|
||||||
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
|
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
|
||||||
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
|
.highlight .il { color: #666 } /* Literal.Number.Integer.Long */
|
85
_docs_/_static/pygments_dark.css
Normal file
85
_docs_/_static/pygments_dark.css
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
pre { line-height: 125%; }
|
||||||
|
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||||
|
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||||
|
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||||
|
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||||
|
.highlight .hll { background-color: #49483e }
|
||||||
|
.highlight { background: #272822; color: #F8F8F2 }
|
||||||
|
.highlight .c { color: #959077 } /* Comment */
|
||||||
|
.highlight .err { color: #ED007E; background-color: #1E0010 } /* Error */
|
||||||
|
.highlight .esc { color: #F8F8F2 } /* Escape */
|
||||||
|
.highlight .g { color: #F8F8F2 } /* Generic */
|
||||||
|
.highlight .k { color: #66D9EF } /* Keyword */
|
||||||
|
.highlight .l { color: #AE81FF } /* Literal */
|
||||||
|
.highlight .n { color: #F8F8F2 } /* Name */
|
||||||
|
.highlight .o { color: #FF4689 } /* Operator */
|
||||||
|
.highlight .x { color: #F8F8F2 } /* Other */
|
||||||
|
.highlight .p { color: #F8F8F2 } /* Punctuation */
|
||||||
|
.highlight .ch { color: #959077 } /* Comment.Hashbang */
|
||||||
|
.highlight .cm { color: #959077 } /* Comment.Multiline */
|
||||||
|
.highlight .cp { color: #959077 } /* Comment.Preproc */
|
||||||
|
.highlight .cpf { color: #959077 } /* Comment.PreprocFile */
|
||||||
|
.highlight .c1 { color: #959077 } /* Comment.Single */
|
||||||
|
.highlight .cs { color: #959077 } /* Comment.Special */
|
||||||
|
.highlight .gd { color: #FF4689 } /* Generic.Deleted */
|
||||||
|
.highlight .ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
|
||||||
|
.highlight .ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
|
||||||
|
.highlight .gr { color: #F8F8F2 } /* Generic.Error */
|
||||||
|
.highlight .gh { color: #F8F8F2 } /* Generic.Heading */
|
||||||
|
.highlight .gi { color: #A6E22E } /* Generic.Inserted */
|
||||||
|
.highlight .go { color: #66D9EF } /* Generic.Output */
|
||||||
|
.highlight .gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
|
||||||
|
.highlight .gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
|
||||||
|
.highlight .gu { color: #959077 } /* Generic.Subheading */
|
||||||
|
.highlight .gt { color: #F8F8F2 } /* Generic.Traceback */
|
||||||
|
.highlight .kc { color: #66D9EF } /* Keyword.Constant */
|
||||||
|
.highlight .kd { color: #66D9EF } /* Keyword.Declaration */
|
||||||
|
.highlight .kn { color: #FF4689 } /* Keyword.Namespace */
|
||||||
|
.highlight .kp { color: #66D9EF } /* Keyword.Pseudo */
|
||||||
|
.highlight .kr { color: #66D9EF } /* Keyword.Reserved */
|
||||||
|
.highlight .kt { color: #66D9EF } /* Keyword.Type */
|
||||||
|
.highlight .ld { color: #E6DB74 } /* Literal.Date */
|
||||||
|
.highlight .m { color: #AE81FF } /* Literal.Number */
|
||||||
|
.highlight .s { color: #E6DB74 } /* Literal.String */
|
||||||
|
.highlight .na { color: #A6E22E } /* Name.Attribute */
|
||||||
|
.highlight .nb { color: #F8F8F2 } /* Name.Builtin */
|
||||||
|
.highlight .nc { color: #A6E22E } /* Name.Class */
|
||||||
|
.highlight .no { color: #66D9EF } /* Name.Constant */
|
||||||
|
.highlight .nd { color: #A6E22E } /* Name.Decorator */
|
||||||
|
.highlight .ni { color: #F8F8F2 } /* Name.Entity */
|
||||||
|
.highlight .ne { color: #A6E22E } /* Name.Exception */
|
||||||
|
.highlight .nf { color: #A6E22E } /* Name.Function */
|
||||||
|
.highlight .nl { color: #F8F8F2 } /* Name.Label */
|
||||||
|
.highlight .nn { color: #F8F8F2 } /* Name.Namespace */
|
||||||
|
.highlight .nx { color: #A6E22E } /* Name.Other */
|
||||||
|
.highlight .py { color: #F8F8F2 } /* Name.Property */
|
||||||
|
.highlight .nt { color: #FF4689 } /* Name.Tag */
|
||||||
|
.highlight .nv { color: #F8F8F2 } /* Name.Variable */
|
||||||
|
.highlight .ow { color: #FF4689 } /* Operator.Word */
|
||||||
|
.highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */
|
||||||
|
.highlight .w { color: #F8F8F2 } /* Text.Whitespace */
|
||||||
|
.highlight .mb { color: #AE81FF } /* Literal.Number.Bin */
|
||||||
|
.highlight .mf { color: #AE81FF } /* Literal.Number.Float */
|
||||||
|
.highlight .mh { color: #AE81FF } /* Literal.Number.Hex */
|
||||||
|
.highlight .mi { color: #AE81FF } /* Literal.Number.Integer */
|
||||||
|
.highlight .mo { color: #AE81FF } /* Literal.Number.Oct */
|
||||||
|
.highlight .sa { color: #E6DB74 } /* Literal.String.Affix */
|
||||||
|
.highlight .sb { color: #E6DB74 } /* Literal.String.Backtick */
|
||||||
|
.highlight .sc { color: #E6DB74 } /* Literal.String.Char */
|
||||||
|
.highlight .dl { color: #E6DB74 } /* Literal.String.Delimiter */
|
||||||
|
.highlight .sd { color: #E6DB74 } /* Literal.String.Doc */
|
||||||
|
.highlight .s2 { color: #E6DB74 } /* Literal.String.Double */
|
||||||
|
.highlight .se { color: #AE81FF } /* Literal.String.Escape */
|
||||||
|
.highlight .sh { color: #E6DB74 } /* Literal.String.Heredoc */
|
||||||
|
.highlight .si { color: #E6DB74 } /* Literal.String.Interpol */
|
||||||
|
.highlight .sx { color: #E6DB74 } /* Literal.String.Other */
|
||||||
|
.highlight .sr { color: #E6DB74 } /* Literal.String.Regex */
|
||||||
|
.highlight .s1 { color: #E6DB74 } /* Literal.String.Single */
|
||||||
|
.highlight .ss { color: #E6DB74 } /* Literal.String.Symbol */
|
||||||
|
.highlight .bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
|
||||||
|
.highlight .fm { color: #A6E22E } /* Name.Function.Magic */
|
||||||
|
.highlight .vc { color: #F8F8F2 } /* Name.Variable.Class */
|
||||||
|
.highlight .vg { color: #F8F8F2 } /* Name.Variable.Global */
|
||||||
|
.highlight .vi { color: #F8F8F2 } /* Name.Variable.Instance */
|
||||||
|
.highlight .vm { color: #F8F8F2 } /* Name.Variable.Magic */
|
||||||
|
.highlight .il { color: #AE81FF } /* Literal.Number.Integer.Long */
|
21
_docs_/_static/search-focus.js
Normal file
21
_docs_/_static/search-focus.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
function isInputFocused() {
|
||||||
|
const activeElement = document.activeElement;
|
||||||
|
return (
|
||||||
|
activeElement.tagName === 'INPUT' ||
|
||||||
|
activeElement.tagName === 'TEXTAREA' ||
|
||||||
|
activeElement.isContentEditable
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('keydown', function(event) {
|
||||||
|
if (event.key === '/') {
|
||||||
|
if (!isInputFocused()) {
|
||||||
|
// Prevent "/" from being entered in the search box
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// Set the focus on the search box
|
||||||
|
const searchBox = document.getElementById('search-box');
|
||||||
|
searchBox.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
@ -1,25 +1,20 @@
|
|||||||
/*
|
/*
|
||||||
* searchtools.js
|
|
||||||
* ~~~~~~~~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx JavaScript utilities for the full-text search.
|
* Sphinx JavaScript utilities for the full-text search.
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
"use strict";
|
||||||
|
|
||||||
if (!Scorer) {
|
|
||||||
/**
|
/**
|
||||||
* Simple result scoring code.
|
* Simple result scoring code.
|
||||||
*/
|
*/
|
||||||
|
if (typeof Scorer === "undefined") {
|
||||||
var Scorer = {
|
var Scorer = {
|
||||||
// Implement the following function to further tweak the score for each result
|
// Implement the following function to further tweak the score for each result
|
||||||
// The function takes a result array [filename, title, anchor, descr, score]
|
// The function takes a result array [docname, title, anchor, descr, score, filename]
|
||||||
// and returns the new score.
|
// and returns the new score.
|
||||||
/*
|
/*
|
||||||
score: function(result) {
|
score: result => {
|
||||||
return result[4];
|
const [docname, title, anchor, descr, score, filename, kind] = result
|
||||||
|
return score
|
||||||
},
|
},
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -28,423 +23,584 @@ if (!Scorer) {
|
|||||||
// or matches in the last dotted part of the object name
|
// or matches in the last dotted part of the object name
|
||||||
objPartialMatch: 6,
|
objPartialMatch: 6,
|
||||||
// Additive scores depending on the priority of the object
|
// Additive scores depending on the priority of the object
|
||||||
objPrio: {0: 15, // used to be importantResults
|
objPrio: {
|
||||||
|
0: 15, // used to be importantResults
|
||||||
1: 5, // used to be objectResults
|
1: 5, // used to be objectResults
|
||||||
2: -5}, // used to be unimportantResults
|
2: -5, // used to be unimportantResults
|
||||||
|
},
|
||||||
// Used when the priority is not in the mapping.
|
// Used when the priority is not in the mapping.
|
||||||
objPrioDefault: 0,
|
objPrioDefault: 0,
|
||||||
|
|
||||||
// query found in title
|
// query found in title
|
||||||
title: 15,
|
title: 15,
|
||||||
|
partialTitle: 7,
|
||||||
// query found in terms
|
// query found in terms
|
||||||
term: 5
|
term: 5,
|
||||||
|
partialTerm: 2,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!splitQuery) {
|
// Global search result kind enum, used by themes to style search results.
|
||||||
function splitQuery(query) {
|
class SearchResultKind {
|
||||||
return query.split(/\s+/);
|
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 _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 = title;
|
||||||
|
if (descr) {
|
||||||
|
listItem.appendChild(document.createElement("span")).innerHTML =
|
||||||
|
" (" + descr + ")";
|
||||||
|
// highlight search terms in the description
|
||||||
|
if (SPHINX_HIGHLIGHT_ENABLED) // 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) // 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
|
* Search Module
|
||||||
*/
|
*/
|
||||||
var Search = {
|
const Search = {
|
||||||
|
|
||||||
_index: null,
|
_index: null,
|
||||||
_queued_query: null,
|
_queued_query: null,
|
||||||
_pulse_status: -1,
|
_pulse_status: -1,
|
||||||
|
|
||||||
init : function() {
|
htmlToText: (htmlString, anchor) => {
|
||||||
var params = $.getQueryParameters();
|
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
|
||||||
if (params.q) {
|
for (const removalQuery of [".headerlink", "script", "style"]) {
|
||||||
var query = params.q[0];
|
htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
|
||||||
$('input[name="q"]')[0].value = query;
|
}
|
||||||
this.performSearch(query);
|
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);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
loadIndex : function(url) {
|
hasIndex: () => Search._index !== null,
|
||||||
$.ajax({type: "GET", url: url, data: null,
|
|
||||||
dataType: "script", cache: true,
|
|
||||||
complete: function(jqxhr, textstatus) {
|
|
||||||
if (textstatus != "success") {
|
|
||||||
document.getElementById("searchindexloader").src = url;
|
|
||||||
}
|
|
||||||
}});
|
|
||||||
},
|
|
||||||
|
|
||||||
setIndex : function(index) {
|
deferQuery: (query) => (Search._queued_query = query),
|
||||||
var q;
|
|
||||||
this._index = index;
|
|
||||||
if ((q = this._queued_query) !== null) {
|
|
||||||
this._queued_query = null;
|
|
||||||
Search.query(q);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
hasIndex : function() {
|
stopPulse: () => (Search._pulse_status = -1),
|
||||||
return this._index !== null;
|
|
||||||
},
|
|
||||||
|
|
||||||
deferQuery : function(query) {
|
startPulse: () => {
|
||||||
this._queued_query = query;
|
if (Search._pulse_status >= 0) return;
|
||||||
},
|
|
||||||
|
|
||||||
stopPulse : function() {
|
const pulse = () => {
|
||||||
this._pulse_status = 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
startPulse : function() {
|
|
||||||
if (this._pulse_status >= 0)
|
|
||||||
return;
|
|
||||||
function pulse() {
|
|
||||||
var i;
|
|
||||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||||
var dotString = '';
|
Search.dots.innerText = ".".repeat(Search._pulse_status);
|
||||||
for (i = 0; i < Search._pulse_status; i++)
|
if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
|
||||||
dotString += '.';
|
};
|
||||||
Search.dots.text(dotString);
|
|
||||||
if (Search._pulse_status > -1)
|
|
||||||
window.setTimeout(pulse, 500);
|
|
||||||
}
|
|
||||||
pulse();
|
pulse();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* perform a search for something (or wait until index is loaded)
|
* perform a search for something (or wait until index is loaded)
|
||||||
*/
|
*/
|
||||||
performSearch : function(query) {
|
performSearch: (query) => {
|
||||||
// create the required interface elements
|
// create the required interface elements
|
||||||
this.out = $('#search-results');
|
const searchText = document.createElement("h2");
|
||||||
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
searchText.textContent = _("Searching");
|
||||||
this.dots = $('<span></span>').appendTo(this.title);
|
const searchSummary = document.createElement("p");
|
||||||
this.status = $('<p style="display: none"></p>').appendTo(this.out);
|
searchSummary.classList.add("search-summary");
|
||||||
this.output = $('<ul class="search"/>').appendTo(this.out);
|
searchSummary.innerText = "";
|
||||||
|
const searchList = document.createElement("ul");
|
||||||
|
searchList.setAttribute("role", "list");
|
||||||
|
searchList.classList.add("search");
|
||||||
|
|
||||||
$('#search-progress').text(_('Preparing search...'));
|
const out = document.getElementById("search-results");
|
||||||
this.startPulse();
|
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!
|
// index already loaded, the browser was quick!
|
||||||
if (this.hasIndex())
|
if (Search.hasIndex()) Search.query(query);
|
||||||
this.query(query);
|
else Search.deferQuery(query);
|
||||||
else
|
},
|
||||||
this.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 array is from language_data.js
|
||||||
|
if (
|
||||||
|
stopwords.indexOf(queryTermLower) !== -1 ||
|
||||||
|
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) { // 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)
|
* execute search (requires search index to be loaded)
|
||||||
*/
|
*/
|
||||||
query : function(query) {
|
_performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
|
||||||
var i;
|
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;
|
||||||
|
|
||||||
// stem the searchterms and add them to the correct list
|
// Collect multiple result groups to be sorted separately and then ordered.
|
||||||
var stemmer = new Stemmer();
|
// Each is an array of [docname, title, anchor, descr, score, filename, kind].
|
||||||
var searchterms = [];
|
const normalResults = [];
|
||||||
var excluded = [];
|
const nonMainIndexResults = [];
|
||||||
var hlterms = [];
|
|
||||||
var tmp = splitQuery(query);
|
_removeChildren(document.getElementById("search-progress"));
|
||||||
var objectterms = [];
|
|
||||||
for (i = 0; i < tmp.length; i++) {
|
const queryLower = query.toLowerCase().trim();
|
||||||
if (tmp[i] !== "") {
|
for (const [title, foundTitles] of Object.entries(allTitles)) {
|
||||||
objectterms.push(tmp[i].toLowerCase());
|
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,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
|
// search for explicit entries in index directives
|
||||||
tmp[i] === "") {
|
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
|
||||||
// skip this "word"
|
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
|
||||||
continue;
|
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);
|
||||||
}
|
}
|
||||||
// stem the word
|
|
||||||
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
|
||||||
// prevent stemmer from cutting word smaller than two chars
|
|
||||||
if(word.length < 3 && tmp[i].length >= 3) {
|
|
||||||
word = tmp[i];
|
|
||||||
}
|
}
|
||||||
var toAppend;
|
|
||||||
// select the correct list
|
|
||||||
if (word[0] == '-') {
|
|
||||||
toAppend = excluded;
|
|
||||||
word = word.substr(1);
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
toAppend = searchterms;
|
|
||||||
hlterms.push(tmp[i].toLowerCase());
|
|
||||||
}
|
}
|
||||||
// only add if not already in the list
|
|
||||||
if (!$u.contains(toAppend, word))
|
|
||||||
toAppend.push(word);
|
|
||||||
}
|
|
||||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
|
||||||
|
|
||||||
// console.debug('SEARCH: searching for:');
|
|
||||||
// console.info('required: ', searchterms);
|
|
||||||
// console.info('excluded: ', excluded);
|
|
||||||
|
|
||||||
// prepare search
|
|
||||||
var terms = this._index.terms;
|
|
||||||
var titleterms = this._index.titleterms;
|
|
||||||
|
|
||||||
// array of [filename, title, anchor, descr, score]
|
|
||||||
var results = [];
|
|
||||||
$('#search-progress').empty();
|
|
||||||
|
|
||||||
// lookup as object
|
// lookup as object
|
||||||
for (i = 0; i < objectterms.length; i++) {
|
objectTerms.forEach((term) =>
|
||||||
var others = [].concat(objectterms.slice(0, i),
|
normalResults.push(...Search.performObjectSearch(term, objectTerms))
|
||||||
objectterms.slice(i+1, objectterms.length));
|
);
|
||||||
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
|
||||||
}
|
|
||||||
|
|
||||||
// lookup as search terms in fulltext
|
// lookup as search terms in fulltext
|
||||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
|
normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
|
||||||
|
|
||||||
// let the scorer override scores with a custom scoring function
|
// let the scorer override scores with a custom scoring function
|
||||||
if (Scorer.score) {
|
if (Scorer.score) {
|
||||||
for (i = 0; i < results.length; i++)
|
normalResults.forEach((item) => (item[4] = Scorer.score(item)));
|
||||||
results[i][4] = Scorer.score(results[i]);
|
nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// now sort the results by score (in opposite order of appearance, since the
|
// Sort each group of results by score and then alphabetically by name.
|
||||||
// display function below uses pop() to retrieve items) and then
|
normalResults.sort(_orderResultsByScoreThenName);
|
||||||
// alphabetically
|
nonMainIndexResults.sort(_orderResultsByScoreThenName);
|
||||||
results.sort(function(a, b) {
|
|
||||||
var left = a[4];
|
// Combine the result groups in (reverse) order.
|
||||||
var right = b[4];
|
// Non-main index entries are typically arbitrary cross-references,
|
||||||
if (left > right) {
|
// so display them after other results.
|
||||||
return 1;
|
let results = [...nonMainIndexResults, ...normalResults];
|
||||||
} else if (left < right) {
|
|
||||||
return -1;
|
// remove duplicate search results
|
||||||
} else {
|
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
|
||||||
// same score: sort alphabetically
|
let seen = new Set();
|
||||||
left = a[1].toLowerCase();
|
results = results.reverse().reduce((acc, result) => {
|
||||||
right = b[1].toLowerCase();
|
let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
|
||||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
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
|
// for debugging
|
||||||
//Search.lastresults = results.slice(); // a copy
|
//Search.lastresults = results.slice(); // a copy
|
||||||
//console.info('search results:', Search.lastresults);
|
// console.info("search results:", Search.lastresults);
|
||||||
|
|
||||||
// print the results
|
// print the results
|
||||||
var resultCount = results.length;
|
_displayNextItem(results, results.length, searchTerms, highlightTerms);
|
||||||
function displayNextItem() {
|
|
||||||
// results left, load the summary and display it
|
|
||||||
if (results.length) {
|
|
||||||
var item = results.pop();
|
|
||||||
var listItem = $('<li style="display:none"></li>');
|
|
||||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
|
||||||
// dirhtml builder
|
|
||||||
var dirname = item[0] + '/';
|
|
||||||
if (dirname.match(/\/index\/$/)) {
|
|
||||||
dirname = dirname.substring(0, dirname.length-6);
|
|
||||||
} else if (dirname == 'index/') {
|
|
||||||
dirname = '';
|
|
||||||
}
|
|
||||||
listItem.append($('<a/>').attr('href',
|
|
||||||
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
|
|
||||||
highlightstring + item[2]).html(item[1]));
|
|
||||||
} else {
|
|
||||||
// normal html builders
|
|
||||||
listItem.append($('<a/>').attr('href',
|
|
||||||
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
|
||||||
highlightstring + item[2]).html(item[1]));
|
|
||||||
}
|
|
||||||
if (item[3]) {
|
|
||||||
listItem.append($('<span> (' + item[3] + ')</span>'));
|
|
||||||
Search.output.append(listItem);
|
|
||||||
listItem.slideDown(5, function() {
|
|
||||||
displayNextItem();
|
|
||||||
});
|
|
||||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
|
||||||
var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
|
|
||||||
if (suffix === undefined) {
|
|
||||||
suffix = '.txt';
|
|
||||||
}
|
|
||||||
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
|
|
||||||
dataType: "text",
|
|
||||||
complete: function(jqxhr, textstatus) {
|
|
||||||
var data = jqxhr.responseText;
|
|
||||||
if (data !== '' && data !== undefined) {
|
|
||||||
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
|
||||||
}
|
|
||||||
Search.output.append(listItem);
|
|
||||||
listItem.slideDown(5, function() {
|
|
||||||
displayNextItem();
|
|
||||||
});
|
|
||||||
}});
|
|
||||||
} else {
|
|
||||||
// no source available, just display title
|
|
||||||
Search.output.append(listItem);
|
|
||||||
listItem.slideDown(5, function() {
|
|
||||||
displayNextItem();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// search finished, update title and status message
|
|
||||||
else {
|
|
||||||
Search.stopPulse();
|
|
||||||
Search.title.text(_('Search Results'));
|
|
||||||
if (!resultCount)
|
|
||||||
Search.status.text(_('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.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
|
||||||
Search.status.fadeIn(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
displayNextItem();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* search for object names
|
* search for object names
|
||||||
*/
|
*/
|
||||||
performObjectSearch : function(object, otherterms) {
|
performObjectSearch: (object, objectTerms) => {
|
||||||
var filenames = this._index.filenames;
|
const filenames = Search._index.filenames;
|
||||||
var docnames = this._index.docnames;
|
const docNames = Search._index.docnames;
|
||||||
var objects = this._index.objects;
|
const objects = Search._index.objects;
|
||||||
var objnames = this._index.objnames;
|
const objNames = Search._index.objnames;
|
||||||
var titles = this._index.titles;
|
const titles = Search._index.titles;
|
||||||
|
|
||||||
var i;
|
const results = [];
|
||||||
var 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(".");
|
||||||
|
|
||||||
for (var prefix in objects) {
|
|
||||||
for (var name in objects[prefix]) {
|
|
||||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
|
||||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
|
||||||
var score = 0;
|
|
||||||
var parts = fullname.split('.');
|
|
||||||
// check for different match types: exact matches of full name or
|
// check for different match types: exact matches of full name or
|
||||||
// "last name" (i.e. last dotted part)
|
// "last name" (i.e. last dotted part)
|
||||||
if (fullname == object || parts[parts.length - 1] == object) {
|
if (fullnameLower === object || parts.slice(-1)[0] === object)
|
||||||
score += Scorer.objNameMatch;
|
score += Scorer.objNameMatch;
|
||||||
// matches in last name
|
else if (parts.slice(-1)[0].indexOf(object) > -1)
|
||||||
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
score += Scorer.objPartialMatch; // matches in last name
|
||||||
score += Scorer.objPartialMatch;
|
|
||||||
}
|
const objName = objNames[match[1]][2];
|
||||||
var match = objects[prefix][name];
|
const title = titles[match[0]];
|
||||||
var objname = objnames[match[1]][2];
|
|
||||||
var title = titles[match[0]];
|
|
||||||
// If more than one term searched for, we require other words to be
|
// If more than one term searched for, we require other words to be
|
||||||
// found in the name/title/description
|
// found in the name/title/description
|
||||||
if (otherterms.length > 0) {
|
const otherTerms = new Set(objectTerms);
|
||||||
var haystack = (prefix + ' ' + name + ' ' +
|
otherTerms.delete(object);
|
||||||
objname + ' ' + title).toLowerCase();
|
if (otherTerms.size > 0) {
|
||||||
var allfound = true;
|
const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
|
||||||
for (i = 0; i < otherterms.length; i++) {
|
if (
|
||||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
[...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
|
||||||
allfound = false;
|
)
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!allfound) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var descr = objname + _(', in ') + title;
|
|
||||||
|
|
||||||
var anchor = match[3];
|
let anchor = match[3];
|
||||||
if (anchor === '')
|
if (anchor === "") anchor = fullname;
|
||||||
anchor = fullname;
|
else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
|
||||||
else if (anchor == '-')
|
|
||||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
const descr = objName + _(", in ") + title;
|
||||||
|
|
||||||
// add custom score for some objects according to scorer
|
// add custom score for some objects according to scorer
|
||||||
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
if (Scorer.objPrio.hasOwnProperty(match[2]))
|
||||||
score += Scorer.objPrio[match[2]];
|
score += Scorer.objPrio[match[2]];
|
||||||
} else {
|
else score += Scorer.objPrioDefault;
|
||||||
score += Scorer.objPrioDefault;
|
|
||||||
}
|
|
||||||
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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;
|
return results;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* search for full-text terms in the index
|
* search for full-text terms in the index
|
||||||
*/
|
*/
|
||||||
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
|
performTermsSearch: (searchTerms, excludedTerms) => {
|
||||||
var docnames = this._index.docnames;
|
// prepare search
|
||||||
var filenames = this._index.filenames;
|
const terms = Search._index.terms;
|
||||||
var titles = this._index.titles;
|
const titleTerms = Search._index.titleterms;
|
||||||
|
const filenames = Search._index.filenames;
|
||||||
|
const docNames = Search._index.docnames;
|
||||||
|
const titles = Search._index.titles;
|
||||||
|
|
||||||
var i, j, file;
|
const scoreMap = new Map();
|
||||||
var fileMap = {};
|
const fileMap = new Map();
|
||||||
var scoreMap = {};
|
|
||||||
var results = [];
|
|
||||||
|
|
||||||
// perform the search on the required terms
|
// perform the search on the required terms
|
||||||
for (i = 0; i < searchterms.length; i++) {
|
searchTerms.forEach((word) => {
|
||||||
var word = searchterms[i];
|
const files = [];
|
||||||
var files = [];
|
// find documents, if any, containing the query word in their text/title term indices
|
||||||
var _o = [
|
// use Object.hasOwnProperty to avoid mismatching against prototype properties
|
||||||
{files: terms[word], score: Scorer.term},
|
const arr = [
|
||||||
{files: titleterms[word], score: Scorer.title}
|
{ 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
|
// no match but word was a required one
|
||||||
if ($u.every(_o, function(o){return o.files === undefined;})) {
|
if (arr.every((record) => record.files === undefined)) return;
|
||||||
break;
|
|
||||||
}
|
|
||||||
// found search word in contents
|
// found search word in contents
|
||||||
$u.each(_o, function(o) {
|
arr.forEach((record) => {
|
||||||
var _files = o.files;
|
if (record.files === undefined) return;
|
||||||
if (_files === undefined)
|
|
||||||
return
|
|
||||||
|
|
||||||
if (_files.length === undefined)
|
let recordFiles = record.files;
|
||||||
_files = [_files];
|
if (recordFiles.length === undefined) recordFiles = [recordFiles];
|
||||||
files = files.concat(_files);
|
files.push(...recordFiles);
|
||||||
|
|
||||||
// set score for the word in each file to Scorer.term
|
// set score for the word in each file
|
||||||
for (j = 0; j < _files.length; j++) {
|
recordFiles.forEach((file) => {
|
||||||
file = _files[j];
|
if (!scoreMap.has(file)) scoreMap.set(file, new Map());
|
||||||
if (!(file in scoreMap))
|
const fileScores = scoreMap.get(file);
|
||||||
scoreMap[file] = {}
|
fileScores.set(word, record.score);
|
||||||
scoreMap[file][word] = o.score;
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// create the mapping
|
// create the mapping
|
||||||
for (j = 0; j < files.length; j++) {
|
files.forEach((file) => {
|
||||||
file = files[j];
|
if (!fileMap.has(file)) fileMap.set(file, [word]);
|
||||||
if (file in fileMap)
|
else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
|
||||||
fileMap[file].push(word);
|
});
|
||||||
else
|
});
|
||||||
fileMap[file] = [word];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// now check if the files don't contain excluded terms
|
// now check if the files don't contain excluded terms
|
||||||
for (file in fileMap) {
|
const results = [];
|
||||||
var valid = true;
|
for (const [file, wordList] of fileMap) {
|
||||||
|
|
||||||
// check if all requirements are matched
|
// check if all requirements are matched
|
||||||
if (fileMap[file].length != searchterms.length)
|
|
||||||
|
// 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;
|
continue;
|
||||||
|
|
||||||
// ensure that none of the excluded terms is in the search result
|
// ensure that none of the excluded terms is in the search result
|
||||||
for (i = 0; i < excluded.length; i++) {
|
if (
|
||||||
if (terms[excluded[i]] == file ||
|
[...excludedTerms].some(
|
||||||
titleterms[excluded[i]] == file ||
|
(term) =>
|
||||||
$u.contains(terms[excluded[i]] || [], file) ||
|
terms[term] === file ||
|
||||||
$u.contains(titleterms[excluded[i]] || [], file)) {
|
titleTerms[term] === file ||
|
||||||
valid = false;
|
(terms[term] || []).includes(file) ||
|
||||||
|
(titleTerms[term] || []).includes(file)
|
||||||
|
)
|
||||||
|
)
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we have still a valid result we can add it to the result list
|
|
||||||
if (valid) {
|
|
||||||
// select one (max) score for the file.
|
// select one (max) score for the file.
|
||||||
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
|
const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
|
||||||
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
|
// add result to the result list
|
||||||
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
|
results.push([
|
||||||
}
|
docNames[file],
|
||||||
|
titles[file],
|
||||||
|
"",
|
||||||
|
null,
|
||||||
|
score,
|
||||||
|
filenames[file],
|
||||||
|
SearchResultKind.text,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
},
|
},
|
||||||
@ -452,30 +608,28 @@ var Search = {
|
|||||||
/**
|
/**
|
||||||
* helper function to return a node containing the
|
* helper function to return a node containing the
|
||||||
* search summary for a given text. keywords is a list
|
* search summary for a given text. keywords is a list
|
||||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
* of stemmed words.
|
||||||
* words. the first one is used to find the occurrence, the
|
|
||||||
* latter for highlighting it.
|
|
||||||
*/
|
*/
|
||||||
makeSearchSummary : function(text, keywords, hlwords) {
|
makeSearchSummary: (htmlText, keywords, anchor) => {
|
||||||
var textLower = text.toLowerCase();
|
const text = Search.htmlToText(htmlText, anchor);
|
||||||
var start = 0;
|
if (text === "") return null;
|
||||||
$.each(keywords, function() {
|
|
||||||
var i = textLower.indexOf(this.toLowerCase());
|
const textLower = text.toLowerCase();
|
||||||
if (i > -1)
|
const actualStartPosition = [...keywords]
|
||||||
start = i;
|
.map((k) => textLower.indexOf(k.toLowerCase()))
|
||||||
});
|
.filter((i) => i > -1)
|
||||||
start = Math.max(start - 120, 0);
|
.slice(-1)[0];
|
||||||
var excerpt = ((start > 0) ? '...' : '') +
|
const startWithContext = Math.max(actualStartPosition - 120, 0);
|
||||||
$.trim(text.substr(start, 240)) +
|
|
||||||
((start + 240 - text.length) ? '...' : '');
|
const top = startWithContext === 0 ? "" : "...";
|
||||||
var rv = $('<div class="context"></div>').text(excerpt);
|
const tail = startWithContext + 240 < text.length ? "..." : "";
|
||||||
$.each(hlwords, function() {
|
|
||||||
rv = rv.highlightText(this, 'highlighted');
|
let summary = document.createElement("p");
|
||||||
});
|
summary.classList.add("context");
|
||||||
return rv;
|
summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
|
||||||
}
|
|
||||||
|
return summary;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
$(document).ready(function() {
|
_ready(Search.init);
|
||||||
Search.init();
|
|
||||||
});
|
|
||||||
|
64
_docs_/_static/sidebar.js
Normal file
64
_docs_/_static/sidebar.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* This script makes the Sphinx sidebar collapsible.
|
||||||
|
*
|
||||||
|
* .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
|
||||||
|
* in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
|
||||||
|
* used to collapse and expand the sidebar.
|
||||||
|
*
|
||||||
|
* When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
|
||||||
|
* and the width of the sidebar and the margin-left of the document
|
||||||
|
* are decreased. When the sidebar is expanded the opposite happens.
|
||||||
|
* This script saves a per-browser/per-session cookie used to
|
||||||
|
* remember the position of the sidebar among the pages.
|
||||||
|
* Once the browser is closed the cookie is deleted and the position
|
||||||
|
* reset to the default (expanded).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
const initialiseSidebar = () => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// global elements used by the functions.
|
||||||
|
const bodyWrapper = document.getElementsByClassName("bodywrapper")[0]
|
||||||
|
const sidebar = document.getElementsByClassName("sphinxsidebar")[0]
|
||||||
|
const sidebarWrapper = document.getElementsByClassName('sphinxsidebarwrapper')[0]
|
||||||
|
const sidebarButton = document.getElementById("sidebarbutton")
|
||||||
|
const sidebarArrow = sidebarButton.querySelector('span')
|
||||||
|
|
||||||
|
// for some reason, the document has no sidebar; do not run into errors
|
||||||
|
if (typeof sidebar === "undefined") return;
|
||||||
|
|
||||||
|
const flipArrow = element => element.innerText = (element.innerText === "»") ? "«" : "»"
|
||||||
|
|
||||||
|
const collapse_sidebar = () => {
|
||||||
|
bodyWrapper.style.marginLeft = ".8em";
|
||||||
|
sidebar.style.width = ".8em"
|
||||||
|
sidebarWrapper.style.display = "none"
|
||||||
|
flipArrow(sidebarArrow)
|
||||||
|
sidebarButton.title = _('Expand sidebar')
|
||||||
|
window.localStorage.setItem("sidebar", "collapsed")
|
||||||
|
}
|
||||||
|
|
||||||
|
const expand_sidebar = () => {
|
||||||
|
bodyWrapper.style.marginLeft = ""
|
||||||
|
sidebar.style.removeProperty("width")
|
||||||
|
sidebarWrapper.style.display = ""
|
||||||
|
flipArrow(sidebarArrow)
|
||||||
|
sidebarButton.title = _('Collapse sidebar')
|
||||||
|
window.localStorage.setItem("sidebar", "expanded")
|
||||||
|
}
|
||||||
|
|
||||||
|
sidebarButton.addEventListener("click", () => {
|
||||||
|
(sidebarWrapper.style.display === "none") ? expand_sidebar() : collapse_sidebar()
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!window.localStorage.getItem("sidebar")) return
|
||||||
|
const value = window.localStorage.getItem("sidebar")
|
||||||
|
if (value === "collapsed") collapse_sidebar();
|
||||||
|
else if (value === "expanded") expand_sidebar();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState !== "loading") initialiseSidebar()
|
||||||
|
else document.addEventListener("DOMContentLoaded", initialiseSidebar)
|
154
_docs_/_static/sphinx_highlight.js
Normal file
154
_docs_/_static/sphinx_highlight.js
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
/* 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")
|
||||||
|
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();
|
||||||
|
});
|
24
_docs_/_static/themetoggle.js
Normal file
24
_docs_/_static/themetoggle.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const pydocthemeDark = document.getElementById('pydoctheme_dark_css')
|
||||||
|
const pygmentsDark = document.getElementById('pygments_dark_css')
|
||||||
|
const themeSelectors = document.getElementsByClassName('theme-selector')
|
||||||
|
|
||||||
|
function activateTheme(theme) {
|
||||||
|
localStorage.setItem('currentTheme', theme);
|
||||||
|
[...themeSelectors].forEach(e => e.value = theme)
|
||||||
|
switch (theme) {
|
||||||
|
case 'light':
|
||||||
|
pydocthemeDark.media = 'not all'
|
||||||
|
pygmentsDark.media = 'not all'
|
||||||
|
break;
|
||||||
|
case 'dark':
|
||||||
|
pydocthemeDark.media = 'all'
|
||||||
|
pygmentsDark.media = 'all'
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// auto
|
||||||
|
pydocthemeDark.media = '(prefers-color-scheme: dark)'
|
||||||
|
pygmentsDark.media = '(prefers-color-scheme: dark)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
activateTheme(localStorage.getItem('currentTheme') || 'auto')
|
File diff suppressed because it is too large
Load Diff
@ -1,148 +1,125 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="writer-html4" lang="en" >
|
|
||||||
|
<html lang="en" data-content_root="./">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Index — fstools documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
|
||||||
<title>Index — fstools documentation</title>
|
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
|
||||||
|
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="_static/js/html5shiv.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
||||||
|
|
||||||
|
<script src="_static/documentation_options.js?v=5929fcd5"></script>
|
||||||
|
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||||||
|
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||||
|
|
||||||
<link rel="index" title="Index" href="#" />
|
<link rel="index" title="Index" href="#" />
|
||||||
<link rel="search" title="Search" href="search.html" />
|
<link rel="search" title="Search" href="search.html" /><link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||||||
|
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
|
||||||
|
<script type="text/javascript" src="_static/copybutton.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/menu.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/search-focus.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/themetoggle.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
<body>
|
||||||
<body class="wy-body-for-nav">
|
<div class="mobile-nav">
|
||||||
|
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||||||
|
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||||||
<div class="wy-grid-for-nav">
|
<nav class="nav-content" role="navigation">
|
||||||
|
<label for="menuToggler" class="toggler__label">
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
<span></span>
|
||||||
<div class="wy-side-scroll">
|
</label>
|
||||||
<div class="wy-side-nav-search" >
|
<span class="nav-items-wrapper">
|
||||||
|
<a href="https://www.python.org/" class="nav-logo">
|
||||||
|
<img src="_static/py.svg" alt="Python logo">
|
||||||
|
|
||||||
<a href="index.html" class="icon icon-home" alt="Documentation Home"> fstools
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
|
<span class="version_switcher_placeholder"></span>
|
||||||
|
<form role="search" class="search" action="search.html" method="get">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||||||
|
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
|
||||||
|
</svg>
|
||||||
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
|
||||||
|
<input type="submit" value="Go">
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
|
</nav>
|
||||||
|
<div class="menu-wrapper">
|
||||||
|
<nav class="menu" role="navigation" aria-label="main navigation">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
<div role="search">
|
</select>
|
||||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
</label>
|
||||||
<input type="text" name="q" placeholder="Search docs" />
|
<search id="searchbox" style="display: none" role="search">
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
<input type="hidden" name="area" value="default" />
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="Go" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
</search>
|
||||||
|
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
<nav class="wy-nav-top" aria-label="top navigation">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="#" title="General Index"
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
accesskey="I">index</a></li>
|
||||||
<a href="index.html">fstools</a>
|
<li class="right" >
|
||||||
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
</nav>
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
<div class="wy-nav-content">
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
<div class="rst-content">
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
||||||
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
|
|
||||||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
|
||||||
|
|
||||||
<li>Index</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="index.html">fstools documentation</a> »
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Index</a></li>
|
||||||
|
<li class="right">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="inline-search" role="search">
|
||||||
|
<form class="inline-search" action="search.html" method="get">
|
||||||
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||||
|
<input type="submit" value="Go">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
</li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
</div>
|
</div>
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
|
||||||
<h1 id="index">Index</h1>
|
<h1 id="index">Index</h1>
|
||||||
@ -171,8 +148,13 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="index.html#module-fstools">fstools (module)</a>
|
<li>
|
||||||
|
fstools
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html#module-fstools">module</a>
|
||||||
</li>
|
</li>
|
||||||
|
</ul></li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
@ -190,6 +172,15 @@
|
|||||||
<li><a href="index.html#fstools.mkdir">mkdir() (in module fstools)</a>
|
<li><a href="index.html#fstools.mkdir">mkdir() (in module fstools)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li>
|
||||||
|
module
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html#module-fstools">fstools</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
<h2 id="O">O</h2>
|
<h2 id="O">O</h2>
|
||||||
@ -218,50 +209,92 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
<div class="clearer"></div>
|
||||||
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>
|
|
||||||
|
|
||||||
© Copyright 2021, Dirk Alders
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
|
||||||
|
|
||||||
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
|
||||||
|
|
||||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<search id="searchbox" style="display: none" role="search">
|
||||||
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</search>
|
||||||
|
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="#" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<a href="index.html">fstools documentation</a> »
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Index</a></li>
|
||||||
|
<li class="right">
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<div class="inline-search" role="search">
|
||||||
jQuery(function () {
|
<form class="inline-search" action="search.html" method="get">
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||||
});
|
<input type="submit" value="Go">
|
||||||
</script>
|
</form>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
</li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
©
|
||||||
|
Copyright
|
||||||
|
2025, Dirk Alders.
|
||||||
|
<br>
|
||||||
|
This page is licensed under the Python Software Foundation License Version 2.
|
||||||
|
<br>
|
||||||
|
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
The Python Software Foundation is a non-profit corporation.
|
||||||
|
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,216 +1,212 @@
|
|||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="writer-html4" lang="en" >
|
|
||||||
|
<html lang="en" data-content_root="./">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<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" />
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<title>Welcome to cachings’s documentation! — fstools documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<title>Welcome to fstools’s documentation! — fstools documentation</title>
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
|
||||||
|
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
|
||||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="_static/js/html5shiv.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
||||||
|
|
||||||
|
<script src="_static/documentation_options.js?v=5929fcd5"></script>
|
||||||
|
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||||||
|
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||||
|
|
||||||
<link rel="index" title="Index" href="genindex.html" />
|
<link rel="index" title="Index" href="genindex.html" />
|
||||||
<link rel="search" title="Search" href="search.html" />
|
<link rel="search" title="Search" href="search.html" /><link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||||||
|
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
|
||||||
|
<script type="text/javascript" src="_static/copybutton.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/menu.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/search-focus.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/themetoggle.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
<body>
|
||||||
<body class="wy-body-for-nav">
|
<div class="mobile-nav">
|
||||||
|
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||||||
|
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||||||
<div class="wy-grid-for-nav">
|
<nav class="nav-content" role="navigation">
|
||||||
|
<label for="menuToggler" class="toggler__label">
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
<span></span>
|
||||||
<div class="wy-side-scroll">
|
</label>
|
||||||
<div class="wy-side-nav-search" >
|
<span class="nav-items-wrapper">
|
||||||
|
<a href="https://www.python.org/" class="nav-logo">
|
||||||
|
<img src="_static/py.svg" alt="Python logo">
|
||||||
|
|
||||||
<a href="#" class="icon icon-home" alt="Documentation Home"> fstools
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
|
<span class="version_switcher_placeholder"></span>
|
||||||
|
<form role="search" class="search" action="search.html" method="get">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||||||
|
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
|
||||||
|
</svg>
|
||||||
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
|
||||||
|
<input type="submit" value="Go">
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Search docs" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</span>
|
||||||
|
</nav>
|
||||||
|
<div class="menu-wrapper">
|
||||||
|
<nav class="menu" role="navigation" aria-label="main navigation">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
|
||||||
|
<label class="theme-selector-label">
|
||||||
</div>
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
<div>
|
||||||
|
<h3><a href="#">Table of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
<!-- Local TOC -->
|
<li><a class="reference internal" href="#">Welcome to cachings’s documentation!</a><ul>
|
||||||
<div class="local-toc"><ul>
|
|
||||||
<li><a class="reference internal" href="#">Welcome to fstools’s documentation!</a><ul>
|
|
||||||
<li><a class="reference internal" href="#fstools-filesystem-tools">fstools (Filesystem Tools)</a></li>
|
<li><a class="reference internal" href="#fstools-filesystem-tools">fstools (Filesystem Tools)</a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.dirlist"><code class="docutils literal notranslate"><span class="pre">dirlist()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.filelist"><code class="docutils literal notranslate"><span class="pre">filelist()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.is_writeable"><code class="docutils literal notranslate"><span class="pre">is_writeable()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.mkdir"><code class="docutils literal notranslate"><span class="pre">mkdir()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.open_locked_blocking"><code class="docutils literal notranslate"><span class="pre">open_locked_blocking()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.open_locked_non_blocking"><code class="docutils literal notranslate"><span class="pre">open_locked_non_blocking()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.uid"><code class="docutils literal notranslate"><span class="pre">uid()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.uid_filelist"><code class="docutils literal notranslate"><span class="pre">uid_filelist()</span></code></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div role="note" aria-label="source link">
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/index.rst.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<search id="searchbox" style="display: none" role="search">
|
||||||
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</search>
|
||||||
|
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||||||
</nav>
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
<nav class="wy-nav-top" aria-label="top navigation">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
accesskey="I">index</a></li>
|
||||||
<a href="#">fstools</a>
|
<li class="right" >
|
||||||
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
</nav>
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
<div class="wy-nav-content">
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
<div class="rst-content">
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
||||||
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
|
|
||||||
<li><a href="#" class="icon icon-home"></a> »</li>
|
|
||||||
|
|
||||||
<li>Welcome to fstools’s documentation!</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="_sources/index.rst.txt" rel="nofollow"> View page source</a>
|
|
||||||
|
|
||||||
|
<a href="#">fstools documentation</a> »
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Welcome to cachings’s documentation!</a></li>
|
||||||
|
<li class="right">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="inline-search" role="search">
|
||||||
|
<form class="inline-search" action="search.html" method="get">
|
||||||
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||||
|
<input type="submit" value="Go">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
</li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
</div>
|
</div>
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<div class="section" id="module-fstools">
|
<div class="document">
|
||||||
<span id="welcome-to-fstools-s-documentation"></span><h1>Welcome to fstools’s documentation!<a class="headerlink" href="#module-fstools" title="Permalink to this headline">¶</a></h1>
|
<div class="documentwrapper">
|
||||||
<div class="section" id="fstools-filesystem-tools">
|
<div class="bodywrapper">
|
||||||
<h2>fstools (Filesystem Tools)<a class="headerlink" href="#fstools-filesystem-tools" title="Permalink to this headline">¶</a></h2>
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
<section id="module-fstools">
|
||||||
|
<span id="welcome-to-cachings-s-documentation"></span><h1>Welcome to cachings’s documentation!<a class="headerlink" href="#module-fstools" title="Link to this heading">¶</a></h1>
|
||||||
|
<section id="fstools-filesystem-tools">
|
||||||
|
<h2>fstools (Filesystem Tools)<a class="headerlink" href="#fstools-filesystem-tools" title="Link to this heading">¶</a></h2>
|
||||||
<p><strong>Author:</strong></p>
|
<p><strong>Author:</strong></p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li>Dirk Alders <<a class="reference external" href="mailto:sudo-dirk%40mount-mockery.de">sudo-dirk<span>@</span>mount-mockery<span>.</span>de</a>></li>
|
<li><p>Dirk Alders <<a class="reference external" href="mailto:sudo-dirk%40mount-mockery.de">sudo-dirk<span>@</span>mount-mockery<span>.</span>de</a>></p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><strong>Description:</strong></p>
|
<p><strong>Description:</strong></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<div>This module supports functions and classes to handle files and paths</div></blockquote>
|
<div><p>This module supports functions and classes to handle files and paths</p>
|
||||||
|
</div></blockquote>
|
||||||
<p><strong>Submodules:</strong></p>
|
<p><strong>Submodules:</strong></p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><a class="reference internal" href="#fstools.dirlist" title="fstools.dirlist"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.dirlist()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.dirlist" title="fstools.dirlist"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.dirlist()</span></code></a></p></li>
|
||||||
<li><a class="reference internal" href="#fstools.filelist" title="fstools.filelist"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.filelist()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.filelist" title="fstools.filelist"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.filelist()</span></code></a></p></li>
|
||||||
<li><a class="reference internal" href="#fstools.is_writeable" title="fstools.is_writeable"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.is_writeable()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.is_writeable" title="fstools.is_writeable"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.is_writeable()</span></code></a></p></li>
|
||||||
<li><a class="reference internal" href="#fstools.mkdir" title="fstools.mkdir"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.mkdir()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.mkdir" title="fstools.mkdir"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.mkdir()</span></code></a></p></li>
|
||||||
<li><a class="reference internal" href="#fstools.open_locked_blocking" title="fstools.open_locked_blocking"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.open_locked_blocking()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.open_locked_blocking" title="fstools.open_locked_blocking"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.open_locked_blocking()</span></code></a></p></li>
|
||||||
<li><a class="reference internal" href="#fstools.open_locked_non_blocking" title="fstools.open_locked_non_blocking"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.open_locked_non_blocking()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.open_locked_non_blocking" title="fstools.open_locked_non_blocking"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.open_locked_non_blocking()</span></code></a></p></li>
|
||||||
<li><a class="reference internal" href="#fstools.uid" title="fstools.uid"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.uid()</span></code></a></li>
|
<li><p><a class="reference internal" href="#fstools.uid" title="fstools.uid"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.uid()</span></code></a></p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><strong>Unittest:</strong></p>
|
<p><strong>Unittest:</strong></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<div>See also the <a class="reference download internal" download="" href="_downloads/7bf10188aa659556c284b4a8298dba8d/unittest.pdf"><code class="xref download docutils literal notranslate"><span class="pre">unittest</span></code></a> documentation.</div></blockquote>
|
<div><p>See also the <a class="reference download internal" download="" href="_downloads/c68c8cb37d326ff4fa7a0781182bc493/unittest.pdf"><code class="xref download docutils literal notranslate"><span class="pre">unittest</span></code></a> documentation.</p>
|
||||||
|
</div></blockquote>
|
||||||
<p><strong>Module Documentation:</strong></p>
|
<p><strong>Module Documentation:</strong></p>
|
||||||
<dl class="function">
|
</section>
|
||||||
<dt id="fstools.dirlist">
|
<dl class="py function">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">dirlist</code><span class="sig-paren">(</span><em>path='.'</em>, <em>rekursive=True</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.dirlist" title="Permalink to this definition">¶</a></dt>
|
<dt class="sig sig-object py" id="fstools.dirlist">
|
||||||
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">dirlist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'.'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expression</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'*'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rekursive</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.dirlist" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Function returning a list of directories below a given path.</p>
|
<dd><p>Function returning a list of directories below a given path.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><ul class="simple">
|
||||||
<tbody valign="top">
|
<li><p><strong>path</strong> (<em>str</em>) – folder which is the basepath for searching files.</p></li>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
<li><p><strong>expression</strong> (<em>str</em>) – expression to fit including shell-style wildcards. It is only used for the first directory level, if rekursive is set to True.</p></li>
|
||||||
<li><strong>path</strong> (<em>str</em>) – folder which is the basepath for searching files.</li>
|
<li><p><strong>rekursive</strong> (<em>bool</em>) – search all subfolders if True.</p></li>
|
||||||
<li><strong>rekursive</strong> (<em>bool</em>) – search all subfolders if True.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">list of filenames including the pathe</p>
|
<dd class="field-even"><p>list of filenames including the pathe</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">list</p>
|
<dd class="field-odd"><p>list</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
</dl>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">The returned filenames could be relative pathes depending on argument path.</p>
|
<p>The returned filenames could be relative pathes depending on argument path.</p>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>Example:</strong></p>
|
<p><strong>Example:</strong></p>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">sys</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
||||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">fstools</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">fstools</span>
|
||||||
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">dirname</span> <span class="ow">in</span> <span class="n">fstools</span><span class="o">.</span><span class="n">dirlist</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">'..'</span><span class="p">,</span> <span class="n">rekursive</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">dirname</span> <span class="ow">in</span> <span class="n">fstools</span><span class="o">.</span><span class="n">dirlist</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">'..'</span><span class="p">,</span> <span class="n">rekursive</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||||
@ -219,57 +215,53 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="n">_examples_</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="n">_examples_</span>
|
||||||
<span class="o">../</span><span class="n">__pycache__</span>
|
<span class="o">../</span><span class="n">__pycache__</span>
|
||||||
<span class="o">../</span><span class="n">_testresults_</span>
|
|
||||||
<span class="o">../</span><span class="n">_docs_</span>
|
<span class="o">../</span><span class="n">_docs_</span>
|
||||||
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_sources</span>
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span>
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span>
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">fonts</span>
|
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">fonts</span><span class="o">/</span><span class="n">Lato</span>
|
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">fonts</span><span class="o">/</span><span class="n">RobotoSlab</span>
|
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">js</span>
|
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">css</span>
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">css</span>
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">css</span><span class="o">/</span><span class="n">fonts</span>
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">css</span><span class="o">/</span><span class="n">fonts</span>
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_sources</span>
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">js</span>
|
||||||
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">fonts</span>
|
||||||
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">fonts</span><span class="o">/</span><span class="n">RobotoSlab</span>
|
||||||
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_static</span><span class="o">/</span><span class="n">fonts</span><span class="o">/</span><span class="n">Lato</span>
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_downloads</span>
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_downloads</span>
|
||||||
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_downloads</span><span class="o">/</span><span class="mi">7</span><span class="n">bf10188aa659556c284b4a8298dba8d</span>
|
<span class="o">../</span><span class="n">_docs_</span><span class="o">/</span><span class="n">_downloads</span><span class="o">/</span><span class="mi">7</span><span class="n">bf10188aa659556c284b4a8298dba8d</span>
|
||||||
|
<span class="o">../</span><span class="n">_testresults_</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.filelist">
|
<dt class="sig sig-object py" id="fstools.filelist">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">filelist</code><span class="sig-paren">(</span><em>path='.'</em>, <em>expression='*'</em>, <em>rekursive=True</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.filelist" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">filelist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'.'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expression</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'*'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rekursive</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.filelist" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Function returning a list of files below a given path.</p>
|
<dd><p>Function returning a list of files below a given path.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><ul class="simple">
|
||||||
<tbody valign="top">
|
<li><p><strong>path</strong> (<em>str</em>) – folder which is the basepath for searching files.</p></li>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
<li><p><strong>expression</strong> (<em>str</em>) – expression to fit including shell-style wildcards.</p></li>
|
||||||
<li><strong>path</strong> (<em>str</em>) – folder which is the basepath for searching files.</li>
|
<li><p><strong>rekursive</strong> (<em>bool</em>) – search all subfolders if True.</p></li>
|
||||||
<li><strong>expression</strong> (<em>str</em>) – expression to fit including shell-style wildcards.</li>
|
|
||||||
<li><strong>rekursive</strong> (<em>bool</em>) – search all subfolders if True.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">list of filenames including the pathe</p>
|
<dd class="field-even"><p>list of filenames including the pathe</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">list</p>
|
<dd class="field-odd"><p>list</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
</dl>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">The returned filenames could be relative pathes depending on argument path.</p>
|
<p>The returned filenames could be relative pathes depending on argument path.</p>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>Example:</strong></p>
|
<p><strong>Example:</strong></p>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">sys</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
||||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">fstools</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">fstools</span>
|
||||||
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="n">fstools</span><span class="o">.</span><span class="n">filelist</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">'..'</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="s1">'*.py'</span><span class="p">,</span> <span class="n">rekursive</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
<span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="n">fstools</span><span class="o">.</span><span class="n">filelist</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">'..'</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="s1">'*.py'</span><span class="p">,</span> <span class="n">rekursive</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||||
@ -277,43 +269,42 @@
|
|||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="fm">__init__</span><span class="o">.</span><span class="n">py</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="fm">__init__</span><span class="o">.</span><span class="n">py</span>
|
||||||
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">uid</span><span class="o">.</span><span class="n">py</span>
|
|
||||||
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">is_writeable</span><span class="o">.</span><span class="n">py</span>
|
|
||||||
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">uid_filelist</span><span class="o">.</span><span class="n">py</span>
|
|
||||||
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">dirlist</span><span class="o">.</span><span class="n">py</span>
|
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">dirlist</span><span class="o">.</span><span class="n">py</span>
|
||||||
|
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">uid</span><span class="o">.</span><span class="n">py</span>
|
||||||
|
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">uid_filelist</span><span class="o">.</span><span class="n">py</span>
|
||||||
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">filelist</span><span class="o">.</span><span class="n">py</span>
|
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">filelist</span><span class="o">.</span><span class="n">py</span>
|
||||||
|
<span class="o">../</span><span class="n">_examples_</span><span class="o">/</span><span class="n">is_writeable</span><span class="o">.</span><span class="n">py</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.is_writeable">
|
<dt class="sig sig-object py" id="fstools.is_writeable">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">is_writeable</code><span class="sig-paren">(</span><em>path</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.is_writeable" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">is_writeable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.is_writeable" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Method to get the Information, if a file or folder is writable.</p>
|
<dd><p>Method to get the Information, if a file or folder is writable.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><p><strong>path</strong> (<em>str</em>) – file or folder to check.</p>
|
||||||
<tbody valign="top">
|
</dd>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>path</strong> (<em>str</em>) – file or folder to check.</td>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
</tr>
|
<dd class="field-even"><p>Whether path is writable or not.</p>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Whether path is writable or not.</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">bool</td>
|
<dd class="field-odd"><p>bool</p>
|
||||||
</tr>
|
</dd>
|
||||||
</tbody>
|
</dl>
|
||||||
</table>
|
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">If path does not exist, the return Value is <code class="xref py py-const docutils literal notranslate"><span class="pre">False</span></code>.</p>
|
<p>If path does not exist, the return Value is <code class="xref py py-const docutils literal notranslate"><span class="pre">False</span></code>.</p>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>Example:</strong></p>
|
<p><strong>Example:</strong></p>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">sys</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
||||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">fstools</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">fstools</span>
|
||||||
|
|
||||||
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="n">fstools</span><span class="o">.</span><span class="n">is_writeable</span><span class="p">(</span><span class="s1">'..'</span><span class="p">))</span>
|
<span class="nb">print</span><span class="p">(</span><span class="n">fstools</span><span class="o">.</span><span class="n">is_writeable</span><span class="p">(</span><span class="s1">'..'</span><span class="p">))</span>
|
||||||
@ -326,141 +317,128 @@
|
|||||||
</div>
|
</div>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.mkdir">
|
<dt class="sig sig-object py" id="fstools.mkdir">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">mkdir</code><span class="sig-paren">(</span><em>path</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.mkdir" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">mkdir</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.mkdir" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Method to create a folder.</p>
|
<dd><p>Method to create a folder.</p>
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">All needed subfoilders will also be created (rekursive mkdir).</p>
|
<p>All needed subfoilders will also be created (rekursive mkdir).</p>
|
||||||
</div>
|
</div>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><p><strong>path</strong> (<em>str</em>) – folder to be created.</p>
|
||||||
<tbody valign="top">
|
</dd>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>path</strong> (<em>str</em>) – folder to be created.</td>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
</tr>
|
<dd class="field-even"><p>True, if folder exists after creation commands, otherwise False.</p>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">True, if folder exists after creation commands, otherwise False.</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">bool</td>
|
<dd class="field-odd"><p>bool</p>
|
||||||
</tr>
|
</dd>
|
||||||
</tbody>
|
</dl>
|
||||||
</table>
|
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.open_locked_blocking">
|
<dt class="sig sig-object py" id="fstools.open_locked_blocking">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">open_locked_blocking</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.open_locked_blocking" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">open_locked_blocking</span></span><span class="sig-paren">(</span><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><a class="headerlink" href="#fstools.open_locked_blocking" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Method to get exclusive access to a file.</p>
|
<dd><p>Method to get exclusive access to a file.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><ul class="simple">
|
||||||
<tbody valign="top">
|
<li><p><strong>args</strong> – Arguments for a standard file open call.</p></li>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
<li><p><strong>kwargs</strong> – Keyword arguments for a standard file open call.</p></li>
|
||||||
<li><strong>args</strong> – Arguments for a standard file open call.</li>
|
|
||||||
<li><strong>kwargs</strong> – Keyword arguments for a standard file open call.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">A file descriptor.</p>
|
<dd class="field-even"><p>A file descriptor.</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">file handle</p>
|
<dd class="field-odd"><p>file handle</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
</dl>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">The call blocks until file is able to be used. This can cause a deadlock, if the file release es done after trying to open the file!</p>
|
<p>The call blocks until file is able to be used. This can cause a deadlock, if the file release es done after trying to open the file!</p>
|
||||||
</div>
|
</div>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.open_locked_non_blocking">
|
<dt class="sig sig-object py" id="fstools.open_locked_non_blocking">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">open_locked_non_blocking</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.open_locked_non_blocking" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">open_locked_non_blocking</span></span><span class="sig-paren">(</span><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><a class="headerlink" href="#fstools.open_locked_non_blocking" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Method to get exclusive access to a file.</p>
|
<dd><p>Method to get exclusive access to a file.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><ul class="simple">
|
||||||
<tbody valign="top">
|
<li><p><strong>args</strong> – Arguments for a standard file open call.</p></li>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
<li><p><strong>kwargs</strong> – Keyword arguments for a standard file open call.</p></li>
|
||||||
<li><strong>args</strong> – Arguments for a standard file open call.</li>
|
|
||||||
<li><strong>kwargs</strong> – Keyword arguments for a standard file open call.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Raises<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first">OSError, if the file is already blocked.</p>
|
<dd class="field-even"><p>OSError, if the file is already blocked.</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">A file descriptor.</p>
|
<dd class="field-odd"><p>A file descriptor.</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">file handle</p>
|
<dd class="field-even"><p>file handle</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
</dl>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">The call blocks until file is able to be used. This can cause a deadlock, if the file release es done after trying to open the file!</p>
|
<p>The call blocks until file is able to be used. This can cause a deadlock, if the file release es done after trying to open the file!</p>
|
||||||
</div>
|
</div>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.uid">
|
<dt class="sig sig-object py" id="fstools.uid">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">uid</code><span class="sig-paren">(</span><em>path</em>, <em>max_staleness=3600</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.uid" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">uid</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_staleness</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3600</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.uid" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Function returning a “unique” id for a given file or path.</p>
|
<dd><p>Function returning a “unique” id for a given file or path.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><ul class="simple">
|
||||||
<tbody valign="top">
|
<li><p><strong>path</strong> (<em>str</em>) – File or folder to generate a uid for.</p></li>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
<li><p><strong>max_staleness</strong> (<em>int</em>) – If a file or folder is older than that, we may consider
|
||||||
<li><strong>path</strong> (<em>str</em>) – File or folder to generate a uid for.</li>
|
|
||||||
<li><strong>max_staleness</strong> (<em>int</em>) – If a file or folder is older than that, we may consider
|
|
||||||
it stale and return a different uid - this is a
|
it stale and return a different uid - this is a
|
||||||
dirty trick to work around changes never being
|
dirty trick to work around changes never being
|
||||||
detected. Default is 3600 seconds, use None to
|
detected. Default is 3600 seconds, use None to
|
||||||
disable this trickery. See below for more details.</li>
|
disable this trickery. See below for more details.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">An object that changes value if the file changed,
|
<dd class="field-even"><p>An object that changes value if the file changed,
|
||||||
None is returned if there were problems accessing the file
|
None is returned if there were problems accessing the file
|
||||||
or folder.</p>
|
or folder.</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">str</p>
|
<dd class="field-odd"><p>str</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
</dl>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="admonition warning">
|
<div class="admonition warning">
|
||||||
<p class="first admonition-title">Warning</p>
|
<p class="admonition-title">Warning</p>
|
||||||
<p class="last">Depending on the operating system capabilities and the way the
|
<p>Depending on the operating system capabilities and the way the
|
||||||
file update is done, this function might return the same value
|
file update is done, this function might return the same value
|
||||||
even if the file has changed. It should be better than just
|
even if the file has changed. It should be better than just
|
||||||
using file’s mtime though.
|
using file’s mtime though.
|
||||||
max_staleness tries to avoid the worst for these cases.</p>
|
max_staleness tries to avoid the worst for these cases.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">If this function is used for a path, it will stat all pathes and files rekursively.</p>
|
<p>If this function is used for a path, it will stat all pathes and files rekursively.</p>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>Example:</strong></p>
|
<p><strong>Example:</strong></p>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">sys</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
||||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">fstools</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">fstools</span>
|
||||||
|
|
||||||
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="n">fstools</span><span class="o">.</span><span class="n">uid</span><span class="p">(</span><span class="s1">'../__init__.py'</span><span class="p">))</span>
|
<span class="nb">print</span><span class="p">(</span><span class="n">fstools</span><span class="o">.</span><span class="n">uid</span><span class="p">(</span><span class="s1">'../__init__.py'</span><span class="p">))</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">950</span><span class="n">bd674ce9e6ccc93a3f450964b524412961e0d</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span><span class="n">de37f8d3569d049e82932f8293c402d59e8bda8</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Using just the file’s mtime to determine if the file has changed is
|
<p>Using just the file’s mtime to determine if the file has changed is
|
||||||
@ -474,110 +452,173 @@ that we can get rather fast, thus we use file metadata, not file data
|
|||||||
(file content).</p>
|
(file content).</p>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="py function">
|
||||||
<dt id="fstools.uid_filelist">
|
<dt class="sig sig-object py" id="fstools.uid_filelist">
|
||||||
<code class="descclassname">fstools.</code><code class="descname">uid_filelist</code><span class="sig-paren">(</span><em>path='.'</em>, <em>expression='*'</em>, <em>rekursive=True</em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.uid_filelist" title="Permalink to this definition">¶</a></dt>
|
<span class="sig-prename descclassname"><span class="pre">fstools.</span></span><span class="sig-name descname"><span class="pre">uid_filelist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'.'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expression</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'*'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rekursive</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fstools.uid_filelist" title="Link to this definition">¶</a></dt>
|
||||||
<dd><p>Function returning a unique id for a given file or path.</p>
|
<dd><p>Function returning a unique id for a given file or path.</p>
|
||||||
<table class="docutils field-list" frame="void" rules="none">
|
<dl class="field-list simple">
|
||||||
<col class="field-name" />
|
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||||
<col class="field-body" />
|
<dd class="field-odd"><ul class="simple">
|
||||||
<tbody valign="top">
|
<li><p><strong>path</strong> (<em>str</em>) – folder which is the basepath for searching files.</p></li>
|
||||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
<li><p><strong>expression</strong> (<em>str</em>) – expression to fit including shell-style wildcards.</p></li>
|
||||||
<li><strong>path</strong> (<em>str</em>) – folder which is the basepath for searching files.</li>
|
<li><p><strong>rekursive</strong> (<em>bool</em>) – search all subfolders if True.</p></li>
|
||||||
<li><strong>expression</strong> (<em>str</em>) – expression to fit including shell-style wildcards.</li>
|
|
||||||
<li><strong>rekursive</strong> (<em>bool</em>) – search all subfolders if True.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">An object that changes value if one of the files change.</p>
|
<dd class="field-even"><p>An object that changes value if one of the files change.</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">str</p>
|
<dd class="field-odd"><p>str</p>
|
||||||
</td>
|
</dd>
|
||||||
</tr>
|
</dl>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="first admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p class="last">This UID is created out of the file content. Therefore it is more
|
<p>This UID is created out of the file content. Therefore it is more
|
||||||
reliable then <a class="reference internal" href="#fstools.uid" title="fstools.uid"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.uid()</span></code></a>, but also much slower.</p>
|
reliable then <a class="reference internal" href="#fstools.uid" title="fstools.uid"><code class="xref py py-func docutils literal notranslate"><span class="pre">fstools.uid()</span></code></a>, but also much slower.</p>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>Example:</strong></p>
|
<p><strong>Example:</strong></p>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">sys</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
||||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span>
|
||||||
|
|
||||||
<span class="kn">import</span> <span class="nn">fstools</span>
|
<span class="kn">import</span><span class="w"> </span><span class="nn">fstools</span>
|
||||||
|
|
||||||
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="n">fstools</span><span class="o">.</span><span class="n">uid_filelist</span><span class="p">(</span><span class="s1">'..'</span><span class="p">,</span> <span class="s1">'*.py'</span><span class="p">,</span> <span class="n">rekursive</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
|
<span class="nb">print</span><span class="p">(</span><span class="n">fstools</span><span class="o">.</span><span class="n">uid_filelist</span><span class="p">(</span><span class="s1">'..'</span><span class="p">,</span> <span class="s1">'*.py'</span><span class="p">,</span> <span class="n">rekursive</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">32</span><span class="n">ca1c130dfa068b79f4e96071c46448</span>
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">92</span><span class="n">a26594015be798c2a5b438595067e9</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="toctree-wrapper compound">
|
<div class="toctree-wrapper compound">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
<div class="section" id="indices-and-tables">
|
<section id="indices-and-tables">
|
||||||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Link to this heading">¶</a></h1>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
|
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
|
||||||
<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
|
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
|
||||||
<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
|
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>
|
|
||||||
|
|
||||||
© Copyright 2021, Dirk Alders
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
|
||||||
|
|
||||||
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
|
||||||
|
|
||||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<div>
|
||||||
|
<h3><a href="#">Table of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">Welcome to cachings’s documentation!</a><ul>
|
||||||
|
<li><a class="reference internal" href="#fstools-filesystem-tools">fstools (Filesystem Tools)</a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.dirlist"><code class="docutils literal notranslate"><span class="pre">dirlist()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.filelist"><code class="docutils literal notranslate"><span class="pre">filelist()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.is_writeable"><code class="docutils literal notranslate"><span class="pre">is_writeable()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.mkdir"><code class="docutils literal notranslate"><span class="pre">mkdir()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.open_locked_blocking"><code class="docutils literal notranslate"><span class="pre">open_locked_blocking()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.open_locked_non_blocking"><code class="docutils literal notranslate"><span class="pre">open_locked_non_blocking()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.uid"><code class="docutils literal notranslate"><span class="pre">uid()</span></code></a></li>
|
||||||
|
<li><a class="reference internal" href="#fstools.uid_filelist"><code class="docutils literal notranslate"><span class="pre">uid_filelist()</span></code></a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div role="note" aria-label="source link">
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/index.rst.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<search id="searchbox" style="display: none" role="search">
|
||||||
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</search>
|
||||||
|
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<a href="#">fstools documentation</a> »
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Welcome to cachings’s documentation!</a></li>
|
||||||
|
<li class="right">
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<div class="inline-search" role="search">
|
||||||
jQuery(function () {
|
<form class="inline-search" action="search.html" method="get">
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||||
});
|
<input type="submit" value="Go">
|
||||||
</script>
|
</form>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
</li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
©
|
||||||
|
Copyright
|
||||||
|
2025, Dirk Alders.
|
||||||
|
<br>
|
||||||
|
This page is licensed under the Python Software Foundation License Version 2.
|
||||||
|
<br>
|
||||||
|
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
The Python Software Foundation is a non-profit corporation.
|
||||||
|
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Binary file not shown.
@ -1,152 +1,132 @@
|
|||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="writer-html4" lang="en" >
|
|
||||||
|
<html lang="en" data-content_root="./">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Python Module Index — fstools documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
|
||||||
<title>Python Module Index — fstools documentation</title>
|
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
|
||||||
|
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="_static/js/html5shiv.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
||||||
|
|
||||||
|
<script src="_static/documentation_options.js?v=5929fcd5"></script>
|
||||||
|
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||||||
|
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||||
|
|
||||||
<link rel="index" title="Index" href="genindex.html" />
|
<link rel="index" title="Index" href="genindex.html" />
|
||||||
<link rel="search" title="Search" href="search.html" />
|
<link rel="search" title="Search" href="search.html" />
|
||||||
|
<link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||||||
|
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
|
||||||
|
<script type="text/javascript" src="_static/copybutton.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/menu.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/search-focus.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/themetoggle.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
<script type="text/javascript">
|
|
||||||
DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
|
DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
<body>
|
||||||
<body class="wy-body-for-nav">
|
<div class="mobile-nav">
|
||||||
|
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||||||
|
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||||||
<div class="wy-grid-for-nav">
|
<nav class="nav-content" role="navigation">
|
||||||
|
<label for="menuToggler" class="toggler__label">
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
<span></span>
|
||||||
<div class="wy-side-scroll">
|
</label>
|
||||||
<div class="wy-side-nav-search" >
|
<span class="nav-items-wrapper">
|
||||||
|
<a href="https://www.python.org/" class="nav-logo">
|
||||||
|
<img src="_static/py.svg" alt="Python logo">
|
||||||
|
|
||||||
<a href="index.html" class="icon icon-home" alt="Documentation Home"> fstools
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
|
<span class="version_switcher_placeholder"></span>
|
||||||
|
<form role="search" class="search" action="search.html" method="get">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||||||
|
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
|
||||||
|
</svg>
|
||||||
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
|
||||||
|
<input type="submit" value="Go">
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
|
</nav>
|
||||||
|
<div class="menu-wrapper">
|
||||||
|
<nav class="menu" role="navigation" aria-label="main navigation">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
<div role="search">
|
</select>
|
||||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
</label>
|
||||||
<input type="text" name="q" placeholder="Search docs" />
|
<search id="searchbox" style="display: none" role="search">
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
<input type="hidden" name="area" value="default" />
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="Go" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
</search>
|
||||||
|
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="#" title="Python Module Index"
|
||||||
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<a href="index.html">fstools documentation</a> »
|
||||||
<nav class="wy-nav-top" aria-label="top navigation">
|
|
||||||
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="index.html">fstools</a>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
|
|
||||||
<div class="rst-content">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
||||||
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
|
|
||||||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
|
||||||
|
|
||||||
<li>Python Module Index</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Python Module Index</a></li>
|
||||||
|
<li class="right">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="inline-search" role="search">
|
||||||
|
<form class="inline-search" action="search.html" method="get">
|
||||||
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||||
|
<input type="submit" value="Go">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
</li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
</div>
|
</div>
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
|
||||||
<h1>Python Module Index</h1>
|
<h1>Python Module Index</h1>
|
||||||
@ -167,50 +147,92 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
<div class="clearer"></div>
|
||||||
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>
|
|
||||||
|
|
||||||
© Copyright 2021, Dirk Alders
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
|
||||||
|
|
||||||
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
|
||||||
|
|
||||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<search id="searchbox" style="display: none" role="search">
|
||||||
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</search>
|
||||||
|
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="#" title="Python Module Index"
|
||||||
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<a href="index.html">fstools documentation</a> »
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Python Module Index</a></li>
|
||||||
|
<li class="right">
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<div class="inline-search" role="search">
|
||||||
jQuery(function () {
|
<form class="inline-search" action="search.html" method="get">
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||||
});
|
<input type="submit" value="Go">
|
||||||
</script>
|
</form>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
</li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
©
|
||||||
|
Copyright
|
||||||
|
2025, Dirk Alders.
|
||||||
|
<br>
|
||||||
|
This page is licensed under the Python Software Foundation License Version 2.
|
||||||
|
<br>
|
||||||
|
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
The Python Software Foundation is a non-profit corporation.
|
||||||
|
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,214 +1,198 @@
|
|||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="writer-html4" lang="en" >
|
|
||||||
|
<html lang="en" data-content_root="./">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Search — fstools documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
|
||||||
<title>Search — fstools documentation</title>
|
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
|
||||||
|
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
|
||||||
|
|
||||||
|
|
||||||
|
<script src="_static/documentation_options.js?v=5929fcd5"></script>
|
||||||
|
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||||||
|
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
<script src="_static/searchtools.js"></script>
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<script src="_static/language_data.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="_static/js/html5shiv.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
||||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
|
||||||
<link rel="index" title="Index" href="genindex.html" />
|
<link rel="index" title="Index" href="genindex.html" />
|
||||||
<link rel="search" title="Search" href="#" />
|
<link rel="search" title="Search" href="#" />
|
||||||
|
<script src="searchindex.js" defer="defer"></script>
|
||||||
|
<meta name="robots" content="noindex" />
|
||||||
|
<link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||||||
|
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
|
||||||
|
<script type="text/javascript" src="_static/copybutton.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/menu.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/search-focus.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/themetoggle.js"></script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
<body>
|
||||||
<body class="wy-body-for-nav">
|
<div class="mobile-nav">
|
||||||
|
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||||||
|
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||||||
<div class="wy-grid-for-nav">
|
<nav class="nav-content" role="navigation">
|
||||||
|
<label for="menuToggler" class="toggler__label">
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
<span></span>
|
||||||
<div class="wy-side-scroll">
|
</label>
|
||||||
<div class="wy-side-nav-search" >
|
<span class="nav-items-wrapper">
|
||||||
|
<a href="https://www.python.org/" class="nav-logo">
|
||||||
|
<img src="_static/py.svg" alt="Python logo">
|
||||||
|
|
||||||
<a href="index.html" class="icon icon-home" alt="Documentation Home"> fstools
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
|
<span class="version_switcher_placeholder"></span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="#" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Search docs" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
<div class="menu-wrapper">
|
||||||
|
<nav class="menu" role="navigation" aria-label="main navigation">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
<nav class="wy-nav-top" aria-label="top navigation">
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
<option value="dark">Dark</option>
|
||||||
<a href="index.html">fstools</a>
|
</select>
|
||||||
|
</label>
|
||||||
</nav>
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
<a href="index.html">fstools documentation</a> »
|
||||||
|
|
||||||
<div class="rst-content">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
||||||
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
|
|
||||||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
|
||||||
|
|
||||||
<li>Search</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Search</a></li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
</div>
|
</div>
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
<h1 id="search-documentation">Search</h1>
|
||||||
|
|
||||||
<noscript>
|
<noscript>
|
||||||
<div id="fallback" class="admonition warning">
|
<div class="admonition warning">
|
||||||
<p class="last">
|
<p>
|
||||||
Please activate JavaScript to enable the search functionality.
|
Please activate JavaScript to enable the search
|
||||||
|
functionality.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
|
|
||||||
<div id="search-results">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>
|
<p>
|
||||||
|
Searching for multiple words only shows matches that contain
|
||||||
© Copyright 2021, Dirk Alders
|
all words.
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
<form action="" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="search-documentation" value="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||||||
|
<input type="submit" value="search" />
|
||||||
|
<span id="search-progress" style="padding-left: 10px"></span>
|
||||||
|
</form>
|
||||||
|
|
||||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
|
||||||
|
|
||||||
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
<div id="search-results"></div>
|
||||||
|
|
||||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related" role="navigation" aria-label="Related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
|
>modules</a> |</li>
|
||||||
|
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||||
|
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||||
|
<li class="switchers">
|
||||||
|
<div class="language_switcher_placeholder"></div>
|
||||||
|
<div class="version_switcher_placeholder"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<a href="index.html">fstools documentation</a> »
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-item-this"><a href="">Search</a></li>
|
||||||
|
<li class="right">
|
||||||
|
<label class="theme-selector-label">
|
||||||
|
Theme
|
||||||
|
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||||
|
<option value="auto" selected>Auto</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="dark">Dark</option>
|
||||||
|
</select>
|
||||||
|
</label> |</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
©
|
||||||
|
Copyright
|
||||||
|
2025, Dirk Alders.
|
||||||
|
<br>
|
||||||
|
This page is licensed under the Python Software Foundation License Version 2.
|
||||||
|
<br>
|
||||||
|
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<br>
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
The Python Software Foundation is a non-profit corporation.
|
||||||
|
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||||||
|
</div>
|
||||||
<script type="text/javascript">
|
|
||||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script type="text/javascript" id="searchindexloader"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user