Changelog
=========

1.5.0 (2024-06-27)
------------------
* Support for Numpy 2.0
* Restore support for Python 3.6. Was removed by mistake. Version 1.4.0 and this
  version do support Python 3.6 actually, but only in combination with PyQt5.
  PySide2 will not work because the wrapper library `qtpy` still expects
  `app.exec_()` instead of `app.exec()`. That got fixed in the `qtpy` version
  for Python >= 3.7.

1.4.0 (2024-05-23)
------------------
Major clean-up and streamlining:

* Using `qtpy` library instead of my own Qt5/6 mechanism
* Changed all string formatting to f-strings
* Extended type hinting and checking
* Made demos uniform and passing `qdev` arguments to `MainWindow` now
* Individual source files now follow the PyPi package version
* Resolved nearly all Pylint / Pylance warnings
* Removed Python 3.6 support

New devices added:

* Xylem Hydrovar HVL - Variable speed pump controller
* Novanta IMS MDrive - Stepper motor controller

1.3.0 (2023-02-23)
------------------
* Added method ``BaseDevice.SerialDevice.query_bytes()``
* Fixed type hints in ``BaseDevice.SerialDevice``

1.2.0 (2022-09-14)
------------------
* Added support for PyQt5, PyQt6, PySide2 and PySide6

1.1.0 (2022-02-01)
------------------
* Added method ``BaseDevice.SerialDevice.readline()``

1.0.0 (2021-07-02)
------------------
* Stable release, identical to v0.2.6

0.2.6 (2021-03-02)
------------------
* Minor: Adjusted width of GUI control in ``Julabo_circulator_qdev.py``

0.2.5 (2021-03-02)
------------------
* Loosened dependence to ``pyserial~= 3.4``

0.2.4 (2021-03-02)
------------------
* Added device: Julabo circulator

0.2.3 (2020-08-27)
------------------
* Workaround for bug with unknown cause in ``Aim_TTi_PSU_protocol_RS232`` where
  the power supply occasionally will skew the serial input and output stream,
  such that the reply matches the second-previous query statement. Fixed by
  forcefully flushing the serial input and output buffers whenever a wrong reply
  is received. Hopefully, this will fix the skew when the next ``query()``
  operation gets executed.

0.2.2 (2020-08-27)
------------------
* Fixed bug in ``BaseDevice.query_ascii()``. The use of ``ast.literal_eval`` got
  removed because it chokes on ``nan``. Everything is now interpreted as a
  ``float`` instead.

0.2.1 (2020-08-12)
------------------
* Fix wrong import statement ``dvg-pyqt-controls``
* Fix wrong import statement ``dvg-pyqt-filelogger``

0.2.0 (2020-08-11)
------------------
* Added dependence ``dvg-pyqt-controls~=1.0``
* Added dependence ``dvg-pyqt-filelogger~=1.0``
* Added dependence ``dvg-pyqtgraph-threadsafe~=3.0``

0.1.0 (2020-07-23)
------------------
* Fixed bug in ``BaseDevice.py`` where ``inspect.getouterframes()`` would
  momentarily suspend the thread. Solved by ditching inspect. The new
  ``ID_validation_query`` mechanism now relies on a simple boolean flag that
  gets set to force ``query()`` to raise on timeout.
* Update dependence ``dvg-qdeviceio==0.3.0``

0.0.7 (2020-07-17)
------------------
* Update dependence ``dvg-qdeviceio==0.2.2``

0.0.6 (2020-07-16)
------------------
* Finished implementing ``BaseDevice.SerialDevice()``
* Update dependence ``dvg-qdeviceio==0.2.1``

0.0.5 (2020-07-07)
------------------
* Update dependence ``dvg-qdeviceio==0.2.0``
  Enum ``DAQ_trigger`` is now called ``DAQ_TRIGGER``
* Code style: Black

0.0.4 (2020-07-04)
------------------
* Update dependence ``dvg-qdeviceio==0.1.2``

0.0.3 (2020-07-02)
------------------
* Fixed broken packaging

0.0.2 (2020-07-02)
------------------
* Major restructuring PyPI package
* Implemented ``DvG_QDeviceIO``

0.0.1 (2020-07-01)
------------------
* First release on PyPI
