Skip to main content

Hassle-free PyQt/PySide interface for multithreaded data acquisition and communication with an I/O device.

Project description

https://img.shields.io/pypi/v/dvg-qdeviceio https://img.shields.io/pypi/pyversions/dvg-qdeviceio https://github.com/Dennis-van-Gils/python-dvg-qdeviceio/actions/workflows/python-package.yml/badge.svg https://coveralls.io/repos/github/Dennis-van-Gils/python-dvg-qdeviceio/badge.svg https://readthedocs.org/projects/python-dvg-qdeviceio/badge/?version=latest https://img.shields.io/badge/code%20style-black-000000.svg https://img.shields.io/badge/License-MIT-purple.svg

DvG_QDeviceIO

Hassle-free PyQt/PySide interface for multithreaded data acquisition and communication with an I/O device.

It will manage many necessary components for proper multithreading – creation and handling of the threads, workers, signals and mutexes – for you, reducing it to just a few simple method calls of a QDeviceIO class instance to get set up and going.

Supports PyQt5, PyQt6, PySide2 and PySide6.

Installation:

pip install dvg-qdeviceio

Changelog

1.6.0 (2024-06-24)

  • Restore support for Python 3.6. Was removed by mistake. Versions 1.4.0 and 1.5.0 do support it actually, but only in combination with PyQt5 or PySide2.

1.5.0 (2024-06-22)

  • Support for Numpy 2.0

1.4.0 (2024-06-12)

Major code quality improvements:

  • Using qtpy library instead of my own Qt5/6 mechanism

  • Improved _NoDevice mechanism

  • Removed redundant attach_device()

  • Extra check in Worker_jobs if func is actually a callable

  • Using singletons Uninitialized_Worker_DAQ/jobs as default attribute values instead of using None. This solves pylint warnings on ‘… is not a known attribute of None’.

  • Docstring improvement: create_worker_DAQ/jobs() show full info now

  • Docstring improvement: Linking against PySide6, instead of PyQt5

  • Improved code quality of the pytest

Potential code breaks:

  • Removed Python 3.6 support

  • The methods of Worker_DAQ and Worker_jobs have been hidden from the API and are dundered now. You should not have been calling them anyhow outside of this module. Their functionality was and is still available as safer methods available at the root level of QDeviceIO(). Specifically:

    Worker_DAQ.pause()        --> Worker_DAQ._set_pause_true()   , should use pause_DAQ()
    Worker_DAQ.unpause()      --> Worker_DAQ._set_pause_false()  , should use unpause_DAQ()
    Worker_DAQ.wake_up()      --> Worker_DAQ._wake_up()          , should use wake_up_DAQ()
    Worker_jobs.send()        --> Worker_jobs._send()            , should use send()
    Worker_jobs.add_to_queue  --> Worker_jobs._add_to_queue()    , should use add_to_queue()
    Worker_jobs.process_queue --> Worker_jobs._process_queue()   , should use process_queue()

1.3.0 (2024-04-02)

  • Support Python 3.11

  • All f-strings

  • Type checking via isinstance(), not type == ...

1.2.0 (2023-02-27)

  • Deprecated requires.io and travis

  • Raise ImportError instead of general Exception

1.1.2 (2022-10-26)

  • Minor refactor of mechanism to support PyQt5, PyQt6, PySide2 and PySide6

1.1.1 (2022-09-14)

  • Forgot to bump requirement dvg-debug-functions~=2.2 to ensure support for PyQt5, PyQt6, PySide2 and PySide6

1.1.0 (2022-09-13)

  • Added support for PyQt5, PyQt6, PySide2 and PySide6

1.0.0 (2021-07-02)

  • Stable release, identical to v0.4.0

0.4.0 (2021-05-09)

  • Fixed buggy worker_DAQ pause and unpause routines in CONTINUOUS mode

0.3.0 (2020-07-23)

  • Updated start & stop machinery Workers

  • Removed unneccesary lambdas

  • Revamped DAQ rate calculation. Init arg calc_DAQ_rate_every_N_iter got removed.

0.2.2 (2020-07-17)

  • Traceback will be printed when DAQ_function raises an internal error.

  • Introduced Worker_###._has_finished to prevent hang when closing workers twice.

0.2.1 (2020-07-15)

  • Added documentation

0.2.0 (2020-07-07)

  • quit_worker_###(): Added check to see if thread was already closed, due to a lost_connection event. This prevents an hanging app during quit.

  • Changed name of enum class DAQ_trigger to DAQ_TRIGGER

0.1.2 (2020-07-04)

  • Proper use of super(), now passing **kwargs onto subclass QtCore.QObject()

0.1.1 (2020-07-02)

  • Worker_DAQ now stores all init arguments, some as _private

0.1.0 (2020-07-02)

  • DvG module filenames changed to lowercase

  • Nearing full release status

0.0.12 (2020-06-29)

  • INTERNAL_TIMER: Already instantiate the QTimer in create_worker_DAQ(), instead of in start_worker_DAQ()

  • Changed default DAQ_timer_type from CoarseTimer to PreciseTimer

  • Added more Sphinx documentation

0.0.11

Skipped (I screwed up the versioning)

0.0.10 (2020-06-22)

  • Major: Changed name Worker_send to Worker_jobs and similar

  • Added more Sphinx documentation

0.0.9 (2020-06-17)

  • Moved the Worker_###() classes outside of QDeviceIO and into module root

  • Added documentation using Sphinx and Read the docs

  • Changed from MarkDown to ReStructuredText

0.0.8 (2020-06-09)

  • Added pause_DAQ, unpause_DAQ(), wake_up_DAQ()

  • Changed many attribute and method names

  • Code style: black

0.0.6 (2020-06-07)

  • Added start(), renamed quit_all_workers() to quit()

  • Added send(), add_to_send_queue(), process_send_queue()

0.0.5 (2020-06-06)

  • Implemented smooth start and stop machinery to the workers

0.0.1 (2020-05-25)

  • First release on PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dvg_qdeviceio-1.6.0.tar.gz (295.4 kB view details)

Uploaded Source

Built Distribution

dvg_qdeviceio-1.6.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file dvg_qdeviceio-1.6.0.tar.gz.

File metadata

  • Download URL: dvg_qdeviceio-1.6.0.tar.gz
  • Upload date:
  • Size: 295.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for dvg_qdeviceio-1.6.0.tar.gz
Algorithm Hash digest
SHA256 1f96204843b389661d0b2d82116de3afcec0fe14a177ea65d4e3fd3c5766b1b0
MD5 070652328cece91ca134f1445200dc2e
BLAKE2b-256 e5516c9447c2876fb950e22490e8f953bd339aa73b29e5d983a5f3fdcb95e3f8

See more details on using hashes here.

File details

Details for the file dvg_qdeviceio-1.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dvg_qdeviceio-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49f1e40bfbc79e28e89783fedcc545d9479de21bb4505689f419668b0e72e398
MD5 ee1e2990d440ded92450bfb0accf9ee5
BLAKE2b-256 58eaa7d88d0ec79bfe3e25b1a19082ad5a6161430c73a44460a3e01d1fcb5b42

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page