From 2e6014c5ea155e3b99d3903491ede0028ccea6cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:32:33 +0100 Subject: [PATCH 1/7] implement the packaging using a pyproject.toml file and hatch --- pyproject.toml | 66 ++++++++++++++++++++++++++ requirements.txt | 9 ---- setup.py | 3 ++ src/pymodaq_plugin_manager/VERSION | 1 - src/pymodaq_plugin_manager/__init__.py | 7 +-- 5 files changed, 71 insertions(+), 15 deletions(-) create mode 100644 pyproject.toml delete mode 100644 requirements.txt delete mode 100644 src/pymodaq_plugin_manager/VERSION diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..ad8e82a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,66 @@ +[build-system] +requires = ["hatchling>=1.9.0", "hatch-vcs", "toml"] +build-backend = "hatchling.build" + +[project] +name = "pymodaq_plugin_manager" +dynamic = [ + "version", +] +description = "Manager and interface to list, install or remove PyMoDAQ's plugins" +readme = "README_base.md" +license = { file="LICENSE" } +requires-python = ">=3.9" +authors = [ + { name = "Sébastien Weber", email = "sebastien.weber@cemes.fr" }, +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Other Environment", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Scientific/Engineering :: Human Machine Interfaces", + "Topic :: Scientific/Engineering :: Visualization", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Software Development :: User Interfaces", +] + +dependencies = [ + 'pymodaq', + 'distlib', + 'jsonschema', + 'pytablewriter', + 'requests', + 'yawrap', + 'lxml', + 'readme_renderer', + 'chardet', + 'packaging' +] + + +[project.urls] +Homepage = "http://pymodaq.cnrs.fr" +Source = "https://github.com/PyMoDAQ/pymodaq_plugins_manager" +Tracker = "https://github.com/PyMoDAQ/pymodaq_plugins_manager/issues" + +[tool.hatch.version] +source = "vcs" +fallback-version = '1.2.4' + +[tool.hatch.build.targets.sdist] +include = [ + "/src", +] + + +[project.scripts] +plugin_manager = 'pymodaq_plugin_manager.manager:main' +write_plugins_doc = 'pymodaq_plugin_manager.validate:write_plugin_doc' +plugin_checker = 'pymodaq_plugin_manager.compatibility_checker:main' diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 29bba12..0000000 --- a/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -chardet -distlib -jsonschema -pytablewriter -requests -yawrap -lxml -readme_renderer -packaging diff --git a/setup.py b/setup.py index 8421c2a..63a9bfa 100644 --- a/setup.py +++ b/setup.py @@ -45,6 +45,9 @@ 'yawrap', 'lxml', 'readme_renderer', + 'chardet', + 'packaging' + ], **setupOpts ) diff --git a/src/pymodaq_plugin_manager/VERSION b/src/pymodaq_plugin_manager/VERSION deleted file mode 100644 index e8ea05d..0000000 --- a/src/pymodaq_plugin_manager/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.2.4 diff --git a/src/pymodaq_plugin_manager/__init__.py b/src/pymodaq_plugin_manager/__init__.py index 4394b44..9fdabf2 100644 --- a/src/pymodaq_plugin_manager/__init__.py +++ b/src/pymodaq_plugin_manager/__init__.py @@ -1,7 +1,4 @@ -import json -from pathlib import Path -base_path = Path(__file__).parent +from pymodaq_utils.utils import get_version -with open(str(Path(__file__).parent.joinpath('VERSION')), 'r') as fvers: - __version__ = fvers.read().strip() +__version__ = get_version('pymodaq_plugin_manager') From c6c1bad885c100945efe15f7d41ae9be8b22c2da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:33:19 +0100 Subject: [PATCH 2/7] move the compatibility checker app to src and create a console script from there, see pyproject.toml --- .../pymodaq_plugin_manager/compatibility_checker.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) rename scripts/compatibility-checker.py => src/pymodaq_plugin_manager/compatibility_checker.py (97%) diff --git a/scripts/compatibility-checker.py b/src/pymodaq_plugin_manager/compatibility_checker.py similarity index 97% rename from scripts/compatibility-checker.py rename to src/pymodaq_plugin_manager/compatibility_checker.py index af0ecb2..6c421f2 100644 --- a/scripts/compatibility-checker.py +++ b/src/pymodaq_plugin_manager/compatibility_checker.py @@ -7,9 +7,8 @@ import importlib import argparse +from pymodaq_plugin_manager.validate import get_pypi_plugins -from pymodaq_plugin_manager.utils import get_pymodaq_version -from pymodaq_plugin_manager.validate import get_plugins, get_pypi_pymodaq, get_package_metadata, get_pypi_plugins def _detect_encoding(filename): ''' @@ -28,6 +27,7 @@ def _detect_encoding(filename): raw = f.read() return chardet.detect(raw)['encoding'] + class PyMoDAQPlugin: ''' A simple class to represent a PyMoDAQ plugin, from a `pip install` @@ -115,6 +115,7 @@ def all_imports_valid(self) -> bool: return len(self._failed_imports) == 0 + def parse_args(): parser = argparse.ArgumentParser(description="Detect incompatibilities between a PyMoDAQ version and the released plugins") parser.add_argument("-r", type=Path, default=Path("reports/"), dest="reports_path", help="Path to the reports folder (default: reports/)") @@ -123,6 +124,7 @@ def parse_args(): return parser.parse_args() + def main(): ''' The script use `get_pypi_plugins` function to get a list of all PyMoDAQ plugins. @@ -156,5 +158,7 @@ def main(): plugin.save_install_report() code = 1 sys.exit(code) + + if __name__ == '__main__': main() From 996c6cf50c6496bfe87305594cf5be0399a83a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:33:32 +0100 Subject: [PATCH 3/7] new generated plugin list --- README.md | 102 +++++++++++++++++++++++----------------------- doc/PluginList.md | 2 +- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 9e42c49..85ed7d0 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,51 @@ -# PyMoDAQ Plugin Manager - -[](https://pypi.org/project/pymodaq_plugin_manager/) -[](https://pymodaq.readthedocs.io/en/stable/?badge=latest) -[](https://github.com/PyMoDAQ/pymodaq_plugin_manager) - - -A plugin manager for PyMoDAQ, Modular Data Acquisition with Python. - -Give a list of available, installable or updatable plugins compatible with pymodaq - -# PyMoDAQ Plugins -| Repo Name | Authors | Version plugin | Instruments | -| ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Alcatel |
  • Titouan Gadeyne (titouan.gadeyne@cea.fr)
| 1.1.0 | Viewer0D
  • **ACM1000**: Alcatel ACM 1000 six-port gauge controller
| -| Amplitude |
  • _S. J. Weber
| 0.1.1 | Viewer0D
  • **AmplitudeSystemsCRC16**: Let you control the laser settings and grab info on the laser status (tested on a Satsuma)
| -| Arduino |
  • Sebastien J. Weber (sebastien.weber@cemes.fr)
| 0.0.4 | Actuators
  • **LED**: control of a multicolor LED using three PWM digital outputs and the Telemetrix library.
  • **LEDwithLCD**: same as **LED** actuator but displaying the red, green, blue values on a standard 16x2 liquid crystal
| -| AvaSpec |
  • First Author (myemail@xxx.org)
  • Other author (myotheremail@xxx.org) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
| 0.1.2 | Actuators
  • **yyy**: control of yyy actuators
  • **xxx**: control of xxx actuators
Viewer0D
  • **yyy**: control of yyy 0D detector
  • **xxx**: control of xxx 0D detector
Viewer1D
  • **yyy**: control of yyy 1D detector
  • **xxx**: control of xxx 1D detector
Viewer2D
  • **yyy**: control of yyy 2D detector
  • **xxx**: control of xxx 2D detector
| -| Basler |
  • Benedikt Burger
| 0.1.1 | Actuators
    Viewer0D
      Viewer1D
        Viewer2D
        • **Basler**: control of Basler cameras
        | -| Bnc |
        • Christian Cabello
        | 0.0.6 | Actuators
        • **BNC**: control of BNC575 Delay Generator
        Viewer0D
          Viewer1D
            Viewer2D
              | -| Crystal_technology |
              • Sébastien J. Weber (sebastien.weber@cnrs.fr) .. if needed use this field Contributors ============ * First Contributor * Other Contributors
              | 0.0.1 | Actuators
              • **AOTFPro**: control of the AOTF from YSl and Crystal Technology
              Viewer0D
                Viewer1D
                  Viewer2D
                    | -| Femto |
                    • _S. J. Weber
                    | 0.1.0 | Viewer1D
                    • **femto**: Fake detector mocking typically a spectrometer acquiring FROG traces
                    | -| Flim |
                    • Sebastien J. Weber
                    | 0.1.0 | ViewerND
                    • **FLIM**: FLIM using piezoconcept XY stage and picoquant timeharp TH260"
                    | -| Greateyes |
                    • Romain Geneaux
                    | 1.0.2 | Viewer2D
                    • **GreateyesCCD**: Greateyes CCD cameras using the SDK
                    | -| Hamamatsu |
                    • Romain Géneaux (romain.geneaux@cea.fr)
                    • Bastien Bégon (bastien.begon@crpp.cnrs.fr)
                    | 0.3.0 | with pythonnet (Viewer1D).
                    • **Mini-spectrometers**: USB spectrometers from the Hamamatsu Mini-spectrometers series.
                    Viewer1D
                    • **Mini-spectrometers**: USB spectrometers from the Hamamatsu Mini-spectrometers series.
                    DCAM API with PyLabLib (Viewer2D) and Hamamatsu minispectrometers using .NET driver
                    • **Mini-spectrometers**: USB spectrometers from the Hamamatsu Mini-spectrometers series.
                    • **Cameras using DCAM-API**: Hardware ROI (region of interest) and binning (1x or 2x)
                    Viewer2D
                    • **Cameras using DCAM-API**: Hardware ROI (region of interest) and binning (1x or 2x)
                    | -| Hinds |
                    • Astha Khandelwal (asthak@iisc.ac.in)
                    • Daichi Kozawa (KOZAWA.Daichi@nims.go.jp) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                    | 0.0.3 | Actuators
                    • **PEM 200**: controller for the Photoelastic modulator
                    .. Viewer0D
                      .. Viewer1D
                        .. Viewer2D
                          | -| Horiba |
                          • Sebastien J. Weber
                          | 2.0.0 | Viewer1D
                          • **Labspec6TCP**: Control of Labspec6 settings and acquisition using TCP/IP communication
                          | -| KDC101 |
                          • Enzo Sebiane (enzo.sebiane@orange.fr)
                          | 1.4.1 | Actuators
                          • **KDC101**
                          Viewer0D
                            Viewer1D
                              Viewer2D
                                | -| Keithley |
                                • Sebastien J. Weber
                                • Sébastien Guerrero (sebastien.guerrero@insa-lyon.fr)
                                | 1.2.0 | Viewer0D
                                • **Keithley_Pico**: Pico-Amperemeter Keithley 648X Series, 6430 and 6514
                                • **Keithley2110**: Multimeter Keithley 2110
                                • **Keithley27XX**: Keithley 27XX Multimeter/Switch System using switching modules from the 7700 series.
                                • **Keithley2100**: Multimeter Keithley 2100
                                | -| MozzaSpectro |
                                • First Author (myemail@xxx.org)
                                • Other author (myotheremail@xxx.org) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                                | 0.1.1 | Actuators
                                • **yyy**: control of yyy actuators
                                • **xxx**: control of xxx actuators
                                Viewer0D
                                • **yyy**: control of yyy 0D detector
                                • **xxx**: control of xxx 0D detector
                                Viewer1D
                                • **yyy**: control of yyy 1D detector
                                • **xxx**: control of xxx 1D detector
                                Viewer2D
                                • **yyy**: control of yyy 2D detector
                                • **xxx**: control of xxx 2D detector
                                | -| Newport |
                                • Sebastien J. Weber
                                • David Bresteau (david.bresteau@cea.fr)
                                • Sébastien Quistrebert (sebastien.quistrebert@ens-paris-saclay.fr)
                                • Bastien Bégon (bastien.begon@crpp.cnrs.fr)
                                • Elias Sfeir
                                • Aurore Finco (aurore.finco@umontpellier.fr)
                                | 1.4.1 | Actuators
                                • **Conex**: Piezo actuators from the CONEX-AGAP series"
                                • **Newport_ESP100**: ESP100 motion controllers
                                • **AgilisSerial**: for controllers AG-UC8 and AG-UC2 tested with motorized mounts AG-M100N (no encoder)
                                • **XPS-Q8**: 8-axis Universal Motion Controller/Driver, ethernet
                                • **SMC100**: Single axis motion controller
                                • **Picomotor8742**: 4-axis open-loop motion controller
                                | -| Nkt |
                                • Bastien Bégon (bastien.begon@crpp.cnrs.fr) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                                | 1.0.0 | Actuators
                                • **SuperK Extreme**: Supercontinuum white light laser plugin including emission state and power control. Turn on laser by setting the output value to 1 and turn it off with 0.
                                | -| Oceaninsight |
                                • Sebastien J. Weber
                                • Nicolas Tappy
                                | 1.1.1 | Viewer1D
                                • **Omnidriver**: Control of Spectrometer using the Omnidriver library (should be installed)
                                • **Seabreeze** : If the Omnidriver library is not available, a plugin implementation based on seabreeze is provided: https://python-seabreeze.readthedocs.io/en/latest/index.html
                                | -| Opencv |
                                • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                | 0.0.2 | Viewer2D
                                • **opencv**: control of cameras using the opencv library (mainly webcams)
                                | -| Optosigma |
                                • Amelie Deshazer
                                • Daichi Kozawa
                                | 0.4.0 | Actuators
                                • **GSC-02C**: controller of GSC 2 Axis Stage Controller
                                • **RMC-102**: controller of RMC-102 Remote Micrometer Controller
                                • **SHRC203**: controller of SHRC203 3 Axis Stage Controller
                                • **SBIS26**: controller of SBIS26 Driver Integrated Motorized Stage
                                • **RMC-102 USB Driver(for Windows 7/8.1/10)32/64bit *for Remote Acutuator**
                                | -| Physical_measurements |
                                • Sebastien J. Weber
                                | 0.1.1 | Viewer0D
                                • **Keithley_Pico**: Pico-Amperemeter Keithley 648X Series, 6430 and 6514
                                • **Keithley2110**: Multimeter Keithley 2110
                                • **Lockin7270**: Lockin Amplifier Ametek 7270
                                • **LockinSR830**: LockIn Amplifier SR830
                                Viewer1D
                                • **LecroyWaveRunner6Zi**: Oscilloscope LecroyWaveRunner 6Zi
                                • **Tektronix**: Oscilloscope Tektronix MDO Series
                                • **Picoscope**: Picoscope from Picotechnology
                                Viewer2D
                                • **OpenCVCam**: Webcams control using the opencv library
                                • **GenICam**: GeniCam compliant cameras suing the harvester libary
                                • **TIS**: The Imaging Source TIS cameras
                                | -| Physik_instrumente |
                                • Sebastien J. Weber
                                | 1.2.0 | Actuators
                                • **PI**: All stages compatible with the GCS2 library. Tested on E-816, C-863 (mercury DC/Stepper), C-663, E-545.
                                • **PILegacy**: All stages compatible with the GCS2 library. Tested on E-816, C-863 (mercury DC/Stepper), C-663, E-545.
                                • **PI_MMCLegacy**: old controller and stages using the 32 bits MMC dll (requires 32bit python) C-862 controller. Using
                                • **PI_MMC**: old controller and stages using the 32 bits MMC dll (requires 32bit python) C-862 controller. Using a
                                | -| Picoquant |
                                • Sebastien J. Weber
                                | 0.1.0 | Viewer1D
                                • **TH260**: Timeharp TH260 for *photon counting* and *time tagging*
                                | -| Piezoconcept |
                                • Sebastien J. Weber
                                | 1.1.0 | Actuators
                                • **PiezoConcept** : piezoconcept stages (tested on BIO2.100) using the usual serial commands
                                • **PiezoConceptPI**: Special firmware to emulate functions form the GCS2 library from Physik Instrumente
                                | -| Piezosystemjena |
                                • Nicolas Tappy
                                | 0.1.0 | Actuators
                                  | -| Princeton_instruments |
                                  • Nicolas Tappy
                                  | 0.1.0 | Viewer2D
                                  • **picam**: Control of cameras using the picam library.
                                  | -| Pylablib_camera |
                                  • Romain Géneaux (romain.geneaux@cea.fr)
                                  | 1.0.1 | Viewer2D
                                  • **GenericPylablibCamera**: Generic plugin for a camera, handling hardware ROI, hardware binning, grabbing frames using a callback, switching between 1D and 2D depending on data shape, and optional framerate display. The class needs to be subclassed in order to define two simple ``list_cameras`` and ``init_controller`` methods, which depend on the actual camera.
                                  | -| Raspberry |
                                  • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                  | 0.0.2 | Viewer2D
                                  • **picamera**: control of the integrated pi camera using the Picamera2 library
                                  | -| Redpitaya |
                                  • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                  | 0.0.3 | Viewer1D
                                  • **RedPitayaSCPI**: perform analog data acquisition using one of the fast channels
                                  | -| Signal_recovery |
                                  • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                  • Louis Grandvaux (louis.grandvaux@espci.fr)
                                  | 0.1.0 | Actuators
                                  • **Lockin_DSP7270**: control of the Lockin DSP7270 model (for instance to control the oscillator frequency)
                                  • **Lockin_DSP7265**: control of the Lockin DSP7265 model (diffenrential measurement not implemented)
                                  Viewer0D
                                  • **Lockin_DSP7270**: control of the Lockin DSP7270 model
                                  • **Lockin_DSP7265**: control of the Lockin DSP7265 model
                                  | -| Smaract |
                                  • David Bresteau (david.bresteau@cea.fr)
                                  • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                  | 2.0.4 | Actuators
                                  • **SmaractMCS** SLC linear stages with sensor (S option) with MCS controller
                                  • **SmaractMCS2** SLC linear stages with sensor (S option) with MCS2 controller
                                  • **SmaractSCU** SLC linear or angular stages with or without sensors using the Instrumental-lib package and the
                                  | -| Srs |
                                  • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                  | 0.0.2 | Viewer0D
                                    | -| Stellarnet |
                                    • Romain Geneaux
                                    | 2.0.1 | Viewer1D
                                    • **Stellarnet**: USB spectrometers made by StellarNet, Inc (https://www.stellarnet.us/spectrometers/).
                                    | -| Tango |
                                    • Aline Vernier (aline.vernier@polytechnique.edu) .. if needed use this field Contributors ============ * None .. if needed use this field
                                    | 1.0.20 | Actuators
                                      Viewer0D
                                        Viewer1D
                                          Viewer2D
                                            | -| Uniblitz |
                                            • Matthieu Guer (matthieu.guer@cea.fr)
                                            • Romain Géneaux (romain.geneaux@cea.fr)
                                            | 0.1.2 | Actuators
                                            • **VLM1**: control of Uniblitz VLM1 Shutter Interface Module by USB. Very basic functionality to switch the shutter, without reading the actual state of the shutter.
                                            | -| Zaber |
                                            • Romain Géneaux
                                            • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                            | 2.0.2 | Actuators
                                            • **Zaber** All motors using the Zaber ASCII Motion Library. Rotations and translations should be both supported (units should adapt to the actuator type), but I only tested translation stages so far.
                                            • **ZaberBinary**: control of zaber actuators using the legacy binary protocol
                                            | +# PyMoDAQ Plugin Manager + +[](https://pypi.org/project/pymodaq_plugin_manager/) +[](https://pymodaq.readthedocs.io/en/stable/?badge=latest) +[](https://github.com/PyMoDAQ/pymodaq_plugin_manager) + + +A plugin manager for PyMoDAQ, Modular Data Acquisition with Python. + +Give a list of available, installable or updatable plugins compatible with pymodaq + +# PyMoDAQ Plugins +| Repo Name | Authors | Version plugin | Instruments | +| ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Alcatel |
                                            • Titouan Gadeyne (titouan.gadeyne@cea.fr)
                                            | 1.1.0 | Viewer0D
                                            • **ACM1000**: Alcatel ACM 1000 six-port gauge controller
                                            | +| Amplitude |
                                            • _S. J. Weber
                                            | 0.1.1 | Viewer0D
                                            • **AmplitudeSystemsCRC16**: Let you control the laser settings and grab info on the laser status (tested on a Satsuma)
                                            | +| Arduino |
                                            • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                            | 0.0.4 | Actuators
                                            • **LED**: control of a multicolor LED using three PWM digital outputs and the Telemetrix library.
                                            • **LEDwithLCD**: same as **LED** actuator but displaying the red, green, blue values on a standard 16x2 liquid crystal
                                            | +| AvaSpec |
                                            • First Author (myemail@xxx.org)
                                            • Other author (myotheremail@xxx.org) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                                            | 0.1.2 | Actuators
                                            • **yyy**: control of yyy actuators
                                            • **xxx**: control of xxx actuators
                                            Viewer0D
                                            • **yyy**: control of yyy 0D detector
                                            • **xxx**: control of xxx 0D detector
                                            Viewer1D
                                            • **yyy**: control of yyy 1D detector
                                            • **xxx**: control of xxx 1D detector
                                            Viewer2D
                                            • **yyy**: control of yyy 2D detector
                                            • **xxx**: control of xxx 2D detector
                                            | +| Basler |
                                            • Benedikt Burger
                                            | 0.1.1 | Actuators
                                              Viewer0D
                                                Viewer1D
                                                  Viewer2D
                                                  • **Basler**: control of Basler cameras
                                                  | +| Bnc |
                                                  • Christian Cabello
                                                  | 0.0.6 | Actuators
                                                  • **BNC**: control of BNC575 Delay Generator
                                                  Viewer0D
                                                    Viewer1D
                                                      Viewer2D
                                                        | +| Crystal_technology |
                                                        • S�bastien J. Weber (sebastien.weber@cnrs.fr) .. if needed use this field Contributors ============ * First Contributor * Other Contributors
                                                        | 0.0.1 | Actuators
                                                        • **AOTFPro**: control of the AOTF from YSl and Crystal Technology
                                                        Viewer0D
                                                          Viewer1D
                                                            Viewer2D
                                                              | +| Femto |
                                                              • _S. J. Weber
                                                              | 0.1.0 | Viewer1D
                                                              • **femto**: Fake detector mocking typically a spectrometer acquiring FROG traces
                                                              | +| Flim |
                                                              • Sebastien J. Weber
                                                              | 0.1.0 | ViewerND
                                                              • **FLIM**: FLIM using piezoconcept XY stage and picoquant timeharp TH260"
                                                              | +| Greateyes |
                                                              • Romain Geneaux
                                                              | 1.0.2 | Viewer2D
                                                              • **GreateyesCCD**: Greateyes CCD cameras using the SDK
                                                              | +| Hamamatsu |
                                                              • Romain G�neaux (romain.geneaux@cea.fr)
                                                              • Bastien B�gon (bastien.begon@crpp.cnrs.fr)
                                                              | 0.3.0 | with pythonnet (Viewer1D).
                                                              • **Mini-spectrometers**: USB spectrometers from the Hamamatsu Mini-spectrometers series.
                                                              Viewer1D
                                                              • **Mini-spectrometers**: USB spectrometers from the Hamamatsu Mini-spectrometers series.
                                                              DCAM API with PyLabLib (Viewer2D) and Hamamatsu minispectrometers using .NET driver
                                                              • **Mini-spectrometers**: USB spectrometers from the Hamamatsu Mini-spectrometers series.
                                                              • **Cameras using DCAM-API**: Hardware ROI (region of interest) and binning (1x or 2x)
                                                              Viewer2D
                                                              • **Cameras using DCAM-API**: Hardware ROI (region of interest) and binning (1x or 2x)
                                                              | +| Hinds |
                                                              • Astha Khandelwal (asthak@iisc.ac.in)
                                                              • Daichi Kozawa (KOZAWA.Daichi@nims.go.jp) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                                                              | 0.0.3 | Actuators
                                                              • **PEM 200**: controller for the Photoelastic modulator
                                                              .. Viewer0D
                                                                .. Viewer1D
                                                                  .. Viewer2D
                                                                    | +| Horiba |
                                                                    • Sebastien J. Weber
                                                                    | 2.0.0 | Viewer1D
                                                                    • **Labspec6TCP**: Control of Labspec6 settings and acquisition using TCP/IP communication
                                                                    | +| KDC101 |
                                                                    • Enzo Sebiane (enzo.sebiane@orange.fr)
                                                                    | 1.4.1 | Actuators
                                                                    • **KDC101**
                                                                    Viewer0D
                                                                      Viewer1D
                                                                        Viewer2D
                                                                          | +| Keithley |
                                                                          • Sebastien J. Weber
                                                                          • S�bastien Guerrero (sebastien.guerrero@insa-lyon.fr)
                                                                          | 1.2.0 | Viewer0D
                                                                          • **Keithley_Pico**: Pico-Amperemeter Keithley 648X Series, 6430 and 6514
                                                                          • **Keithley2110**: Multimeter Keithley 2110
                                                                          • **Keithley27XX**: Keithley 27XX Multimeter/Switch System using switching modules from the 7700 series.
                                                                          • **Keithley2100**: Multimeter Keithley 2100
                                                                          | +| MozzaSpectro |
                                                                          • First Author (myemail@xxx.org)
                                                                          • Other author (myotheremail@xxx.org) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                                                                          | 0.1.1 | Actuators
                                                                          • **yyy**: control of yyy actuators
                                                                          • **xxx**: control of xxx actuators
                                                                          Viewer0D
                                                                          • **yyy**: control of yyy 0D detector
                                                                          • **xxx**: control of xxx 0D detector
                                                                          Viewer1D
                                                                          • **yyy**: control of yyy 1D detector
                                                                          • **xxx**: control of xxx 1D detector
                                                                          Viewer2D
                                                                          • **yyy**: control of yyy 2D detector
                                                                          • **xxx**: control of xxx 2D detector
                                                                          | +| Newport |
                                                                          • Sebastien J. Weber
                                                                          • David Bresteau (david.bresteau@cea.fr)
                                                                          • S�bastien Quistrebert (sebastien.quistrebert@ens-paris-saclay.fr)
                                                                          • Bastien B�gon (bastien.begon@crpp.cnrs.fr)
                                                                          • Elias Sfeir
                                                                          • Aurore Finco (aurore.finco@umontpellier.fr)
                                                                          | 1.4.1 | Actuators
                                                                          • **Conex**: Piezo actuators from the CONEX-AGAP series"
                                                                          • **Newport_ESP100**: ESP100 motion controllers
                                                                          • **AgilisSerial**: for controllers AG-UC8 and AG-UC2 tested with motorized mounts AG-M100N (no encoder)
                                                                          • **XPS-Q8**: 8-axis Universal Motion Controller/Driver, ethernet
                                                                          • **SMC100**: Single axis motion controller
                                                                          • **Picomotor8742**: 4-axis open-loop motion controller
                                                                          | +| Nkt |
                                                                          • Bastien B�gon (bastien.begon@crpp.cnrs.fr) .. if needed use this field Contributors ============ * First Contributor * Other Contributors .. if needed use this field Depending on the plugin type, delete/complete the fields below
                                                                          | 1.0.0 | Actuators
                                                                          • **SuperK Extreme**: Supercontinuum white light laser plugin including emission state and power control. Turn on laser by setting the output value to 1 and turn it off with 0.
                                                                          | +| Oceaninsight |
                                                                          • Sebastien J. Weber
                                                                          • Nicolas Tappy
                                                                          | 1.1.1 | Viewer1D
                                                                          • **Omnidriver**: Control of Spectrometer using the Omnidriver library (should be installed)
                                                                          • **Seabreeze** : If the Omnidriver library is not available, a plugin implementation based on seabreeze is provided: https://python-seabreeze.readthedocs.io/en/latest/index.html
                                                                          | +| Opencv |
                                                                          • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                                                          | 0.0.2 | Viewer2D
                                                                          • **opencv**: control of cameras using the opencv library (mainly webcams)
                                                                          | +| Optosigma |
                                                                          • Amelie Deshazer
                                                                          • Daichi Kozawa
                                                                          | 0.4.0 | Actuators
                                                                          • **GSC-02C**: controller of GSC 2 Axis Stage Controller
                                                                          • **RMC-102**: controller of RMC-102 Remote Micrometer Controller
                                                                          • **SHRC203**: controller of SHRC203 3 Axis Stage Controller
                                                                          • **SBIS26**: controller of SBIS26 Driver Integrated Motorized Stage
                                                                          • **RMC-102 USB Driver(for Windows 7/8.1/10)32/64bit *for Remote Acutuator**
                                                                          | +| Physical_measurements |
                                                                          • Sebastien J. Weber
                                                                          | 0.1.1 | Viewer0D
                                                                          • **Keithley_Pico**: Pico-Amperemeter Keithley 648X Series, 6430 and 6514
                                                                          • **Keithley2110**: Multimeter Keithley 2110
                                                                          • **Lockin7270**: Lockin Amplifier Ametek 7270
                                                                          • **LockinSR830**: LockIn Amplifier SR830
                                                                          Viewer1D
                                                                          • **LecroyWaveRunner6Zi**: Oscilloscope LecroyWaveRunner 6Zi
                                                                          • **Tektronix**: Oscilloscope Tektronix MDO Series
                                                                          • **Picoscope**: Picoscope from Picotechnology
                                                                          Viewer2D
                                                                          • **OpenCVCam**: Webcams control using the opencv library
                                                                          • **GenICam**: GeniCam compliant cameras suing the harvester libary
                                                                          • **TIS**: The Imaging Source TIS cameras
                                                                          | +| Physik_instrumente |
                                                                          • Sebastien J. Weber
                                                                          | 1.2.0 | Actuators
                                                                          • **PI**: All stages compatible with the GCS2 library. Tested on E-816, C-863 (mercury DC/Stepper), C-663, E-545.
                                                                          • **PILegacy**: All stages compatible with the GCS2 library. Tested on E-816, C-863 (mercury DC/Stepper), C-663, E-545.
                                                                          • **PI_MMCLegacy**: old controller and stages using the 32 bits MMC dll (requires 32bit python) C-862 controller. Using
                                                                          • **PI_MMC**: old controller and stages using the 32 bits MMC dll (requires 32bit python) C-862 controller. Using a
                                                                          | +| Picoquant |
                                                                          • Sebastien J. Weber
                                                                          | 0.1.0 | Viewer1D
                                                                          • **TH260**: Timeharp TH260 for *photon counting* and *time tagging*
                                                                          | +| Piezoconcept |
                                                                          • Sebastien J. Weber
                                                                          | 1.1.0 | Actuators
                                                                          • **PiezoConcept** : piezoconcept stages (tested on BIO2.100) using the usual serial commands
                                                                          • **PiezoConceptPI**: Special firmware to emulate functions form the GCS2 library from Physik Instrumente
                                                                          | +| Piezosystemjena |
                                                                          • Nicolas Tappy
                                                                          | 0.1.0 | Actuators
                                                                            | +| Princeton_instruments |
                                                                            • Nicolas Tappy
                                                                            | 0.1.0 | Viewer2D
                                                                            • **picam**: Control of cameras using the picam library.
                                                                            | +| Pylablib_camera |
                                                                            • Romain G�neaux (romain.geneaux@cea.fr)
                                                                            | 1.0.1 | Viewer2D
                                                                            • **GenericPylablibCamera**: Generic plugin for a camera, handling hardware ROI, hardware binning, grabbing frames using a callback, switching between 1D and 2D depending on data shape, and optional framerate display. The class needs to be subclassed in order to define two simple ``list_cameras`` and ``init_controller`` methods, which depend on the actual camera.
                                                                            | +| Raspberry |
                                                                            • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                                                            | 0.0.2 | Viewer2D
                                                                            • **picamera**: control of the integrated pi camera using the Picamera2 library
                                                                            | +| Redpitaya |
                                                                            • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                                                            | 0.0.3 | Viewer1D
                                                                            • **RedPitayaSCPI**: perform analog data acquisition using one of the fast channels
                                                                            | +| Signal_recovery |
                                                                            • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                                                            • Louis Grandvaux (louis.grandvaux@espci.fr)
                                                                            | 0.1.0 | Actuators
                                                                            • **Lockin_DSP7270**: control of the Lockin DSP7270 model (for instance to control the oscillator frequency)
                                                                            • **Lockin_DSP7265**: control of the Lockin DSP7265 model (diffenrential measurement not implemented)
                                                                            Viewer0D
                                                                            • **Lockin_DSP7270**: control of the Lockin DSP7270 model
                                                                            • **Lockin_DSP7265**: control of the Lockin DSP7265 model
                                                                            | +| Smaract |
                                                                            • David Bresteau (david.bresteau@cea.fr)
                                                                            • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                                                            | 2.0.4 | Actuators
                                                                            • **SmaractMCS** SLC linear stages with sensor (S option) with MCS controller
                                                                            • **SmaractMCS2** SLC linear stages with sensor (S option) with MCS2 controller
                                                                            • **SmaractSCU** SLC linear or angular stages with or without sensors using the Instrumental-lib package and the
                                                                            | +| Srs |
                                                                            • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                                                            | 0.0.2 | Viewer0D
                                                                              | +| Stellarnet |
                                                                              • Romain Geneaux
                                                                              | 2.0.1 | Viewer1D
                                                                              • **Stellarnet**: USB spectrometers made by StellarNet, Inc (https://www.stellarnet.us/spectrometers/).
                                                                              | +| Tango |
                                                                              • Aline Vernier (aline.vernier@polytechnique.edu) .. if needed use this field Contributors ============ * None .. if needed use this field
                                                                              | 1.0.21 | Actuators
                                                                                Viewer0D
                                                                                  Viewer1D
                                                                                    Viewer2D
                                                                                      | +| Uniblitz |
                                                                                      • Matthieu Guer (matthieu.guer@cea.fr)
                                                                                      • Romain G�neaux (romain.geneaux@cea.fr)
                                                                                      | 0.1.2 | Actuators
                                                                                      • **VLM1**: control of Uniblitz VLM1 Shutter Interface Module by USB. Very basic functionality to switch the shutter, without reading the actual state of the shutter.
                                                                                      | +| Zaber |
                                                                                      • Romain G�neaux
                                                                                      • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                                                                      | 2.0.2 | Actuators
                                                                                      • **Zaber** All motors using the Zaber ASCII Motion Library. Rotations and translations should be both supported (units should adapt to the actuator type), but I only tested translation stages so far.
                                                                                      • **ZaberBinary**: control of zaber actuators using the legacy binary protocol
                                                                                      | diff --git a/doc/PluginList.md b/doc/PluginList.md index b214821..d409d2c 100644 --- a/doc/PluginList.md +++ b/doc/PluginList.md @@ -35,6 +35,6 @@ | Smaract |
                                                                                      • David Bresteau (david.bresteau@cea.fr)
                                                                                      • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                                                                      | 2.0.4 | Actuators
                                                                                      • **SmaractMCS** SLC linear stages with sensor (S option) with MCS controller
                                                                                      • **SmaractMCS2** SLC linear stages with sensor (S option) with MCS2 controller
                                                                                      • **SmaractSCU** SLC linear or angular stages with or without sensors using the Instrumental-lib package and the
                                                                                      | | Srs |
                                                                                      • Sebastien J. Weber (sebastien.weber@cemes.fr)
                                                                                      | 0.0.2 | Viewer0D
                                                                                        | | Stellarnet |
                                                                                        • Romain Geneaux
                                                                                        | 2.0.1 | Viewer1D
                                                                                        • **Stellarnet**: USB spectrometers made by StellarNet, Inc (https://www.stellarnet.us/spectrometers/).
                                                                                        | -| Tango |
                                                                                        • Aline Vernier (aline.vernier@polytechnique.edu) .. if needed use this field Contributors ============ * None .. if needed use this field
                                                                                        | 1.0.20 | Actuators
                                                                                          Viewer0D
                                                                                            Viewer1D
                                                                                              Viewer2D
                                                                                                | +| Tango |
                                                                                                • Aline Vernier (aline.vernier@polytechnique.edu) .. if needed use this field Contributors ============ * None .. if needed use this field
                                                                                                | 1.0.21 | Actuators
                                                                                                  Viewer0D
                                                                                                    Viewer1D
                                                                                                      Viewer2D
                                                                                                        | | Uniblitz |
                                                                                                        • Matthieu Guer (matthieu.guer@cea.fr)
                                                                                                        • Romain Géneaux (romain.geneaux@cea.fr)
                                                                                                        | 0.1.2 | Actuators
                                                                                                        • **VLM1**: control of Uniblitz VLM1 Shutter Interface Module by USB. Very basic functionality to switch the shutter, without reading the actual state of the shutter.
                                                                                                        | | Zaber |
                                                                                                        • Romain Géneaux
                                                                                                        • Sebastien J. Weber (sebastien.weber@cnrs.fr)
                                                                                                        | 2.0.2 | Actuators
                                                                                                        • **Zaber** All motors using the Zaber ASCII Motion Library. Rotations and translations should be both supported (units should adapt to the actuator type), but I only tested translation stages so far.
                                                                                                        • **ZaberBinary**: control of zaber actuators using the legacy binary protocol
                                                                                                        | From c93e0a43588261ca4bcdd077b14b5d72ccf6ed45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:33:40 +0100 Subject: [PATCH 4/7] new layout using hatch --- .github/workflows/python-publish.yml | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index cc1ffb5..68a46d5 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -8,24 +8,31 @@ on: types: [created] jobs: - deploy: + build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.0 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5.2.0 with: - python-version: '3.x' + python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine toml - - name: Build and publish + pip install hatch hatchling + - name: Get history and tags for SCM versioning to work + run: | + git branch + git fetch --prune --unshallow + git fetch --depth=1 origin +refs/tags/*:refs/tags/* + hatch version + - name: Build + run: hatch build + - name: publish env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + HATCH_INDEX_USER: ${{ secrets.PYPI_USERNAME }} + HATCH_INDEX_AUTH: ${{ secrets.PYPI_PASSWORD }} run: | - python setup.py sdist bdist_wheel - twine upload dist/* + hatch publish From ff79dfc83e1e750a224b955e0db9e96da03f03f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:33:49 +0100 Subject: [PATCH 5/7] new path --- .github/workflows/compatibility.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compatibility.yml b/.github/workflows/compatibility.yml index 18b9dd6..bacf92c 100644 --- a/.github/workflows/compatibility.yml +++ b/.github/workflows/compatibility.yml @@ -36,7 +36,7 @@ jobs: - name: Run script run: | source venv/bin/activate - python scripts/compatibility-checker.py "git+https://github.com/PyMoDAQ/PyMoDAQ.git@${{ matrix.pymodaq-version }}" + python src/pymodaq_plugin_manager/compatibility_checker.py "git+https://github.com/PyMoDAQ/PyMoDAQ.git@${{ matrix.pymodaq-version }}" - name: Upload reports if failed if: failure() From 9ecc6e611f386a8fc8f401b5d13d9a4835ebede0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:33:53 +0100 Subject: [PATCH 6/7] Delete __init__.py --- __init__.py | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 __init__.py diff --git a/__init__.py b/__init__.py deleted file mode 100644 index b28b04f..0000000 --- a/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ - - - From 05f309d900d6128f9edd8606ea0bd30a080b63c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 14 Feb 2025 14:34:07 +0100 Subject: [PATCH 7/7] Update validate.py --- src/pymodaq_plugin_manager/validate.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pymodaq_plugin_manager/validate.py b/src/pymodaq_plugin_manager/validate.py index 7a0cc20..7d7c62f 100644 --- a/src/pymodaq_plugin_manager/validate.py +++ b/src/pymodaq_plugin_manager/validate.py @@ -190,14 +190,14 @@ def get_pypi_plugins(browse_pypi=True, pymodaq_version: Union[Version, str] = No exclude_plugins = ['pymodaq_plugins', 'pymodaq_plugins_orsay', 'pymodaq_plugins_template', - 'pymodaq_plugins_KDC101', + 'pymodaq_plugins_KDC101', #should not exists on its own but should be incorporated into thorlabs 'pymodaq_plugins_AvaSpec', - 'pymodaq_plugins_MozzaSpectro' + 'pymodaq_plugins_MozzaSpectro', ] packages = get_pypi_package_list('pymodaq-plugins', print_method=print_method) pymodaq_latest = Version(get_pypi_pymodaq('pymodaq')['version']) for package in packages: - if package not in exclude_plugins: + if package.replace('-', '_') not in exclude_plugins: print_method(f'Fetching metadata for package {package}') metadata = get_pypi_pymodaq(package, pymodaq_version, pymodaq_latest) if metadata is not None: