Skip to content

Releases: tektronix/tm_devices

v3.1.0

22 Jan 16:07
v3.1.0
0af4140
Compare
Choose a tag to compare

v3.1.0 (2025-01-22)

Merged Pull Requests

  • refactor: Separate out the custom handling of different devices' software/firmware version parsing (#373)
  • fix: Remove unused commands files (#371)
  • feat: Improved VISA device error messages (#370)

Removed

  • Removed the traceback-with-variables package as a dependency. If users would like to maintain the functionality, they will need to install this package separately and activate it within their code.

Added

  • Added a new configuration option log_uncaught_exceptions to enable/disable logging uncaught exceptions in the log file that is created. The default behavior is to enable logging uncaught exceptions to the log file.

Changed

  • Updated the error messages when VISA connections fail so that the messages are more informative (they now include the device type, resource expression, and VISA backend) and are logged to the main log file.
  • Updated the error messages which occur when VISA communication fails (write/query) to be more concise on the console while still maintaining the verbosity needed for debugging in the log file.
  • Updated the VISA communication error messages to include the device name and alias for faster identification when debugging.

v3.0.0

13 Jan 21:12
v3.0.0
be72562
Compare
Choose a tag to compare

v3.0.0 (2025-01-13)

Merged Pull Requests

  • feat: added fast acq support for the mso2 model. (#368)
  • python-deps(deps-dev): update ruff requirement from 0.8.4 to 0.8.6 in the python-dependencies group (#366)
  • gh-actions(deps): bump tektronix/python-package-ci-cd (#346)
  • fix: updated get_buffers() with logic to handle empty buffer (#364)
  • python-deps(deps-dev): bump the python-dependencies group with 2 updates (#347)
  • fix: allow empty returns from tsp_device.get_buffers() (#362)
  • python-deps(deps-dev): update ruff requirement from 0.8.2 to 0.8.3 in the python-dependencies group (#361)
  • docs: Remove section of contribution guide that duplicates a later section (#358)
  • python-deps(deps-dev): update ruff requirement from 0.7.4 to 0.8.0 in the python-dependencies group (#355)
  • fix: Fix the documentation to not show the mermaid tooltip clipping at the top of each page with an inheritance diagram (#354)
  • chore: Remove unused env var from .readthedocs.yml (#353)
  • Enable pawamoy insiders docs features (#352)
  • feat: Added Full python API support for MDO3 model. (#349)
  • python-deps(deps-dev): update ruff requirement from 0.7.3 to 0.7.4 in the python-dependencies group (#351)
  • Use logging module instead of prints (#345)
  • chore: Update pyright dependency and use more reliable method of installing local nodejs for it (#344)
  • python-deps(deps-dev): update ruff requirement from 0.7.1 to 0.7.2 in the python-dependencies group (#343)
  • Add screen capture functionality for TekScope device driver family (#342)
  • Refactor the internal package structure and change how driver classes inherit functionality (#333)
  • python-deps(deps): bump the python-dependencies group with 3 updates (#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.

  • minor breaking change: Moved SignalGenerator class to the driver_mixins submodule and renamed it to _TektronixPIAFGAWGMixin (also made it a private mixin).
  • minor breaking change: Renamed the PIDevice, TSPDevice, and RESTAPIDevice classes to PIControl, TSPControl, and RESTAPIControl respectively.
  • minor breaking change: 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.
  • minor breaking change: Moved all device type subpackages (AWGs, AFGs, Scopes, SMUs, etc.) up to the top level of the drivers subpackage.
  • minor breaking change: Converted all family base classes to inherit from the device control mixins.
  • BREAKING CHANGE: 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.
  • BREAKING CHANGE: 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.
  • minor breaking change: 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

  • BREAKING CHANGE: Removed previously deprecated TekScopeSW alias to the TekScopePC class.
  • BREAKING CHANGE: Removed previously deprecated write_buffers() from the TSPControl class.
  • BREAKING CHANGE: Removed Internal AFG methods from the TekScopePC driver, since they wouldn't have worked due to its lack of an IAFG.
  • BREAKING CHANGE: Removed previously deprecated DEVICE_DRIVER_MODEL_MAPPING constant.
  • BREAKING CHANGE: Removed the DEVICE_TYPE_CLASSES constant and the device_type_classes.py module.
  • BREAKING CHANGE: Removed many hacky implementations of total_channels and all_channel_names_list properties from drivers that don't need them anymore.
  • BREAKING CHANGE: 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.
  • BREAKING CHANGE: Removed the print_with_timestamp() function since this functionality is now handled by the logging module.
  • BREAKING CHANGE: Removed the get_timestamp_string() function since this functionality is now handled by the logging module.

v2.5.0

30 Oct 19:20
v2.5.0
1d2fac5
Compare
Choose a tag to compare

v2.5.0 (2024-10-30)

Merged Pull Requests

  • TekScope2K - turn on HEADER and VERBOSE options to query available data sources correctly (#327)
  • fix: line fix (#339)
  • ci: Skip updating the mdformat repo during the dependency updater workflow (#335)
  • gh-actions(deps): bump tektronix/python-package-ci-cd (#320)
  • TSP environment cleanup (#328)
  • feat: Added USB support for AFG31K and MDO3 models (#331)
  • ci: Remove pre-commit hook that no longer works on Python 3.8 and replace with one that does (#323)
  • python-deps(deps-dev): bump the python-dependencies group with 2 updates (#311)
  • python-deps(deps): bump the python-dependencies group with 3 updates (#318)
  • test: Ignore googletagmanager links during doctests (#312)
  • ci: Enable testing for Python 3.13 (#309)

Fixed

  • fix: TekScope2K active channel query needs HEADER options enabled to function properly

Added

  • collectgarbage() is now called during cleanup of TSPDevice children.
  • Added USB Support for AFG31K and MDO3 models.

v2.4.0

19 Sep 20:50
v2.4.0
7ffce5b
Compare
Choose a tag to compare

v2.4.0 (2024-09-19)

Merged Pull Requests

  • Update TSPDevice.load_script() to accept raw strings (#308)
  • fix: Update stub generation helper function to handle classes followed by dataclasses (#307)
  • Add function to register USBTMC connection information for devices that don't have native USBTMC connection support in tm_devices (#306)
  • python-deps(deps-dev): Bump the python-dependencies group with 2 updates (#304)
  • fix: Ensure that the default VISA timeout value is not overwritten if a new config is loaded that doesn't specify a default VISA timeout. (#303)
  • gh-actions(deps): Bump tektronix/python-package-ci-cd (#287)
  • chore: Bump the version of tektronix/python-package-ci-cd to v1.3.0 in workflows (#301)
  • build: Update license identifier (#299)
  • python-deps(deps): Bump the python-dependencies group with 3 updates (#300)
  • Enable customizing the default visa timeout (#293)
  • python-deps(deps-dev): Bump the python-dependencies group with 4 updates (#296)
  • Update python-pacage-ci-cd to v1.1.0 and use tokens to upload to PyPI (#291)
  • python-deps(deps): Bump the python-dependencies group across 1 directory with 2 updates (#288)
  • chore: Remove an unneeded development dependency (#286)
  • Convert to using reusable workflows from the tektronix/python-package-ci-cd repo (#284)

Added

  • Added a config option (default_visa_timeout) to specify the default VISA timeout for all initial VISA device connections.
  • Added a new function, register_additional_usbtmc_mapping(), to enable users to add USBTMC connection information for devices that don't have native support for USBTMC connections in tm_devices yet.
  • Added TSPDevice.export_buffers() to write tsp buffer data fields to file, default is comma separated values with buffer names header.

Changed

  • Switched all workflows to use the new tektronix/python-package-ci-cd reusable workflows.
  • Reduced the out-of-the box default_visa_timeout value from 30 seconds to 5 seconds.
  • SEMI-BREAKING CHANGE: Changed the USB_MODEL_ID_LOOKUP constant to use SupportedModels as keys instead of values to make the documentation clearer.
  • SEMI-BREAKING CHANGE: Changed the DEVICE_DRIVER_MODEL_MAPPING constant to use SupportedModels as keys instead of values to make the documentation clearer.
  • SEMI-BREAKING CHANGE: Changed the input parameter order in TSPDevice.load_script() and updated it to accept raw string input in addition to the file_path parameter for the script content.
  • Verbosity with PIDevice.write() now handles multiline input printouts.

Deprecated

  • Renamed TSPDevice.write_buffers() to TSPDevice.export_buffers() for clarity.

Fixed

  • Fixed a bug in the stubgen helper code responsible for adding dynamically added methods to stub files that caused invalid stub files to be created if a dataclass immediately followed a class that was being dynamically updated.

v2.3.0

23 Aug 18:08
v2.3.0
7e97cc3
Compare
Choose a tag to compare

v2.3.0 (2024-08-23)

Merged Pull Requests

  • feat: Added Full API support for TekscopePC. (#282)
  • feat: Add curve query support for MSO2KB series scopes (#269)
  • python-deps(deps-dev): bump the python-dependencies group with 2 updates (#279)
  • ci: Use nodeenv to install node during tox runs, and install node with nodeenv during initial contributor setup (#278)

Added

  • Added curve query support for the MSO2KB series scopes
  • Full Python API support for TekScopePC device.

v2.2.2

14 Aug 22:29
v2.2.2
a9eed0f
Compare
Choose a tag to compare

v2.2.2 (2024-08-14)

Merged Pull Requests

  • Fix the stubgen helper function to attach stubs to the correct class in modules with multiple classes (#276)
  • python-deps(deps-dev): bump the python-dependencies group with 2 updates (#273)
  • docs: Update the contribution guide to provide details on how to track the status of changes in the GitHub repo using issues (#271)

Fixed

  • Fixed the stubgen helper to properly attach stubs to the correct class in modules that have multiple classes.

v2.2.1

07 Aug 18:57
v2.2.1
1bfb5b2
Compare
Choose a tag to compare

v2.2.1 (2024-08-07)

Merged Pull Requests

  • feat: Custom LAN Device Name for TCPIP Connections (#267)
  • docs: Update links on the Readme to point to the full GitHub URL (#266)
  • ci: Update the script that updates the pre-commit dependencies to update them with frozen hashes (#265)
  • Convert test-docs.yml to a reusable workflow (#264)
  • python-deps(deps-dev): bump the python-dependencies group with 3 updates (#263)

Changed

  • Changed DeviceConfigEntry dataclass by adding an optional lan_device_name field, which allows connecting to instruments through TCPIP on LAN device names other than inst0.

v2.2.0

02 Aug 21:23
v2.2.0
ec14f89
Compare
Choose a tag to compare

v2.2.0 (2024-08-02)

Merged Pull Requests

  • Enable adding unsupported device types via the DeviceManager (#262)
  • test: Ignore http-rate-limited warnings to avoid failure due to the abundance of GitHub URLs in the Changelog (#261)

Added

  • Added a new method to the DeviceManager class, add_unsupported_device(), which enables adding an unsupported device type.

v2.1.0

31 Jul 14:36
v2.1.0
020e6f2
Compare
Choose a tag to compare

v2.1.0 (2024-07-31)

Merged Pull Requests

  • feat: Added SourceXpress API support and AWG defects fix (#260)
  • gh-actions(deps): bump hynek/build-and-inspect-python-package (#258)
  • python-deps(deps-dev): bump the python-dependencies group with 2 updates (#257)
  • Update jinja templates (#254)

Added

  • Full Python API support for SourceXpress to AWG70KA, AWG70KB and AWG7K models.

Fixed

  • Fixed APIs with writes and queries accepting arguments for AWG70KA and AWG70KB models drivers.

v2.0.0

24 Jul 21:03
v2.0.0
4485fae
Compare
Choose a tag to compare

v2.0.0 (2024-07-24)

Merged Pull Requests

  • Downgrade python-semantic-release to allow release workflow to run (#253)
  • docs: Updated the signal generation docs to fix some bugs that were found (#252)
  • Signal Generation Restructure and addition of high level methods (#246)
  • gh-actions(deps): bump the gh-actions-dependencies group with 2 updates (#250)
  • python-deps(deps-dev): bump the python-dependencies group with 3 updates (#242)
  • gh-actions(deps): bump anchore/scan-action (#248)
  • python-deps(deps-dev): bump the python-dependencies group with 2 updates (#238)
  • gh-actions(deps): bump python-semantic-release/python-semantic-release (#244)
  • ci: Add back file sorter hook to pre-commit (#243)
  • python-deps(deps): bump the python-dependencies group with 3 updates (#241)
  • gh-actions(deps): bump the gh-actions-dependencies group across 1 directory with 3 updates (#239)
  • refactor: Miscellaneous refactors to reduce technical debt in variable declarations and comparison operations (#236)

Added

  • Added the constraint ranges for all signal generators
  • Added drivers for AWG and AFG channels
  • Added a property named source_channel in AWG's and AFG's.
  • Added drivers for the internal AFG in TekScopes.
  • Added a property named internal_afg in TekScope.
  • Added implementation of generate_function for all AWG models.
  • Added two burst functions to SignalGeneratorMixin: one to set up burst and one to generate the burst by forcing trigger.
    • NOTE: Only the AFGs and Internal AFGs have these functions implemented.
  • Added OutputSignalPath enum attribute in AWGs representing output signal path options.
  • Added two functions for loading waveform set files in the AWG70k and AWG5200 drivers: one for loading a waveform set file and another for loading a specific waveform from a waveform set file.
  • Added sample_waveform_set_file attribute in the AWG70k and AWG5200 drivers to define the default waveform set file.

Changed

  • BREAKING CHANGE. Changed the term "signal source" to "signal generator".
    • All uses of this term are changed. Import paths now use signal_generator instead of signal_source.
  • BREAKING CHANGE. Changed the function name of generate_waveform() to generate_function().
    • generate_waveform() only exists on AWGs now, however the functionality is entirely changed.
  • BREAKING CHANGE. Changed the generate_function() function by removing burst functionality.
    • Any use of burst now must use setup_burst() and generate_burst() instead.
  • Updated AWGs such that the family_base_class is at the series level.