diff --git a/.gitignore b/.gitignore index f4c73aad..35329d5d 100644 --- a/.gitignore +++ b/.gitignore @@ -155,7 +155,7 @@ venv.bak/ # Rope project settings .ropeproject -# mkdocs documentation +# Zensical documentation /site # mypy @@ -178,3 +178,6 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +# Local documentation tooling +.venv-docs/ diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 76640b7e..d761cfaf 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,27 +1,14 @@ -# .readthedocs.yaml -# Read the Docs configuration file -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - version: 2 -# Set the version of Python and other tools you might need build: os: ubuntu-24.04 tools: python: "3.12" jobs: - pre_install: - - pip install . - -# Build documentation in the docs/ directory with Sphinx -sphinx: - configuration: docs/conf.py - -# If using Sphinx, optionally build your docs in additional formats such as PDF -# formats: -# - pdf - -# Optionally declare the Python requirements required to build your docs -python: - install: - - requirements: docs/requirements.txt + install: + - python -m pip install -e '.[docs]' + build: + html: + - zensical build --clean + - mkdir -p "$READTHEDOCS_OUTPUT/html" + - cp -a site/. "$READTHEDOCS_OUTPUT/html/" diff --git a/README.md b/README.md index 757f5be0..1b65ca3a 100644 --- a/README.md +++ b/README.md @@ -134,3 +134,29 @@ scans.line_scan(dev.samx, -1, 1, dev.samy, -1, 1, steps=20, exp_time=0.5, readou scans.sgalil_grid(start_y = , end_y = , interval_y = , start_x=, end_x=, interval_x =, exp_time=0.5, readout_time=3e-3, relative=True) ``` + +## Documentation + +The beamline documentation is built with Zensical. See the +[editing guide](docs/developer/editing_docs.md) for authoring conventions. +From the repository root, create a documentation environment and start the preview: + +```bash +python -m venv .venv-docs +source .venv-docs/bin/activate +python -m pip install -e '.[docs]' +zensical serve +``` + +Open the local URL printed by Zensical. Zensical reloads the preview when you edit +pages. For later sessions, activate the environment and run the same `zensical serve` +command. Stop the preview with Ctrl+C. + +To build the static site in `site/`, run: + +```bash +zensical build --clean +``` + +The `docs` extra in `pyproject.toml` adds Zensical and PyMdown Extensions to the +repository's regular dependencies. diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index d4bb2cbb..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# 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/docs/_static/custom.css b/docs/_static/custom.css deleted file mode 100644 index 047e2784..00000000 --- a/docs/_static/custom.css +++ /dev/null @@ -1,170 +0,0 @@ -/* Template Inherited from SciPy and modified for PyQtGraph purposes - https://github.com/scipy/scipy/blob/9ae8fd0f4341d7d8785777d460cca4f7b6a93edd/doc/source/_static/scipy.css - SPDX-License-Identifier: BSD-3-Clause */ - -/* Remove parenthesis around module using fictive font and add them back. - This is needed for better wrapping in the sidebar. */ - .bd-sidebar .nav li > a > code { - white-space: nowrap; - } - - .bd-sidebar .nav li > a > code:before { - content:'('; - } - - .bd-sidebar .nav li > a > code:after { - content:')'; - } - - .bd-sidebar .nav li > a { - font-family: "no-parens", sans-serif; - } - - /* Retrieved from https://codepen.io/jonneal/pen/bXLEdB (MIT) - It replaces (, ) with a zero-width font. This version is lighter than - the original font from Adobe. - */ - @font-face { - font-family: no-parens; - src: url("data:application/x-font-woff;base64,d09GRk9UVE8AABuoAAoAAAAASrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAANJAAADlwAABk8NN4INERTSUcAABugAAAACAAAAAgAAAABT1MvMgAAAVAAAABRAAAAYABfsZtjbWFwAAAEQAAACM0AABnoJENu0WhlYWQAAAD0AAAAMwAAADYFl9tDaGhlYQAAASgAAAAeAAAAJAdaA+9obXR4AAAbgAAAAB8AABAGA+gAfG1heHAAAAFIAAAABgAAAAYIAVAAbmFtZQAAAaQAAAKbAAAF6yBNB5Jwb3N0AAANEAAAABMAAAAg/7gAMnjaY2BkYGBg5G6tPXx8azy/zVcGZuYXQBGGiz6un+F0zf8O5hzmAiCXmYEJJAoAkoQNcAB42mNgZGBgLvjfASRfMNQw1DDnMABFUAATAHAaBFEAAAAAUAAIAQAAeNpjYGZ+wTiBgZWBgamLKYKBgcEbQjPGMRgx3GFAAt//r/v/+/7///wPGOxBfEcXJ38GBwaG//+ZC/53MDAwFzBUJOgz/kfSosDAAAAMpBWaAAAAeNqdU9tu00AQPU6TcqmoRIV46YvFE5Vgm7ZOVDVPSS8iIkqquBTxhJzEuSiOHWwnwH8g/oHfgW9A/AZnx5smQZWg2MrumZ0z47MzEwCP8R0W9GNhS1b95HCPVoY3sIsdg/MrnAJO8NLgTTzEgEwr/4DWF3ww2MJTq2BwDtvWrsEbKFt7BudXOAWk1nuDN/HE+mHwfTjWL4O34OQWeR7lvuZaBm/Dyf+s9qKOb9cCLxy3/cEs8OIDVXRKlepZrVURp/hot2rn136cjKLQziiXrgHDKO1G4Vxb6viwMvHGfpT2VTDqHKqSKh85xfIyE04RYYrPiDFiCYZIYeMbf4co4gBHeHGDS0RV9MjvwCd2GZWQ72PC3UYdIbr0xsynV098PXqeS96U5yfY5/tRXkXGIpuSyAl9e8SrX6khIC/EGG3aA8zEjqlHUZVDVRXyz8hrCVpELuMyf4sn57imJ6baEVkhs69mueSN1k+GZKWiLMT8xqdwzIpUqNZjdl84fZ4GzNqhRzFWoczaOWSXb9X0P3X89xqmzDjlyT6uGDWSrBdyi1S+F1FvymhdR60gY2j9XdohraxvM+KeVMwmf2jU1tHg3pIvhGuZG2sZ9OTcVm/9s++krCd7KjPaoarFXGU5PVmfsaauVM8l1nNTFa2u6HhLdIVXVP2Gu7arnKc21ybtOifDlTu1uZ5yb3Ji6uLROPNdyPw38Y77a3o0R+f2qSqrTizWJ1ZGq09EeySnI/ZlKhXWypXc1Zcb3r2uNmsUrfUkkZguWX1h2mbO9L/F45r1YioKJ1LLRUcSU7+e6f9E7qInbukfEM0lNuSpzmpzviLmjmVGMk26c5miv3VV/THJCRXrzk55ltCrtQXc9R0H9OvKN34D31P2fwB42i3YLfAsS2GG8X9Pf3dP97QjqOBAUAUOHDhwxAUHLnHgwIEDBw4cOHDgEgeOuIsjLnHgAMU1tw7PnvNs1fT7zlfV7q9rd2bn7e0tv729RZYvsySWb76Ft9fr82wN77fHt/F+e3m73+8J74/8zPsxvdbqu3fvXjsYg2e/P/LTP33f367PfMj67sPZjXjsh/iU/V+If7W/Tvms/XPEF+xfJL5kf73lr9i/SnzN/nXiG/Z/I/7d/k3iW/ZvE/9h/0/iO/bvEt+zf5/4gf2HxI/sPyZ+Yn99xJ/Zf078wv5L4lf2XxO/sf+W+C/7fxO/s/+e+IP9f4iP7H8k/mT/f+LP9r8Qf7X/jfiH/WPik48+9E/Y8e4Tpvjv72cl6B/wD/oH/IP+Af+gf8A/6B/wD/oH/IP+Af+gf8A/6B/wD/oH/IP+Af+gf8A/6B/wD/oH/IP+Af+gf8A/6B/wD/oH/IP+Af+gf8A/6B/wD/oH/IP+Af+gf8A/6B/wD/oH/IP+4X8Z/8/OXATnIjAXwbkIkAfnIjAX4eVPv15fA/0v/C/9L/wv/S/8L/1fX5lL/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/wv/S/8L/0v/C/9L/9cvXNQ/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf+If9Q/4h/1j/hH/SP+Uf/XlSXpn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6R/wj/pn/BP+if8k/4J/6T/6yqf9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WP+Of9c/4Z/0z/ln/jH/WvzAW/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0L/gX/Qv+Rf+Cf9G/4F/0r6/bT/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv+Jf9a/4V/0r/lX/in/Vv378uuX/4P+65W/6N1aa/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nf8G/6N/yb/g3/pn/Dv+nfGbv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/p3/Lv+Hf+uf8e/69/x7/q//kEP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0H/gP/Qf+Q/+B/9B/4D/0n4xT/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9J/5T/4n/1H/iP/Wf+E/9X8+Dbv1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9b/xv/W/8b/1v/G/9F+PSf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/hf/Sf+G/9F/4L/0X/kv/zbj13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9Z/47/13/hv/Tf+W/+N/9b/eT1y1v/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/B/9H/wf/R/8H/0f/5+PWY/4P/6zH/0f/gf/Q/7Dj6H/yP/gf/o//B/+h/8D/6H/yP/gf/o//B/+h/8D/6H/yP/gf/o//B/+h/8D/6H/yP/gf/o//B/+h/8D/6H/yP/gf/o//B/+h/8D/6H/yP/gf/o//B/+h/8D/6H/yP/gf/o//B/+h/8D/6H/zPB/9/AsqUaXgAAAB42mNgZgCD/1sZjBiwAAAswgHqAHja7ZhVc5BNkIWn/QWCEzRAcHd3d3eX4J4Awd0luLu7e3B3d3d3h4RgC99e7I9YnoupOjXdXaempqamGxyjA4AoxVoENmtZvENAp/Z/ZdbwROF+IT5JwhNDeBIM+e4T4SJYkiTkJj5J/TzwSR5WK3pYs5hh9X1S+SVI6pPSCYBGqx0Q9F+Zci1adgpuG9yrRGBQry5tW7cJ9s+eNVuOjH/XXP7/RfjX6NU1uGXHrv7lOjUP7BIU2CUguGUL/7RtgoOD8mfJ0qNHj8wBf8MyNw/smCVd5v9N+c/c/9nMlD1rznzO/XFvv8mBc84DD/5IV8FVdJVcZVfFVXXVXHVXw9V0tVxtV8fVdfVcfdfANXSNXGPXxDV1Aa6Za+5auJaulWvt2ri2rp1r7zq4jq6TC3RBrrPr4rq6YNfNdXc9XE/Xy/V2fVxf18/1dwPcQDfIDXZD3FA3zA13I9xIN8qNdiFujBvrxrnxboKb6Ca5yW6Km+qmueluhpvpZrnZbo6b6+a5+W6BW+gWucVuiVvqlrnlboVb6Va51W6NW+vWufVug9voNrnNbovb6ra5ULfd7XA73S632+1xe90+t98dcAfdIXfYHXFH3TF33J1wJ90pd9qdcWfdOXfeXXAX3SV32V1xV901d93dcDfdLXfb3XF33T133z1wD90j99g9cU/dM/fcvXAv3Sv32r1xb9079959cB/dJ/fZfXFfXZgLd99chPvufrif7pf7DX+vCgIBg4CC/Tn/SBAZooAPRIVoEB1iQEyIBbEhDvhCXIgH8SEBJIRE4AeJIQkkBX9IBskhBaSEVJAa0kBaSAfpIQNkhEyQGbJAVsgG2SEH5IRckBvyQF7IB/mhABSEQlAYikBRKAbFoQSUhFJQGspAWSgH5aECVIRKUBmqQFWoBtWhBtSEWlAb6kBdqAf1oQE0hEbQGJpAUwiAZtAcWkBLaAWtoQ20hXbQHjpAR+gEgRAEnaELdIVg6AbdoQf0hF7QG/pAX+gH/WEADIRBMBiGwFAYBsNhBIyEUTAaQmAMjIVxMB4mwESYBJNhCkyFaTAdZsBMmAWzYQ7MhXkwHxbAQlgEi2EJLIVlsBxWwEpYBathDayFdbAeNsBG2ASbYQtshW0QCtthB+yEXbAb9sBe2Af74QAchENwGI7AUTgGx+EEnIRTcBrOwFk4B+fhAlyES3AZrsBVuAbX4QbchFtwG+7AXbgH9+EBPIRH8BiewFN4Bs/hBbyEV/Aa3sBbeAfv4QN8hE/wGb7AVwiDcPgGEfAdfsBP+AW/0SEgIiGjoKKhh5EwMkZBH4yK0TA6xsCYGAtjYxz0xbgYD+NjAkyIidAPE2MSTIr+mAyTYwpMiakwNabBtJgO02MGzIiZMDNmwayYDbNjDsyJuTA35sG8mA/zYwEsiIWwMBbBolgMi2MJLImlsDSWwbJYDstjBayIlbAyVsGqWA2rYw2sibWwNtbBulgP62MDbIiNsDE2waYYgM2wObbAltgKW2MbbIvtsD12wI7YCQMxCDtjF+yKwdgNu2MP7Im9sDf2wb7YD/vjAByIg3AwDsGhOAyH4wgciaNwNIbgGByL43A8TsCJOAkn4xScitNwOs7AmTgLZ+McnIvzcD4uwIW4CBfjElyKy3A5rsCVuApX4xpci+twPW7AjbgJN+MW3IrbMBS34w7cibtwN+7BvbgP9+MBPIiH8DAewaN4DI/jCTyJp/A0nsGzeA7P4wW8iJfwMl7Bq3gNr+MNvIm38Dbewbt4D+/jA3yIj/AxPsGn+Ayf4wt8ia/wNb7Bt/gO3+MH/Iif8DN+wa8YhuH4DSPwO/7An/gL/zy7BIRExCSkZORRJIpMUciHolI0ik4xKCbFotgUh3wpLsWj+JSAElIi8qPElISSkj8lo+SUglJSKkpNaSgtpaP0lIEyUibKTFkoK2Wj7JSDclIuyk15KC/lo/xUgApSISpMRagoFaPiVIJKUikqTWWoLJWj8lSBKlIlqkxVqCpVo+pUg2pSLapNdagu1aP61IAaUiNqTE2oKQVQM2pOLagltaLW1IbaUjtqTx2oI3WiQAqiztSFulIwdaPu1IN6Ui/qTX2oL/Wj/jSABtIgGkxDaCgNo+E0gkbSKBpNITSGxtI4Gk8TaCJNosk0habSNJpOM2gmzaLZNIfm0jyaTwtoIS2ixbSEltIyWk4raCWtotW0htbSOlpPG2gjbaLNtIW20jYKpe20g3bSLtpNe2gv7aP9dIAO0iE6TEfoKB2j43SCTtIpOk1n6Cydo/N0gS7SJbpMV+gqXaPrdINu0i26TXfoLt2j+/SAHtIjekxP6Ck9o+f0gl7SK3pNb+gtvaP39IE+0if6TF/oK4VROH2jCPpOP+gn/aLf7BgYmZhZWNnY40gcmaOwD0flaBydY3BMjsWxOQ77clyOx/E5ASfkROzHiTkJJ2V/TsbJOQWn5FScmtNwWk7H6TkDZ+RMnJmzcFbOxtk5B+fkXJyb83Bezsf5uQAX5EJcmItwUS7GxbkEl+RSXJrLcFkux+W5AlfkSlyZq3BVrsbVuQbX5Fpcm+twXa7H9bkBN+RG3JibcFMO4GbcnFtwS27FrbkNt+V23J47cEfuxIEcxJ25C3flYO7G3bkH9+Re3Jv7cF/ux/15AA/kQTyYh/BQHsbDeQSP5FE8mkN4DI/lcTyeJ/BEnsSTeQpP5Wk8nWfwTJ7Fs3kOz+V5PJ8X8EJexIt5CS/lZbycV/BKXsWreQ2v5XW8njfwRt7Em3kLb+VtHMrbeQfv5F28m/fwXt7H+/kAH+RDfJiP8FE+xsf5BJ/kU3yaz/BZPsfn+QJf5Et8ma/wVb7G1/kG3+RbfJvv8F2+x/f5AT/kR/yYn/BTfsbP+QW/5Ff8mt/wW37H7/kDf+RP/Jm/8FcO43D+xhH8nX/wT/7Fv+XPt09QSFhEVEw8iSSRJYr4SFSJJtElhsSUWBJb4oivxJV4El8SSEJJJH6SWJJIUvGXZJJcUkhKSSWpJY2klXSSXjJIRskkmSWLZJVskl1ySE7JJbklj+SVfJJfCkhBKSSFpYgUlWJSXEpISSklpaWMlJVyUl4qSEWpJJWlilSValJdakhNqSW1pY7UlXpSXxpIQ2kkjaWJNJUAaSbNpYW0lFbSWtpIW2kn7aWDdJROEihB0lm6SFcJlm7SXXpIT+klvaWP9JV+0l8GyEAZJINliAyVYTJcRshIGSWjJUTGyFgZJ+NlgkyUSTJZpshUmSbTZYbMlFkyW+bIXJkn82WBLJRFsliWyFJZJstlhayUVbJa1shaWSfrZYNslE2yWbbIVtkmobJddshO2SW7ZY/slX2yXw7IQTkkh+WIHJVjclxOyEk5JafljJyVc3JeLshFuSSX5YpclWtyXW7ITbklt+WO3JV7cl8eyEN5JI/liTyVZ/JcXshLeSWv5Y28lXfyXj7IR/kkn+WLfJUwCZdvEiHf5Yf8lF/yW52CopKyiqqaehpJI2sU9dGoGk2jawyNqbE0tsZRX42r8TS+JtCEmkj9NLEm0aTqr8k0uabQlJpKU2saTavpNL1m0IyaSTNrFs2q2TS75tCcmktzax7Nq/k0vxbQglpIC2sRLarFtLiW0JJaSktrGS2r5bS8VtCKWkkraxWtqtW0utbQmlpLa2sdrav1tL420IbaSBtrE22qAdpMm2sLbamttLW20bbaTttrB+2onTRQg7SzdtGuGqzdtLv20J7aS3trH+2r/bS/DtCBOkgH6xAdqsN0uI7QkTpKR2uIjtGxOk7H6wSdqJN0sk7RqTpNp+sMnamzdLbO0bk6T+frAl2oi3SxLtGlukyX6wpdqat0ta7RtbpO1+sG3aibdLNu0a26TUN1u+7QnbpLd+se3av7dL8e0IN6SA/rET2qx/S4ntCTekpP6xk9q+f0vF7Qi3pJL+sVvarX9Lre0Jt6S2/rHb2r9/S+PtCH+kgf6xN9qs/0ub7Ql/pKX+sbfavv9L1+0I/6ST/rF/2qYRqu3zRCv+sP/am/9Lc5A0MjYxNTM/MskkW2KOZjUS2aRbcYFtNiWWyLY74W1+JZfEtgCS2R+VliS2JJzd+SWXJLYSktlaW2NJbW0ll6y2AZLZNltiyW1bJZdsthOS2X5bY8ltfyWX4rYAWtkBW2IlbUillxK2ElrZSVtjJW1spZeatgFa2SVbYqVtWqWXWrYTWtltW2OlbX6ll9a2ANrZE1tibW1AKsmTW3FtbSWllra2NtrZ21tw7W0TpZoAVZZ+tiXS3Yull362E9rZf1tj7W1/pZfxtgA22QDbYhNtSG2XAbYSNtlI22EBtjY22cjbcJNtEm2WSbYlNtmk23GTbTZtlsm2NzbZ7NtwW20BbZYltiS22ZLbcVttJW2WpbY2ttna23DbbRNtlm22JbbZuF2nbbYTttl+22PbbX9tl+O2AH7ZAdtiN21I7ZcTthJ+2UnbYzdtbO2Xm7YBftkl22K3bVrtl1u2E37Zbdtjt21+7ZfXtgD+2RPbYn9tSe2XN7YS/tlb22N/bW3tl7+2Af7ZN9ti/21cIs3L5ZhH23H/bTftlv72/LjR557ImnnnmeF8mL7EXxfLyoXjQvuhfDi+nF8mJ7cTxfL64Xz4vvJfASeok8Py+xl8RL6vl7ybzkXgovpZfKS+2l8dJ66bz0XgYvo5fJy+xl8bJ62bzsXg4vp5fLy+3l8fJ6+bz8XgGvoFfIK+wV8Yp6xbziXgmvpFfKK+2V8cp65bzyXgX/7z6hESlDISxG6LeMoRQWI4J9f/X9NjSir/2s+yuN77eLFnbkRw5ZtsH3+5HwPBL+VZc18/150f6oHBLUyvfPbh758VWj/eMf//jHP/7xj/9//B1wRw5P6pN6ll+CTLG+jwvxk9IhuifynigRz3z/B+I69cx42u3BAQ0AAAgDoG/WNvBjGERgmg0AAADwwAGHXgFoAAAAAAEAAAAA"); - unicode-range: U+0028, U+0029; - } - - /* Colors from: - - Wong, B. Points of view: Color blindness. - Nat Methods 8, 441 (2011). https://doi.org/10.1038/nmeth.1618 - */ - - /* If the active version has the name "dev", style it orange */ - #version_switcher_button[data-active-version-name*="dev"] { - background-color: #E69F00; - border-color: #E69F00; - color: white; - } - - /* green for `stable` */ - #version_switcher_button[data-active-version-name*="stable"] { - background-color: #009E73; - border-color: #009E73; - color: white; - } - - /* red for `old` */ - #version_switcher_button:not([data-active-version-name*="stable"]):not([data-active-version-name*="dev"]):not([data-active-version-name*="pull"]) { - background-color: #980F0F; - border-color: #980F0F; - color: white; - } - - /* Main index page overview cards */ - - .index-card .sd-card { - background: #fff; - border-radius: 0; - padding: 30px 10px 20px 10px; - margin: 10px 0px; - } - - .index-card .sd-card-header { - text-align: center; - } - - .index-card .sd-card-header .sd-card-text { - margin: 0px; - } - - .index-card .sd-card-img-top { - height: 52px; - width: 52px; - margin-left: auto; - margin-right: auto; - } - - .index-card .sd-card-header { - border: none; - background-color:white; - color: #150458 !important; - font-size: var(--pst-font-size-h5); - font-weight: bold; - padding: 2.5rem 0rem 0.5rem 0rem; - border-bottom: none !important; - } - - .index-card .sd-card-footer { - border: none; - background-color:white; - border-top: none !important; - } - - .index-card .sd-card-footer .sd-card-text{ - max-width: 220px; - margin-left: auto; - margin-right: auto; - } - - .custom-button { - background-color:#DCDCDC; - border: none; - color: #484848; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 0.9rem; - border-radius: 0.5rem; - max-width: 120px; - padding: 0.5rem 0rem; - } - - .custom-button a { - color: #484848; - } - - .custom-button p { - margin-top: 0; - margin-bottom: 0rem; - color: #484848; - } - - /* Dark theme tweaking - - Matplotlib images are in png and inverted while other output - types are assumed to be normal images. - - */ - html[data-theme=dark] img[src*='.svg']:not(.only-dark):not(.dark-light) { - filter: brightness(0.8) invert(0.82) contrast(1.2); - background: unset - } - - html[data-theme=dark] .MathJax_SVG * { - fill: var(--pst-color-text-base); - } - - /* Main index page overview cards */ - - html[data-theme=dark] .index-card .sd-card { - background-color:var(--pst-color-background); - border: none - } - - html[data-theme=dark] .sd-shadow-sm { - box-shadow: 0 .1rem 0.5rem rgba(250, 250, 250, .2) !important - } - - html[data-theme=dark] .index-card .sd-card-header { - background-color:var(--pst-color-background); - color: #150458 !important; - } - - html[data-theme=dark] .index-card .sd-card-footer { - background-color:var(--pst-color-background); - } - - /* - Hide TypeAlias Classes - */ - - dt#ColorMapSpecifier { - visibility: hidden; - } \ No newline at end of file diff --git a/docs/_templates/custom-class-template.rst b/docs/_templates/custom-class-template.rst deleted file mode 100644 index d64b80d5..00000000 --- a/docs/_templates/custom-class-template.rst +++ /dev/null @@ -1,34 +0,0 @@ -{{ fullname | escape | underline}} - -.. currentmodule:: {{ module }} - -.. autoclass:: {{ objname }} - :members: - :show-inheritance: - :inherited-members: - :special-members: __call__, __add__, __mul__ - - {% block methods %} - {% if methods %} - .. rubric:: {{ _('Methods') }} - - .. autosummary:: - :nosignatures: - {% for item in methods %} - {%- if not item.startswith('_') %} - ~{{ name }}.{{ item }} - {%- endif -%} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block attributes %} - {% if attributes %} - .. rubric:: {{ _('Attributes') }} - - .. autosummary:: - {% for item in attributes %} - ~{{ name }}.{{ item }} - {%- endfor %} - {% endif %} - {% endblock %} \ No newline at end of file diff --git a/docs/_templates/custom-module-template.rst b/docs/_templates/custom-module-template.rst deleted file mode 100644 index dd90e32e..00000000 --- a/docs/_templates/custom-module-template.rst +++ /dev/null @@ -1,66 +0,0 @@ -{{ fullname | escape | underline}} - -.. automodule:: {{ fullname }} - - {% block attributes %} - {% if attributes %} - .. rubric:: Module attributes - - .. autosummary:: - :toctree: - {% for item in attributes %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block functions %} - {% if functions %} - .. rubric:: {{ _('Functions') }} - - .. autosummary:: - :toctree: - :nosignatures: - {% for item in functions %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block classes %} - {% if classes %} - .. rubric:: {{ _('Classes') }} - - .. autosummary:: - :toctree: - :template: custom-class-template.rst - :nosignatures: - {% for item in classes %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block exceptions %} - {% if exceptions %} - .. rubric:: {{ _('Exceptions') }} - - .. autosummary:: - :toctree: - {% for item in exceptions %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - -{% block modules %} -{% if modules %} -.. autosummary:: - :toctree: - :template: custom-module-template.rst - :recursive: -{% for item in modules %} - {{ item }} -{%- endfor %} -{% endif %} -{% endblock %} \ No newline at end of file diff --git a/docs/api_reference/api_reference.md b/docs/api_reference/api_reference.md deleted file mode 100644 index b8d36650..00000000 --- a/docs/api_reference/api_reference.md +++ /dev/null @@ -1,12 +0,0 @@ -(api_reference)= -# API Reference - -```{eval-rst} -.. autosummary:: - :toctree: _autosummary - :template: custom-module-template.rst - :recursive: - - csaxs_bec - -``` \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index bdc4cb93..00000000 --- a/docs/conf.py +++ /dev/null @@ -1,67 +0,0 @@ -# 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 - - -project = "SLS cSAXS" -copyright = "2024, Paul Scherrer Institute" -author = "Paul Scherrer Institute" - -# -- General configuration --------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration - - -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - # "sphinx.ext.coverage", - "sphinx.ext.viewcode", - "sphinx.ext.napoleon", - "sphinx_toolbox.collapse", - "sphinx_copybutton", - "myst_parser", - "sphinx_design", - "sphinx_inline_tabs", -] - -myst_enable_extensions = [ - "amsmath", - "attrs_inline", - "colon_fence", - "deflist", - "dollarmath", - "fieldlist", - "html_admonition", - "html_image", - "replacements", - "smartquotes", - "strikethrough", - "substitution", - "tasklist", -] - -autosummary_generate = True # Turn on sphinx.ext.autosummary -add_module_names = False # Remove namespaces from class/method signatures -autodoc_inherit_docstrings = True # If no docstring, inherit from base class -set_type_checking_flag = True # Enable 'expensive' imports for sphinx_autodoc_typehints -autoclass_content = "both" # Include both class docstring and __init__ -autodoc_mock_imports = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - -language = "Python" - -# -- Options for HTML output ------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output - -html_theme = "pydata_sphinx_theme" -html_static_path = ["_static"] -html_css_files = ["custom.css"] -# html_logo = "./assets/csaxs_icon.png" -html_title = "SLS cSAXS" diff --git a/docs/developer/developer.md b/docs/developer/developer.md index 9eb75c11..4682bd8f 100644 --- a/docs/developer/developer.md +++ b/docs/developer/developer.md @@ -1,45 +1,16 @@ -(developer)= # Developer Information for developers and maintainers of the cSAXS beamline documentation and software. -```{toctree} ---- -maxdepth: 2 -hidden: true ---- +
-editing_docs -lamni_smear_architecture +- ![](../assets/index_contribute.svg){ width="32" height="32" .middle .card-icon } **[Editing the documentation](editing_docs.md)** + { .card-heading } -``` + Conventions for writing these Zensical docs and how changes go live on Read the Docs. +- ![](../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[LamNI smear aid architecture](lamni_smear_architecture.md)** + { .card-heading } -*** + Device/ipython-client/GUI widget interfaces for the smear rotation-center calibration aid, the min/max composite with opaque-pixel masking, and the `bw-generate-cli` regeneration pitfall. -````{grid} 2 -:gutter: 5 - -```{grid-item-card} -:link: developer.editing_docs -:link-type: ref -:img-top: /assets/index_contribute.svg -:text-align: center -:class-item: index-card - -## Editing the documentation - -Conventions for writing these MyST/Sphinx docs and how changes go live on Read the Docs. -``` - -```{grid-item-card} -:link: developer.lamni_smear_architecture -:link-type: ref -:text-align: center -:class-item: index-card - -## LamNI smear aid architecture - -Device/ipython-client/GUI widget interfaces for the smear rotation-center calibration aid, the min/max composite with opaque-pixel masking, and the `bw-generate-cli` regeneration pitfall. -``` - -```` +
diff --git a/docs/developer/editing_docs.md b/docs/developer/editing_docs.md index 7b10a2c8..0b01f050 100644 --- a/docs/developer/editing_docs.md +++ b/docs/developer/editing_docs.md @@ -1,143 +1,165 @@ -(developer.editing_docs)= - # Editing the documentation -This documentation is built with [Sphinx](https://www.sphinx-doc.org) using the -[MyST](https://myst-parser.readthedocs.io) Markdown parser, and hosted on -[Read the Docs](https://sls-csaxs.readthedocs.io). The source lives in `docs/` of -the `csaxs_bec` repository. - -:::{important} -The pages use **MyST Markdown**, which is a superset of CommonMark — *not* -Gitea/GitHub-flavored Markdown. Most plain Markdown works as expected, but the -conventions below are specific to this build and need to be followed for links, -admonitions, and navigation to render correctly. -::: +This site is built with [Zensical](https://zensical.org/) and hosted on +[Read the Docs](https://sls-csaxs.readthedocs.io). Pages live in `docs/`; +`zensical.toml` at the repository root controls navigation and rendering. ## How a change goes live -There are two ways to propose an edit: +- **In the browser.** Open a page in Gitea and click **Edit** to propose a change + through a branch and pull request (or a personal fork if required). -- **In the browser (easiest, no git required).** Open the page in Gitea and click - **Edit**. Gitea commits your change to a new branch and opens a pull request for you; - if you do not have write access it first creates a personal fork automatically. -- **Locally.** Create a branch, edit the `.md` files under `docs/`, push, and open a - pull request. +- **Locally.** Create a branch, edit the Markdown pages, push, and open a pull request. -A documentation maintainer then reviews and merges the pull request into `main`. -Merging is restricted to a few people by design — opening the pull request is all that -is expected of an author. +A documentation maintainer reviews and merges the pull request into `main`. +The `.gitea/workflows/rtd_deploy.yml` action then triggers a Read the Docs build +of `latest`. The `.readthedocs.yaml` configuration installs the documentation +requirements, builds the site, and copies it to +Read the Docs' HTML output directory. -Once merged, the `.gitea/workflows/rtd_deploy.yml` action fires on the push to `main` -and triggers a Read the Docs build of the `latest` version; the site updates a minute -or two later. Nothing needs to be built or uploaded by hand. +## Preview locally + +On Linux or macOS, run these commands from the repository root: + +```bash +python -m venv .venv-docs +source .venv-docs/bin/activate +python -m pip install -e '.[docs]' +zensical serve +``` + +Open the local URL printed by Zensical. The preview reloads automatically after +edits; stop it with ++ctrl+c++. + +To generate the static site: + +```bash +zensical build --clean +``` + +Output is written to `site/`. + +The `docs` extra in `pyproject.toml` installs Zensical and PyMdown Extensions +alongside the repository's regular dependencies. Read the Docs uses the same editable installation command. +Do not commit the generated `site/` directory. The API reference is currently +omitted. ## Anatomy of a page -Every content page starts with a **cross-reference label** followed by a single -top-level heading: +Start with one H1 heading: -```md -(user.saxs.online_integration)= +```markdown # Setup online radial integration on Jungfraujoch ``` -- The label `(user.saxs.online_integration)=` is what other pages, the section landing - pages, and the `{ref}` role link to. **Do not delete or rename it** without - updating every reference, or links silently break. -- The `# Title` is the page's H1. Sphinx needs exactly one; section pages do not - inherit a title from the file name the way the old wiki did. +Headings receive native Zensical anchors automatically. Use these anchors for +section links, or link directly to the Markdown file when referring to a whole +page. Copy a heading's permalink in the preview to get its anchor. + +For an explicit, stable anchor, attach an ID directly to the heading: + +```markdown +## Online integration { #online-integration } +``` + +Reference it with `[Online integration](page.md#online-integration)`. Use heading +anchors rather than separate HTML `` tags. ## Conventions -### Code blocks — always tag the language +### Lists and tables -Use a language on every fenced block so syntax highlighting and the copy button work: +Leave a blank line before a list or table that follows a paragraph. Indent +paragraphs, nested lists, callouts, and code blocks inside a list item by four +spaces. These rules keep procedures numbered continuously and prevent tables +and list markers from appearing as plain text. -````md +### Code blocks + +Tag fenced code blocks with `python`, `bash`, or `text` so highlighting and +copy buttons work: + +````markdown ```bash module load Python/3.11.11 pip install "pyFAI[gui]" ``` ```` -Use ```` ```text ```` for plain output (e.g. error messages) and ```` ```python ```` -for Python. +### Callouts -### Call-outs — use admonitions, not bold "Note:" +Use an admonition with its contents indented by four spaces: -Instead of `**Note:** …`, use a [colon-fence admonition](https://myst-parser.readthedocs.io/en/latest/syntax/admonitions.html): - -```md -:::{note} -Jungfraujoch currently only accepts `uint32` TIFF mask files. -::: +```markdown +!!! note + Jungfraujoch currently only accepts `uint32` TIFF mask files. ``` -Available types include `note`, `tip`, `important`, `warning`, `caution`, `danger`. +Use `note`, `tip`, `warning`, or `danger`; a custom title follows the type: -### Links and cross-references - -- **To another page in this documentation**, link by its label, not by file path: - - ```md - See {ref}`the Jungfraujoch setup guide `. - ``` - -- **External links** use ordinary Markdown: `[pyFAI](https://pyfai.readthedocs.io)`. -- **Downloadable files** (PDFs, etc.) must use the `{download}` role — a plain link - to a non-image file is *not* copied into the build and will 404: - - ```md - - {download}`SAXS standards plate (PDF) ` - ``` - -- **Images** use the `{figure}` directive (or standard `![alt](file.png)`); place the - image file next to the page that uses it: - - ````md - ```{figure} omny_shuttle.png - The OMNY sample shuttle. - ``` - ```` - -### Adding a new page - -1. Create `docs/
/.md` with a label and H1 as above. -2. Add it to the parent section's `{toctree}` so it appears in the navigation, e.g. - in `docs/user/saxs/saxs.md`: - - ````md - ```{toctree} - --- - maxdepth: 2 - hidden: true - --- - - online_integration - - ``` - ```` - - List entries by file name **without** the `.md` extension. - -## Preview locally - -```bash -cd docs -pip install -r requirements.txt # plus `pip install .` from the repo root for the API reference -make html +```markdown +!!! danger "In an emergency" + Call 3333. ``` -Open `docs/_build/html/index.html` in a browser. +### Keyboard shortcuts and tabs -## Pitfalls +Use `++ctrl+c++` for ++ctrl+c++ and `++tab++` for ++tab++. Use content tabs for +alternative workflows, such as previewing or building the site: -- **Broken cross-references are warnings, not errors.** The build still succeeds and - publishes, but the link won't work. Check the Read the Docs build log (or the local - `make html` output) for `WARNING` lines after editing. -- **Everything here is public.** The site is world-readable. Avoid credentials, license - keys, personal logins, and anything not meant for a general audience. Internal - hostnames and `/sls/...` paths are fine if you intend them to be public. -- **Placeholders.** Bracketed values such as `[p-group]` or `[ra-c-110]` are meant to be - substituted by the reader; keep them consistent across a page. +````markdown +=== "Preview" + + ```bash + zensical serve + ``` + +=== "Build" + + ```bash + zensical build --clean + ``` +```` + +Keep required procedure steps and warnings outside tabs so readers see them +regardless of which alternative they select. + +### Links, downloads, and images + +Link to Markdown source paths relative to the current page. Zensical rewrites them +to the generated HTML URLs. For example, from this page: + +```markdown +[Online integration](../user/saxs/online_integration.md) +[Angle files](../user/ptychography/flomni.md#angles-from-a-file-tomo_type-4) +[Safety checklist (PDF)](../assets/safety-at-csaxs.pdf) +``` + +PDFs and other assets under `docs/` are copied automatically. Place images next to +the page that uses them and use ordinary Markdown: + +```markdown +![The OMNY sample shuttle](omny_shuttle.png) +``` + +Use `[label](https://example.org)` for external links. Put placeholder values such +as `` inside backticks so they are displayed as text. + +### Adding a page + +1. Create `docs/
/.md` with an H1. +2. Add the page to `project.nav` in `zensical.toml`. +3. Add a link from the relevant section overview where useful. +4. Build and check the resulting page and its links. + +The `docs/plans/` directory contains working implementation plans and is excluded +from the published site. The P-touch implementation plan is also excluded from publication. Navigation entries alone do not exclude other pages from publication. + +## Before opening a pull request + +- [ ] Check the build output. +- [ ] Click through changed links; a successful build alone does not prove every external link works. +- [ ] Confirm that callouts, images, tables, and downloads render correctly. + +The documentation is public. Keep credentials, license keys, and private personal +information out of pages and downloadable files. diff --git a/docs/developer/lamni_smear_architecture.md b/docs/developer/lamni_smear_architecture.md index 2a5b22dc..2304a007 100644 --- a/docs/developer/lamni_smear_architecture.md +++ b/docs/developer/lamni_smear_architecture.md @@ -1,9 +1,7 @@ -(developer.lamni_smear_architecture)= - # LamNI smear rotation-center aid: architecture notes The experimental continuous-rotation "smear" calibration aid (see -{ref}`the user-facing description `) touches all +[the user-facing description](../user/ptychography/lamni.md)) touches all three layers of a typical BEC GUI feature — a **device**, an **ipython-client plugin**, and a **GUI widget** — running as three separate processes talking over BEC's Redis-backed message bus. It's a useful worked example for how @@ -27,15 +25,17 @@ ipython client (XrayEyeAlign, LamNI) ``` - **`IDSCamera`** (`csaxs_bec/devices/ids_cameras/ids_camera.py`, simulated - counterpart `csaxs_bec/devices/sim/sim_cameras.py`) runs in the device - server process and owns the actual camera hardware (or its simulation). + counterpart `csaxs_bec/devices/sim/sim_cameras.py`) runs in the device + server process and owns the actual camera hardware (or its simulation). + - **`XrayEyeAlign`** / **`LamNI`** (`csaxs_bec/bec_ipython_client/plugins/LamNI/`) - run in the operator's ipython client process and orchestrate the - calibration procedure — rotating the sample, grabbing frames, driving the - GUI. + run in the operator's ipython client process and orchestrate the + calibration procedure — rotating the sample, grabbing frames, driving the + GUI. + - **`XRayEye`** (`csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py`) is a - Qt widget running in its own GUI server process, displaying the live image - and collecting the operator's click. + Qt widget running in its own GUI server process, displaying the live image + and collecting the operator's click. Devices and widgets each expose a `USER_ACCESS` list of methods callable remotely; the ipython client reaches them as `dev.cam_xeye.(...)` and @@ -48,13 +48,14 @@ calls. `IDSCamera` exposes two `PreviewSignal` components: - **`image`** — the live-acquisition channel. A background thread - (`_live_mode_loop`) continuously grabs frames and `put()`s them here at - ~5 Hz while `live_mode_enabled` is `True`. Configured per-device with - `num_rotation_90`/`transpose` (e.g. `num_rotation_90=3` for `cam_xeye`), - applied automatically inside `PreviewSignal.put()`. + (`_live_mode_loop`) continuously grabs frames and `put()`s them here at + ~5 Hz while `live_mode_enabled` is `True`. Configured per-device with + `num_rotation_90`/`transpose` (e.g. `num_rotation_90=3` for `cam_xeye`), + applied automatically inside `PreviewSignal.put()`. + - **`smear_preview`** — a second, independent channel, added for this - feature, with **no** rotation/transpose configured. Nothing else writes to - it, so publishing here never races with the live thread. + feature, with **no** rotation/transpose configured. Nothing else writes to + it, so publishing here never races with the live thread. `PreviewSignal` (and every `BECMessageSignal` subclass) has `rpc_access` hardcoded off, so it is **not** reachable as a plain attribute from client @@ -64,16 +65,18 @@ method that does the `.put()` server-side, where the signal *is* a normal ophyd attribute: - `get_last_image()` — read side; returns `self.image.get().data`, i.e. - already display-oriented (rotation/transpose already applied by whichever - `.put()` call stored it). + already display-oriented (rotation/transpose already applied by whichever + `.put()` call stored it). + - `push_preview_image(data)` — write side for `image`. Since data built from - `get_last_image()` frames has already been transformed once, this method - undoes the transform first so `self.image.put()`'s own transform doesn't - apply it a second time (compensation is reverse-order: transpose first, - then rotate by `-num_rotation_90`). + `get_last_image()` frames has already been transformed once, this method + undoes the transform first so `self.image.put()`'s own transform doesn't + apply it a second time (compensation is reverse-order: transpose first, + then rotate by `-num_rotation_90`). + - `push_smear_preview(data)` — write side for `smear_preview`. No - compensation needed or applied, since that channel has no transform - configured. + compensation needed or applied, since that channel has no transform + configured. **Why two channels, not one:** the first working version pushed composites through `push_preview_image` (the `image` channel), which meant briefly @@ -118,58 +121,61 @@ lands after the sweep but before the click completes. stepping the motor: 1. `scans.mv(dev.lsamrot, target)` (the file's `mv()` wrapper, sibling of the - existing blocking `umv()`) issues the rotation **non-blocking** — it - returns a `ScanReport` immediately rather than waiting for the move to - finish. + existing blocking `umv()`) issues the rotation **non-blocking** — it + returns a `ScanReport` immediately rather than waiting for the move to + finish. + 2. A plain loop polls `report.status` (exactly what `ScanReport.wait()` does - internally) and, while it isn't `"COMPLETED"`, grabs a frame via - `get_last_image()` and folds it into a running composite — - all single-threaded, since the rotation is progressing concurrently on - the server regardless of what the client does between polls. The - composite is `np.minimum` for `projection="min"` (default; absorption - contrast, dark features on a bright background) or `np.maximum` for - `projection="max"` (bright features on a dark background). A - max-projection is useless for absorption: the bright background passes - every pixel at some point during the rotation and washes the dark - features out. Taking the minimum is equivalent to inverting the frames, - taking the maximum and inverting back, without needing the camera's - full-scale value. The accumulation lives in `SmearComposite` - (`x_ray_eye_align.py`). For `"min"` it also skips opaque pixels: in each - frame, pixels darker than `opaque_level` (default 0.25) times the frame's - 99th-percentile value count as opaque and are left out, so the sample - holder rotating through the view does not black out every pixel it ever - covers. It keeps the plain minimum alongside the masked one and falls - back to it for pixels that were opaque in every frame; `opaque_level=0` - is the plain minimum. Both values are validated up front (`ValueError` - before any motion) and stored as `projection`/`opaque_level` attributes - in the calibration HDF5. + internally) and, while it isn't `"COMPLETED"`, grabs a frame via + `get_last_image()` and folds it into a running composite — + all single-threaded, since the rotation is progressing concurrently on + the server regardless of what the client does between polls. The + composite is `np.minimum` for `projection="min"` (default; absorption + contrast, dark features on a bright background) or `np.maximum` for + `projection="max"` (bright features on a dark background). A + max-projection is useless for absorption: the bright background passes + every pixel at some point during the rotation and washes the dark + features out. Taking the minimum is equivalent to inverting the frames, + taking the maximum and inverting back, without needing the camera's + full-scale value. The accumulation lives in `SmearComposite` + (`x_ray_eye_align.py`). For `"min"` it also skips opaque pixels: in each + frame, pixels darker than `opaque_level` (default 0.25) times the frame's + 99th-percentile value count as opaque and are left out, so the sample + holder rotating through the view does not black out every pixel it ever + covers. It keeps the plain minimum alongside the masked one and falls + back to it for pixels that were opaque in every frame; `opaque_level=0` + is the plain minimum. Both values are validated up front (`ValueError` + before any motion) and stored as `projection`/`opaque_level` attributes + in the calibration HDF5. + 3. Every `display_update_interval_s`, the current composite is pushed to - `smear_preview` so the operator watches it grow; off-axis features trace - arcs as the sample turns, and the common center of curvature of those - arcs is the rotation axis. + `smear_preview` so the operator watches it grow; off-axis features trace + arcs as the sample turns, and the common center of curvature of those + arcs is the rotation axis. + 4. Once the move completes, a final push leaves the finished composite - displayed, the shutter is closed (unless `keep_shutter_open`), and the - operator submits a click — reusing the exact same `_collect_click()` / - `_compute_shift_to_fzp()` / `_apply_rotation_center_shift()` machinery and - cumulative-shift accounting as the production `..._extended()` path. + displayed, the shutter is closed (unless `keep_shutter_open`), and the + operator submits a click — reusing the exact same `_collect_click()` / + `_compute_shift_to_fzp()` / `_apply_rotation_center_shift()` machinery and + cumulative-shift accounting as the production `..._extended()` path. ## Pitfall: regenerate the RPC client stub after changing `USER_ACCESS` -:::{important} -Whenever you add or rename a method in a plugin widget's `USER_ACCESS` list -(e.g. `XRayEye.USER_ACCESS` in `x_ray_eye.py`), you must run: +!!! warning "Important" + Whenever you add or rename a method in a plugin widget's `USER_ACCESS` list + (e.g. `XRayEye.USER_ACCESS` in `x_ray_eye.py`), you must run: -```bash -bw-generate-cli --target csaxs_bec -``` + ```bash + bw-generate-cli --target csaxs_bec + ``` + + and commit the resulting changes to `csaxs_bec/bec_widgets/widgets/client.py` + (and `designer_plugins.py`). Skipping this step does **not** raise an error + at import time or widget-construction time — it fails much later, and + confusingly, as an `AttributeError` raised from deep inside + `bec_widgets`'s RPC plumbing, even after fully restarting both the ipython + client and the GUI server process. -and commit the resulting changes to `csaxs_bec/bec_widgets/widgets/client.py` -(and `designer_plugins.py`). Skipping this step does **not** raise an error -at import time or widget-construction time — it fails much later, and -confusingly, as an `AttributeError` raised from deep inside -`bec_widgets`'s RPC plumbing, even after fully restarting both the ipython -client and the GUI server process. -::: The reason: `csaxs_bec/bec_widgets/widgets/client.py` is a **checked-in generated file** containing one RPC stub class per plugin widget, mirroring diff --git a/docs/developer/panda_box_free_running_data_schema.md b/docs/developer/panda_box_free_running_data_schema.md index edf4d248..01cbeed1 100644 --- a/docs/developer/panda_box_free_running_data_schema.md +++ b/docs/developer/panda_box_free_running_data_schema.md @@ -42,7 +42,8 @@ explicit "scan point index" field is captured by the PandA itself. ## What this does *not* include - No on-the-fly or post-scan computation of Mean/Min/Max/stdev from the raw - samples — the raw stream is the complete record; deriving the previous - per-point statistics from it is a separate future task. + samples — the raw stream is the complete record; deriving the previous + per-point statistics from it is a separate future task. + - No changes to how Mode A (legacy) data is written — this schema only - applies when `raw_stream_mode: true`. + applies when `raw_stream_mode: true`. diff --git a/docs/developer/panda_box_free_running_setup.md b/docs/developer/panda_box_free_running_setup.md index 111caa21..8b54b474 100644 --- a/docs/developer/panda_box_free_running_setup.md +++ b/docs/developer/panda_box_free_running_setup.md @@ -58,63 +58,68 @@ The blocks already configured and aliased today, for reference / so this layout can be restored unambiguously (see `ptycho_flomni.yaml`): - `FMC_IN.VAL1`/`FMC_IN.VAL2` (capacitive sensor analog inputs) — `Min`, - `Max`, `Mean` capture fields. + `Max`, `Mean` capture fields. + - `INENC1`-`INENC4.VAL` (position-capture encoder inputs) — `Min`, `Max`, - `Mean` capture fields. + `Mean` capture fields. + - `PCAP.GATE_DURATION` — `Value`. - PCAP gate is pulsed once per point / sub-frame by the existing external - trigger electronics (unchanged by this work). + trigger electronics (unchanged by this work). ### Mode B (new) — free-running raw capture - **Gate-bit input**: the detector-trigger signal, wired into `TTLIN1` (see - "Physical wiring" above). `TTLIN1.VAL` is captured into **`PCAP.BITS0`, - bit offset 0** — confirmed 2026-09-15 against the omny-panda hardware via: + "Physical wiring" above). `TTLIN1.VAL` is captured into **`PCAP.BITS0`, + bit offset 0** — confirmed 2026-09-15 against the omny-panda hardware via: - ``` - TTLIN1.VAL.CAPTURE_WORD? -> OK =PCAP.BITS0 - TTLIN1.VAL.OFFSET? -> OK =0 - ``` + ```text + TTLIN1.VAL.CAPTURE_WORD? -> OK =PCAP.BITS0 + TTLIN1.VAL.OFFSET? -> OK =0 + ``` + + `PCAP.BITS0` is a shared 32-bit capture word — other captured `bit_out` + signals (several TTLIN/LVDSIN/encoder bits are also flagged for capture on + this layout) may occupy other bit positions of the same word, so the raw + `PCAP.BITS0.Value` is **not** itself a clean 0/1. `PandaBoxOMNY` masks it + down to bit 0 in `raw_stream_mode` (see `_GATE_BIT_OFFSET` in + `panda_box_omny.py`) before publishing it as `gate_detector_active` — treat + that masking as required, not optional, unless it's confirmed nothing else + shares `BITS0`. Re-run the query above (read-only, safe against live + hardware) if the PandA layout is ever rebuilt, since bit assignment is + fixed by the FPGA build and not guaranteed stable across rebuilds. - `PCAP.BITS0` is a shared 32-bit capture word — other captured `bit_out` - signals (several TTLIN/LVDSIN/encoder bits are also flagged for capture on - this layout) may occupy other bit positions of the same word, so the raw - `PCAP.BITS0.Value` is **not** itself a clean 0/1. `PandaBoxOMNY` masks it - down to bit 0 in `raw_stream_mode` (see `_GATE_BIT_OFFSET` in - `panda_box_omny.py`) before publishing it as `gate_detector_active` — treat - that masking as required, not optional, unless it's confirmed nothing else - shares `BITS0`. Re-run the query above (read-only, safe against live - hardware) if the PandA layout is ever rebuilt, since bit assignment is - fixed by the FPGA build and not guaranteed stable across rebuilds. - **Frame counter**: `COUNTER1`, triggered off `TTLIN1.VAL`'s **falling - edge** (see layout below) — i.e. it increments once per *completed* - detector exposure, not once per PCAP capture tick as originally guessed - here. Captured with `CAPTURE=Value`; this is both the data-completeness - signal and the completion-detection signal (`frame_counter` in - `signal_alias`, see below, and "Completion check" in the mode-comparison - table above) — once the last expected exposure's trigger pulse has fallen, - `COUNTER1.OUT` reaches `num_points * frames_per_trigger` exactly. + edge** (see layout below) — i.e. it increments once per *completed* + detector exposure, not once per PCAP capture tick as originally guessed + here. Captured with `CAPTURE=Value`; this is both the data-completeness + signal and the completion-detection signal (`frame_counter` in + `signal_alias`, see below, and "Completion check" in the mode-comparison + table above) — once the last expected exposure's trigger pulse has fallen, + `COUNTER1.OUT` reaches `num_points * frames_per_trigger` exactly. + - **Raw analog/position capture**: `FMC_IN.VAL1`, `FMC_IN.VAL2` and all four - `INENC1`-`4.VAL` are switched from aggregate capture to `CAPTURE=Value` - on this layout (confirmed 2026-09-15) — i.e. every analog/encoder channel - goes raw together, not a subset. This means the current PandA layout - cannot simultaneously produce Mode A's aggregate (Min/Max/Mean) data — see - "Open question" below. + `INENC1`-`4.VAL` are switched from aggregate capture to `CAPTURE=Value` + on this layout (confirmed 2026-09-15) — i.e. every analog/encoder channel + goes raw together, not a subset. This means the current PandA layout + cannot simultaneously produce Mode A's aggregate (Min/Max/Mean) data — see + "Open question" below. + - **Continuous gate/arm**: `CLOCK1`, enabled by the constant `ONE`, drives - `PCAP`'s `gate` and `trig` inputs continuously (instead of the external - per-point trigger used in Mode A), so PCAP free-runs at `CLOCK1`'s - configured rate. Testing started at **100 Hz** on 2026-09-15 and will be - ramped up; there is no PandA-side layout change needed to change the - rate, only `CLOCK1`'s period. + `PCAP`'s `gate` and `trig` inputs continuously (instead of the external + per-point trigger used in Mode A), so PCAP free-runs at `CLOCK1`'s + configured rate. Testing started at **100 Hz** on 2026-09-15 and will be + ramped up; there is no PandA-side layout change needed to change the + rate, only `CLOCK1`'s period. - ``` - TTLIN1 (TTL input 1, detector trigger) - ├──▶ COUNTER1.trig, falling edge (Up/Down pulse counter) ──▶ COUNTER1.OUT = frame_counter (CAPTURE=Value) - │ = completion signal too: reaches num_points * frames_per_trigger when the last exposure finishes - └──▶ captured into PCAP.BITS0 bit 0 ──▶ masked in software = gate_detector_active + ```text + TTLIN1 (TTL input 1, detector trigger) + ├──▶ COUNTER1.trig, falling edge (Up/Down pulse counter) ──▶ COUNTER1.OUT = frame_counter (CAPTURE=Value) + │ = completion signal too: reaches num_points * frames_per_trigger when the last exposure finishes + └──▶ captured into PCAP.BITS0 bit 0 ──▶ masked in software = gate_detector_active - CLOCK1 (enabled by constant ONE) ──▶ PCAP.gate, PCAP.trig (continuous arm/capture) - ``` + CLOCK1 (enabled by constant ONE) ──▶ PCAP.gate, PCAP.trig (continuous arm/capture) + ``` ### Possible variant: gate continuous capture by exposure-active (proposed, not implemented) @@ -124,7 +129,7 @@ free-runs continuously at `CLOCK1`'s rate regardless of whether the detector is actually exposing -- including idle/dead time between exposures. The proposal is to split the two roles so they're driven by different sources: -``` +```text CLOCK1 (enabled by constant ONE) ──▶ PCAP.trig (sample-rate clock, unchanged) TTLIN1.VAL (detector-trigger / exposure-active) ──▶ PCAP.gate (only capture while exposing) ``` @@ -139,15 +144,17 @@ This should be a pure PandA-layout change -- no `ptycho_flomni.yaml` or BEC signal names exist or what they mean: - `TTLIN1.VAL` is already proven usable as a `PCAP.gate` source -- it's what - Mode A already uses (`PCAP.GATE`/`PCAP.TRIG` = `TTLIN1.VAL` there). + Mode A already uses (`PCAP.GATE`/`PCAP.TRIG` = `TTLIN1.VAL` there). + - `frame_counter` (`COUNTER1`, clocked directly off `TTLIN1.VAL`'s falling - edge, not off `PCAP`) is unaffected -- still counts every completed - exposure and still works as the completion/grouping signal exactly as - today. + edge, not off `PCAP`) is unaffected -- still counts every completed + exposure and still works as the completion/grouping signal exactly as + today. + - `gate_detector_active` (`PCAP.BITS0` bit 0, also `TTLIN1.VAL`) would become - trivially always `1` on every captured row, since a row is only ever - captured while that signal is high -- harmless, since `frame_counter` - already does the actual per-exposure grouping, not the gate bit. + trivially always `1` on every captured row, since a row is only ever + captured while that signal is high -- harmless, since `frame_counter` + already does the actual per-exposure grouping, not the gate bit. Motivation: at 20 kHz continuous (current, ungated behavior), the free-running raw stream produces roughly 67-86 MB/minute (~4-5 GB/hour) of @@ -174,7 +181,7 @@ repo under `csaxs_bec/devices/panda_box/layouts/` — `omny.ini` (Mode A) and design named `OMNY`/`omny_freerun` respectively (switch the PandA's active Design first, then save): -``` +```text python ophyd_devices/devices/panda_box/utility_scripts.py \ --host omny-panda.psi.ch --save-layout csaxs_bec/devices/panda_box/layouts/omny.ini diff --git a/docs/index.md b/docs/index.md index 85dd5352..5edf0e7b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,51 +1,17 @@ -:html_theme.sidebar_secondary.remove: - # cSAXS documentation Welcome to the cSAXS documentation. This documentation is divided into two main sections: the user guide and the developer guide. The user guide is intended for users of the cSAXS beamline, while the developer guide is intended for developers of the cSAXS beamline. -

+
-````{grid} 2 -:gutter: 5 +- ![](assets/index_user_guide.svg){ width="32" height="32" .middle .card-icon } **[User guide](user/user.md)** + { .card-heading } -```{grid-item-card} -:link: introduction -:link-type: ref -:img-top: /assets/index_user_guide.svg -:text-align: center -:class-item: index-card + Information for users of the cSAXS beamline. -## User guide +- ![](assets/index_contribute.svg){ width="32" height="32" .middle .card-icon } **[Developer guide](developer/developer.md)** + { .card-heading } -Information for users of the cSAXS beamline. -``` + Information for developers of the cSAXS beamline. -```{grid-item-card} -:link: developer -:link-type: ref -:img-top: /assets/index_contribute.svg -:text-align: center -:class-item: index-card - -## Developer guide - -Information for developers of the cSAXS beamline. -``` - -```` - - -```{toctree} ---- -numbered: true -maxdepth: 2 -hidden: true ---- - -introduction/introduction -safety/safety -user/user -developer/developer -api_reference/api_reference -``` +
diff --git a/docs/introduction/introduction.md b/docs/introduction/introduction.md index 5ebeb808..d5b34190 100644 --- a/docs/introduction/introduction.md +++ b/docs/introduction/introduction.md @@ -1,4 +1,3 @@ -(introduction)= # The cSAXS Beamline ## Overview diff --git a/docs/log.txt b/docs/log.txt deleted file mode 100644 index c01452a4..00000000 --- a/docs/log.txt +++ /dev/null @@ -1,470 +0,0 @@ -docstring of bec_widgets.utils.bec_table.BECTable.Shadow.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.utils.bec_table.BECTable.Shadow.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.utils.bec_table.BECTable.Shape.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.utils.bec_table.BECTable.Shape.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.examples.general_app.general_app.BECGeneralApp, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.examples.general_app.general_app.BECGeneralApp, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.examples.jupyter_console.jupyter_console_window.JupyterConsoleWindow, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.examples.jupyter_console.jupyter_console_window.JupyterConsoleWindow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.axes:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.axes, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.change_layout:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.change_layout, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.change_theme:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.change_theme, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.clear_all:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.clear_all, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.image:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.image, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.motor_map:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.motor_map, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.plot:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.plot, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.widget_list:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.widget_list, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECFigure.widgets:1: WARNING: duplicate object description of bec_widgets.cli.client.BECFigure.widgets, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECFigure, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.get_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.get_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_auto_downsample:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_auto_downsample, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_autorange:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_autorange, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_autorange_mode:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_autorange_mode, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_color_map:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_color_map, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_fft:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_fft, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_log:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_log, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_monitor:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_monitor, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_opacity:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_opacity, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_rotation:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_rotation, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_transpose:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_transpose, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageItem.set_vrange:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageItem.set_vrange, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageItem, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.add_custom_image:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.add_custom_image, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.add_image_by_config:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.add_image_by_config, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.image:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.image, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.images:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.images, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.lock_aspect_ratio:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.lock_aspect_ratio, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_autorange:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_autorange, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_autorange_mode:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_autorange_mode, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_color_map:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_color_map, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_fft:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_fft, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_grid:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_grid, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_image_properties:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_image_properties, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_log:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_log, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_monitor:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_monitor, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_processing:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_processing, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_rotation:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_rotation, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_title:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_title, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_transpose:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_transpose, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_vrange:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_vrange, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_x_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_x_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_x_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_x_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_x_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_x_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_y_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_y_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_y_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_y_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageShow.set_y_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageShow.set_y_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageShow, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.image:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.image, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.lock_aspect_ratio:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.lock_aspect_ratio, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_fft:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_fft, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_grid:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_grid, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_log:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_log, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_rotation:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_rotation, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_title:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_title, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_transpose:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_transpose, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_vrange:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_vrange, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_x_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_x_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_x_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_x_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_x_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_x_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_y_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_y_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_y_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_y_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECImageWidget.set_y_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECImageWidget.set_y_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.change_motors:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.change_motors, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.get_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.get_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.reset_history:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.reset_history, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.set_background_value:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.set_background_value, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.set_max_points:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.set_max_points, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.set_num_dim_points:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.set_num_dim_points, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.set_precision:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.set_precision, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMap.set_scatter_size:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMap.set_scatter_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.change_motors:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.change_motors, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.get_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.get_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.reset_history:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.reset_history, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.set_background_value:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.set_background_value, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.set_max_points:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.set_max_points, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.set_num_dim_points:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.set_num_dim_points, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.set_precision:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.set_precision, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECMotorMapWidget.set_scatter_size:1: WARNING: duplicate object description of bec_widgets.cli.client.BECMotorMapWidget.set_scatter_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.lock_aspect_ratio:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.lock_aspect_ratio, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_grid:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_grid, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_legend_label_size:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_legend_label_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_title:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_title, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_x_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_x_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_x_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_x_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_x_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_x_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_y_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_y_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_y_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_y_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECPlotBase.set_y_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECPlotBase.set_y_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECPlotBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECQueue:1: WARNING: duplicate object description of bec_widgets.cli.client.BECQueue, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECQueue, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECQueue.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECQueue, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECStatusBox:1: WARNING: duplicate object description of bec_widgets.cli.client.BECStatusBox, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECStatusBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECStatusBox.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECStatusBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.add_dap:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.add_dap, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.clear_all:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.clear_all, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.curves:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.curves, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.get_all_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.get_all_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.get_curve:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.get_curve, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.get_dap_params:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.get_dap_params, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.lock_aspect_ratio:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.lock_aspect_ratio, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.plot:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.plot, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.remove_curve:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.remove_curve, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.scan_history:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.scan_history, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_colormap:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_colormap, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_grid:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_grid, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_legend_label_size:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_legend_label_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_title:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_title, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_x:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_x, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_x_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_x_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_x_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_x_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_x_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_x_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_y_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_y_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_y_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_y_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveform.set_y_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveform.set_y_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveform, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.add_dap:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.add_dap, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.curves:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.curves, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.export:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.export, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.export_to_matplotlib:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.export_to_matplotlib, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.get_all_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.get_all_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.get_dap_params:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.get_dap_params, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.lock_aspect_ratio:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.lock_aspect_ratio, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.plot:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.plot, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.remove_curve:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.remove_curve, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.scan_history:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.scan_history, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_auto_range:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_auto_range, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_grid:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_grid, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_legend_label_size:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_legend_label_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_title:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_title, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_x:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_x, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_x_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_x_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_x_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_x_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_x_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_x_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_y_label:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_y_label, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_y_lim:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_y_lim, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECWaveformWidget.set_y_scale:1: WARNING: duplicate object description of bec_widgets.cli.client.BECWaveformWidget.set_y_scale, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.DeviceBox:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceBox, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceBox.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.DeviceComboBox:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceComboBox, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceComboBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceComboBox.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceComboBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.DeviceInputBase:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceInputBase, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceInputBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceInputBase.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceInputBase, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.DeviceLineEdit:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceLineEdit, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceLineEdit, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.DeviceLineEdit.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.DeviceLineEdit, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.reset_connection:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.reset_connection, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_background:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_background, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_color:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_color, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_line_width:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_line_width, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_min_max_values:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_min_max_values, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_start_angle:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_start_angle, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_update:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_update, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Ring.set_value:1: WARNING: duplicate object description of bec_widgets.cli.client.Ring.set_value, other instance in api_reference/_autosummary/bec_widgets.cli.client.Ring, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.add_ring:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.add_ring, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.enable_auto_updates:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.enable_auto_updates, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.remove_ring:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.remove_ring, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.reset_diameter:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.reset_diameter, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.rings:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.rings, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_colors_directly:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_colors_directly, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_colors_from_map:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_colors_from_map, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_diameter:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_diameter, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_gap:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_gap, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_line_widths:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_line_widths, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_min_max_values:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_min_max_values, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_number_of_bars:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_number_of_bars, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_precision:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_precision, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.set_value:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.set_value, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.RingProgressBar.update_config:1: WARNING: duplicate object description of bec_widgets.cli.client.RingProgressBar.update_config, other instance in api_reference/_autosummary/bec_widgets.cli.client.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.ScanControl:1: WARNING: duplicate object description of bec_widgets.cli.client.ScanControl, other instance in api_reference/_autosummary/bec_widgets.cli.client.ScanControl, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.ScanControl.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.ScanControl, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.StopButton:1: WARNING: duplicate object description of bec_widgets.cli.client.StopButton, other instance in api_reference/_autosummary/bec_widgets.cli.client.StopButton, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.StopButton.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.StopButton, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.TextBox:1: WARNING: duplicate object description of bec_widgets.cli.client.TextBox, other instance in api_reference/_autosummary/bec_widgets.cli.client.TextBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.TextBox.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.TextBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.TextBox.set_color:1: WARNING: duplicate object description of bec_widgets.cli.client.TextBox.set_color, other instance in api_reference/_autosummary/bec_widgets.cli.client.TextBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.TextBox.set_font_size:1: WARNING: duplicate object description of bec_widgets.cli.client.TextBox.set_font_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.TextBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.TextBox.set_text:1: WARNING: duplicate object description of bec_widgets.cli.client.TextBox.set_text, other instance in api_reference/_autosummary/bec_widgets.cli.client.TextBox, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.VSCodeEditor:1: WARNING: duplicate object description of bec_widgets.cli.client.VSCodeEditor, other instance in api_reference/_autosummary/bec_widgets.cli.client.VSCodeEditor, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.VSCodeEditor.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.VSCodeEditor, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.WebsiteWidget:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.WebsiteWidget.back:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget.back, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.WebsiteWidget.forward:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget.forward, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.WebsiteWidget.get_url:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget.get_url, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.WebsiteWidget.reload:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget.reload, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.WebsiteWidget.set_url:1: WARNING: duplicate object description of bec_widgets.cli.client.WebsiteWidget.set_url, other instance in api_reference/_autosummary/bec_widgets.cli.client.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.__add__:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.__add__, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.__mul__:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.__mul__, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.capitalize:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.capitalize, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.casefold:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.casefold, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.center:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.center, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.count:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.count, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.encode:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.encode, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.endswith:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.endswith, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.expandtabs:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.expandtabs, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.find:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.find, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.format:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.format, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.format_map:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.format_map, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.index:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.index, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isalnum:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isalnum, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isalpha:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isalpha, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isascii:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isascii, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isdecimal:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isdecimal, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isdigit:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isdigit, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isidentifier:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isidentifier, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.islower:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.islower, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isnumeric:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isnumeric, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isprintable:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isprintable, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isspace:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isspace, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.istitle:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.istitle, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.isupper:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.isupper, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.join:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.join, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.ljust:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.ljust, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.lower:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.lower, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.lstrip:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.lstrip, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.maketrans:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.maketrans, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.partition:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.partition, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.removeprefix:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.removeprefix, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.removesuffix:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.removesuffix, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.replace:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.replace, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.rfind:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.rfind, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.rindex:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.rindex, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.rjust:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.rjust, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.rpartition:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.rpartition, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.rsplit:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.rsplit, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.rstrip:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.rstrip, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.split:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.split, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.splitlines:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.splitlines, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.startswith:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.startswith, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.strip:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.strip, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.swapcase:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.swapcase, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.title:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.title, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.translate:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.translate, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.upper:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.upper, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.Widgets.zfill:1: WARNING: duplicate object description of bec_widgets.cli.client.Widgets.zfill, other instance in api_reference/_autosummary/bec_widgets.cli.client.Widgets, use :no-index: for one of them -docstring of bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu.TicTacToeDialog.DialogCode.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu.TicTacToeDialog.DialogCode.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu.TicTacToeDialog, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu.TicTacToeDialog, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.qt_utils.error_popups.ExampleWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.qt_utils.error_popups.ExampleWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QDialog.DialogCode:1: WARNING: duplicate object description of PySide6.QtWidgets.QDialog.DialogCode, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu.TicTacToeDialog, use :no-index: for one of them -docstring of bec_widgets.qt_utils.settings_dialog.SettingsDialog.DialogCode.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.qt_utils.settings_dialog.SettingsDialog.DialogCode.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.qt_utils.settings_dialog.SettingWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.qt_utils.settings_dialog.SettingWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.qt_utils.settings_dialog.SettingsDialog, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.qt_utils.settings_dialog.SettingsDialog, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoe.TicTacToe, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoe.TicTacToe, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.stop_button.stop_button.StopButton, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.stop_button.stop_button.StopButton, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QFrame.Shadow:1: WARNING: duplicate object description of PySide6.QtWidgets.QFrame.Shadow, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -docstring of bec_widgets.widgets.text_box.text_box.TextBox.Shadow.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.widgets.text_box.text_box.TextBox.Shadow.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QFrame.Shape:1: WARNING: duplicate object description of PySide6.QtWidgets.QFrame.Shape, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -docstring of bec_widgets.widgets.text_box.text_box.TextBox.Shape.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.widgets.text_box.text_box.TextBox.Shape.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractScrollArea.SizeAdjustPolicy:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractScrollArea.SizeAdjustPolicy, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QFrame.StyleMask:1: WARNING: duplicate object description of PySide6.QtWidgets.QFrame.StyleMask, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.text_box.text_box.TextBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.text_box.text_box.TextBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.toggle.toggle.ToggleSwitch, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.toggle.toggle.ToggleSwitch, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.CurveSettings, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.CurveSettings, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.RemoveButton, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.RemoveButton, use :no-index: for one of them -docstring of bec_widgets.widgets.waveform.waveform_popups.dap_summary_dialog.dap_summary_dialog.FitSummaryWidget.DialogCode.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.widgets.waveform.waveform_popups.dap_summary_dialog.dap_summary_dialog.FitSummaryWidget.DialogCode.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.StyleComboBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.StyleComboBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.dap_summary_dialog.dap_summary_dialog.FitSummaryWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.dap_summary_dialog.dap_summary_dialog.FitSummaryWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_widget.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_widget.BECWaveformWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/developer/developer.md:6: WARNING: toctree contains reference to nonexisting document 'developer/api_reference/api_reference' -/Users/wakonig_k/software/work/bec-widgets/docs/index.md:60: WARNING: 'toctree': Invalid option value for 'numbered': true: invalid literal for int() with base 10: 'true' [myst.directive_option] -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client:1: WARNING: duplicate object description of bec_widgets.cli.client, other instance in api_reference/_autosummary/bec_widgets.cli.client, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.dap_params:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.dap_params, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.get_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.get_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_color:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_color, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_color_map_z:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_color_map_z, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_data:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_data, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_pen_style:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_pen_style, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_pen_width:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_pen_width, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_symbol:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_symbol, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_symbol_color:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_symbol_color, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECCurve.set_symbol_size:1: WARNING: duplicate object description of bec_widgets.cli.client.BECCurve.set_symbol_size, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECCurve, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.add_widget:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.add_widget, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.attach:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.attach, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.detach:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.detach, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.get_widgets_positions:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.get_widgets_positions, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.hide_title_bar:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.hide_title_bar, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.list_eligible_widgets:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.list_eligible_widgets, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.move_widget:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.move_widget, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.remove:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.remove, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.remove_widget:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.remove_widget, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.set_title:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.set_title, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.show_title_bar:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.show_title_bar, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDock.widget_list:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDock.widget_list, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDock, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.add_dock:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.add_dock, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.attach_all:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.attach_all, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.clear_all:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.clear_all, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.BECGuiClientMixin.close:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.close, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.detach_dock:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.detach_dock, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.RPCBase.gui_is_alive:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.gui_is_alive, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.panels:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.panels, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.remove_dock:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.remove_dock, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.restore_state:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.restore_state, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.save_state:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.save_state, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.selected_device:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.selected_device, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client_utils.BECGuiClientMixin.show:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.show, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/client.py:docstring of bec_widgets.cli.client.BECDockArea.temp_areas:1: WARNING: duplicate object description of bec_widgets.cli.client.BECDockArea.temp_areas, other instance in api_reference/_autosummary/bec_widgets.cli.client.BECDockArea, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.qt_utils.toolbar.ModularToolBar, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.qt_utils.toolbar.ModularToolBar, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.image.image_widget.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.image.image_widget.BECImageWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.jupyter_console.jupyter_console.BECJupyterConsole, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.jupyter_console.jupyter_console.BECJupyterConsole, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_settings.MotorMapSettings, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_settings.MotorMapSettings, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.motor_map.motor_map_widget.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.motor_map.motor_map_widget.BECMotorMapWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoe.TicTacToe, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.examples.plugin_example_pyside.tictactoe.TicTacToe, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.ring_progress_bar.ring_progress_bar.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.ring_progress_bar.ring_progress_bar.RingProgressBar, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_control.ScanControl, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_control.ScanControl, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanCheckBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanCheckBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanDoubleSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanDoubleSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanGroupBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanGroupBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractSpinBox.ButtonSymbols:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractSpinBox.ButtonSymbols, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanDoubleSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractSpinBox.CorrectionMode:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractSpinBox.CorrectionMode, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanDoubleSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanLineEdit, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanLineEdit, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractSpinBox.StepEnabledFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractSpinBox.StepEnabledFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanDoubleSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractSpinBox.StepType:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractSpinBox.StepType, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanDoubleSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.scan_control.scan_group_box.ScanSpinBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.vscode.vscode.VSCodeEditor, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.vscode.vscode.VSCodeEditor, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.website.website.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.website.website.WebsiteWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QComboBox.InsertPolicy:1: WARNING: duplicate object description of PySide6.QtWidgets.QComboBox.InsertPolicy, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.StyleComboBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.device_box.device_box.DeviceBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.device_box.device_box.DeviceBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QComboBox.SizeAdjustPolicy:1: WARNING: duplicate object description of PySide6.QtWidgets.QComboBox.SizeAdjustPolicy, other instance in api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog.StyleComboBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.device_combobox.device_combobox.DeviceComboBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.device_combobox.device_combobox.DeviceComboBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.device_line_edit.device_line_edit.DeviceLineEdit, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.device_line_edit.device_line_edit.DeviceLineEdit, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.position_indicator.position_indicator.PositionIndicator, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.position_indicator.position_indicator.PositionIndicator, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.bec_status_box.bec_status_box.BECStatusBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.bec_status_box.bec_status_box.BECStatusBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.bec_status_box.status_item.StatusItem, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.bec_status_box.status_item.StatusItem, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.CursorAction:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.CursorAction, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.DragDropMode:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.DragDropMode, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.DropIndicatorPosition:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.DropIndicatorPosition, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.EditTrigger:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.EditTrigger, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtGui.QPaintDevice.PaintDeviceMetric:1: WARNING: duplicate object description of PySide6.QtGui.QPaintDevice.PaintDeviceMetric, other instance in api_reference/_autosummary/bec_widgets.widgets.spinner.spinner.SpinnerWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QWidget.RenderFlag:1: WARNING: duplicate object description of PySide6.QtWidgets.QWidget.RenderFlag, other instance in api_reference/_autosummary/bec_widgets.widgets.spinner.spinner.SpinnerWidget, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.ScrollHint:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.ScrollHint, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.ScrollMode:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.ScrollMode, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.SelectionBehavior:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.SelectionBehavior, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.SelectionMode:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.SelectionMode, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QFrame.Shadow:1: WARNING: duplicate object description of PySide6.QtWidgets.QFrame.Shadow, other instance in api_reference/_autosummary/bec_widgets.widgets.text_box.text_box.TextBox, use :no-index: for one of them -docstring of bec_widgets.widgets.bec_queue.bec_queue.BECQueue.Shadow.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.widgets.bec_queue.bec_queue.BECQueue.Shadow.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QFrame.Shape:1: WARNING: duplicate object description of PySide6.QtWidgets.QFrame.Shape, other instance in api_reference/_autosummary/bec_widgets.widgets.text_box.text_box.TextBox, use :no-index: for one of them -docstring of bec_widgets.widgets.bec_queue.bec_queue.BECQueue.Shape.from_bytes:9: WARNING: Inline interpreted text or phrase reference start-string without end-string. -docstring of bec_widgets.widgets.bec_queue.bec_queue.BECQueue.Shape.to_bytes:7: WARNING: Inline interpreted text or phrase reference start-string without end-string. -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractScrollArea.SizeAdjustPolicy:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractScrollArea.SizeAdjustPolicy, other instance in api_reference/_autosummary/bec_widgets.widgets.text_box.text_box.TextBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QAbstractItemView.State:1: WARNING: duplicate object description of PySide6.QtWidgets.QAbstractItemView.State, other instance in api_reference/_autosummary/bec_widgets.utils.bec_table.BECTable, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/docstring of PySide6.QtWidgets.QFrame.StyleMask:1: WARNING: duplicate object description of PySide6.QtWidgets.QFrame.StyleMask, other instance in api_reference/_autosummary/bec_widgets.widgets.text_box.text_box.TextBox, use :no-index: for one of them -/Users/wakonig_k/software/work/bec-widgets/docs/user/customisation.md: WARNING: document isn't included in any toctree -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/introduction.md: WARNING: document isn't included in any toctree -/Users/wakonig_k/software/work/bec-widgets/docs/user/widgets/scan_control.md: WARNING: document isn't included in any toctree -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/auto_updates.py:docstring of bec_widgets.cli.auto_updates.AutoUpdates:1: WARNING: more than one target found for cross-reference 'BECDockArea': bec_widgets.cli.client.BECDockArea, bec_widgets.widgets.dock.dock_area.BECDockArea -/Users/wakonig_k/.pyenv/versions/bec_widgets_docs/lib/python3.10/site-packages/bec_widgets/cli/auto_updates.py:docstring of bec_widgets.cli.auto_updates.AutoUpdates.get_default_figure:1: WARNING: more than one target found for cross-reference 'BECFigure': bec_widgets.cli.client.BECFigure, bec_widgets.widgets.figure.figure.BECFigure -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.qt_utils.toolbar.DeviceSelectionAction.rst:2: WARNING: more than one target found for cross-reference 'DeviceComboBox': bec_widgets.cli.client.DeviceComboBox, bec_widgets.widgets.device_combobox.device_combobox.DeviceComboBox -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.dock.dock_area.BECDockArea.rst:2: WARNING: more than one target found for cross-reference 'BECDock': bec_widgets.cli.client.BECDock, bec_widgets.widgets.dock.dock.BECDock -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.dock.dock_area.BECDockArea.rst:2: WARNING: more than one target found for cross-reference 'BECDock': bec_widgets.cli.client.BECDock, bec_widgets.widgets.dock.dock.BECDock -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.dock.dock_area.BECDockArea.rst:2: WARNING: more than one target found for cross-reference 'BECDock': bec_widgets.cli.client.BECDock, bec_widgets.widgets.dock.dock.BECDock -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.figure.BECFigure.rst:2: WARNING: more than one target found for cross-reference 'BECPlotBase': bec_widgets.cli.client.BECPlotBase, bec_widgets.widgets.figure.plots.plot_base.BECPlotBase -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.figure.BECFigure.rst:2: WARNING: more than one target found for cross-reference 'BECImageShow': bec_widgets.cli.client.BECImageShow, bec_widgets.widgets.figure.plots.image.image.BECImageShow -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.figure.BECFigure.rst:2: WARNING: more than one target found for cross-reference 'BECMotorMap': bec_widgets.cli.client.BECMotorMap, bec_widgets.widgets.figure.plots.motor_map.motor_map.BECMotorMap -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.figure.BECFigure.rst:2: WARNING: more than one target found for cross-reference 'BECWaveform': bec_widgets.cli.client.BECWaveform, bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.figure.WidgetHandler.rst:2: WARNING: more than one target found for cross-reference 'BECPlotBase': bec_widgets.cli.client.BECPlotBase, bec_widgets.widgets.figure.plots.plot_base.BECPlotBase -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.image.image.BECImageShow.rst:2: WARNING: more than one target found for cross-reference 'BECImageItem': bec_widgets.cli.client.BECImageItem, bec_widgets.widgets.figure.plots.image.image_item.BECImageItem -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.image.image.BECImageShow.rst:2: WARNING: more than one target found for cross-reference 'BECImageItem': bec_widgets.cli.client.BECImageItem, bec_widgets.widgets.figure.plots.image.image_item.BECImageItem -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.image.image.BECImageShow.rst:2: WARNING: more than one target found for cross-reference 'BECImageItem': bec_widgets.cli.client.BECImageItem, bec_widgets.widgets.figure.plots.image.image_item.BECImageItem -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.image.image.BECImageShow.rst:2: WARNING: more than one target found for cross-reference 'BECImageItem': bec_widgets.cli.client.BECImageItem, bec_widgets.widgets.figure.plots.image.image_item.BECImageItem -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.figure.plots.waveform.waveform.BECWaveform.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.ring_progress_bar.ring_progress_bar.RingProgressBar.rst:2: WARNING: more than one target found for cross-reference 'Ring': bec_widgets.cli.client.Ring, bec_widgets.widgets.ring_progress_bar.ring.Ring -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_widget.BECWaveformWidget.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_widget.BECWaveformWidget.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/api_reference/_autosummary/bec_widgets.widgets.waveform.waveform_widget.BECWaveformWidget.rst:2: WARNING: more than one target found for cross-reference 'BECCurve': bec_widgets.cli.client.BECCurve, bec_widgets.widgets.figure.plots.waveform.waveform_curve.BECCurve -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:18: WARNING: 'myst' cross-reference target not found: 'user.widgets.waveform_1d' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:25: WARNING: local id not found in doc 'api_reference/_autosummary/bec_widgets.cli.client.BECFigure': 'bec_widgets.cli.client.BECFigure.plot' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:30: WARNING: local id not found in doc 'api_reference/_autosummary/bec_widgets.cli.client.BECWaveform': 'bec_widgets.cli.client.BECWaveform.set_title' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:30: WARNING: local id not found in doc 'api_reference/_autosummary/bec_widgets.cli.client.BECWaveform': 'bec_widgets.cli.client.BECWaveform.set_x_label' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:30: WARNING: local id not found in doc 'api_reference/_autosummary/bec_widgets.cli.client.BECWaveform': 'bec_widgets.cli.client.BECWaveform.set_x_lim' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:30: WARNING: 'myst' cross-reference target not found: 'user.widgets.waveform_1d' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:46: WARNING: 'myst' cross-reference target not found: '/api_reference/_autosummary/bec_widgets.cli.client.BECWaveForm' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:54: WARNING: 'myst' cross-reference target not found: 'user.widgets.image' [myst.xref_missing] -/Users/wakonig_k/software/work/bec-widgets/docs/user/getting_started/quick_start.md:58: WARNING: Lexing literal_block 'gui.add_dock? # shows the dockstring of the add_dock method\n' as "python" resulted in an error at token: '?'. Retrying in relaxed mode. diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 32bb2452..00000000 --- a/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@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/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 247a183f..00000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -sphinx<9 -sphinx_copybutton -recommonmark -sphinx-toolbox -pydata-sphinx-theme -sphinx-copybutton -sphinx-inline-tabs -myst-parser -sphinx-design -tomli diff --git a/docs/safety/safety.md b/docs/safety/safety.md index a846d1fb..4a52af3a 100644 --- a/docs/safety/safety.md +++ b/docs/safety/safety.md @@ -1,5 +1,3 @@ -(safety)= - # Safety at cSAXS Working safely at the beamline is everyone's responsibility. All activities must @@ -8,30 +6,28 @@ with the ongoing work. Please read this page and the full checklist before starting your experiment, and discuss any safety-related question with your local contact. -```{important} -**No experiment may be conducted before the signed Safety Declaration form has -been handed to your local contact.** Every person working at the beamline must be -named on that form. Violations result in the immediate termination of the -experiment. +!!! warning "Important" + **No experiment may be conducted before the signed Safety Declaration form has + been handed to your local contact.** Every person working at the beamline must be + named on that form. Violations result in the immediate termination of the + experiment. -📄 **[Open the Safety Declaration form (PDF)](https://www.psi.ch/en/media/58834/download)** -``` + 📄 **[Open the Safety Declaration form (PDF)](https://www.psi.ch/en/media/58834/download)** -```{admonition} In an emergency -:class: danger -- **Call 3333** — be ready to state *Who? What? When? Where?* -- Know the location of the nearest **emergency exit**, **fire extinguisher**, - **emergency shower / eye wash**, and **first-aid kit**. -- Never hesitate to ask your local contact for advice or help. -``` +!!! danger "In an emergency" + - **Call 3333** — be ready to state *Who? What? When? Where?* + - Know the location of the nearest **emergency exit**, **fire extinguisher**, + **emergency shower / eye wash**, and **first-aid kit**. + - Never hesitate to ask your local contact for advice or help. + ## Safety checklist (printable PDF) Your local contact will go through the *Safety at cSAXS* checklist with you, covering emergencies, general behaviour, working inside the hutch, and experiment safety. It is available as a printable PDF. -{download}`⬇ Download the "Safety at cSAXS" checklist (PDF) <../assets/safety-at-csaxs.pdf>` +[⬇ Download the "Safety at cSAXS" checklist (PDF)](../assets/safety-at-csaxs.pdf) ## Key safety links diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 00000000..45b68390 --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,61 @@ +/* The original card SVGs have fixed dark fills; keep them visible in dark mode. */ +[data-md-color-scheme="slate"] .md-typeset .card-icon { + filter: brightness(0) invert(0.85); +} + +/* Keep section cards balanced when icon proportions and title lengths differ. */ +.md-typeset .section-grid { + grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); + gap: 1rem; +} + +.md-typeset .section-grid.cards > ul > li { + position: relative; + padding: 1.1rem; +} + +/* Stretch the existing heading link across its card without extra tab stops. */ +.md-typeset .section-grid .card-heading a::after { + position: absolute; + inset: 0; + content: ""; +} + +.md-typeset .section-grid.cards > ul > li:focus-within { + outline: 2px solid var(--md-accent-fg-color); + outline-offset: 2px; +} + +.md-typeset .section-grid .card-heading { + display: flex; + align-items: center; + gap: 0.7rem; + min-height: 2.6rem; + margin: 0 0 0.8rem; + line-height: 1.4; +} + +.md-typeset .section-grid .card-icon { + flex: 0 0 1.6rem; + width: 1.6rem; + height: 1.6rem; + object-fit: contain; + margin: 0; +} + +.md-typeset .section-grid .card-heading strong { + font-size: 0.85rem; +} + +.md-typeset .section-grid .card-heading a { + text-decoration: none; +} + +.md-typeset .section-grid .card-heading a:hover, +.md-typeset .section-grid .card-heading a:focus-visible { + text-decoration: underline; +} + +.md-typeset .section-grid .card-heading + p { + margin: 0; +} diff --git a/docs/user/before_you_arrive/before_you_arrive.md b/docs/user/before_you_arrive/before_you_arrive.md index 3064ea7a..6f0e8c80 100644 --- a/docs/user/before_you_arrive/before_you_arrive.md +++ b/docs/user/before_you_arrive/before_you_arrive.md @@ -1,5 +1,4 @@ -(user.before_you_arrive)= # Before you arrive -## Before you arrive \ No newline at end of file +## Before you arrive diff --git a/docs/user/data_analysis/computing.md b/docs/user/data_analysis/computing.md index 54283d44..7e0b660c 100644 --- a/docs/user/data_analysis/computing.md +++ b/docs/user/data_analysis/computing.md @@ -1,4 +1,3 @@ -(user.data_analysis.computing)= # Online data analysis We can access the online computing resources from the beamline consoles when logged in as the e-account. diff --git a/docs/user/data_analysis/data_analysis.md b/docs/user/data_analysis/data_analysis.md index c145f374..848027e3 100644 --- a/docs/user/data_analysis/data_analysis.md +++ b/docs/user/data_analysis/data_analysis.md @@ -1,34 +1,13 @@ -(user.data_analysis)= # Data analysis Welcome to the data analysis section of the cSAXS beamline. -```{toctree} ---- -maxdepth: 2 -hidden: true ---- +
-computing +- ![](../../assets/index_user_guide.svg){ width="32" height="32" .middle .card-icon } **[Online data analysis](computing.md)** + { .card-heading } -``` + Allocating compute nodes, programming using Python and Matlab during the beamtime. +
-*** - -````{grid} 2 -:gutter: 5 - -```{grid-item-card} -:link: user.data_analysis.computing -:link-type: ref -:img-top: /assets/index_user_guide.svg -:text-align: center -:class-item: index-card - -## Online data analysis - -Allocating compute nodes, programming using Python and Matlab during the beamtime. -``` - -```` -For offline analysis, more detailed documentation on use of slurm on Ra, description of NoMachine setup is available at https://dari.pages.psi.ch/ra/compute.html/. +For offline analysis, more detailed documentation on use of slurm on Ra, description of NoMachine setup is available at . diff --git a/docs/user/ptychography/flomni.md b/docs/user/ptychography/flomni.md index b789a49c..b7fe0c6e 100644 --- a/docs/user/ptychography/flomni.md +++ b/docs/user/ptychography/flomni.md @@ -1,4 +1,3 @@ -(user.ptychography.flomni)= # flOMNI flOMNI is an instrument for tomographic measurements via X-ray ptychography. The sample environment is at atmospheric pressure and room temperature (or higher). @@ -9,7 +8,7 @@ Samples are to be mounted on [OMNY pins](https://www.dora.lib4ri.ch/psi/islandor … a step-by-step guide for users -(user.ptychography.flomni.transfer)= + ### Sample storage and transfer Print the current usage of the sample storage @@ -35,8 +34,8 @@ __If something goes wrong__, there are additional commands to perform a manual o | command | explanation | | --- | --- | -| `flomni.ftransfer_get_sample()` | Pick sample from | -| `flomni.ftransfer_put_sample()` | Mount sample at | +| `flomni.ftransfer_get_sample()` | Pick sample from <position> | +| `flomni.ftransfer_put_sample()` | Mount sample at <position> | | `flomni.ftransfer_flomni_stage_in()` | stage to measurement position | | `flomni.ftransfer_flomni_stage_out()` | stage to the sample change position | @@ -56,11 +55,11 @@ If you see your sample already at the approximately correct height: 1. `flomni.xrayeye_alignment_start()` start the coarse alignment of the sample by measuring (clicking in the X-ray eye software) the sample position at its height and then angles of 0, 45, 90, 135, 180 degrees. The GUI will present a fit of this data, which is automatically loaded to BEC for aligning the sample. - **Flat samples** are edge-on at 90 degrees, so their center cannot be measured there: press **Skip** in the GUI instead of Submit to leave that angle out. One angle may be skipped, the fit needs at least 4 of the 5 angles; a second Skip is refused with a message. Skipping 45, 90 or 135 degrees costs little accuracy, skipping 0 or 180 degrees makes the fit noticeably noisier (a warning is printed). The FZP center and the height marking cannot be skipped. With 4 points the fit cannot flag a bad click, so check the plot. The skipped angles are stored in the alignment h5 file. + **Flat samples** are edge-on at 90 degrees, so their center cannot be measured there: press **Skip** in the GUI instead of Submit to leave that angle out. One angle may be skipped, the fit needs at least 4 of the 5 angles; a second Skip is refused with a message. Skipping 45, 90 or 135 degrees costs little accuracy, skipping 0 or 180 degrees makes the fit noticeably noisier (a warning is printed). The FZP center and the height marking cannot be skipped. With 4 points the fit cannot flag a bad click, so check the plot. The skipped angles are stored in the alignment h5 file. Otherwise adjust the height manually: -1. `flomni.umvr_fsamy_tracked(0.01)`, attention: unit , move the sample stage relative up (positive) or down (negative) until the sample is approximately vertically centered in xray eye screen +1. `flomni.umvr_fsamy_tracked(0.01)`, attention: unit <mm>, move the sample stage relative up (positive) or down (negative) until the sample is approximately vertically centered in xray eye screen 1. `flomni.xrayeye_update_frame()` will update the current image on the xray eye screen #### Fine alignment @@ -76,13 +75,15 @@ _To bypass the fine alignment: `flomni.feye_out()`_ ### Tomographic Measurement Now that the sample is aligned, the tomographic measurement can be performed. -1. `flomni.tomo_parameters()` opens the tomo parameter window (GUI) to adjust the scan parameters for the tomographic scan (`flomni.tomo_parameters_cli()` is the command line version, which prompts for each value in the terminal). This includes the parameters for ptychographic scans of projections plus the strategy for angular sampling. The vertical shift adjusts the field of view, up (positive) or down (negative). After adjusting the numbers, type again `flomni.tomo_parameters()` and verify that they are correct. Besides the computed angular sampling modes, `tomo_type` 4 reads the angles from a text file, see [Angles from a file](user.ptychography.flomni.angle_file) for the file requirements. For the "8 sub-tomograms" mode, an optional 0-deg reference shot can be enabled at the start of every odd sub-tomogram and once more at the end, useful for tracking radiation damage over the course of a long measurement. -1. `flomni.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle . Launch the tomographic measurement by `flomni.tomo_scan()`. During the scan a live progress report is printed, including an estimated time of completion. Unusually long gaps (e.g. a beamline interruption) are detected automatically and excluded from the estimate, and the total time lost to such gaps is reported once the scan finishes. + +1. `flomni.tomo_parameters()` opens the tomo parameter window (GUI) to adjust the scan parameters for the tomographic scan (`flomni.tomo_parameters_cli()` is the command line version, which prompts for each value in the terminal). This includes the parameters for ptychographic scans of projections plus the strategy for angular sampling. The vertical shift adjusts the field of view, up (positive) or down (negative). After adjusting the numbers, type again `flomni.tomo_parameters()` and verify that they are correct. Besides the computed angular sampling modes, `tomo_type` 4 reads the angles from a text file, see [Angles from a file](flomni.md#angles-from-a-file-tomo_type-4) for the file requirements. For the "8 sub-tomograms" mode, an optional 0-deg reference shot can be enabled at the start of every odd sub-tomogram and once more at the end, useful for tracking radiation damage over the course of a long measurement. +1. `flomni.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle <angle>. Launch the tomographic measurement by `flomni.tomo_scan()`. During the scan a live progress report is printed, including an estimated time of completion. Unusually long gaps (e.g. a beamline interruption) are detected automatically and excluded from the estimate, and the total time lost to such gaps is reported once the scan finishes. 1. Before changing sample, verify that all subtomograms were completely acquired using the tomo_reconstruction matlab script. #### Queueing multiple scans Several parameter sets can be queued and run one after another automatically, e.g. a fast overview scan followed by a higher resolution scan on the same sample, without having to wait around to start the next one by hand. + 1. `flomni.tomo_parameters()` set up the first parameter set, then `flomni.tomo_queue_add("label")` to add it to the queue. 1. Repeat for further parameter sets. 1. `flomni.tomo_queue_show()` review the queue before starting. @@ -90,7 +91,7 @@ Several parameter sets can be queued and run one after another automatically, e. If a queued scan is interrupted, the next call to `flomni.tomo_queue_execute()` resumes it automatically rather than starting over, then continues with the remaining entries. -The same queue can also hold **command jobs** that reconfigure the beamline between scans (e.g. change energy, then re-peak the undulator gap) instead of running a tomogram, so "scan A, reconfigure, scan B" runs unattended as one queue. A queued tomogram can also run custom code at each projection angle (e.g. moving a polarizer in and out between two exposures) via a registered **at_each_angle hook**. See [Tomography](user.ptychography.flomni.tomography) below for the full command reference, including command jobs and hooks. +The same queue can also hold **command jobs** that reconfigure the beamline between scans (e.g. change energy, then re-peak the undulator gap) instead of running a tomogram, so "scan A, reconfigure, scan B" runs unattended as one queue. A queued tomogram can also run custom code at each projection angle (e.g. moving a polarizer in and out between two exposures) via a registered **at_each_angle hook**. See [Tomography](flomni.md#tomography) below for the full command reference, including command jobs and hooks. #### If something went wrong… @@ -103,6 +104,7 @@ To continue an __interrupted tomography scan__, run It picks up automatically from wherever the scan was interrupted, no need to look up the exact subtomogram/angle by hand. Do not use this command when running from the tomo queuing system. Instead use `flomni.tomo_queue_execute()`. Alternatively, the same kind of parameters used internally by `tomo_scan_resume()` can be given to `flomni.tomo_scan()` directly, e.g. to resume from a different point than where it actually stopped: + | tomo type | parameters and their defaults | | --- | --- | | 8 sub-tomograms | subtomo_start=1, start_angle=None | @@ -111,7 +113,7 @@ Alternatively, the same kind of parameters used internally by `tomo_scan_resume( ### GUI tools -During operation the BEC GUI will show the relevant cameras or progress information. To manually switch view TAB completion on 'flomni.flomnigui_' will show all options to control the GUI. Most useful +During operation the BEC GUI will show the relevant cameras or progress information. To manually switch view ++tab++ completion on 'flomni.flomnigui_' will show all options to control the GUI. Most useful 'flomni.flomnigui_show_cameras()' will show the cameras for sample transfer and interior overview 'flomni.flomnigui_show_progress()' will show the measurement progress GUI 'flomnigui_show_xeyealign()' will show the XrayEye alignment GUI @@ -173,9 +175,10 @@ Example: `flomni.ffzp_info(6.2)` Documents about availabe optics can be accessed by `flomni.flomnigui_docs` -The [laser feedback](user.ptychography.flomni.laser_feedback) will be disabled and fine alignment lost if foptx/y are moved! +The [laser feedback](flomni.md#interferometer-feedback-commands) will be disabled and fine alignment lost if foptx/y are moved! Following functions exist to move the optics in and out, with self-explaining naming. + - `flomni.ffzp_in()` - `flomni.foptics_in()` - `flomni.foptics_out()` @@ -187,6 +190,7 @@ Following functions exist to move the optics in and out, with self-explaining na The position feedback in flOMNI is controlled in closed loop to an interferometric position measurement. To show the signal of the interferometers: `flomni.show_signal_strength_interferometer()` Typical values with proper alignment, sample stage at the measurement position and laser tracker running are in the range of + | Axis | Value | | --- | --- | | 0 | 13681.0 | @@ -203,12 +207,14 @@ The horizontal interferometer is built according to the [tracking interferometer - `flomni.laser_tracker_on()` - `flomni.laser_tracker_off()` -(user.ptychography.flomni.laser_feedback)= + #### Interferometer feedback commands The closed loop control of the Piezo stages can be controlled by + - `flomni.feedback_feedback_enable_with_reset()`. _There is also an enable without reset, which is used during tomography scans, when using coarse stages to increase the scan range. It should not be required to use manually._ + - `flomni.feedback_disable()` - `flomni.feedback_status()` @@ -270,6 +276,7 @@ each mode captures and how to switch between them. #### Overview of the alignment steps There are several corrections applied to maintain the sample in the FOV: + 1. Mirror calibration 1. X-ray eye alignment 1. Ptychography fine alignment (improvement of the X-ray eye alignment step) @@ -359,7 +366,7 @@ Define the scan parameters by `flomni.tomo_parameters()` Run a scan at _angle_ (in degrees) by `flomni.tomo_scan_projection(angle)` -(user.ptychography.flomni.tomography)= + ### Tomography The tomo parameters have to be set by @@ -371,6 +378,7 @@ Once satisfied with the alignment, the tomography scan can be started by During the scan, a live progress report is printed (subtomogram/projection counters and an estimated time of completion). Gaps significantly longer than a normal acquisition cycle (e.g. a beamline-down interruption, or a crash followed by a restart) are detected automatically from the time between consecutive projections and excluded from the time estimate; the total time lost to such gaps is printed once the scan finishes. Four modes for angular sampling are implemented (selected by `tomo_type` 1-4) and they have different optional parameters for the tomo_scan method: + | tomography mode | tomo_type | parameters and defaults | | --- | --- | --- | | 8 sub-tomograms | 1 | subtomo_start=1, start_angle=None | @@ -378,7 +386,7 @@ Four modes for angular sampling are implemented (selected by `tomo_type` 1-4) an | Equally spaced with golden starting angle | 3 | projection_number=None | | Angles read from a file | 4 | projection_number=None | -See [Angles from a file](user.ptychography.flomni.angle_file) below for tomo_type 4. +See [Angles from a file](flomni.md#angles-from-a-file-tomo_type-4) below for tomo_type 4. For the "8 sub-tomograms" mode, `flomni.tomo_parameters()` also offers a `zero_deg_reference_at_each_subtomo` option: when enabled, an additional reference projection at exactly 0 degrees is acquired at the start of every odd (forward) sub-tomogram and once more after the final sub-tomogram, useful for tracking radiation damage across the full measurement. @@ -390,23 +398,24 @@ The parameters above can be used to __restart an interrupted acquisition__ manua `flomni.tomo_scan_resume()` which reads the last recorded progress and resumes automatically at the exact point (subtomogram/angle, or projection for the golden ratio modes) the scan was interrupted at, without needing to look up the values by hand. When running from the tomo scan queuing system use `flomni.tomo_queue_execute()` instead! -(user.ptychography.flomni.angle_file)= + #### Angles from a file (tomo_type 4) With `tomo_type` 4 the projection angles are not computed but read from a plain-text file you provide, e.g. for a non-uniform sampling, a missing-wedge-aware set of angles, or to repeat a previously used list. Set the file in `flomni.tomo_parameters()` (choose type 4, then **Browse...** to pick the file; the GUI shows a live preview of the file content and blocks Submit / Add to queue while the file is invalid), or in `flomni.tomo_parameters_cli()` which prompts for the path until it parses. Only the path is stored (`flomni.tomo_angle_file`), so use a path that is readable from the BEC client machine. **File requirements** + - Plain text, one projection per line. - Column 1: the angle in degrees, `0 <= angle <= 360`. Angles above 180 are allowed; `tomo_angle_range` is not applied. - Column 2 (optional): the sub-tomogram number, an integer `>= 1`. If omitted, it is 1. It is only a label used for progress display and the saved metadata; it does not change the acquisition. - Columns are separated by whitespace and/or commas. Everything after `#` is a comment; blank lines are ignored. - Projections are acquired in file order, so the order in the file is the order of the measurement. -- Further, optional `key=value` tokens after the angle/subtomo may override acquisition parameters for that projection -- see [Per-line acquisition overrides](user.ptychography.flomni.angle_file.overrides) below. +- Further, optional `key=value` tokens after the angle/subtomo may override acquisition parameters for that projection -- see [Per-line acquisition overrides](flomni.md#per-line-acquisition-overrides) below. - At least one angle is required. Any malformed line (not a number, angle outside 0-360, sub-tomogram number below 1, an unrecognized or malformed `key=value` token) makes the whole file invalid and names the offending line. - A line that is `END` (case-insensitive, nothing but whitespace/comment around it) marks the file as **complete** -- no more angles will ever be appended. A commented-out `# END` does not count, so the marker can be staged ahead of time and uncommented when the file is truly finished. Anything other than a comment or blank line after `END` is an error. Example: -``` +```text # angle subtomo 0 1 45 1 @@ -416,20 +425,22 @@ END ``` **Behavior** + - The file is read once at the start of `flomni.tomo_scan()` (and again at `flomni.tomo_scan_resume()` or when a queued job runs), before any sample registration or motion. A missing or invalid file fails immediately (in the queue the job is marked `incomplete` with the error message). - **While the scan is running, the file is re-read and polled (about every 5 s) whenever the scan catches up to the current end of file.** This means you can grow the file by appending lines while a scan is running -- newly appended angles are picked up automatically, with no need to call `tomo_scan_resume()`. -- A file without an `END` marker is **incomplete**: once the scan reaches the end of it, it waits indefinitely for more lines rather than finishing, printing a reminder each time it starts waiting. Add an `END` line when you want the scan to finish on its own -- a file prepared in advance with the full list of angles should have `END` as its last line, or a scan against it will hang at the end rather than completing. Pressing Ctrl-C while waiting raises a clean, catchable error (safe to use to abort a queued job in this state) rather than a bare interrupt. +- A file without an `END` marker is **incomplete**: once the scan reaches the end of it, it waits indefinitely for more lines rather than finishing, printing a reminder each time it starts waiting. Add an `END` line when you want the scan to finish on its own -- a file prepared in advance with the full list of angles should have `END` as its last line, or a scan against it will hang at the end rather than completing. Pressing ++ctrl+c++ while waiting raises a clean, catchable error (safe to use to abort a queued job in this state) rather than a bare interrupt. - Only append new lines after the last one the scan has already acquired. Editing or removing a line that has already been acquired aborts the scan with an error on the next poll; editing a line that has been written to the file but not yet acquired is not guaranteed to be picked up, so avoid relying on it. - At scan start the number of angles known so far, their range and the number of sub-tomograms are printed (noting if the file is still incomplete), and the parsed angle list is written to scilog. The summary is printed again, together with the 180-deg-pair warning below, once the file becomes complete. - A warning is printed if the file contains angles that are identical or 180 deg apart (within 0.05 deg), which are redundant in parallel-beam geometry. The scan is still run. - No extra 0-deg damage-estimation shots are inserted (`golden_projections_at_0_deg_for_damage_estimation` and the sub-tomogram 0-deg reference are ignored); put 0-deg lines into the file if you want them. -- `flomni.tomo_scan_resume()` is for recovering from a crash or an explicit abort (e.g. Ctrl-C) -- it is not needed just to pick up appended lines, since a running scan already waits for and picks those up on its own. When used, it continues at the interrupted projection index of the file, using the file's *current* content from that index on. If the file has become shorter than the resume index, the resume is refused. +- `flomni.tomo_scan_resume()` is for recovering from a crash or an explicit abort (e.g. ++ctrl+c++) -- it is not needed just to pick up appended lines, since a running scan already waits for and picks those up on its own. When used, it continues at the interrupted projection index of the file, using the file's *current* content from that index on. If the file has become shorter than the resume index, the resume is refused. - In the tomo queue the file path is snapshotted per job when it is added, and `flomni.tomo_queue_reacquire(job_index, projection_number)` uses the projection index in the file (0-indexed, in file order). -(user.ptychography.flomni.angle_file.overrides)= -**Per-line acquisition overrides** + +##### Per-line acquisition overrides Besides the angle and sub-tomogram number, each line may add any number of `key=value` tokens that override acquisition parameters otherwise taken from the live `flomni.tomo_parameters()` configuration, for that projection and every one after it: + - `step=` -- the Fermat scan step size (otherwise `flomni.tomo_shellstep`), range `0.025-20.0`. - `exptime=` -- the exposure/counting time per frame (otherwise `flomni.tomo_countingtime`), range `0.001-100.0`. - `frames=` -- the burst frame count (otherwise `flomni.frames_per_trigger`), integer, range `1-100`. @@ -437,7 +448,7 @@ Besides the angle and sub-tomogram number, each line may add any number of `key= These three are **sticky**: once a line sets one, it stays in effect -- for that line and every line after it -- until a later line changes it again. They are independent of each other (setting `step=` doesn't touch `exptime=`/`frames=`) and independent of the sub-tomogram number, which is never sticky. A field that is never set on any line simply uses whatever the live configuration is at the moment that projection is actually acquired, so a mix of overridden and non-overridden lines behaves exactly as if the non-overridden ones weren't in a tomo_type-4 file at all. Example -- coarse-and-fast for the first half, then fine-and-slow: -``` +```text 0 1 45 1 90 1 step=0.3 exptime=2 frames=3 @@ -470,12 +481,12 @@ Several tomo parameter sets can be queued and run sequentially on the same sampl The queue is persisted (it survives a BEC client restart). Each job's status is one of `pending`, `running`, `incomplete`, or `done`. A job that did not run to completion (an exception was caught, or the BEC client itself crashed mid-scan) is automatically resumed - rather than restarted - the next time `flomni.tomo_queue_execute()` is called. -If the process running the queue dies hard enough that it never gets to write a status update at all (a kernel restart, a Ctrl-C during a blocking prompt) a job can be left stuck showing `running` with nothing actually running. `flomni.tomo_queue_delete(index)` has no status guard and works on a stuck row regardless; you can also fix the status directly with `flomni._tomo_queue_proxy.update_by_id(job_id, status="incomplete")` (to make it resumable) or `status="done"` (to skip it). The GUI's Delete/Clear normally refuse to touch a `running` row, but detect a stale one (no recent scan heartbeat) and offer to proceed anyway with an explicit confirmation instead of blocking forever. +If the process running the queue dies hard enough that it never gets to write a status update at all (a kernel restart, a ++ctrl+c++ during a blocking prompt) a job can be left stuck showing `running` with nothing actually running. `flomni.tomo_queue_delete(index)` has no status guard and works on a stuck row regardless; you can also fix the status directly with `flomni._tomo_queue_proxy.update_by_id(job_id, status="incomplete")` (to make it resumable) or `status="done"` (to skip it). The GUI's Delete/Clear normally refuse to touch a `running` row, but detect a stale one (no recent scan heartbeat) and offer to proceed anyway with an explicit confirmation instead of blocking forever. In the examples, `flomni.tomo_parameters_cli()` is used because it waits until the values are entered before the next command runs. With the GUI window, adjust the values there and add the job with its queue button, or with `flomni.tomo_queue_add()`. Example: -``` +```python flomni.tomo_parameters_cli() # set up parameter set #1 flomni.tomo_queue_add("fast overview") flomni.tomo_parameters_cli() # set up parameter set #2 @@ -520,7 +531,7 @@ anything itself. Example — job 0 already finished, but its last few projections (and the jobs queued after it) need redoing: -``` +```python flomni.tomo_queue_show() # find the job index and the projection number to restart at flomni.tomo_queue_reacquire(0, 130) # reopen job 0 at projection 130; jobs 1+ reset to pending flomni.tomo_queue_resume() # actually re-run, in order @@ -542,10 +553,11 @@ two tomograms on the same sample. `flomni.tomo_queue_add_command(steps, label=None, idempotent=None)` - `steps`: a single `{"action": ..., "kwargs": {...}}` dict, or a list of them run in - sequence within that one job. + sequence within that one job. + - `label`: optional name shown by `tomo_queue_show()`, same as for `tomo_queue_add()`. - `idempotent`: normally inferred (safe to blindly re-run after a crash only if every - step is); override explicitly if needed. + step is); override explicitly if needed. Only actions from a fixed, reviewed registry can be queued — not arbitrary code: @@ -559,7 +571,7 @@ Devices allowed for `move`: `mokev` (energy, keV), `idgap` (undulator gap, mm). it actually runs. Example — change energy, then re-peak idgap, before the next tomogram: -``` +```python flomni.tomo_queue_add_command( [{"action": "move", "kwargs": {"positions": {"mokev": 6.2}}}, {"action": "optimize_idgap", "kwargs": {"search_range": 0.5}}], @@ -568,16 +580,18 @@ flomni.tomo_queue_add_command( ``` `tomo_queue_show()` lists command jobs alongside tomogram jobs, e.g.: -``` +```text [2] pending reconfigure to 6.2 keV CMD move{'positions': {'mokev': 6.2}} > optimize_idgap{'search_range': 0.5} [idem] ``` If a command job is interrupted by a crash, there is no per-step resume point — the whole job is either safe to redo from the top or it isn't: + - If every step is idempotent (the usual case — an absolute move is harmless to - repeat), `flomni.tomo_queue_execute()` silently re-runs the whole job from the top. + repeat), `flomni.tomo_queue_execute()` silently re-runs the whole job from the top. + - If any step is not idempotent, you are asked whether to re-run the job from the top - or mark it done as-is. + or mark it done as-is. #### Custom behavior at each projection angle @@ -693,7 +707,7 @@ flomni.tomo_queue_execute() `progress["subtomo"]`/`progress["subtomo_projection"]` are populated the same way for tomo_types 2/3, so the same pattern works there too — just note that unlike type 1's fixed 8 sub-tomograms, those types have no fixed sub-tomogram count (see -[Tomography](user.ptychography.flomni.tomography) above), so "sub-tomogram 2" means +[Tomography](flomni.md#tomography) above), so "sub-tomogram 2" means something different (and open-ended) for them. **`tomo_scan_projection()` vs `tomo_acquire_at_angle()`:** these are not @@ -707,7 +721,7 @@ confirmation now fails the job** (raises, rather than silently skipping that projection) — inside a custom hook or the normal tomo flow this correctly marks the queue job `incomplete` and pauses the queue, instead of quietly acquiring fewer projections than expected with no trace, or (if you get asked at every angle and -eventually give up and hit Ctrl-C) leaving a job stuck at status `running` forever +eventually give up and hit ++ctrl+c++) leaving a job stuck at status `running` forever with nothing actually running. If you hit this, use `tomo_acquire_at_angle(angle)` in your hook instead, or fix the queue entry via `flomni.tomo_queue_delete(index)` (no status guard, works even on a stuck `running` row) or by marking it done/ @@ -744,7 +758,7 @@ removed later. ### Sample storage and transfer -[See short version](user.ptychography.flomni.transfer) +[See short version](flomni.md#sample-storage-and-transfer) ### Heater @@ -754,4 +768,4 @@ flomni.move_fheater_up() The functions are safe in the sense that no collisions should occur. E.g. the OSA will be moved back before a movement of the heater. -__The heater still needs commissioning in BEC!!!__ \ No newline at end of file +__The heater still needs commissioning in BEC!!!__ diff --git a/docs/user/ptychography/lamni.md b/docs/user/ptychography/lamni.md index 276dc878..5c911f46 100644 --- a/docs/user/ptychography/lamni.md +++ b/docs/user/ptychography/lamni.md @@ -1,5 +1,3 @@ -(user.ptychography.lamni)= - # LamNI LamNI is an instrument for 3D ptychography via ptychographic X-ray computed laminography (PyXL). The instrument is described in detail [here](https://www.dora.lib4ri.ch/psi/islandora/object/psi:33067). @@ -39,7 +37,8 @@ At the end you're shown the computed `lsamx_center`/`lsamy_center` and asked to - `"min"` (default) keeps the darkest value seen at each pixel. Use it for absorption contrast, i.e. dark sample features on a bright background — the usual case on the X-ray eye. Small absorbing features leave dark arcs. A large sample fills in as a dark region covering everything it occupied during the rotation; its outline is symmetric about the projected rotation axis (an ellipse rather than a circle, because of the tilted axis), so click the centre of that outline. - Opaque parts such as the sample holder frame would otherwise black out every pixel they pass at any angle and shrink the usable field of view. To avoid that, a pixel is ignored in any frame where it is darker than `opaque_level` (default `0.25`) times that frame's bright level (its 99th-percentile value), and the minimum is taken over the remaining frames only. A pixel that was opaque at every angle stays dark. If the holder still blacks out too much, raise `opaque_level` (e.g. `0.4`). If faint sample features disappear, lower it. `opaque_level=0` gives the plain minimum. + Opaque parts such as the sample holder frame would otherwise black out every pixel they pass at any angle and shrink the usable field of view. To avoid that, a pixel is ignored in any frame where it is darker than `opaque_level` (default `0.25`) times that frame's bright level (its 99th-percentile value), and the minimum is taken over the remaining frames only. A pixel that was opaque at every angle stays dark. If the holder still blacks out too much, raise `opaque_level` (e.g. `0.4`). If faint sample features disappear, lower it. `opaque_level=0` gives the plain minimum. + - `"max"` keeps the brightest value at each pixel, for bright features on a dark background. Do not use it for absorption: every pixel sees the bright background at some point during the rotation, so the dark features are washed out. Each run is archived to `~/data/raw/logs/xrayeye_smear_calibration/` (composites, clicked centres, result, and the `sweep_deg`/`projection`/`opaque_level` used). @@ -54,8 +53,9 @@ To observe the axis of rotation obtain the position of the Fresnel zone plate on 4. `umv(dev.lsamrot,90)` to rotate the sample. One might observe the center of rotation at 0 and 180 degrees. 5. `umvr(dev.lsamx,0.01)` to move lsamx and lsamy such that the center of rotation is at the center of the X-ray beam 6. `dev.lsamx` and `dev.lsamy` will print current position and the center value. Update the center value by - `dev.lsamx.update_user_parameter({'center':8.69})` - `dev.lsamy.update_user_parameter({'center':8.69})` + `dev.lsamx.update_user_parameter({'center':8.69})`
+ `dev.lsamy.update_user_parameter({'center':8.69})` + 7. close the shutter: `dev.omnyfsh.fshclose()` #### X-ray eye alignment @@ -134,25 +134,27 @@ The alignment scan itself already uses the x-ray eye correction and any correcti * `lamni.tomo_alignment_scan()` perform the alignment scan. Requires x-ray-eye alignment to have already been done — it will abort with a message otherwise. Scan numbers, angles and the existing x-ray-eye-fit offset at each angle are written to `~/data/raw/logs/ptychotomoalign_scannum.txt` and also printed at the end. * Run `BEC_ptycho_align` (in Matlab, **force ptycho=1**, and **correct scan numbers**) using the printed/logged scan numbers. * Click the sample position in the Matlab GUI and then load the generated file by, for example - `lamni.read_additional_correction('/sls/X12SA/data/e20632/Data10/cxs_software/ptycho/correction_lamni_um_S05389_lamni_fit.txt')` + `lamni.read_additional_correction('/sls/X12SA/data/e20632/Data10/cxs_software/ptycho/correction_lamni_um_S05389_lamni_fit.txt')` + * With this alignment a second iteration could be performed. To read the second correction file use `lamni.read_additional_correction_2()` -(user.ptychography.lamni.laminography)= + ### Test projections and Laminography scan Start the laminography scan by 1. `lamni.tomo_parameters()` opens the tomo parameter window (GUI) to adjust the parameters to the desired settings. The command line version, which prompts for each value in the terminal, is `lamni.tomo_parameters_cli()`. 2. for test scans run - `lamni.tomo_scan_projection(angle)` - `lamni.tomo_reconstruct()` + `lamni.tomo_scan_projection(angle)`
+ `lamni.tomo_reconstruct()` + 3. `lamni.tomo_scan()` to start the laminography scan During the scan, a live progress report is printed (subtomogram/projection counters and an estimated time of completion). Gaps significantly longer than a normal acquisition cycle (e.g. a beamline-down interruption, or a crash followed by a restart) are detected automatically from the time between consecutive projections and excluded from the time estimate; the total time lost to such gaps is printed once the scan finishes. -Four angular sampling modes are implemented (the fourth reads the angles from a file, see [Angles from a file](user.ptychography.lamni.angle_file) below): +Four angular sampling modes are implemented (the fourth reads the angles from a file, see [Angles from a file](lamni.md#angles-from-a-file-tomo_type-4) below): | tomography mode | parameters and defaults | | --- | --- | @@ -169,22 +171,23 @@ In case of eight equally spaced sub-tomograms, an individual sub-tomogram can be `lamni.tomo_parameters()` also offers `lamni_stitch_x`/`lamni_stitch_y` (integers, default 0, up to 50 each) for a field of view larger than a single scan can cover: when nonzero, every projection angle is acquired as a `(2*lamni_stitch_x+1) × (2*lamni_stitch_y+1)` grid of separate Fermat scans instead of a single one, tiled around the normal alignment-corrected center and spaced by `lamni_piezo_range_x`/`lamni_piezo_range_y` minus `tomo_stitch_overlap` (µm, default 0.2) per step in x/y — stitching together an effective field of view of roughly `(2*lamni_stitch_x+1) × lamni_piezo_range_x` by `(2*lamni_stitch_y+1) × lamni_piezo_range_y`, with `tomo_stitch_overlap` controlling the deliberate overlap between adjacent tiles used for aligning them together during reconstruction. Same mechanism as flomni's `stitch_x`/`stitch_y`, just under lamni's own parameter names (see `lamni.tomo_scan_projection()`, which passes `stitch_x`/`stitch_y`/`stitch_overlap` straight through to `scans.lamni_fermat_scan()`). -(user.ptychography.lamni.angle_file)= + #### Angles from a file (tomo_type 4) -With `tomo_type` 4 the projection angles are not computed but read from a plain-text file you provide, e.g. for a non-uniform sampling or to repeat a previously used list. Set the file in `lamni.tomo_parameters()` (choose type 4, then **Browse...**; the GUI shows a live preview of the file and blocks Submit / Add to queue while the file is invalid), or in `lamni.tomo_parameters_cli()`, which prompts for the path until it parses. Only the path is stored (`lamni.tomo_angle_file`), so use a path readable from the BEC client machine. The file format, the `END` marker and the per-line overrides are identical to flomni, see [Angles from a file](user.ptychography.flomni.angle_file) there for the full description. +With `tomo_type` 4 the projection angles are not computed but read from a plain-text file you provide, e.g. for a non-uniform sampling or to repeat a previously used list. Set the file in `lamni.tomo_parameters()` (choose type 4, then **Browse...**; the GUI shows a live preview of the file and blocks Submit / Add to queue while the file is invalid), or in `lamni.tomo_parameters_cli()`, which prompts for the path until it parses. Only the path is stored (`lamni.tomo_angle_file`), so use a path readable from the BEC client machine. The file format, the `END` marker and the per-line overrides are identical to flomni, see [Angles from a file](flomni.md#angles-from-a-file-tomo_type-4) there for the full description. **File requirements** + - Plain text, one projection per line. - Column 1: the angle in degrees, `0 <= angle <= 360`. - Column 2 (optional): the sub-tomogram number, an integer `>= 1` (default 1). It is only a label for the progress display and saved metadata. - Whitespace and/or commas separate columns; everything after `#` is a comment. - Projections are acquired in file order. - Optional `key=value` tokens per line override `step=` (`0.025-20.0`), `exptime=` (`0.001-100.0`) and `frames=` (`1-100`) for that projection and all following ones (sticky). They replace `lamni.tomo_shellstep`, `lamni.tomo_countingtime` and `lamni.frames_per_trigger`; an active `at_each_angle_hook` never sees them (a warning is printed). -- A final `END` line marks the file complete. Without it, the scan waits (polling about every 5 s) for more lines to be appended once it reaches the end of the file; Ctrl-C while waiting gives a clean, catchable error. +- A final `END` line marks the file complete. Without it, the scan waits (polling about every 5 s) for more lines to be appended once it reaches the end of the file; ++ctrl+c++ while waiting gives a clean, catchable error. Example: -``` +```text # angle subtomo 0 1 45 1 @@ -194,6 +197,7 @@ END ``` **Behavior** + - The file is read at the start of `lamni.tomo_scan()`, at `lamni.tomo_scan_resume()` and when a queued job runs, before any sample registration or motion. A missing or invalid file fails immediately (in the queue the job is marked `incomplete`). - Only append new lines after the last acquired one; editing or removing an already acquired line aborts the scan on the next poll. - Unlike flomni, no warning is given for angles that are identical or 180 deg apart: in laminography they are not redundant. @@ -215,12 +219,12 @@ Several tomo parameter sets can be queued and run sequentially on the same sampl The queue is persisted (it survives a BEC client restart). Each job's status is one of `pending`, `running`, `incomplete`, or `done`. A job that did not run to completion (an exception was caught, or the BEC client itself crashed mid-scan) is automatically resumed - rather than restarted - the next time `lamni.tomo_queue_execute()` is called. -If the process running the queue dies hard enough that it never gets to write a status update at all (a kernel restart, a Ctrl-C during a blocking prompt) a job can be left stuck showing `running` with nothing actually running. `lamni.tomo_queue_delete(index)` has no status guard and works on a stuck row regardless; you can also fix the status directly with `lamni._tomo_queue_proxy.update_by_id(job_id, status="incomplete")` (to make it resumable) or `status="done"` (to skip it). The GUI's Delete/Clear normally refuse to touch a `running` row, but detect a stale one (no recent scan heartbeat) and offer to proceed anyway with an explicit confirmation instead of blocking forever. +If the process running the queue dies hard enough that it never gets to write a status update at all (a kernel restart, a ++ctrl+c++ during a blocking prompt) a job can be left stuck showing `running` with nothing actually running. `lamni.tomo_queue_delete(index)` has no status guard and works on a stuck row regardless; you can also fix the status directly with `lamni._tomo_queue_proxy.update_by_id(job_id, status="incomplete")` (to make it resumable) or `status="done"` (to skip it). The GUI's Delete/Clear normally refuse to touch a `running` row, but detect a stale one (no recent scan heartbeat) and offer to proceed anyway with an explicit confirmation instead of blocking forever. In the examples, `lamni.tomo_parameters_cli()` is used because it waits until the values are entered before the next command runs. With the GUI window, adjust the values there and add the job with its queue button, or with `lamni.tomo_queue_add()`. Example: -``` +```python lamni.tomo_parameters_cli() # set up parameter set #1 lamni.tomo_queue_add("fast overview") lamni.tomo_parameters_cli() # set up parameter set #2 @@ -256,7 +260,7 @@ from there forward, in order. It does not run anything itself. Example — job 0 already finished, but its last few projections (and the jobs queued after it) need redoing: -``` +```python lamni.tomo_queue_show() # find the job index and the projection number to restart at lamni.tomo_queue_reacquire(0, 130) # reopen job 0 at projection 130; jobs 1+ reset to pending lamni.tomo_queue_resume() # actually re-run, in order @@ -278,10 +282,11 @@ two tomograms on the same sample. `lamni.tomo_queue_add_command(steps, label=None, idempotent=None)` - `steps`: a single `{"action": ..., "kwargs": {...}}` dict, or a list of them run in - sequence within that one job. + sequence within that one job. + - `label`: optional name shown by `tomo_queue_show()`, same as for `tomo_queue_add()`. - `idempotent`: normally inferred (safe to blindly re-run after a crash only if every - step is); override explicitly if needed. + step is); override explicitly if needed. Only actions from a fixed, reviewed registry can be queued — not arbitrary code: @@ -295,7 +300,7 @@ same beamline-wide devices as flOMNI's queue. A `move` naming any other device i rejected, both when the job is added and again when it actually runs. Example — change energy, then re-peak idgap, before the next laminogram: -``` +```python lamni.tomo_queue_add_command( [{"action": "move", "kwargs": {"positions": {"mokev": 6.2}}}, {"action": "optimize_idgap", "kwargs": {"search_range": 0.5}}], @@ -304,16 +309,18 @@ lamni.tomo_queue_add_command( ``` `tomo_queue_show()` lists command jobs alongside tomogram jobs, e.g.: -``` +```text [2] pending reconfigure to 6.2 keV CMD move{'positions': {'mokev': 6.2}} > optimize_idgap{'search_range': 0.5} [idem] ``` If a command job is interrupted by a crash, there is no per-step resume point — the whole job is either safe to redo from the top or it isn't: + - If every step is idempotent (the usual case — an absolute move is harmless to - repeat), `lamni.tomo_queue_execute()` silently re-runs the whole job from the top. + repeat), `lamni.tomo_queue_execute()` silently re-runs the whole job from the top. + - If any step is not idempotent, you are asked whether to re-run the job from the top - or mark it done as-is. + or mark it done as-is. #### Custom behavior at each projection angle @@ -425,7 +432,7 @@ lamni.tomo_queue_execute() `progress["subtomo"]`/`progress["subtomo_projection"]` are populated the same way for tomo_types 2/3, so the same pattern works there too — just note that unlike type 1's fixed 8 sub-tomograms, those types have no fixed sub-tomogram count (see -[Laminography scan](user.ptychography.lamni.laminography) above), so "sub-tomogram 2" +[Laminography scan](lamni.md#test-projections-and-laminography-scan) above), so "sub-tomogram 2" means something different (and open-ended) for them. **GUI:** the tomo parameters panel has an "At-each-angle hook" dropdown, listing @@ -520,7 +527,8 @@ Typical values with proper alignment are * `lamni.feedback_disable()` * `lamni.feedback_enable_without_reset()` \*is only used internally by lamni methods * if reset of angle interferometer is required - `lamni.feedback_disable_and_even_reset_lamni_angle_interferometer()` + `lamni.feedback_disable_and_even_reset_lamni_angle_interferometer()` + * `lamni.feedback_enable_with_reset()` ### Scanning in 2D and sample alignment @@ -532,7 +540,7 @@ Use `scans.lamni_fermat_scan?` for detailed information. A prerequisite for scan ### GUI tools -During operation the BEC GUI will show the relevant cameras or progress information. TAB completion on `lamni.lamnigui_` will show all options to control the GUI. Most useful: +During operation the BEC GUI will show the relevant cameras or progress information. ++tab++ completion on `lamni.lamnigui_` will show all options to control the GUI. Most useful: * `lamni.lamnigui_show_progress()` — shows the measurement progress with ring progress bar * `lamni.lamnigui_show_xeyealign()` — opens the X-ray eye alignment GUI on the Alignment tab @@ -561,7 +569,7 @@ Following functions exist to move the optics in and out. The positions are the ` * `lamni.lcs_in()` moves `lcsx` and `lcsy` to their `in` positions * `lamni.lcs_out()` moves `lcsy` to its `out` position; `lcsx` has no `out` position and stays where it is -(user.ptychography.lamni.laser_feedback)= + #### Interferometer feedback commands * `lamni.feedback_enable_with_reset()` enables the closed-loop control and resets the interferometers diff --git a/docs/user/ptychography/omny.md b/docs/user/ptychography/omny.md index 5f3e316a..5fb3ffb3 100644 --- a/docs/user/ptychography/omny.md +++ b/docs/user/ptychography/omny.md @@ -1,4 +1,3 @@ -(user.ptychography.omny)= # OMNY OMNY is a microscope setup for 3D mesurements via ptychographic X-ray computed tomography. The sample enviroment is in ultra-high vacuum and at a sample temperature of 90 K. The instrument is equipped with a load-lock system and allows loading and unloading of samples under cryogenic conditions. The setup is described in detail [here](https://www.dora.lib4ri.ch/psi/islandora/object/psi:4776). Samples have to be mounted on [OMNY pins](https://www.dora.lib4ri.ch/psi/islandora/object/psi:4528). @@ -9,10 +8,11 @@ OMNY is a microscope setup for 3D mesurements via ptychographic X-ray computed t ### Change to a new sample -The sample storage, shuttles and parking positions are described in detail (here)[user.ptychography.omny.samples]. +The sample storage, shuttles and parking positions are described in detail [here](omny.md#sample-storage-and-transfer). + +1. `omny.otransfer_get_sample(0)` remove current sample from sample stage. Watch gripper action and be ready to ++ctrl+c++ in case something is wrong.
+ _If in doubt check that the correct sample shutte is in the active position by calling `omny.otransfer_storage()`. The slot can be selected by `omny.otransfer_park_slot(slot)`._ -1. `omny.otransfer_get_sample(0)` remove current sample from sample stage. Watch gripper action and be ready to ctrl+c in case something is wrong. -_If in doubt check that the correct sample shutte is in the active position by calling `omny.otransfer_storage()`. The slot can be selected by `omny.otransfer_park_slot(slot)`._ 1. `omny.otransfer_put_sample(position)` put the sample to the selected shuttle 1. `omny.otransfer_get_sample(position) ` get the new sample from a shuttle 1. `omny.otransfer_put_sample(0)`, mount the sample in the sample stage @@ -24,7 +24,7 @@ _If in doubt check that the correct sample shutte is in the active position by c After mounting a new sample, the Xray eye will automatically be at the correct position to collect X-ray data. It can also be manually moved to the correct position by `omny.oeye_xray_in()`. 1. `omny.xrayeye_update_frame()` obtain a new frame that will be displayed on the Windows computer, OMNY software. If you see your sample already at the approximately correct height, you can skip step 2. Otherwise adjust the height: -1. `umvr(dev.osamy, 0.01)`, attention: unit , move the sample stage relative up (positive) or down (negative) until the sample is approximately vertically centered in xray eye screen. After a move get a new frame by `omny.xrayeye_update_frame()`. +1. `umvr(dev.osamy, 0.01)`, attention: unit <mm>, move the sample stage relative up (positive) or down (negative) until the sample is approximately vertically centered in xray eye screen. After a move get a new frame by `omny.xrayeye_update_frame()`. 1. `omny.xrayeye_alignment_start()` start the coarse alignment of the sample by measuring (clicking in the X-ray eye software) the sample position at 0, 45, 90, 135, 180 degrees. Then use the matlab routine `SPEC_ptycho_align.m` to fit this data. 1. `omny.read_alignment_offset()` read the generated alignment data. @@ -42,27 +42,29 @@ _To bypass the fine alignment skip steps_. ### Tomographic Measurement Now that the sample is aligned, the tomographic measurement can be performed. + 1. `omny.tomo_parameters()` adjust the scan parameters for the tomographic scan. This includes the parameters for ptychographic scans of projections plus the strategy for angular sampling. The vertical shift adjusts the field of view, up (positive) or down (negative). After adjusting the numbers, type again `omny.tomo_parameters()` and verify that they are correct. -1. `omny.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle , e.g. at zero degrees. When happy with the scan parameters launch the tomographic measurement by `omny.tomo_scan()`. +1. `omny.tomo_scan_projection(angle)` perform a ptychographic scan at the rotation angle <angle>, e.g. at zero degrees. When happy with the scan parameters launch the tomographic measurement by `omny.tomo_scan()`. 1. Before changing to the next sample sample, verify that all subtomograms were completely acquired using the `tomo_recons matlab` script. ### If something went wrong… Special cases: -If the gripper or another stage got stuck during transfer. Ctrl+c and then +If the gripper or another stage got stuck during transfer. ++ctrl+c++ and then `umv(dev.otransy, -1.5)` followed by `omny._otransfer_gripper_to_park_z()`, which will move the gripper to its parking position. -If the above fails for the vertical movement of the gripper _Ctrl+C_. -Try moving up and down a bit `umvr(dev.otransy,0.5)`, `umvr(dev.otransy,-0.5)`, potentially requires a _ctrl+C_ again if stuck. +If the above fails for the vertical movement of the gripper ++ctrl+c++. +Try moving up and down a bit `umvr(dev.otransy,0.5)`, `umvr(dev.otransy,-0.5)`, potentially requires a ++ctrl+c++ again if stuck. Then, `umv(dev.ootransy,-1.5)` followed by `omny._otransfer_gripper_to_park_z()`, which will move the gripper to its parking position. If this error happens after a sample was mounted or unmounted, it is important to chech that the sample storage is correct `omny.otransfer_storage()`. -(user.ptychography.omny.samples)= + ### Sample storage and transfer Following commands will provide help within BEC: + - `omny.otransfer_help()` print help related to sample transfer - `dev.omny_samples.help()` print help related to sample storage @@ -71,17 +73,17 @@ Following commands will provide help within BEC: The sample holders used are [OMNY pins](https://www.dora.lib4ri.ch/psi/islandora/object/psi:4528). These are instsalled in sample transfer shuttles, which can load up to six pins. These shuttles are transferred via a vacuum load lock to the vacuum chamber. The loading procedure can be handled at room temperature or under cryogenic conditions. The thee __shuttles__ that exist are named __“A”, “B”, “C”__. The __pin positions__ within a shuttle are number __1 to 6__ according to the following sketch: -```{figure} omny_shuttle.png -OMNY sample shuttle -``` +![OMNY sample shuttle](omny_shuttle.png) + +*OMNY sample shuttle* In addition to the shuttle positions, there are __fixed positions in OMNY__ which have numbers __larger than 10__. Such fixed positions are treated as system __“O”__. Each shuttle can be placed in a __parking slot__ in OMNY. The parking slots are numbered as displayed below (oparkz slot). Slots 1 and 2 are at room temperature. Slots 3 to 6 are at cryogenic temperature. -```{figure} omny_parking.png -OMNY parking station -``` +![OMNY parking station](omny_parking.png) + +*OMNY parking station* The status of the sample storage has to be correct in BEC. This means that the status of OMNY pins within OMNY ("O") as well as the shuttles has to be correct, the pin status within the shuttles ("A", "B", "C"), as well as the status of the shuttles within the OMNY parking. This loading status is handled via a OMNY samples device: `dev.omny_samples` @@ -115,14 +117,15 @@ Once the sample places are set correctly and checked by using `omny.otransfer_st | Command | Explanation | | --- | --- | | `omny.otransfer_help()` | print a brief help | -| `omny.otransfer_park_slot(slot)` | drive the __parking station__ to place for sample transfer from __ | -| `omny.otransfer_park_loadlock_slot(slot)` | drive the __parking station__ to load __ with the loadlock | -| `omny.otransfer_get_sample(position)` | pick with the gripper from __ | -| `omny.otransfer_put_sample(position)` | put with the gripper to __ | +| `omny.otransfer_park_slot(slot)` | drive the __parking station__ to place for sample transfer from _<slot>_ | +| `omny.otransfer_park_loadlock_slot(slot)` | drive the __parking station__ to load _<slot>_ with the loadlock | +| `omny.otransfer_get_sample(position)` | pick with the gripper from _<position>_ | +| `omny.otransfer_put_sample(position)` | put with the gripper to _<position>_ | For transfer the __sample stage__ is refered to as _position_ 0. Advanced commands ... in case something goes wrong + | Command | Explanation | | --- | --- | | `omny._otransfer_gripper_up()` | move gripper up | @@ -134,11 +137,11 @@ When closing a shuttle of the shield, the gripper will be moved to the parking p ### Status of OMNY -To see the status of the insrument, following commands can be used. Most of the components mentioned below are controlled via devices with naming starting with omny. TAB completion on dev.omny can be a quick way to find the commands. +To see the status of the insrument, following commands can be used. Most of the components mentioned below are controlled via devices with naming starting with omny. ++tab++ completion on dev.omny can be a quick way to find the commands. #### Cameras -During operation the BEC GUI will show the relevant cameras or progress information. To manually switch view TAB completion on `omny.omnygui_` will show all options to control the GUI. Most useful +During operation the BEC GUI will show the relevant cameras or progress information. To manually switch view ++tab++ completion on `omny.omnygui_` will show all options to control the GUI. Most useful - `omny.omnygui_show_omnycam_parking()` - `omny.omnygui_show_omnycam_samplestage()` @@ -255,6 +258,7 @@ If the realtime system is restarted, BEC will lose communication. To restart: To show the signal of the interferometers: `omny.show_signal_strength_interferometer()` Typical values with proper alignment, sample stage at the measurement position and laser tracker running are + | Channel | Name | Value | |---------|-----------|----------| | 1 | OSA FZP Y | 5500 | @@ -285,8 +289,10 @@ Some mirrors are regularly automatically aligned, such as the horizontal mirror #### Interferometer feedback commands The closed loop control of the Piezo stages can be controlled by + - `omny.feedback_enable_with_reset()` _There is also an enable without reset, which is used during tomography scans, when using coarse stages to increase the scan range. It should not be required to use manually._ + - `omny.feedback_disable()` - `omny.feedback_status()` @@ -310,6 +316,7 @@ Example: `omny.ofzp_info(6.2)` __Laser feedback will be disabled and thus fine alignment lost if commands are used that move optics stages!__ Following functions exist to move the optics in and out, with self-explaining naming. + - `omny.optics_in()` - `omny.ofzp_in()` - `omny.ofzp_out()` @@ -350,6 +357,7 @@ each mode captures and how to switch between them. #### Overview of the alignment steps There are several corrections applied to maintain the sample in the FOV: + 1. Mirror calibration 1. X-ray eye alignment 1. Ptychography fine alignment (improvement of the X-ray eye alignment step) @@ -358,6 +366,7 @@ There are several corrections applied to maintain the sample in the FOV: #### XrayEye and sample alignment Within a usual work-flow the movement of the X-ray eye is mostly moved automatically to the correct position. For manual movements use + | Command | Explanation | | --- | --- | | omny.oeye_xray_in() | move to the fluorescense microscope in | @@ -448,6 +457,7 @@ Once satisfied with the alignment, the tomography scan can be started by `omny.tomo_scan()` Three modes for angular sampling are implemented and they have different optional parameters for the tomo_scan method: + | tomography mode | parameters and defaults | | --- | --- | | 2 sub-tomograms | subtomo_start=1, start_angle=None | diff --git a/docs/user/ptychography/ptychography.md b/docs/user/ptychography/ptychography.md index b70892b6..045b6810 100644 --- a/docs/user/ptychography/ptychography.md +++ b/docs/user/ptychography/ptychography.md @@ -1,72 +1,26 @@ -(user.ptychography)= # Ptychography Welcome to the ptychography section of the cSAXS beamline. -```{toctree} ---- -maxdepth: 2 -hidden: true ---- +
-flomni/ -lamni/ -omny/ -reconstructions/ +- ![](../../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[flOMNI](flomni.md)** + { .card-heading } -``` + All about the flOMNI instrument +- ![](../../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[LamNI](lamni.md)** + { .card-heading } -*** + All about the LamNI instrument -````{grid} 2 -:gutter: 5 +- ![](../../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[OMNY](omny.md)** + { .card-heading } -```{grid-item-card} -:link: user.ptychography.flomni -:link-type: ref -:img-top: /assets/biotech.svg -:text-align: center -:class-item: index-card + All about the OMNY instrument -## flOMNI +- ![](../../assets/receipt_long.svg){ width="32" height="32" .middle .card-icon } **[Ptychoshelves](reconstructions.md)** + { .card-heading } -All about the flOMNI instrument -``` + All about ptychography reconstructions -```{grid-item-card} -:link: user.ptychography.lamni -:link-type: ref -:img-top: /assets/biotech.svg -:text-align: center -:class-item: index-card - -## LamNI - -All about the LamNI instrument -``` - -```{grid-item-card} -:link: user.ptychography.omny -:link-type: ref -:img-top: /assets/biotech.svg -:text-align: center -:class-item: index-card - -## OMNY - -All about the OMNY instrument -``` - -```{grid-item-card} -:link: user.ptychography.reconstructions -:link-type: ref -:img-top: /assets/receipt_long.svg -:text-align: center -:class-item: index-card - -## Ptychoshelves - -All about ptychography reconstructions -``` - -```` \ No newline at end of file +
diff --git a/docs/user/ptychography/reconstructions.md b/docs/user/ptychography/reconstructions.md index 3c126e22..f17cb23e 100644 --- a/docs/user/ptychography/reconstructions.md +++ b/docs/user/ptychography/reconstructions.md @@ -1,4 +1,3 @@ -(user.ptychography.reconstructions)= # Ptychoshelves Check it out [here](https://www.dora.lib4ri.ch/psi/islandora/object/psi%3A31264). diff --git a/docs/user/saxs/online_integration.md b/docs/user/saxs/online_integration.md index 6ff984f1..6d0ece04 100644 --- a/docs/user/saxs/online_integration.md +++ b/docs/user/saxs/online_integration.md @@ -1,37 +1,35 @@ -(user.saxs.online_integration)= # Setup online radial integration on Jungfraujoch 1. **Calibrate the detector using pyFAI.** - Analyze a calibration scan carefully with `pyFAI` and save the resulting **PONI** file and **pixel mask**. Also determine the beam center position. + Analyze a calibration scan carefully with `pyFAI` and save the resulting **PONI** file and **pixel mask**. Also determine the beam center position. - :::{note} - As of 2026-06-18, Jungfraujoch only accepts `uint32` TIFF mask files. If the mask generated by `pyFAI` is stored as `uint8`, it needs to be converted to the required format before uploading. - To do this (from the home directory `/sls/x12sa/data/[p-group]/raw/`): + !!! note + As of 2026-06-18, Jungfraujoch only accepts `uint32` TIFF mask files. If the mask generated by `pyFAI` is stored as `uint8`, it needs to be converted to the required format before uploading. + To do this (from the home directory `/sls/x12sa/data/[p-group]/raw/`): + + - Activate the python environment: `source mask/.mask/bin/activate` + - Run `python convert_mask_format.py -i -o ` - - Activate the python environment: `source mask/.mask/bin/activate` - - Run `python convert_mask_format.py -i -o ` - ::: 2. **Update the BEC configuration.** - Update the detector distance and beam center coordinates in the BEC configuration files using the calibration results. + Update the detector distance and beam center coordinates in the BEC configuration files using the calibration results. 3. **Configure Jungfraujoch.** - Open the **Jungfraujoch Expert Configuration** panel in the frontend interface, for example: + Open the **Jungfraujoch Expert Configuration** panel in the frontend interface, for example: - ```text - http://sls-jfjoch-001:8080/frontend - ``` + ```text + http://sls-jfjoch-001:8080/frontend + ``` - - Upload the pixel mask under **Pixel Mask**. - - Fill in the required parameters under **Azimuthal Integration Settings**. - - Make sure to enable **Force CPU calculation in FPGA workflow**. - - After uploading a new configuration, do not press "initialize", as this will remove all the previously uploaded configuration. + - Upload the pixel mask under **Pixel Mask**. + - Fill in the required parameters under **Azimuthal Integration Settings**. + - Make sure to enable **Force CPU calculation in FPGA workflow**. + - After uploading a new configuration, do not press "initialize", as this will remove all the previously uploaded configuration. 4. **Detector rotation (if required).** - :::{note} - Adding rotation of the detector still needs to be documented (likely configured in the BEC configuration). - ::: + !!! note + Adding rotation of the detector still needs to be documented (likely configured in the BEC configuration). diff --git a/docs/user/saxs/saxs.md b/docs/user/saxs/saxs.md index abaa235b..727d8d19 100644 --- a/docs/user/saxs/saxs.md +++ b/docs/user/saxs/saxs.md @@ -1,39 +1,15 @@ -(user.saxs)= # SAXS Welcome to the SAXS section of the cSAXS beamline. -```{toctree} ---- -maxdepth: 2 -hidden: true ---- +
-online_integration +- ![](../../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[Online integration](online_integration.md)** + { .card-heading } -``` - - -*** - -````{grid} 2 -:gutter: 5 - -```{grid-item-card} -:link: user.saxs.online_integration -:link-type: ref -:img-top: /assets/biotech.svg -:text-align: center -:class-item: index-card - -## Online integration - -Setup of online radial integration on Jungfraujoch. -``` - -```` + Setup of online radial integration on Jungfraujoch. +
## Reference documents -- {download}`SAXS standards plate (PDF) ` - +- [SAXS standards plate (PDF)](SAXS_standards_plate.pdf) diff --git a/docs/user/user.md b/docs/user/user.md index 763d47d2..b93c7da0 100644 --- a/docs/user/user.md +++ b/docs/user/user.md @@ -1,72 +1,26 @@ -(user)= # User Welcome to the User section of the cSAXS beamline. -```{toctree} ---- -maxdepth: 2 -hidden: true ---- +
-before_you_arrive/before_you_arrive.md -ptychography/ptychography.md -saxs/saxs.md -data_analysis/data_analysis.md +- ![](../assets/receipt_long.svg){ width="32" height="32" .middle .card-icon } **[Before you arrive](before_you_arrive/before_you_arrive.md)** + { .card-heading } -``` + Learn what to do before you arrive to the beamline. +- ![](../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[Ptychography](ptychography/ptychography.md)** + { .card-heading } -*** + All about ptychography measurements and reconstructions. -````{grid} 2 -:gutter: 5 +- ![](../assets/biotech.svg){ width="32" height="32" .middle .card-icon } **[SAXS](saxs/saxs.md)** + { .card-heading } -```{grid-item-card} -:link: user.before_you_arrive -:link-type: ref -:img-top: /assets/receipt_long.svg -:text-align: center -:class-item: index-card + All about SAXS measurements and analysis. -## Before you arrive +- ![](../assets/programming.svg){ width="32" height="32" .middle .card-icon } **[Data analysis](data_analysis/data_analysis.md)** + { .card-heading } -Learn what to do before you arrive to the beamline. -``` + All about data analysis during the beamtime. -```{grid-item-card} -:link: user.ptychography -:link-type: ref -:img-top: /assets/biotech.svg -:text-align: center -:class-item: index-card - -## Ptychography - -All about ptychography measurements and reconstructions. -``` - -```{grid-item-card} -:link: user.saxs -:link-type: ref -:img-top: /assets/biotech.svg -:text-align: center -:class-item: index-card - -## SAXS - -All about SAXS measurements and analysis. -``` -```{grid-item-card} -:link: user.data_analysis -:link-type: ref -:img-top: /assets/programming.svg -:text-align: center -:class-item: index-card - -## Data analysis - -All about data analysis during the beamtime. -``` - - -```` \ No newline at end of file +
diff --git a/pyproject.toml b/pyproject.toml index ba3b703a..4110f2b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ dependencies = [ ] [project.optional-dependencies] +docs = ["zensical", "pymdown-extensions"] allied_vision = [ "pygobject<3.52", # for the AlliedVision Alvium camera (native Aravis/GenICam, no EPICS IOC) # pinned below 3.52: that version switched to requiring diff --git a/zensical.toml b/zensical.toml new file mode 100644 index 00000000..37fe217e --- /dev/null +++ b/zensical.toml @@ -0,0 +1,88 @@ +[project] +site_name = "SLS cSAXS" +site_url = "https://sls-csaxs.readthedocs.io/en/latest/" +site_description = "User and developer documentation for the cSAXS beamline" +site_author = "Paul Scherrer Institute" +repo_url = "https://gitea.psi.ch/bec/csaxs_bec" +repo_name = "bec/csaxs_bec" +copyright = "Copyright © Paul Scherrer Institute" +docs_dir = "docs" +site_dir = "site" +extra_css = ["stylesheets/extra.css"] +# Preserve Sphinx's existing page URLs. +use_directory_urls = false +exclude_docs = """ +/plans/ +/_build/ +/api_reference/ +*.log +/objects.inv +/developer/ptouch_label_printer_plan.md +""" +nav = [ + { "Home" = "index.md" }, + { "Introduction" = "introduction/introduction.md" }, + { "Safety" = "safety/safety.md" }, + { "User guide" = [ + { "Overview" = "user/user.md" }, + { "Before you arrive" = "user/before_you_arrive/before_you_arrive.md" }, + { "Ptychography" = [ + { "Overview" = "user/ptychography/ptychography.md" }, + { "flOMNI" = "user/ptychography/flomni.md" }, + { "LamNI" = "user/ptychography/lamni.md" }, + { "OMNY" = "user/ptychography/omny.md" }, + { "Ptychoshelves" = "user/ptychography/reconstructions.md" }, + ] }, + { "SAXS" = [ + { "Overview" = "user/saxs/saxs.md" }, + { "Online integration" = "user/saxs/online_integration.md" }, + ] }, + { "Data analysis" = [ + { "Overview" = "user/data_analysis/data_analysis.md" }, + { "Computing" = "user/data_analysis/computing.md" }, + ] }, + ] }, + { "Developer guide" = [ + { "Overview" = "developer/developer.md" }, + { "Editing the documentation" = "developer/editing_docs.md" }, + { "LamNI smear aid architecture" = "developer/lamni_smear_architecture.md" }, + { "PandaBox free-running setup" = "developer/panda_box_free_running_setup.md" }, + { "PandaBox data schema" = "developer/panda_box_free_running_data_schema.md" }, + ] }, +] + +[project.theme] +language = "en" +features = ["navigation.tabs", "navigation.sections", "navigation.top", "content.code.copy", "search.highlight"] + +[[project.theme.palette]] +media = "(prefers-color-scheme)" +toggle.icon = "lucide/sun-moon" +toggle.name = "Switch to light mode" + +[[project.theme.palette]] +media = "(prefers-color-scheme: light)" +scheme = "default" +toggle.icon = "lucide/sun" +toggle.name = "Switch to dark mode" + +[[project.theme.palette]] +media = "(prefers-color-scheme: dark)" +scheme = "slate" +toggle.icon = "lucide/moon" +toggle.name = "Switch to system preference" + +[project.markdown_extensions.admonition] +[project.markdown_extensions.attr_list] +[project.markdown_extensions.md_in_html] +[project.markdown_extensions.pymdownx.betterem] +smart_enable = "all" +[project.markdown_extensions.pymdownx.highlight] +[project.markdown_extensions.pymdownx.keys] +[project.markdown_extensions.pymdownx.superfences] +[project.markdown_extensions.pymdownx.tabbed] +alternate_style = true +[project.markdown_extensions.pymdownx.tasklist] +custom_checkbox = true +[project.markdown_extensions.toc] +permalink = true