diff --git a/.github/workflows/build_documentation.yml b/.github/workflows/build_documentation.yml index 64ef03451..d8f278f1a 100644 --- a/.github/workflows/build_documentation.yml +++ b/.github/workflows/build_documentation.yml @@ -64,7 +64,7 @@ jobs: cache: 'pip' - name: Install Python Packages - run: pip install sphinx sphinx_rtd_theme breathe pyyaml jinja2 + run: pip install sphinx sphinx_rtd_theme breathe pyyaml jinja2 numpy - name: Build Documentation diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 4232a4f46..dbf736a38 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -35,6 +35,7 @@ set(SPHINX_SOURCE_FILES src/consuming.rst src/dependencies.rst src/detector.rst + src/pyctb.rst src/index.rst src/installation.rst src/pydetector.rst @@ -71,6 +72,8 @@ set(SPHINX_SOURCE_FILES src/softwarearchitecture.rst src/configcommands.rst src/Versioning.rst + src/Testing.rst + src/pypower.rst ) foreach(filename ${SPHINX_SOURCE_FILES}) @@ -104,7 +107,7 @@ add_custom_target(docs gendoc COMMAND python gen_server_doc.py COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} - COMMAND ${SPHINX_EXECUTABLE} -a -b html + COMMAND ${SPHINX_EXECUTABLE} -W -a -b html -Dbreathe_projects.slsDetectorPackage=${CMAKE_CURRENT_BINARY_DIR}/xml -c "${SPHINX_BUILD}" ${SPHINX_BUILD}/src @@ -112,7 +115,7 @@ add_custom_target(docs COMMENT "Generating documentation with Sphinx") add_custom_target(rst - COMMAND ${SPHINX_EXECUTABLE} -a -b html + COMMAND ${SPHINX_EXECUTABLE} -W -a -b html -Dbreathe_projects.slsDetectorPackage=${CMAKE_CURRENT_BINARY_DIR}/xml -c "${SPHINX_BUILD}" ${SPHINX_BUILD}/src diff --git a/docs/conf.py.in b/docs/conf.py.in index 374fc84e0..827d2528c 100644 --- a/docs/conf.py.in +++ b/docs/conf.py.in @@ -48,6 +48,8 @@ templates_path = ['_templates'] # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +suppress_warnings = ["duplicate_declaration.cpp",] + # -- Options for HTML output ------------------------------------------------- diff --git a/docs/src/Testing.rst b/docs/src/Testing.rst index ad67326d8..99dd202da 100644 --- a/docs/src/Testing.rst +++ b/docs/src/Testing.rst @@ -67,12 +67,14 @@ This runs all tests marked with the tag ``[.detectorintegration]`` for all detec If you want to run them for a specific virtual detector or a specific test use the following command: .. code-block:: console + cd build python bin/test_simulators.py --servers jungfrau --test "[dacs]" You can exclude specific tests by adding the option ``~[]``. Again, we assume that this marker is added to the tests that you want to exclude. .. code-block:: console + cd build python bin/test_simulators.py --servers eiger jungfrau moench --test "[detectorintegration]~[disable_check_data_file]" @@ -98,6 +100,7 @@ If a test requires a detector mark them with the pytest marker ``@pytest.mark.de To run only tests requiring virtual detectors use the following command: .. code-block:: console + #in build python -m pytest -m detectorintegration ../python/tests/ diff --git a/docs/src/dependencies.rst b/docs/src/dependencies.rst index a4b02f98e..4a740c68a 100644 --- a/docs/src/dependencies.rst +++ b/docs/src/dependencies.rst @@ -49,9 +49,15 @@ GUI * Qt 5.9 * Qwt 6.1.5 (packaged in libs) ------------------------ -Moench executables ------------------------ +.. note:: + + Qwt is bundled in libs. One does not need to pre-install it on the system. + +----------------------------------------------------- +Dependencies to build Moench and Jungfrau executables +----------------------------------------------------- + +To build the Moench and Jungfrau executables for preprocessing and calibration the following dependencies are needed: * libtiff diff --git a/docs/src/gendoc.cpp b/docs/src/gendoc.cpp index 2854f6d22..156d04c9b 100644 --- a/docs/src/gendoc.cpp +++ b/docs/src/gendoc.cpp @@ -45,13 +45,16 @@ int main() { for (const auto &cmd : commands) { std::ostringstream os; - std::cout << cmd << '\n'; caller.call(cmd, {}, -1, slsDetectorDefs::HELP_ACTION, os); auto tmp = os.str().erase(0, cmd.size()); auto usage = tmp.substr(0, tmp.find_first_of('\n')); tmp.erase(0, usage.size()); auto help = replace_all(tmp, "\n\t", "\n\t\t| "); + + if (help.back() != '\n') { + help.push_back('\n'); + } fs << '\t' << cmd << usage << help << "\n"; } diff --git a/docs/src/index.rst b/docs/src/index.rst index 035167215..498543384 100644 --- a/docs/src/index.rst +++ b/docs/src/index.rst @@ -48,7 +48,9 @@ slsDetectorPackage pygettingstarted pydetector + pyctb pyenums + pypower pyexamples pyPatternGenerator pattern diff --git a/docs/src/pyctb.rst b/docs/src/pyctb.rst new file mode 100644 index 000000000..a942d253f --- /dev/null +++ b/docs/src/pyctb.rst @@ -0,0 +1,15 @@ +Ctb +===================================================== + +.. py:currentmodule:: slsdet + +.. autoclass:: Ctb + :members: + :undoc-members: + :show-inheritance: + :inherited-members: + + + + + diff --git a/docs/src/pypower.rst b/docs/src/pypower.rst new file mode 100644 index 000000000..095edf637 --- /dev/null +++ b/docs/src/pypower.rst @@ -0,0 +1,12 @@ +Power Supply +=============== + +Helper class to control power supplies on the Chip Test Board (CTB, Xilinx CTB). + +.. py:currentmodule:: slsdet + +.. autoclass:: Power + :members: + :undoc-members: + :show-inheritance: + :inherited-members: \ No newline at end of file diff --git a/python/slsdet/ctb.py b/python/slsdet/ctb.py index 1295af9cb..7510940c2 100644 --- a/python/slsdet/ctb.py +++ b/python/slsdet/ctb.py @@ -24,4 +24,4 @@ class Ctb(Detector): @property def powers(self): - return self._powers \ No newline at end of file + return self._powers diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 98fcfbbac..fd00d3962 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -804,10 +804,10 @@ class Detector(CppDetectorApi): Note ---- Sets up the following for every module:\n - \t\t[Eiger] txdelay_left to (2 * mod_index * n_delay), \n - \t\t[Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and \n - \t\t[Eiger] txdelay_frame to (2 *num_modules * n_delay) \n - \t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay)\n\n + \t\t[Eiger] txdelay_left to (2 \* mod_index \* n_delay), \n + \t\t[Eiger] txdelay_right to ((2 \* mod_index + 1) \* n_delay) and \n + \t\t[Eiger] txdelay_frame to (2 \* num_modules \* n_delay) \n + \t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules \* n_delay)\n\n Please refer txdelay_left, txdelay_right and txdelay_frame for details. """ return self.getTransmissionDelay() @@ -1284,10 +1284,10 @@ class Detector(CppDetectorApi): @property def zmqhwm(self): """ - Client's zmq receive high water mark. Default is the zmq library's default (1000), can also be set here using -1. - This is a high number and can be set to 2 for gui purposes. + Client's zmq receive high water mark. Default is the zmq library's default (1000), can also be set here using -1. + This is a high number and can be set to 2 for gui purposes. One must also set the receiver's send high water mark to similar value. Final effect is sum of them. - Setting it via command line is useful only before zmq enabled (before opening gui). + Setting it via command line is useful only before zmq enabled (before opening gui). """ return self.getClientZmqHwm() @@ -2218,13 +2218,16 @@ class Detector(CppDetectorApi): @property @element def threshold(self): - """[Eiger][Mythen3] Threshold in eV + """ + [Eiger][Mythen3] Threshold in eV Note ---- - To change settings as well or set threshold without trimbits, use setThresholdEnergy. + To change settings as well or set threshold without trimbits, + use setThresholdEnergy. - :setter: It loads trim files from settingspath.\n [Mythen3] An energy of -1 will pick up values from detector. + :setter: It loads trim files from settingspath.\n + [Mythen3] An energy of -1 will pick up values from detector. """ if self.type == detectorType.MYTHEN3: