~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There have been too many alterations to list here comprehensively. Below is the list of the largest changes.
- General
* Removed built-in ``DataTable`` class (together with ``core.datatable`` subpackage) in favor of pandas.
* Renamed file IO functions: instead of generic ``load`` and ``save`` methods there are now more specific :func:`.loadfile.load_csv`, :func:`.loadfile.load_dict`, etc.
* Removed some legacy modules which are not used in the rest of the library.
* Renamed or moved certain modules: ``core.utils.rpyc`` -> ``core.utils.rpyc_utils``, ``core.fileio.logfile`` -> ``core.fileio.table_stream``, ``core.fileio.binio`` -> ``core.utils.binio`` , ``core.devio.backend`` -> ``core.devio.backencd_comm``, ``core.devio.untis`` -> ``core.utils.units``, ``core.dataproc.waveforms`` -> ``core.dataproc.utils``
- Devices
* Some legacy devices have been removed, since without access to the hardware it is hard to maintain and expand them. These include most of Agilent devices (33502A amplifier, N9310A microwave generator, HP 8712B and HP 8722D network analyzers, HP 8168F laser), Rigol DSA1030A spectrum analyzer, Tektronix MDO3000 oscilloscope, Vaunix LabBrick generators, Zurich Instruments HF2 and UHF, Andor Shamrock spectrographs (should be restored in future releases), NuPhoton NP2000 EDFA, PurePhotonics PPCL200 laser, Sirah Matisse laser (should be restored in future releases), Thorlabs PM100 power meter (should be restored in future releases), Lakeshore 370 resistance bridge (should be restored in future releases), MKS 900-series pressure gauges, and some custom devices (Arduino and Olimex AVR boards and Janis-related hardware).
* The main devices package has been moved from ``pylablib.aux_libs.devices`` (which now refers to the legacy code) to ``pylablib.devices``. Module organization has also changed slightly. To find the required modules and device class names, see the :ref:`devices list <devices_root>`.
* Lots of devices' interface has varied slightly, to make the interface more uniform and compatible between different kinds of devices. The changes are usually fairly straightforward (e.g., ``move_to`` instead of ``move``). In many cases the interface was also expanded to include additional available methods.
* Several devices have been added, generalized, or restructured:
+ Combined Thorlabs KDC101 and K10CR1 into a single class :class:`pylablib.devices.Thorlabs.BasicKinesisDevice<.kinesis.BasicKinesisDevice>`, which also accommodates similar kinds of devices.
+ Added Arcus Performax2EXStage device for 2-axis controller with a slightly different interface (:class:`pylablib.devices.Arcus.Performax2EXStage<.performax.Performax2EXStage>`)
+ Added :ref:`several more AWGs <awg_generic>` with similar interfaces
* Simplified the way external DLLs are :ref:`handled <devices_external_dependencies>`
* Unified the :ref:`error handling <devices_error_handling>`
- GUI and threading
* Changed module structure
+ threading and GUI are now separate sub-packages ``core.thread`` and ``core.gui``
+ all widgets are available simply through ``pylablib.widgets`` (simplifies integration with Qt Designer)
+ moved parameter tables widgets to the core library
* Renamed some widgets to remove the ``LV`` prefix.
* Interfaces changes in some of the classes: thread controllers, parameter tables, value tables. The changes are mostly cosmetics and involve names and parameters order. Most important changes:
+ thread controller methods: ``subscribe`` -> ``subscribe_sync``, ``sync_exec`` -> ``sync_exec_point``,
+ thread controller command/query shortcut: ``.c`` -> ``.ca``, ``.q`` -> ``.cs``, ``.qi`` -> ``.csi``, ``.qs`` -> ``.css``
+ thread controller variable access uses ``.v`` shortcut, i.e., instead of ``ctl[name]`` it is now ``ctl.v[name]``
+ GUI value storage ``ValuesTable``/``IndicatorValuesTable`` are now combined and named as ``GUIValues``
+ ``ParamTable`` and ``GUIValues`` uses ``.h`` shortcut to access value handlers, i.e., instead of ``table[name]`` it is now ``table.h[name]``
+ ``ParamTable``, ``ImagePlotterCtl``, ``TracePlotterCtl`` constructor arguments: ``display_table`` -> ``gui_values``, ``display_table_root`` -> ``gui_values_root``
+ value-changed signal names in ``ParamTable`` and ``GUIValues``: ``changed_event`` -> ``get_value_changed_signal``
+ value-changed signal names in value handlers: ``value_changed_signal`` -> ``get_value_changed_signal``
+ ``ParamTable`` methods: ``lock`` -> ``set_enabled``, ``add_button(checkable=True)`` -> ``add_toggle_button``
+ ``NumEdit`` and ``NumLabel`` methods: ``set_number_format`` -> ``set_formatter``, ``set_number_limit`` -> ``set_limiter`` (the call signature also changed)
+ renamed signals to multicasts to avoid confusion with built-in Qt signals. Leads to ``ThreadController.send_signal`` -> ``send_multicast``, ``ThreadController.process_signal`` -> ``process_multicast``, ``ThreadController`` constructor argument ``signal_pool`` -> ``multicast_pool``, class ``SignalPool`` -> ``MulticastPool``, ``QSignalThreadCallScheduler`` -> QMulticastThreadCallScheduler.
Version 0.x
----------------------------