Merged Pull Requests
- feat: added fast acq support for the mso2 model. ([368](https://github.com/tektronix/tm_devices/pull/368))
- python-deps(deps-dev): update ruff requirement from 0.8.4 to 0.8.6 in the python-dependencies group ([366](https://github.com/tektronix/tm_devices/pull/366))
- gh-actions(deps): bump tektronix/python-package-ci-cd ([346](https://github.com/tektronix/tm_devices/pull/346))
- fix: updated get_buffers() with logic to handle empty buffer ([364](https://github.com/tektronix/tm_devices/pull/364))
- python-deps(deps-dev): bump the python-dependencies group with 2 updates ([347](https://github.com/tektronix/tm_devices/pull/347))
- fix: allow empty returns from tsp_device.get_buffers() ([362](https://github.com/tektronix/tm_devices/pull/362))
- python-deps(deps-dev): update ruff requirement from 0.8.2 to 0.8.3 in the python-dependencies group ([361](https://github.com/tektronix/tm_devices/pull/361))
- docs: Remove section of contribution guide that duplicates a later section ([358](https://github.com/tektronix/tm_devices/pull/358))
- python-deps(deps-dev): update ruff requirement from 0.7.4 to 0.8.0 in the python-dependencies group ([355](https://github.com/tektronix/tm_devices/pull/355))
- fix: Fix the documentation to not show the mermaid tooltip clipping at the top of each page with an inheritance diagram ([354](https://github.com/tektronix/tm_devices/pull/354))
- chore: Remove unused env var from .readthedocs.yml ([353](https://github.com/tektronix/tm_devices/pull/353))
- Enable pawamoy insiders docs features ([352](https://github.com/tektronix/tm_devices/pull/352))
- feat: Added Full python API support for MDO3 model. ([349](https://github.com/tektronix/tm_devices/pull/349))
- python-deps(deps-dev): update ruff requirement from 0.7.3 to 0.7.4 in the python-dependencies group ([351](https://github.com/tektronix/tm_devices/pull/351))
- Use logging module instead of prints ([345](https://github.com/tektronix/tm_devices/pull/345))
- chore: Update pyright dependency and use more reliable method of installing local nodejs for it ([344](https://github.com/tektronix/tm_devices/pull/344))
- python-deps(deps-dev): update ruff requirement from 0.7.1 to 0.7.2 in the python-dependencies group ([343](https://github.com/tektronix/tm_devices/pull/343))
- Add screen capture functionality for TekScope device driver family ([342](https://github.com/tektronix/tm_devices/pull/342))
- Refactor the internal package structure and change how driver classes inherit functionality ([333](https://github.com/tektronix/tm_devices/pull/333))
- python-deps(deps): bump the python-dependencies group with 3 updates ([341](https://github.com/tektronix/tm_devices/pull/341))
Added
- Added a new mixin, `ScreenCaptureMixin`, that defines methods/properties used for capturing screenshots from devices.
- Added screen capture capabilities to the `TekScope` family of device drivers.
- Testing/linting on Python 3.13.
- Added the `get_errors()` method to the `Device` class to enable easy access to the current error code and messages on any device.
- Added more details to the Architectural Overview page of the documentation as well as highlighting to the device driver diagram on the page.
- Added regex matching to the `verify_values()` helper function to allow for more flexible value verification.
- A main logfile is now created by default (can be disabled if desired) that contains all the logging output of the entire tm_devices package during execution.
- Use the `configure_logging()` function to set the logging levels for stdout and file logging.
- The default settings will log all messages to the log file and maintain the current printout functionality on stdout.
- A logfile is now created that contains each command sent to a VISA device.
- This file is located next to the main log file and will start with the same name, but have the unique address of the device appended.
- This file will only be created if file logging is enabled for the package (which is the default behavior).
- Full Python API support for the MDO3 model.
- Added fast acquisition command support for the MSO2 model.
Changed
NOTE: Despite all the officially breaking changes, the actual drivers were only affected in
very minor ways. The primary impact to the drivers was simply the removal of previously
deprecated functionality. Almost all changes only impacted the internal workings of `tm_devices`.
However, please read through all changes to be aware of what may potentially impact your code.
- _**<span style="color:orange">minor breaking change</span>**_: Moved `SignalGenerator` class to the `driver_mixins` submodule and renamed it to `_TektronixPIAFGAWGMixin` (also made it a private mixin).
- _**<span style="color:orange">minor breaking change</span>**_: Renamed the `PIDevice`, `TSPDevice`, and `RESTAPIDevice` classes to `PIControl`, `TSPControl`, and `RESTAPIControl` respectively.
- _**<span style="color:orange">minor breaking change</span>**_: Moved the `PIControl`, `TSPControl`, and `RESTAPIControl` classes into a mixin folder so that they can be used as mixins rather than being part of the required inheritance structure.
- In order to use these control mixins, they must be inherited at the family base class level in the driver hierarchy, along with the device type class (or any class that inherits from the base `Device` class and defines a `device_type` property and the other required abstract property implementations).
- Due to this change, it is recommended that the specific device driver (or at least the family base class) for the device being controlled is used for type hinting.
- _**<span style="color:orange">minor breaking change</span>**_: Moved all device type subpackages (AWGs, AFGs, Scopes, SMUs, etc.) up to the top level of the `drivers` subpackage.
- _**<span style="color:orange">minor breaking change</span>**_: Converted all family base classes to inherit from the device control mixins.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Renamed the `get_eventlog_status()` method to `_get_errors()` and made it a required, abstract method for all devices to implement.
- To get similar functionality to the previous `get_eventlog_status()` method, switch to using the new `get_errors()` method.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Changed the behavior of the `expect_esr()` method to expect an integer error code input and an optional tuple of error messages to compare against the actual error code and messages returned by the `_get_errors()` private method.
- _**<span style="color:orange">minor breaking change</span>**_: Converted the `device_type` property into an abstract, cached property to force all children of the `Device` class to specify what type of device they are.
- Updated the auto-generated command mixin classes to no longer use an `__init__()` method to enable the driver API documentation to render in a more usable way.
- Switched from using standard `print()` calls to using the `logging` module for all logging in the `tm_devices` package.
- A configuration function provides the ability to set different logging levels for stdout and file logging.
- The config file and environment variable can also be used to control the logging functionality.
- The debug logging from the `pyvisa` package is also included in the log file by default.
- Updated `get_buffers()` in `TSPControl` to not error out if the buffer is found to be empty.
Removed
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed previously deprecated `TekScopeSW` alias to the `TekScopePC` class.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed previously deprecated `write_buffers()` from the `TSPControl` class.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed Internal AFG methods from the `TekScopePC` driver, since they wouldn't have worked due to its lack of an IAFG.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed previously deprecated `DEVICE_DRIVER_MODEL_MAPPING` constant.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed the `DEVICE_TYPE_CLASSES` constant and the `device_type_classes.py` module.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed many hacky implementations of `total_channels` and `all_channel_names_list` properties from drivers that don't need them anymore.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed the `verify_values()`, `raise_failure()`, and `raise_error()` methods from all device drivers.
- These methods have been converted to helper functions and can be imported from the `tm_devices.helpers` subpackage now.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed the `print_with_timestamp()` function since this functionality is now handled by the `logging` module.
- _**<span style="color:red">BREAKING CHANGE</span>**_: Removed the `get_timestamp_string()` function since this functionality is now handled by the `logging` module.
---