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()
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
diff --git a/README.md b/README.md
index 4f0163a..a197900 100644
--- a/README.md
+++ b/README.md
@@ -1,51 +1,52 @@
-# 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 | | 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 | | 0.1.1 | ActuatorsViewer0DViewer1DViewer2D- **Basler**: control of Basler cameras
|
-| Bnc | | 0.0.6 | Actuators- **BNC**: control of BNC575 Delay Generator
Viewer0DViewer1DViewer2D |
-| 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
Viewer0DViewer1DViewer2D |
-| Femto | | 0.1.0 | Viewer1D- **femto**: Fake detector mocking typically a spectrometer acquiring FROG traces
|
-| Flim | | 0.1.0 | ViewerND- **FLIM**: FLIM using piezoconcept XY stage and picoquant timeharp TH260"
|
-| Greateyes | | 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 | | 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 | ActuatorsViewer0DViewer1DViewer2D |
-| 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 | | 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 | | 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 | | 0.1.0 | Viewer1D- **TH260**: Timeharp TH260 for *photon counting* and *time tagging*
|
-| Piezoconcept | | 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 | | 0.1.0 | Actuators |
-| Princeton_instruments | | 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 | | 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 | ActuatorsViewer0DViewer1DViewer2D |
-| 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 | | 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 | | 0.1.1 | ActuatorsViewer0DViewer1DViewer2D- **Basler**: control of Basler cameras
|
+| Bnc | | 0.0.6 | Actuators- **BNC**: control of BNC575 Delay Generator
Viewer0DViewer1DViewer2D |
+| 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
Viewer0DViewer1DViewer2D |
+| Femto | | 0.1.0 | Viewer1D- **femto**: Fake detector mocking typically a spectrometer acquiring FROG traces
|
+| Flim | | 0.1.0 | ViewerND- **FLIM**: FLIM using piezoconcept XY stage and picoquant timeharp TH260"
|
+| Greateyes | | 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 | | 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 | ActuatorsViewer0DViewer1DViewer2D |
+| 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 | | 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 | | 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 | | 0.1.0 | Viewer1D- **TH260**: Timeharp TH260 for *photon counting* and *time tagging*
|
+| Piezoconcept | | 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 | | 0.1.0 | Actuators |
+| Princeton_instruments | | 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 | | 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 | ActuatorsViewer0DViewer1DViewer2D |
+| 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/__init__.py b/__init__.py
deleted file mode 100644
index b28b04f..0000000
--- a/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
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')
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()
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: