From f476148a5af0a213c38445f8cd08d701c953403b Mon Sep 17 00:00:00 2001 From: Dmitriy Bazanov Date: Wed, 20 Sep 2023 00:57:45 +0300 Subject: [PATCH] build: Make sphinx --- .DS_Store | Bin 0 -> 8196 bytes poetry.lock | 89 +- pyproject.toml | 1 + src/.DS_Store | Bin 0 -> 6148 bytes src/docs/.DS_Store | Bin 0 -> 6148 bytes src/docs/Makefile | 20 + src/docs/_build/.DS_Store | Bin 0 -> 6148 bytes src/docs/_build/doctrees/controls.doctree | Bin 0 -> 7503 bytes src/docs/_build/doctrees/environment.pickle | Bin 0 -> 42534 bytes src/docs/_build/doctrees/index.doctree | Bin 0 -> 5028 bytes src/docs/_build/doctrees/modules.doctree | Bin 0 -> 2780 bytes src/docs/_build/doctrees/other_module.doctree | Bin 0 -> 7550 bytes src/docs/_build/html/.buildinfo | 4 + .../_build/html/_modules/controls/smth.html | 104 ++ src/docs/_build/html/_modules/index.html | 100 ++ .../html/_modules/other_module/snth2.html | 104 ++ .../_build/html/_sources/controls.rst.txt | 21 + src/docs/_build/html/_sources/index.rst.txt | 22 + src/docs/_build/html/_sources/modules.rst.txt | 8 + .../_build/html/_sources/other_module.rst.txt | 21 + src/docs/_build/html/_static/alabaster.css | 703 +++++++++++++ src/docs/_build/html/_static/base-stemmer.js | 294 ++++++ src/docs/_build/html/_static/basic.css | 921 ++++++++++++++++++ src/docs/_build/html/_static/custom.css | 1 + src/docs/_build/html/_static/doctools.js | 156 +++ .../html/_static/documentation_options.js | 14 + src/docs/_build/html/_static/file.png | Bin 0 -> 286 bytes src/docs/_build/html/_static/language_data.js | 19 + src/docs/_build/html/_static/minus.png | Bin 0 -> 90 bytes src/docs/_build/html/_static/plus.png | Bin 0 -> 90 bytes src/docs/_build/html/_static/pygments.css | 83 ++ .../_build/html/_static/russian-stemmer.js | 624 ++++++++++++ src/docs/_build/html/_static/searchtools.js | 566 +++++++++++ .../_build/html/_static/sphinx_highlight.js | 144 +++ src/docs/_build/html/_static/translations.js | 60 ++ src/docs/_build/html/controls.html | 130 +++ src/docs/_build/html/genindex.html | 182 ++++ src/docs/_build/html/index.html | 124 +++ src/docs/_build/html/modules.html | 134 +++ src/docs/_build/html/objects.inv | Bin 0 -> 446 bytes src/docs/_build/html/other_module.html | 128 +++ src/docs/_build/html/py-modindex.html | 138 +++ src/docs/_build/html/search.html | 121 +++ src/docs/_build/html/searchindex.js | 1 + src/docs/conf.py | 34 + src/docs/controls.rst | 21 + src/docs/index.rst | 22 + src/docs/make.bat | 35 + src/docs/modules.rst | 8 + src/docs/other_module.rst | 21 + src/other_module/__init__.py | 3 + src/other_module/snth2.py | 4 + 52 files changed, 5158 insertions(+), 27 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/docs/.DS_Store create mode 100644 src/docs/Makefile create mode 100644 src/docs/_build/.DS_Store create mode 100644 src/docs/_build/doctrees/controls.doctree create mode 100644 src/docs/_build/doctrees/environment.pickle create mode 100644 src/docs/_build/doctrees/index.doctree create mode 100644 src/docs/_build/doctrees/modules.doctree create mode 100644 src/docs/_build/doctrees/other_module.doctree create mode 100644 src/docs/_build/html/.buildinfo create mode 100644 src/docs/_build/html/_modules/controls/smth.html create mode 100644 src/docs/_build/html/_modules/index.html create mode 100644 src/docs/_build/html/_modules/other_module/snth2.html create mode 100644 src/docs/_build/html/_sources/controls.rst.txt create mode 100644 src/docs/_build/html/_sources/index.rst.txt create mode 100644 src/docs/_build/html/_sources/modules.rst.txt create mode 100644 src/docs/_build/html/_sources/other_module.rst.txt create mode 100644 src/docs/_build/html/_static/alabaster.css create mode 100644 src/docs/_build/html/_static/base-stemmer.js create mode 100644 src/docs/_build/html/_static/basic.css create mode 100644 src/docs/_build/html/_static/custom.css create mode 100644 src/docs/_build/html/_static/doctools.js create mode 100644 src/docs/_build/html/_static/documentation_options.js create mode 100644 src/docs/_build/html/_static/file.png create mode 100644 src/docs/_build/html/_static/language_data.js create mode 100644 src/docs/_build/html/_static/minus.png create mode 100644 src/docs/_build/html/_static/plus.png create mode 100644 src/docs/_build/html/_static/pygments.css create mode 100644 src/docs/_build/html/_static/russian-stemmer.js create mode 100644 src/docs/_build/html/_static/searchtools.js create mode 100644 src/docs/_build/html/_static/sphinx_highlight.js create mode 100644 src/docs/_build/html/_static/translations.js create mode 100644 src/docs/_build/html/controls.html create mode 100644 src/docs/_build/html/genindex.html create mode 100644 src/docs/_build/html/index.html create mode 100644 src/docs/_build/html/modules.html create mode 100644 src/docs/_build/html/objects.inv create mode 100644 src/docs/_build/html/other_module.html create mode 100644 src/docs/_build/html/py-modindex.html create mode 100644 src/docs/_build/html/search.html create mode 100644 src/docs/_build/html/searchindex.js create mode 100644 src/docs/conf.py create mode 100644 src/docs/controls.rst create mode 100644 src/docs/index.rst create mode 100644 src/docs/make.bat create mode 100644 src/docs/modules.rst create mode 100644 src/docs/other_module.rst create mode 100644 src/other_module/__init__.py create mode 100644 src/other_module/snth2.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..37e293b2609ce43c5ed7aaf4e9ac659dae13cb95 GIT binary patch literal 8196 zcmeHMO>YuG7=EYFvV>?jXu`#06R!lpwie=rQaCiR9=b*kYH$}&k!6>#i=-hWd)EKp zU-0TL@xOS|XFh25qrFICn>dra^X$&N&(6#0jOdw!0AL=)BH@~c1Dsb*>fA3S<@F+hvy=TF{u>MEuTcj$yUmA_;2D(^&>H73u$Q zX6`r$>-C>(Czs#dD;Nc%WW2RL`b#Uc!$r`s=dbzQ3*UF0&9&{k9FLa$^1Tz^3+=Ht znhU~sID*TYS7UGJFFXFi8wP@F$qJ)r6#M1MYSq|pRn11TxvrY4*3pxydDy70*G1$0 z!$(ig`xAHS`CmkziK$lx-I4c~`Bz-UM)cX5d#>+&Kq+S!G$5Zm3TX~>DTtkIaBaTB z;@V{VZ(O1JLDhWRXl4bXpoGj`kRbme^Dox3z35}?RRcBL}^5=7s zRP{{xzZWZXl=AQ=}%w}z^}o4nv$F3 ziaqfywkL{oj`{OxFVNb6(&OQJ#eH+|h2Ir@i1%N4-S~>* zds3~q=HY(TJUD9o#hz57NvtzQ5tPBs)Zc%hgU+-9+bWQg52*0?zjyul|F+F&zE(gh zaEldS`L5ONpo5zq%IUuHSlfiXgYm@uB8h^6EO8Kk`^!HJac#ntbJ_|ci6}wR2LVC` LooNOBsRDlh{Dnxj literal 0 HcmV?d00001 diff --git a/poetry.lock b/poetry.lock index 739e715..beda08c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4,7 +4,7 @@ name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -32,7 +32,7 @@ wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} name = "babel" version = "2.12.1" description = "Internationalization utilities" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -44,7 +44,7 @@ files = [ name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "dev" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -56,7 +56,7 @@ files = [ name = "charset-normalizer" version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -141,7 +141,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -166,21 +166,21 @@ graph = ["objgraph (>=1.7.2)"] [[package]] name = "docutils" -version = "0.20.1" +version = "0.18.1" description = "Docutils -- Python Documentation Utilities" -category = "dev" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, - {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, ] [[package]] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "dev" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -192,7 +192,7 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -222,7 +222,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -286,7 +286,7 @@ files = [ name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -461,7 +461,7 @@ files = [ name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -548,7 +548,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -615,7 +615,7 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -649,7 +649,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" +category = "main" optional = false python-versions = "*" files = [ @@ -661,7 +661,7 @@ files = [ name = "sphinx" version = "7.2.6" description = "Python documentation generator" -category = "dev" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -692,11 +692,31 @@ docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] +[[package]] +name = "sphinx-rtd-theme" +version = "1.3.0" +description = "Read the Docs theme for Sphinx" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "sphinx_rtd_theme-1.3.0-py2.py3-none-any.whl", hash = "sha256:46ddef89cc2416a81ecfbeaceab1881948c014b1b6e4450b815311a89fb977b0"}, + {file = "sphinx_rtd_theme-1.3.0.tar.gz", hash = "sha256:590b030c7abb9cf038ec053b95e5380b5c70d61591eb0b552063fbe7c41f0931"}, +] + +[package.dependencies] +docutils = "<0.19" +sphinx = ">=1.6,<8" +sphinxcontrib-jquery = ">=4,<5" + +[package.extras] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.7" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -715,7 +735,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.5" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" -category = "dev" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -734,7 +754,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.4" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -749,11 +769,26 @@ Sphinx = ">=5" lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +category = "main" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -768,7 +803,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.6" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" -category = "dev" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -787,7 +822,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.9" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" -category = "dev" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -842,7 +877,7 @@ files = [ name = "urllib3" version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -944,4 +979,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "176c529478f40b1fe297b50c0e42d603e94b52b5bc87d9f137ab265a1ece5f39" +content-hash = "54e871ec1a75ac7aff155fb196734469f7b9a36189b0002a387fc9316f618fe3" diff --git a/pyproject.toml b/pyproject.toml index febdc74..32b881e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,7 @@ packages = [{include = "advanced_python_homework_2023"}] [tool.poetry.dependencies] python = "^3.11" pandas = "^2.0.0" +sphinx-rtd-theme = "^1.3.0" [build-system] requires = ["poetry-core"] diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4b9b0859cea5fec9936528e0b38eba8bc1fc5e8c GIT binary patch literal 6148 zcmeHKL2uJA6n^eH=4v4I0Mag#EOD)1Wgw__31u91B?u0HO4CFvB8#UcrH86g&hTS) z<(Kex*!OI2bSk^D3B4yhfA;hDV)=7o$3&!tv$RjtB_a)HY;{ol#kik+%~~O{2~_SG zQ?gW0byV2N8e0OlQ2|~%O%tqJNj0skUsBivef(m)gg^T23^k%QrQlEeINN0vCZ|PS)q8utRBNNXd1p&+>23WfKDP6?9@n#KIG%ps)>~_f|VeN_<_phyuZcMvasbB#F&2`30f)5 z@Ev6Q9sJQp?Si|iBbs8OfG8je+=v2UuhZK%GP(>Z3Wx%?SpnW344g3v*m!hX2MTuu z0Jaf!hC2T;a*hcY1#CQ`2c~=~(5I?!#ZW#SaT9n^z{aCbClxLqDvYec4Mn-p@qFXx zq#}<}iUOj*RRuPDv&-lI>+A3TSCgbA3Wx&#l>(}L7#|KXrEs>cO^(l61OE(XV_xI& kG6fZP6obo0@ebS>;)W~0C}86e5t#f4I2oi61^%f5=aZdq{r~^~ literal 0 HcmV?d00001 diff --git a/src/docs/.DS_Store b/src/docs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bc387179f4702979125c34ebccf1da6ab71774a9 GIT binary patch literal 6148 zcmeHK!EVz)5S?v9<1|Ie0i<4#EOCuOLqQO6385S~aKQ);fPx*n)T--^Vw-@XNIt_q z@C#h|68?n~yxHAKwv%2FLOaszTd(J>XP)ETED?!G5e|uZMC8C3Tl;9X7~f~#upKjU z02FGDgu-WuoCS#tHlpo-Rlq9nuPMOa?jB7kpn_tmf4{saJcbW`D^sc0VuNKiH{be? zV4lQTesuIx?CiF#?X{h@({-2qAA@$7v{+6IrBTrnsKI;dGqNw0F2#4Ub2C_wI1C?z^jp_mBJTy$7T9y5rou zedp1O>3MRI$}cKw5?G&M?bz^nD!>j7- zBRZ#uE@%!dnG;b~=ZISkPMc;VDWy{yfc3c%&G}WIaA2ZyT7Z=xw*h*{u)+J);B}CF zN+I(3w4I^e^tZ~Jc2I>+=U@!*>p(5_C#c%%@y|{Csrn^F^>|fxHNK1aB{C{d1ytIe zmEiiTtR6Tyoq@4{*3}uV)}hMBbk>Xl=9_T3RuQX!Rlq9HP=MD57tS~~SZY*D2O4z* z0Jbo!41L}hnd2H98!R>A4oqk&P*a6DVhBygxNG9Z21|{aPQn~Mgn6{` zPGYRlwpIbFKwW`dec9vv|LN7||2oNDSp}>D|CIuwb>f{&P?FhOH;UuE)`h=^vvFLh mQBlyC?O1hqD?WrP!#$Tfz_GznBSv8MkARZFHdcYZs=yz^WY<>! literal 0 HcmV?d00001 diff --git a/src/docs/Makefile b/src/docs/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/src/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/src/docs/_build/.DS_Store b/src/docs/_build/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fea787ad502e7046d4cff9f2f41889972af7ad7d GIT binary patch literal 6148 zcmeHKJ5R$f5I&beT~$aOKo^$I+rdfH>9?wL`#QS}#!XE-d&`Guw3 zqt5mVJD~{kc6`1vbP%3JE?EIq;Hv^t_O?pv|H04a|F21W#|p3l|4IQ- zZ2HXxcFC=+W1XY5R-s>_lMyes_>qDYvlJtjmf{+^F^ns!AbJjSix@%UjewDX3szvF G3cLfY=3-<3 literal 0 HcmV?d00001 diff --git a/src/docs/_build/doctrees/controls.doctree b/src/docs/_build/doctrees/controls.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a7e41af92b62ebde8935206a859f52f29978f104 GIT binary patch literal 7503 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 literal 0 HcmV?d00001 diff --git a/src/docs/_build/doctrees/modules.doctree b/src/docs/_build/doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..47541a14f931c5d37e903767c175317bd1bfed01 GIT binary patch literal 2780 zcmZ8jTWcIQ6n1Ry)w}CUl2SLtTgWjV4u>PZdnwcH1ZCE@yIy%?yJJMgRfB)-mm4ANU6kO!1Q$lI3C^Nx#sY+eO zavMH|r+lb@JbT2)Mb(drLmZYG3cBV}}4Tw1R3F;^M8PLfF#+90*h&bHkQ73iiaE0oLWMv1EG@hwE8Qmff!`RcvTktu(K8h(M_ zWBi`r_Y}VezEk@_1yDpS%Dhje(G!+Rn(!e^{XkjHbW-U;!u&wwsdSXh1%gCDPWboy z2j;sOSy5J49?o`AQ&NH`nMQ16+LjcOo4+)sVKWoGqLUQ@%g-y#>pe zCRS-QyGIGwVM$hCu~#`v;AM$rzg{{mu^OVzNn}Obh2vIi(q-^RbERyqEZf*TyW@wE z`si}9nk$_JNJa*bD-xhOP80)^4=M?htdt}d!t!LzO?a#i)MN!RH7k_1iDc&t<=ggs zPGqxe`9ro6sG23#nYB{OwB7;h|W@W;1yZkga8{HQW|9l-kN z!LZa*@I#4t*9K z(*au*%CKbfWC@YfCg;M43ZMH46^6`YOr(yov*rajHb624OejePqr+M)S&u6JN&JEn zOzM(|ERWVG`n`uigFaPD;PWt&3$V!-K%o?wu;J%}Cw^40B0*6wtuV=BGJ`0Y5yT#u z;Xmcp7UsLj1Y&bq4f<217n9)cN6j(-XeO3rXpcoZx{!|_KmP{x9O-#_%Y2kvoBwic z9!w<>uS=#+1+(+g2iQO1Hj{AHvt$Me(KwI0{uqGFl7^d20*NUiLazLQxy&tDC0s1H z#1G)zl`7(XU@`)h{pmnzgF@Xc*VQtSDkaq|;Ez*I5Dyw(kquQYONi4;SHMMl50taL z9s;-sAQAZ-7+6n*qc|swo88hASp=_Cq@rTH)RzI6!L32T-%EtR8MAP5KZVvZVHpuJ z!P6y9*)r_I`tbp<%6T=@uKW(m&*S63cdJrm!b=14P83$({55}Nd@l;@Wq}Ca1^)WV@JIOniVut* zZZ@ktJxm2!9^J!YC5fC|>s4WHN-8}BkLG4GC7b@2s`qXQ8|~f=i@mki^3c%@`c(8if0R85&T}Nq(otn1FnqDkG1?Gl7An51^V%x1CQ_mGw65auo)aT e#CwgnY}sD@q5wn|v0Hr_XIni6;%)6_r~d;g`BW|d literal 0 HcmV?d00001 diff --git a/src/docs/_build/doctrees/other_module.doctree b/src/docs/_build/doctrees/other_module.doctree new file mode 100644 index 0000000000000000000000000000000000000000..403ce6294d0cdacec9d815b299a0bf16aa598eda GIT binary patch literal 7550 zcmd5>TZklA8J=7BOwWC0XV+wRCw9=78Qq> zn#;lxC9Legc}qn_^6HBhNES5##TOqmK8+w^MDWQ6AJk`2iQj)t-MV{bGAj#lp=axy z`p-H4|DW%_*4Jw<$LnM2pInMV?)V2=rfvIy&Eizf*nySwnJ?0p(#>zAche2oh|K*s zNFs}+atss}cRV{{e)?Q07l~XrUc8m9pN^R&oWL)Z^BS-7>F3f7-jFrn2#-}>$%}#D zEc%+!5A4Ka&Cs-V%^pi>0qCc`zz&F!jBIR}>|UxltcND}5h-7h4Wkf%Ps)16_l}(M z9G|5-Nyn74rVx?SNd)92`6eAZCRwH}&x~VC;<@IVef>0JCt*40fWe4$i6)WL!tBwj zlrQlse4bzBlYCu%wf)7IMREI1(z~-~`n_KJ85Zw~AZ&j&3S4L>ZksknM7jgQHiQ)7nA3O1 zzmi}6Lorm39lr-tlploYZ)`R52Tw zyN|*UswcLUrnbVvZ88sN*Y7oh?g^}FrU=@&xheQHYvkfK@Me+T7_kE*7D+VVmoAf9 z%Z*!C8)P7bk94PJHvM6T{IHe^s1VSe2piS5e(~vpB0+IqQ#SowYxD)*rI7 zUe8@0LU?AEWR@ZGZMX*G0D-!43z>femWa62?LSUGy{cBEL9A;Bebez%IT0QrU%-So z3}In4WrnFD5oXk5BGsqJIZ75nW;tEQN{?g%zAFn~a&^>8kgXnW>&3FBOt4^sc_tN;-*cl2tku`S}i*V?# zi$hNao%{Z?H~-y;+(2Ev`CH}YC!)-~arWka8QB~#%Qr98QX=i|`GKbZ%YEkT11o7( z6)GQ zsN#TiV2v1pvL9D0xMJq-sQl;uZ2wDeASAo;P}NnOdRi@{n$=UH%TpmdPky&~&)Le7=S`Kr^Re8QCjZ0n@7 zf{H{H1t_u*f>P842+cuBSOh5%r|$QNg;%}_ z|Ep$o=&w-*x2aN|yL?@v3+lZ?&Pzo`jWR3nMYY;3imC>jHBx|HWQM$=T{-^=+ir^e zfKtJt$Qqn1VvGBLI8$ZeIVvspRia+!`;>{m_xvbZJYu;O@X!tXfao&Ga!Hd;3ia`x_dnB&sr=_5)oE9m)CZk!qbo#J43s$P^l9 zQ)J}_N(EH7DB+Nnm&|SOu6$g9s+HA0D#_0VU^A;oGorj29;gJ(YPmXGVN&@vR4`X7 z%%x{_=OJf14|*f><)!{PyBEHGj!UKT+5JK7zd`B3@nZ+6U7r1-(HE1J`o$|5IB(cyXTr)QNA(}v1l>8!2Cn#^^ z--Uk9aU+?Tx&NX?+S2m-833mHPY}qZOtA$%N^_1!_?GN#8i=22nr7%p$cCLc!heMfL3?+)U`Y(ds8 z+>!GU3xh})9@}G3--MjyrdJGWa)lkhI3SHk;+&`^Yc}g7Jsh{VZ$>^3zBA_|TETe1v{bA^fAQ=M2vu$4<%)0JIn zYL`^554{=M!u{j~%wSRPTk?>vzB>3~Xt7)-8GyBzLq(oyM=W?~iYDmtLgSRmOhgI% zSH!F!vJIP2^@d}pbG9Svu&pi<2WZ5xfmP%q2k17*MKckBQBKJTm7RAPB{( z2?S~u`KCu3E~yy>Zo2+*DvViT2L{?Epju`JVGuL;v~s0Fi6x9ZCw4SMmkis9&5lQc zWL!??rU5gXhcGdWL08;BO-5#P9Z$6dXkF3)iRZ4O&(z#OmE7M5aO?F4WhE%nuv^J%Q!;U0@)046EcS z(BB@SbNU2cFEF(=(wBwZ6qxCEm<})ged8r#D@gE&pf}$TWS;JeO-Lasb@t;?)-~PyZHFfE#hCE(4p-fBLJuODbKx6 z?5)egN1nW#x2;UyUyzvV20U`OgukG4qf#rCF1SbFG0$y=3Nb}+E(zbg^i0(qWj2(^ zg{qY**eqBMY@KiiDCrq;#yOqFXLUx?;hP$)y59-B!tfR8+R$V{-5A)hk)Ns-tq$yu zxEcuxB97_Z2lz}#l7@%aC@lx;6PzMF$`TF jSVWA0>A7NB+3K9*TV7(5Z|KoS#95nyTIT + + + + + + controls.smth — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Исходный код controls.smth

+
+
[документация]def multiply(a:int, b:int) -> int: + """Multiply two ints""" + return a*b
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/_modules/index.html b/src/docs/_build/html/_modules/index.html new file mode 100644 index 0000000..ee1c8e5 --- /dev/null +++ b/src/docs/_build/html/_modules/index.html @@ -0,0 +1,100 @@ + + + + + + + Обзор: исходный код модуля — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Все модули, в которых есть код

+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/_modules/other_module/snth2.html b/src/docs/_build/html/_modules/other_module/snth2.html new file mode 100644 index 0000000..b67fda2 --- /dev/null +++ b/src/docs/_build/html/_modules/other_module/snth2.html @@ -0,0 +1,104 @@ + + + + + + + other_module.snth2 — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Исходный код other_module.snth2

+
+
[документация]def add(a:int, b:int) -> int: + """Add two ints""" + return a + b
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/_sources/controls.rst.txt b/src/docs/_build/html/_sources/controls.rst.txt new file mode 100644 index 0000000..4ca1834 --- /dev/null +++ b/src/docs/_build/html/_sources/controls.rst.txt @@ -0,0 +1,21 @@ +controls package +================ + +Submodules +---------- + +controls.smth module +-------------------- + +.. automodule:: controls.smth + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: controls + :members: + :undoc-members: + :show-inheritance: diff --git a/src/docs/_build/html/_sources/index.rst.txt b/src/docs/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..3784d59 --- /dev/null +++ b/src/docs/_build/html/_sources/index.rst.txt @@ -0,0 +1,22 @@ +.. SCADA documentation master file, created by + sphinx-quickstart on Wed Sep 20 00:45:29 2023. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to SCADA's documentation! +================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + modules + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/docs/_build/html/_sources/modules.rst.txt b/src/docs/_build/html/_sources/modules.rst.txt new file mode 100644 index 0000000..c20bfb6 --- /dev/null +++ b/src/docs/_build/html/_sources/modules.rst.txt @@ -0,0 +1,8 @@ +src +=== + +.. toctree:: + :maxdepth: 4 + + controls + other_module diff --git a/src/docs/_build/html/_sources/other_module.rst.txt b/src/docs/_build/html/_sources/other_module.rst.txt new file mode 100644 index 0000000..49ad026 --- /dev/null +++ b/src/docs/_build/html/_sources/other_module.rst.txt @@ -0,0 +1,21 @@ +other\_module package +===================== + +Submodules +---------- + +other\_module.snth2 module +-------------------------- + +.. automodule:: other_module.snth2 + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: other_module + :members: + :undoc-members: + :show-inheritance: diff --git a/src/docs/_build/html/_static/alabaster.css b/src/docs/_build/html/_static/alabaster.css new file mode 100644 index 0000000..517d0b2 --- /dev/null +++ b/src/docs/_build/html/_static/alabaster.css @@ -0,0 +1,703 @@ +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/src/docs/_build/html/_static/base-stemmer.js b/src/docs/_build/html/_static/base-stemmer.js new file mode 100644 index 0000000..ca6cca1 --- /dev/null +++ b/src/docs/_build/html/_static/base-stemmer.js @@ -0,0 +1,294 @@ +/**@constructor*/ +BaseStemmer = function() { + this.setCurrent = function(value) { + this.current = value; + this.cursor = 0; + this.limit = this.current.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }; + + this.getCurrent = function() { + return this.current; + }; + + this.copy_from = function(other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; + }; + + this.in_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor++; + return true; + }; + + this.in_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor--; + return true; + }; + + this.out_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { + this.cursor++; + return true; + } + return false; + }; + + this.out_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { + this.cursor--; + return true; + } + return false; + }; + + this.eq_s = function(s) + { + if (this.limit - this.cursor < s.length) return false; + if (this.current.slice(this.cursor, this.cursor + s.length) != s) + { + return false; + } + this.cursor += s.length; + return true; + }; + + this.eq_s_b = function(s) + { + if (this.cursor - this.limit_backward < s.length) return false; + if (this.current.slice(this.cursor - s.length, this.cursor) != s) + { + return false; + } + this.cursor -= s.length; + return true; + }; + + /** @return {number} */ this.find_among = function(v) + { + var i = 0; + var j = v.length; + + var c = this.cursor; + var l = this.limit; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >>> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; // smaller + // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) + var w = v[k]; + var i2; + for (i2 = common; i2 < w[0].length; i2++) + { + if (c + common == l) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c + w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c + w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + // find_among_b is for backwards processing. Same comments apply + this.find_among_b = function(v) + { + var i = 0; + var j = v.length + + var c = this.cursor; + var lb = this.limit_backward; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; + var w = v[k]; + var i2; + for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) + { + if (c - common == lb) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c - w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c - w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + /* to replace chars between c_bra and c_ket in this.current by the + * chars in s. + */ + this.replace_s = function(c_bra, c_ket, s) + { + var adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += adjustment; + if (this.cursor >= c_ket) this.cursor += adjustment; + else if (this.cursor > c_bra) this.cursor = c_bra; + return adjustment; + }; + + this.slice_check = function() + { + if (this.bra < 0 || + this.bra > this.ket || + this.ket > this.limit || + this.limit > this.current.length) + { + return false; + } + return true; + }; + + this.slice_from = function(s) + { + var result = false; + if (this.slice_check()) + { + this.replace_s(this.bra, this.ket, s); + result = true; + } + return result; + }; + + this.slice_del = function() + { + return this.slice_from(""); + }; + + this.insert = function(c_bra, c_ket, s) + { + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) this.bra += adjustment; + if (c_bra <= this.ket) this.ket += adjustment; + }; + + this.slice_to = function() + { + var result = ''; + if (this.slice_check()) + { + result = this.current.slice(this.bra, this.ket); + } + return result; + }; + + this.assign_to = function() + { + return this.current.slice(0, this.limit); + }; +}; diff --git a/src/docs/_build/html/_static/basic.css b/src/docs/_build/html/_static/basic.css new file mode 100644 index 0000000..cfc60b8 --- /dev/null +++ b/src/docs/_build/html/_static/basic.css @@ -0,0 +1,921 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/src/docs/_build/html/_static/custom.css b/src/docs/_build/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/src/docs/_build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/src/docs/_build/html/_static/doctools.js b/src/docs/_build/html/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/src/docs/_build/html/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/src/docs/_build/html/_static/documentation_options.js b/src/docs/_build/html/_static/documentation_options.js new file mode 100644 index 0000000..5ca2622 --- /dev/null +++ b/src/docs/_build/html/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '1.0.0', + LANGUAGE: 'ru', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/src/docs/_build/html/_static/file.png b/src/docs/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/src/docs/_build/html/_static/language_data.js b/src/docs/_build/html/_static/language_data.js new file mode 100644 index 0000000..10107e5 --- /dev/null +++ b/src/docs/_build/html/_static/language_data.js @@ -0,0 +1,19 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["\u0430", "\u0431\u0435\u0437", "\u0431\u043e\u043b\u0435\u0435", "\u0431\u043e\u043b\u044c\u0448\u0435", "\u0431\u0443\u0434\u0435\u0442", "\u0431\u0443\u0434\u0442\u043e", "\u0431\u044b", "\u0431\u044b\u043b", "\u0431\u044b\u043b\u0430", "\u0431\u044b\u043b\u0438", "\u0431\u044b\u043b\u043e", "\u0431\u044b\u0442\u044c", "\u0432", "\u0432\u0430\u043c", "\u0432\u0430\u0441", "\u0432\u0434\u0440\u0443\u0433", "\u0432\u0435\u0434\u044c", "\u0432\u043e", "\u0432\u043e\u0442", "\u0432\u043f\u0440\u043e\u0447\u0435\u043c", "\u0432\u0441\u0435", "\u0432\u0441\u0435\u0433\u0434\u0430", "\u0432\u0441\u0435\u0433\u043e", "\u0432\u0441\u0435\u0445", "\u0432\u0441\u044e", "\u0432\u044b", "\u0433\u0434\u0435", "\u0433\u043e\u0432\u043e\u0440\u0438\u043b", "\u0434\u0430", "\u0434\u0430\u0436\u0435", "\u0434\u0432\u0430", "\u0434\u043b\u044f", "\u0434\u043e", "\u0434\u0440\u0443\u0433\u043e\u0439", "\u0435\u0433\u043e", "\u0435\u0435", "\u0435\u0439", "\u0435\u043c\u0443", "\u0435\u0441\u043b\u0438", "\u0435\u0441\u0442\u044c", "\u0435\u0449\u0435", "\u0436", "\u0436\u0435", "\u0436\u0438\u0437\u043d\u044c", "\u0437\u0430", "\u0437\u0430\u0447\u0435\u043c", "\u0437\u0434\u0435\u0441\u044c", "\u0438", "\u0438\u0437", "\u0438\u043b\u0438", "\u0438\u043c", "\u0438\u043d\u043e\u0433\u0434\u0430", "\u0438\u0445", "\u043a", "\u043a\u0430\u0436\u0435\u0442\u0441\u044f", "\u043a\u0430\u043a", "\u043a\u0430\u043a\u0430\u044f", "\u043a\u0430\u043a\u043e\u0439", "\u043a\u043e\u0433\u0434\u0430", "\u043a\u043e\u043d\u0435\u0447\u043d\u043e", "\u043a\u0442\u043e", "\u043a\u0443\u0434\u0430", "\u043b\u0438", "\u043b\u0443\u0447\u0448\u0435", "\u043c\u0435\u0436\u0434\u0443", "\u043c\u0435\u043d\u044f", "\u043c\u043d\u0435", "\u043c\u043d\u043e\u0433\u043e", "\u043c\u043e\u0436\u0435\u0442", "\u043c\u043e\u0436\u043d\u043e", "\u043c\u043e\u0439", "\u043c\u043e\u044f", "\u043c\u044b", "\u043d\u0430", "\u043d\u0430\u0434", "\u043d\u0430\u0434\u043e", "\u043d\u0430\u043a\u043e\u043d\u0435\u0446", "\u043d\u0430\u0441", "\u043d\u0435", "\u043d\u0435\u0433\u043e", "\u043d\u0435\u0435", "\u043d\u0435\u0439", "\u043d\u0435\u043b\u044c\u0437\u044f", "\u043d\u0435\u0442", "\u043d\u0438", "\u043d\u0438\u0431\u0443\u0434\u044c", "\u043d\u0438\u043a\u043e\u0433\u0434\u0430", "\u043d\u0438\u043c", "\u043d\u0438\u0445", "\u043d\u0438\u0447\u0435\u0433\u043e", "\u043d\u043e", "\u043d\u0443", "\u043e", "\u043e\u0431", "\u043e\u0434\u0438\u043d", "\u043e\u043d", "\u043e\u043d\u0430", "\u043e\u043d\u0438", "\u043e\u043f\u044f\u0442\u044c", "\u043e\u0442", "\u043f\u0435\u0440\u0435\u0434", "\u043f\u043e", "\u043f\u043e\u0434", "\u043f\u043e\u0441\u043b\u0435", "\u043f\u043e\u0442\u043e\u043c", "\u043f\u043e\u0442\u043e\u043c\u0443", "\u043f\u043e\u0447\u0442\u0438", "\u043f\u0440\u0438", "\u043f\u0440\u043e", "\u0440\u0430\u0437", "\u0440\u0430\u0437\u0432\u0435", "\u0441", "\u0441\u0430\u043c", "\u0441\u0432\u043e\u044e", "\u0441\u0435\u0431\u0435", "\u0441\u0435\u0431\u044f", "\u0441\u0435\u0433\u043e\u0434\u043d\u044f", "\u0441\u0435\u0439\u0447\u0430\u0441", "\u0441\u043a\u0430\u0437\u0430\u043b", "\u0441\u043a\u0430\u0437\u0430\u043b\u0430", "\u0441\u043a\u0430\u0437\u0430\u0442\u044c", "\u0441\u043e", "\u0441\u043e\u0432\u0441\u0435\u043c", "\u0442\u0430\u043a", "\u0442\u0430\u043a\u043e\u0439", "\u0442\u0430\u043c", "\u0442\u0435\u0431\u044f", "\u0442\u0435\u043c", "\u0442\u0435\u043f\u0435\u0440\u044c", "\u0442\u043e", "\u0442\u043e\u0433\u0434\u0430", "\u0442\u043e\u0433\u043e", "\u0442\u043e\u0436\u0435", "\u0442\u043e\u043b\u044c\u043a\u043e", "\u0442\u043e\u043c", "\u0442\u043e\u0442", "\u0442\u0440\u0438", "\u0442\u0443\u0442", "\u0442\u044b", "\u0443", "\u0443\u0436", "\u0443\u0436\u0435", "\u0445\u043e\u0440\u043e\u0448\u043e", "\u0445\u043e\u0442\u044c", "\u0447\u0435\u0433\u043e", "\u0447\u0435\u043b\u043e\u0432\u0435\u043a", "\u0447\u0435\u043c", "\u0447\u0435\u0440\u0435\u0437", "\u0447\u0442\u043e", "\u0447\u0442\u043e\u0431", "\u0447\u0442\u043e\u0431\u044b", "\u0447\u0443\u0442\u044c", "\u044d\u0442\u0438", "\u044d\u0442\u043e\u0433\u043e", "\u044d\u0442\u043e\u0439", "\u044d\u0442\u043e\u043c", "\u044d\u0442\u043e\u0442", "\u044d\u0442\u0443", "\u044f"]; + + +/* Non-minified version is copied as a separate JS file, is available */ +BaseStemmer=function(){this.setCurrent=function(r){this.current=r;this.cursor=0;this.limit=this.current.length;this.limit_backward=0;this.bra=this.cursor;this.ket=this.limit};this.getCurrent=function(){return this.current};this.copy_from=function(r){this.current=r.current;this.cursor=r.cursor;this.limit=r.limit;this.limit_backward=r.limit_backward;this.bra=r.bra;this.ket=r.ket};this.in_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor++;return true};this.in_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor--;return true};this.out_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0){this.cursor++;return true}return false};this.out_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0){this.cursor--;return true}return false};this.eq_s=function(r){if(this.limit-this.cursor>>1);var a=0;var f=h0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s+l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s+l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.find_among_b=function(r){var t=0;var i=r.length;var s=this.cursor;var e=this.limit_backward;var h=0;var u=0;var n=false;while(true){var c=t+(i-t>>1);var a=0;var f=h=0;o--){if(s-f==e){a=-1;break}a=this.current.charCodeAt(s-1-f)-l[0].charCodeAt(o);if(a!=0)break;f++}if(a<0){i=c;u=f}else{t=c;h=f}if(i-t<=1){if(t>0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s-l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s-l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.replace_s=function(r,t,i){var s=i.length-(t-r);this.current=this.current.slice(0,r)+i+this.current.slice(t);this.limit+=s;if(this.cursor>=t)this.cursor+=s;else if(this.cursor>r)this.cursor=r;return s};this.slice_check=function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length){return false}return true};this.slice_from=function(r){var t=false;if(this.slice_check()){this.replace_s(this.bra,this.ket,r);t=true}return t};this.slice_del=function(){return this.slice_from("")};this.insert=function(r,t,i){var s=this.replace_s(r,t,i);if(r<=this.bra)this.bra+=s;if(r<=this.ket)this.ket+=s};this.slice_to=function(){var r="";if(this.slice_check()){r=this.current.slice(this.bra,this.ket)}return r};this.assign_to=function(){return this.current.slice(0,this.limit)}}; +RussianStemmer=function(){var r=new BaseStemmer;var e=[["в",-1,1],["ив",0,2],["ыв",0,2],["вши",-1,1],["ивши",3,2],["ывши",3,2],["вшись",-1,1],["ившись",6,2],["ывшись",6,2]];var i=[["ее",-1,1],["ие",-1,1],["ое",-1,1],["ые",-1,1],["ими",-1,1],["ыми",-1,1],["ей",-1,1],["ий",-1,1],["ой",-1,1],["ый",-1,1],["ем",-1,1],["им",-1,1],["ом",-1,1],["ым",-1,1],["его",-1,1],["ого",-1,1],["ему",-1,1],["ому",-1,1],["их",-1,1],["ых",-1,1],["ею",-1,1],["ою",-1,1],["ую",-1,1],["юю",-1,1],["ая",-1,1],["яя",-1,1]];var u=[["ем",-1,1],["нн",-1,1],["вш",-1,1],["ивш",2,2],["ывш",2,2],["щ",-1,1],["ющ",5,1],["ующ",6,2]];var s=[["сь",-1,1],["ся",-1,1]];var a=[["ла",-1,1],["ила",0,2],["ыла",0,2],["на",-1,1],["ена",3,2],["ете",-1,1],["ите",-1,2],["йте",-1,1],["ейте",7,2],["уйте",7,2],["ли",-1,1],["или",10,2],["ыли",10,2],["й",-1,1],["ей",13,2],["уй",13,2],["л",-1,1],["ил",16,2],["ыл",16,2],["ем",-1,1],["им",-1,2],["ым",-1,2],["н",-1,1],["ен",22,2],["ло",-1,1],["ило",24,2],["ыло",24,2],["но",-1,1],["ено",27,2],["нно",27,1],["ет",-1,1],["ует",30,2],["ит",-1,2],["ыт",-1,2],["ют",-1,1],["уют",34,2],["ят",-1,2],["ны",-1,1],["ены",37,2],["ть",-1,1],["ить",39,2],["ыть",39,2],["ешь",-1,1],["ишь",-1,2],["ю",-1,2],["ую",44,2]];var t=[["а",-1,1],["ев",-1,1],["ов",-1,1],["е",-1,1],["ие",3,1],["ье",3,1],["и",-1,1],["еи",6,1],["ии",6,1],["ами",6,1],["ями",6,1],["иями",10,1],["й",-1,1],["ей",12,1],["ией",13,1],["ий",12,1],["ой",12,1],["ам",-1,1],["ем",-1,1],["ием",18,1],["ом",-1,1],["ям",-1,1],["иям",21,1],["о",-1,1],["у",-1,1],["ах",-1,1],["ях",-1,1],["иях",26,1],["ы",-1,1],["ь",-1,1],["ю",-1,1],["ию",30,1],["ью",30,1],["я",-1,1],["ия",33,1],["ья",33,1]];var c=[["ост",-1,1],["ость",-1,1]];var f=[["ейше",-1,1],["н",-1,2],["ейш",-1,1],["ь",-1,3]];var l=[33,65,8,232];var o=0;var n=0;function b(){n=r.limit;o=r.limit;var e=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}n=r.cursor;e:while(true){i:{if(!r.out_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.in_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}o=r.cursor}r.cursor=e;return true}function _(){if(!(o<=r.cursor)){return false}return true}function k(){var i;r.ket=r.cursor;i=r.find_among_b(e);if(i==0){return false}r.bra=r.cursor;switch(i){case 1:r:{var u=r.limit-r.cursor;e:{if(!r.eq_s_b("а")){break e}break r}r.cursor=r.limit-u;if(!r.eq_s_b("я")){return false}}if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}break}return true}function m(){r.ket=r.cursor;if(r.find_among_b(i)==0){return false}r.bra=r.cursor;if(!r.slice_del()){return false}return true}function v(){var e;if(!m()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(u);if(e==0){r.cursor=r.limit-i;break r}r.bra=r.cursor;switch(e){case 1:e:{var s=r.limit-r.cursor;i:{if(!r.eq_s_b("а")){break i}break e}r.cursor=r.limit-s;if(!r.eq_s_b("я")){r.cursor=r.limit-i;break r}}if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}break}}return true}function d(){r.ket=r.cursor;if(r.find_among_b(s)==0){return false}r.bra=r.cursor;if(!r.slice_del()){return false}return true}function g(){var e;r.ket=r.cursor;e=r.find_among_b(a);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:r:{var i=r.limit-r.cursor;e:{if(!r.eq_s_b("а")){break e}break r}r.cursor=r.limit-i;if(!r.eq_s_b("я")){return false}}if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}break}return true}function w(){r.ket=r.cursor;if(r.find_among_b(t)==0){return false}r.bra=r.cursor;if(!r.slice_del()){return false}return true}function h(){r.ket=r.cursor;if(r.find_among_b(c)==0){return false}r.bra=r.cursor;if(!_()){return false}if(!r.slice_del()){return false}return true}function q(){var e;r.ket=r.cursor;e=r.find_among_b(f);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("н")){return false}r.bra=r.cursor;if(!r.eq_s_b("н")){return false}if(!r.slice_del()){return false}break;case 2:if(!r.eq_s_b("н")){return false}if(!r.slice_del()){return false}break;case 3:if(!r.slice_del()){return false}break}return true}this.stem=function(){var e=r.cursor;r:{while(true){var i=r.cursor;e:{i:while(true){var u=r.cursor;u:{r.bra=r.cursor;if(!r.eq_s("ё")){break u}r.ket=r.cursor;r.cursor=u;break i}r.cursor=u;if(r.cursor>=r.limit){break e}r.cursor++}if(!r.slice_from("е")){return false}continue}r.cursor=i;break}}r.cursor=e;b();r.limit_backward=r.cursor;r.cursor=r.limit;if(r.cursorcxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/src/docs/_build/html/_static/plus.png b/src/docs/_build/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/src/docs/_build/html/_static/pygments.css b/src/docs/_build/html/_static/pygments.css new file mode 100644 index 0000000..9abe04b --- /dev/null +++ b/src/docs/_build/html/_static/pygments.css @@ -0,0 +1,83 @@ +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 { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/src/docs/_build/html/_static/russian-stemmer.js b/src/docs/_build/html/_static/russian-stemmer.js new file mode 100644 index 0000000..28ded5f --- /dev/null +++ b/src/docs/_build/html/_static/russian-stemmer.js @@ -0,0 +1,624 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +RussianStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["\u0432", -1, 1], + ["\u0438\u0432", 0, 2], + ["\u044B\u0432", 0, 2], + ["\u0432\u0448\u0438", -1, 1], + ["\u0438\u0432\u0448\u0438", 3, 2], + ["\u044B\u0432\u0448\u0438", 3, 2], + ["\u0432\u0448\u0438\u0441\u044C", -1, 1], + ["\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2], + ["\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2] + ]; + + /** @const */ var a_1 = [ + ["\u0435\u0435", -1, 1], + ["\u0438\u0435", -1, 1], + ["\u043E\u0435", -1, 1], + ["\u044B\u0435", -1, 1], + ["\u0438\u043C\u0438", -1, 1], + ["\u044B\u043C\u0438", -1, 1], + ["\u0435\u0439", -1, 1], + ["\u0438\u0439", -1, 1], + ["\u043E\u0439", -1, 1], + ["\u044B\u0439", -1, 1], + ["\u0435\u043C", -1, 1], + ["\u0438\u043C", -1, 1], + ["\u043E\u043C", -1, 1], + ["\u044B\u043C", -1, 1], + ["\u0435\u0433\u043E", -1, 1], + ["\u043E\u0433\u043E", -1, 1], + ["\u0435\u043C\u0443", -1, 1], + ["\u043E\u043C\u0443", -1, 1], + ["\u0438\u0445", -1, 1], + ["\u044B\u0445", -1, 1], + ["\u0435\u044E", -1, 1], + ["\u043E\u044E", -1, 1], + ["\u0443\u044E", -1, 1], + ["\u044E\u044E", -1, 1], + ["\u0430\u044F", -1, 1], + ["\u044F\u044F", -1, 1] + ]; + + /** @const */ var a_2 = [ + ["\u0435\u043C", -1, 1], + ["\u043D\u043D", -1, 1], + ["\u0432\u0448", -1, 1], + ["\u0438\u0432\u0448", 2, 2], + ["\u044B\u0432\u0448", 2, 2], + ["\u0449", -1, 1], + ["\u044E\u0449", 5, 1], + ["\u0443\u044E\u0449", 6, 2] + ]; + + /** @const */ var a_3 = [ + ["\u0441\u044C", -1, 1], + ["\u0441\u044F", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["\u043B\u0430", -1, 1], + ["\u0438\u043B\u0430", 0, 2], + ["\u044B\u043B\u0430", 0, 2], + ["\u043D\u0430", -1, 1], + ["\u0435\u043D\u0430", 3, 2], + ["\u0435\u0442\u0435", -1, 1], + ["\u0438\u0442\u0435", -1, 2], + ["\u0439\u0442\u0435", -1, 1], + ["\u0435\u0439\u0442\u0435", 7, 2], + ["\u0443\u0439\u0442\u0435", 7, 2], + ["\u043B\u0438", -1, 1], + ["\u0438\u043B\u0438", 10, 2], + ["\u044B\u043B\u0438", 10, 2], + ["\u0439", -1, 1], + ["\u0435\u0439", 13, 2], + ["\u0443\u0439", 13, 2], + ["\u043B", -1, 1], + ["\u0438\u043B", 16, 2], + ["\u044B\u043B", 16, 2], + ["\u0435\u043C", -1, 1], + ["\u0438\u043C", -1, 2], + ["\u044B\u043C", -1, 2], + ["\u043D", -1, 1], + ["\u0435\u043D", 22, 2], + ["\u043B\u043E", -1, 1], + ["\u0438\u043B\u043E", 24, 2], + ["\u044B\u043B\u043E", 24, 2], + ["\u043D\u043E", -1, 1], + ["\u0435\u043D\u043E", 27, 2], + ["\u043D\u043D\u043E", 27, 1], + ["\u0435\u0442", -1, 1], + ["\u0443\u0435\u0442", 30, 2], + ["\u0438\u0442", -1, 2], + ["\u044B\u0442", -1, 2], + ["\u044E\u0442", -1, 1], + ["\u0443\u044E\u0442", 34, 2], + ["\u044F\u0442", -1, 2], + ["\u043D\u044B", -1, 1], + ["\u0435\u043D\u044B", 37, 2], + ["\u0442\u044C", -1, 1], + ["\u0438\u0442\u044C", 39, 2], + ["\u044B\u0442\u044C", 39, 2], + ["\u0435\u0448\u044C", -1, 1], + ["\u0438\u0448\u044C", -1, 2], + ["\u044E", -1, 2], + ["\u0443\u044E", 44, 2] + ]; + + /** @const */ var a_5 = [ + ["\u0430", -1, 1], + ["\u0435\u0432", -1, 1], + ["\u043E\u0432", -1, 1], + ["\u0435", -1, 1], + ["\u0438\u0435", 3, 1], + ["\u044C\u0435", 3, 1], + ["\u0438", -1, 1], + ["\u0435\u0438", 6, 1], + ["\u0438\u0438", 6, 1], + ["\u0430\u043C\u0438", 6, 1], + ["\u044F\u043C\u0438", 6, 1], + ["\u0438\u044F\u043C\u0438", 10, 1], + ["\u0439", -1, 1], + ["\u0435\u0439", 12, 1], + ["\u0438\u0435\u0439", 13, 1], + ["\u0438\u0439", 12, 1], + ["\u043E\u0439", 12, 1], + ["\u0430\u043C", -1, 1], + ["\u0435\u043C", -1, 1], + ["\u0438\u0435\u043C", 18, 1], + ["\u043E\u043C", -1, 1], + ["\u044F\u043C", -1, 1], + ["\u0438\u044F\u043C", 21, 1], + ["\u043E", -1, 1], + ["\u0443", -1, 1], + ["\u0430\u0445", -1, 1], + ["\u044F\u0445", -1, 1], + ["\u0438\u044F\u0445", 26, 1], + ["\u044B", -1, 1], + ["\u044C", -1, 1], + ["\u044E", -1, 1], + ["\u0438\u044E", 30, 1], + ["\u044C\u044E", 30, 1], + ["\u044F", -1, 1], + ["\u0438\u044F", 33, 1], + ["\u044C\u044F", 33, 1] + ]; + + /** @const */ var a_6 = [ + ["\u043E\u0441\u0442", -1, 1], + ["\u043E\u0441\u0442\u044C", -1, 1] + ]; + + /** @const */ var a_7 = [ + ["\u0435\u0439\u0448\u0435", -1, 1], + ["\u043D", -1, 2], + ["\u0435\u0439\u0448", -1, 1], + ["\u044C", -1, 3] + ]; + + /** @const */ var /** Array */ g_v = [33, 65, 8, 232]; + + var /** number */ I_p2 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + lab2: { + if (!(base.in_grouping(g_v, 1072, 1103))) + { + break lab2; + } + break golab1; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + I_pV = base.cursor; + golab3: while(true) + { + lab4: { + if (!(base.out_grouping(g_v, 1072, 1103))) + { + break lab4; + } + break golab3; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 1072, 1103))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 1072, 1103))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_1; + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_perfective_gerund() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("\u0430"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("\u044F"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_adjective() { + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_adjectival() { + var /** number */ among_var; + if (!r_adjective()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab1: { + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("\u0430"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_2; + if (!(base.eq_s_b("\u044F"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + } + return true; + }; + + /** @return {boolean} */ + function r_reflexive() { + base.ket = base.cursor; + if (base.find_among_b(a_3) == 0) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_verb() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("\u0430"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("\u044F"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_noun() { + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_derivational() { + base.ket = base.cursor; + if (base.find_among_b(a_6) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_tidy_up() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("\u043D"))) + { + return false; + } + base.bra = base.cursor; + if (!(base.eq_s_b("\u043D"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!(base.eq_s_b("\u043D"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + lab0: { + while(true) + { + var /** number */ v_2 = base.cursor; + lab1: { + golab2: while(true) + { + var /** number */ v_3 = base.cursor; + lab3: { + base.bra = base.cursor; + if (!(base.eq_s("\u0451"))) + { + break lab3; + } + base.ket = base.cursor; + base.cursor = v_3; + break golab2; + } + base.cursor = v_3; + if (base.cursor >= base.limit) + { + break lab1; + } + base.cursor++; + } + if (!base.slice_from("\u0435")) + { + return false; + } + continue; + } + base.cursor = v_2; + break; + } + } + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_6 = base.limit_backward; + base.limit_backward = I_pV; + var /** number */ v_7 = base.limit - base.cursor; + lab4: { + lab5: { + var /** number */ v_8 = base.limit - base.cursor; + lab6: { + if (!r_perfective_gerund()) + { + break lab6; + } + break lab5; + } + base.cursor = base.limit - v_8; + var /** number */ v_9 = base.limit - base.cursor; + lab7: { + if (!r_reflexive()) + { + base.cursor = base.limit - v_9; + break lab7; + } + } + lab8: { + var /** number */ v_10 = base.limit - base.cursor; + lab9: { + if (!r_adjectival()) + { + break lab9; + } + break lab8; + } + base.cursor = base.limit - v_10; + lab10: { + if (!r_verb()) + { + break lab10; + } + break lab8; + } + base.cursor = base.limit - v_10; + if (!r_noun()) + { + break lab4; + } + } + } + } + base.cursor = base.limit - v_7; + var /** number */ v_11 = base.limit - base.cursor; + lab11: { + base.ket = base.cursor; + if (!(base.eq_s_b("\u0438"))) + { + base.cursor = base.limit - v_11; + break lab11; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + var /** number */ v_12 = base.limit - base.cursor; + r_derivational(); + base.cursor = base.limit - v_12; + var /** number */ v_13 = base.limit - base.cursor; + r_tidy_up(); + base.cursor = base.limit - v_13; + base.limit_backward = v_6; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/src/docs/_build/html/_static/searchtools.js b/src/docs/_build/html/_static/searchtools.js new file mode 100644 index 0000000..97d56a7 --- /dev/null +++ b/src/docs/_build/html/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +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) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + 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 = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + 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 + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + 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 = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // 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); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + 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 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]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((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; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/src/docs/_build/html/_static/sphinx_highlight.js b/src/docs/_build/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..aae669d --- /dev/null +++ b/src/docs/_build/html/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* 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))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + 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( + '" + ) + ); + }, + + /** + * 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(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/src/docs/_build/html/_static/translations.js b/src/docs/_build/html/_static/translations.js new file mode 100644 index 0000000..4bf2ff7 --- /dev/null +++ b/src/docs/_build/html/_static/translations.js @@ -0,0 +1,60 @@ +Documentation.addTranslations({ + "locale": "ru", + "messages": { + "%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", + "© %(copyright_prefix)s %(copyright)s.": "", + ", in ": ", \u0432", + "About these documents": "\u041e\u0431 \u044d\u0442\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445", + "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s", + "C API changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 API C", + "Changes in Version %(version)s — %(docstitle)s": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s — %(docstitle)s", + "Collapse sidebar": "\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", + "Complete Table of Contents": "\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", + "Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430", + "Created using Sphinx %(sphinx_version)s.": "", + "Expand sidebar": "\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", + "Full index on one page": "\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", + "General Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", + "Global Module Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439", + "Go": "\u0418\u0441\u043a\u0430\u0442\u044c", + "Hide Search Matches": "\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435", + "Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", + "Index – %(key)s": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c – %(key)s", + "Index pages by letter": "\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043f\u043e \u0431\u0443\u043a\u0432\u0430\u043c \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430", + "Indices and tables:": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438:", + "Last updated on %(last_updated)s.": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e: %(last_updated)s.", + "Library changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435", + "Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", + "Next topic": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", + "Other changes": "\u0414\u0440\u0443\u0433\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", + "Overview": "\u041e\u0431\u0437\u043e\u0440", + "Please activate JavaScript to enable the search\n functionality.": "\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 JavaScript \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", + "Preparing search...": "\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430\u2026", + "Previous topic": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", + "Quick search": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", + "Search": "\u041f\u043e\u0438\u0441\u043a", + "Search Page": "\u041f\u043e\u0438\u0441\u043a", + "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430", + "Search finished, found ${resultCount} page(s) matching the search query.": "", + "Search within %(docstitle)s": "\u041f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u00ab%(docstitle)s\u00bb", + "Searching": "\u0418\u0434\u0451\u0442 \u043f\u043e\u0438\u0441\u043a", + "Searching for multiple words only shows matches that contain\n all words.": "", + "Show Source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442", + "Table of Contents": "\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", + "This Page": "\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430", + "Welcome! This is": "\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e", + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u041f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438 \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439.", + "all functions, classes, terms": "\u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043b\u0430\u0441\u0441\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b", + "can be huge": "\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c", + "last updated": "\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435", + "lists all sections and subsections": "\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432", + "next chapter": "\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", + "previous chapter": "\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", + "quick access to all modules": "\u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439", + "search": "\u0438\u0441\u043a\u0430\u0442\u044c", + "search this documentation": "\u043f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", + "the documentation for": "\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f" + }, + "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3)" +}); \ No newline at end of file diff --git a/src/docs/_build/html/controls.html b/src/docs/_build/html/controls.html new file mode 100644 index 0000000..1a89c1c --- /dev/null +++ b/src/docs/_build/html/controls.html @@ -0,0 +1,130 @@ + + + + + + + + controls package — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

controls package

+
+

Submodules

+
+
+

controls.smth module

+
+
+controls.smth.multiply(a: int, b: int) int[исходный код]
+

Multiply two ints

+
+ +
+
+

Module contents

+

Module of SCADA to so some cool (contol?) things!

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/genindex.html b/src/docs/_build/html/genindex.html new file mode 100644 index 0000000..885eede --- /dev/null +++ b/src/docs/_build/html/genindex.html @@ -0,0 +1,182 @@ + + + + + + + Алфавитный указатель — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Алфавитный указатель

+ +
+ A + | C + | M + | O + +
+

A

+ + +
+ +

C

+ + + +
    +
  • + controls + +
  • +
    +
  • + controls.smth + +
  • +
+ +

M

+ + + +
+ +

O

+ + + +
    +
  • + other_module + +
  • +
    +
  • + other_module.snth2 + +
  • +
+ + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/index.html b/src/docs/_build/html/index.html new file mode 100644 index 0000000..5d27258 --- /dev/null +++ b/src/docs/_build/html/index.html @@ -0,0 +1,124 @@ + + + + + + + + Welcome to SCADA’s documentation! — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Welcome to SCADA’s documentation!

+
+

Contents:

+ +
+
+
+

Indices and tables

+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/modules.html b/src/docs/_build/html/modules.html new file mode 100644 index 0000000..58664bd --- /dev/null +++ b/src/docs/_build/html/modules.html @@ -0,0 +1,134 @@ + + + + + + + + src — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/objects.inv b/src/docs/_build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..586e2cfd3d818729113976df34e5e953fe3abd85 GIT binary patch literal 446 zcmV;v0YUyFAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkYLqSAA z3L_v^WpZ8b#rNMXCQiPX<{x4c-p0rzfQw25XN^u#UWTz0b{oc9sr4f5e3II6^rO=t=3euvT$SCIwc7Zyv73+j= zS8}ie0a+JRqT@dxtt98Vm-3=y&vQX_PYT#;&?P2y%(7Ew?+@||8^dZvC3L+1AGQ@n zQ6uQ4gTEsv9knA#A!w|$enA@2i?GW`mx-Q;*yR_(!!yQ9Xr)#VKH%Kk;1FMMVypQ6;RYvO{>NRd$6zX5^?&YQVMNAyw*!1z$ oMqS_p$6j1}vnd=EI+lVc7G^ZA`&F8=da~5S3~)w10nF%0zEYRQ(f|Me literal 0 HcmV?d00001 diff --git a/src/docs/_build/html/other_module.html b/src/docs/_build/html/other_module.html new file mode 100644 index 0000000..0c90d71 --- /dev/null +++ b/src/docs/_build/html/other_module.html @@ -0,0 +1,128 @@ + + + + + + + + other_module package — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

other_module package

+
+

Submodules

+
+
+

other_module.snth2 module

+
+
+other_module.snth2.add(a: int, b: int) int[исходный код]
+

Add two ints

+
+ +
+
+

Module contents

+

Just other sample module

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/py-modindex.html b/src/docs/_build/html/py-modindex.html new file mode 100644 index 0000000..e74798d --- /dev/null +++ b/src/docs/_build/html/py-modindex.html @@ -0,0 +1,138 @@ + + + + + + + Содержание модулей Python — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Содержание модулей Python

+ +
+ c | + o +
+ + + + + + + + + + + + + + + + + + +
 
+ c
+ controls +
    + controls.smth +
 
+ o
+ other_module +
    + other_module.snth2 +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/search.html b/src/docs/_build/html/search.html new file mode 100644 index 0000000..f68c8b4 --- /dev/null +++ b/src/docs/_build/html/search.html @@ -0,0 +1,121 @@ + + + + + + + Поиск — документация SCADA 1.0.0 + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Поиск

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + + +
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/docs/_build/html/searchindex.js b/src/docs/_build/html/searchindex.js new file mode 100644 index 0000000..3c35e56 --- /dev/null +++ b/src/docs/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["controls", "index", "modules", "other_module"], "filenames": ["controls.rst", "index.rst", "modules.rst", "other_module.rst"], "titles": ["controls package", "Welcome to SCADA\u2019s documentation!", "src", "other_module package"], "terms": {"multiply": [0, 2], "a": [0, 3], "int": [0, 3], "b": [0, 3], "\u0438\u0441\u0445\u043e\u0434\u043d": [0, 3], "\u043a\u043e\u0434": [0, 3], "two": [0, 3], "ints": [0, 3], "of": 0, "scada": 0, "to": 0, "so": 0, "some": 0, "cool": 0, "contol": 0, "things": 0, "src": 1, "controls": [1, 2], "package": [1, 2], "other_module": [1, 2], "\u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d": 1, "\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b": 1, "\u0441\u043e\u0441\u0442\u0430": 1, "\u043c\u043e\u0434\u0443\u043b": 1, "\u043f\u043e\u0438\u0441\u043a": 1, "submodules": 2, "smth": 2, "module": 2, "contents": 2, "snth2": 2, "add": [2, 3], "just": 3, "other": 3, "sample": 3}, "objects": {"": [[0, 0, 0, "-", "controls"], [3, 0, 0, "-", "other_module"]], "controls": [[0, 0, 0, "-", "smth"]], "controls.smth": [[0, 1, 1, "", "multiply"]], "other_module": [[3, 0, 0, "-", "snth2"]], "other_module.snth2": [[3, 1, 1, "", "add"]]}, "objtypes": {"0": "py:module", "1": "py:function"}, "objnames": {"0": ["py", "module", "Python \u043c\u043e\u0434\u0443\u043b\u044c"], "1": ["py", "function", "Python \u0444\u0443\u043d\u043a\u0446\u0438\u044f"]}, "titleterms": {"controls": 0, "package": [0, 3], "submodules": [0, 3], "smth": 0, "module": [0, 3], "contents": [0, 1, 3], "welcome": 1, "to": 1, "scada": 1, "s": 1, "documentation": 1, "indices": 1, "and": 1, "tables": 1, "src": 2, "other_module": 3, "snth2": 3}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 58}, "alltitles": {"controls package": [[0, "controls-package"]], "Submodules": [[0, "submodules"], [3, "submodules"]], "controls.smth module": [[0, "module-controls.smth"]], "Module contents": [[0, "module-controls"], [3, "module-other_module"]], "Welcome to SCADA\u2019s documentation!": [[1, "welcome-to-scada-s-documentation"]], "Contents:": [[1, null]], "Indices and tables": [[1, "indices-and-tables"]], "src": [[2, "src"]], "other_module package": [[3, "other-module-package"]], "other_module.snth2 module": [[3, "module-other_module.snth2"]]}, "indexentries": {"controls": [[0, "module-controls"]], "controls.smth": [[0, "module-controls.smth"]], "module": [[0, "module-controls"], [0, "module-controls.smth"], [3, "module-other_module"], [3, "module-other_module.snth2"]], "multiply() (\u0432 \u043c\u043e\u0434\u0443\u043b\u0435 controls.smth)": [[0, "controls.smth.multiply"]], "add() (\u0432 \u043c\u043e\u0434\u0443\u043b\u0435 other_module.snth2)": [[3, "other_module.snth2.add"]], "other_module": [[3, "module-other_module"]], "other_module.snth2": [[3, "module-other_module.snth2"]]}}) \ No newline at end of file diff --git a/src/docs/conf.py b/src/docs/conf.py new file mode 100644 index 0000000..07d63ef --- /dev/null +++ b/src/docs/conf.py @@ -0,0 +1,34 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +import os +import sys + +sys.path.insert(0, os.path.abspath("..")) + + +project = 'SCADA' +copyright = '2023, Dmitriy Bazanov' +author = 'Dmitriy Bazanov' +release = '1.0.0' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = ['sphinx.ext.todo', 'sphinx.ext.viewcode', 'sphinx.ext.autodoc'] + +templates_path = ['_templates'] +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +language = 'ru' + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'alabaster' +html_static_path = ['_static'] diff --git a/src/docs/controls.rst b/src/docs/controls.rst new file mode 100644 index 0000000..4ca1834 --- /dev/null +++ b/src/docs/controls.rst @@ -0,0 +1,21 @@ +controls package +================ + +Submodules +---------- + +controls.smth module +-------------------- + +.. automodule:: controls.smth + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: controls + :members: + :undoc-members: + :show-inheritance: diff --git a/src/docs/index.rst b/src/docs/index.rst new file mode 100644 index 0000000..3784d59 --- /dev/null +++ b/src/docs/index.rst @@ -0,0 +1,22 @@ +.. SCADA documentation master file, created by + sphinx-quickstart on Wed Sep 20 00:45:29 2023. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to SCADA's documentation! +================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + modules + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/docs/make.bat b/src/docs/make.bat new file mode 100644 index 0000000..32bb245 --- /dev/null +++ b/src/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/src/docs/modules.rst b/src/docs/modules.rst new file mode 100644 index 0000000..c20bfb6 --- /dev/null +++ b/src/docs/modules.rst @@ -0,0 +1,8 @@ +src +=== + +.. toctree:: + :maxdepth: 4 + + controls + other_module diff --git a/src/docs/other_module.rst b/src/docs/other_module.rst new file mode 100644 index 0000000..49ad026 --- /dev/null +++ b/src/docs/other_module.rst @@ -0,0 +1,21 @@ +other\_module package +===================== + +Submodules +---------- + +other\_module.snth2 module +-------------------------- + +.. automodule:: other_module.snth2 + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: other_module + :members: + :undoc-members: + :show-inheritance: diff --git a/src/other_module/__init__.py b/src/other_module/__init__.py new file mode 100644 index 0000000..874b243 --- /dev/null +++ b/src/other_module/__init__.py @@ -0,0 +1,3 @@ +""" +Just other sample module +""" \ No newline at end of file diff --git a/src/other_module/snth2.py b/src/other_module/snth2.py new file mode 100644 index 0000000..b48e8e0 --- /dev/null +++ b/src/other_module/snth2.py @@ -0,0 +1,4 @@ + +def add(a:int, b:int) -> int: + """Add two ints""" + return a + b \ No newline at end of file