From 556a32e57009e446a3b72100b51a93afd64e7f76 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 24 Oct 2024 14:12:11 +0200 Subject: [PATCH 01/29] New docs --- .gitignore | 5 + .readthedocs.yaml | 32 + Makefile | 66 +++ README.md | 12 +- docs/_static/Plone_logo_square.png | Bin 0 -> 30912 bytes docs/_static/copy.svg | 6 + docs/_static/cut.svg | 3 + docs/_static/favicon.ico | Bin 0 -> 5430 bytes docs/_static/logo.png | Bin 0 -> 12314 bytes docs/_static/logo.svg | 48 ++ docs/_static/logo_2x.png | Bin 0 -> 3243 bytes docs/_static/paste.svg | 6 + docs/_static/print.css | 3 + docs/_static/searchtools.js | 553 ++++++++++++++++++ docs/block-model-v3.md | 101 ++++ docs/conf.py | 305 ++++++++++ docs/howto/how-to-access-registry.md | 11 + docs/howto/how-to-instantiate-registry.md | 47 ++ docs/howto/how-to-register-an-addon.md | 74 +++ ...w-to-register-and-retrieving-components.md | 97 +++ ...ow-to-register-and-retrieving-utilities.md | 98 ++++ docs/howto/how-to-shadow-a-component.md | 24 + docs/index.md | 398 +++++++++++++ UPGRADE-GUIDE.md => docs/upgrade-guide.md | 50 ++ docs/volto-light-theme.png | Bin 0 -> 2108344 bytes requirements-docs.txt | 10 + 26 files changed, 1945 insertions(+), 4 deletions(-) create mode 100644 .readthedocs.yaml create mode 100644 docs/_static/Plone_logo_square.png create mode 100644 docs/_static/copy.svg create mode 100644 docs/_static/cut.svg create mode 100644 docs/_static/favicon.ico create mode 100644 docs/_static/logo.png create mode 100644 docs/_static/logo.svg create mode 100644 docs/_static/logo_2x.png create mode 100644 docs/_static/paste.svg create mode 100644 docs/_static/print.css create mode 100644 docs/_static/searchtools.js create mode 100644 docs/block-model-v3.md create mode 100644 docs/conf.py create mode 100644 docs/howto/how-to-access-registry.md create mode 100644 docs/howto/how-to-instantiate-registry.md create mode 100644 docs/howto/how-to-register-an-addon.md create mode 100644 docs/howto/how-to-register-and-retrieving-components.md create mode 100644 docs/howto/how-to-register-and-retrieving-utilities.md create mode 100644 docs/howto/how-to-shadow-a-component.md create mode 100644 docs/index.md rename UPGRADE-GUIDE.md => docs/upgrade-guide.md (57%) create mode 100644 docs/volto-light-theme.png create mode 100644 requirements-docs.txt diff --git a/.gitignore b/.gitignore index 01fd008a..c923072a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,8 @@ core build .DS_Store public + +/bin +/lib +pyvenv.cfg +docs/_build diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..21de3cfc --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,32 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the OS, Python version and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.12" + # You can also specify other tool versions: + # nodejs: "19" + # rust: "1.64" + # golang: "1.19" + +# Build documentation in the "docs/" directory with Sphinx +#sphinx: +# configuration: packages/registry/docs/conf.py + +# Optionally build your docs in additional formats such as PDF and ePub +# formats: +# - pdf +# - epub + +# Optional but recommended, declare the Python requirements required +# to build your documentation +# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html +#python: +# install: +# - requirements: requirements-docs.txt diff --git a/Makefile b/Makefile index aa7a3cb5..b3ccae05 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,18 @@ MAKEFLAGS+=--no-builtin-rules CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) +# Sphinx variables +# You can set these variables from the command line. +SPHINXOPTS ?= +VALEOPTS ?= +# Internal variables. +SPHINXBUILD = "$(realpath bin/sphinx-build)" +SPHINXAUTOBUILD = "$(realpath bin/sphinx-autobuild)" +DOCS_DIR = ./docs/ +BUILDDIR = ./_build/ +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) . +VALEFILES := $(shell find $(DOCS_DIR) -type f -name "*.md" -print) + # Recipe snippets for reuse # We like colors @@ -32,6 +44,60 @@ ADDON_NAME='@kitconcept/volto-light-theme' help: ## Show this help @echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)" +## Docs + +bin/python: ## Create a Python virtual environment with the latest pip, and install documentation requirements + python3 -m venv . || virtualenv --clear --python=python3 . + bin/python -m pip install --upgrade pip + @echo "Python environment created." + bin/pip install -r requirements-docs.txt + @echo "Requirements installed." + +.PHONY: docs-clean +docs-clean: ## Clean current and legacy docs build directories, and Python virtual environment + rm -rf bin include lib + rm -rf docs/_build + cd $(DOCS_DIR) && rm -rf $(BUILDDIR)/ + +.PHONY: docs-html +docs-html: bin/python ## Build html + cd $(DOCS_DIR) && $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +.PHONY: docs-livehtml +docs-livehtml: bin/python ## Rebuild Sphinx documentation on changes, with live-reload in the browser + cd "$(DOCS_DIR)" && ${SPHINXAUTOBUILD} \ + --ignore "*.swp" \ + -b html . "$(BUILDDIR)/html" $(SPHINXOPTS) + +.PHONY: docs-linkcheck +docs-linkcheck: bin/python ## Run linkcheck + cd $(DOCS_DIR) && $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/ ." + +.PHONY: docs-linkcheckbroken +docs-linkcheckbroken: bin/python ## Run linkcheck and show only broken links + cd $(DOCS_DIR) && $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck | GREP_COLORS='0;31' grep -wi "broken\|redirect" --color=always | GREP_COLORS='0;31' grep -vi "https://github.com/plone/volto/issues/" --color=always && if test $$? -eq 0; then exit 1; fi || test $$? -ne 0 + +.PHONY: docs-vale +docs-vale: bin/python ## Install (once) and run Vale style, grammar, and spell checks + bin/vale sync + bin/vale --no-wrap $(VALEOPTS) $(VALEFILES) + @echo + @echo "Vale is finished; look for any errors in the above output." + +.PHONY: docs-rtd-pr-preview +docs-rtd-pr-preview: ## Build previews of pull requests that have documentation changes on Read the Docs via CI + pip install -r requirements-docs.txt + cd $(DOCS_DIR) && sphinx-build -b html $(ALLSPHINXOPTS) ${READTHEDOCS_OUTPUT}/html/ + +.PHONY: docs-rtd-registry +docs-rtd-registry: ## Build Plone Registry docs on RTD + pip install -r ../../requirements-docs.txt && cd $(DOCS_DIR) && sphinx-build -b html $(ALLSPHINXOPTS) ${READTHEDOCS_OUTPUT}/html/ + # Dev Helpers .PHONY: install diff --git a/README.md b/README.md index 37091597..38454830 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,14 @@ It aims to be future proof, so it has to be aligned with the upcoming Volto visi ![Volto-Light-Theme](https://github.com/kitconcept/volto-light-theme/raw/main/volto-light-theme.png) +## Documentation + +You can find the documentation of this package in: + +## Upgrade Guide + +See a detailed upgrade guide in: + ## Requirements and specs ### It should not use any SemanticUI component or styling @@ -228,10 +236,6 @@ In general, the same rules as Volto releases applies. However, in VLT we add an extra exception: The vertical spacing is carefully curated and considered an important feature of the theme and because of that, changes and improvements in the vertical spacing are **NOT** considered breaking changes. They will be noted properly in the changelog. -## Upgrade Guide - -See a detailed upgrade guide in: https://github.com/kitconcept/volto-light-theme/blob/main/UPGRADE-GUIDE.md - ## Compatibility | VLT version | Volto version | diff --git a/docs/_static/Plone_logo_square.png b/docs/_static/Plone_logo_square.png new file mode 100644 index 0000000000000000000000000000000000000000..f42a1220d761a40ad9f0f0df919136f61ef729e2 GIT binary patch literal 30912 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 LD@#>L7zh0yh&`2n literal 0 HcmV?d00001 diff --git a/docs/_static/copy.svg b/docs/_static/copy.svg new file mode 100644 index 00000000..3e9fd912 --- /dev/null +++ b/docs/_static/copy.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/_static/cut.svg b/docs/_static/cut.svg new file mode 100644 index 00000000..6a3b112b --- /dev/null +++ b/docs/_static/cut.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ae7bb0cd8b1f4f2e6d657bc7a253472819d77819 GIT binary patch literal 5430 zcmdUzv1$}y6or39*mCm*nMy3Tv=B0n;3G_FX)6dj5Wz;UwcFM%Z{S2y*ogZGGvWhm z#3q7dJYSp}Zf^dW-Bm#h9Pa(^J?Gr{Z)P`;lCe04v=C~c5&99(gR}V4d8U_FC9H+9nPYV{kIiS_C~YBdpE3Vk>v$CV z%oqQ$uo;<6{X}5T9@M5ZJMBUq>^pZi?on>L2OI%z&ZC;rOT)dRu2t=NF1cX$9(~US z9@^-a-Gg|A5ck)pc3{t}d?iG`+WIk~74YyHW)vB2Pb;nr@L;rhn2Sno0`a^%NO%p=Cq^TlH~kz?oDb9c@6@!W^|AI<+;`~Mg3 zU*q0~cH7Ry<*vNLpz?g3OM&+bl)h)V>hbdj*WN#3R)=1_b>PCk^%=8SG2$Kc%>Jj} zza#f5GtbVx{hoYYM}9nK?tb<62cCLW@NRXEe}7kjv-5ns1U$Vaes?#a-}pPI$9KEe z`+VWKF_&)A8@@P&;NMOB(OvIB`AVSfQN?+7Ml0aq`OGMcH&q- zV?-mM^|Q%u>^-BaG8%M^P)2?{!x^}7F6S!pb7%3`L;PKsU#lLU1>1o|YV?ffBVLpD zj?W=}Av7a?-g{e)M-lyZJxf~&>)&_|G}W$iw(;a;@7>f+=<)lQ{5<+ueK+g-`c8kD z((*@2M;C_|hv&~O=Uum)z3-OCXQxMJFHes?zwDNu=iTyr{{7qeygwaKKb`krIMWjc zE*i9WbX`Bg6K`fPiOdT`*PLHiTJtBB+P literal 0 HcmV?d00001 diff --git a/docs/_static/logo.png b/docs/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5af00bf163bf8e5896ab1e3627a03eabb300bd GIT binary patch literal 12314 zcmV+#Fy+sQP)muc z1B!|Z`@X1%f*^t{vSg+Qcq%SzPY~JO)2GiT-7~{t5D_pBP!K^-K+&h@6NT5^lLR7R z-;zK=_L=Uk_n&*`-oADB-exA@R=&xtI_K1>Q>W{mTg#~`qA?zXB40Kyl{6=MI#n7M z!AJp2;jS;Hlp+~^{i63OFitSs{$~=He9UxHo_3~Yp?1c0ya{*0%(VG5>FRyv3U`r| zTGBJW&`xl{d-DfUcjxb1@GyWWu-Q~NEyQ0@_}+R}JKW^OuuS?m$`EOkE8I&YZZL6r zo6DsB+xqz!!5J#_s6}H&vW4%F{^!wlnTCboy!>Yh%J5y<_t#+@=dkd_@%oeLg!m*PezL8@+FIoD{NNU z0y-kBj9j5ix#EpFZ7zScg91q}MqV&?&Xz*dwj(9i#IELf_-PllRD#W!c~yIUZN&bf zj7m-IZ7i4nxg|rkQ1EQneZ@~%ZPlK)H~$67<=?dOHyF{Vw|J$_gEhnjNjes9&>03S zoz|a0S~WHMqi3c!D2tlCw~*DSQn|#kX=Xv0)B=mrgjoQOh@junhK+ByFs4@RmGgpe zMiXu_=}z}lZJr5aVeWsX-9>ET?N8&g_6KPDP^*G=Jja=z5Ch;hWT6I%;@(F`kV=I z4>}R2A?qD}*%dgK=?I#lUZM>Se6`2nLU;hWJAZ4+p)O^rFk=xeGoA{jWjm2Q=x&$}^kqBhmJK%FJ1k zB>yq1_r#B>Xs%3h>O`79!x)ni@#xL?6nQBoTIJ{HWI}v0l-w?d5G&C7r&)RI<=g3) zfZr@hZK1T9b{@KxKXlRcbat6Aw7jzUDeX6bzR&)DZcQaqSD-4bT!;USSHGw8ZnQq% ztS*GJQYL}D;wH@bM5mc5m^={TA=u<26g2bYKPMk&+F3piM0r9&rMph&?ZY#P*W(j< zVMOymXld0FC|6hsrc-Ewwga89+iQSV?W9G7h$W0T#t!z4t3vvcc_Jj8pu+`K2N<4& zH2`@e&mmjz>OrV8K*MZ}zPk`N8X576*#j$t6~|$H_}(NddUKr^ig4p~!>w+D32OQChQ%{!aOhd39Ot}VF25KvB(q6qN28wiJ7}*#m+E2#)>}Ln zU9g807|~;x3^>4oWm2bd+^}&R>z?}@Ka_Az>PdYD!BkqmY||CQucm3Zl?)9e`W97( zS7B@(l}SZuJcY!;ShZ2?ivc&4CV0}q2$C)`qx$of*Ctv@6XISB-;A+5(f*hS_^m>V zgkj^HP``AkP#xGa&4OjyV12@PP5ttC!FdJJ41&hNw)IfCWI`@ABfigpf}tppIE*s$ zs+H1h?eMIJGqd^QGd!DLi~lF;KfVcHvz%ehsiw1y1|kp9akl?zQ=BcM9^E)N5zpEc zNAk-StLm_v=iDAZhx#fD7Z$NA%}&e9dnbshr;(uQL?zSpbWUpYjj2s><0fuTgX^lz zy?ge{c6p=6MUO?RVMejN<4*eGtmPK0-iQ!u(0V7+ibXuL{0obX(4M#AVG%zQlv{Lw zebK6_xF0W?N~g_TsqpQ8Wr9BQE5t^$gzdeX2^PI#a zQJQS$nWThvtiCd}w!|J{YJtXdIgGCCQ0#%71IKfP=Rw1{tFMQXW+c+w+Bi&=zpA@9 zp3saCH0ny-W6^O7GlSDn)`WXKrQAseXF97b*o&^&u-?Kxo-9vDsUI;#B+GqI+_QmBak{4g-vS9DA;qfraF+5(k5L9hm(4aNMLao~F_`l}Wd&$R?!h z!b-WL#gUgPMZ(tavy@iyl+(%>5b2ut7=E174GOG5*p)Ut?Rt|`n`T!8bFd3;a5VnU z=6T)Fa8723ADuzHMgFfUj;oj}{09vES0dHcImC&SY0DsTE6%J}Hh&YMUo?}B=Syg1 z)mO)Xd?zIR6&JPk*}{il8$OFcG&-GPCXBRc>t4s;`gf$sd#Ed|u7yVB9n)=*8mO(& zuYWCA6b3 zi2k)Fu2!JkU?%bLxi28Jm$1vB9g&O%jl>r98UQ;i* z{3^`(Z>`X>+ZDTC`GxtZKLTYm_H5xAly#v+TCO~x58y|4IQJfGS-sDi?BIPn-RV0l z8RJO98c;2rmv!@N0A93qai(jN>4cQA9%6@k#dC#+@mW4tL1|)N{Mi4az-mc&SvtSE zn0$FLZJ>Y|E1GG7^rzR06k9q)MS%(Ssv%m7-?$&f>wl{j$=!(l<~xDJTNA^=o3w8j ziG|Ok57FJXEdU}sZE5#Au;W@4KS=Nl->$BD>zk-`#kH#BEthXLe+8lTB(#d%eOQRY^c`Q ztGrggc)x(8Gc4BZ%0=`!E8UDpZs1tFT{pl2OmndN4Ry4gPId<$2Z5e6{XR?_`+sCo z4-mU5tX*-h>+8Y&@$S^InBuZ8ahtjQpSRH1|+CGYu~`pXcX>|tG&V1&eh0~Ej$O_J1g0f$vtTPTy=@o{*p2=zW`B2_GW`i zPS}R#@3vYgM|Z}u`4vgJ3KnQ@G!$4{N6>$_O7#mPXbBqV90wJau8QZNVfGtvxs@(w zggxYNJEW>rF>=@T7P=%E2Cxf@EL8>fqRSPJ!RO#!1;wB4D9hwZriclr_43MAE~`+Z ztI^m}ICISAKZbsd+TgriI;PE}cn|y8SdXl}tvs?fNBvCW6$GtE<6!?Xcj!qUibjUt zTK=_)l6kqU(07#1pe+C8r_p7z44R>sOdUW zQ8xNJ8ypv9x*612Y*VrcT1^usZL1F`GU>(}91A6A*dh!|D71?MW%cTJg}Jo~?VEu- zxg#GMV& z%GbeOFP2G`K7jvU_7g9uAAXdB@3fTTETU}TaeV7PVx_$z+?tI&A8u??+mDP%U?QG| zAc|%!ZhdAeTD?&nG=$0FE`4l5Bn?0?ZZt-a+z9DDGwJ!XH#jB`#0PDRY-quYYRuEQ zyx`=A@%{gWZ|xQq$N4rm&cw@HeTzTno8Jq;!~E47)y}Ubj`t$nEMb~FSCL!FYn61A zL?e^sQTXdLIH1fP*w3xWp*lJ2YSHLq`k7Y0PorJ9#JCsj$-sE7a08jUIZQ%h`ROh* zIp&@nn%WI;9&zCm*f>jfxdLYW_Ac5*fpH>N{Ekcan#S{ltq;!8EIU@RoZLce={!`S(sem zcC>@qC&QD888m<1t3mZ~H#(-qk=Q8IF?V3G`4&cXms_b?BMXY#>xb@m=lc?P|G*nn zBXlGhohi~yi)YZL(yh>&qd)3C8`I39KePF-qNDb2PGHTj?@Y9^ z(b>z&7OsGd7Xjq9c6>B!LOTRQ zY1+vc(k~1njPYBx2BJ5*+~Pg3ruGkvM4iL?+BGD^_u#p3LG2mi99x10qBXi~{xwu~ zyQWu|4}}Pui)wnIF~iZ;Kyah$AJ_}-<4=SNsh{4aFJ8ZZz8v~j&7u>V@7 za~n@w4BX;0;N9qYiHK0Sxs$)&8fGY?cOHRzP|!Q@Y0n17pHNn;v%%%^7h|3F5#2L_*KET=rgKlM z)m8n~p$*?w3Fzb+-LLW8?hftU#? z_cNp3PwQYrZ?qjM1aGrD!VbbHSKwCDBNf<4Br>VnXkMDFxEjjzcNGw)B58n+A30~< zpYVG=j-}G4%qCVa+UUvVA=mM7BCrVFw5-pMsj5)TSW1yu`~ zbnxC+b}7&0zk@EI`%}c6>Nzy=lv!_sXBj*bmM|+MZ_H6Yy%utWBia01D6e^20Qu9i zY*QcJ{?nD3@O&kSFGGh}1@4vb8$t8LzN~y#{eAEy(X`X4d*08zSoy+q2amy^$mg09p6e%FiPS$>DPEmgyy;2RERj?sjIttNOPmo1_a#Pj-Go&u{OAvErA zRs-LsHdeyq=`S=*6y8^?pV#7Oa9jYt$WmUX&lU0^J+*}1rSH=7@k)}*AYjWtrF=IA zZG2s~tuG%?03ZEZ8eHybaGZtR*kt7%y}auey*Gdhj1Ug$G50}(kVmg-|3%V&1~RZC z!z?1x^4%w;$|Df`U1+3l5+x4DH9g+zx!tLsq7wM_k8X4ai9-Qe$F)^-gE7ASai~(z8yvIZE7)b}Z>aSDMCQ!0kJfeS zo6FG$X2N?uP*%Qx7twpoI!H$2GyR$`NjC5O;&X;v{-5~G91V`oD-qwvC;B1`wA}jP zvjkn+6}(HY&eNIr?%nwSyT${b5ajoHUIm=>PR;K zhD&)u`%c5f8rwSGr}7a?u?udN0yFPmQ-H)TX|QE7>4mr({lVkRr2gc78Gk0#u$P(~ zPW9(^qY~|^;N0u&hGEjJp{;TD7P;+ASMqu!+>OqIs6LQM|l*w~V8~aS?p^)PiN>UCWXE z13QFmVn(}s+STB6p0iibg5nOY{l>gQ_JtHSLk5g^f=8yhnLekS5NlChRfc7=Bk?wqr*q&PQj6mNmF2 zl^Cz7-4j1c9EF!jBj^P)sz3QEY$dGytdb=9KS$b~bnf(%au+v|3UPnp*vr>>UaguZ zT8ejl59ecGH;TWD7w!6 zt$}^hN%@lJRvm-uE3DjALGj(}*?f-zYeFKa`;6I#$E6LtOY56W;LR%&JL8n1`Iz&< z%=>T<`fPjjxxl8~876ShV=8Bg5kI{&Aa+p(5nd!sfT7U|zTCC?9TxhvNzoczHqR5w zSK8#jjVPU6wlu+0r5|bj3lGN0=HYZPMQb!5<=YBl?w3pbBvl36Xd+1yr(J;q39F6H zwS3}Jgy%VSG#{VTGhpG`eR2hZ%Vl+1ftq;UaB#_E56hi;M;mClkeXP6leVhGNU;#} zh{1jHDs|)-?wA z2k^}~L4mtH_8^7hD_}=9Db5}t_TaqX(vE8&ZZx_~+Bql0mu)=j%hx%=^d*dlV5a~n z)s+V!PLG&-Y>@G&KQM@g6?D1sYb9+@u+?`?JtXD7+DS$%&X<{lg=|5!$|3Ydqhlf= zvJTpr=%1bDfDI?%!W0;EZ_z*s1<6hU&X7s}*a;fb>GFo)_2KEl@u|Z4GVcL)20l=_ zgew-DVScCkOW>qwMp_e&RSLLYW%HN&vd$H*!-)40bg9a|G!8^{o-UI<*EJ_2<;~dH z^%vLroYuBa;F10$d67O^(1o>iUOAU&n-eYbC{hUxPLh?cS`tXqSzm{Qw+N5=+LI~V zVz|b_^J+n^@SI}7c++_`4;mF5AqEN#?+$QCXvbQ7S{><5KM0vhD5lyrh%N){G8m>u zAmd*!-#G>G{ZW^>_#2i8FA>+pYlojh=BlM*gf@OV2Of7q3@*}lL)j7CvtLG`YCq7# z^VuZ&o(B^U@XY1$M%z3}m{f>IH;eP^GO4e5*G$g953wVa+Em>#aV9+z^)r7ZTXsFq ze)uun4UYBEmAc19-1=xwr`r*OOXZ88CGmcm`FewMN+JYK^$HKFV%V*T{iU3tET6<% z`Yi>_{lIo@Dq6{3bU0s4nWWv}B^um8W@7e{&J)<8jkv>={XDlc5`qwC+an<}w zk#Y%f1sdw;=)D-ZScy>D) zT#pf{+}9R)ofM;g%6IRP$F+tUWg7Z!iWRlGipqg?>kuOGT_0RZ8P%jJIr zOLT@e9+#Q4YagMr<~{F?_ki{mviM;#9vFZy@aVy&>o~k4G~nOpxca%`Dd;T!Bv=#d zW-YOJFMdT@$MZCu@anXt6A@24W4=rh&!{-L21TMXNXRPJPu4sx~=Bhnl^6h4>a6 zB(I9+|3>F0h)az%FcKQ5-_Z3HPJ)?OfZkCwpG9YF_>5#pKgSUwk5F>Lqg3xs!@hx8 zh6lA|XXTG0-r+1NQd)>tA{-M^ar& zXQh_bl($~uTyZ}b;Y(ro4zG=c*n|a*lWIQnzP3W@r|w(yQJjx{dHoE0bMkH#Y&?*B z65t#7dkueof@|#}-yHQI`ih6Zcf5LliJQk7?6NrC4UQqP2I|*9bVKJn>np5GAzr|X zb1od`ei=sEay;)`UR*p6M(;|nMqXcIT&zZEg`WwVbT4_$llG_(jXh@hU*y zTc}-u!-wy|P~T$@rB@~gj4#FDI|}@QptrDY^!&t$_>euSf0R-wT7#6<#o3q5@C# zD2={v@dv3q^cd*XBj~~k5!(5+?&S?*Nxg+HV;J?lP&y{iv{PWfe;SFll|*C5&>6K9 zVk3HY2S7J}ja2Q}&_z;HOw?QrcpEx>M?&#Q^tR>&7RSREjZVe{e(>Q~CX-yT3-f!u zX0qm|5dV$&o93_XW(znBL7p2fkGL7e{ETqA7E(kpbbO?dCcMwA_Y+N0J5Cjz3fG|b zpa+lnO^bNbeQ#(Cy{NtkgR{h zP}+ThOh~4tp(7bO?PBzPuW3q|hWpUX;PvTHenQ-b4^hBW1USToE>w*%K@A$<_n{&W zB&y&no5V!em*;58)=%RolJAp9+-cr)sVOYk;kP`9RnZV5r%?tk`vH-S92c@uo6)e5 zV?NIFh#A(5z?Zc3bZ(DfSjfTM^g$ex_J?K^xmobwtL=L_KVzIfNUH*6mhuzO&8dMj zF*4Rbvoye0`c`Nsd|bbb`QmTmW>6esC)#Pn>KoB!yD&QWAoUgXQEAoC@kPX?^|)-A zf)55yBrqS-S^My_d+u{MRpRl6>d0;?TE|@t@d(SDNuNvtJ)*#XvkS+||b-5TgfzKo8~Oe;T6rBy2D!_MS%7~|R};PgV6L5nC?xB;2Y zveMp>BVZ{X@BK!prdDP3ZU7-P+~Pc0Ks({Y}*C| za6TSmfk!QU#S zT`j~B69Y#B@&K_9=%RtMAn#=;7e)i2v|fMc|Ji?vGAAJG0P1AQEBIz;?Lxdi4^%TX zDaMok&kwTa!X=Q+nA2aw{^s_;GU3mX6MAKxTk^5LEgZ;uI)7%*6*+EPM*Rf`J>1gN zVD#v6g-1}>K`P3Y65=WJT;6AcG%wm)*auesSZJaX%GeH;81q2lpO`EA746)1f6YeZ z$BU-YIx&qp5^vHOyRWF*v6X9Rd@WW&u7CpyFgL(Paiqd%_UPD9^cG%&KHlYDUAP+c zq$m60N25o_yGhEWdmz(vU%Bc<2pG-o^d&X7vs`{L^yqKsH1QP}kn~HCOlI7eAu$6VA2nS#k36OXmvL;s^bP9~$u2@ij8Ov;jm-Lye}P z<9lW#j@$|k{{?;gi!aGY8oF$LEak-~=#igLHM=)~hXlBRP z$3%VE861PSP$OrYU~>zx+tSRA4!m4K|Kl6mlF2<_DA8Nf_x=V~t5UffZL0_!wZ;hW z);J-q#JP$e!sset$vHip)M12s3W$#&3k#61Tz&{c_(Q@d6@0FkL%!dKylczhSbq^s zn6#}WpQ%stscCy*{xf)(YJ8YpzRJ?`}% zJJ@sEB>IdOx-OW|euClVsY>21Tgo_7@o#|e-$llpUg5WBuLszu+|i0$h~IWvq#<`U z&leeYyO|6_1TCS7$$flvY0uc5`UjFce8ziN#DTmO|J_EF$`4`e)}p6;vz-g` z^JN=r%f+`_&rKaMYAbzqX$=SGd+i`sT+prP6*(ucU1Tl*56Sxm?lO8dF02XoG<5$j z=+UrIY%J8X?a)|lJrMqkF!YjpwcbI>Dbzb~GLW}=6AVL*sfG)DX@s~7x;)+&AB4!H zZlm1OkK;qS1Z2j-sFS`@SwQ`Zo}l@2`GZq;&|ow|y4qvxLYjnV&IG82L!+VwDY29l z6hw#)gYs_1I6==+TXHrU`XOV&$gwKl9^^Sh@0W)0Lad=_+L;`!D|F3!3{0*I%qzrc zf%qs$As%dKZ}s%l*Yvsul_e{?2cdPG#L(R@=(G!1sQiUMJpF#+N(LAJ;l81@@K@-8N z(0#=tF$DHs8J60p{bEWUh_yM+Er&QjJkX&G2tlaQIt12Gr! z7=Fn8YUe1Pq-m)SM$TufO79#`8D&)8Tb zqY@EfC$tOyqJ{XgKQbaFGxrJ1+YZ49wE5=HDmwwkL$dmUpmp_SwB-_FU7#*(q@K}= z+|v_o0tFq0VfqthvhL?{_}1~Ayg@zjx7Kp+v+nmSiH)z=A6CAKOY#X=Rm>lVZC}6h z!H*6&lir_tm%N+g(9iK>ekfcBoNXt@9Yfqzt|bg&@gg{^s;zez%&aL`-onGYoIWOKV^u%135%Tmdd+;xB)}gJ+A<( z%quqjy&Q>UZK8eg*Zg4k!tD>nY5cL$u#8SiX~NXsn%g&g3+p(uT0y#GGAO&8+0BbHp7B=DB&7qdYYGHT!LCnM49VoEG{=Vyrjc)_X75<3P_)^`- z1r}%`Yfazm9aLV73)g_4mx77pM}qMYu)W3i z2hPtii-Z;;M}%@ln?wuo4V5%!v_*_se$_1^!F%A)dkP9e@(JSMVZ9++cmT#@pSrU1 ze87gaOOU@Rb6t!gWa=$`5e}z6457RqdmO(XLKCA$TmvG^>;7}ZCulbkDl*sykM9}j zN)0qp#F)t2m4YsVYyuW4bBp&F6S9T~Q8gNT{P4K;_n~JOu=EZiQyN@^#feXZ@O7hm z7wv*>@R4pr4G=bV{R7SOI`=A?_qJ9lH+i8f7<+<;ouq3K$B~*eAZze%^kO_wyA5qP zV7x`!P(jMcXYUo(dvuC|T z3Cx@E+*44f&@VA(cXJSl3pat*xM1}Fq-+i!XW0v19FO5~9zDij=R_f%qq*rcUM77_ z+{q?RhiE`*&xKG-#MYoX+=hm^@|G?kf~OpK-*c|8lx|u)IYbr}-CMkpN|nb|pfe>N z#z*kqoY2iS%{Th-&KLi%4Xxg|8e6sI`;$b#^c7CRZ?XyV@}ror+*@j@i(Qde@qHe?*Q7@S@28A@z$Z}PcmUZo1{CbW;UyilI7&CSqp zC2F}I)U(oc0NJ*T7au0R)1`r+4qcs$GU+4W8GlgdP*%#FXmIFR4E4p4_#FNDGuBrDO^js=2SNUuz;Pyel;Mo^iP#$MtPSTFQ`j|N96!I8zK3!7>Wkpu zeF1uSt#MH8PAx>y3-z*Atmbks4;ymRon2N}T--y+whLWDT^HRJ2r%{uccW(A#-Y79 z2A$~CNTZ@abzsgL#{lDOy-T3i6@jF6AcKdlPKJCp>k7$d!F|$+3QTkNljz@R{KT7T zKH)czaR9P+>AOg7{0b;Ckhiu;XXAd1ZwGK6Jrp1BUfH;7pa9A7uh7}Mz8*+3){(jA zw@| zY`k>M$Bnh2cjOn6<6fpO&Vs{k1A*tkDq3|#G=Uo0gBZ6$Ux2j38jbViIBVbhDDGKJ zqqHe7UQ>pj*h?bULzi#k`5d;ME~P~KA0tgcG%6GF*JkMK1!fD^z=~gJ2StwS%l{Ia z^2I_DNvu-Msekh`-{Q1#-~;HT9R?-hAU~`c*A>Jj+@f>}{GaZuD|?(N)${WiJoTge4&*gj>H;>HL$s9pm9TIuW|pPPAZji z=;^iQ004Vg^~Mcn(p#vb{c8;m4eFI4&KGMS*1(8rpt*+5E;?`3>Kiy7LrL~Q+S862 z@wlL0k(RuQy5|0Q#LJEgj5QEzVAM6xIz#7GHQs%&a`mS$H+M89D-XtS_uXD(b;E?< zTb~|*1L)6jM%?e3Hep@2Kyk)c1F;6if(Ay`&_$^+8^hHbr_$iY$yf=SjOCKaSP8?i z(8)D$hFOE&A+~_cT|vAzHx97|VhzL^h@gT02l~uJM-0n@u>b%707*qoM6N<$f@s?^ A*Z=?k literal 0 HcmV?d00001 diff --git a/docs/_static/logo.svg b/docs/_static/logo.svg new file mode 100644 index 00000000..6bfdc1ee --- /dev/null +++ b/docs/_static/logo.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_static/logo_2x.png b/docs/_static/logo_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9e303f7cedb8c0292848930560c210e6dba9506b GIT binary patch literal 3243 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 + + + + + \ No newline at end of file diff --git a/docs/_static/print.css b/docs/_static/print.css new file mode 100644 index 00000000..8dbc2d57 --- /dev/null +++ b/docs/_static/print.css @@ -0,0 +1,3 @@ +.tooltip { + display: none; +} diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js new file mode 100644 index 00000000..23ed8bf5 --- /dev/null +++ b/docs/_static/searchtools.js @@ -0,0 +1,553 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + + +if (!Scorer) { + /** + * Simple result scoring code. + */ + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [filename, title, anchor, descr, score] + // and returns the new score. + /* + score: function(result) { + return result[4]; + }, + */ + + // 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 + }; +} + +if (!splitQuery) { + function splitQuery(query) { + return query.split(/\s+/); + } +} + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + htmlToText : function(htmlString) { + var virtualDocument = document.implementation.createHTMLDocument('virtual'); + var htmlElement = $(htmlString, virtualDocument); + htmlElement.find('.headerlink').remove(); + docContent = htmlElement.find('[role=main]')[0]; + if(docContent === undefined) { + console.warn("Content block not found. Sphinx search tries to obtain it " + + "via '[role=main]'. Could you check your theme or template."); + return ""; + } + return docContent.textContent || docContent.innerText; + }, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + $('input[name="q"]')[1].value = query; + if (params.doc_section) { + var doc_section = params.doc_section[0]; + $('select[name="doc_section"]')[0].value = doc_section; + } + this.performSearch(query, doc_section); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, + dataType: "script", cache: true, + complete: function(jqxhr, textstatus) { + if (textstatus != "success") { + document.getElementById("searchindexloader").src = url; + } + }}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + var i; + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + } + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch : function(query, doc_section) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

 

').appendTo(this.out); + this.output = $('