From 1729d75204b2e00e0ee586291a083edcd8784941 Mon Sep 17 00:00:00 2001 From: dummy Date: Thu, 3 Apr 2025 11:22:57 +0530 Subject: [PATCH 01/32] Update of changelog and python scripts to support the indivitual versioning . --- CHANGELOG.md | 3475 +++++++++++++++++++++++++----------- tools/build_release.py | 27 +- tools/updateReleaseInfo.py | 72 +- 3 files changed, 2529 insertions(+), 1045 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cebcb3e7..ff85a73d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,126 +1,70 @@ # Changelog -* [Unreleased](#unreleased) -* [1.4.9](#149---2025-02-26) -* [1.4.8](#148---2024-04-26) -* [1.4.7](#147---2023-12-15) -* [1.4.6](#146---2023-09-11) -* [1.4.5](#145---2023-06-12) -* [1.4.4](#144---2023-04-14) -* [1.4.3](#143---2022-12-16) -* [1.4.2](#142---2022-08-03) -* [1.4.1](#141---2021-08-23) -* [1.4.0](#140---2021-07-09) -* [1.3.3](#133---2021-02-26) -* [1.3.2](#132---2020-09-18) -* [1.3.1](#131---2020-06-08) -* [1.3.0](#130---2020-05-21) -* [1.2.1](#121---2020-04-21) -* [1.2.0](#120---2020-03-06) -* [1.1.5](#115---2019-11-22) -* [1.1.4](#114---2019-11-19) -* [1.1.3](#113---2019-10-21) -* [1.1.2](#112---2019-06-06) -* [1.1.0](#110---2018-10-25) -* [1.0.1](#101---2018-10-17) -* [1.0.0](#100---2018-06-08) -* [0.9.0](#090---2018-05-22) -* [0.8.0](#080---2018-04-27) -* [0.7.0](#070---2018-02-20) -* [0.6.0](#060---2017-12-20) -* [0.5.0](#050---2017-11-27) -* [0.4.0](#040---2017-11-07) -* [0.3.0](#030---2017-10-13) -* [0.2.0](#020---2017-09-20) -* [0.1.0](#010---2017-09-01) - -All notable changes to this project will be documented in this file. +## Drivers +- [nidcpower (NI-DCPower)](#nidcpower-ni-dcpower) +- [nidigital (NI-Digital Pattern Driver)](#nidigital-ni-digital-pattern-driver) +- [nidmm (NI-DMM)](#nidmm-ni-dmm) +- [nifgen (NI-FGEN)](#nifgen-ni-fgen) +- [nimodinst (NI-ModInst)](#nimodinst-ni-modinst) +- [niscope (NI-SCOPE)](#niscope-ni-scope) +- [nise (NI-Switch Executive)](#nise-ni-switch-executive) +- [niswitch (NI-SWITCH)](#niswitch-ni-switch) +- [nitclk (NI-TCLK)](#nitclk-ni-tclk) -* [Unreleased](#unreleased) -## Unreleased -* ### ALL - * #### Added - * #### Changed - * #### Removed -* ### `nidcpower` (NI-DCPower) - * #### Added - * #### Changed - * #### Removed -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * #### Changed - * #### Removed -* ### `nidmm` (NI-DMM) - * #### Added - * #### Changed - * #### Removed -* ### `nifgen` (NI-FGEN) - * #### Added - * #### Changed - * #### Removed -* ### `nimodinst` (NI-ModInst) - * #### Added - * #### Changed - * #### Removed -* ### `niscope` (NI-SCOPE) - * #### Added - * #### Changed - * #### Removed -* ### `niswitch` (NI-SWITCH) - * #### Added - * #### Changed - * #### Removed -* ### `nise` (NI Switch Executive) - * #### Added - * #### Changed - * #### Removed -* ### `nitclk` (NI-TClk) - * #### Added - * #### Changed - * #### Removed +--- +### nidcpower (NI-DCPower) -## 1.4.9 - 2025-02-26 -* ### ALL +- [1.4.9 - 2025-02-26](#nidcpower-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nidcpower-148---2024-04-26) +- [1.4.7 - 2023-12-15](#nidcpower-147---2023-12-15) +- [1.4.6 - 2023-09-11](#nidcpower-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nidcpower-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nidcpower-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nidcpower-143---2022-12-16) +- [1.4.2 - 2022-08-03](#nidcpower-142---2022-08-03) +- [1.4.1 - 2021-08-23](#nidcpower-141---2021-08-23) +- [1.4.0 - 2021-07-09](#nidcpower-140---2021-07-09) +- [1.3.3 - 2021-02-26](#nidcpower-133---2021-02-26) +- [1.3.2 - 2020-09-18](#nidcpower-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nidcpower-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nidcpower-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nidcpower-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nidcpower-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nidcpower-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nidcpower-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nidcpower-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nidcpower-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nidcpower-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nidcpower-101---2018-10-17) +- [1.0.0 - 2018-06-08](#nidcpower-100---2018-06-08) +- [0.9.0 - 2018-05-22](#nidcpower-090---2018-05-22) +- [0.8.0 - 2018-04-27](#nidcpower-080---2018-04-27) +- [0.7.0 - 2018-02-20](#nidcpower-070---2018-02-20) +- [0.6.0 - 2017-12-20](#nidcpower-060---2017-12-20) +- [0.5.0 - 2017-11-27](#nidcpower-050---2017-11-27) +- [0.4.0 - 2017-11-07](#nidcpower-040---2017-11-07) +- [0.3.0 - 2017-10-13](#nidcpower-030---2017-10-13) + +* ### 1.4.9 - 2025-02-26 * #### Added * Support for Python 3.13 + * API parity with NI-DCPower 2025 Q1. + * Enum value added: + * `INHIBITED` added to enum `OutputStates`. * #### Changed * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * Fixed #2067: `nidcpower.OutputStates` values are incorrect. * #### Removed * Support for Python 3.8 -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 2025 Q1. - * Enum value added: - * `INHIBITED` added to enum `OutputStates`. - * #### Changed - * Fixed #2067: `nidcpower.OutputStates` values are incorrect. -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * Methods Added: - * `enable_match_fail_combination` -## 1.4.8 - 2024-04-26 -* ### ALL +* ### 1.4.8 - 2024-04-26 * #### Added * Support for Python 3.12 -* ### `nidcpower` (NI-DCPower) * #### Changed - * Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. -* ### `nifgen` (NI-FGEN) - * #### Added - * Properties added: - * `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * Enum added: - * `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. -## 1.4.7 - 2023-12-15 -* ### `nidcpower` (NI-DCPower) +* ### 1.4.7 - 2023-12-15 * #### Added * API parity with NI-DCPower 2023 Q4. * Properties added: @@ -137,45 +81,20 @@ All notable changes to this project will be documented in this file. * `E_LOAD` added to enum `InstrumentMode` * `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` -## 1.4.6 - 2023-09-11 -* ### ALL +* ### 1.4.6 - 2023-09-11 * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. * #### Removed * Support for Python 3.7 -## 1.4.5 - 2023-06-12 -* ### ALL +* ### 1.4.5 - 2023-06-12 * #### Removed * `easy_install` support -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -* ### `nidmm` (NI-DMM) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -* ### `nifgen` (NI-FGEN) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -* ### `niscope` (NI-SCOPE) - * #### Added - * `get_channel_names()` - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Changed - * Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. -* ### `niswitch` (NI-SWITCH) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -## 1.4.4 - 2023-04-14 -* ### ALL +* ### 1.4.4 - 2023-04-14 * #### Added * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. -* ### `nidcpower` (NI-DCPower) - * #### Added * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. * API parity with NI-DCPower 2023 Q2. * Properties added: @@ -203,50 +122,23 @@ All notable changes to this project will be documented in this file. * `configure_lcr_compensation` * `get_lcr_compensation_data` * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. * Enums reordered: * `AutoZero` * `CableLength` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Changed - * Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). -* ### `niscope` (NI-SCOPE) - * #### Changed - * Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - * Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. -## 1.4.3 - 2022-12-16 -* ### ALL +* ### 1.4.3 - 2022-12-16 * #### Added * Support for Python 3.10 - * #### Removed - * Support for Python 3.6 -* ### `nidcpower` (NI-DCPower) - * #### Added * MeasurementLink support * #### Changed * Binary compatibility change for type `LCRLoadCompensationSpot` on Linux. Client code using method `nidcpower.Session.perform_lcr_load_compensation` on Linux now requires NI-DCPower 2023 Q1 driver runtime or newer. -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * MeasurementLink support -* ### `nidmm` (NI-DMM) - * #### Added - * MeasurementLink support -* ### `nifgen` (NI-FGEN) - * #### Added - * MeasurementLink support -* ### `niscope` (NI-SCOPE) - * #### Added - * MeasurementLink support -* ### `niswitch` (NI-SWITCH) - * #### Added - * MeasurementLink support - * #### Changed - * Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page + * #### Removed + * Support for Python 3.6 -## 1.4.2 - 2022-08-03 -* ### `nidcpower` (NI-DCPower) +* ### 1.4.2 - 2022-08-03 * #### Added - * API parity with NI-DCPower 2022 Q3. + * API parity with NI-DCPower 2022 Q3. * Properties added: * `aperture_time_auto_mode` * `autorange_maximum_delay_after_range_change` @@ -314,51 +206,24 @@ All notable changes to this project will be documented in this file. * Custom types added: * `LCRLoadCompensationSpot` * `LCRMeasurement` + * `nidcpower_lcr_source_ac_voltage.py` example + + * #### Changed * Updated supported devices information in documentation for methods and properties * Added `channel` field to the `Measurement` namedtuple instances returned by `fetch_multiple` and `measure_multiple` -* ### `nifgen` (NI-FGEN) - * #### Added - * `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) - * #### Changed - * Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities - * `channels` - * `markers` - * `data_markers` - * `script_triggers` - * Corrected multiple mistakes in repeated capability info of attribute metadata - * alters API behavior (repeated capability access of attributes) and documentation - -## 1.4.1 - 2021-08-23 -* ### ALL +* ### 1.4.1 - 2021-08-23 * #### Added * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 -* ### `nidcpower` (NI-DCPower) - * #### Added * API parity with NI-DCPower 21.0.0. * Properties added: * `output_cutoff_delay` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * API parity with NI-Digital Pattern Driver 21.0.0. - * Properties added: - * `digital_edge_rio_trigger_edge` - * `digital_edge_rio_trigger_source` - * `exported_rio_event_output_terminal` - * `rio_event_terminal_name` - * `rio_trigger_terminal_name` - * `rio_trigger_type` - * Repeated Capabilities added: - * `rio_events` - * `rio_triggers` - + * #### Removed + * Support for Python 3.5 -## 1.4.0 - 2021-07-09 -* ### `nidcpower` (NI-DCPower) +* ### 1.4.0 - 2021-07-09 * #### Added * `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) * `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) @@ -384,37 +249,14 @@ All notable changes to this project will be documented in this file. driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, pass `independent_channels=False` to `nidcpower.Session` constructor. - -## 1.3.3 - 2021-02-26 -* ### `nidcpower` (NI-DCPower) +* ### 1.3.3 - 2021-02-26 * #### Added * API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: * `merged_channels` * `digital_edge_shutdown_trigger_input_terminal` * `shutdown_trigger_type` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * 1.0.0 release: - * API reference documentation and API usage examples - * API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: - * `frequency_counter_measurement_mode` - * `frequency_counter_hysteresis_enabled` -* ### `nifgen` (NI-FGEN) - * #### Added - * nifgen_trigger.py example to demonstrate pulling a trigger from another device. -* ### `nitclk` (NI-TClk) - * #### Added - * nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. - * #### Removed - * nitclk_configure.py as it did not do anything. - -## 1.3.2 - 2020-09-18 -* ### ALL - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -* ### `nidcpower` (NI-DCPower) +* ### 1.3.2 - 2020-09-18 * #### Added * API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: * `autorange` @@ -425,154 +267,39 @@ All notable changes to this project will be documented in this file. * `autorange_minimum_current_range` * `autorange_minimum_voltage_range` * `autorange_threshold_mode` -* ### `niscope` (NI-SCOPE) - * #### Added - * New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - * `get_ext_cal_last_date_and_time` - * `get_ext_cal_last_temp` - * `get_self_cal_last_date_and_time` - * `get_self_cal_last_temp` - * Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - * `add_waveform_processing` - * `clear_waveform_measurement_stats` - * `clear_waveform_processing` - * `fetch_array_measurement` - * `fetch_measurement_stats` - * Measurement library properties. - * `meas_array_gain` - * `meas_array_offset` - * `meas_chan_high_ref_level` - * `meas_chan_low_ref_level` - * `meas_chan_mid_ref_level` - * `meas_filter_center_freq` - * `meas_filter_cutoff_freq` - * `meas_filter_order` - * `meas_filter_ripple` - * `meas_filter_taps` - * `meas_filter_transient_waveform_percent` - * `meas_filter_type` - * `meas_filter_width` - * `meas_fir_filter_window` - * `meas_high_ref` - * `meas_low_ref` - * `meas_mid_ref` - * `meas_hysteresis_percent` - * `meas_interpolation_sampling_factor` - * `meas_last_acq_histogram_size` - * `meas_other_channel` - * `meas_percentage_method` - * `meas_polynomial_interpolation_order` - * `meas_ref_level_units` - * `meas_time_histogram_high_time` - * `meas_time_histogram_high_volts` - * `meas_time_histogram_low_time` - * `meas_time_hisogram_low_volts` - * `meas_time_histogram_size` - * `meas_voltage_histogram_high_volts` - * `meas_voltage_histogram_low_volts` - * `meas_voltage_histogram_size` * #### Changed - * Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods - * Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero - + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -## 1.3.1 - 2020-06-08 -* ### ALL +* ### 1.3.1 - 2020-06-08 * #### Changed * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -## 1.3.0 - 2020-05-21 -* ### ALL - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -* ### `nidcpower` (NI-DCPower) +* ### 1.3.0 - 2020-05-21 * #### Added * API parity with NI-DCPower 20.0 by adding the following properties: * `Session.serial_number` * `Session.actual_power_allocation` * `Session.requested_power_allocation` * `Session.power_allocation_mode` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * 0.9.0 release: - * Public API is considered complete, stable, and tested - * Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 - * API reference documentation and example code are not complete * #### Changed - * Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) - * Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) - * Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) -* ### `niscope` (NI-SCOPE) - * #### Added - * API parity with NI-SCOPE 20.0 by adding the following properties: - * `Session.end_of_acquisition_event_terminal_name` - * `Session.end_of_record_event_terminal_name` - * `Session.advance_trigger_terminal_name` - * `Session.ref_trigger_terminal_name` - * `Session.start_trigger_terminal_name` - * `Session.ready_for_advance_event_terminal_name` - * `Session.ready_for_ref_event_terminal_name` - * `Session.ready_for_start_event_terminal_name` - + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -## 1.2.1 - 2020-04-21 -* ### ALL +* ### 1.2.1 - 2020-04-21 * #### Added * Support for chained repeated capabilities. This allows things like ``` python session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) - * Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) - * `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - * `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) - * #### Changed - * Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) - * `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) - * `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) - * Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): - * Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. - * Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. - * Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. - * Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) - * Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) - * Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - * In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) - * #### Removed - * `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) - * `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) - * `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) - * `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) - * `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) - * `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) - * `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) -* ### `nitclk` (NI-TClk) - * #### Changed - * Version updated to 1.2.1 to match other released nimi-python modules - -## 1.2.0 - 2020-03-06 -* ### ALL +* ### 1.2.0 - 2020-03-06 * #### Added * Zip file per driver for all examples and any helper files * Link to zip file on examples documentation * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -* ### `nidcpower` (NI-DCPower) - * #### Added * `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) * Instead of a list of attribute IDs, you pass in a list of property names as strings * Includes example to see how to use it @@ -581,68 +308,25 @@ All notable changes to this project will be documented in this file. * `delete_advanced_sequence()` * `active_advanced_sequence` * `active_advanced_sequence_step` -* ### `nifgen` (NI-FGEN) - * #### Added - * `nifgen.Session.import_attribute_configuration_file()` - * `nifgen.Session.import_attribute_configuration_buffer()` - * `nifgen.Session.export_attribute_configuration_file()` - * `nifgen.Session.export_attribute_configuration_buffer()` - * `nifgen.Session.get_channel_name()` - * #### Changed - * `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` - * See documentation on how to call this function - * Calling the previous way will log a DeprecationWarning to the warning subsystem - * [#1300](https://github.com/ni/nimi-python/issues/1300) -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) * #### Changed - * `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types - * sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) - * `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) - * Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) * #### Removed - * Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) - * Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) - * Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` - was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) -* ### `nitclk` (NI-TClk) - * #### Changed - * Method parameters and properties that are time based now take or return a `datetime.timedelta` object - * #### Removed - * Ability to pass an integer as a session / session reference - * `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) - + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -## 1.1.5 - 2019-11-22 -* ### ALL +* ### 1.1.5 - 2019-11-22 * #### Changed * Fix #1140: Linux support was accidentally broken. * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -## 1.1.4 - 2019-11-19 -* ### ALL +* ### 1.1.4 - 2019-11-19 * #### Added * Support for Python 3.8 * `ViUInt8` is now a valid type in APIs -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } - * `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } - * `pins` is now a valid repeated capability - * #### Changed - * Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) - * Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) - * Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` - * `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` -* ### `nise` (NI Switch Executive) - * #### Changed - * Version updated to 1.1.4 to match other released nimi-python modules - -## 1.1.3 - 2019-10-21 -* ### ALL +* ### 1.1.3 - 2019-10-21 * #### Changed * The development status in `setup.py` will be based on the module version: * version >= 1.0 @@ -652,145 +336,35 @@ All notable changes to this project will be documented in this file. * version < 1.0 and version >= 0.5 - Beta * version < 0.5 - Alpha * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. -* ### `nidcpower` (NI-DCPower) - * #### Changed * Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) -* ### `nifgen` (NI-FGEN) - * #### Removed - * `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) -* ### `niscope` (NI-SCOPE) - * #### Added - * `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum - * `enabled_channels`, `product_code` properties - * `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums - * `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums - * `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums -* ### `nise` (NI Switch Executive) - * #### Changed - * Update to 1.0 - now ready for production use -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * Initial support - * Very basic at this point and subject to change - * Looking for any testing and/or feedback - * `get_channel_name_from_string()` - * #### Changed - * New enums: - - | Enum name | Where used | - |----------------------------|----------------------------------------------------------------------------------| - | `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | - | `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | - | `PPMUOutputFunction` | `ppmu_output_function` | - | `SelectedFunction` | `selected_function` | - | `TDREndpointTermination` | `tdr_endpoint_termination` | - | `Signal` | `export_signal(signal)` | - * **[Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. - - * #### Removed - * Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, - `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, - `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` - * Need to determine how to generate this function - `fetch_capture_waveform_u32()` -* ### `nitclk` (NI-TClk) - * #### Added - * Initial support - -## 1.1.2 - 2019-06-06 -* ### ALL +* ### 1.1.2 - 2019-06-06 * #### Changed * Switched to slightly different metadata format - Actual `True`/`False` instead of strings * New internal process for generating metadata -* ### `nifgen` (NI-FGEN) - * #### Changed - * Enum values for `HardwareState` were incorrect - fix to match niFgen.h -* ### `niscope` (NI-SCOPE) - * #### Changed - * Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` - -## 1.1.0 - 2018-10-25 -* ### ALL - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) -* ### `nidmm` (NI-DMM) - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function -* ### `nidcpower` (NI-DCPower) - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function -* ### `niscope` (NI-SCOPE) +* ### 1.1.0 - 2018-10-25 * #### Added * import_attribute_configuration_file function * export_attribute_configuration_file function * import_attribute_configuration_buffer function * import_attribute_configuration_buffer function + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -## 1.0.1 - 2018-10-17 -* ### ALL +* ### 1.0.1 - 2018-10-17 * #### Added * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) * #### Changed * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) -* ### `niscope` (NI-SCOPE) - * #### Changed - * Format of output of wavefrom_info.__str__() -* ### `nise` (NI Switch Executive) - * #### Added - * Initial Release - -## 1.0.0 - 2018-06-08 -* ### ALL +* ### 1.0.0 - 2018-06-08 * #### Removed * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) -* ### `nidmm` (NI-DMM) - * #### Changed - * Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` - * #### Removed - * `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `latency` - [#875](https://github.com/ni/nimi-python/issues/875) - * `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) - * `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - * `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - * `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) -* ### `nimodinst` (NI-ModInst) - * #### Changed - * Double close will now allow NI-ModInst to return error -* ### `niswitch` (NI-SWITCH) - * #### Removed - * `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) - * `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) - * `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - * `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - * `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) -* ### `nidcpower` (NI-DCPower) - * #### Removed * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) * `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` * `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` @@ -803,41 +377,8 @@ All notable changes to this project will be documented in this file. * `digital_edge_sequence_advance_trigger_edge` * `digital_edge_source_trigger_edge` * `digital_edge_start_trigger_edge` -* ### `nifgen` (NI-FGEN) - * #### Changed - * `num_channels` attribute renamed to `channel_count` - now consistent with other drivers - * `send_software_edge_trigger()` no longer takes any parameters. - * To send a start software trigger, call it on the session directly: - ``` python - session.send_software_edge_trigger() - ``` - * To send a script software trigger, call it on the script triggers container: - ``` python - session.script_triggers[1].send_software_edge_trigger() - ``` - * #### Removed - * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - * `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` - * `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` - * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` - * Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) -* ### `niscope` (NI-SCOPE) - * #### Added - * `niscope_fetch_forever.py` example - * #### Removed - * Removed default value for `level` parameter on `configure_trigger_edge()` - * parameter list is now - ``` python - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` - * Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` - * parameter list is now - ``` python - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` -## 0.9.0 - 2018-05-22 -* ### ALL +* ### 0.9.0 - 2018-05-22 * #### Added * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) @@ -864,152 +405,17 @@ All notable changes to this project will be documented in this file. * `query_instrument_status` * `cache` * `specific_driver_prefix` -* ### `nidcpower` (NI-DCPower) - * #### Removed * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) * `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) * `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) * Default value for trigger parameter on `send_software_edge_trigger()` [#832](https://github.com/ni/nimi-python/issues/832) -* ### `nifgen` (NI-FGEN) - * #### Changed - * Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. - * `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` - * `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` - * Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) - * `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` - * `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` - * #### Removed - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - * `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - * `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) - * `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) - * `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) - * `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) - * `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) - * `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) - * `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) - * `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) - * `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) - * `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) - * `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) - * `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) - * `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) - * `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) - * `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) - * `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) - * `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) - * `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) -* ### `niscope` (NI-SCOPE) - * #### Removed - * Properties removed - * `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - * `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - * `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - * `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - * `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - * `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - * `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - * `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - * `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - * `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - * `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - * `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - * `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * Methods removed - * `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) -* ### `nimodinst` (NI-ModInst) - * #### Changed - * Indexing on `nimodinst.Session` is no longer allowed - * `session[0].device_name` becomes `session.devices[0].device_name` - * This is to be consistent with other drivers -## 0.8.0 - 2018-04-27 -* ### ALL +* ### 0.8.0 - 2018-04-27 * #### Changed * All exceptions raised by the Python bindings inherit from `.Error` * Exception type formerly known as `.Error` is now known as `.DriverError` * This encapsulates any error that is returned by the underlying driver * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) -* ### `nidmm` (NI-DMM) - * #### Changed - * Enum values that start with an underscore + digit have been renamed - * `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` - * `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - * `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - * `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - * `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - * `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - * `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) -* ### `nidcpower` (NI-DCPower) - * #### Changed * `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) * `Session.set_sequence()` values parameter no longer has a default value and must be passed in. Parameter order has changed as a result of this - issue [#797](https://github.com/ni/nimi-python/issues/797) @@ -1020,95 +426,10 @@ All notable changes to this project will be documented in this file. * `create_advanced_sequence()` * `create_advanced_sequence_step()` * `delete_advanced_sequence()` -* ### `nifgen` (NI-FGEN) - * #### Changed - * `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - * #### Removed - * `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python - * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) -* ### `niscope` (NI-SCOPE) - * #### Changed - * `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - * Takes additional parameters that modify fetch behavior - * Add resulting record as part of the waveform info - * Channel name and record number added to waveform info - * See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - * Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - * Enum values and attribute names that start with an underscore + digit have been renamed - * `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` - * `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` - * `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` - * `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` - * `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` - * `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` - * `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` - * `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` - * `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` - * `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` - * `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` - * `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` - * `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` - * `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` - * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - * #### Removed - * Following properties are now removed (use parameters to fetch calls): - * `fetch_relative_to` - * `fetch_offset` - * `fetch_record_number` - * `fetch_num_records` - * Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - * Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - * `actual_meas_wfm_size()` - * `add_waveform_processing()` - * `clear_waveform_processing()` - * `fetch_array_measurement()` - * `clear_waveform_measurement_stats()` - * `fetch_measurement()` - * `fetch_measurement_stats()` - * `read_measurement()` - * `configure_ref_levels()` - * `meas_ref_level_units` - * `meas_other_channel` - * `meas_hysteresis_percent` - * `meas_last_acq_histogram_size` - * `meas_voltage_histogram_size` - * `meas_voltage_histogram_low_volts` - * `meas_voltage_histogram_high_volts` - * `meas_time_histogram_size` - * `meas_time_histogram_low_volts` - * `meas_time_histogram_high_volts` - * `meas_time_histogram_low_time` - * `meas_time_histogram_high_time` - * `meas_polynomial_interpolation_order` - * `meas_interpolation_sampling_factor` - * `meas_filter_cutoff_freq` - * `meas_filter_center_freq` - * `meas_filter_ripple` - * `meas_filter_transient_waveform_percent` - * `meas_filter_type` - * `meas_filter_order` - * `meas_filter_taps` - * `meas_chan_low_ref_level` - * `meas_chan_mid_ref_level` - * `meas_chan_high_ref_level` - * `meas_filter_width` - * `meas_fir_filter_window` - * `meas_array_gain` - * `meas_array_offset` - * `meas_percentage_method` - * `fetch_meas_num_samples` -## 0.7.0 - 2018-02-20 -* ### ALL +* ### 0.7.0 - 2018-02-20 + * #### Added + * `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion * #### Changed * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) * Key/Value pairs approporiate for desired behavior @@ -1118,35 +439,6 @@ All notable changes to this project will be documented in this file. * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion -* ### `nidmm` (NI-DMM) - * #### Changed - * `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - * The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - * `configure_multi_point()` - * `configure_trigger()` - * `fetch()` - * `fetch_multi_point()` - * `fetch_waveform()` - * `read()` - * `read_multi_point()` - * `read_waveform()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_cal_date_and_time()` - * Metadata updated to NI-DMM 17.5 - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `DCBias` - `DC_BIAS` - * `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` -* ### `niswitch` (NI-SWITCH) - * #### Changed - * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - * `configure_scan_trigger()` - * `wait_for_debounce()` - * `wait_for_scan_complete()` -* ### `nidcpower` (NI-DCPower) - * #### Added - * `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * #### Changed * Metadata updated to NI-DCPower 17.6.1 * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: * `fetch_multiple()` @@ -1160,247 +452,2392 @@ All notable changes to this project will be documented in this file. * `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` * `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` * `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` -* ### `nifgen` (NI-FGEN) + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). * #### Changed - * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - * `channel` repeated capability - * `markers` repeated capability - * `script_triggers` repeated capability - * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - * `adjust_sample_clock_relative_delay()` - * `wait_until_done()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_ext_cal_last_date_and_time()` - * `get_self_cal_last_date_and_time()` -* ### `niscope` (NI-SCOPE) + * Property power_line_frequency no longer uses enum PowerLineFrequency. + * Removed `actual_count` from `fetch_multiple()` returned tuple + +* ### 0.5.0 - 2017-11-27 * #### Added - * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - * `channel` repeated capability + * `get_ext_cal_last_date_and_time` + * `get_ext_cal_last_temp` + * `get_ext_cal_recommended_interval` + * `measure_multiple` + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + +* ### 0.4.0 - 2017-11-07 + * #### Added + * New example `nidcpower_advanced_sequence.py` * #### Changed - * `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - * `configure_trigger_digital()` - * `configure_trigger_edge()` - * `configure_trigger_hysteresis()` - * `configure_trigger_software()` - * `configure_trigger_video()` - * `configure_trigger_window()` - * `fetch()` - * `fetch_measurement_stats()` - * `read()` + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + * Fixed method signature for: + * `wait_for_event` + * `create_sequence` + * `create_advanced_sequence` * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` - * `BoolEnableDisableChan` - `CHANNEL_ENABLED` - * `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` - * `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` - * `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + * Support for `measure_multiple` until issue #444 is addressed. -## 0.6.0 - 2017-12-20 -* ### ALL - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -* ### `nidmm` (NI-DMM) - * #### Added - * `fetch_waveform_into` for high-performance fetch using numpy.array of float64. - * #### Changed - * Property powerline_freq no longer uses enum PowerlineFrequency. - * Property current_source no longer uses enum CurrentSource. - * Property input_resistance no longer uses enum InputResistance. - * Removed `actual_number_of_points` from `fetch_waveform()` returned tuple - * Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple - * Removed `actual_number_of_points` from `read_multi_point()` returned tuple - * Removed `actual_number_of_points` from `read_waveform()` returned tuple -* ### `niswitch` (NI-SWITCH) - * #### Removed - * Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). -* ### `nidcpower` (NI-DCPower) - * #### Changed - * Property power_line_frequency no longer uses enum PowerLineFrequency. - * Removed `actual_count` from `fetch_multiple()` returned tuple -* ### `nifgen` (NI-FGEN) - * #### Added - * Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) - * Support for calling `write_waveform` with a waveform handle (int) or a name (str). - * Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) - * #### Changed - * Renamed `create_waveform_f64` -> `create_waveform` - * #### Removed - * `create_waveform_i16` - * `write_binary16_waveform`: Use `write_waveform` - * `write_named_waveform_i16`: Use `write_waveform` - * `write_named_waveform_f64`: Use `write_waveform` -* ### `niscope` (NI-SCOPE) - * #### Added - * `fetch_into` for high-performance fetch using numpy.array. Supported element types: - * `numpy.float64` - * `numpy.int8` - * `numpy.int16` - * `numpy.int32` - * #### Changed - * Added default values for timeout on all fetch and read functions. - * Property input_impedance no longer uses enum InputImpedance. - * #### Removed - * `AddWaveformProcessing` - See #667 for rationale - * `ClearWaveformProcessing` - See #667 for rationale - * `FetchArrayMeasurement` - See #667 for rationale - -## 0.5.0 - 2017-11-27 -* ### ALL - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes -* ### `nidmm` (NI-DMM) - * #### Added - * `get_ext_cal_recommended_interval` -* ### `nidcpower` (NI-DCPower) - * #### Added - * `get_ext_cal_last_date_and_time` - * `get_ext_cal_last_temp` - * `get_ext_cal_recommended_interval` - * `measure_multiple` -* ### `nifgen` (NI-FGEN) - * #### Removed - * `adjust_sample_clock_relative_delay` -* ### `niscope` (NI-SCOPE) - * #### Added - * Initial release - * #### Removed - * Removed Peer to Peer attributes - -## 0.4.0 - 2017-11-07 -* ### ALL - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines -* ### `nidmm` (NI-DMM) - * #### Changed - * Removed incorrect leading underscore from some enum values: - * `Function.AC_VOLTS_DC_COUPLED` - * `Function.WAVEFORM_CURRENT` - * `MeasurementCompleteDest.LBR_TRIG_0` - * `OperationMode.IVIDMM_MODE` - * `SampleTrigger.EXTERNAL` - * `SampleTrigger.TTL_3` - * `TriggerSource.TTL_0` - * `TriggerSource.TTL_3` - * `TriggerSource.TTL_7` - * `TriggerSource.PXI_STAR` -* ### `niswitch` (NI-SWITCH) - * #### Removed - * Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. -* ### `nidcpower` (NI-DCPower) - * #### Added - * New example `nidcpower_advanced_sequence.py` - * #### Changed - * Fixed method signature for: - * `wait_for_event` - * `create_sequence` - * `create_advanced_sequence` - * #### Removed - * Support for `measure_multiple` until issue #444 is addressed. -* ### `nifgen` (NI-FGEN) - * #### Added - * Initial release - -## 0.3.0 - 2017-10-13 -* ### ALL - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -* ### `nidmm` (NI-DMM) - * #### Changed - * Added default values to some parameters. - * #### Removed - * Removed methods that aren’t useful in the Python bindings. -* ### `niswitch` (NI-SWITCH) - * #### Changed - * Added default values to some parameters. - * #### Removed - * Removed methods that aren’t useful in the Python bindings. -* ### `nidcpower` (NI-DCPower) - * #### Added - * Initial release - -## 0.2.0 - 2017-09-20 -* ### ALL - * #### Added - * Suport for channel-based properties - * #### Changed - * Warnings no longer raise an exception - * Warnings are now added to warnings.warn() -* ### `nidmm` (NI-DMM) - * #### Changed - * Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) -* ### `nimodinst` (NI-ModInst) - * #### Changed - * Device index is now on session not attribute. The correct way is now - ```python - i = 0 - with nimodinst.Session('nidmm') as session: - name = session[i].device_name - ``` -* ### `niswitch` (NI-SWITCH) - * #### Added - * Initial release - -## 0.1.0 - 2017-09-01 -* ### `nidmm` (NI-DMM) - * #### Added - * Initial release -* ### `nimodinst` (NI-ModInst) - * #### Added - * Initial release +* ### 0.3.0 - 2017-10-13 + * #### Added + * Support for ViInt64 (64-bit integers) + * Initial release + * #### Changed + * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ```python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). +--- - `Function.TWO_WIRE_RES` + * `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + * `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + * `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + * `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + * `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + * `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + +* ### 0.7.0 - 2018-02-20 + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + * The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: + * `configure_multi_point()` + * `configure_trigger()` + * `fetch()` + * `fetch_multi_point()` + * `fetch_waveform()` + * `read()` + * `read_multi_point()` + * `read_waveform()` + * The following functions return a `datetime.datetime()` object representing the date and time + * `get_cal_date_and_time()` + * Metadata updated to NI-DMM 17.5 + * #### Removed + * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + * `DCBias` - `DC_BIAS` + * `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + * `fetch_waveform_into` for high-performance fetch using numpy.array of float64. + * #### Changed + * Property powerline_freq no longer uses enum PowerlineFrequency. + * Property current_source no longer uses enum CurrentSource. + * Property input_resistance no longer uses enum InputResistance. + * Removed `actual_number_of_points` from `fetch_waveform()` returned tuple + * Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple + * Removed `actual_number_of_points` from `read_multi_point()` returned tuple + * Removed `actual_number_of_points` from `read_waveform()` returned tuple + +* ### 0.5.0 - 2017-11-27 + * #### Added + * `get_ext_cal_recommended_interval` + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + +* ### 0.4.0 - 2017-11-07 + * #### Changed + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + * Removed incorrect leading underscore from some enum values: + * `Function.AC_VOLTS_DC_COUPLED` + * `Function.WAVEFORM_CURRENT` + * `MeasurementCompleteDest.LBR_TRIG_0` + * `OperationMode.IVIDMM_MODE` + * `SampleTrigger.EXTERNAL` + * `SampleTrigger.TTL_3` + * `TriggerSource.TTL_0` + * `TriggerSource.TTL_3` + * `TriggerSource.TTL_7` + * `TriggerSource.PXI_STAR` + +* ### 0.3.0 - 2017-10-13 + * #### Added + * Support for ViInt64 (64-bit integers) + * #### Changed + * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ```python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + * Added default values to some parameters. + * #### Removed + * Removed methods that aren’t useful in the Python bindings. + +* ### 0.2.0 - 2017-09-20 + * #### Added + * Suport for channel-based properties + * #### Changed + * Warnings no longer raise an exception + * Warnings are now added to warnings.warn() + * Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) + +* ### 0.1.0 - 2017-09-01 + * #### Added + * Initial release + +--- + +### nifgen (NI-FGEN) + +- [1.4.9 - 2025-02-26](#nifgen-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nifgen-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nifgen-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nifgen-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nifgen-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nifgen-143---2022-12-16) +- [1.4.2 - 2022-08-03](#nifgen-142---2022-08-03) +- [1.4.1 - 2021-08-23](#nifgen-141---2021-08-23) +- [1.3.3 - 2021-02-26](#nifgen-133---2021-02-26) +- [1.3.2 - 2020-09-18](#nifgen-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nifgen-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nifgen-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nifgen-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nifgen-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nifgen-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nifgen-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nifgen-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nifgen-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nifgen-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nifgen-101---2018-10-17) +- [1.0.0 - 2018-06-08](#nifgen-100---2018-06-08) +- [0.9.0 - 2018-05-22](#nifgen-090---2018-05-22) +- [0.8.0 - 2018-04-27](#nifgen-080---2018-04-27) +- [0.7.0 - 2018-02-20](#nifgen-070---2018-02-20) +- [0.6.0 - 2017-12-20](#nifgen-060---2017-12-20) +- [0.5.0 - 2017-11-27](#nifgen-050---2017-11-27) +- [0.4.0 - 2017-11-07](#nifgen-040---2017-11-07) + +* ### 1.4.9 - 2025-02-26 + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 + +* ### 1.4.8 - 2024-04-26 + * #### Added + * Support for Python 3.12 + * Properties added: + * `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * Enum added: + * `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + +* ### 1.4.6 - 2023-09-11 + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +* ### 1.4.5 - 2023-06-12 + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + * #### Removed + * `easy_install` support + +* ### 1.4.4 - 2023-04-14 + * #### Added + * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +* ### 1.4.3 - 2022-12-16 + * #### Added + * Support for Python 3.10 + * MeasurementLink support + * #### Removed + * Support for Python 3.6 + +* ### 1.4.2 - 2022-08-03 + * #### Added + * `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) + * #### Changed + * Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities: + * `channels` + * `markers` + * `data_markers` + * `script_triggers` + * Corrected multiple mistakes in repeated capability info of attribute metadata + * alters API behavior (repeated capability access of attributes) and documentation + +* ### 1.4.1 - 2021-08-23 + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 + +* ### 1.3.3 - 2021-02-26 + * #### Added + * `nifgen_trigger.py` example to demonstrate pulling a trigger from another device. + +* ### 1.3.2 - 2020-09-18 + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +* ### 1.3.1 - 2020-06-08 + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +* ### 1.3.0 - 2020-05-21 + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +* ### 1.2.1 - 2020-04-21 + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +* ### 1.2.0 - 2020-03-06 + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * `nifgen.Session.import_attribute_configuration_file()` + * `nifgen.Session.import_attribute_configuration_buffer()` + * `nifgen.Session.export_attribute_configuration_file()` + * `nifgen.Session.export_attribute_configuration_buffer()` + * `nifgen.Session.get_channel_name()` + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` + * See documentation on how to call this function + * Calling the previous way will log a DeprecationWarning to the warning subsystem + * [#1300](https://github.com/ni/nimi-python/issues/1300) + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +* ### 1.1.5 - 2019-11-22 + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +* ### 1.1.4 - 2019-11-19 + * #### Added + * Support for Python 3.8. + * `ViUInt8` is now a valid type in APIs + +* ### 1.1.3 - 2019-10-21 + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + * #### Removed + * `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) + +* ### 1.1.2 - 2019-06-06 + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata + * Enum values for `HardwareState` were incorrect - fix to match niFgen.h + +* ### 1.1.0 - 2018-10-25 + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +* ### 1.0.1 - 2018-10-17 + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +* ### 1.0.0 - 2018-06-08 + * #### Changed + * `num_channels` attribute renamed to `channel_count` - now consistent with other drivers + * `send_software_edge_trigger()` no longer takes any parameters. + * To send a start software trigger, call it on the session directly: + ``` python + session.send_software_edge_trigger() + ``` + * To send a script software trigger, call it on the script triggers container: + ``` python + session.script_triggers[1].send_software_edge_trigger() + ``` + * #### Removed + * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + * `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` + * `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` + * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` + * Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) + +* ### 0.9.0 - 2018-05-22 + * #### Added + * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + * Fix thread-safety issues by using IVI session lock where aplicable + * #### Changed + * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + * Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. + * `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` + * `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` + * Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) + * `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` + * `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` + * #### Removed + * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + * `engine_major_version` + * `engine_minor_version` + * `engine_revision` + * `primary_error` + * `secondary_error` + * `error_elaboration` + * `io_session_type` + * `io_session` / `visa_rm_session` + * `group_capabilities` + * `interchange_check` + * `range_check` + * `record_coercions` + * `specific_driver_class_spec_major_version` + * `specific_driver_class_spec_minor_version` + * `query_instrument_status` + * `cache` + * `specific_driver_prefix` + * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + * `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + * `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) + * `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) + * `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) + * `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) + * `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) + * `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) + * `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) + * `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) + * `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) + * `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) + * `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) + * `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) + * `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) + * `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) + * `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) + * `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) + * `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) + * `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) + +* ### 0.8.0 - 2018-04-27 + * #### Changed + * All exceptions raised by the Python bindings inherit from `.Error` + * Exception type formerly known as `.Error` is now known as `.DriverError` + * This encapsulates any error that is returned by the underlying driver + * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + * `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) + * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + * #### Removed + * `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python + * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) + +* ### 0.7.0 - 2018-02-20 + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + * `channel` repeated capability + * `markers` repeated capability + * `script_triggers` repeated capability + * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + * `adjust_sample_clock_relative_delay()` + * `wait_until_done()` + * The following functions return a `datetime.datetime()` object representing the date and time + * `get_ext_cal_last_date_and_time()` + * `get_self_cal_last_date_and_time()` + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + * Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) + * Support for calling `write_waveform` with a waveform handle (int) or a name (str). + * Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) + * #### Changed + * Renamed `create_waveform_f64` -> `create_waveform` + * #### Removed + * `create_waveform_i16` + * `write_binary16_waveform`: Use `write_waveform` + * `write_named_waveform_i16`: Use `write_waveform` + * `write_named_waveform_f64`: Use `write_waveform` + +* ### 0.5.0 - 2017-11-27 + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + * `adjust_sample_clock_relative_delay` + +* ### 0.4.0 - 2017-11-07 + * #### Added + * Initial release + * #### Changed + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +--- +### nimodinst (NI-ModInst) + +- [1.4.9 - 2025-02-26](#nimodinst-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nimodinst-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nimodinst-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nimodinst-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nimodinst-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nimodinst-143---2022-12-16) +- [1.4.1 - 2021-08-23](#nimodinst-141---2021-08-23) +- [1.3.2 - 2020-09-18](#nimodinst-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nimodinst-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nimodinst-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nimodinst-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nimodinst-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nimodinst-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nimodinst-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nimodinst-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nimodinst-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nimodinst-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nimodinst-101---2018-10-17) +- [1.0.0 - 2018-06-08](#nimodinst-100---2018-06-08) +- [0.9.0 - 2018-05-22](#nimodinst-090---2018-05-22) +- [0.8.0 - 2018-04-27](#nimodinst-080---2018-04-27) +- [0.7.0 - 2018-02-20](#nimodinst-070---2018-02-20) +- [0.6.0 - 2017-12-20](#nimodinst-060---2017-12-20) +- [0.5.0 - 2017-11-27](#nimodinst-050---2017-11-27) +- [0.4.0 - 2017-11-07](#nimodinst-040---2017-11-07) +- [0.3.0 - 2017-10-13](#nimodinst-030---2017-10-13) +- [0.2.0 - 2017-09-20](#nimodinst-020---2017-09-20) + +* ### 1.4.9 - 2025-02-26 + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 + +* ### 1.4.8 - 2024-04-26 + * #### Added + * Support for Python 3.12 + +* ### 1.4.6 - 2023-09-11 + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +* ### 1.4.5 - 2023-06-12 + * #### Removed + * `easy_install` support + +* ### 1.4.4 - 2023-04-14 + * #### Added + * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +* ### 1.4.3 - 2022-12-16 + * #### Added + * Support for Python 3.10 + * #### Removed + * Support for Python 3.6 + +* ### 1.4.1 - 2021-08-23 + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 + +* ### 1.3.2 - 2020-09-18 + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +* ### 1.3.1 - 2020-06-08 + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +* ### 1.3.0 - 2020-05-21 + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +* ### 1.2.1 - 2020-04-21 + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +* ### 1.2.0 - 2020-03-06 + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +* ### 1.1.5 - 2019-11-22 + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +* ### 1.1.4 - 2019-11-19 + * #### Added + * Support for Python 3.8 + * `ViUInt8` is now a valid type in APIs + +* ### 1.1.3 - 2019-10-21 + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +* ### 1.1.2 - 2019-06-06 + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata + +* ### 1.1.0 - 2018-10-25 + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +* ### 1.0.1 - 2018-10-17 + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +* ### 1.0.0 - 2018-06-08 + * #### Removed + * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +* ### 0.9.0 - 2018-05-22 + * #### Added + * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + * Fix thread-safety issues by using IVI session lock where aplicable + * #### Changed + * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + * Indexing on `nimodinst.Session` is no longer allowed + * `session[0].device_name` becomes `session.devices[0].device_name` + * This is to be consistent with other drivers + * #### Removed + * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + * `engine_major_version` + * `engine_minor_version` + * `engine_revision` + * `primary_error` + * `secondary_error` + * `error_elaboration` + * `io_session_type` + * `io_session` / `visa_rm_session` + * `group_capabilities` + * `interchange_check` + * `range_check` + * `record_coercions` + * `specific_driver_class_spec_major_version` + * `specific_driver_class_spec_minor_version` + * `query_instrument_status` + * `cache` + * `specific_driver_prefix` + +* ### 0.8.0 - 2018-04-27 + * #### Changed + * All exceptions raised by the Python bindings inherit from `.Error` + * Exception type formerly known as `.Error` is now known as `.DriverError` + * This encapsulates any error that is returned by the underlying driver + * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +* ### 0.7.0 - 2018-02-20 + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +* ### 0.5.0 - 2017-11-27 + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + +* ### 0.4.0 - 2017-11-07 + * #### Changed + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +* ### 0.3.0 - 2017-10-13 + * #### Added + * Support for ViInt64 (64-bit integers) + * #### Changed + * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ```python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +* ### 0.2.0 - 2017-09-20 + * #### Added + * Suport for channel-based properties + * #### Changed + * Warnings no longer raise an exception + * Warnings are now added to warnings.warn() + * Device index is now on session not attribute. The correct way is now + ```python + i = 0 + with nimodinst.Session('nidmm') as session: + name = session[i].device_name + ``` +--- + +### niscope (NI-SCOPE) + +- [1.4.9 - 2025-02-26](#niscope-149---2025-02-26) +- [1.4.8 - 2024-04-26](#niscope-148---2024-04-26) +- [1.4.6 - 2023-09-11](#niscope-146---2023-09-11) +- [1.4.5 - 2023-06-12](#niscope-145---2023-06-12) +- [1.4.4 - 2023-04-14](#niscope-144---2023-04-14) +- [1.4.3 - 2022-12-16](#niscope-143---2022-12-16) +- [1.4.1 - 2021-08-23](#niscope-141---2021-08-23) +- [1.3.2 - 2020-09-18](#niscope-132---2020-09-18) +- [1.3.1 - 2020-06-08](#niscope-131---2020-06-08) +- [1.3.0 - 2020-05-21](#niscope-130---2020-05-21) +- [1.2.1 - 2020-04-21](#niscope-121---2020-04-21) +- [1.2.0 - 2020-03-06](#niscope-120---2020-03-06) +- [1.1.5 - 2019-11-22](#niscope-115---2019-11-22) +- [1.1.4 - 2019-11-19](#niscope-114---2019-11-19) +- [1.1.3 - 2019-10-21](#niscope-113---2019-10-21) +- [1.1.2 - 2019-06-06](#niscope-112---2019-06-06) +- [1.1.0 - 2018-10-25](#niscope-110---2018-10-25) +- [1.0.1 - 2018-10-17](#niscope-101---2018-10-17) +- [1.0.0 - 2018-06-08](#niscope-100---2018-06-08) +- [0.9.0 - 2018-05-22](#niscope-090---2018-05-22) +- [0.8.0 - 2018-04-27](#niscope-080---2018-04-27) +- [0.7.0 - 2018-02-20](#niscope-070---2018-02-20) +- [0.6.0 - 2017-12-20](#niscope-060---2017-12-20) +- [0.5.0 - 2017-11-27](#niscope-050---2017-11-27) + +* ### 1.4.9 - 2025-02-26 + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 + +* ### 1.4.8 - 2024-04-26 + * #### Added + * Support for Python 3.12 + +* ### 1.4.6 - 2023-09-11 + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +* ### 1.4.5 - 2023-06-12 + * #### Added + * `get_channel_names()` + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + * #### Changed + * Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. + * #### Removed + * `easy_install` support + +* ### 1.4.4 - 2023-04-14 + * #### Added + * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + * Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. + * Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + + * #### Added + * Support for Python 3.10 + * MeasurementLink support + * #### Removed + * Support for Python 3.6 + +* ### 1.4.1 - 2021-08-23 + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 + +* ### 1.3.2 - 2020-09-18 + * #### Added + * New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) + * `get_ext_cal_last_date_and_time` + * `get_ext_cal_last_temp` + * `get_self_cal_last_date_and_time` + * `get_self_cal_last_temp` + * Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) + * `add_waveform_processing` + * `clear_waveform_measurement_stats` + * `clear_waveform_processing` + * `fetch_array_measurement` + * `fetch_measurement_stats` + * Measurement library properties. + * `meas_array_gain` + * `meas_array_offset` + * `meas_chan_high_ref_level` + * `meas_chan_low_ref_level` + * `meas_chan_mid_ref_level` + * `meas_filter_center_freq` + * `meas_filter_cutoff_freq` + * `meas_filter_order` + * `meas_filter_ripple` + * `meas_filter_taps` + * `meas_filter_transient_waveform_percent` + * `meas_filter_type` + * `meas_filter_width` + * `meas_fir_filter_window` + * `meas_high_ref` + * `meas_low_ref` + * `meas_mid_ref` + * `meas_hysteresis_percent` + * `meas_interpolation_sampling_factor` + * `meas_last_acq_histogram_size` + * `meas_other_channel` + * `meas_percentage_method` + * `meas_polynomial_interpolation_order` + * `meas_ref_level_units` + * `meas_time_histogram_high_time` + * `meas_time_histogram_high_volts` + * `meas_time_histogram_low_time` + * `meas_time_hisogram_low_volts` + * `meas_time_histogram_size` + * `meas_voltage_histogram_high_volts` + * `meas_voltage_histogram_low_volts` + * `meas_voltage_histogram_size` + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + * Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods + * Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero + +* ### 1.3.1 - 2020-06-08 + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +* ### 1.3.0 - 2020-05-21 + * #### Added + * API parity with NI-SCOPE 20.0 by adding the following properties: + * `Session.end_of_acquisition_event_terminal_name` + * `Session.end_of_record_event_terminal_name` + * `Session.advance_trigger_terminal_name` + * `Session.ref_trigger_terminal_name` + * `Session.start_trigger_terminal_name` + * `Session.ready_for_advance_event_terminal_name` + * `Session.ready_for_ref_event_terminal_name` + * `Session.ready_for_start_event_terminal_name` + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +* ### 1.2.1 - 2020-04-21 + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +* ### 1.2.0 - 2020-03-06 + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +* ### 1.1.5 - 2019-11-22 + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +* ### 1.1.4 - 2019-11-19 + * #### Added + * Support for Python 3.8 + * `ViUInt8` is now a valid type in APIs + +* ### 1.1.3 - 2019-10-21 + * #### Added + * `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum + * `enabled_channels`, `product_code` properties + * `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums + * `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums + * `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +* ### 1.1.2 - 2019-06-06 + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata + * Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` + +* ### 1.1.0 - 2018-10-25 + * #### Added + * import_attribute_configuration_file function + * export_attribute_configuration_file function + * import_attribute_configuration_buffer function + * import_attribute_configuration_buffer function + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +* ### 1.0.1 - 2018-10-17 + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + * Format of output of wavefrom_info.__str__() + +* ### 1.0.0 - 2018-06-08 + * #### Added + * `niscope_fetch_forever.py` example + * #### Removed + * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + * Removed default value for `level` parameter on `configure_trigger_edge()` + * parameter list is now + ``` python + configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + ``` + * Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` + * parameter list is now + ``` python + configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + ``` + +* ### 0.9.0 - 2018-05-22 + * #### Added + * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + * Fix thread-safety issues by using IVI session lock where aplicable + * #### Changed + * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + * #### Removed + * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + * `engine_major_version` + * `engine_minor_version` + * `engine_revision` + * `primary_error` + * `secondary_error` + * `error_elaboration` + * `io_session_type` + * `io_session` / `visa_rm_session` + * `group_capabilities` + * `interchange_check` + * `range_check` + * `record_coercions` + * `specific_driver_class_spec_major_version` + * `specific_driver_class_spec_minor_version` + * `query_instrument_status` + * `cache` + * `specific_driver_prefix` + * Properties removed + * `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + * `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + * `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + * `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + * `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + * `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + * `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + * `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + * `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + * `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + * `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + * `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + * `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * Methods removed + * `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + +* ### 0.8.0 - 2018-04-27 + * #### Changed + * All exceptions raised by the Python bindings inherit from `.Error` + * Exception type formerly known as `.Error` is now known as `.DriverError` + * This encapsulates any error that is returned by the underlying driver + * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + * `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated + * Takes additional parameters that modify fetch behavior + * Add resulting record as part of the waveform info + * Channel name and record number added to waveform info + * See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), + and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. + * Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` + * Enum values and attribute names that start with an underscore + digit have been renamed + * `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` + * `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` + * `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` + * `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` + * `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` + * `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` + * `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` + * `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` + * `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` + * `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` + * `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` + * `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` + * `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` + * `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` + * `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` + * `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` + * `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` + * `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` + * `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` + * `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` + * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) + * #### Removed + * Following properties are now removed (use parameters to fetch calls): + * `fetch_relative_to` + * `fetch_offset` + * `fetch_record_number` + * `fetch_num_records` + * Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` + * Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) + * `actual_meas_wfm_size()` + * `add_waveform_processing()` + * `clear_waveform_processing()` + * `fetch_array_measurement()` + * `clear_waveform_measurement_stats()` + * `fetch_measurement()` + * `fetch_measurement_stats()` + * `read_measurement()` + * `configure_ref_levels()` + * `meas_ref_level_units` + * `meas_other_channel` + * `meas_hysteresis_percent` + * `meas_last_acq_histogram_size` + * `meas_voltage_histogram_size` + * `meas_voltage_histogram_low_volts` + * `meas_voltage_histogram_high_volts` + * `meas_time_histogram_size` + * `meas_time_histogram_low_volts` + * `meas_time_histogram_high_volts` + * `meas_time_histogram_low_time` + * `meas_time_histogram_high_time` + * `meas_polynomial_interpolation_order` + * `meas_interpolation_sampling_factor` + * `meas_filter_cutoff_freq` + * `meas_filter_center_freq` + * `meas_filter_ripple` + * `meas_filter_transient_waveform_percent` + * `meas_filter_type` + * `meas_filter_order` + * `meas_filter_taps` + * `meas_chan_low_ref_level` + * `meas_chan_mid_ref_level` + * `meas_chan_high_ref_level` + * `meas_filter_width` + * `meas_fir_filter_window` + * `meas_array_gain` + * `meas_array_offset` + * `meas_percentage_method` + * `fetch_meas_num_samples` + +* ### 0.7.0 - 2018-02-20 + * #### Added + * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + * `channel` repeated capability + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + * `configure_trigger_digital()` + * `configure_trigger_edge()` + * `configure_trigger_hysteresis()` + * `configure_trigger_software()` + * `configure_trigger_video()` + * `configure_trigger_window()` + * `fetch()` + * `fetch_measurement_stats()` + * `read()` + * #### Removed + * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + * `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` + * `BoolEnableDisableChan` - `CHANNEL_ENABLED` + * `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` + * `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` + * `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + * `fetch_into` for high-performance fetch using numpy.array. Supported element types: + * `numpy.float64` + * `numpy.int8` + * `numpy.int16` + * `numpy.int32` + * #### Changed + * Added default values for timeout on all fetch and read functions. + * Property input_impedance no longer uses enum InputImpedance. + * #### Removed + * `AddWaveformProcessing` - See #667 for rationale + * `ClearWaveformProcessing` - See #667 for rationale + * `FetchArrayMeasurement` - See #667 for rationale + +* ### 0.5.0 - 2017-11-27 + * #### Added + * Initial release + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + * Removed Peer to Peer attributes + +--- + +## `niswitch` (NI-SWITCH) + +- [1.4.9 - 2025-02-26](#149---2025-02-26) +- [1.4.8 - 2024-04-26](#148---2024-04-26) +- [1.4.6 - 2023-09-11](#146---2023-09-11) +- [1.4.5 - 2023-06-12](#145---2023-06-12) +- [1.4.4 - 2023-04-14](#144---2023-04-14) +- [1.4.3 - 2022-12-16](#143---2022-12-16) +- [1.4.1 - 2021-08-23](#141---2021-08-23) +- [1.3.2 - 2020-09-18](#132---2020-09-18) +- [1.3.1 - 2020-06-08](#131---2020-06-08) +- [1.3.0 - 2020-05-21](#130---2020-05-21) +- [1.2.1 - 2020-04-21](#121---2020-04-21) +- [1.2.0 - 2020-03-06](#120---2020-03-06) +- [1.1.5 - 2019-11-22](#115---2019-11-22) +- [1.1.4 - 2019-11-19](#114---2019-11-19) +- [1.1.3 - 2019-10-21](#113---2019-10-21) +- [1.1.2 - 2019-06-06](#112---2019-06-06) +- [1.1.0 - 2018-10-25](#110---2018-10-25) +- [1.0.1 - 2018-10-17](#101---2018-10-17) +- [1.0.0 - 2018-06-08](#100---2018-06-08) +- [0.9.0 - 2018-05-22](#090---2018-05-22) +- [0.8.0 - 2018-04-27](#080---2018-04-27) +- [0.7.0 - 2018-02-20](#070---2018-02-20) +- [0.6.0 - 2017-12-20](#060---2017-12-20) +- [0.5.0 - 2017-11-27](#050---2017-11-27) +- [0.4.0 - 2017-11-07](#040---2017-11-07) +- [0.3.0 - 2017-10-13](#030---2017-10-13) +- [0.2.0 - 2017-09-20](#020---2017-09-20) + +* ### 1.4.9 - 2025-02-26 + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 + +* ### 1.4.8 - 2024-04-26 + * #### Added + * Support for Python 3.12 + +* ### 1.4.6 - 2023-09-11 + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +* ### 1.4.5 - 2023-06-12 + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + * #### Removed + * `easy_install` support + +* ### 1.4.4 - 2023-04-14 + * #### Added + * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +* ### 1.4.3 - 2022-12-16 + * #### Added + * Support for Python 3.10 + * MeasurementLink support + * #### Changed + * Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page + * #### Removed + * Support for Python 3.6 + +* ### 1.4.1 - 2021-08-23 + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 + +* ### 1.3.2 - 2020-09-18 + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +* ### 1.3.1 - 2020-06-08 + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +* ### 1.3.0 - 2020-05-21 + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +* ### 1.2.1 - 2020-04-21 + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +* ### 1.2.0 - 2020-03-06 + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +* ### 1.1.5 - 2019-11-22 + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +* ### 1.1.4 - 2019-11-19 + * #### Added + * Support for Python 3.8 + * `ViUInt8` is now a valid type in APIs + +* ### 1.1.3 - 2019-10-21 + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +* ### 1.1.2 - 2019-06-06 + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata + +* ### 1.1.0 - 2018-10-25 + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +* ### 1.0.1 - 2018-10-17 + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +* ### 1.0.0 - 2018-06-08 + * #### Removed + * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + * `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) + * `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) + * `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + * `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + * `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) + * `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) + * `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) + * `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) + +* ### 0.9.0 - 2018-05-22 + * #### Added + * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + * Fix thread-safety issues by using IVI session lock where aplicable + * #### Changed + * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + * #### Removed + * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + * `engine_major_version` + * `engine_minor_version` + * `engine_revision` + * `primary_error` + * `secondary_error` + * `error_elaboration` + * `io_session_type` + * `io_session` / `visa_rm_session` + * `group_capabilities` + * `interchange_check` + * `range_check` + * `record_coercions` + * `specific_driver_class_spec_major_version` + * `specific_driver_class_spec_minor_version` + * `query_instrument_status` + * `cache` + * `specific_driver_prefix` + +* ### 0.8.0 - 2018-04-27 + * #### Changed + * All exceptions raised by the Python bindings inherit from `.Error` + * Exception type formerly known as `.Error` is now known as `.DriverError` + * This encapsulates any error that is returned by the underlying driver + * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +* ### 0.7.0 - 2018-02-20 + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + * `configure_scan_trigger()` + * `wait_for_debounce()` + * `wait_for_scan_complete()` + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + * #### Removed + * Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). + +* ### 0.5.0 - 2017-11-27 + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + +* ### 0.4.0 - 2017-11-07 + * #### Changed + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + * #### Removed + * Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. + +* ### 0.3.0 - 2017-10-13 + * #### Added + * Support for ViInt64 (64-bit integers) + * #### Changed + * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ```python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + * Added default values to some parameters. + * #### Removed + * Removed methods that aren’t useful in the Python bindings. + +* ### 0.2.0 - 2017-09-20 + * #### Added + * Suport for channel-based properties + * Initial release + * #### Changed + * Warnings no longer raise an exception + * Warnings are now added to warnings.warn() + +--- +### nise (NI Switch Executive) + +- [1.4.9 - 2025-02-26](#nise-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nise-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nise-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nise-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nise-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nise-143---2022-12-16) +- [1.4.1 - 2021-08-23](#nise-141---2021-08-23) +- [1.3.2 - 2020-09-18](#nise-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nise-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nise-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nise-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nise-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nise-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nise-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nise-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nise-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nise-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nise-101---2018-10-17) + +* ### 1.4.9 - 2025-02-26 + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 + +* ### 1.4.8 - 2024-04-26 + * #### Added + * Support for Python 3.12 + +* ### 1.4.6 - 2023-09-11 + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +* ### 1.4.5 - 2023-06-12 + * #### Removed + * * `easy_install` support + +* ### 1.4.4 - 2023-04-14 + * #### Added + * * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +* ### 1.4.3 - 2022-12-16 + * #### Added + * * Support for Python 3.10 + * #### Removed + * Support for Python 3.6 + +* ### 1.4.1 - 2021-08-23 + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 + +* ### 1.3.2 - 2020-09-18 + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +* ### 1.3.1 - 2020-06-08 + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +* ### 1.3.0 - 2020-05-21 + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +* ### 1.2.1 - 2020-04-21 + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +* ### 1.2.0 - 2020-03-06 + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +* ### 1.1.5 - 2019-11-22 + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +* ### 1.1.4 - 2019-11-19 + * #### Added + * Support for Python 3.8 + * `ViUInt8` is now a valid type in APIs + * #### Changed + * Version updated to 1.1.4 to match other released nimi-python modules + +* ### 1.1.3 - 2019-10-21 + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + * Update to 1.0 - now ready for production use + +* ### 1.1.2 - 2019-06-06 + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata + +* ### 1.1.0 - 2018-10-25 + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +* ### 1.0.1 - 2018-10-17 + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * Initial Release + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +## `nitclk` (NI-TClk) + +- [1.4.9 - 2025-02-26](#nitclk-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nitclk-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nitclk-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nitclk-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nitclk-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nitclk-143---2022-12-16) +- [1.4.1 - 2021-08-23](#nitclk-141---2021-08-23) +- [1.3.3 - 2021-02-26](#nitclk-133---2021-02-26) +- [1.3.2 - 2020-09-18](#nitclk-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nitclk-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nitclk-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nitclk-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nitclk-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nitclk-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nitclk-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nitclk-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nitclk-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nitclk-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nitclk-101---2018-10-17) +- [1.0.0 - 2018-06-08](#nitclk-100---2018-06-08) +- [0.9.0 - 2018-05-22](#nitclk-090---2018-05-22) +- [0.8.0 - 2018-04-27](#nitclk-080---2018-04-27) +- [0.7.0 - 2018-02-20](#nitclk-070---2018-02-20) +- [0.6.0 - 2017-12-20](#nitclk-060---2017-12-20) +- [0.5.0 - 2017-11-27](#nitclk-050---2017-11-27) +- [0.4.0 - 2017-11-07](#nitclk-040---2017-11-07) +- [0.3.0 - 2017-10-13](#nitclk-030---2017-10-13) +- [0.2.0 - 2017-09-20](#nitclk-020---2017-09-20) +- [0.1.0 - 2017-09-01](#nitclk-010---2017-09-01) + +* ### 1.4.9 - 2025-02-26 + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 + +* ### 1.4.8 - 2024-04-26 + * #### Added + * Support for Python 3.12 + +* ### 1.4.6 - 2023-09-11 + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +* ### 1.4.5 - 2023-06-12 + * #### Removed + * `easy_install` support + +* ### 1.4.4 - 2023-04-14 + * #### Added + * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +* ### 1.4.3 - 2022-12-16 + * #### Added + * Support for Python 3.10 + * #### Removed + * Support for Python 3.6 + +* ### 1.4.1 - 2021-08-23 + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 + +* ### 1.3.3 - 2021-02-26 + * #### Added + * nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. + * #### Removed + * nitclk_configure.py as it did not do anything. + +* ### 1.3.2 - 2020-09-18 + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +* ### 1.3.1 - 2020-06-08 + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +* ### 1.3.0 - 2020-05-21 + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +* ### 1.2.1 - 2020-04-21 + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + * #### Changed + * Version updated to 1.2.1 to match other released nimi-python modules + +* ### 1.2.0 - 2020-03-06 + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * Method parameters and properties that are time based now take or return a `datetime.timedelta` object + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + * Ability to pass an integer as a session / session reference + * `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) + +* ### 1.1.5 - 2019-11-22 + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +* ### 1.1.4 - 2019-11-19 + * #### Added + * Support for Python 3.8 + * `ViUInt8` is now a valid type in APIs + +* ### 1.1.3 - 2019-10-21 + * #### Added + * Initial support + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +* ### 1.1.2 - 2019-06-06 + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata + +* ### 1.1.0 - 2018-10-25 + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +* ### 1.0.1 - 2018-10-17 + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +* ### 1.0.0 - 2018-06-08 + * #### Removed + * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +* ### 0.9.0 - 2018-05-22 + * #### Added + * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + * Fix thread-safety issues by using IVI session lock where aplicable + * #### Changed + * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + * #### Removed + * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + * `engine_major_version` + * `engine_minor_version` + * `engine_revision` + * `primary_error` + * `secondary_error` + * `error_elaboration` + * `io_session_type` + * `io_session` / `visa_rm_session` + * `group_capabilities` + * `interchange_check` + * `range_check` + * `record_coercions` + * `specific_driver_class_spec_major_version` + * `specific_driver_class_spec_minor_version` + * `query_instrument_status` + * `cache` + * `specific_driver_prefix` + +* ### 0.8.0 - 2018-04-27 + * #### Changed + * All exceptions raised by the Python bindings inherit from `.Error` + * Exception type formerly known as `.Error` is now known as `.DriverError` + * This encapsulates any error that is returned by the underlying driver + * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +* ### 0.7.0 - 2018-02-20 + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +* ### 0.6.0 - 2017-12-20 + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +* ### 0.5.0 - 2017-11-27 + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes + +* ### 0.4.0 - 2017-11-07 + * #### Changed + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +* ### 0.3.0 - 2017-10-13 + * #### Added + * Support for ViInt64 (64-bit integers) + * #### Changed + * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ```python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +* ### 0.2.0 - 2017-09-20 + * #### Added + * Suport for channel-based properties + * #### Changed + * Warnings no longer raise an exception + * Warnings are now added to warnings.warn() + +* ### 0.1.0 - 2017-09-01 + * #### Removed + --> + + +* ### 0.1.0 - 2017-09-01 + * #### Added + * Initial release + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). + + + diff --git a/tools/build_release.py b/tools/build_release.py index ba2c5d90a..d47ad9f39 100644 --- a/tools/build_release.py +++ b/tools/build_release.py @@ -9,9 +9,6 @@ pp = pprint.PrettyPrinter(indent=4, width=100) default_python_cmd = ['python'] -drivers_to_upload = ['nidcpower', 'nidigital', 'nidmm', 'niswitch', 'nimodinst', 'nifgen', 'niscope', 'nise', 'nitclk'] -drivers_to_update = ['nifake'] + drivers_to_upload - class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter): '''We want the description to use the raw formatting but have the parameters be formatted as before @@ -23,6 +20,9 @@ class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescri def main(): + drivers_to_update = ['nidcpower', 'nidigital', 'nidmm', 'nifake','niswitch', 'nimodinst', 'nifgen', 'niscope', 'nise', 'nitclk'] + + # Setup the required arguments for this script usage = """Release script Prereqs @@ -38,7 +38,9 @@ def main(): build_group.add_argument("--update", action="store_true", default=False, help="Update version in config.py files") build_group.add_argument("--build", action="store_true", default=False, help="Clean and build") build_group.add_argument("--python-cmd", action="store", default=None, help=f"Command to use for invoking python. Default: {default_python_cmd}") - + build_group.add_argument("--drivers",action="store",default=None,help="Comma-separated list of drivers to update. Default: All Drivers") + build_group.add_argument("--update-type",action="store",default=None,choices=["major", "minor", "patch"],help="Specify the type of update: major, minor, or patch." +) verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") verbosity_group.add_argument("--preview", action="store_true", default=False, help="Show what would happen when running with given parameters") @@ -66,13 +68,24 @@ def main(): passthrough_params.append('--log-file').append(args.log_file) if args.release: passthrough_params.append('--release') - + if args.update_type: + passthrough_params.append(f'--update-type={args.update_type}') + + if args.drivers: + provided_drivers = args.drivers.split(",") + invalid_drivers = [driver for driver in provided_drivers if driver not in drivers_to_update] + + if invalid_drivers: + raise ValueError(f"The following drivers are invalid: {', '.join(invalid_drivers)}. Valid drivers are: {','.join(drivers_to_update)}") + drivers_to_update = provided_drivers + + if args.update: logging.info('Updating versions') for d in drivers_to_update: - logging.info(pp.pformat(python_cmd + ['tools/updateReleaseInfo.py', '--src-folder', f'src/{d}', ] + passthrough_params)) - check_call(python_cmd + ['tools/updateReleaseInfo.py', '--src-folder', f'src/{d}', ] + passthrough_params) + logging.info(pp.pformat(python_cmd + ['tools/updateReleaseInfo.py','--src-folder', f'src/{d}',] + passthrough_params)) + check_call(python_cmd + ['tools/updateReleaseInfo.py','--src-folder', f'src/{d}', ] + passthrough_params) if args.build: logging.info('Clean and build') diff --git a/tools/updateReleaseInfo.py b/tools/updateReleaseInfo.py index c5a4207f2..ca63e2729 100644 --- a/tools/updateReleaseInfo.py +++ b/tools/updateReleaseInfo.py @@ -1,5 +1,3 @@ -# !python - import argparse from configure_logging import configure_logging import logging @@ -9,9 +7,24 @@ pp = pprint.PrettyPrinter(indent=4, width=100) +# Increment version based on bump type ('major', 'minor', 'patch'). +def bump_version(version, bump_type): + major, minor, patch = map(int, version.split('.')) + logging.info(f"Parsed version: major={major}, minor={minor}, patch={patch}") + + if bump_type == 'patch' or bump_type is None: + patch += 1 + elif bump_type == 'minor': + minor += 1 + patch = 0 + elif bump_type == 'major': + major += 1 + minor = 0 + patch = 0 + + return f"{major}.{minor}.{patch}" def main(): - # Setup the required arguments for this script usage = """ Update version in files. Example: X.Y.Z.devN to X.Y.Z """ @@ -19,6 +32,7 @@ def main(): file_group = parser.add_argument_group("Input and Output files") file_group.add_argument("--src-folder", action="store", required=True, help="Source folder") file_group.add_argument("--release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. Error if not there") + file_group.add_argument("--update-type", action="store", default=None, choices=["major", "minor", "patch"], help="Specify the type of update: major, minor, or patch.") verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") @@ -34,28 +48,50 @@ def main(): configure_logging(logging.WARNING, args.log_file) logging.info(pp.pformat(args)) - metadata_file = os.path.join(args.src_folder, "metadata", "config_addon.py") with open(metadata_file) as content_file: contents = content_file.read() module_dev_version_re = re.compile(r"'module_version': '(\d+\.\d+\.\d+)\.dev(\d+)'") m = module_dev_version_re.search(contents) + logging.debug(f"Dev version regex match: {m}") + if m: + base_version = m.group(1) + dev_number = int(m.group(2)) if args.release: - logging.info('Dev version found, updating {0}.dev{1} to {0}'.format(m.group(1), int(m.group(2)))) - contents = module_dev_version_re.sub(f"'module_version': '{m.group(1)}'", contents) - new_version = m.group(1) + if args.update_type: + bumped_version = bump_version(base_version, args.update_type) + logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {bumped_version}") + contents = module_dev_version_re.sub(f"'module_version': '{bumped_version}'", contents) + new_version = bumped_version + else: + logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {base_version}") + contents = module_dev_version_re.sub(f"'module_version': '{base_version}'", contents) + new_version = base_version else: - logging.info('Dev version found, updating {0}.dev{1} to {0}.dev{2}'.format(m.group(1), int(m.group(2)), int(m.group(2)) + 1)) - contents = module_dev_version_re.sub(f"'module_version': '{m.group(1)}.dev{int(m.group(2)) + 1}'", contents) - - module_version_re = re.compile(r"'module_version': '(\d+\.\d+\.)(\d+)'") - m = module_version_re.search(contents) - if m and not args.release: - logging.info('Release version found, updating {0}{1} to {0}{2}.dev0'.format(m.group(1), int(m.group(2)), int(m.group(2)) + 1)) - contents = module_version_re.sub(f"'module_version': '{m.group(1)}{int(m.group(2)) + 1}.dev0'", contents) - + if args.update_type: + bumped_version = bump_version(base_version, args.update_type) + logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {bumped_version}.dev0") + contents = module_dev_version_re.sub(f"'module_version': '{bumped_version}.dev0'", contents) + new_version = f"{bumped_version}.dev0" + else: + logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {base_version}.dev{dev_number + 1}") + contents = module_dev_version_re.sub(f"'module_version': '{base_version}.dev{dev_number + 1}'", contents) + new_version = f"{base_version}.dev{dev_number + 1}" + else: + module_version_re = re.compile(r"'module_version': '(\d+\.\d+\.)(\d+)'") + m = module_version_re.search(contents) + logging.debug(f"Release version regex match: {m}") + if m: + if args.release: + logging.error("Error: Attempting to release an already released version for " + os.path.basename(args.src_folder) + ".") + return + new_version = bump_version(f"{m.group(1)}{m.group(2)}", args.update_type) + logging.info(f"Release version found, updating {m.group(1)}{m.group(2)} to {new_version}.dev0") + contents = module_version_re.sub(f"'module_version': '{new_version}.dev0'", contents) + new_version = f"{new_version}.dev0" + if not args.preview: with open(metadata_file, 'w') as content_file: content_file.write(contents) @@ -67,7 +103,5 @@ def main(): with open(latest_release_file, 'w') as content_file: content_file.write(f'{new_version}\n') - if __name__ == '__main__': - main() - + main() \ No newline at end of file From add709b80da7688740462a108f362019684246ae Mon Sep 17 00:00:00 2001 From: dummy Date: Fri, 4 Apr 2025 12:20:50 +0530 Subject: [PATCH 02/32] Updated files are per new implementation --- tools/build_release.py | 38 ++++++++++++++++++++++++++++++-------- tools/updateReleaseInfo.py | 18 ++++++++++-------- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/tools/build_release.py b/tools/build_release.py index d47ad9f39..cc842bfd3 100644 --- a/tools/build_release.py +++ b/tools/build_release.py @@ -33,20 +33,33 @@ def main(): parser = argparse.ArgumentParser(description=usage, formatter_class=CustomFormatter) build_group = parser.add_argument_group("Build configuration") - build_group.add_argument("--release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. build, then update with .dev0") build_group.add_argument("--upload", action="store_true", default=False, help="Upload build distributions to PyPI") - build_group.add_argument("--update", action="store_true", default=False, help="Update version in config.py files") build_group.add_argument("--build", action="store_true", default=False, help="Clean and build") build_group.add_argument("--python-cmd", action="store", default=None, help=f"Command to use for invoking python. Default: {default_python_cmd}") build_group.add_argument("--drivers",action="store",default=None,help="Comma-separated list of drivers to update. Default: All Drivers") - build_group.add_argument("--update-type",action="store",default=None,choices=["major", "minor", "patch"],help="Specify the type of update: major, minor, or patch." -) + build_group.add_argument("--increment-major-version", action="store_true", default=False, help="Increment the major version") + build_group.add_argument("--increment-minor-version", action="store_true", default=False, help="Increment the minor version") + build_group.add_argument("--increment-patch-version", action="store_true", default=False, help="Increment the patch version") + build_group.add_argument("--increment-build-number", action="store_true", default=False, help="Increment the build number") + build_group.add_argument("--update-for-release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. build, then update with .dev0") + verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") verbosity_group.add_argument("--preview", action="store_true", default=False, help="Show what would happen when running with given parameters") verbosity_group.add_argument("--log-file", action="store", default=None, help="Send logging to listed file instead of stdout") args = parser.parse_args() + # Validate that only one of the version-related flags is provided + version_flags = [ + args.increment_major_version, + args.increment_minor_version, + args.increment_patch_version, + args.increment_build_number, + ] + if sum(version_flags) > 1: + raise ValueError("Only one of --increment-major-version, --increment-minor-version, --increment-patch-version or --increment-build-number can be provided.") + + if args.verbose > 1: configure_logging(logging.DEBUG, args.log_file) elif args.verbose == 1: @@ -66,10 +79,17 @@ def main(): passthrough_params.append('--preview') if args.log_file: passthrough_params.append('--log-file').append(args.log_file) - if args.release: + if args.update_for_release: passthrough_params.append('--release') - if args.update_type: - passthrough_params.append(f'--update-type={args.update_type}') + if args.increment_build_number: + passthrough_params.append(f'--update-type=build') + if args.increment_patch_version: + passthrough_params.append(f'--update-type=patch') + if args.increment_minor_version: + passthrough_params.append(f'--update-type=minor') + if args.increment_major_version: + passthrough_params.append(f'--update-type=major') + if args.drivers: provided_drivers = args.drivers.split(",") @@ -78,9 +98,10 @@ def main(): if invalid_drivers: raise ValueError(f"The following drivers are invalid: {', '.join(invalid_drivers)}. Valid drivers are: {','.join(drivers_to_update)}") drivers_to_update = provided_drivers + - if args.update: + if any([args.increment_major_version, args.increment_minor_version, args.increment_patch_version, args.increment_build_number, args.update_for_release]): logging.info('Updating versions') for d in drivers_to_update: @@ -99,6 +120,7 @@ def main(): if args.upload: logging.info('Uploading to PyPI') complete_twine_cmd = twine_cmd + ['upload'] + drivers_to_upload = [driver for driver in drivers_to_update if driver != 'nifake'] for d in drivers_to_upload: complete_twine_cmd += [f'generated/{d}/dist/*'] diff --git a/tools/updateReleaseInfo.py b/tools/updateReleaseInfo.py index ca63e2729..936673417 100644 --- a/tools/updateReleaseInfo.py +++ b/tools/updateReleaseInfo.py @@ -12,7 +12,7 @@ def bump_version(version, bump_type): major, minor, patch = map(int, version.split('.')) logging.info(f"Parsed version: major={major}, minor={minor}, patch={patch}") - if bump_type == 'patch' or bump_type is None: + if bump_type == 'patch' : patch += 1 elif bump_type == 'minor': minor += 1 @@ -32,7 +32,7 @@ def main(): file_group = parser.add_argument_group("Input and Output files") file_group.add_argument("--src-folder", action="store", required=True, help="Source folder") file_group.add_argument("--release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. Error if not there") - file_group.add_argument("--update-type", action="store", default=None, choices=["major", "minor", "patch"], help="Specify the type of update: major, minor, or patch.") + file_group.add_argument("--update-type", action="store", default=None, choices=["major", "minor", "patch", "build"], help="Specify the type of update: major, minor, patch or build. Default:patch") verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") @@ -60,7 +60,7 @@ def main(): base_version = m.group(1) dev_number = int(m.group(2)) if args.release: - if args.update_type: + if args.update_type != 'build': bumped_version = bump_version(base_version, args.update_type) logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {bumped_version}") contents = module_dev_version_re.sub(f"'module_version': '{bumped_version}'", contents) @@ -70,15 +70,15 @@ def main(): contents = module_dev_version_re.sub(f"'module_version': '{base_version}'", contents) new_version = base_version else: - if args.update_type: + if args.update_type == 'build': + logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {base_version}.dev{dev_number + 1}") + contents = module_dev_version_re.sub(f"'module_version': '{base_version}.dev{dev_number + 1}'", contents) + new_version = f"{base_version}.dev{dev_number + 1}" + else: bumped_version = bump_version(base_version, args.update_type) logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {bumped_version}.dev0") contents = module_dev_version_re.sub(f"'module_version': '{bumped_version}.dev0'", contents) new_version = f"{bumped_version}.dev0" - else: - logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {base_version}.dev{dev_number + 1}") - contents = module_dev_version_re.sub(f"'module_version': '{base_version}.dev{dev_number + 1}'", contents) - new_version = f"{base_version}.dev{dev_number + 1}" else: module_version_re = re.compile(r"'module_version': '(\d+\.\d+\.)(\d+)'") m = module_version_re.search(contents) @@ -87,6 +87,8 @@ def main(): if args.release: logging.error("Error: Attempting to release an already released version for " + os.path.basename(args.src_folder) + ".") return + if args.update_type == 'build': + args.update_type = 'patch' new_version = bump_version(f"{m.group(1)}{m.group(2)}", args.update_type) logging.info(f"Release version found, updating {m.group(1)}{m.group(2)} to {new_version}.dev0") contents = module_version_re.sub(f"'module_version': '{new_version}.dev0'", contents) From 1c294b5079fece8a9b3756e4dad44c869b7fed46 Mon Sep 17 00:00:00 2001 From: dummy Date: Fri, 4 Apr 2025 14:34:15 +0530 Subject: [PATCH 03/32] CHangelog Sample --- CHANGELOG.md | 5490 +++++++++++++++++++++++++------------------------- 1 file changed, 2787 insertions(+), 2703 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff85a73d4..f3dc984b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,490 +13,881 @@ --- -### nidcpower (NI-DCPower) - -- [1.4.9 - 2025-02-26](#nidcpower-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nidcpower-148---2024-04-26) -- [1.4.7 - 2023-12-15](#nidcpower-147---2023-12-15) -- [1.4.6 - 2023-09-11](#nidcpower-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nidcpower-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nidcpower-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nidcpower-143---2022-12-16) -- [1.4.2 - 2022-08-03](#nidcpower-142---2022-08-03) -- [1.4.1 - 2021-08-23](#nidcpower-141---2021-08-23) -- [1.4.0 - 2021-07-09](#nidcpower-140---2021-07-09) -- [1.3.3 - 2021-02-26](#nidcpower-133---2021-02-26) -- [1.3.2 - 2020-09-18](#nidcpower-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nidcpower-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nidcpower-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nidcpower-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nidcpower-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nidcpower-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nidcpower-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nidcpower-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nidcpower-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nidcpower-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nidcpower-101---2018-10-17) -- [1.0.0 - 2018-06-08](#nidcpower-100---2018-06-08) -- [0.9.0 - 2018-05-22](#nidcpower-090---2018-05-22) -- [0.8.0 - 2018-04-27](#nidcpower-080---2018-04-27) -- [0.7.0 - 2018-02-20](#nidcpower-070---2018-02-20) -- [0.6.0 - 2017-12-20](#nidcpower-060---2017-12-20) -- [0.5.0 - 2017-11-27](#nidcpower-050---2017-11-27) -- [0.4.0 - 2017-11-07](#nidcpower-040---2017-11-07) -- [0.3.0 - 2017-10-13](#nidcpower-030---2017-10-13) - -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * API parity with NI-DCPower 2025 Q1. - * Enum value added: - * `INHIBITED` added to enum `OutputStates`. - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * Fixed #2067: `nidcpower.OutputStates` values are incorrect. - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - * #### Changed - * Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. - -* ### 1.4.7 - 2023-12-15 - * #### Added - * API parity with NI-DCPower 2023 Q4. - * Properties added: - * `current_level_rising_slew_rate` - * `current_level_falling_slew_rate` - * `conduction_voltage_mode` - * `conduction_voltage_on_threshold` - * `conduction_voltage_off_threshold` - * `output_cutoff_voltage_measure_limit_high` - * `output_cutoff_voltage_measure_limit_low` - * Enum added: - * `ConductionVoltageMode` - * Enum values added: - * `E_LOAD` added to enum `InstrumentMode` - * `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * API parity with NI-DCPower 2023 Q2. - * Properties added: - * `lcr_ac_dither_enabled` - * `lcr_ac_electrical_cable_length_delay` - * `lcr_dc_bias_transient_response` - * `lcr_source_aperture_time` - * `measure_complete_event_output_behavior` - * `measure_complete_event_toggle_initial_state` - * `sequence_engine_done_event_output_behavior` - * `sequence_engine_done_event_toggle_initial_state` - * `sequence_iteration_complete_event_output_behavior` - * `sequence_iteration_complete_event_toggle_initial_state` - * `source_complete_event_output_behavior` - * `source_complete_event_toggle_initial_state` - * Enums added: - * `CurrentLimitBehavior` - * `EventOutputBehavior` - * `EventToggleInitialState` - * `LCRDCBiasTransientResponse` - * Enum values added: - * `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` - * `NI_STANDARD_0_5M` added to enum `CableLength` - * Methods added: - * `configure_lcr_compensation` - * `get_lcr_compensation_data` - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - * Enums reordered: - * `AutoZero` - * `CableLength` - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * MeasurementLink support - * #### Changed - * Binary compatibility change for type `LCRLoadCompensationSpot` on Linux. Client code using method `nidcpower.Session.perform_lcr_load_compensation` on Linux now requires NI-DCPower 2023 Q1 driver runtime or newer. - * #### Removed - * Support for Python 3.6 - -* ### 1.4.2 - 2022-08-03 - * #### Added - * API parity with NI-DCPower 2022 Q3. - * Properties added: - * `aperture_time_auto_mode` - * `autorange_maximum_delay_after_range_change` - * `cable_length` - * `instrument_mode` - * `isolation_state` - * `lcr_actual_load_reactance` - * `lcr_actual_load_resistance` - * `lcr_automatic_level_control` - * `lcr_current_amplitude` - * `lcr_current_range` - * `lcr_custom_measurement_time` - * `lcr_dc_bias_automatic_level_control` - * `lcr_dc_bias_current_level` - * `lcr_dc_bias_current_range` - * `lcr_dc_bias_source` - * `lcr_dc_bias_voltage_level` - * `lcr_dc_bias_voltage_range` - * `lcr_frequency` - * `lcr_impedance_auto_range` - * `lcr_impedance_range` - * `lcr_impedance_range_source` - * `lcr_load_capacitance` - * `lcr_load_compensation_enabled` - * `lcr_load_inductance` - * `lcr_load_resistance` - * `lcr_measured_load_reactance` - * `lcr_measured_load_resistance` - * `lcr_measurement_time` - * `lcr_open_compensation_enabled` - * `lcr_open_conductance` - * `lcr_open_short_load_compensation_data_source` - * `lcr_open_susceptance` - * `lcr_short_compensation_enabled` - * `lcr_short_custom_cable_compensation_enabled` - * `lcr_short_reactance` - * `lcr_short_resistance` - * `lcr_source_delay_mode` - * `lcr_stimulus_function` - * `lcr_voltage_amplitude` - * `lcr_voltage_range` - * Enums added: - * `ApertureTimeAutoMode` - * `CableLength` - * `InstrumentMode` - * `LCRCompensationType` - * `LCRDCBiasSource` - * `LCRImpedanceRangeSource` - * `LCRMeasurementTime` - * `LCROpenShortLoadCompensationDataSource` - * `LCRReferenceValueType` - * `LCRSourceDelayMode` - * `LCRStimulusFunction` - * Methods added: - * `configure_lcr_custom_cable_compensation` - * `fetch_multiple_lcr` - * `get_lcr_compensation_last_date_and_time` - * `get_lcr_custom_cable_compensation_data` - * `measure_multiple_lcr` - * `perform_lcr_load_compensation` - * `perform_lcr_open_compensation` - * `perform_lcr_open_custom_cable_compensation` - * `perform_lcr_short_compensation` - * `perform_lcr_short_custom_cable_compensation` - * Custom types added: - * `LCRLoadCompensationSpot` - * `LCRMeasurement` - - * `nidcpower_lcr_source_ac_voltage.py` example - - - * #### Changed - * Updated supported devices information in documentation for methods and properties - * Added `channel` field to the `Measurement` namedtuple instances returned by `fetch_multiple` and `measure_multiple` - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * API parity with NI-DCPower 21.0.0. - * Properties added: - * `output_cutoff_delay` - * #### Removed - * Support for Python 3.5 - -* ### 1.4.0 - 2021-07-09 - * #### Added - * `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) - * `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) - * API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. - * Properties added: - * `output_cutoff_current_change_limit_high` - * `output_cutoff_current_change_limit_low` - * `output_cutoff_current_measure_limit_high` - * `output_cutoff_current_measure_limit_low` - * `output_cutoff_current_overrange_enabled` - * `output_cutoff_enabled` - * `output_cutoff_voltage_change_limit_high` - * `output_cutoff_voltage_change_limit_low` - * `output_cutoff_voltage_output_limit_high` - * `output_cutoff_voltage_output_limit_low` - * Methods added: - * `clear_latched_output_cutoff_state` - * `query_latched_output_cutoff_state` - * Support for independent operation of instrument channels. Creating an `nidcpower.Session` - with independent channels allows you to use multiple instruments in the same session. With - independent channels, you can configure multiple channels of the same instrument, or of - multiple instruments, independently of one another within the same session. Requires NI-DCPower - driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, - pass `independent_channels=False` to `nidcpower.Session` constructor. - -* ### 1.3.3 - 2021-02-26 - * #### Added - * API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: - * `merged_channels` - * `digital_edge_shutdown_trigger_input_terminal` - * `shutdown_trigger_type` - -* ### 1.3.2 - 2020-09-18 - * #### Added - * API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: - * `autorange` - * `autorange_aperture_time_mode` - * `autorange_behavior` - * `autorange_minimum_aperture_time` - * `autorange_minimum_aperture_time_units` - * `autorange_minimum_current_range` - * `autorange_minimum_voltage_range` - * `autorange_threshold_mode` - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Added - * API parity with NI-DCPower 20.0 by adding the following properties: - * `Session.serial_number` - * `Session.actual_power_allocation` - * `Session.requested_power_allocation` - * `Session.power_allocation_mode` - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) - * Instead of a list of attribute IDs, you pass in a list of property names as strings - * Includes example to see how to use it - * Additional methods and properties that were made public (rather than private) - * `create_advanced_sequence_step()` - * `delete_advanced_sequence()` - * `active_advanced_sequence` - * `active_advanced_sequence_step` - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - * Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - * `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` - * `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` - * `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` - * `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` - * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` - * Remove polarity attributes for triggers that are PXI backplane only (only support rising edge) [#860](https://github.com/ni/nimi-python/issues/860) - * `digital_edge_measure_trigger_edge` - * `digital_edge_pulse_trigger_edge` - * `digital_edge_sequence_advance_trigger_edge` - * `digital_edge_source_trigger_edge` - * `digital_edge_start_trigger_edge` - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - * `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) - * `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) - * Default value for trigger parameter on `send_software_edge_trigger()` [#832](https://github.com/ni/nimi-python/issues/832) - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - * `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) - * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - * `Session.set_sequence()` values parameter no longer has a default value and must be passed in. Parameter order has changed as a result of this - issue [#797](https://github.com/ni/nimi-python/issues/797) - * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - * #### Removed - * Advanced Sequence functions - until [#504](https://github.com/ni/nimi-python/issues/504) can be fixed in a proper way - * `create_advanced_sequence()` - * `create_advanced_sequence_step()` - * `delete_advanced_sequence()` - -* ### 0.7.0 - 2018-02-20 - * #### Added - * `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * Metadata updated to NI-DCPower 17.6.1 - * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - * `fetch_multiple()` - * `wait_for_event()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_ext_cal_last_date_and_time()` - * `get_self_cal_last_date_and_time()` - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` - * `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` - * `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` - * `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - * #### Changed - * Property power_line_frequency no longer uses enum PowerLineFrequency. - * Removed `actual_count` from `fetch_multiple()` returned tuple - -* ### 0.5.0 - 2017-11-27 - * #### Added - * `get_ext_cal_last_date_and_time` - * `get_ext_cal_last_temp` - * `get_ext_cal_recommended_interval` - * `measure_multiple` - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - -* ### 0.4.0 - 2017-11-07 - * #### Added - * New example `nidcpower_advanced_sequence.py` - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - * Fixed method signature for: - * `wait_for_event` - * `create_sequence` - * `create_advanced_sequence` - * #### Removed - * Support for `measure_multiple` until issue #444 is addressed. - -* ### 0.3.0 - 2017-10-13 - * #### Added - * Support for ViInt64 (64-bit integers) - * Initial release - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +### nidcpower (NI-DCPOWER) + +- [1.4.9](#nidcpower-149---2025-02-26) +- [1.4.8](#nidcpower-148---2024-04-26) +- [1.4.7](#nidcpower-147---2023-12-15) +- [1.4.6](#nidcpower-146---2023-09-11) +- [1.4.5](#nidcpower-145---2023-06-12) +- [1.4.4](#nidcpower-144---2023-04-14) +- [1.4.3](#nidcpower-143---2022-12-16) +- [1.4.2](#nidcpower-142---2022-08-03) +- [1.4.1](#nidcpower-141---2021-08-23) +- [1.4.0](#nidcpower-140---2021-07-09) +- [1.3.3](#nidcpower-133---2021-02-26) +- [1.3.2](#nidcpower-132---2020-09-18) +- [1.3.1](#nidcpower-131---2020-06-08) +- [1.3.0](#nidcpower-130---2020-05-21) +- [1.2.1](#nidcpower-121---2020-04-21) +- [1.2.0](#nidcpower-120---2020-03-06) +- [1.1.5](#nidcpower-115---2019-11-22) +- [1.1.4](#nidcpower-114---2019-11-19) +- [1.1.3](#nidcpower-113---2019-10-21) +- [1.1.2](#nidcpower-112---2019-06-06) +- [1.1.0](#nidcpower-110---2018-10-25) +- [1.0.1](#nidcpower-101---2018-10-17) +- [1.0.0](#nidcpower-100---2018-06-08) +- [0.9.0](#nidcpower-090---2018-05-22) +- [0.8.0](#nidcpower-080---2018-04-27) +- [0.7.0](#nidcpower-070---2018-02-20) +- [0.6.0](#nidcpower-060---2017-12-20) +- [0.5.0](#nidcpower-050---2017-11-27) +- [0.4.0](#nidcpower-040---2017-11-07) +- [0.3.0](#nidcpower-030---2017-10-13) + +#### [nidcpower] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 + - API parity with NI-DCPower 2025 Q1. + - Enum value added: + - `INHIBITED` added to enum `OutputStates`. +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + - Fixed #2067: `nidcpower.OutputStates` values are incorrect. +- Removed + - Support for Python 3.8 + +#### [nidcpower] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 +- Changed + - Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. + +#### [nidcpower] 1.4.7 - 2023-12-15 +- Added + - API parity with NI-DCPower 2023 Q4. + - Properties added: + - `current_level_rising_slew_rate` + - `current_level_falling_slew_rate` + - `conduction_voltage_mode` + - `conduction_voltage_on_threshold` + - `conduction_voltage_off_threshold` + - `output_cutoff_voltage_measure_limit_high` + - `output_cutoff_voltage_measure_limit_low` + - Enum added: + - `ConductionVoltageMode` + - Enum values added: + - `E_LOAD` added to enum `InstrumentMode` + - `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` + +#### [nidcpower] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nidcpower] 1.4.5 - 2023-06-12 +- Removed + - `easy_install` support + +#### [nidcpower] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + - API parity with NI-DCPower 2023 Q2. + - Properties added: + - `lcr_ac_dither_enabled` + - `lcr_ac_electrical_cable_length_delay` + - `lcr_dc_bias_transient_response` + - `lcr_source_aperture_time` + - `measure_complete_event_output_behavior` + - `measure_complete_event_toggle_initial_state` + - `sequence_engine_done_event_output_behavior` + - `sequence_engine_done_event_toggle_initial_state` + - `sequence_iteration_complete_event_output_behavior` + - `sequence_iteration_complete_event_toggle_initial_state` + - `source_complete_event_output_behavior` + - `source_complete_event_toggle_initial_state` + - Enums added: + - `CurrentLimitBehavior` + - `EventOutputBehavior` + - `EventToggleInitialState` + - `LCRDCBiasTransientResponse` + - Enum values added: + - `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` + - `NI_STANDARD_0_5M` added to enum `CableLength` + - Methods added: + - `configure_lcr_compensation` + - `get_lcr_compensation_data` +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Enums reordered: + - `AutoZero` + - `CableLength` + +#### [nidcpower] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 + - MeasurementLink support +- Changed + - Binary compatibility change for type `LCRLoadCompensationSpot` on Linux. Client code using method `nidcpower.Session.perform_lcr_load_compensation` on Linux now requires NI-DCPower 2023 Q1 driver runtime or newer. +- Removed + - Support for Python 3.6 + +#### [nidcpower] 1.4.2 - 2022-08-03 +- Added + - API parity with NI-DCPower 2022 Q3. + - Properties added: + - `aperture_time_auto_mode` + - `autorange_maximum_delay_after_range_change` + - `cable_length` + - `instrument_mode` + - `isolation_state` + - `lcr_actual_load_reactance` + - `lcr_actual_load_resistance` + - `lcr_automatic_level_control` + - `lcr_current_amplitude` + - `lcr_current_range` + - `lcr_custom_measurement_time` + - `lcr_dc_bias_automatic_level_control` + - `lcr_dc_bias_current_level` + - `lcr_dc_bias_current_range` + - `lcr_dc_bias_source` + - `lcr_dc_bias_voltage_level` + - `lcr_dc_bias_voltage_range` + - `lcr_frequency` + - `lcr_impedance_auto_range` + - `lcr_impedance_range` + - `lcr_impedance_range_source` + - `lcr_load_capacitance` + - `lcr_load_compensation_enabled` + - `lcr_load_inductance` + - `lcr_load_resistance` + - `lcr_measured_load_reactance` + - `lcr_measured_load_resistance` + - `lcr_measurement_time` + - `lcr_open_compensation_enabled` + - `lcr_open_conductance` + - `lcr_open_short_load_compensation_data_source` + - `lcr_open_susceptance` + - `lcr_short_compensation_enabled` + - `lcr_short_custom_cable_compensation_enabled` + - `lcr_short_reactance` + - `lcr_short_resistance` + - `lcr_source_delay_mode` + - `lcr_stimulus_function` + - `lcr_voltage_amplitude` + - `lcr_voltage_range` + - Enums added: + - `ApertureTimeAutoMode` + - `CableLength` + - `InstrumentMode` + - `LCRCompensationType` + - `LCRDCBiasSource` + - `LCRImpedanceRangeSource` + - `LCRMeasurementTime` + - `LCROpenShortLoadCompensationDataSource` + - `LCRReferenceValueType` + - `LCRSourceDelayMode` + - `LCRStimulusFunction` + - Methods added: + - `configure_lcr_custom_cable_compensation` + - `fetch_multiple_lcr` + - `get_lcr_compensation_last_date_and_time` + - `get_lcr_custom_cable_compensation_data` + - `measure_multiple_lcr` + - `perform_lcr_load_compensation` + - `perform_lcr_open_compensation` + - `perform_lcr_open_custom_cable_compensation` + - `perform_lcr_short_compensation` + - `perform_lcr_short_custom_cable_compensation` + - Custom types added: + - `LCRLoadCompensationSpot` + - `LCRMeasurement` + - `nidcpower_lcr_source_ac_voltage.py` example +- Changed + - Updated supported devices information in documentation for methods and properties + - Added `channel` field to the `Measurement` namedtuple instances returned by `fetch_multiple` and `measure_multiple` + +#### [nidcpower] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 + - API parity with NI-DCPower 21.0.0. + - Properties added: + - `output_cutoff_delay` +- Removed + - Support for Python 3.5 + +#### [nidcpower] 1.4.0 - 2021-07-09 +- Added + - `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) + - `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) + - API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. + - Properties added: + - `output_cutoff_current_change_limit_high` + - `output_cutoff_current_change_limit_low` + - `output_cutoff_current_measure_limit_high` + - `output_cutoff_current_measure_limit_low` + - `output_cutoff_current_overrange_enabled` + - `output_cutoff_enabled` + - `output_cutoff_voltage_change_limit_high` + - `output_cutoff_voltage_change_limit_low` + - `output_cutoff_voltage_output_limit_high` + - `output_cutoff_voltage_output_limit_low` + - Methods added: + - `clear_latched_output_cutoff_state` + - `query_latched_output_cutoff_state` + - Support for independent operation of instrument channels. Creating an `nidcpower.Session` + - with independent channels allows you to use multiple instruments in the same session. With + - independent channels, you can configure multiple channels of the same instrument, or of + - multiple instruments, independently of one another within the same session. Requires NI-DCPower + - driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, + - pass `independent_channels=False` to `nidcpower.Session` constructor. + +#### [nidcpower] 1.3.3 - 2021-02-26 +- Added + - API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: + - `merged_channels` + - `digital_edge_shutdown_trigger_input_terminal` + - `shutdown_trigger_type` + +#### [nidcpower] 1.3.2 - 2020-09-18 +- Added + - API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: + - `autorange` + - `autorange_aperture_time_mode` + - `autorange_behavior` + - `autorange_minimum_aperture_time` + - `autorange_minimum_aperture_time_units` + - `autorange_minimum_current_range` + - `autorange_minimum_voltage_range` + - `autorange_threshold_mode` +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nidcpower] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nidcpower] 1.3.0 - 2020-05-21 +- Added + - API parity with NI-DCPower 20.0 by adding the following properties: + - `Session.serial_number` + - `Session.actual_power_allocation` + - `Session.requested_power_allocation` + - `Session.power_allocation_mode` +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nidcpower] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nidcpower] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 + - `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) + - Instead of a list of attribute IDs, you pass in a list of property names as strings + - Includes example to see how to use it + - Additional methods and properties that were made public (rather than private) + - `create_advanced_sequence_step()` + - `delete_advanced_sequence()` + - `active_advanced_sequence` + - `active_advanced_sequence_step` +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nidcpower] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nidcpower] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [nidcpower] 1.1.3 - 2019-10-21 +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) + +#### [nidcpower] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [nidcpower] 1.1.0 - 2018-10-25 +- Added + - import_attribute_configuration_file function + - export_attribute_configuration_file function + - import_attribute_configuration_buffer function + - import_attribute_configuration_buffer function +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nidcpower] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nidcpower] 1.0.0 - 2018-06-08 +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + - `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` + - `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` + - `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` + - `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` + - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` + - Remove polarity attributes for triggers that are PXI backplane only (only support rising edge) [#860](https://github.com/ni/nimi-python/issues/860) + - `digital_edge_measure_trigger_edge` + - `digital_edge_pulse_trigger_edge` + - `digital_edge_sequence_advance_trigger_edge` + - `digital_edge_source_trigger_edge` + - `digital_edge_start_trigger_edge` + +#### [nidcpower] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) + - `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) + - Default value for trigger parameter on `send_software_edge_trigger()` [#832](https://github.com/ni/nimi-python/issues/832) + +#### [nidcpower] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) + - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) + - `Session.set_sequence()` values parameter no longer has a default value and must be passed in. Parameter order has changed as a result of this - issue [#797](https://github.com/ni/nimi-python/issues/797) + - Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) +- Removed + - Advanced Sequence functions - until [#504](https://github.com/ni/nimi-python/issues/504) can be fixed in a proper way + - `create_advanced_sequence()` + - `create_advanced_sequence_step()` + - `delete_advanced_sequence()` + +#### [nidcpower] 0.7.0 - 2018-02-20 +- Added + - `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - Metadata updated to NI-DCPower 17.6.1 + - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + - `fetch_multiple()` + - `wait_for_event()` + - The following functions return a `datetime.datetime()` object representing the date and time + - `get_ext_cal_last_date_and_time()` + - `get_self_cal_last_date_and_time()` +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + - `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` + - `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` + - `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` + - `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` + +#### [nidcpower] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +- Changed + - Property power_line_frequency no longer uses enum PowerLineFrequency. + - Removed `actual_count` from `fetch_multiple()` returned tuple + +#### [nidcpower] 0.5.0 - 2017-11-27 +- Added + - `get_ext_cal_last_date_and_time` + - `get_ext_cal_last_temp` + - `get_ext_cal_recommended_interval` + - `measure_multiple` +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [nidcpower] 0.4.0 - 2017-11-07 +- Added + - New example `nidcpower_advanced_sequence.py` +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + - Fixed method signature for: + - `wait_for_event` + - `create_sequence` + - `create_advanced_sequence` +- Removed + - Support for `measure_multiple` until issue #444 is addressed. + +#### [nidcpower] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) + - Initial release +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nidcpower] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() ---- +### nifgen (NI-FGEN) -### nidigital (NI-Digital Pattern Driver) +- [1.4.9 - 2025-02-26](#nifgen-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nifgen-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nifgen-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nifgen-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nifgen-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nifgen-143---2022-12-16) +- [1.4.2 - 2022-08-03](#nifgen-142---2022-08-03) +- [1.4.1 - 2021-08-23](#nifgen-141---2021-08-23) +- [1.3.3 - 2021-02-26](#nifgen-133---2021-02-26) +- [1.3.2 - 2020-09-18](#nifgen-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nifgen-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nifgen-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nifgen-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nifgen-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nifgen-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nifgen-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nifgen-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nifgen-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nifgen-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nifgen-101---2018-10-17) +- [1.0.0 - 2018-06-08](#nifgen-100---2018-06-08) +- [0.9.0 - 2018-05-22](#nifgen-090---2018-05-22) +- [0.8.0 - 2018-04-27](#nifgen-080---2018-04-27) +- [0.7.0 - 2018-02-20](#nifgen-070---2018-02-20) +- [0.6.0 - 2017-12-20](#nifgen-060---2017-12-20) +- [0.5.0 - 2017-11-27](#nifgen-050---2017-11-27) +- [0.4.0 - 2017-11-07](#nifgen-040---2017-11-07) + +#### [nifgen] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [nifgen] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + - Properties added: + - `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - Enum added: + - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + +#### [nifgen] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nifgen] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - `easy_install` support + +#### [nifgen] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nifgen] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 + - MeasurementLink support +- Removed + - Support for Python 3.6 + +#### [nifgen] 1.4.2 - 2022-08-03 +- Added + - `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) +- Changed + - Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities + - `channels` + - `markers` + - `data_markers` + - `script_triggers` + - Corrected multiple mistakes in repeated capability info of attribute metadata + - alters API behavior (repeated capability access of attributes) and documentation + +#### [nifgen] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [nifgen] 1.3.3 - 2021-02-26 +- Added + - nifgen_trigger.py example to demonstrate pulling a trigger from another device. + +#### [nifgen] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nifgen] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nifgen] 1.3.0 - 2020-05-21 +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nifgen] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nifgen] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 + - `nifgen.Session.import_attribute_configuration_file()` + - `nifgen.Session.import_attribute_configuration_buffer()` + - `nifgen.Session.export_attribute_configuration_file()` + - `nifgen.Session.export_attribute_configuration_buffer()` + - `nifgen.Session.get_channel_name()` +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` + - See documentation on how to call this function + - Calling the previous way will log a DeprecationWarning to the warning subsystem + - [#1300](https://github.com/ni/nimi-python/issues/1300) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nifgen] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nifgen] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [nifgen] 1.1.3 - 2019-10-21 +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. +- Removed + - `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) + +#### [nifgen] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + - Enum values for `HardwareState` were incorrect - fix to match niFgen.h + +#### [nifgen] 1.1.0 - 2018-10-25 +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nifgen] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nifgen] 1.0.0 - 2018-06-08 +- Changed + - `num_channels` attribute renamed to `channel_count` - now consistent with other drivers + - `send_software_edge_trigger()` no longer takes any parameters. + - To send a start software trigger, call it on the session directly: + - ``` python + - session.send_software_edge_trigger() + - ``` + - To send a script software trigger, call it on the script triggers container: + - ``` python + - session.script_triggers[1].send_software_edge_trigger() + - ``` +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + - `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` + - `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` + - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` + - Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) + +#### [nifgen] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. + - `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` + - `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` + - Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) + - `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` + - `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + - `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) + - `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) + - `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) + - `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) + - `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) + - `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) + - `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) + - `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) + - `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) + - `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) + - `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) + - `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) + - `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) + - `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) + - `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) + - `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) + - `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) + - `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) + +#### [nifgen] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) +- Removed + - `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python + - Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) + +#### [nifgen] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + - `channel` repeated capability + - `markers` repeated capability + - `script_triggers` repeated capability + - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + - `adjust_sample_clock_relative_delay()` + - `wait_until_done()` + - The following functions return a `datetime.datetime()` object representing the date and time + - `get_ext_cal_last_date_and_time()` + - `get_self_cal_last_date_and_time()` + +#### [nifgen] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) + - Support for calling `write_waveform` with a waveform handle (int) or a name (str). + - Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) +- Changed + - Renamed `create_waveform_f64` -> `create_waveform` +- Removed + - `create_waveform_i16` + - `write_binary16_waveform`: Use `write_waveform` + - `write_named_waveform_i16`: Use `write_waveform` + - `write_named_waveform_f64`: Use `write_waveform` + +#### [nifgen] 0.5.0 - 2017-11-27 +- Removed + - enum definitions that are not referenced by a function and/or an attributes + - `adjust_sample_clock_relative_delay` + +#### [nifgen] 0.4.0 - 2017-11-07 +- Added + - Initial release +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [nifgen] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nifgen] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + +### nidigital (NI-DIGITAL) - [1.4.9 - 2025-02-26](#nidigital-149---2025-02-26) - [1.4.8 - 2024-04-26](#nidigital-148---2024-04-26) @@ -527,298 +918,297 @@ - [0.3.0 - 2017-10-13](#nidigital-030---2017-10-13) - [0.2.0 - 2017-09-20](#nidigital-020---2017-09-20) -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * Methods Added: - * `enable_match_fail_combination` - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - * Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * MeasurementLink support - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * API parity with NI-Digital Pattern Driver 21.0.0. - * Properties added: - * `digital_edge_rio_trigger_edge` - * `digital_edge_rio_trigger_source` - * `exported_rio_event_output_terminal` - * `rio_event_terminal_name` - * `rio_trigger_terminal_name` - * `rio_trigger_type` - * Repeated Capabilities added: - * `rio_events` - * `rio_triggers` - * #### Removed - * Support for Python 3.5 - -* ### 1.3.3 - 2021-02-26 - * #### Added - * 1.0.0 release: - * API reference documentation and API usage examples - * API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: - * `frequency_counter_measurement_mode` - * `frequency_counter_hysteresis_enabled` - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Added - * 0.9.0 release: - * Public API is considered complete, stable, and tested - * Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 - * API reference documentation and example code are not complete - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - * Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) - * Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) - * Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - * `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) - * Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) - * `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - * `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) - * #### Changed - * Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) - * `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) - * `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) - * Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): - * Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. - * Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. - * Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. - * Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) - * Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) - * Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - * In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) - * #### Removed - * `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) - * `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) - * `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) - * `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) - * `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) - * `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) - * `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types - * sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) - * `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) - * Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - * Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) - * Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) - * Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` - was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - * `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } - * `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } - * `pins` is now a valid repeated capability - * #### Changed - * Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) - * Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) - * Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` - * `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` - -* ### 1.1.3 - 2019-10-21 - * #### Added - * Initial support - * Very basic at this point and subject to change - * Looking for any testing and/or feedback - * `get_channel_name_from_string()` - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - * New enums: - | Enum name | Where used | - |----------------------------|----------------------------------------------------------------------------------| - | `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | - | `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | - | `PPMUOutputFunction` | `ppmu_output_function` | - | `SelectedFunction` | `selected_function` | - | `TDREndpointTermination` | `tdr_endpoint_termination` | - | `Signal` | `export_signal(signal)` | - * **[Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. - * #### Removed - * Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, - `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, - `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` - * Need to determine how to generate this function - `fetch_capture_waveform_u32()` - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for `niscope.WaveformInfo` - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead, use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where applicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -* ### 0.7.0 - 2018-02-20 - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs appropriate for desired behavior: - ```python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - -* ### 0.5.0 - 2017-11-27 - * #### Removed - * enum definitions that are not referenced by a function and/or an attribute. - -* ### 0.4.0 - 2017-11-07 - * #### Changed - * Simplified examples by removing try/except blocks. - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines. - -* ### 0.3.0 - 2017-10-13 - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste. - -* ### 0.2.0 - 2017-09-20 - * #### Added - * Support for channel-based properties. - * #### Changed - * Warnings no longer raise an exception. - * Warnings are now added to `warnings.warn()` - +#### [nidigital] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 + - Methods Added: + - `enable_match_fail_combination` +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [nidigital] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [nidigital] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nidigital] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - `easy_install` support + +#### [nidigital] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). + +#### [nidigital] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 + - MeasurementLink support +- Removed + - Support for Python 3.6 + +#### [nidigital] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 + - API parity with NI-Digital Pattern Driver 21.0.0. + - Properties added: + - `digital_edge_rio_trigger_edge` + - `digital_edge_rio_trigger_source` + - `exported_rio_event_output_terminal` + - `rio_event_terminal_name` + - `rio_trigger_terminal_name` + - `rio_trigger_type` + - Repeated Capabilities added: + - `rio_events` + - `rio_triggers` +- Removed + - Support for Python 3.5 + +#### [nidigital] 1.3.3 - 2021-02-26 +- Added + - 1.0.0 release: + - API reference documentation and API usage examples + - API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: + - `frequency_counter_measurement_mode` + - `frequency_counter_hysteresis_enabled` + +#### [nidigital] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nidigital] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nidigital] 1.3.0 - 2020-05-21 +- Added + - 0.9.0 release: + - Public API is considered complete, stable, and tested + - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 + - API reference documentation and example code are not complete +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + - Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) + - Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) + - Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) + +#### [nidigital] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + - `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) + - Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) + - `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) + - `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) +- Changed + - Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) + - `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) + - `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) + - Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): + - Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. + - Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. + - Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. + - Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) + - Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) + - Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) + - In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) +- Removed + - `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) + - `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) + - `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) + - `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) + - `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) + - `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) + - `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) + +#### [nidigital] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 + - `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types + - sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) + - `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) + - Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) + - Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) + - Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` + - was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) + +#### [nidigital] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nidigital] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + - `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } + - `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } + - `pins` is now a valid repeated capability +- Changed + - Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) + - Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) + - Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` + - `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` + +#### [nidigital] 1.1.3 - 2019-10-21 +- Added + - Initial support + - Very basic at this point and subject to change + - Looking for any testing and/or feedback + - `get_channel_name_from_string()` +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - New enums: + - | Enum name | Where used | + - |----------------------------|----------------------------------------------------------------------------------| + - | `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | + - | `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | + - | `PPMUOutputFunction` | `ppmu_output_function` | + - | `SelectedFunction` | `selected_function` | + - | `TDREndpointTermination` | `tdr_endpoint_termination` | + - | `Signal` | `export_signal(signal)` | + - [Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. +- Removed + - Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, + - `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, + - `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` + - Need to determine how to generate this function - `fetch_capture_waveform_u32()` + +#### [nidigital] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [nidigital] 1.1.0 - 2018-10-25 +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nidigital] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nidigital] 1.0.0 - 2018-06-08 +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +#### [nidigital] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nidigital] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [nidigital] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +#### [nidigital] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +#### [nidigital] 0.5.0 - 2017-11-27 +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [nidigital] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [nidigital] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nidigital] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() ### nidmm (NI-DMM) @@ -851,897 +1241,283 @@ - [0.2.0 - 2017-09-20](#nidmm-020---2017-09-20) - [0.1.0 - 2017-09-01](#nidmm-010---2017-09-01) -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * MeasurementLink support - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): `import_attribute_configuration_buffer()` fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. No changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest. - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0. - -* ### 1.3.0 - 2020-05-21 - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Changed - * Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - * `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `latency` - [#875](https://github.com/ni/nimi-python/issues/875) - * `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) - * `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - * `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - * `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - * Enum values that start with an underscore + digit have been renamed - * `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` - * `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - * `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - * `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - * `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - * `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - * `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - -* ### 0.7.0 - 2018-02-20 - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - * The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - * `configure_multi_point()` - * `configure_trigger()` - * `fetch()` - * `fetch_multi_point()` - * `fetch_waveform()` - * `read()` - * `read_multi_point()` - * `read_waveform()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_cal_date_and_time()` - * Metadata updated to NI-DMM 17.5 - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `DCBias` - `DC_BIAS` - * `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - * `fetch_waveform_into` for high-performance fetch using numpy.array of float64. - * #### Changed - * Property powerline_freq no longer uses enum PowerlineFrequency. - * Property current_source no longer uses enum CurrentSource. - * Property input_resistance no longer uses enum InputResistance. - * Removed `actual_number_of_points` from `fetch_waveform()` returned tuple - * Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple - * Removed `actual_number_of_points` from `read_multi_point()` returned tuple - * Removed `actual_number_of_points` from `read_waveform()` returned tuple - -* ### 0.5.0 - 2017-11-27 - * #### Added - * `get_ext_cal_recommended_interval` - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - -* ### 0.4.0 - 2017-11-07 - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - * Removed incorrect leading underscore from some enum values: - * `Function.AC_VOLTS_DC_COUPLED` - * `Function.WAVEFORM_CURRENT` - * `MeasurementCompleteDest.LBR_TRIG_0` - * `OperationMode.IVIDMM_MODE` - * `SampleTrigger.EXTERNAL` - * `SampleTrigger.TTL_3` - * `TriggerSource.TTL_0` - * `TriggerSource.TTL_3` - * `TriggerSource.TTL_7` - * `TriggerSource.PXI_STAR` - -* ### 0.3.0 - 2017-10-13 - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - * Added default values to some parameters. - * #### Removed - * Removed methods that aren’t useful in the Python bindings. - -* ### 0.2.0 - 2017-09-20 - * #### Added - * Suport for channel-based properties - * #### Changed - * Warnings no longer raise an exception - * Warnings are now added to warnings.warn() - * Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) - -* ### 0.1.0 - 2017-09-01 - * #### Added - * Initial release - ---- - -### nifgen (NI-FGEN) - -- [1.4.9 - 2025-02-26](#nifgen-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nifgen-148---2024-04-26) -- [1.4.6 - 2023-09-11](#nifgen-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nifgen-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nifgen-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nifgen-143---2022-12-16) -- [1.4.2 - 2022-08-03](#nifgen-142---2022-08-03) -- [1.4.1 - 2021-08-23](#nifgen-141---2021-08-23) -- [1.3.3 - 2021-02-26](#nifgen-133---2021-02-26) -- [1.3.2 - 2020-09-18](#nifgen-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nifgen-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nifgen-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nifgen-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nifgen-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nifgen-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nifgen-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nifgen-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nifgen-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nifgen-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nifgen-101---2018-10-17) -- [1.0.0 - 2018-06-08](#nifgen-100---2018-06-08) -- [0.9.0 - 2018-05-22](#nifgen-090---2018-05-22) -- [0.8.0 - 2018-04-27](#nifgen-080---2018-04-27) -- [0.7.0 - 2018-02-20](#nifgen-070---2018-02-20) -- [0.6.0 - 2017-12-20](#nifgen-060---2017-12-20) -- [0.5.0 - 2017-11-27](#nifgen-050---2017-11-27) -- [0.4.0 - 2017-11-07](#nifgen-040---2017-11-07) - -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - * Properties added: - * `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * Enum added: - * `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * MeasurementLink support - * #### Removed - * Support for Python 3.6 - -* ### 1.4.2 - 2022-08-03 - * #### Added - * `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) - * #### Changed - * Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities: - * `channels` - * `markers` - * `data_markers` - * `script_triggers` - * Corrected multiple mistakes in repeated capability info of attribute metadata - * alters API behavior (repeated capability access of attributes) and documentation - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.3 - 2021-02-26 - * #### Added - * `nifgen_trigger.py` example to demonstrate pulling a trigger from another device. - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * `nifgen.Session.import_attribute_configuration_file()` - * `nifgen.Session.import_attribute_configuration_buffer()` - * `nifgen.Session.export_attribute_configuration_file()` - * `nifgen.Session.export_attribute_configuration_buffer()` - * `nifgen.Session.get_channel_name()` - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` - * See documentation on how to call this function - * Calling the previous way will log a DeprecationWarning to the warning subsystem - * [#1300](https://github.com/ni/nimi-python/issues/1300) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8. - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - * #### Removed - * `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - * Enum values for `HardwareState` were incorrect - fix to match niFgen.h - -* ### 1.1.0 - 2018-10-25 - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Changed - * `num_channels` attribute renamed to `channel_count` - now consistent with other drivers - * `send_software_edge_trigger()` no longer takes any parameters. - * To send a start software trigger, call it on the session directly: - ``` python - session.send_software_edge_trigger() - ``` - * To send a script software trigger, call it on the script triggers container: - ``` python - session.script_triggers[1].send_software_edge_trigger() - ``` - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - * `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` - * `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` - * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` - * Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. - * `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` - * `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` - * Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) - * `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` - * `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - * `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - * `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) - * `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) - * `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) - * `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) - * `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) - * `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) - * `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) - * `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) - * `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) - * `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) - * `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) - * `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) - * `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) - * `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) - * `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) - * `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) - * `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) - * `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - * `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - * #### Removed - * `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python - * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) - -* ### 0.7.0 - 2018-02-20 - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - * `channel` repeated capability - * `markers` repeated capability - * `script_triggers` repeated capability - * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - * `adjust_sample_clock_relative_delay()` - * `wait_until_done()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_ext_cal_last_date_and_time()` - * `get_self_cal_last_date_and_time()` - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - * Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) - * Support for calling `write_waveform` with a waveform handle (int) or a name (str). - * Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) - * #### Changed - * Renamed `create_waveform_f64` -> `create_waveform` - * #### Removed - * `create_waveform_i16` - * `write_binary16_waveform`: Use `write_waveform` - * `write_named_waveform_i16`: Use `write_waveform` - * `write_named_waveform_f64`: Use `write_waveform` - -* ### 0.5.0 - 2017-11-27 - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - * `adjust_sample_clock_relative_delay` - -* ### 0.4.0 - 2017-11-07 - * #### Added - * Initial release - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - ---- -### nimodinst (NI-ModInst) - -- [1.4.9 - 2025-02-26](#nimodinst-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nimodinst-148---2024-04-26) -- [1.4.6 - 2023-09-11](#nimodinst-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nimodinst-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nimodinst-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nimodinst-143---2022-12-16) -- [1.4.1 - 2021-08-23](#nimodinst-141---2021-08-23) -- [1.3.2 - 2020-09-18](#nimodinst-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nimodinst-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nimodinst-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nimodinst-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nimodinst-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nimodinst-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nimodinst-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nimodinst-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nimodinst-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nimodinst-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nimodinst-101---2018-10-17) -- [1.0.0 - 2018-06-08](#nimodinst-100---2018-06-08) -- [0.9.0 - 2018-05-22](#nimodinst-090---2018-05-22) -- [0.8.0 - 2018-04-27](#nimodinst-080---2018-04-27) -- [0.7.0 - 2018-02-20](#nimodinst-070---2018-02-20) -- [0.6.0 - 2017-12-20](#nimodinst-060---2017-12-20) -- [0.5.0 - 2017-11-27](#nimodinst-050---2017-11-27) -- [0.4.0 - 2017-11-07](#nimodinst-040---2017-11-07) -- [0.3.0 - 2017-10-13](#nimodinst-030---2017-10-13) -- [0.2.0 - 2017-09-20](#nimodinst-020---2017-09-20) - -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * Indexing on `nimodinst.Session` is no longer allowed - * `session[0].device_name` becomes `session.devices[0].device_name` - * This is to be consistent with other drivers - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -* ### 0.7.0 - 2018-02-20 - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - -* ### 0.5.0 - 2017-11-27 - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - -* ### 0.4.0 - 2017-11-07 - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - -* ### 0.3.0 - 2017-10-13 - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - -* ### 0.2.0 - 2017-09-20 - * #### Added - * Suport for channel-based properties - * #### Changed - * Warnings no longer raise an exception - * Warnings are now added to warnings.warn() - * Device index is now on session not attribute. The correct way is now - ```python - i = 0 - with nimodinst.Session('nidmm') as session: - name = session[i].device_name - ``` ---- +#### [nidmm] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [nidmm] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [nidmm] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nidmm] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - `easy_install` support + +#### [nidmm] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nidmm] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 + - MeasurementLink support +- Removed + - Support for Python 3.6 + +#### [nidmm] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [nidmm] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nidmm] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nidmm] 1.3.0 - 2020-05-21 +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nidmm] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nidmm] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nidmm] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nidmm] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [nidmm] 1.1.3 - 2019-10-21 +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [nidmm] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [nidmm] 1.1.0 - 2018-10-25 +- Added + - import_attribute_configuration_file function + - export_attribute_configuration_file function + - import_attribute_configuration_buffer function + - import_attribute_configuration_buffer function +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nidmm] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nidmm] 1.0.0 - 2018-06-08 +- Changed + - Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `latency` - [#875](https://github.com/ni/nimi-python/issues/875) + - `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) + - `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + - `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + - `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + +#### [nidmm] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nidmm] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - Enum values that start with an underscore + digit have been renamed + - `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` + - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + +#### [nidmm] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: + - `configure_multi_point()` + - `configure_trigger()` + - `fetch()` + - `fetch_multi_point()` + - `fetch_waveform()` + - `read()` + - `read_multi_point()` + - `read_waveform()` + - The following functions return a `datetime.datetime()` object representing the date and time + - `get_cal_date_and_time()` + - Metadata updated to NI-DMM 17.5 +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + - `DCBias` - `DC_BIAS` + - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` + +#### [nidmm] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. +- Changed + - Property powerline_freq no longer uses enum PowerlineFrequency. + - Property current_source no longer uses enum CurrentSource. + - Property input_resistance no longer uses enum InputResistance. + - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple + - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_waveform()` returned tuple + +#### [nidmm] 0.5.0 - 2017-11-27 +- Added + - `get_ext_cal_recommended_interval` +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [nidmm] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + - Removed incorrect leading underscore from some enum values: + - `Function.AC_VOLTS_DC_COUPLED` + - `Function.WAVEFORM_CURRENT` + - `MeasurementCompleteDest.LBR_TRIG_0` + - `OperationMode.IVIDMM_MODE` + - `SampleTrigger.EXTERNAL` + - `SampleTrigger.TTL_3` + - `TriggerSource.TTL_0` + - `TriggerSource.TTL_3` + - `TriggerSource.TTL_7` + - `TriggerSource.PXI_STAR` + +#### [nidmm] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Added default values to some parameters. +- Removed + - Removed methods that aren’t useful in the Python bindings. + +#### [nidmm] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + - Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) + +#### [nidmm] 0.1.0 - 2017-09-01 +- Added + - Initial release ### niscope (NI-SCOPE) - - [1.4.9 - 2025-02-26](#niscope-149---2025-02-26) - [1.4.8 - 2024-04-26](#niscope-148---2024-04-26) - [1.4.6 - 2023-09-11](#niscope-146---2023-09-11) @@ -1767,818 +1543,669 @@ - [0.6.0 - 2017-12-20](#niscope-060---2017-12-20) - [0.5.0 - 2017-11-27](#niscope-050---2017-11-27) -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Added - * `get_channel_names()` - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Changed - * Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - * Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - * Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. - - * #### Added - * Support for Python 3.10 - * MeasurementLink support - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.2 - 2020-09-18 - * #### Added - * New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - * `get_ext_cal_last_date_and_time` - * `get_ext_cal_last_temp` - * `get_self_cal_last_date_and_time` - * `get_self_cal_last_temp` - * Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - * `add_waveform_processing` - * `clear_waveform_measurement_stats` - * `clear_waveform_processing` - * `fetch_array_measurement` - * `fetch_measurement_stats` - * Measurement library properties. - * `meas_array_gain` - * `meas_array_offset` - * `meas_chan_high_ref_level` - * `meas_chan_low_ref_level` - * `meas_chan_mid_ref_level` - * `meas_filter_center_freq` - * `meas_filter_cutoff_freq` - * `meas_filter_order` - * `meas_filter_ripple` - * `meas_filter_taps` - * `meas_filter_transient_waveform_percent` - * `meas_filter_type` - * `meas_filter_width` - * `meas_fir_filter_window` - * `meas_high_ref` - * `meas_low_ref` - * `meas_mid_ref` - * `meas_hysteresis_percent` - * `meas_interpolation_sampling_factor` - * `meas_last_acq_histogram_size` - * `meas_other_channel` - * `meas_percentage_method` - * `meas_polynomial_interpolation_order` - * `meas_ref_level_units` - * `meas_time_histogram_high_time` - * `meas_time_histogram_high_volts` - * `meas_time_histogram_low_time` - * `meas_time_hisogram_low_volts` - * `meas_time_histogram_size` - * `meas_voltage_histogram_high_volts` - * `meas_voltage_histogram_low_volts` - * `meas_voltage_histogram_size` - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - * Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods - * Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Added - * API parity with NI-SCOPE 20.0 by adding the following properties: - * `Session.end_of_acquisition_event_terminal_name` - * `Session.end_of_record_event_terminal_name` - * `Session.advance_trigger_terminal_name` - * `Session.ref_trigger_terminal_name` - * `Session.start_trigger_terminal_name` - * `Session.ready_for_advance_event_terminal_name` - * `Session.ready_for_ref_event_terminal_name` - * `Session.ready_for_start_event_terminal_name` - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Added - * `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum - * `enabled_channels`, `product_code` properties - * `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums - * `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums - * `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - * Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` - -* ### 1.1.0 - 2018-10-25 - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - * Format of output of wavefrom_info.__str__() - -* ### 1.0.0 - 2018-06-08 - * #### Added - * `niscope_fetch_forever.py` example - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - * Removed default value for `level` parameter on `configure_trigger_edge()` - * parameter list is now - ``` python - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` - * Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` - * parameter list is now - ``` python - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - * Properties removed - * `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - * `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - * `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - * `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - * `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - * `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - * `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - * `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - * `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - * `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - * `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - * `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - * `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * Methods removed - * `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - * `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - * Takes additional parameters that modify fetch behavior - * Add resulting record as part of the waveform info - * Channel name and record number added to waveform info - * See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - * Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - * Enum values and attribute names that start with an underscore + digit have been renamed - * `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` - * `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` - * `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` - * `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` - * `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` - * `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` - * `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` - * `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` - * `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` - * `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` - * `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` - * `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` - * `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` - * `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` - * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - * #### Removed - * Following properties are now removed (use parameters to fetch calls): - * `fetch_relative_to` - * `fetch_offset` - * `fetch_record_number` - * `fetch_num_records` - * Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - * Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - * `actual_meas_wfm_size()` - * `add_waveform_processing()` - * `clear_waveform_processing()` - * `fetch_array_measurement()` - * `clear_waveform_measurement_stats()` - * `fetch_measurement()` - * `fetch_measurement_stats()` - * `read_measurement()` - * `configure_ref_levels()` - * `meas_ref_level_units` - * `meas_other_channel` - * `meas_hysteresis_percent` - * `meas_last_acq_histogram_size` - * `meas_voltage_histogram_size` - * `meas_voltage_histogram_low_volts` - * `meas_voltage_histogram_high_volts` - * `meas_time_histogram_size` - * `meas_time_histogram_low_volts` - * `meas_time_histogram_high_volts` - * `meas_time_histogram_low_time` - * `meas_time_histogram_high_time` - * `meas_polynomial_interpolation_order` - * `meas_interpolation_sampling_factor` - * `meas_filter_cutoff_freq` - * `meas_filter_center_freq` - * `meas_filter_ripple` - * `meas_filter_transient_waveform_percent` - * `meas_filter_type` - * `meas_filter_order` - * `meas_filter_taps` - * `meas_chan_low_ref_level` - * `meas_chan_mid_ref_level` - * `meas_chan_high_ref_level` - * `meas_filter_width` - * `meas_fir_filter_window` - * `meas_array_gain` - * `meas_array_offset` - * `meas_percentage_method` - * `fetch_meas_num_samples` - -* ### 0.7.0 - 2018-02-20 - * #### Added - * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - * `channel` repeated capability - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - * `configure_trigger_digital()` - * `configure_trigger_edge()` - * `configure_trigger_hysteresis()` - * `configure_trigger_software()` - * `configure_trigger_video()` - * `configure_trigger_window()` - * `fetch()` - * `fetch_measurement_stats()` - * `read()` - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` - * `BoolEnableDisableChan` - `CHANNEL_ENABLED` - * `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` - * `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` - * `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - * `fetch_into` for high-performance fetch using numpy.array. Supported element types: - * `numpy.float64` - * `numpy.int8` - * `numpy.int16` - * `numpy.int32` - * #### Changed - * Added default values for timeout on all fetch and read functions. - * Property input_impedance no longer uses enum InputImpedance. - * #### Removed - * `AddWaveformProcessing` - See #667 for rationale - * `ClearWaveformProcessing` - See #667 for rationale - * `FetchArrayMeasurement` - See #667 for rationale - -* ### 0.5.0 - 2017-11-27 - * #### Added - * Initial release - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - * Removed Peer to Peer attributes - ---- - -## `niswitch` (NI-SWITCH) - -- [1.4.9 - 2025-02-26](#149---2025-02-26) -- [1.4.8 - 2024-04-26](#148---2024-04-26) -- [1.4.6 - 2023-09-11](#146---2023-09-11) -- [1.4.5 - 2023-06-12](#145---2023-06-12) -- [1.4.4 - 2023-04-14](#144---2023-04-14) -- [1.4.3 - 2022-12-16](#143---2022-12-16) -- [1.4.1 - 2021-08-23](#141---2021-08-23) -- [1.3.2 - 2020-09-18](#132---2020-09-18) -- [1.3.1 - 2020-06-08](#131---2020-06-08) -- [1.3.0 - 2020-05-21](#130---2020-05-21) -- [1.2.1 - 2020-04-21](#121---2020-04-21) -- [1.2.0 - 2020-03-06](#120---2020-03-06) -- [1.1.5 - 2019-11-22](#115---2019-11-22) -- [1.1.4 - 2019-11-19](#114---2019-11-19) -- [1.1.3 - 2019-10-21](#113---2019-10-21) -- [1.1.2 - 2019-06-06](#112---2019-06-06) -- [1.1.0 - 2018-10-25](#110---2018-10-25) -- [1.0.1 - 2018-10-17](#101---2018-10-17) -- [1.0.0 - 2018-06-08](#100---2018-06-08) -- [0.9.0 - 2018-05-22](#090---2018-05-22) -- [0.8.0 - 2018-04-27](#080---2018-04-27) -- [0.7.0 - 2018-02-20](#070---2018-02-20) -- [0.6.0 - 2017-12-20](#060---2017-12-20) -- [0.5.0 - 2017-11-27](#050---2017-11-27) -- [0.4.0 - 2017-11-07](#040---2017-11-07) -- [0.3.0 - 2017-10-13](#030---2017-10-13) -- [0.2.0 - 2017-09-20](#020---2017-09-20) - -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * MeasurementLink support - * #### Changed - * Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - * `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) - * `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) - * `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - * `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - * `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -* ### 0.7.0 - 2018-02-20 - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - * `configure_scan_trigger()` - * `wait_for_debounce()` - * `wait_for_scan_complete()` - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - * #### Removed - * Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). - -* ### 0.5.0 - 2017-11-27 - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - -* ### 0.4.0 - 2017-11-07 - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - * #### Removed - * Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. - -* ### 0.3.0 - 2017-10-13 - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - * Added default values to some parameters. - * #### Removed - * Removed methods that aren’t useful in the Python bindings. - -* ### 0.2.0 - 2017-09-20 - * #### Added - * Suport for channel-based properties - * Initial release - * #### Changed - * Warnings no longer raise an exception - * Warnings are now added to warnings.warn() - ---- -### nise (NI Switch Executive) - -- [1.4.9 - 2025-02-26](#nise-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nise-148---2024-04-26) -- [1.4.6 - 2023-09-11](#nise-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nise-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nise-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nise-143---2022-12-16) -- [1.4.1 - 2021-08-23](#nise-141---2021-08-23) -- [1.3.2 - 2020-09-18](#nise-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nise-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nise-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nise-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nise-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nise-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nise-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nise-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nise-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nise-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nise-101---2018-10-17) - -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Removed - * * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -* ### 1.4.3 - 2022-12-16 - * #### Added - * * Support for Python 3.10 - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - * #### Changed - * Version updated to 1.1.4 to match other released nimi-python modules - -* ### 1.1.3 - 2019-10-21 - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - * Update to 1.0 - now ready for production use - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * Initial Release - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -## `nitclk` (NI-TClk) +#### [niscope] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [niscope] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [niscope] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [niscope] 1.4.5 - 2023-06-12 +- Added + - `get_channel_names()` + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Changed + - Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. +- Removed + - `easy_install` support + +#### [niscope] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. + - Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + +#### [niscope] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 + - MeasurementLink support +- Removed + - Support for Python 3.6 + +#### [niscope] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [niscope] 1.3.2 - 2020-09-18 +- Added + - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) + - `get_ext_cal_last_date_and_time` + - `get_ext_cal_last_temp` + - `get_self_cal_last_date_and_time` + - `get_self_cal_last_temp` + - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) + - `add_waveform_processing` + - `clear_waveform_measurement_stats` + - `clear_waveform_processing` + - `fetch_array_measurement` + - `fetch_measurement_stats` + - Measurement library properties. + - `meas_array_gain` + - `meas_array_offset` + - `meas_chan_high_ref_level` + - `meas_chan_low_ref_level` + - `meas_chan_mid_ref_level` + - `meas_filter_center_freq` + - `meas_filter_cutoff_freq` + - `meas_filter_order` + - `meas_filter_ripple` + - `meas_filter_taps` + - `meas_filter_transient_waveform_percent` + - `meas_filter_type` + - `meas_filter_width` + - `meas_fir_filter_window` + - `meas_high_ref` + - `meas_low_ref` + - `meas_mid_ref` + - `meas_hysteresis_percent` + - `meas_interpolation_sampling_factor` + - `meas_last_acq_histogram_size` + - `meas_other_channel` + - `meas_percentage_method` + - `meas_polynomial_interpolation_order` + - `meas_ref_level_units` + - `meas_time_histogram_high_time` + - `meas_time_histogram_high_volts` + - `meas_time_histogram_low_time` + - `meas_time_hisogram_low_volts` + - `meas_time_histogram_size` + - `meas_voltage_histogram_high_volts` + - `meas_voltage_histogram_low_volts` + - `meas_voltage_histogram_size` +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods + - Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero + +#### [niscope] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [niscope] 1.3.0 - 2020-05-21 +- Added + - API parity with NI-SCOPE 20.0 by adding the following properties: + - `Session.end_of_acquisition_event_terminal_name` + - `Session.end_of_record_event_terminal_name` + - `Session.advance_trigger_terminal_name` + - `Session.ref_trigger_terminal_name` + - `Session.start_trigger_terminal_name` + - `Session.ready_for_advance_event_terminal_name` + - `Session.ready_for_ref_event_terminal_name` + - `Session.ready_for_start_event_terminal_name` +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [niscope] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [niscope] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [niscope] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [niscope] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [niscope] 1.1.3 - 2019-10-21 +- Added + - `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum + - `enabled_channels`, `product_code` properties + - `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums + - `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums + - `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [niscope] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + - Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` + +#### [niscope] 1.1.0 - 2018-10-25 +- Added + - import_attribute_configuration_file function + - export_attribute_configuration_file function + - import_attribute_configuration_buffer function + - import_attribute_configuration_buffer function +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [niscope] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + - Format of output of wavefrom_info.__str__() + +#### [niscope] 1.0.0 - 2018-06-08 +- Added + - `niscope_fetch_forever.py` example +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Removed default value for `level` parameter on `configure_trigger_edge()` + - parameter list is now + - ``` python + - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + - ``` + - Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` + - parameter list is now + - ``` python + - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + - ``` + +#### [niscope] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + - Properties removed + - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - Methods removed + - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + +#### [niscope] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated + - Takes additional parameters that modify fetch behavior + - Add resulting record as part of the waveform info + - Channel name and record number added to waveform info + - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), + - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. + - Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` + - Enum values and attribute names that start with an underscore + digit have been renamed + - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` + - `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` + - `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` + - `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` + - `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` + - `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` + - `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` + - `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` + - `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` + - `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` + - `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` + - `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` + - `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` + - `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` + - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) +- Removed + - Following properties are now removed (use parameters to fetch calls): + - `fetch_relative_to` + - `fetch_offset` + - `fetch_record_number` + - `fetch_num_records` + - Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` + - Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) + - `actual_meas_wfm_size()` + - `add_waveform_processing()` + - `clear_waveform_processing()` + - `fetch_array_measurement()` + - `clear_waveform_measurement_stats()` + - `fetch_measurement()` + - `fetch_measurement_stats()` + - `read_measurement()` + - `configure_ref_levels()` + - `meas_ref_level_units` + - `meas_other_channel` + - `meas_hysteresis_percent` + - `meas_last_acq_histogram_size` + - `meas_voltage_histogram_size` + - `meas_voltage_histogram_low_volts` + - `meas_voltage_histogram_high_volts` + - `meas_time_histogram_size` + - `meas_time_histogram_low_volts` + - `meas_time_histogram_high_volts` + - `meas_time_histogram_low_time` + - `meas_time_histogram_high_time` + - `meas_polynomial_interpolation_order` + - `meas_interpolation_sampling_factor` + - `meas_filter_cutoff_freq` + - `meas_filter_center_freq` + - `meas_filter_ripple` + - `meas_filter_transient_waveform_percent` + - `meas_filter_type` + - `meas_filter_order` + - `meas_filter_taps` + - `meas_chan_low_ref_level` + - `meas_chan_mid_ref_level` + - `meas_chan_high_ref_level` + - `meas_filter_width` + - `meas_fir_filter_window` + - `meas_array_gain` + - `meas_array_offset` + - `meas_percentage_method` + - `fetch_meas_num_samples` + +#### [niscope] 0.7.0 - 2018-02-20 +- Added + - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + - `channel` repeated capability +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + - `configure_trigger_digital()` + - `configure_trigger_edge()` + - `configure_trigger_hysteresis()` + - `configure_trigger_software()` + - `configure_trigger_video()` + - `configure_trigger_window()` + - `fetch()` + - `fetch_measurement_stats()` + - `read()` +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + - `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` + - `BoolEnableDisableChan` - `CHANNEL_ENABLED` + - `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` + - `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` + - `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + +#### [niscope] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - `fetch_into` for high-performance fetch using numpy.array. Supported element types: + - `numpy.float64` + - `numpy.int8` + - `numpy.int16` + - `numpy.int32` +- Changed + - Added default values for timeout on all fetch and read functions. + - Property input_impedance no longer uses enum InputImpedance. +- Removed + - `AddWaveformProcessing` - See #667 for rationale + - `ClearWaveformProcessing` - See #667 for rationale + - `FetchArrayMeasurement` - See #667 for rationale + +#### [niscope] 0.5.0 - 2017-11-27 +- Added + - Initial release +- Removed + - enum definitions that are not referenced by a function and/or an attributes + - Removed Peer to Peer attributes + +#### [niscope] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [niscope] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [niscope] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + +### niswitch (NI-SWITCH) + +#### [niswitch] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [niswitch] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [niswitch] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [niswitch] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - `easy_install` support + +#### [niswitch] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [niswitch] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 + - MeasurementLink support +- Changed + - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page +- Removed + - Support for Python 3.6 + +#### [niswitch] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [niswitch] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [niswitch] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [niswitch] 1.3.0 - 2020-05-21 +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [niswitch] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [niswitch] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [niswitch] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [niswitch] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [niswitch] 1.1.3 - 2019-10-21 +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [niswitch] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [niswitch] 1.1.0 - 2018-10-25 +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [niswitch] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [niswitch] 1.0.0 - 2018-06-08 +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) + - `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) + - `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + - `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + - `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) + +#### [niswitch] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [niswitch] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [niswitch] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + - `configure_scan_trigger()` + - `wait_for_debounce()` + - `wait_for_scan_complete()` + +#### [niswitch] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +- Removed + - Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). + +#### [niswitch] 0.5.0 - 2017-11-27 +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [niswitch] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +- Removed + - Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. + +#### [niswitch] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Added default values to some parameters. +- Removed + - Removed methods that aren’t useful in the Python bindings. + +#### [niswitch] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties + - Initial release +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + +### nitclk (NI-TCLK) - [1.4.9 - 2025-02-26](#nitclk-149---2025-02-26) - [1.4.8 - 2024-04-26](#nitclk-148---2024-04-26) @@ -2610,234 +2237,691 @@ - [0.2.0 - 2017-09-20](#nitclk-020---2017-09-20) - [0.1.0 - 2017-09-01](#nitclk-010---2017-09-01) -* ### 1.4.9 - 2025-02-26 - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 - -* ### 1.4.8 - 2024-04-26 - * #### Added - * Support for Python 3.12 - -* ### 1.4.6 - 2023-09-11 - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -* ### 1.4.5 - 2023-06-12 - * #### Removed - * `easy_install` support - -* ### 1.4.4 - 2023-04-14 - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -* ### 1.4.3 - 2022-12-16 - * #### Added - * Support for Python 3.10 - * #### Removed - * Support for Python 3.6 - -* ### 1.4.1 - 2021-08-23 - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 - -* ### 1.3.3 - 2021-02-26 - * #### Added - * nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. - * #### Removed - * nitclk_configure.py as it did not do anything. - -* ### 1.3.2 - 2020-09-18 - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -* ### 1.3.1 - 2020-06-08 - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -* ### 1.3.0 - 2020-05-21 - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -* ### 1.2.1 - 2020-04-21 - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - * #### Changed - * Version updated to 1.2.1 to match other released nimi-python modules - -* ### 1.2.0 - 2020-03-06 - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * Method parameters and properties that are time based now take or return a `datetime.timedelta` object - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - * Ability to pass an integer as a session / session reference - * `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) - -* ### 1.1.5 - 2019-11-22 - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -* ### 1.1.4 - 2019-11-19 - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs - -* ### 1.1.3 - 2019-10-21 - * #### Added - * Initial support - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -* ### 1.1.2 - 2019-06-06 - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata - -* ### 1.1.0 - 2018-10-25 - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -* ### 1.0.1 - 2018-10-17 - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -* ### 1.0.0 - 2018-06-08 - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - -* ### 0.9.0 - 2018-05-22 - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` - -* ### 0.8.0 - 2018-04-27 - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -* ### 0.7.0 - 2018-02-20 - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - -* ### 0.6.0 - 2017-12-20 - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - -* ### 0.5.0 - 2017-11-27 - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes - -* ### 0.4.0 - 2017-11-07 - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - -* ### 0.3.0 - 2017-10-13 - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - -* ### 0.2.0 - 2017-09-20 - * #### Added - * Suport for channel-based properties - * #### Changed - * Warnings no longer raise an exception - * Warnings are now added to warnings.warn() - -* ### 0.1.0 - 2017-09-01 - * #### Removed - --> - - -* ### 0.1.0 - 2017-09-01 - * #### Added - * Initial release - +#### [nitclk] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [nitclk] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [nitclk] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nitclk] 1.4.5 - 2023-06-12 +- Removed + - `easy_install` support + +#### [nitclk] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nitclk] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 +- Removed + - Support for Python 3.6 + +#### [nitclk] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [nitclk] 1.3.3 - 2021-02-26 +- Added + - nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. +- Removed + - nitclk_configure.py as it did not do anything. + +#### [nitclk] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nitclk] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nitclk] 1.3.0 - 2020-05-21 +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nitclk] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` +- Changed + - Version updated to 1.2.1 to match other released nimi-python modules + +#### [nitclk] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - Method parameters and properties that are time based now take or return a `datetime.timedelta` object +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - Ability to pass an integer as a session / session reference + - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) + +#### [nitclk] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nitclk] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [nitclk] 1.1.3 - 2019-10-21 +- Added + - Initial support +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [nitclk] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [nitclk] 1.1.0 - 2018-10-25 +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nitclk] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nitclk] 1.0.0 - 2018-06-08 +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +#### [nitclk] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nitclk] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [nitclk] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +#### [nitclk] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +#### [nitclk] 0.5.0 - 2017-11-27 +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [nitclk] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [nitclk] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nitclk] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + +#### [nitclk] 0.1.0 - 2017-09-01 +- Removed + - --> + +### nise (NI-SE) +- [1.4.9 - 2025-02-26](#nise-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nise-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nise-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nise-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nise-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nise-143---2022-12-16) +- [1.4.1 - 2021-08-23](#nise-141---2021-08-23) +- [1.3.2 - 2020-09-18](#nise-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nise-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nise-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nise-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nise-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nise-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nise-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nise-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nise-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nise-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nise-101---2018-10-17) + +#### [nise] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [nise] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [nise] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nise] 1.4.5 - 2023-06-12 +- Removed + - `easy_install` support + +#### [nise] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nise] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 +- Removed + - Support for Python 3.6 + +#### [nise] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [nise] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nise] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nise] 1.3.0 - 2020-05-21 +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nise] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nise] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nise] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nise] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs +- Changed + - Version updated to 1.1.4 to match other released nimi-python modules + +#### [nise] 1.1.3 - 2019-10-21 +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - Update to 1.0 - now ready for production use + +#### [nise] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [nise] 1.1.0 - 2018-10-25 +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nise] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + - Initial Release +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nise] 1.0.0 - 2018-06-08 +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +#### [nise] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nise] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [nise] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +#### [nise] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +#### [nise] 0.5.0 - 2017-11-27 +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [nise] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [nise] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nise] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + +### nimodinst (NI-MODINST) + +- [1.4.9 - 2025-02-26](#nimodinst-149---2025-02-26) +- [1.4.8 - 2024-04-26](#nimodinst-148---2024-04-26) +- [1.4.6 - 2023-09-11](#nimodinst-146---2023-09-11) +- [1.4.5 - 2023-06-12](#nimodinst-145---2023-06-12) +- [1.4.4 - 2023-04-14](#nimodinst-144---2023-04-14) +- [1.4.3 - 2022-12-16](#nimodinst-143---2022-12-16) +- [1.4.1 - 2021-08-23](#nimodinst-141---2021-08-23) +- [1.3.2 - 2020-09-18](#nimodinst-132---2020-09-18) +- [1.3.1 - 2020-06-08](#nimodinst-131---2020-06-08) +- [1.3.0 - 2020-05-21](#nimodinst-130---2020-05-21) +- [1.2.1 - 2020-04-21](#nimodinst-121---2020-04-21) +- [1.2.0 - 2020-03-06](#nimodinst-120---2020-03-06) +- [1.1.5 - 2019-11-22](#nimodinst-115---2019-11-22) +- [1.1.4 - 2019-11-19](#nimodinst-114---2019-11-19) +- [1.1.3 - 2019-10-21](#nimodinst-113---2019-10-21) +- [1.1.2 - 2019-06-06](#nimodinst-112---2019-06-06) +- [1.1.0 - 2018-10-25](#nimodinst-110---2018-10-25) +- [1.0.1 - 2018-10-17](#nimodinst-101---2018-10-17) +- [1.0.0 - 2018-06-08](#nimodinst-100---2018-06-08) +- [0.9.0 - 2018-05-22](#nimodinst-090---2018-05-22) +- [0.8.0 - 2018-04-27](#nimodinst-080---2018-04-27) +- [0.7.0 - 2018-02-20](#nimodinst-070---2018-02-20) +- [0.6.0 - 2017-12-20](#nimodinst-060---2017-12-20) +- [0.5.0 - 2017-11-27](#nimodinst-050---2017-11-27) +- [0.4.0 - 2017-11-07](#nimodinst-040---2017-11-07) +- [0.3.0 - 2017-10-13](#nimodinst-030---2017-10-13) +- [0.2.0 - 2017-09-20](#nimodinst-020---2017-09-20) + +#### [nimodinst] 1.4.9 - 2025-02-26 +- Added + - Support for Python 3.13 +- Changed + - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - Support for Python 3.8 + +#### [nimodinst] 1.4.8 - 2024-04-26 +- Added + - Support for Python 3.12 + +#### [nimodinst] 1.4.6 - 2023-09-11 +- Changed + - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - Support for Python 3.7 + +#### [nimodinst] 1.4.5 - 2023-06-12 +- Removed + - `easy_install` support + +#### [nimodinst] 1.4.4 - 2023-04-14 +- Added + - Support for Python 3.11 +- Changed + - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nimodinst] 1.4.3 - 2022-12-16 +- Added + - Support for Python 3.10 +- Removed + - Support for Python 3.6 + +#### [nimodinst] 1.4.1 - 2021-08-23 +- Added + - Support for Python 3.9 +- Removed + - Support for Python 3.5 + +#### [nimodinst] 1.3.2 - 2020-09-18 +- Changed + - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nimodinst] 1.3.1 - 2020-06-08 +- Changed + - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nimodinst] 1.3.0 - 2020-05-21 +- Changed + - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nimodinst] 1.2.1 - 2020-04-21 +- Added + - Support for chained repeated capabilities. This allows things like + - ``` python + - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + - ``` + - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nimodinst] 1.2.0 - 2020-03-06 +- Added + - Zip file per driver for all examples and any helper files + - Link to zip file on examples documentation + - Support for Python 3.8 +- Changed + - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nimodinst] 1.1.5 - 2019-11-22 +- Changed + - Fix #1140: Linux support was accidentally broken. + - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nimodinst] 1.1.4 - 2019-11-19 +- Added + - Support for Python 3.8 + - `ViUInt8` is now a valid type in APIs + +#### [nimodinst] 1.1.3 - 2019-10-21 +- Changed + - The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [nimodinst] 1.1.2 - 2019-06-06 +- Changed + - Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - New internal process for generating metadata + +#### [nimodinst] 1.1.0 - 2018-10-25 +- Changed + - Updated generated metadata + - Updated "Driver Version Tested Against" + - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nimodinst] 1.0.1 - 2018-10-17 +- Added + - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nimodinst] 1.0.0 - 2018-06-08 +- Changed + - Double close will now allow NI-ModInst to return error +- Removed + - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +#### [nimodinst] 0.9.0 - 2018-05-22 +- Added + - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - Indexing on `nimodinst.Session` is no longer allowed + - `session[0].device_name` becomes `session.devices[0].device_name` + - This is to be consistent with other drivers +- Removed + - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nimodinst] 0.8.0 - 2018-04-27 +- Changed + - All exceptions raised by the Python bindings inherit from `.Error` + - Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [nimodinst] 0.7.0 - 2018-02-20 +- Changed + - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +#### [nimodinst] 0.6.0 - 2017-12-20 +- Added + - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +#### [nimodinst] 0.5.0 - 2017-11-27 +- Removed + - enum definitions that are not referenced by a function and/or an attributes + +#### [nimodinst] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [nimodinst] 0.3.0 - 2017-10-13 +- Added + - Support for ViInt64 (64-bit integers) +- Changed + - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + - ```python + - # Sets sequence on channels 0 through 3 + - session['0-3'].set_sequence(values, source_delays) + - ``` + - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nimodinst] 0.2.0 - 2017-09-20 +- Added + - Suport for channel-based properties +- Changed + - Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + - Device index is now on session not attribute. The correct way is now + - ```python + - i = 0 + - with nimodinst.Session('nidmm') as session: + - name = session[i].device_name + - ``` + +#### [nimodinst] 0.1.0 - 2017-09-01 +- Added + - Initial release + + + The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). - - + - `Function.TWO_WIRE_RES` - - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` + `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) #### [nidmm] 0.7.0 - 2018-02-20 - Changed - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - - `configure_multi_point()` - - `configure_trigger()` - - `fetch()` - - `fetch_multi_point()` - - `fetch_waveform()` - - `read()` - - `read_multi_point()` - - `read_waveform()` + `configure_multi_point()` + `configure_trigger()` + `fetch()` + `fetch_multi_point()` + `fetch_waveform()` + `read()` + `read_multi_point()` + `read_waveform()` - The following functions return a `datetime.datetime()` object representing the date and time - - `get_cal_date_and_time()` + `get_cal_date_and_time()` - Metadata updated to NI-DMM 17.5 - Removed - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - - `DCBias` - `DC_BIAS` - - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` + `DCBias` - `DC_BIAS` + `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` #### [nidmm] 0.6.0 - 2017-12-20 - Added - - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. +`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`fetch_waveform_into` for high-performance fetch using numpy.array of float64. - Changed - - Property powerline_freq no longer uses enum PowerlineFrequency. - - Property current_source no longer uses enum CurrentSource. - - Property input_resistance no longer uses enum InputResistance. - - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple - - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple - - Removed `actual_number_of_points` from `read_multi_point()` returned tuple - - Removed `actual_number_of_points` from `read_waveform()` returned tuple +Property powerline_freq no longer uses enum PowerlineFrequency. +Property current_source no longer uses enum CurrentSource. +Property input_resistance no longer uses enum InputResistance. +Removed `actual_number_of_points` from `fetch_waveform()` returned tuple +Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple +Removed `actual_number_of_points` from `read_multi_point()` returned tuple +Removed `actual_number_of_points` from `read_waveform()` returned tuple #### [nidmm] 0.5.0 - 2017-11-27 - Added - - `get_ext_cal_recommended_interval` +`get_ext_cal_recommended_interval` - Removed - - enum definitions that are not referenced by a function and/or an attributes +enum definitions that are not referenced by a function and/or an attributes #### [nidmm] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - - Removed incorrect leading underscore from some enum values: - - `Function.AC_VOLTS_DC_COUPLED` - - `Function.WAVEFORM_CURRENT` - - `MeasurementCompleteDest.LBR_TRIG_0` - - `OperationMode.IVIDMM_MODE` - - `SampleTrigger.EXTERNAL` - - `SampleTrigger.TTL_3` - - `TriggerSource.TTL_0` - - `TriggerSource.TTL_3` - - `TriggerSource.TTL_7` - - `TriggerSource.PXI_STAR` +Simplified examples by removing try/except +SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +Removed incorrect leading underscore from some enum values: +`Function.AC_VOLTS_DC_COUPLED` +`Function.WAVEFORM_CURRENT` +`MeasurementCompleteDest.LBR_TRIG_0` +`OperationMode.IVIDMM_MODE` +`SampleTrigger.EXTERNAL` +`SampleTrigger.TTL_3` +`TriggerSource.TTL_0` +`TriggerSource.TTL_3` +`TriggerSource.TTL_7` +`TriggerSource.PXI_STAR` #### [nidmm] 0.3.0 - 2017-10-13 - Added - - Support for ViInt64 (64-bit integers) +Support for ViInt64 (64-bit integers) - Changed - - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - - ```python - - # Sets sequence on channels 0 through 3 - - session['0-3'].set_sequence(values, source_delays) - - ``` - - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - - Added default values to some parameters. +Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Added default values to some parameters. - Removed - - Removed methods that aren’t useful in the Python bindings. +Removed methods that aren’t useful in the Python bindings. #### [nidmm] 0.2.0 - 2017-09-20 - Added - - Suport for channel-based properties +Suport for channel-based properties - Changed - - Warnings no longer raise an exception - - Warnings are now added to warnings.warn() - - Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) +Warnings no longer raise an exception +Warnings are now added to warnings.warn() +Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) #### [nidmm] 0.1.0 - 2017-09-01 - Added - - Initial release +Initial release ### niscope (NI-SCOPE) -- [1.4.9 - 2025-02-26](#niscope-149---2025-02-26) -- [1.4.8 - 2024-04-26](#niscope-148---2024-04-26) -- [1.4.6 - 2023-09-11](#niscope-146---2023-09-11) -- [1.4.5 - 2023-06-12](#niscope-145---2023-06-12) -- [1.4.4 - 2023-04-14](#niscope-144---2023-04-14) -- [1.4.3 - 2022-12-16](#niscope-143---2022-12-16) -- [1.4.1 - 2021-08-23](#niscope-141---2021-08-23) -- [1.3.2 - 2020-09-18](#niscope-132---2020-09-18) -- [1.3.1 - 2020-06-08](#niscope-131---2020-06-08) -- [1.3.0 - 2020-05-21](#niscope-130---2020-05-21) -- [1.2.1 - 2020-04-21](#niscope-121---2020-04-21) -- [1.2.0 - 2020-03-06](#niscope-120---2020-03-06) -- [1.1.5 - 2019-11-22](#niscope-115---2019-11-22) -- [1.1.4 - 2019-11-19](#niscope-114---2019-11-19) -- [1.1.3 - 2019-10-21](#niscope-113---2019-10-21) -- [1.1.2 - 2019-06-06](#niscope-112---2019-06-06) -- [1.1.0 - 2018-10-25](#niscope-110---2018-10-25) -- [1.0.1 - 2018-10-17](#niscope-101---2018-10-17) -- [1.0.0 - 2018-06-08](#niscope-100---2018-06-08) -- [0.9.0 - 2018-05-22](#niscope-090---2018-05-22) -- [0.8.0 - 2018-04-27](#niscope-080---2018-04-27) -- [0.7.0 - 2018-02-20](#niscope-070---2018-02-20) -- [0.6.0 - 2017-12-20](#niscope-060---2017-12-20) -- [0.5.0 - 2017-11-27](#niscope-050---2017-11-27) #### [niscope] 1.4.9 - 2025-02-26 - Added @@ -1562,6 +1443,7 @@ - Removed - Support for Python 3.7 + #### [niscope] 1.4.5 - 2023-06-12 - Added - `get_channel_names()` @@ -1577,7 +1459,8 @@ - Changed - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - - Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + #### [niscope] 1.4.3 - 2022-12-16 - Added @@ -1595,71 +1478,77 @@ #### [niscope] 1.3.2 - 2020-09-18 - Added - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - - `get_ext_cal_last_date_and_time` - - `get_ext_cal_last_temp` - - `get_self_cal_last_date_and_time` - - `get_self_cal_last_temp` + `get_ext_cal_last_date_and_time` + `get_ext_cal_last_temp` + `get_self_cal_last_date_and_time` + `get_self_cal_last_temp` - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - - `add_waveform_processing` - - `clear_waveform_measurement_stats` - - `clear_waveform_processing` - - `fetch_array_measurement` - - `fetch_measurement_stats` + `add_waveform_processing` + `clear_waveform_measurement_stats` + `clear_waveform_processing` + `fetch_array_measurement` + `fetch_measurement_stats` - Measurement library properties. - - `meas_array_gain` - - `meas_array_offset` - - `meas_chan_high_ref_level` - - `meas_chan_low_ref_level` - - `meas_chan_mid_ref_level` - - `meas_filter_center_freq` - - `meas_filter_cutoff_freq` - - `meas_filter_order` - - `meas_filter_ripple` - - `meas_filter_taps` - - `meas_filter_transient_waveform_percent` - - `meas_filter_type` - - `meas_filter_width` - - `meas_fir_filter_window` - - `meas_high_ref` - - `meas_low_ref` - - `meas_mid_ref` - - `meas_hysteresis_percent` - - `meas_interpolation_sampling_factor` - - `meas_last_acq_histogram_size` - - `meas_other_channel` - - `meas_percentage_method` - - `meas_polynomial_interpolation_order` - - `meas_ref_level_units` - - `meas_time_histogram_high_time` - - `meas_time_histogram_high_volts` - - `meas_time_histogram_low_time` - - `meas_time_hisogram_low_volts` - - `meas_time_histogram_size` - - `meas_voltage_histogram_high_volts` - - `meas_voltage_histogram_low_volts` - - `meas_voltage_histogram_size` + `meas_array_gain` + `meas_array_offset` + `meas_chan_high_ref_level` + `meas_chan_low_ref_level` + `meas_chan_mid_ref_level` + `meas_filter_center_freq` + `meas_filter_cutoff_freq` + `meas_filter_order` + `meas_filter_ripple` + `meas_filter_taps` + `meas_filter_transient_waveform_percent` + `meas_filter_type` + `meas_filter_width` + `meas_fir_filter_window` + `meas_high_ref` + `meas_low_ref` + `meas_mid_ref` + `meas_hysteresis_percent` + `meas_interpolation_sampling_factor` + `meas_last_acq_histogram_size` + `meas_other_channel` + `meas_percentage_method` + `meas_polynomial_interpolation_order` + `meas_ref_level_units` + `meas_time_histogram_high_time` + `meas_time_histogram_high_volts` + `meas_time_histogram_low_time` + `meas_time_hisogram_low_volts` + `meas_time_histogram_size` + `meas_voltage_histogram_high_volts` + `meas_voltage_histogram_low_volts` + `meas_voltage_histogram_size` - Changed - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods - Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero + + #### [niscope] 1.3.1 - 2020-06-08 - Changed - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + #### [niscope] 1.3.0 - 2020-05-21 - Added - API parity with NI-SCOPE 20.0 by adding the following properties: - - `Session.end_of_acquisition_event_terminal_name` - - `Session.end_of_record_event_terminal_name` - - `Session.advance_trigger_terminal_name` - - `Session.ref_trigger_terminal_name` - - `Session.start_trigger_terminal_name` - - `Session.ready_for_advance_event_terminal_name` - - `Session.ready_for_ref_event_terminal_name` - - `Session.ready_for_start_event_terminal_name` + `Session.end_of_acquisition_event_terminal_name` + `Session.end_of_record_event_terminal_name` + `Session.advance_trigger_terminal_name` + `Session.ref_trigger_terminal_name` + `Session.start_trigger_terminal_name` + `Session.ready_for_advance_event_terminal_name` + `Session.ready_for_ref_event_terminal_name` + `Session.ready_for_start_event_terminal_name` + + - Changed - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. @@ -1667,10 +1556,11 @@ #### [niscope] 1.2.1 - 2020-04-21 - Added - Support for chained repeated capabilities. This allows things like - - ``` python - - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` #### [niscope] 1.2.0 - 2020-03-06 - Added @@ -1690,6 +1580,8 @@ - Fix #1140: Linux support was accidentally broken. - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + #### [niscope] 1.1.4 - 2019-11-19 - Added - Support for Python 3.8 @@ -1704,12 +1596,12 @@ - `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums - Changed - The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha + version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + version < 1.0 and version >= 0.5 - Beta + version < 0.5 - Alpha - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [niscope] 1.1.2 - 2019-06-06 @@ -1718,12 +1610,16 @@ - New internal process for generating metadata - Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` + + #### [niscope] 1.1.0 - 2018-10-25 - Added - import_attribute_configuration_file function - export_attribute_configuration_file function - import_attribute_configuration_buffer function - import_attribute_configuration_buffer function + + - Changed - Updated generated metadata - Updated "Driver Version Tested Against" @@ -1744,15 +1640,16 @@ - Removed - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - Removed default value for `level` parameter on `configure_trigger_edge()` - - parameter list is now - - ``` python - - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - - ``` + parameter list is now + - ``` python + - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + - ``` - Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` - - parameter list is now - - ``` python - - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - - ``` + parameter list is now + - ``` python + - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + - ``` + #### [niscope] 0.9.0 - 2018-05-22 - Added @@ -1764,217 +1661,221 @@ - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` + `engine_major_version` + `engine_minor_version` + `engine_revision` + `primary_error` + `secondary_error` + `error_elaboration` + `io_session_type` + `io_session` / `visa_rm_session` + `group_capabilities` + `interchange_check` + `range_check` + `record_coercions` + `specific_driver_class_spec_major_version` + `specific_driver_class_spec_minor_version` + `query_instrument_status` + `cache` + `specific_driver_prefix` - Properties removed - - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - Methods removed - - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) #### [niscope] 0.8.0 - 2018-04-27 - Changed - All exceptions raised by the Python bindings inherit from `.Error` - Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver + This encapsulates any error that is returned by the underlying driver - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - - Takes additional parameters that modify fetch behavior - - Add resulting record as part of the waveform info - - Channel name and record number added to waveform info - - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. + Takes additional parameters that modify fetch behavior + Add resulting record as part of the waveform info + Channel name and record number added to waveform info + See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), + - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - Enum values and attribute names that start with an underscore + digit have been renamed - - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` - - `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` - - `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` - - `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` - - `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` - - `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` - - `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` - - `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` - - `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` - - `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` - - `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` - - `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` - - `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` - - `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` - - `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` - - `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` - - `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` - - `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` - - `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` - - `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` + `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` + `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` + `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` + `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` + `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` + `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` + `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` + `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` + `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` + `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` + `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` + `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` + `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` + `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` + `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` + `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` + `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` + `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` + `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` + `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - Removed - Following properties are now removed (use parameters to fetch calls): - - `fetch_relative_to` - - `fetch_offset` - - `fetch_record_number` - - `fetch_num_records` + `fetch_relative_to` + `fetch_offset` + `fetch_record_number` + `fetch_num_records` - Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - - `actual_meas_wfm_size()` - - `add_waveform_processing()` - - `clear_waveform_processing()` - - `fetch_array_measurement()` - - `clear_waveform_measurement_stats()` - - `fetch_measurement()` - - `fetch_measurement_stats()` - - `read_measurement()` - - `configure_ref_levels()` - - `meas_ref_level_units` - - `meas_other_channel` - - `meas_hysteresis_percent` - - `meas_last_acq_histogram_size` - - `meas_voltage_histogram_size` - - `meas_voltage_histogram_low_volts` - - `meas_voltage_histogram_high_volts` - - `meas_time_histogram_size` - - `meas_time_histogram_low_volts` - - `meas_time_histogram_high_volts` - - `meas_time_histogram_low_time` - - `meas_time_histogram_high_time` - - `meas_polynomial_interpolation_order` - - `meas_interpolation_sampling_factor` - - `meas_filter_cutoff_freq` - - `meas_filter_center_freq` - - `meas_filter_ripple` - - `meas_filter_transient_waveform_percent` - - `meas_filter_type` - - `meas_filter_order` - - `meas_filter_taps` - - `meas_chan_low_ref_level` - - `meas_chan_mid_ref_level` - - `meas_chan_high_ref_level` - - `meas_filter_width` - - `meas_fir_filter_window` - - `meas_array_gain` - - `meas_array_offset` - - `meas_percentage_method` - - `fetch_meas_num_samples` + `actual_meas_wfm_size()` + `add_waveform_processing()` + `clear_waveform_processing()` + `fetch_array_measurement()` + `clear_waveform_measurement_stats()` + `fetch_measurement()` + `fetch_measurement_stats()` + `read_measurement()` + `configure_ref_levels()` + `meas_ref_level_units` + `meas_other_channel` + `meas_hysteresis_percent` + `meas_last_acq_histogram_size` + `meas_voltage_histogram_size` + `meas_voltage_histogram_low_volts` + `meas_voltage_histogram_high_volts` + `meas_time_histogram_size` + `meas_time_histogram_low_volts` + `meas_time_histogram_high_volts` + `meas_time_histogram_low_time` + `meas_time_histogram_high_time` + `meas_polynomial_interpolation_order` + `meas_interpolation_sampling_factor` + `meas_filter_cutoff_freq` + `meas_filter_center_freq` + `meas_filter_ripple` + `meas_filter_transient_waveform_percent` + `meas_filter_type` + `meas_filter_order` + `meas_filter_taps` + `meas_chan_low_ref_level` + `meas_chan_mid_ref_level` + `meas_chan_high_ref_level` + `meas_filter_width` + `meas_fir_filter_window` + `meas_array_gain` + `meas_array_offset` + `meas_percentage_method` + `fetch_meas_num_samples` + #### [niscope] 0.7.0 - 2018-02-20 - Added - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - - `channel` repeated capability + `channel` repeated capability - Changed - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - - `configure_trigger_digital()` - - `configure_trigger_edge()` - - `configure_trigger_hysteresis()` - - `configure_trigger_software()` - - `configure_trigger_video()` - - `configure_trigger_window()` - - `fetch()` - - `fetch_measurement_stats()` - - `read()` + `configure_trigger_digital()` + `configure_trigger_edge()` + `configure_trigger_hysteresis()` + `configure_trigger_software()` + `configure_trigger_video()` + `configure_trigger_window()` + `fetch()` + `fetch_measurement_stats()` + `read()` - Removed - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - - `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` - - `BoolEnableDisableChan` - `CHANNEL_ENABLED` - - `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` - - `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` - - `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` + `BoolEnableDisableChan` - `CHANNEL_ENABLED` + `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` + `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` + `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + #### [niscope] 0.6.0 - 2017-12-20 - Added - - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - `fetch_into` for high-performance fetch using numpy.array. Supported element types: - - `numpy.float64` - - `numpy.int8` - - `numpy.int16` - - `numpy.int32` +`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`fetch_into` for high-performance fetch using numpy.array. Supported element types: +`numpy.float64` +`numpy.int8` +`numpy.int16` +`numpy.int32` - Changed - - Added default values for timeout on all fetch and read functions. - - Property input_impedance no longer uses enum InputImpedance. +Added default values for timeout on all fetch and read functions. +Property input_impedance no longer uses enum InputImpedance. - Removed - - `AddWaveformProcessing` - See #667 for rationale - - `ClearWaveformProcessing` - See #667 for rationale - - `FetchArrayMeasurement` - See #667 for rationale +`AddWaveformProcessing` - See #667 for rationale +`ClearWaveformProcessing` - See #667 for rationale +`FetchArrayMeasurement` - See #667 for rationale + #### [niscope] 0.5.0 - 2017-11-27 - Added - - Initial release +Initial release - Removed - - enum definitions that are not referenced by a function and/or an attributes - - Removed Peer to Peer attributes +enum definitions that are not referenced by a function and/or an attributes +Removed Peer to Peer attributes + #### [niscope] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +Simplified examples by removing try/except +SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines #### [niscope] 0.3.0 - 2017-10-13 - Added - - Support for ViInt64 (64-bit integers) +Support for ViInt64 (64-bit integers) - Changed - - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - - ```python - - # Sets sequence on channels 0 through 3 - - session['0-3'].set_sequence(values, source_delays) - - ``` - - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [niscope] 0.2.0 - 2017-09-20 - Added - - Suport for channel-based properties +Suport for channel-based properties - Changed - - Warnings no longer raise an exception - - Warnings are now added to warnings.warn() +Warnings no longer raise an exception +Warnings are now added to warnings.warn() ### niswitch (NI-SWITCH) @@ -1997,9 +1898,11 @@ - Removed - Support for Python 3.7 + #### [niswitch] 1.4.5 - 2023-06-12 - Added - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + - Removed - `easy_install` support @@ -2015,6 +1918,7 @@ - MeasurementLink support - Changed - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page + - Removed - Support for Python 3.6 @@ -2034,6 +1938,8 @@ - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + #### [niswitch] 1.3.0 - 2020-05-21 - Changed - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -2042,10 +1948,11 @@ #### [niswitch] 1.2.1 - 2020-04-21 - Added - Support for chained repeated capabilities. This allows things like - - ``` python - - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` #### [niswitch] 1.2.0 - 2020-03-06 - Added @@ -2065,6 +1972,8 @@ - Fix #1140: Linux support was accidentally broken. - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + #### [niswitch] 1.1.4 - 2019-11-19 - Added - Support for Python 3.8 @@ -2073,12 +1982,12 @@ #### [niswitch] 1.1.3 - 2019-10-21 - Changed - The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha + version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + version < 1.0 and version >= 0.5 - Beta + version < 0.5 - Alpha - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [niswitch] 1.1.2 - 2019-06-06 @@ -2126,117 +2035,88 @@ - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` + `engine_major_version` + `engine_minor_version` + `engine_revision` + `primary_error` + `secondary_error` + `error_elaboration` + `io_session_type` + `io_session` / `visa_rm_session` + `group_capabilities` + `interchange_check` + `range_check` + `record_coercions` + `specific_driver_class_spec_major_version` + `specific_driver_class_spec_minor_version` + `query_instrument_status` + `cache` + `specific_driver_prefix` #### [niswitch] 0.8.0 - 2018-04-27 - Changed - All exceptions raised by the Python bindings inherit from `.Error` - Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver + This encapsulates any error that is returned by the underlying driver - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) #### [niswitch] 0.7.0 - 2018-02-20 - Changed - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - - `configure_scan_trigger()` - - `wait_for_debounce()` - - `wait_for_scan_complete()` + `configure_scan_trigger()` + `wait_for_debounce()` + `wait_for_scan_complete()` #### [niswitch] 0.6.0 - 2017-12-20 - Added - - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - Removed - - Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). +Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). #### [niswitch] 0.5.0 - 2017-11-27 - Removed - - enum definitions that are not referenced by a function and/or an attributes +enum definitions that are not referenced by a function and/or an attributes #### [niswitch] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +Simplified examples by removing try/except +SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - Removed - - Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. +Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. #### [niswitch] 0.3.0 - 2017-10-13 - Added - - Support for ViInt64 (64-bit integers) +Support for ViInt64 (64-bit integers) - Changed - - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - - ```python - - # Sets sequence on channels 0 through 3 - - session['0-3'].set_sequence(values, source_delays) - - ``` - - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - - Added default values to some parameters. +Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Added default values to some parameters. - Removed - - Removed methods that aren’t useful in the Python bindings. +Removed methods that aren’t useful in the Python bindings. #### [niswitch] 0.2.0 - 2017-09-20 - Added - - Suport for channel-based properties - - Initial release +Suport for channel-based properties +Initial release + - Changed - - Warnings no longer raise an exception - - Warnings are now added to warnings.warn() +Warnings no longer raise an exception +Warnings are now added to warnings.warn() ### nitclk (NI-TCLK) -- [1.4.9 - 2025-02-26](#nitclk-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nitclk-148---2024-04-26) -- [1.4.6 - 2023-09-11](#nitclk-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nitclk-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nitclk-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nitclk-143---2022-12-16) -- [1.4.1 - 2021-08-23](#nitclk-141---2021-08-23) -- [1.3.3 - 2021-02-26](#nitclk-133---2021-02-26) -- [1.3.2 - 2020-09-18](#nitclk-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nitclk-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nitclk-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nitclk-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nitclk-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nitclk-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nitclk-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nitclk-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nitclk-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nitclk-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nitclk-101---2018-10-17) -- [1.0.0 - 2018-06-08](#nitclk-100---2018-06-08) -- [0.9.0 - 2018-05-22](#nitclk-090---2018-05-22) -- [0.8.0 - 2018-04-27](#nitclk-080---2018-04-27) -- [0.7.0 - 2018-02-20](#nitclk-070---2018-02-20) -- [0.6.0 - 2017-12-20](#nitclk-060---2017-12-20) -- [0.5.0 - 2017-11-27](#nitclk-050---2017-11-27) -- [0.4.0 - 2017-11-07](#nitclk-040---2017-11-07) -- [0.3.0 - 2017-10-13](#nitclk-030---2017-10-13) -- [0.2.0 - 2017-09-20](#nitclk-020---2017-09-20) -- [0.1.0 - 2017-09-01](#nitclk-010---2017-09-01) - #### [nitclk] 1.4.9 - 2025-02-26 - Added - Support for Python 3.13 @@ -2256,6 +2136,7 @@ - Removed - Support for Python 3.7 + #### [nitclk] 1.4.5 - 2023-06-12 - Removed - `easy_install` support @@ -2284,6 +2165,8 @@ - Removed - nitclk_configure.py as it did not do anything. + + #### [nitclk] 1.3.2 - 2020-09-18 - Changed - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. @@ -2294,6 +2177,8 @@ - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + #### [nitclk] 1.3.0 - 2020-05-21 - Changed - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -2302,13 +2187,16 @@ #### [nitclk] 1.2.1 - 2020-04-21 - Added - Support for chained repeated capabilities. This allows things like - - ``` python - - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - Changed - Version updated to 1.2.1 to match other released nimi-python modules + + #### [nitclk] 1.2.0 - 2020-03-06 - Added - Zip file per driver for all examples and any helper files @@ -2325,11 +2213,15 @@ - Ability to pass an integer as a session / session reference - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) + + #### [nitclk] 1.1.5 - 2019-11-22 - Changed - Fix #1140: Linux support was accidentally broken. - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + #### [nitclk] 1.1.4 - 2019-11-19 - Added - Support for Python 3.8 @@ -2338,14 +2230,16 @@ #### [nitclk] 1.1.3 - 2019-10-21 - Added - Initial support + + - Changed - The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha + version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + version < 1.0 and version >= 0.5 - Beta + version < 0.5 - Alpha - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [nitclk] 1.1.2 - 2019-06-06 @@ -2381,96 +2275,78 @@ - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` + `engine_major_version` + `engine_minor_version` + `engine_revision` + `primary_error` + `secondary_error` + `error_elaboration` + `io_session_type` + `io_session` / `visa_rm_session` + `group_capabilities` + `interchange_check` + `range_check` + `record_coercions` + `specific_driver_class_spec_major_version` + `specific_driver_class_spec_minor_version` + `query_instrument_status` + `cache` + `specific_driver_prefix` #### [nitclk] 0.8.0 - 2018-04-27 - Changed - All exceptions raised by the Python bindings inherit from `.Error` - Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver + This encapsulates any error that is returned by the underlying driver - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) #### [nitclk] 0.7.0 - 2018-02-20 - Changed - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion #### [nitclk] 0.6.0 - 2017-12-20 - Added - - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). #### [nitclk] 0.5.0 - 2017-11-27 - Removed - - enum definitions that are not referenced by a function and/or an attributes +enum definitions that are not referenced by a function and/or an attributes #### [nitclk] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +Simplified examples by removing try/except +SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines #### [nitclk] 0.3.0 - 2017-10-13 - Added - - Support for ViInt64 (64-bit integers) +Support for ViInt64 (64-bit integers) - Changed - - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - - ```python - - # Sets sequence on channels 0 through 3 - - session['0-3'].set_sequence(values, source_delays) - - ``` - - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [nitclk] 0.2.0 - 2017-09-20 - Added - - Suport for channel-based properties +Suport for channel-based properties - Changed - - Warnings no longer raise an exception - - Warnings are now added to warnings.warn() +Warnings no longer raise an exception +Warnings are now added to warnings.warn() #### [nitclk] 0.1.0 - 2017-09-01 - Removed - - --> +--> ### nise (NI-SE) -- [1.4.9 - 2025-02-26](#nise-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nise-148---2024-04-26) -- [1.4.6 - 2023-09-11](#nise-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nise-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nise-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nise-143---2022-12-16) -- [1.4.1 - 2021-08-23](#nise-141---2021-08-23) -- [1.3.2 - 2020-09-18](#nise-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nise-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nise-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nise-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nise-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nise-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nise-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nise-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nise-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nise-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nise-101---2018-10-17) #### [nise] 1.4.9 - 2025-02-26 - Added @@ -2491,6 +2367,7 @@ - Removed - Support for Python 3.7 + #### [nise] 1.4.5 - 2023-06-12 - Removed - `easy_install` support @@ -2523,6 +2400,8 @@ - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + #### [nise] 1.3.0 - 2020-05-21 - Changed - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -2531,10 +2410,11 @@ #### [nise] 1.2.1 - 2020-04-21 - Added - Support for chained repeated capabilities. This allows things like - - ``` python - - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` #### [nise] 1.2.0 - 2020-03-06 - Added @@ -2554,6 +2434,8 @@ - Fix #1140: Linux support was accidentally broken. - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + #### [nise] 1.1.4 - 2019-11-19 - Added - Support for Python 3.8 @@ -2561,15 +2443,17 @@ - Changed - Version updated to 1.1.4 to match other released nimi-python modules + + #### [nise] 1.1.3 - 2019-10-21 - Changed - The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha + version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + version < 1.0 and version >= 0.5 - Beta + version < 0.5 - Alpha - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - Update to 1.0 - now ready for production use @@ -2589,6 +2473,8 @@ - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - Initial Release + + - Changed - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) @@ -2607,103 +2493,75 @@ - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` + `engine_major_version` + `engine_minor_version` + `engine_revision` + `primary_error` + `secondary_error` + `error_elaboration` + `io_session_type` + `io_session` / `visa_rm_session` + `group_capabilities` + `interchange_check` + `range_check` + `record_coercions` + `specific_driver_class_spec_major_version` + `specific_driver_class_spec_minor_version` + `query_instrument_status` + `cache` + `specific_driver_prefix` #### [nise] 0.8.0 - 2018-04-27 - Changed - All exceptions raised by the Python bindings inherit from `.Error` - Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver + This encapsulates any error that is returned by the underlying driver - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) #### [nise] 0.7.0 - 2018-02-20 - Changed - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion #### [nise] 0.6.0 - 2017-12-20 - Added - - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). #### [nise] 0.5.0 - 2017-11-27 - Removed - - enum definitions that are not referenced by a function and/or an attributes +enum definitions that are not referenced by a function and/or an attributes #### [nise] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +Simplified examples by removing try/except +SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines #### [nise] 0.3.0 - 2017-10-13 - Added - - Support for ViInt64 (64-bit integers) +Support for ViInt64 (64-bit integers) - Changed - - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - - ```python - - # Sets sequence on channels 0 through 3 - - session['0-3'].set_sequence(values, source_delays) - - ``` - - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [nise] 0.2.0 - 2017-09-20 - Added - - Suport for channel-based properties +Suport for channel-based properties - Changed - - Warnings no longer raise an exception - - Warnings are now added to warnings.warn() +Warnings no longer raise an exception +Warnings are now added to warnings.warn() ### nimodinst (NI-MODINST) -- [1.4.9 - 2025-02-26](#nimodinst-149---2025-02-26) -- [1.4.8 - 2024-04-26](#nimodinst-148---2024-04-26) -- [1.4.6 - 2023-09-11](#nimodinst-146---2023-09-11) -- [1.4.5 - 2023-06-12](#nimodinst-145---2023-06-12) -- [1.4.4 - 2023-04-14](#nimodinst-144---2023-04-14) -- [1.4.3 - 2022-12-16](#nimodinst-143---2022-12-16) -- [1.4.1 - 2021-08-23](#nimodinst-141---2021-08-23) -- [1.3.2 - 2020-09-18](#nimodinst-132---2020-09-18) -- [1.3.1 - 2020-06-08](#nimodinst-131---2020-06-08) -- [1.3.0 - 2020-05-21](#nimodinst-130---2020-05-21) -- [1.2.1 - 2020-04-21](#nimodinst-121---2020-04-21) -- [1.2.0 - 2020-03-06](#nimodinst-120---2020-03-06) -- [1.1.5 - 2019-11-22](#nimodinst-115---2019-11-22) -- [1.1.4 - 2019-11-19](#nimodinst-114---2019-11-19) -- [1.1.3 - 2019-10-21](#nimodinst-113---2019-10-21) -- [1.1.2 - 2019-06-06](#nimodinst-112---2019-06-06) -- [1.1.0 - 2018-10-25](#nimodinst-110---2018-10-25) -- [1.0.1 - 2018-10-17](#nimodinst-101---2018-10-17) -- [1.0.0 - 2018-06-08](#nimodinst-100---2018-06-08) -- [0.9.0 - 2018-05-22](#nimodinst-090---2018-05-22) -- [0.8.0 - 2018-04-27](#nimodinst-080---2018-04-27) -- [0.7.0 - 2018-02-20](#nimodinst-070---2018-02-20) -- [0.6.0 - 2017-12-20](#nimodinst-060---2017-12-20) -- [0.5.0 - 2017-11-27](#nimodinst-050---2017-11-27) -- [0.4.0 - 2017-11-07](#nimodinst-040---2017-11-07) -- [0.3.0 - 2017-10-13](#nimodinst-030---2017-10-13) -- [0.2.0 - 2017-09-20](#nimodinst-020---2017-09-20) - #### [nimodinst] 1.4.9 - 2025-02-26 - Added - Support for Python 3.13 @@ -2723,6 +2581,7 @@ - Removed - Support for Python 3.7 + #### [nimodinst] 1.4.5 - 2023-06-12 - Removed - `easy_install` support @@ -2755,6 +2614,8 @@ - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + #### [nimodinst] 1.3.0 - 2020-05-21 - Changed - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -2763,10 +2624,11 @@ #### [nimodinst] 1.2.1 - 2020-04-21 - Added - Support for chained repeated capabilities. This allows things like - - ``` python - - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` #### [nimodinst] 1.2.0 - 2020-03-06 - Added @@ -2786,6 +2648,8 @@ - Fix #1140: Linux support was accidentally broken. - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + #### [nimodinst] 1.1.4 - 2019-11-19 - Added - Support for Python 3.8 @@ -2794,12 +2658,12 @@ #### [nimodinst] 1.1.3 - 2019-10-21 - Changed - The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha + version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + version < 1.0 and version >= 0.5 - Beta + version < 0.5 - Alpha - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [nimodinst] 1.1.2 - 2019-06-06 @@ -2836,92 +2700,92 @@ - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Indexing on `nimodinst.Session` is no longer allowed - - `session[0].device_name` becomes `session.devices[0].device_name` - - This is to be consistent with other drivers + `session[0].device_name` becomes `session.devices[0].device_name` + This is to be consistent with other drivers + - Removed - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` + `engine_major_version` + `engine_minor_version` + `engine_revision` + `primary_error` + `secondary_error` + `error_elaboration` + `io_session_type` + `io_session` / `visa_rm_session` + `group_capabilities` + `interchange_check` + `range_check` + `record_coercions` + `specific_driver_class_spec_major_version` + `specific_driver_class_spec_minor_version` + `query_instrument_status` + `cache` + `specific_driver_prefix` #### [nimodinst] 0.8.0 - 2018-04-27 - Changed - All exceptions raised by the Python bindings inherit from `.Error` - Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver + This encapsulates any error that is returned by the underlying driver - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) #### [nimodinst] 0.7.0 - 2018-02-20 - Changed - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion #### [nimodinst] 0.6.0 - 2017-12-20 - Added - - `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). #### [nimodinst] 0.5.0 - 2017-11-27 - Removed - - enum definitions that are not referenced by a function and/or an attributes +enum definitions that are not referenced by a function and/or an attributes #### [nimodinst] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +Simplified examples by removing try/except +SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines #### [nimodinst] 0.3.0 - 2017-10-13 - Added - - Support for ViInt64 (64-bit integers) +Support for ViInt64 (64-bit integers) - Changed - - Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - - ```python - - # Sets sequence on channels 0 through 3 - - session['0-3'].set_sequence(values, source_delays) - - ``` - - Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [nimodinst] 0.2.0 - 2017-09-20 - Added - - Suport for channel-based properties +Suport for channel-based properties - Changed - - Warnings no longer raise an exception - - Warnings are now added to warnings.warn() - - Device index is now on session not attribute. The correct way is now - - ```python - - i = 0 - - with nimodinst.Session('nidmm') as session: - - name = session[i].device_name - - ``` +Warnings no longer raise an exception +Warnings are now added to warnings.warn() +Device index is now on session not attribute. The correct way is now +```python +i = 0 +with nimodinst.Session('nidmm') as session: +name = session[i].device_name +``` #### [nimodinst] 0.1.0 - 2017-09-01 - Added - - Initial release - +Initial release - The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). - - `Function.TWO_WIRE_RES` + `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + +#### [nidmm] 0.7.0 - 2018-02-20 +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + (Common) Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: + `configure_multi_point()` + `configure_trigger()` + `fetch()` + `fetch_multi_point()` + `fetch_waveform()` + `read()` + `read_multi_point()` + `read_waveform()` + - The following functions return a `datetime.datetime()` object representing the date and time + `get_cal_date_and_time()` + - Metadata updated to NI-DMM 17.5 +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + `DCBias` - `DC_BIAS` + `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` + +#### [nidmm] 0.6.0 - 2017-12-20 +- Added +(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`fetch_waveform_into` for high-performance fetch using numpy.array of float64. +- Changed +Property powerline_freq no longer uses enum PowerlineFrequency. +Property current_source no longer uses enum CurrentSource. +Property input_resistance no longer uses enum InputResistance. +Removed `actual_number_of_points` from `fetch_waveform()` returned tuple +Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple +Removed `actual_number_of_points` from `read_multi_point()` returned tuple +Removed `actual_number_of_points` from `read_waveform()` returned tuple + +#### [nidmm] 0.5.0 - 2017-11-27 +- Added +`get_ext_cal_recommended_interval` +- Removed +(Common) enum definitions that are not referenced by a function and/or an attributes + +#### [nidmm] 0.4.0 - 2017-11-07 +- Changed +(Common) Simplified examples by removing try/except +(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines +Removed incorrect leading underscore from some enum values: +`Function.AC_VOLTS_DC_COUPLED` +`Function.WAVEFORM_CURRENT` +`MeasurementCompleteDest.LBR_TRIG_0` +`OperationMode.IVIDMM_MODE` +`SampleTrigger.EXTERNAL` +`SampleTrigger.TTL_3` +`TriggerSource.TTL_0` +`TriggerSource.TTL_3` +`TriggerSource.TTL_7` +`TriggerSource.PXI_STAR` + +#### [nidmm] 0.3.0 - 2017-10-13 +- Added +(Common) Support for ViInt64 (64-bit integers) +- Changed +(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Added default values to some parameters. +- Removed +Removed methods that aren’t useful in the Python bindings. + +#### [nidmm] 0.2.0 - 2017-09-20 +- Added +(Common) Suport for channel-based properties +- Changed +(Common) Warnings no longer raise an exception +(Common) Warnings are now added to warnings.warn() +Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) + +#### [nidmm] 0.1.0 - 2017-09-01 +- Added +Initial release + +### nifgen (NI-FGEN) + +- [nifgen (Unreleased)](#nifgen-unreleased) +- [1.4.9](#nifgen-149---2025-02-26) +- [1.4.8](#nifgen-148---2024-04-26) +- [1.4.6](#nifgen-146---2023-09-11) +- [1.4.5](#nifgen-145---2023-06-12) +- [1.4.4](#nifgen-144---2023-04-14) +- [1.4.3](#nifgen-143---2022-12-16) +- [1.4.2](#nifgen-142---2022-08-03) +- [1.4.1](#nifgen-141---2021-08-23) +- [1.3.3](#nifgen-133---2021-02-26) +- [1.3.2](#nifgen-132---2020-09-18) +- [1.3.1](#nifgen-131---2020-06-08) +- [1.3.0](#nifgen-130---2020-05-21) +- [1.2.1](#nifgen-121---2020-04-21) +- [1.2.0](#nifgen-120---2020-03-06) +- [1.1.5](#nifgen-115---2019-11-22) +- [1.1.4](#nifgen-114---2019-11-19) +- [1.1.3](#nifgen-113---2019-10-21) +- [1.1.2](#nifgen-112---2019-06-06) +- [1.1.0](#nifgen-110---2018-10-25) +- [1.0.1](#nifgen-101---2018-10-17) +- [1.0.0](#nifgen-100---2018-06-08) +- [0.9.0](#nifgen-090---2018-05-22) +- [0.8.0](#nifgen-080---2018-04-27) +- [0.7.0](#nifgen-070---2018-02-20) +- [0.6.0](#nifgen-060---2017-12-20) +- [0.5.0](#nifgen-050---2017-11-27) +- [0.4.0](#nifgen-040---2017-11-07) + +#### [nifgen] Unreleased +- Added +- Changed +- Removed + +#### [nifgen] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nifgen] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + - Properties added: + `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - Enum added: + `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + + +#### [nifgen] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + + +#### [nifgen] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - (Common) `easy_install` support + +#### [nifgen] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nifgen] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Removed + - (Common) Support for Python 3.6 + +#### [nifgen] 1.4.2 - 2022-08-03 +- Added + - `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) +- Changed + - Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities +`channels` +`markers` +`data_markers` +`script_triggers` + - Corrected multiple mistakes in repeated capability info of attribute metadata + alters API behavior (repeated capability access of attributes) and documentation + + + +#### [nifgen] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [nifgen] 1.3.3 - 2021-02-26 +- Added + - nifgen_trigger.py example to demonstrate pulling a trigger from another device. + +#### [nifgen] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nifgen] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + +#### [nifgen] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nifgen] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nifgen] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 + - `nifgen.Session.import_attribute_configuration_file()` + - `nifgen.Session.import_attribute_configuration_buffer()` + - `nifgen.Session.export_attribute_configuration_file()` + - `nifgen.Session.export_attribute_configuration_buffer()` + - `nifgen.Session.get_channel_name()` +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` + See documentation on how to call this function + Calling the previous way will log a DeprecationWarning to the warning subsystem + [#1300](https://github.com/ni/nimi-python/issues/1300) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nifgen] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + + +#### [nifgen] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nifgen] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + (Common) version >= 1.0 + - (Common) .devN or .aN - Alpha + - (Common) .bN, .cN or .rcN - Beta + - (Common) \ or .postN - Stable + (Common) version < 1.0 and version >= 0.5 - Beta + (Common) version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. +- Removed + - `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) + +#### [nifgen] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + - Enum values for `HardwareState` were incorrect - fix to match niFgen.h + +#### [nifgen] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nifgen] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nifgen] 1.0.0 - 2018-06-08 +- Changed + - `num_channels` attribute renamed to `channel_count` - now consistent with other drivers + - `send_software_edge_trigger()` no longer takes any parameters. + To send a start software trigger, call it on the session directly: +``` python +session.send_software_edge_trigger() +``` + To send a script software trigger, call it on the script triggers container: +``` python +session.script_triggers[1].send_software_edge_trigger() +``` +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` + `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` + `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` + - Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) + +#### [nifgen] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. + `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` + `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` + - Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) + `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` + `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + (Common) `engine_major_version` + (Common) `engine_minor_version` + (Common) `engine_revision` + (Common) `primary_error` + (Common) `secondary_error` + (Common) `error_elaboration` + (Common) `io_session_type` + (Common) `io_session` / `visa_rm_session` + (Common) `group_capabilities` + (Common) `interchange_check` + (Common) `range_check` + (Common) `record_coercions` + (Common) `specific_driver_class_spec_major_version` + (Common) `specific_driver_class_spec_minor_version` + (Common) `query_instrument_status` + (Common) `cache` + (Common) `specific_driver_prefix` + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) - `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) - `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) @@ -757,10 +1345,10 @@ session.script_triggers[1].send_software_edge_trigger() #### [nifgen] 0.8.0 - 2018-04-27 - Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + (Common) This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - Removed @@ -769,14 +1357,14 @@ session.script_triggers[1].send_software_edge_trigger() #### [nifgen] 0.7.0 - 2018-02-20 - Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + (Common) Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: `channel` repeated capability `markers` repeated capability @@ -790,7 +1378,7 @@ session.script_triggers[1].send_software_edge_trigger() #### [nifgen] 0.6.0 - 2017-12-20 - Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) Support for calling `write_waveform` with a waveform handle (int) or a name (str). Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) @@ -804,7 +1392,7 @@ Renamed `create_waveform_f64` -> `create_waveform` #### [nifgen] 0.5.0 - 2017-11-27 - Removed -enum definitions that are not referenced by a function and/or an attributes +(Common) enum definitions that are not referenced by a function and/or an attributes `adjust_sample_clock_relative_delay` #### [nifgen] 0.4.0 - 2017-11-07 @@ -812,780 +1400,478 @@ enum definitions that are not referenced by a function and/or an attributes Initial release - Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +(Common) Simplified examples by removing try/except +(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines #### [nifgen] 0.3.0 - 2017-10-13 - Added -Support for ViInt64 (64-bit integers) +(Common) Support for ViInt64 (64-bit integers) - Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: ```python # Sets sequence on channels 0 through 3 session['0-3'].set_sequence(values, source_delays) ``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [nifgen] 0.2.0 - 2017-09-20 - Added -Suport for channel-based properties +(Common) Suport for channel-based properties - Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() +(Common) Warnings no longer raise an exception +(Common) Warnings are now added to warnings.warn() -### nidigital (NI-DIGITAL) +### nimodinst (NI-MODINST) -#### [nidigital] 1.4.9 - 2025-02-26 +- [nimodinst (Unreleased)](#nimodinst-unreleased) +- [1.4.9](#nimodinst-149---2025-02-26) +- [1.4.8](#nimodinst-148---2024-04-26) +- [1.4.6](#nimodinst-146---2023-09-11) +- [1.4.5](#nimodinst-145---2023-06-12) +- [1.4.4](#nimodinst-144---2023-04-14) +- [1.4.3](#nimodinst-143---2022-12-16) +- [1.4.1](#nimodinst-141---2021-08-23) +- [1.3.2](#nimodinst-132---2020-09-18) +- [1.3.1](#nimodinst-131---2020-06-08) +- [1.3.0](#nimodinst-130---2020-05-21) +- [1.2.1](#nimodinst-121---2020-04-21) +- [1.2.0](#nimodinst-120---2020-03-06) +- [1.1.5](#nimodinst-115---2019-11-22) +- [1.1.4](#nimodinst-114---2019-11-19) +- [1.1.3](#nimodinst-113---2019-10-21) +- [1.1.2](#nimodinst-112---2019-06-06) +- [1.1.0](#nimodinst-110---2018-10-25) +- [1.0.1](#nimodinst-101---2018-10-17) +- [1.0.0](#nimodinst-100---2018-06-08) +- [0.9.0](#nimodinst-090---2018-05-22) +- [0.8.0](#nimodinst-080---2018-04-27) +- [0.7.0](#nimodinst-070---2018-02-20) +- [0.6.0](#nimodinst-060---2017-12-20) +- [0.5.0](#nimodinst-050---2017-11-27) +- [0.4.0](#nimodinst-040---2017-11-07) +- [0.3.0](#nimodinst-030---2017-10-13) +- [0.2.0](#nimodinst-020---2017-09-20) + +#### [nimodinst] Unreleased - Added - - Support for Python 3.13 - - Methods Added: - `enable_match_fail_combination` +- Changed +- Removed +#### [nimodinst] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 - Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - Removed - - Support for Python 3.8 + - (Common) Support for Python 3.8 -#### [nidigital] 1.4.8 - 2024-04-26 +#### [nimodinst] 1.4.8 - 2024-04-26 - Added - - Support for Python 3.12 + - (Common) Support for Python 3.12 -#### [nidigital] 1.4.6 - 2023-09-11 +#### [nimodinst] 1.4.6 - 2023-09-11 - Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - Removed - - Support for Python 3.7 + - (Common) Support for Python 3.7 -#### [nidigital] 1.4.5 - 2023-06-12 -- Added - - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +#### [nimodinst] 1.4.5 - 2023-06-12 - Removed - - `easy_install` support + - (Common) `easy_install` support -#### [nidigital] 1.4.4 - 2023-04-14 +#### [nimodinst] 1.4.4 - 2023-04-14 - Added - - Support for Python 3.11 + - (Common) Support for Python 3.11 - Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - - Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. -#### [nidigital] 1.4.3 - 2022-12-16 +#### [nimodinst] 1.4.3 - 2022-12-16 - Added - - Support for Python 3.10 - - MeasurementLink support + - (Common) Support for Python 3.10 - Removed - - Support for Python 3.6 + - (Common) Support for Python 3.6 -#### [nidigital] 1.4.1 - 2021-08-23 +#### [nimodinst] 1.4.1 - 2021-08-23 - Added - - Support for Python 3.9 - - API parity with NI-Digital Pattern Driver 21.0.0. - Properties added: - - `digital_edge_rio_trigger_edge` - - `digital_edge_rio_trigger_source` - - `exported_rio_event_output_terminal` - - `rio_event_terminal_name` - - `rio_trigger_terminal_name` - - `rio_trigger_type` - Repeated Capabilities added: - - `rio_events` - - `rio_triggers` - - + - (Common) Support for Python 3.9 - Removed - - Support for Python 3.5 - -#### [nidigital] 1.3.3 - 2021-02-26 -- Added - - 1.0.0 release: - API reference documentation and API usage examples - - API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: - `frequency_counter_measurement_mode` - `frequency_counter_hysteresis_enabled` + - (Common) Support for Python 3.5 -#### [nidigital] 1.3.2 - 2020-09-18 +#### [nimodinst] 1.3.2 - 2020-09-18 - Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -#### [nidigital] 1.3.1 - 2020-06-08 +#### [nimodinst] 1.3.1 - 2020-06-08 - Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 -#### [nidigital] 1.3.0 - 2020-05-21 -- Added - - 0.9.0 release: - Public API is considered complete, stable, and tested - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 - API reference documentation and example code are not complete +#### [nimodinst] 1.3.0 - 2020-05-21 - Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - - Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) - - Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) - - Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -#### [nidigital] 1.2.1 - 2020-04-21 +#### [nimodinst] 1.2.1 - 2020-04-21 - Added - - Support for chained repeated capabilities. This allows things like + - (Common) Support for chained repeated capabilities. This allows things like ``` python session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - - `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) - - Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) - - `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - - `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) -- Changed - - Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) - - `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) - - `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) - - Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): - Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. - Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. - Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. - - Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) - - Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) - - Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - - In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) -- Removed - - `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) - - `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) - - `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) - - `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) - - `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) - - `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) - - `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) -#### [nidigital] 1.2.0 - 2020-03-06 +#### [nimodinst] 1.2.0 - 2020-03-06 - Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 - - `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 - Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types - - sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) - - `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) - - Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - - Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) - - Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) - - Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` - was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -#### [nidigital] 1.1.5 - 2019-11-22 +#### [nimodinst] 1.1.5 - 2019-11-22 - Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. -#### [nidigital] 1.1.4 - 2019-11-19 +#### [nimodinst] 1.1.4 - 2019-11-19 - Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs - - `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } - - `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } - - `pins` is now a valid repeated capability + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nimodinst] 1.1.3 - 2019-10-21 - Changed - - Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) - - Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) - - Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` - - `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` + - (Common) The development status in `setup.py` will be based on the module version: + (Common) version >= 1.0 + - (Common) .devN or .aN - Alpha + - (Common) .bN, .cN or .rcN - Beta + - (Common) \ or .postN - Stable + (Common) version < 1.0 and version >= 0.5 - Beta + (Common) version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. -#### [nidigital] 1.1.3 - 2019-10-21 +#### [nimodinst] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + +#### [nimodinst] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nimodinst] 1.0.1 - 2018-10-17 - Added - - Initial support - - Very basic at this point and subject to change - - Looking for any testing and/or feedback - - `get_channel_name_from_string()` -- Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - - New enums: - -| Enum name | Where used | -|----------------------------|----------------------------------------------------------------------------------| -| `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | -| `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | -| `PPMUOutputFunction` | `ppmu_output_function` | -| `SelectedFunction` | `selected_function` | -| `TDREndpointTermination` | `tdr_endpoint_termination` | -| `Signal` | `export_signal(signal)` | - - [Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. - -- Removed - - Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, - `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, - `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` - - Need to determine how to generate this function - `fetch_capture_waveform_u32()` - -#### [nidigital] 1.1.2 - 2019-06-06 -- Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata - -#### [nidigital] 1.1.0 - 2018-10-25 -- Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [nidigital] 1.0.1 - 2018-10-17 -- Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [nidigital] 1.0.0 - 2018-06-08 -- Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - -#### [nidigital] 0.9.0 - 2018-05-22 -- Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) -- Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` - -#### [nidigital] 0.8.0 - 2018-04-27 -- Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -#### [nidigital] 0.7.0 - 2018-02-20 -- Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nimodinst] 1.0.0 - 2018-06-08 +- Changed + - Double close will now allow NI-ModInst to return error +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +#### [nimodinst] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - Indexing on `nimodinst.Session` is no longer allowed + `session[0].device_name` becomes `session.devices[0].device_name` + This is to be consistent with other drivers + +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + (Common) `engine_major_version` + (Common) `engine_minor_version` + (Common) `engine_revision` + (Common) `primary_error` + (Common) `secondary_error` + (Common) `error_elaboration` + (Common) `io_session_type` + (Common) `io_session` / `visa_rm_session` + (Common) `group_capabilities` + (Common) `interchange_check` + (Common) `range_check` + (Common) `record_coercions` + (Common) `specific_driver_class_spec_major_version` + (Common) `specific_driver_class_spec_minor_version` + (Common) `query_instrument_status` + (Common) `cache` + (Common) `specific_driver_prefix` + +#### [nimodinst] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + (Common) This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [nimodinst] 0.7.0 - 2018-02-20 +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + (Common) Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion -#### [nidigital] 0.6.0 - 2017-12-20 +#### [nimodinst] 0.6.0 - 2017-12-20 - Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -#### [nidigital] 0.5.0 - 2017-11-27 +#### [nimodinst] 0.5.0 - 2017-11-27 - Removed -enum definitions that are not referenced by a function and/or an attributes +(Common) enum definitions that are not referenced by a function and/or an attributes -#### [nidigital] 0.4.0 - 2017-11-07 +#### [nimodinst] 0.4.0 - 2017-11-07 - Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +(Common) Simplified examples by removing try/except +(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines -#### [nidigital] 0.3.0 - 2017-10-13 +#### [nimodinst] 0.3.0 - 2017-10-13 - Added -Support for ViInt64 (64-bit integers) +(Common) Support for ViInt64 (64-bit integers) - Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: ```python # Sets sequence on channels 0 through 3 session['0-3'].set_sequence(values, source_delays) ``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -#### [nidigital] 0.2.0 - 2017-09-20 +#### [nimodinst] 0.2.0 - 2017-09-20 - Added -Suport for channel-based properties +(Common) Suport for channel-based properties - Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() +(Common) Warnings no longer raise an exception +(Common) Warnings are now added to warnings.warn() +Device index is now on session not attribute. The correct way is now +```python +i = 0 +with nimodinst.Session('nidmm') as session: +name = session[i].device_name +``` -### nidmm (NI-DMM) +#### [nimodinst] 0.1.0 - 2017-09-01 +- Added +Initial release -#### [nidmm] 1.4.9 - 2025-02-26 +### niscope (NI-SCOPE) + +- [niscope (Unreleased)](#niscope-unreleased) +- [1.4.9](#niscope-149---2025-02-26) +- [1.4.8](#niscope-148---2024-04-26) +- [1.4.6](#niscope-146---2023-09-11) +- [1.4.5](#niscope-145---2023-06-12) +- [1.4.4](#niscope-144---2023-04-14) +- [1.4.3](#niscope-143---2022-12-16) +- [1.4.1](#niscope-141---2021-08-23) +- [1.3.2](#niscope-132---2020-09-18) +- [1.3.1](#niscope-131---2020-06-08) +- [1.3.0](#niscope-130---2020-05-21) +- [1.2.1](#niscope-121---2020-04-21) +- [1.2.0](#niscope-120---2020-03-06) +- [1.1.5](#niscope-115---2019-11-22) +- [1.1.4](#niscope-114---2019-11-19) +- [1.1.3](#niscope-113---2019-10-21) +- [1.1.2](#niscope-112---2019-06-06) +- [1.1.0](#niscope-110---2018-10-25) +- [1.0.1](#niscope-101---2018-10-17) +- [1.0.0](#niscope-100---2018-06-08) +- [0.9.0](#niscope-090---2018-05-22) +- [0.8.0](#niscope-080---2018-04-27) +- [0.7.0](#niscope-070---2018-02-20) +- [0.6.0](#niscope-060---2017-12-20) +- [0.5.0](#niscope-050---2017-11-27) + +#### [niscope] Unreleased - Added - - Support for Python 3.13 - Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - Removed - - Support for Python 3.8 -#### [nidmm] 1.4.8 - 2024-04-26 +#### [niscope] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [niscope] 1.4.8 - 2024-04-26 - Added - - Support for Python 3.12 + - (Common) Support for Python 3.12 -#### [nidmm] 1.4.6 - 2023-09-11 +#### [niscope] 1.4.6 - 2023-09-11 - Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - Removed - - Support for Python 3.7 + - (Common) Support for Python 3.7 -#### [nidmm] 1.4.5 - 2023-06-12 +#### [niscope] 1.4.5 - 2023-06-12 - Added + - `get_channel_names()` - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Changed + - Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. - Removed - - `easy_install` support + - (Common) `easy_install` support -#### [nidmm] 1.4.4 - 2023-04-14 +#### [niscope] 1.4.4 - 2023-04-14 - Added - - Support for Python 3.11 + - (Common) Support for Python 3.11 - Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. + Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. -#### [nidmm] 1.4.3 - 2022-12-16 + +#### [niscope] 1.4.3 - 2022-12-16 - Added - - Support for Python 3.10 + - (Common) Support for Python 3.10 - MeasurementLink support - Removed - - Support for Python 3.6 + - (Common) Support for Python 3.6 -#### [nidmm] 1.4.1 - 2021-08-23 +#### [niscope] 1.4.1 - 2021-08-23 - Added - - Support for Python 3.9 + - (Common) Support for Python 3.9 - Removed - - Support for Python 3.5 + - (Common) Support for Python 3.5 -#### [nidmm] 1.3.2 - 2020-09-18 +#### [niscope] 1.3.2 - 2020-09-18 +- Added + - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) + `get_ext_cal_last_date_and_time` + `get_ext_cal_last_temp` + `get_self_cal_last_date_and_time` + `get_self_cal_last_temp` + - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) + `add_waveform_processing` + `clear_waveform_measurement_stats` + `clear_waveform_processing` + `fetch_array_measurement` + `fetch_measurement_stats` + - Measurement library properties. + `meas_array_gain` + `meas_array_offset` + `meas_chan_high_ref_level` + `meas_chan_low_ref_level` + `meas_chan_mid_ref_level` + `meas_filter_center_freq` + `meas_filter_cutoff_freq` + `meas_filter_order` + `meas_filter_ripple` + `meas_filter_taps` + `meas_filter_transient_waveform_percent` + `meas_filter_type` + `meas_filter_width` + `meas_fir_filter_window` + `meas_high_ref` + `meas_low_ref` + `meas_mid_ref` + `meas_hysteresis_percent` + `meas_interpolation_sampling_factor` + `meas_last_acq_histogram_size` + `meas_other_channel` + `meas_percentage_method` + `meas_polynomial_interpolation_order` + `meas_ref_level_units` + `meas_time_histogram_high_time` + `meas_time_histogram_high_volts` + `meas_time_histogram_low_time` + `meas_time_hisogram_low_volts` + `meas_time_histogram_size` + `meas_voltage_histogram_high_volts` + `meas_voltage_histogram_low_volts` + `meas_voltage_histogram_size` - Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods + - Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero -#### [nidmm] 1.3.1 - 2020-06-08 + + +#### [niscope] 1.3.1 - 2020-06-08 - Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 -#### [nidmm] 1.3.0 - 2020-05-21 +#### [niscope] 1.3.0 - 2020-05-21 +- Added + - API parity with NI-SCOPE 20.0 by adding the following properties: + `Session.end_of_acquisition_event_terminal_name` + `Session.end_of_record_event_terminal_name` + `Session.advance_trigger_terminal_name` + `Session.ref_trigger_terminal_name` + `Session.start_trigger_terminal_name` + `Session.ready_for_advance_event_terminal_name` + `Session.ready_for_ref_event_terminal_name` + `Session.ready_for_start_event_terminal_name` + + - Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -#### [nidmm] 1.2.1 - 2020-04-21 +#### [niscope] 1.2.1 - 2020-04-21 - Added - - Support for chained repeated capabilities. This allows things like + - (Common) Support for chained repeated capabilities. This allows things like ``` python session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` -#### [nidmm] 1.2.0 - 2020-03-06 +#### [niscope] 1.2.0 - 2020-03-06 - Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 - Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -#### [nidmm] 1.1.5 - 2019-11-22 +#### [niscope] 1.1.5 - 2019-11-22 - Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. -#### [nidmm] 1.1.4 - 2019-11-19 +#### [niscope] 1.1.4 - 2019-11-19 - Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs - -#### [nidmm] 1.1.3 - 2019-10-21 -- Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -#### [nidmm] 1.1.2 - 2019-06-06 -- Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata - -#### [nidmm] 1.1.0 - 2018-10-25 -- Added - - import_attribute_configuration_file function - - export_attribute_configuration_file function - - import_attribute_configuration_buffer function - - import_attribute_configuration_buffer function -- Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [nidmm] 1.0.1 - 2018-10-17 -- Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [nidmm] 1.0.0 - 2018-06-08 -- Changed - - Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` -- Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - - `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) - - `latency` - [#875](https://github.com/ni/nimi-python/issues/875) - - `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) - - `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - - `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - - `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - -#### [nidmm] 0.9.0 - 2018-05-22 -- Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) -- Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` - -#### [nidmm] 0.8.0 - 2018-04-27 -- Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - - Enum values that start with an underscore + digit have been renamed - `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - -#### [nidmm] 0.7.0 - 2018-02-20 -- Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - `configure_multi_point()` - `configure_trigger()` - `fetch()` - `fetch_multi_point()` - `fetch_waveform()` - `read()` - `read_multi_point()` - `read_waveform()` - - The following functions return a `datetime.datetime()` object representing the date and time - `get_cal_date_and_time()` - - Metadata updated to NI-DMM 17.5 -- Removed - - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - `DCBias` - `DC_BIAS` - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` - -#### [nidmm] 0.6.0 - 2017-12-20 -- Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -`fetch_waveform_into` for high-performance fetch using numpy.array of float64. -- Changed -Property powerline_freq no longer uses enum PowerlineFrequency. -Property current_source no longer uses enum CurrentSource. -Property input_resistance no longer uses enum InputResistance. -Removed `actual_number_of_points` from `fetch_waveform()` returned tuple -Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple -Removed `actual_number_of_points` from `read_multi_point()` returned tuple -Removed `actual_number_of_points` from `read_waveform()` returned tuple - -#### [nidmm] 0.5.0 - 2017-11-27 -- Added -`get_ext_cal_recommended_interval` -- Removed -enum definitions that are not referenced by a function and/or an attributes - -#### [nidmm] 0.4.0 - 2017-11-07 -- Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines -Removed incorrect leading underscore from some enum values: -`Function.AC_VOLTS_DC_COUPLED` -`Function.WAVEFORM_CURRENT` -`MeasurementCompleteDest.LBR_TRIG_0` -`OperationMode.IVIDMM_MODE` -`SampleTrigger.EXTERNAL` -`SampleTrigger.TTL_3` -`TriggerSource.TTL_0` -`TriggerSource.TTL_3` -`TriggerSource.TTL_7` -`TriggerSource.PXI_STAR` - -#### [nidmm] 0.3.0 - 2017-10-13 -- Added -Support for ViInt64 (64-bit integers) -- Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -Added default values to some parameters. -- Removed -Removed methods that aren’t useful in the Python bindings. - -#### [nidmm] 0.2.0 - 2017-09-20 -- Added -Suport for channel-based properties -- Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() -Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) - -#### [nidmm] 0.1.0 - 2017-09-01 -- Added -Initial release - -### niscope (NI-SCOPE) - -#### [niscope] 1.4.9 - 2025-02-26 -- Added - - Support for Python 3.13 -- Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - Support for Python 3.8 - -#### [niscope] 1.4.8 - 2024-04-26 -- Added - - Support for Python 3.12 - -#### [niscope] 1.4.6 - 2023-09-11 -- Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - Support for Python 3.7 - - -#### [niscope] 1.4.5 - 2023-06-12 -- Added - - `get_channel_names()` - - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -- Changed - - Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. -- Removed - - `easy_install` support - -#### [niscope] 1.4.4 - 2023-04-14 -- Added - - Support for Python 3.11 -- Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. - - -#### [niscope] 1.4.3 - 2022-12-16 -- Added - - Support for Python 3.10 - - MeasurementLink support -- Removed - - Support for Python 3.6 - -#### [niscope] 1.4.1 - 2021-08-23 -- Added - - Support for Python 3.9 -- Removed - - Support for Python 3.5 - -#### [niscope] 1.3.2 - 2020-09-18 -- Added - - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - `get_ext_cal_last_date_and_time` - `get_ext_cal_last_temp` - `get_self_cal_last_date_and_time` - `get_self_cal_last_temp` - - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - `add_waveform_processing` - `clear_waveform_measurement_stats` - `clear_waveform_processing` - `fetch_array_measurement` - `fetch_measurement_stats` - - Measurement library properties. - `meas_array_gain` - `meas_array_offset` - `meas_chan_high_ref_level` - `meas_chan_low_ref_level` - `meas_chan_mid_ref_level` - `meas_filter_center_freq` - `meas_filter_cutoff_freq` - `meas_filter_order` - `meas_filter_ripple` - `meas_filter_taps` - `meas_filter_transient_waveform_percent` - `meas_filter_type` - `meas_filter_width` - `meas_fir_filter_window` - `meas_high_ref` - `meas_low_ref` - `meas_mid_ref` - `meas_hysteresis_percent` - `meas_interpolation_sampling_factor` - `meas_last_acq_histogram_size` - `meas_other_channel` - `meas_percentage_method` - `meas_polynomial_interpolation_order` - `meas_ref_level_units` - `meas_time_histogram_high_time` - `meas_time_histogram_high_volts` - `meas_time_histogram_low_time` - `meas_time_hisogram_low_volts` - `meas_time_histogram_size` - `meas_voltage_histogram_high_volts` - `meas_voltage_histogram_low_volts` - `meas_voltage_histogram_size` -- Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - - Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods - - Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero - - - -#### [niscope] 1.3.1 - 2020-06-08 -- Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - - -#### [niscope] 1.3.0 - 2020-05-21 -- Added - - API parity with NI-SCOPE 20.0 by adding the following properties: - `Session.end_of_acquisition_event_terminal_name` - `Session.end_of_record_event_terminal_name` - `Session.advance_trigger_terminal_name` - `Session.ref_trigger_terminal_name` - `Session.start_trigger_terminal_name` - `Session.ready_for_advance_event_terminal_name` - `Session.ready_for_ref_event_terminal_name` - `Session.ready_for_start_event_terminal_name` - - -- Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [niscope] 1.2.1 - 2020-04-21 -- Added - - Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [niscope] 1.2.0 - 2020-03-06 -- Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 -- Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) -- Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [niscope] 1.1.5 - 2019-11-22 -- Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - - -#### [niscope] 1.1.4 - 2019-11-19 -- Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs #### [niscope] 1.1.3 - 2019-10-21 - Added @@ -1595,19 +1881,19 @@ Initial release - `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums - `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums - Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - (Common) The development status in `setup.py` will be based on the module version: + (Common) version >= 1.0 + - (Common) .devN or .aN - Alpha + - (Common) .bN, .cN or .rcN - Beta + - (Common) \ or .postN - Stable + (Common) version < 1.0 and version >= 0.5 - Beta + (Common) version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [niscope] 1.1.2 - 2019-06-06 - Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata - Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` @@ -1621,24 +1907,24 @@ Initial release - Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) #### [niscope] 1.0.1 - 2018-10-17 - Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - Format of output of wavefrom_info.__str__() #### [niscope] 1.0.0 - 2018-06-08 - Added - `niscope_fetch_forever.py` example - Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - Removed default value for `level` parameter on `configure_trigger_edge()` parameter list is now - ``` python @@ -1653,31 +1939,31 @@ Initial release #### [niscope] 0.9.0 - 2018-05-22 - Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) -- Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + (Common) `engine_major_version` + (Common) `engine_minor_version` + (Common) `engine_revision` + (Common) `primary_error` + (Common) `secondary_error` + (Common) `error_elaboration` + (Common) `io_session_type` + (Common) `io_session` / `visa_rm_session` + (Common) `group_capabilities` + (Common) `interchange_check` + (Common) `range_check` + (Common) `record_coercions` + (Common) `specific_driver_class_spec_major_version` + (Common) `specific_driver_class_spec_minor_version` + (Common) `query_instrument_status` + (Common) `cache` + (Common) `specific_driver_prefix` - Properties removed `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) @@ -1713,10 +1999,10 @@ Initial release #### [niscope] 0.8.0 - 2018-04-27 - Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + (Common) This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated Takes additional parameters that modify fetch behavior Add resulting record as part of the waveform info @@ -1801,14 +2087,14 @@ Initial release - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: `channel` repeated capability - Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + (Common) Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: `configure_trigger_digital()` @@ -1823,593 +2109,122 @@ Initial release - Removed - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` - `BoolEnableDisableChan` - `CHANNEL_ENABLED` - `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` - `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` - `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` - - -#### [niscope] 0.6.0 - 2017-12-20 -- Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -`fetch_into` for high-performance fetch using numpy.array. Supported element types: -`numpy.float64` -`numpy.int8` -`numpy.int16` -`numpy.int32` -- Changed -Added default values for timeout on all fetch and read functions. -Property input_impedance no longer uses enum InputImpedance. -- Removed -`AddWaveformProcessing` - See #667 for rationale -`ClearWaveformProcessing` - See #667 for rationale -`FetchArrayMeasurement` - See #667 for rationale - - -#### [niscope] 0.5.0 - 2017-11-27 -- Added -Initial release -- Removed -enum definitions that are not referenced by a function and/or an attributes -Removed Peer to Peer attributes - - -#### [niscope] 0.4.0 - 2017-11-07 -- Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - -#### [niscope] 0.3.0 - 2017-10-13 -- Added -Support for ViInt64 (64-bit integers) -- Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - -#### [niscope] 0.2.0 - 2017-09-20 -- Added -Suport for channel-based properties -- Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() - -### niswitch (NI-SWITCH) - -#### [niswitch] 1.4.9 - 2025-02-26 -- Added - - Support for Python 3.13 -- Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - Support for Python 3.8 - -#### [niswitch] 1.4.8 - 2024-04-26 -- Added - - Support for Python 3.12 - -#### [niswitch] 1.4.6 - 2023-09-11 -- Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - Support for Python 3.7 - - -#### [niswitch] 1.4.5 - 2023-06-12 -- Added - - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - -- Removed - - `easy_install` support - -#### [niswitch] 1.4.4 - 2023-04-14 -- Added - - Support for Python 3.11 -- Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [niswitch] 1.4.3 - 2022-12-16 -- Added - - Support for Python 3.10 - - MeasurementLink support -- Changed - - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page - -- Removed - - Support for Python 3.6 - -#### [niswitch] 1.4.1 - 2021-08-23 -- Added - - Support for Python 3.9 -- Removed - - Support for Python 3.5 - -#### [niswitch] 1.3.2 - 2020-09-18 -- Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [niswitch] 1.3.1 - 2020-06-08 -- Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - - -#### [niswitch] 1.3.0 - 2020-05-21 -- Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [niswitch] 1.2.1 - 2020-04-21 -- Added - - Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [niswitch] 1.2.0 - 2020-03-06 -- Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 -- Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) -- Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [niswitch] 1.1.5 - 2019-11-22 -- Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - - -#### [niswitch] 1.1.4 - 2019-11-19 -- Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs - -#### [niswitch] 1.1.3 - 2019-10-21 -- Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -#### [niswitch] 1.1.2 - 2019-06-06 -- Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata - -#### [niswitch] 1.1.0 - 2018-10-25 -- Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [niswitch] 1.0.1 - 2018-10-17 -- Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [niswitch] 1.0.0 - 2018-06-08 -- Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - - `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) - - `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) - - `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - - `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - - `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) - - `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) - - `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) - - `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) - -#### [niswitch] 0.9.0 - 2018-05-22 -- Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) -- Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` - -#### [niswitch] 0.8.0 - 2018-04-27 -- Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -#### [niswitch] 0.7.0 - 2018-02-20 -- Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - `configure_scan_trigger()` - `wait_for_debounce()` - `wait_for_scan_complete()` - -#### [niswitch] 0.6.0 - 2017-12-20 -- Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -- Removed -Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). - -#### [niswitch] 0.5.0 - 2017-11-27 -- Removed -enum definitions that are not referenced by a function and/or an attributes - -#### [niswitch] 0.4.0 - 2017-11-07 -- Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines -- Removed -Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. - -#### [niswitch] 0.3.0 - 2017-10-13 -- Added -Support for ViInt64 (64-bit integers) -- Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -Added default values to some parameters. -- Removed -Removed methods that aren’t useful in the Python bindings. - -#### [niswitch] 0.2.0 - 2017-09-20 -- Added -Suport for channel-based properties -Initial release - -- Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() - -### nitclk (NI-TCLK) - -#### [nitclk] 1.4.9 - 2025-02-26 -- Added - - Support for Python 3.13 -- Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - Support for Python 3.8 - -#### [nitclk] 1.4.8 - 2024-04-26 -- Added - - Support for Python 3.12 - -#### [nitclk] 1.4.6 - 2023-09-11 -- Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - Support for Python 3.7 - - -#### [nitclk] 1.4.5 - 2023-06-12 -- Removed - - `easy_install` support - -#### [nitclk] 1.4.4 - 2023-04-14 -- Added - - Support for Python 3.11 -- Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [nitclk] 1.4.3 - 2022-12-16 -- Added - - Support for Python 3.10 -- Removed - - Support for Python 3.6 - -#### [nitclk] 1.4.1 - 2021-08-23 -- Added - - Support for Python 3.9 -- Removed - - Support for Python 3.5 - -#### [nitclk] 1.3.3 - 2021-02-26 -- Added - - nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. -- Removed - - nitclk_configure.py as it did not do anything. - - - -#### [nitclk] 1.3.2 - 2020-09-18 -- Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [nitclk] 1.3.1 - 2020-06-08 -- Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - - -#### [nitclk] 1.3.0 - 2020-05-21 -- Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [nitclk] 1.2.1 - 2020-04-21 -- Added - - Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` -- Changed - - Version updated to 1.2.1 to match other released nimi-python modules - - - -#### [nitclk] 1.2.0 - 2020-03-06 -- Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 -- Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - - Method parameters and properties that are time based now take or return a `datetime.timedelta` object -- Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - - Ability to pass an integer as a session / session reference - - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) - - - -#### [nitclk] 1.1.5 - 2019-11-22 -- Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - - -#### [nitclk] 1.1.4 - 2019-11-19 -- Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs - -#### [nitclk] 1.1.3 - 2019-10-21 -- Added - - Initial support - - -- Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -#### [nitclk] 1.1.2 - 2019-06-06 -- Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata - -#### [nitclk] 1.1.0 - 2018-10-25 -- Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [nitclk] 1.0.1 - 2018-10-17 -- Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + `BoolEnableDisableChan` - `CHANNEL_ENABLED` + `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` + `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` + `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` -#### [nitclk] 1.0.0 - 2018-06-08 -- Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) -#### [nitclk] 0.9.0 - 2018-05-22 +#### [niscope] 0.6.0 - 2017-12-20 - Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable +(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +`fetch_into` for high-performance fetch using numpy.array. Supported element types: +`numpy.float64` +`numpy.int8` +`numpy.int16` +`numpy.int32` - Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +Added default values for timeout on all fetch and read functions. +Property input_impedance no longer uses enum InputImpedance. - Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` - -#### [nitclk] 0.8.0 - 2018-04-27 -- Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) +`AddWaveformProcessing` - See #667 for rationale +`ClearWaveformProcessing` - See #667 for rationale +`FetchArrayMeasurement` - See #667 for rationale -#### [nitclk] 0.7.0 - 2018-02-20 -- Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion -#### [nitclk] 0.6.0 - 2017-12-20 +#### [niscope] 0.5.0 - 2017-11-27 - Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - -#### [nitclk] 0.5.0 - 2017-11-27 -- Removed -enum definitions that are not referenced by a function and/or an attributes +Initial release -#### [nitclk] 0.4.0 - 2017-11-07 -- Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +### nise (NI-SE) -#### [nitclk] 0.3.0 - 2017-10-13 -- Added -Support for ViInt64 (64-bit integers) -- Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +- [nise (Unreleased)](#nise-unreleased) +- [1.4.9](#nise-149---2025-02-26) +- [1.4.8](#nise-148---2024-04-26) +- [1.4.6](#nise-146---2023-09-11) +- [1.4.5](#nise-145---2023-06-12) +- [1.4.4](#nise-144---2023-04-14) +- [1.4.3](#nise-143---2022-12-16) +- [1.4.1](#nise-141---2021-08-23) +- [1.3.2](#nise-132---2020-09-18) +- [1.3.1](#nise-131---2020-06-08) +- [1.3.0](#nise-130---2020-05-21) +- [1.2.1](#nise-121---2020-04-21) +- [1.2.0](#nise-120---2020-03-06) +- [1.1.5](#nise-115---2019-11-22) +- [1.1.4](#nise-114---2019-11-19) +- [1.1.3](#nise-113---2019-10-21) +- [1.1.2](#nise-112---2019-06-06) +- [1.1.0](#nise-110---2018-10-25) +- [1.0.1](#nise-101---2018-10-17) -#### [nitclk] 0.2.0 - 2017-09-20 +#### [nise] Unreleased - Added -Suport for channel-based properties - Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() - -#### [nitclk] 0.1.0 - 2017-09-01 - Removed ---> - -### nise (NI-SE) #### [nise] 1.4.9 - 2025-02-26 - Added - - Support for Python 3.13 + - (Common) Support for Python 3.13 - Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - Removed - - Support for Python 3.8 + - (Common) Support for Python 3.8 #### [nise] 1.4.8 - 2024-04-26 - Added - - Support for Python 3.12 + - (Common) Support for Python 3.12 #### [nise] 1.4.6 - 2023-09-11 - Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - Removed - - Support for Python 3.7 + - (Common) Support for Python 3.7 #### [nise] 1.4.5 - 2023-06-12 - Removed - - `easy_install` support + - (Common) `easy_install` support #### [nise] 1.4.4 - 2023-04-14 - Added - - Support for Python 3.11 + - (Common) Support for Python 3.11 - Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. #### [nise] 1.4.3 - 2022-12-16 - Added - - Support for Python 3.10 + - (Common) Support for Python 3.10 - Removed - - Support for Python 3.6 + - (Common) Support for Python 3.6 #### [nise] 1.4.1 - 2021-08-23 - Added - - Support for Python 3.9 + - (Common) Support for Python 3.9 - Removed - - Support for Python 3.5 + - (Common) Support for Python 3.5 #### [nise] 1.3.2 - 2020-09-18 - Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. #### [nise] 1.3.1 - 2020-06-08 - Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 #### [nise] 1.3.0 - 2020-05-21 - Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. #### [nise] 1.2.1 - 2020-04-21 - Added - - Support for chained repeated capabilities. This allows things like + - (Common) Support for chained repeated capabilities. This allows things like ``` python session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` @@ -2418,28 +2233,28 @@ Warnings are now added to warnings.warn() #### [nise] 1.2.0 - 2020-03-06 - Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 - Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) #### [nise] 1.1.5 - 2019-11-22 - Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. #### [nise] 1.1.4 - 2019-11-19 - Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs - Changed - Version updated to 1.1.4 to match other released nimi-python modules @@ -2447,345 +2262,441 @@ Warnings are now added to warnings.warn() #### [nise] 1.1.3 - 2019-10-21 - Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - (Common) The development status in `setup.py` will be based on the module version: + (Common) version >= 1.0 + - (Common) .devN or .aN - Alpha + - (Common) .bN, .cN or .rcN - Beta + - (Common) \ or .postN - Stable + (Common) version < 1.0 and version >= 0.5 - Beta + (Common) version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - Update to 1.0 - now ready for production use #### [nise] 1.1.2 - 2019-06-06 - Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata #### [nise] 1.1.0 - 2018-10-25 - Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) #### [nise] 1.0.1 - 2018-10-17 - Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - Initial Release +### niswitch (NI-SWITCH) +- [niswitch (Unreleased)](#niswitch-unreleased) +- [1.4.9](#niswitch-149---2025-02-26) +- [1.4.8](#niswitch-148---2024-04-26) +- [1.4.6](#niswitch-146---2023-09-11) +- [1.4.5](#niswitch-145---2023-06-12) +- [1.4.4](#niswitch-144---2023-04-14) +- [1.4.3](#niswitch-143---2022-12-16) +- [1.4.1](#niswitch-141---2021-08-23) +- [1.3.3](#niswitch-133---2021-02-26) +- [1.3.2](#niswitch-132---2020-09-18) +- [1.3.1](#niswitch-131---2020-06-08) +- [1.3.0](#niswitch-130---2020-05-21) +- [1.2.1](#niswitch-121---2020-04-21) +- [1.2.0](#niswitch-120---2020-03-06) +- [1.1.5](#niswitch-115---2019-11-22) +- [1.1.4](#niswitch-114---2019-11-19) +- [1.1.3](#niswitch-113---2019-10-21) +- [1.1.2](#niswitch-112---2019-06-06) +- [1.1.0](#niswitch-110---2018-10-25) +- [1.0.1](#niswitch-101---2018-10-17) +- [1.0.0](#niswitch-100---2018-06-08) +- [0.9.0](#niswitch-090---2018-05-22) +- [0.8.0](#niswitch-080---2018-04-27) +- [0.7.0](#niswitch-070---2018-02-20) +- [0.6.0](#niswitch-060---2017-12-20) +- [0.5.0](#niswitch-050---2017-11-27) +- [0.4.0](#niswitch-040---2017-11-07) +- [0.3.0](#niswitch-030---2017-10-13) +- [0.2.0](#niswitch-020---2017-09-20) + +#### [niswitch] Unreleased +- Added - Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [nise] 1.0.0 - 2018-06-08 - Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) -#### [nise] 0.9.0 - 2018-05-22 +#### [niswitch] 1.4.9 - 2025-02-26 - Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable + - (Common) Support for Python 3.13 - Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` + - (Common) Support for Python 3.8 -#### [nise] 0.8.0 - 2018-04-27 -- Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) +#### [niswitch] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 -#### [nise] 0.7.0 - 2018-02-20 +#### [niswitch] 1.4.6 - 2023-09-11 - Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + -#### [nise] 0.6.0 - 2017-12-20 +#### [niswitch] 1.4.5 - 2023-06-12 - Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -#### [nise] 0.5.0 - 2017-11-27 - Removed -enum definitions that are not referenced by a function and/or an attributes + - (Common) `easy_install` support -#### [nise] 0.4.0 - 2017-11-07 +#### [niswitch] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 - Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. -#### [nise] 0.3.0 - 2017-10-13 +#### [niswitch] 1.4.3 - 2022-12-16 - Added -Support for ViInt64 (64-bit integers) + - (Common) Support for Python 3.10 + - MeasurementLink support - Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page + +- Removed + - (Common) Support for Python 3.6 -#### [nise] 0.2.0 - 2017-09-20 +#### [niswitch] 1.4.1 - 2021-08-23 - Added -Suport for channel-based properties + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [niswitch] 1.3.2 - 2020-09-18 - Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -### nimodinst (NI-MODINST) +#### [niswitch] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 -#### [nimodinst] 1.4.9 - 2025-02-26 +#### [niswitch] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [niswitch] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [niswitch] 1.2.0 - 2020-03-06 - Added - - Support for Python 3.13 + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 - Changed - - Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - Removed - - Support for Python 3.8 + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -#### [nimodinst] 1.4.8 - 2024-04-26 +#### [niswitch] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [niswitch] 1.1.4 - 2019-11-19 - Added - - Support for Python 3.12 + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs -#### [nimodinst] 1.4.6 - 2023-09-11 +#### [niswitch] 1.1.3 - 2019-10-21 - Changed - - Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - Support for Python 3.7 + - (Common) The development status in `setup.py` will be based on the module version: + (Common) version >= 1.0 + - (Common) .devN or .aN - Alpha + - (Common) .bN, .cN or .rcN - Beta + - (Common) \ or .postN - Stable + (Common) version < 1.0 and version >= 0.5 - Beta + (Common) version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. +#### [niswitch] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata -#### [nimodinst] 1.4.5 - 2023-06-12 -- Removed - - `easy_install` support +#### [niswitch] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) -#### [nimodinst] 1.4.4 - 2023-04-14 +#### [niswitch] 1.0.1 - 2018-10-17 - Added - - Support for Python 3.11 + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - Changed - - Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) -#### [nimodinst] 1.4.3 - 2022-12-16 -- Added - - Support for Python 3.10 +#### [niswitch] 1.0.0 - 2018-06-08 - Removed - - Support for Python 3.6 + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) + - `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) + - `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + - `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + - `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) -#### [nimodinst] 1.4.1 - 2021-08-23 +#### [niswitch] 0.9.0 - 2018-05-22 - Added - - Support for Python 3.9 -- Removed - - Support for Python 3.5 + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + (Common) `engine_major_version` + (Common) `engine_minor_version` + (Common) `engine_revision` + (Common) `primary_error` + (Common) `secondary_error` + (Common) `error_elaboration` + (Common) `io_session_type` + (Common) `io_session` / `visa_rm_session` + (Common) `group_capabilities` + (Common) `interchange_check` + (Common) `range_check` + (Common) `record_coercions` + (Common) `specific_driver_class_spec_major_version` + (Common) `specific_driver_class_spec_minor_version` + (Common) `query_instrument_status` + (Common) `cache` + (Common) `specific_driver_prefix` -#### [nimodinst] 1.3.2 - 2020-09-18 +#### [niswitch] 0.8.0 - 2018-04-27 - Changed - - Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + (Common) This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) -#### [nimodinst] 1.3.1 - 2020-06-08 +#### [niswitch] 0.7.0 - 2018-02-20 - Changed - - Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + (Common) Key/Value pairs approporiate for desired behavior + - ``` python + - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + - ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + `configure_scan_trigger()` + `wait_for_debounce()` + `wait_for_scan_complete()` +#### [niswitch] 0.6.0 - 2017-12-20 +- Added +(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +- Removed +Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). +#### [niswitch] 0.5.0 - 2017-11-27 +- Removed +(Common) enum definitions that are not referenced by a function and/or an attributes -#### [nimodinst] 1.3.0 - 2020-05-21 +#### [niswitch] 0.4.0 - 2017-11-07 - Changed - - Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. +(Common) Simplified examples by removing try/except +(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines +- Removed +Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. -#### [nimodinst] 1.2.1 - 2020-04-21 +#### [niswitch] 0.3.0 - 2017-10-13 - Added - - Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` +(Common) Support for ViInt64 (64-bit integers) +- Changed +(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: +```python +# Sets sequence on channels 0 through 3 +session['0-3'].set_sequence(values, source_delays) +``` +(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +Added default values to some parameters. +- Removed +Removed methods that aren’t useful in the Python bindings. - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` +#### [niswitch] 0.2.0 - 2017-09-20 +- Added +Initial release -#### [nimodinst] 1.2.0 - 2020-03-06 +### nitclk (NI-TCLK) + +- [nitclk (Unreleased)](#nitclk-unreleased) +- [1.4.9](#nitclk-149---2025-02-26) +- [1.4.8](#nitclk-148---2024-04-26) +- [1.4.6](#nitclk-146---2023-09-11) +- [1.4.5](#nitclk-145---2023-06-12) +- [1.4.4](#nitclk-144---2023-04-14) +- [1.4.3](#nitclk-143---2022-12-16) +- [1.4.1](#nitclk-141---2021-08-23) +- [1.3.3](#nitclk-133---2021-02-26) +- [1.3.2](#nitclk-132---2020-09-18) +- [1.3.1](#nitclk-131---2020-06-08) +- [1.3.0](#nitclk-130---2020-05-21) +- [1.2.1](#nitclk-121---2020-04-21) +- [1.2.0](#nitclk-120---2020-03-06) +- [1.1.5](#nitclk-115---2019-11-22) +- [1.1.4](#nitclk-114---2019-11-19) +- [1.1.3](#nitclk-113---2019-10-21) + +#### [nitclk] Unreleased - Added - - Zip file per driver for all examples and any helper files - - Link to zip file on examples documentation - - Support for Python 3.8 - Changed - - `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - Removed - - Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -#### [nimodinst] 1.1.5 - 2019-11-22 +#### [nitclk] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 - Changed - - Fix #1140: Linux support was accidentally broken. - - Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 -#### [nimodinst] 1.1.4 - 2019-11-19 +#### [nitclk] 1.4.8 - 2024-04-26 - Added - - Support for Python 3.8 - - `ViUInt8` is now a valid type in APIs + - (Common) Support for Python 3.12 -#### [nimodinst] 1.1.3 - 2019-10-21 +#### [nitclk] 1.4.6 - 2023-09-11 - Changed - - The development status in `setup.py` will be based on the module version: - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - version < 1.0 and version >= 0.5 - Beta - version < 0.5 - Alpha - - Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 -#### [nimodinst] 1.1.2 - 2019-06-06 -- Changed - - Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - New internal process for generating metadata -#### [nimodinst] 1.1.0 - 2018-10-25 -- Changed - - Updated generated metadata - - Updated "Driver Version Tested Against" - - Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) +#### [nitclk] 1.4.5 - 2023-06-12 +- Removed + - (Common) `easy_install` support -#### [nimodinst] 1.0.1 - 2018-10-17 +#### [nitclk] 1.4.4 - 2023-04-14 - Added - - Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + - (Common) Support for Python 3.11 - Changed - - No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. -#### [nimodinst] 1.0.0 - 2018-06-08 -- Changed - - Double close will now allow NI-ModInst to return error +#### [nitclk] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 - Removed - - Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - (Common) Support for Python 3.6 -#### [nimodinst] 0.9.0 - 2018-05-22 +#### [nitclk] 1.4.1 - 2021-08-23 - Added - - Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - - Indexing on `nimodinst.Session` is no longer allowed - `session[0].device_name` becomes `session.devices[0].device_name` - This is to be consistent with other drivers + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 +#### [nitclk] 1.3.3 - 2021-02-26 +- Added + - nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. - Removed - - IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` - `engine_minor_version` - `engine_revision` - `primary_error` - `secondary_error` - `error_elaboration` - `io_session_type` - `io_session` / `visa_rm_session` - `group_capabilities` - `interchange_check` - `range_check` - `record_coercions` - `specific_driver_class_spec_major_version` - `specific_driver_class_spec_minor_version` - `query_instrument_status` - `cache` - `specific_driver_prefix` + - nitclk_configure.py as it did not do anything. -#### [nimodinst] 0.8.0 - 2018-04-27 -- Changed - - All exceptions raised by the Python bindings inherit from `.Error` - - Exception type formerly known as `.Error` is now known as `.DriverError` - This encapsulates any error that is returned by the underlying driver - - All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) -#### [nimodinst] 0.7.0 - 2018-02-20 + +#### [nitclk] 1.3.2 - 2020-09-18 - Changed - - Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` - - Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -#### [nimodinst] 0.6.0 - 2017-12-20 -- Added -`abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +#### [nitclk] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 -#### [nimodinst] 0.5.0 - 2017-11-27 -- Removed -enum definitions that are not referenced by a function and/or an attributes -#### [nimodinst] 0.4.0 - 2017-11-07 +#### [nitclk] 1.3.0 - 2020-05-21 - Changed -Simplified examples by removing try/except -SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -#### [nimodinst] 0.3.0 - 2017-10-13 +#### [nitclk] 1.2.1 - 2020-04-21 - Added -Support for ViInt64 (64-bit integers) + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - Changed -Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Version updated to 1.2.1 to match other released nimi-python modules -#### [nimodinst] 0.2.0 - 2017-09-20 + + +#### [nitclk] 1.2.0 - 2020-03-06 - Added -Suport for channel-based properties + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 - Changed -Warnings no longer raise an exception -Warnings are now added to warnings.warn() -Device index is now on session not attribute. The correct way is now -```python -i = 0 -with nimodinst.Session('nidmm') as session: -name = session[i].device_name -``` + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - Method parameters and properties that are time based now take or return a `datetime.timedelta` object +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - Ability to pass an integer as a session / session reference + - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) -#### [nimodinst] 0.1.0 - 2017-09-01 + + +#### [nitclk] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + + +#### [nitclk] 1.1.4 - 2019-11-19 - Added -Initial release + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nitclk] 1.1.3 - 2019-10-21 +- Added + - Initial support + + The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). \ No newline at end of file From 8202af19cd7d6e23b3f2ce5c9ffb073f60bfa334 Mon Sep 17 00:00:00 2001 From: dummy Date: Mon, 7 Apr 2025 13:17:47 +0530 Subject: [PATCH 06/32] ni Dc power to Test --- CHANGELOG.md | 473 ++++++++++++++++++++++++++------------------------- 1 file changed, 243 insertions(+), 230 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cc7bb901..bc6f3e8f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ #### [nidcpower] 1.4.7 - 2023-12-15 - Added - API parity with NI-DCPower 2023 Q4. + Properties added: - `current_level_rising_slew_rate` - `current_level_falling_slew_rate` @@ -80,8 +81,10 @@ - `conduction_voltage_off_threshold` - `output_cutoff_voltage_measure_limit_high` - `output_cutoff_voltage_measure_limit_low` + Enum added: - `ConductionVoltageMode` + Enum values added: - `E_LOAD` added to enum `InstrumentMode` - `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` @@ -104,6 +107,7 @@ - (Common) Support for Python 3.11 - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - API parity with NI-DCPower 2023 Q2. + Properties added: - `lcr_ac_dither_enabled` - `lcr_ac_electrical_cable_length_delay` @@ -117,22 +121,25 @@ - `sequence_iteration_complete_event_toggle_initial_state` - `source_complete_event_output_behavior` - `source_complete_event_toggle_initial_state` + Enums added: - `CurrentLimitBehavior` - `EventOutputBehavior` - `EventToggleInitialState` - `LCRDCBiasTransientResponse` + Enum values added: - `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` - `NI_STANDARD_0_5M` added to enum `CableLength` + Methods added: - `configure_lcr_compensation` - `get_lcr_compensation_data` - Changed - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - Enums reordered: - `AutoZero` - `CableLength` + - `AutoZero` + - `CableLength` #### [nidcpower] 1.4.3 - 2022-12-16 - Added @@ -146,6 +153,7 @@ #### [nidcpower] 1.4.2 - 2022-08-03 - Added - API parity with NI-DCPower 2022 Q3. + Properties added: - `aperture_time_auto_mode` - `autorange_maximum_delay_after_range_change` @@ -187,6 +195,7 @@ - `lcr_stimulus_function` - `lcr_voltage_amplitude` - `lcr_voltage_range` + Enums added: - `ApertureTimeAutoMode` - `CableLength` @@ -199,6 +208,7 @@ - `LCRReferenceValueType` - `LCRSourceDelayMode` - `LCRStimulusFunction` + Methods added: - `configure_lcr_custom_cable_compensation` - `fetch_multiple_lcr` @@ -210,6 +220,7 @@ - `perform_lcr_open_custom_cable_compensation` - `perform_lcr_short_compensation` - `perform_lcr_short_custom_cable_compensation` + Custom types added: - `LCRLoadCompensationSpot` - `LCRMeasurement` @@ -222,6 +233,7 @@ - Added - (Common) Support for Python 3.9 - API parity with NI-DCPower 21.0.0. + Properties added: - `output_cutoff_delay` - Removed @@ -232,6 +244,7 @@ - `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) - `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) - API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. + Properties added: - `output_cutoff_current_change_limit_high` - `output_cutoff_current_change_limit_low` @@ -243,6 +256,7 @@ - `output_cutoff_voltage_change_limit_low` - `output_cutoff_voltage_output_limit_high` - `output_cutoff_voltage_output_limit_low` + Methods added: - `clear_latched_output_cutoff_state` - `query_latched_output_cutoff_state` @@ -258,21 +272,21 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. #### [nidcpower] 1.3.3 - 2021-02-26 - Added - API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: - `merged_channels` - `digital_edge_shutdown_trigger_input_terminal` - `shutdown_trigger_type` + - `merged_channels` + - `digital_edge_shutdown_trigger_input_terminal` + - `shutdown_trigger_type` #### [nidcpower] 1.3.2 - 2020-09-18 - Added - API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: - `autorange` - `autorange_aperture_time_mode` - `autorange_behavior` - `autorange_minimum_aperture_time` - `autorange_minimum_aperture_time_units` - `autorange_minimum_current_range` - `autorange_minimum_voltage_range` - `autorange_threshold_mode` + - `autorange` + - `autorange_aperture_time_mode` + - `autorange_behavior` + - `autorange_minimum_aperture_time` + - `autorange_minimum_aperture_time_units` + - `autorange_minimum_current_range` + - `autorange_minimum_voltage_range` + - `autorange_threshold_mode` - Changed - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. @@ -340,12 +354,12 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. #### [nidcpower] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) @@ -377,17 +391,17 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. - Removed - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` - `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` - `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` - `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` + - `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` + - `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` + - `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` + - `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` + - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` - Remove polarity attributes for triggers that are PXI backplane only (only support rising edge) [#860](https://github.com/ni/nimi-python/issues/860) - `digital_edge_measure_trigger_edge` - `digital_edge_pulse_trigger_edge` - `digital_edge_sequence_advance_trigger_edge` - `digital_edge_source_trigger_edge` - `digital_edge_start_trigger_edge` + - `digital_edge_measure_trigger_edge` + - `digital_edge_pulse_trigger_edge` + - `digital_edge_sequence_advance_trigger_edge` + - `digital_edge_source_trigger_edge` + - `digital_edge_start_trigger_edge` #### [nidcpower] 0.9.0 - 2018-05-22 - Added @@ -399,23 +413,23 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - (Common) `engine_major_version` - (Common) `engine_minor_version` - (Common) `engine_revision` - (Common) `primary_error` - (Common) `secondary_error` - (Common) `error_elaboration` - (Common) `io_session_type` - (Common) `io_session` / `visa_rm_session` - (Common) `group_capabilities` - (Common) `interchange_check` - (Common) `range_check` - (Common) `record_coercions` - (Common) `specific_driver_class_spec_major_version` - (Common) `specific_driver_class_spec_minor_version` - (Common) `query_instrument_status` - (Common) `cache` - (Common) `specific_driver_prefix` + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) - `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) @@ -434,19 +448,19 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - Removed - Advanced Sequence functions - until [#504](https://github.com/ni/nimi-python/issues/504) can be fixed in a proper way - `create_advanced_sequence()` - `create_advanced_sequence_step()` - `delete_advanced_sequence()` + - `create_advanced_sequence()` + - `create_advanced_sequence_step()` + - `delete_advanced_sequence()` #### [nidcpower] 0.7.0 - 2018-02-20 - Added - `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - Changed - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - (Common) Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion @@ -466,37 +480,36 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. #### [nidcpower] 0.6.0 - 2017-12-20 - Added -(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - Changed Property power_line_frequency no longer uses enum PowerLineFrequency. Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidcpower] 0.5.0 - 2017-11-27 - Added -`get_ext_cal_last_date_and_time` -`get_ext_cal_last_temp` -`get_ext_cal_recommended_interval` -`measure_multiple` + - `get_ext_cal_last_date_and_time` + - `get_ext_cal_last_temp` + - `get_ext_cal_recommended_interval` + - `measure_multiple` - Removed -(Common) enum definitions that are not referenced by a function and/or an attributes + - (Common) enum definitions that are not referenced by a function and/or an attributes #### [nidcpower] 0.4.0 - 2017-11-07 - Added -New example `nidcpower_advanced_sequence.py` + - New example `nidcpower_advanced_sequence.py` - Changed -(Common) Simplified examples by removing try/except -(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines -Fixed method signature for: -`wait_for_event` -`create_sequence` -`create_advanced_sequence` + - (Common) Simplified examples by removing try/except + - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - Fixed method signature for: + - `wait_for_event` + - `create_sequence` + - `create_advanced_sequence` - Removed -Support for `measure_multiple` until issue #444 is addressed. + - Support for `measure_multiple` until issue #444 is addressed. #### [nidcpower] 0.3.0 - 2017-10-13 - Added -(Common) Support for ViInt64 (64-bit integers) -Initial release + - Initial release ### nidigital (NI-DIGITAL) @@ -834,12 +847,12 @@ Initial release #### [nidmm] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [nidmm] 1.1.2 - 2019-06-06 @@ -894,23 +907,23 @@ Initial release - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - (Common) `engine_major_version` - (Common) `engine_minor_version` - (Common) `engine_revision` - (Common) `primary_error` - (Common) `secondary_error` - (Common) `error_elaboration` - (Common) `io_session_type` - (Common) `io_session` / `visa_rm_session` - (Common) `group_capabilities` - (Common) `interchange_check` - (Common) `range_check` - (Common) `record_coercions` - (Common) `specific_driver_class_spec_major_version` - (Common) `specific_driver_class_spec_minor_version` - (Common) `query_instrument_status` - (Common) `cache` - (Common) `specific_driver_prefix` + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` #### [nidmm] 0.8.0 - 2018-04-27 - Changed @@ -931,10 +944,10 @@ Initial release #### [nidmm] 0.7.0 - 2018-02-20 - Changed - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - (Common) Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion @@ -958,7 +971,7 @@ Initial release #### [nidmm] 0.6.0 - 2017-12-20 - Added -(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). `fetch_waveform_into` for high-performance fetch using numpy.array of float64. - Changed Property powerline_freq no longer uses enum PowerlineFrequency. @@ -973,7 +986,7 @@ Removed `actual_number_of_points` from `read_waveform()` returned tuple - Added `get_ext_cal_recommended_interval` - Removed -(Common) enum definitions that are not referenced by a function and/or an attributes + - (Common) enum definitions that are not referenced by a function and/or an attributes #### [nidmm] 0.4.0 - 2017-11-07 - Changed @@ -1188,12 +1201,12 @@ Initial release #### [nifgen] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - Removed - `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) @@ -1254,23 +1267,23 @@ session.script_triggers[1].send_software_edge_trigger() `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - (Common) `engine_major_version` - (Common) `engine_minor_version` - (Common) `engine_revision` - (Common) `primary_error` - (Common) `secondary_error` - (Common) `error_elaboration` - (Common) `io_session_type` - (Common) `io_session` / `visa_rm_session` - (Common) `group_capabilities` - (Common) `interchange_check` - (Common) `range_check` - (Common) `record_coercions` - (Common) `specific_driver_class_spec_major_version` - (Common) `specific_driver_class_spec_minor_version` - (Common) `query_instrument_status` - (Common) `cache` - (Common) `specific_driver_prefix` + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) @@ -1358,10 +1371,10 @@ session.script_triggers[1].send_software_edge_trigger() #### [nifgen] 0.7.0 - 2018-02-20 - Changed - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - (Common) Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion @@ -1378,7 +1391,7 @@ session.script_triggers[1].send_software_edge_trigger() #### [nifgen] 0.6.0 - 2017-12-20 - Added -(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) Support for calling `write_waveform` with a waveform handle (int) or a name (str). Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) @@ -1392,8 +1405,8 @@ Renamed `create_waveform_f64` -> `create_waveform` #### [nifgen] 0.5.0 - 2017-11-27 - Removed -(Common) enum definitions that are not referenced by a function and/or an attributes -`adjust_sample_clock_relative_delay` + - (Common) enum definitions that are not referenced by a function and/or an attributes + - `adjust_sample_clock_relative_delay` #### [nifgen] 0.4.0 - 2017-11-07 - Added @@ -1553,12 +1566,12 @@ session['0-3'].set_sequence(values, source_delays) #### [nimodinst] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [nimodinst] 1.1.2 - 2019-06-06 @@ -1600,23 +1613,23 @@ session['0-3'].set_sequence(values, source_delays) - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - (Common) `engine_major_version` - (Common) `engine_minor_version` - (Common) `engine_revision` - (Common) `primary_error` - (Common) `secondary_error` - (Common) `error_elaboration` - (Common) `io_session_type` - (Common) `io_session` / `visa_rm_session` - (Common) `group_capabilities` - (Common) `interchange_check` - (Common) `range_check` - (Common) `record_coercions` - (Common) `specific_driver_class_spec_major_version` - (Common) `specific_driver_class_spec_minor_version` - (Common) `query_instrument_status` - (Common) `cache` - (Common) `specific_driver_prefix` + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` #### [nimodinst] 0.8.0 - 2018-04-27 - Changed @@ -1628,21 +1641,21 @@ session['0-3'].set_sequence(values, source_delays) #### [nimodinst] 0.7.0 - 2018-02-20 - Changed - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - (Common) Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion #### [nimodinst] 0.6.0 - 2017-12-20 - Added -(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). #### [nimodinst] 0.5.0 - 2017-11-27 - Removed -(Common) enum definitions that are not referenced by a function and/or an attributes + - (Common) enum definitions that are not referenced by a function and/or an attributes #### [nimodinst] 0.4.0 - 2017-11-07 - Changed @@ -1882,12 +1895,12 @@ Initial release - `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [niscope] 1.1.2 - 2019-06-06 @@ -1947,23 +1960,23 @@ Initial release - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - (Common) `engine_major_version` - (Common) `engine_minor_version` - (Common) `engine_revision` - (Common) `primary_error` - (Common) `secondary_error` - (Common) `error_elaboration` - (Common) `io_session_type` - (Common) `io_session` / `visa_rm_session` - (Common) `group_capabilities` - (Common) `interchange_check` - (Common) `range_check` - (Common) `record_coercions` - (Common) `specific_driver_class_spec_major_version` - (Common) `specific_driver_class_spec_minor_version` - (Common) `query_instrument_status` - (Common) `cache` - (Common) `specific_driver_prefix` + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` - Properties removed `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) @@ -2088,10 +2101,10 @@ Initial release `channel` repeated capability - Changed - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - (Common) Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion @@ -2117,19 +2130,19 @@ Initial release #### [niscope] 0.6.0 - 2017-12-20 - Added -(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -`fetch_into` for high-performance fetch using numpy.array. Supported element types: -`numpy.float64` -`numpy.int8` -`numpy.int16` -`numpy.int32` + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - `fetch_into` for high-performance fetch using numpy.array. Supported element types: + - `numpy.float64` + - `numpy.int8` + - `numpy.int16` + - `numpy.int32` - Changed -Added default values for timeout on all fetch and read functions. -Property input_impedance no longer uses enum InputImpedance. + - Added default values for timeout on all fetch and read functions. + - Property input_impedance no longer uses enum InputImpedance. - Removed -`AddWaveformProcessing` - See #667 for rationale -`ClearWaveformProcessing` - See #667 for rationale -`FetchArrayMeasurement` - See #667 for rationale + - `AddWaveformProcessing` - See #667 for rationale + - `ClearWaveformProcessing` - See #667 for rationale + - `FetchArrayMeasurement` - See #667 for rationale #### [niscope] 0.5.0 - 2017-11-27 @@ -2263,12 +2276,12 @@ Initial release #### [nise] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - Update to 1.0 - now ready for production use @@ -2423,12 +2436,12 @@ Initial release #### [niswitch] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - (Common) version >= 1.0 - - (Common) .devN or .aN - Alpha - - (Common) .bN, .cN or .rcN - Beta - - (Common) \ or .postN - Stable - (Common) version < 1.0 and version >= 0.5 - Beta - (Common) version < 0.5 - Alpha + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. #### [niswitch] 1.1.2 - 2019-06-06 @@ -2476,23 +2489,23 @@ Initial release - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - (Common) `engine_major_version` - (Common) `engine_minor_version` - (Common) `engine_revision` - (Common) `primary_error` - (Common) `secondary_error` - (Common) `error_elaboration` - (Common) `io_session_type` - (Common) `io_session` / `visa_rm_session` - (Common) `group_capabilities` - (Common) `interchange_check` - (Common) `range_check` - (Common) `record_coercions` - (Common) `specific_driver_class_spec_major_version` - (Common) `specific_driver_class_spec_minor_version` - (Common) `query_instrument_status` - (Common) `cache` - (Common) `specific_driver_prefix` + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` #### [niswitch] 0.8.0 - 2018-04-27 - Changed @@ -2504,10 +2517,10 @@ Initial release #### [niswitch] 0.7.0 - 2018-02-20 - Changed - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - (Common) Key/Value pairs approporiate for desired behavior - - ``` python - - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - - ``` + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion @@ -2518,13 +2531,13 @@ Initial release #### [niswitch] 0.6.0 - 2017-12-20 - Added -(Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - Removed Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). #### [niswitch] 0.5.0 - 2017-11-27 - Removed -(Common) enum definitions that are not referenced by a function and/or an attributes + - (Common) enum definitions that are not referenced by a function and/or an attributes #### [niswitch] 0.4.0 - 2017-11-07 - Changed From eaa0aaca612ee3998fdfb276784092029697029b Mon Sep 17 00:00:00 2001 From: dummy Date: Mon, 7 Apr 2025 14:09:13 +0530 Subject: [PATCH 07/32] Added for nidmm and digital --- CHANGELOG.md | 179 ++++++++++++++++++++++++++------------------------- 1 file changed, 91 insertions(+), 88 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc6f3e8f3..fa6b4aef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -511,7 +511,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - Initial release -### nidigital (NI-DIGITAL) +### nidigital (NI-Digital Pattern Driver) - [nidigital (Unreleased)](#nidigital-unreleased) - [1.4.9](#nidigital-149---2025-02-26) @@ -540,7 +540,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - (Common) Support for Python 3.13 - Methods Added: - `enable_match_fail_combination` + - `enable_match_fail_combination` - Changed - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) @@ -583,6 +583,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - (Common) Support for Python 3.9 - API parity with NI-Digital Pattern Driver 21.0.0. + Properties added: - `digital_edge_rio_trigger_edge` - `digital_edge_rio_trigger_source` @@ -590,6 +591,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `rio_event_terminal_name` - `rio_trigger_terminal_name` - `rio_trigger_type` + Repeated Capabilities added: - `rio_events` - `rio_triggers` @@ -601,10 +603,10 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidigital] 1.3.3 - 2021-02-26 - Added - 1.0.0 release: - API reference documentation and API usage examples + - API reference documentation and API usage examples - API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: - `frequency_counter_measurement_mode` - `frequency_counter_hysteresis_enabled` + - `frequency_counter_measurement_mode` + - `frequency_counter_hysteresis_enabled` #### [nidigital] 1.3.2 - 2020-09-18 - Changed @@ -621,9 +623,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidigital] 1.3.0 - 2020-05-21 - Added - 0.9.0 release: - Public API is considered complete, stable, and tested - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 - API reference documentation and example code are not complete + - Public API is considered complete, stable, and tested + - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 + - API reference documentation and example code are not complete - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. @@ -648,9 +650,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) - `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) - Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): - Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. - Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. - Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. + - Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. + - Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. + - Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. - Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) - Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) - Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) @@ -932,13 +934,13 @@ Removed `actual_count` from `fetch_multiple()` returned tuple (Common) This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - Enum values that start with an underscore + digit have been renamed - `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + - `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` + - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) #### [nidmm] 0.7.0 - 2018-02-20 @@ -953,78 +955,78 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - `configure_multi_point()` - `configure_trigger()` - `fetch()` - `fetch_multi_point()` - `fetch_waveform()` - `read()` - `read_multi_point()` - `read_waveform()` + - `configure_multi_point()` + - `configure_trigger()` + - `fetch()` + - `fetch_multi_point()` + - `fetch_waveform()` + - `read()` + - `read_multi_point()` + - `read_waveform()` - The following functions return a `datetime.datetime()` object representing the date and time - `get_cal_date_and_time()` + - `get_cal_date_and_time()` - Metadata updated to NI-DMM 17.5 - Removed - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - `DCBias` - `DC_BIAS` - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` + - `DCBias` - `DC_BIAS` + - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` #### [nidmm] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -`fetch_waveform_into` for high-performance fetch using numpy.array of float64. + - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. - Changed -Property powerline_freq no longer uses enum PowerlineFrequency. -Property current_source no longer uses enum CurrentSource. -Property input_resistance no longer uses enum InputResistance. -Removed `actual_number_of_points` from `fetch_waveform()` returned tuple -Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple -Removed `actual_number_of_points` from `read_multi_point()` returned tuple -Removed `actual_number_of_points` from `read_waveform()` returned tuple + - Property powerline_freq no longer uses enum PowerlineFrequency. + - Property current_source no longer uses enum CurrentSource. + - Property input_resistance no longer uses enum InputResistance. + - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple + - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_waveform()` returned tuple #### [nidmm] 0.5.0 - 2017-11-27 - Added -`get_ext_cal_recommended_interval` + - `get_ext_cal_recommended_interval` - Removed - (Common) enum definitions that are not referenced by a function and/or an attributes #### [nidmm] 0.4.0 - 2017-11-07 - Changed -(Common) Simplified examples by removing try/except -(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines -Removed incorrect leading underscore from some enum values: -`Function.AC_VOLTS_DC_COUPLED` -`Function.WAVEFORM_CURRENT` -`MeasurementCompleteDest.LBR_TRIG_0` -`OperationMode.IVIDMM_MODE` -`SampleTrigger.EXTERNAL` -`SampleTrigger.TTL_3` -`TriggerSource.TTL_0` -`TriggerSource.TTL_3` -`TriggerSource.TTL_7` -`TriggerSource.PXI_STAR` + - (Common) Simplified examples by removing try/except + - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - Removed incorrect leading underscore from some enum values: + - `Function.AC_VOLTS_DC_COUPLED` + - `Function.WAVEFORM_CURRENT` + - `MeasurementCompleteDest.LBR_TRIG_0` + - `OperationMode.IVIDMM_MODE` + - `SampleTrigger.EXTERNAL` + - `SampleTrigger.TTL_3` + - `TriggerSource.TTL_0` + - `TriggerSource.TTL_3` + - `TriggerSource.TTL_7` + - `TriggerSource.PXI_STAR` #### [nidmm] 0.3.0 - 2017-10-13 - Added -(Common) Support for ViInt64 (64-bit integers) + - (Common) Support for ViInt64 (64-bit integers) - Changed -(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -Added default values to some parameters. + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Added default values to some parameters. - Removed -Removed methods that aren’t useful in the Python bindings. + - Removed methods that aren’t useful in the Python bindings. #### [nidmm] 0.2.0 - 2017-09-20 - Added -(Common) Suport for channel-based properties + - (Common) Suport for channel-based properties - Changed -(Common) Warnings no longer raise an exception -(Common) Warnings are now added to warnings.warn() -Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) + - (Common) Warnings no longer raise an exception + - (Common) Warnings are now added to warnings.warn() + - Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) #### [nidmm] 0.1.0 - 2017-09-01 - Added @@ -1084,7 +1086,8 @@ Initial release `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - Enum added: + + Enum added: `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) @@ -1418,14 +1421,14 @@ Initial release #### [nifgen] 0.3.0 - 2017-10-13 - Added -(Common) Support for ViInt64 (64-bit integers) + - (Common) Support for ViInt64 (64-bit integers) - Changed -(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [nifgen] 0.2.0 - 2017-09-20 - Added @@ -1664,14 +1667,14 @@ session['0-3'].set_sequence(values, source_delays) #### [nimodinst] 0.3.0 - 2017-10-13 - Added -(Common) Support for ViInt64 (64-bit integers) + - (Common) Support for ViInt64 (64-bit integers) - Changed -(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste #### [nimodinst] 0.2.0 - 2017-09-20 - Added @@ -2548,17 +2551,17 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut #### [niswitch] 0.3.0 - 2017-10-13 - Added -(Common) Support for ViInt64 (64-bit integers) + - (Common) Support for ViInt64 (64-bit integers) - Changed -(Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: -```python -# Sets sequence on channels 0 through 3 -session['0-3'].set_sequence(values, source_delays) -``` -(Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -Added default values to some parameters. + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Added default values to some parameters. - Removed -Removed methods that aren’t useful in the Python bindings. + - Removed methods that aren’t useful in the Python bindings. #### [niswitch] 0.2.0 - 2017-09-20 - Added From e51142a957369a752644fc34fe1d5bb63e25d499 Mon Sep 17 00:00:00 2001 From: dummy Date: Mon, 7 Apr 2025 15:14:01 +0530 Subject: [PATCH 08/32] Fixed for all drviers --- CHANGELOG.md | 332 ++++++++++++++++++++++++--------------------------- 1 file changed, 154 insertions(+), 178 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa6b4aef2..5b0d847d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -439,7 +439,7 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. - Changed - (Common) All exceptions raised by the Python bindings inherit from `.Error` - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - (Common) This encapsulates any error that is returned by the underlying driver + - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) @@ -816,7 +816,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - (Common) Support for chained repeated capabilities. This allows things like ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` @@ -931,7 +931,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Changed - (Common) All exceptions raised by the Python bindings inherit from `.Error` - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - (Common) This encapsulates any error that is returned by the underlying driver + - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - Enum values that start with an underscore + digit have been renamed - `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` @@ -1080,15 +1080,15 @@ Initial release - Added - (Common) Support for Python 3.12 - Properties added: - `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) Enum added: - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) #### [nifgen] 1.4.6 - 2023-09-11 @@ -1123,15 +1123,13 @@ Initial release - `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) - Changed - Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities -`channels` -`markers` -`data_markers` -`script_triggers` + - `channels` + - `markers` + - `data_markers` + - `script_triggers` - Corrected multiple mistakes in repeated capability info of attribute metadata alters API behavior (repeated capability access of attributes) and documentation - - #### [nifgen] 1.4.1 - 2021-08-23 - Added - (Common) Support for Python 3.9 @@ -1181,9 +1179,9 @@ Initial release - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` - See documentation on how to call this function - Calling the previous way will log a DeprecationWarning to the warning subsystem - [#1300](https://github.com/ni/nimi-python/issues/1300) + - See documentation on how to call this function + - Calling the previous way will log a DeprecationWarning to the warning subsystem + - [#1300](https://github.com/ni/nimi-python/issues/1300) - Removed - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) @@ -1238,20 +1236,20 @@ Initial release - Changed - `num_channels` attribute renamed to `channel_count` - now consistent with other drivers - `send_software_edge_trigger()` no longer takes any parameters. - To send a start software trigger, call it on the session directly: -``` python -session.send_software_edge_trigger() -``` - To send a script software trigger, call it on the script triggers container: -``` python -session.script_triggers[1].send_software_edge_trigger() -``` + - To send a start software trigger, call it on the session directly: + ``` python + session.send_software_edge_trigger() + ``` + - To send a script software trigger, call it on the script triggers container: + ``` python + session.script_triggers[1].send_software_edge_trigger() + ``` - Removed - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` - `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` + - `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` + - `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` + - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` - Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) #### [nifgen] 0.9.0 - 2018-05-22 @@ -1263,11 +1261,11 @@ session.script_triggers[1].send_software_edge_trigger() - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. - `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` - `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` + - `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` + - `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` - Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) - `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` - `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` + - `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` + - `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - `engine_major_version` @@ -1363,7 +1361,7 @@ session.script_triggers[1].send_software_edge_trigger() - Changed - (Common) All exceptions raised by the Python bindings inherit from `.Error` - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - (Common) This encapsulates any error that is returned by the underlying driver + - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) @@ -1386,25 +1384,25 @@ session.script_triggers[1].send_software_edge_trigger() `markers` repeated capability `script_triggers` repeated capability - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - `adjust_sample_clock_relative_delay()` - `wait_until_done()` + - `adjust_sample_clock_relative_delay()` + - `wait_until_done()` - The following functions return a `datetime.datetime()` object representing the date and time - `get_ext_cal_last_date_and_time()` - `get_self_cal_last_date_and_time()` + - `get_ext_cal_last_date_and_time()` + - `get_self_cal_last_date_and_time()` #### [nifgen] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) -Support for calling `write_waveform` with a waveform handle (int) or a name (str). -Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) + - Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) + - Support for calling `write_waveform` with a waveform handle (int) or a name (str). + - Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) - Changed -Renamed `create_waveform_f64` -> `create_waveform` + - Renamed `create_waveform_f64` -> `create_waveform` - Removed -`create_waveform_i16` -`write_binary16_waveform`: Use `write_waveform` -`write_named_waveform_i16`: Use `write_waveform` -`write_named_waveform_f64`: Use `write_waveform` + - `create_waveform_i16` + - `write_binary16_waveform`: Use `write_waveform` + - `write_named_waveform_i16`: Use `write_waveform` + - `write_named_waveform_f64`: Use `write_waveform` #### [nifgen] 0.5.0 - 2017-11-27 - Removed @@ -1413,31 +1411,9 @@ Renamed `create_waveform_f64` -> `create_waveform` #### [nifgen] 0.4.0 - 2017-11-07 - Added -Initial release - -- Changed -(Common) Simplified examples by removing try/except -(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines - -#### [nifgen] 0.3.0 - 2017-10-13 -- Added - - (Common) Support for ViInt64 (64-bit integers) -- Changed - - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ``` python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - -#### [nifgen] 0.2.0 - 2017-09-20 -- Added -(Common) Suport for channel-based properties -- Changed -(Common) Warnings no longer raise an exception -(Common) Warnings are now added to warnings.warn() + - Initial release -### nimodinst (NI-MODINST) +### nimodinst (NI-ModInst) - [nimodinst (Unreleased)](#nimodinst-unreleased) - [1.4.9](#nimodinst-149---2025-02-26) @@ -1638,7 +1614,7 @@ Initial release - Changed - (Common) All exceptions raised by the Python bindings inherit from `.Error` - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - (Common) This encapsulates any error that is returned by the underlying driver + - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) #### [nimodinst] 0.7.0 - 2018-02-20 @@ -1662,8 +1638,8 @@ Initial release #### [nimodinst] 0.4.0 - 2017-11-07 - Changed -(Common) Simplified examples by removing try/except -(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - Simplified examples by removing try/except + - **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines #### [nimodinst] 0.3.0 - 2017-10-13 - Added @@ -1678,16 +1654,16 @@ Initial release #### [nimodinst] 0.2.0 - 2017-09-20 - Added -(Common) Suport for channel-based properties + - (Common) Suport for channel-based properties - Changed -(Common) Warnings no longer raise an exception -(Common) Warnings are now added to warnings.warn() -Device index is now on session not attribute. The correct way is now -```python -i = 0 -with nimodinst.Session('nidmm') as session: -name = session[i].device_name -``` + - (Common) Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + - Device index is now on session not attribute. The correct way is now + ``` python + i = 0 + with nimodinst.Session('nidmm') as session: + name = session[i].device_name + ``` #### [nimodinst] 0.1.0 - 2017-09-01 - Added @@ -1780,49 +1756,49 @@ Initial release #### [niscope] 1.3.2 - 2020-09-18 - Added - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - `get_ext_cal_last_date_and_time` - `get_ext_cal_last_temp` - `get_self_cal_last_date_and_time` - `get_self_cal_last_temp` + - `get_ext_cal_last_date_and_time` + - `get_ext_cal_last_temp` + - `get_self_cal_last_date_and_time` + - `get_self_cal_last_temp` - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - `add_waveform_processing` - `clear_waveform_measurement_stats` - `clear_waveform_processing` - `fetch_array_measurement` - `fetch_measurement_stats` + - `add_waveform_processing` + - `clear_waveform_measurement_stats` + - `clear_waveform_processing` + - `fetch_array_measurement` + - `fetch_measurement_stats` - Measurement library properties. - `meas_array_gain` - `meas_array_offset` - `meas_chan_high_ref_level` - `meas_chan_low_ref_level` - `meas_chan_mid_ref_level` - `meas_filter_center_freq` - `meas_filter_cutoff_freq` - `meas_filter_order` - `meas_filter_ripple` - `meas_filter_taps` - `meas_filter_transient_waveform_percent` - `meas_filter_type` - `meas_filter_width` - `meas_fir_filter_window` - `meas_high_ref` - `meas_low_ref` - `meas_mid_ref` - `meas_hysteresis_percent` - `meas_interpolation_sampling_factor` - `meas_last_acq_histogram_size` - `meas_other_channel` - `meas_percentage_method` - `meas_polynomial_interpolation_order` - `meas_ref_level_units` - `meas_time_histogram_high_time` - `meas_time_histogram_high_volts` - `meas_time_histogram_low_time` - `meas_time_hisogram_low_volts` - `meas_time_histogram_size` - `meas_voltage_histogram_high_volts` - `meas_voltage_histogram_low_volts` - `meas_voltage_histogram_size` + - `meas_array_gain` + - `meas_array_offset` + - `meas_chan_high_ref_level` + - `meas_chan_low_ref_level` + - `meas_chan_mid_ref_level` + - `meas_filter_center_freq` + - `meas_filter_cutoff_freq` + - `meas_filter_order` + - `meas_filter_ripple` + - `meas_filter_taps` + - `meas_filter_transient_waveform_percent` + - `meas_filter_type` + - `meas_filter_width` + - `meas_fir_filter_window` + - `meas_high_ref` + - `meas_low_ref` + - `meas_mid_ref` + - `meas_hysteresis_percent` + - `meas_interpolation_sampling_factor` + - `meas_last_acq_histogram_size` + - `meas_other_channel` + - `meas_percentage_method` + - `meas_polynomial_interpolation_order` + - `meas_ref_level_units` + - `meas_time_histogram_high_time` + - `meas_time_histogram_high_volts` + - `meas_time_histogram_low_time` + - `meas_time_hisogram_low_volts` + - `meas_time_histogram_size` + - `meas_voltage_histogram_high_volts` + - `meas_voltage_histogram_low_volts` + - `meas_voltage_histogram_size` - Changed - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. @@ -1841,14 +1817,14 @@ Initial release #### [niscope] 1.3.0 - 2020-05-21 - Added - API parity with NI-SCOPE 20.0 by adding the following properties: - `Session.end_of_acquisition_event_terminal_name` - `Session.end_of_record_event_terminal_name` - `Session.advance_trigger_terminal_name` - `Session.ref_trigger_terminal_name` - `Session.start_trigger_terminal_name` - `Session.ready_for_advance_event_terminal_name` - `Session.ready_for_ref_event_terminal_name` - `Session.ready_for_start_event_terminal_name` + - `Session.end_of_acquisition_event_terminal_name` + - `Session.end_of_record_event_terminal_name` + - `Session.advance_trigger_terminal_name` + - `Session.ref_trigger_terminal_name` + - `Session.start_trigger_terminal_name` + - `Session.ready_for_advance_event_terminal_name` + - `Session.ready_for_ref_event_terminal_name` + - `Session.ready_for_start_event_terminal_name` - Changed @@ -2017,7 +1993,7 @@ Initial release - Changed - (Common) All exceptions raised by the Python bindings inherit from `.Error` - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - (Common) This encapsulates any error that is returned by the underlying driver + - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated Takes additional parameters that modify fetch behavior @@ -2057,45 +2033,45 @@ Initial release `fetch_num_records` - Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - `actual_meas_wfm_size()` - `add_waveform_processing()` - `clear_waveform_processing()` - `fetch_array_measurement()` - `clear_waveform_measurement_stats()` - `fetch_measurement()` - `fetch_measurement_stats()` - `read_measurement()` - `configure_ref_levels()` - `meas_ref_level_units` - `meas_other_channel` - `meas_hysteresis_percent` - `meas_last_acq_histogram_size` - `meas_voltage_histogram_size` - `meas_voltage_histogram_low_volts` - `meas_voltage_histogram_high_volts` - `meas_time_histogram_size` - `meas_time_histogram_low_volts` - `meas_time_histogram_high_volts` - `meas_time_histogram_low_time` - `meas_time_histogram_high_time` - `meas_polynomial_interpolation_order` - `meas_interpolation_sampling_factor` - `meas_filter_cutoff_freq` - `meas_filter_center_freq` - `meas_filter_ripple` - `meas_filter_transient_waveform_percent` - `meas_filter_type` - `meas_filter_order` - `meas_filter_taps` - `meas_chan_low_ref_level` - `meas_chan_mid_ref_level` - `meas_chan_high_ref_level` - `meas_filter_width` - `meas_fir_filter_window` - `meas_array_gain` - `meas_array_offset` - `meas_percentage_method` - `fetch_meas_num_samples` + - `actual_meas_wfm_size()` + - `add_waveform_processing()` + - `clear_waveform_processing()` + - `fetch_array_measurement()` + - `clear_waveform_measurement_stats()` + - `fetch_measurement()` + - `fetch_measurement_stats()` + - `read_measurement()` + - `configure_ref_levels()` + - `meas_ref_level_units` + - `meas_other_channel` + - `meas_hysteresis_percent` + - `meas_last_acq_histogram_size` + - `meas_voltage_histogram_size` + - `meas_voltage_histogram_low_volts` + - - `meas_voltage_histogram_high_volts` + - - `meas_time_histogram_size` + - - `meas_time_histogram_low_volts` + - - `meas_time_histogram_high_volts` + - - `meas_time_histogram_low_time` + - - `meas_time_histogram_high_time` + - - `meas_polynomial_interpolation_order` + - - `meas_interpolation_sampling_factor` + - - `meas_filter_cutoff_freq` + - - `meas_filter_center_freq` + - - `meas_filter_ripple` + - `meas_filter_transient_waveform_percent` + - `meas_filter_type` + - `meas_filter_order` + - `meas_filter_taps` + - `meas_chan_low_ref_level` + - `meas_chan_mid_ref_level` + - `meas_chan_high_ref_level` + - `meas_filter_width` + - `meas_fir_filter_window` + - `meas_array_gain` + - `meas_array_offset` + - `meas_percentage_method` + - `fetch_meas_num_samples` #### [niscope] 0.7.0 - 2018-02-20 @@ -2152,7 +2128,7 @@ Initial release - Added Initial release -### nise (NI-SE) +### nise (NI-Switch Executive) - [nise (Unreleased)](#nise-unreleased) - [1.4.9](#nise-149---2025-02-26) @@ -2514,7 +2490,7 @@ Initial release - Changed - (Common) All exceptions raised by the Python bindings inherit from `.Error` - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - (Common) This encapsulates any error that is returned by the underlying driver + - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) #### [niswitch] 0.7.0 - 2018-02-20 @@ -2528,15 +2504,15 @@ Initial release - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - `configure_scan_trigger()` - `wait_for_debounce()` - `wait_for_scan_complete()` + - `configure_scan_trigger()` + - `wait_for_debounce()` + - `wait_for_scan_complete()` #### [niswitch] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - Removed -Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). + - Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). #### [niswitch] 0.5.0 - 2017-11-27 - Removed From ceec7926e8b855cfa4f076b86f6c6c94103e1cd8 Mon Sep 17 00:00:00 2001 From: dummy Date: Mon, 7 Apr 2025 15:19:59 +0530 Subject: [PATCH 09/32] Including seperator --- CHANGELOG.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b0d847d9..12e4dcfaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -511,6 +511,8 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - Initial release +--- + ### nidigital (NI-Digital Pattern Driver) - [nidigital (Unreleased)](#nidigital-unreleased) @@ -712,6 +714,8 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - Initial support +--- + ### nidmm (NI-DMM) - [nidmm (Unreleased)](#nidmm-unreleased) @@ -1030,7 +1034,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidmm] 0.1.0 - 2017-09-01 - Added -Initial release + - Initial release + +--- ### nifgen (NI-FGEN) @@ -1412,6 +1418,7 @@ Initial release #### [nifgen] 0.4.0 - 2017-11-07 - Added - Initial release +--- ### nimodinst (NI-ModInst) @@ -1667,7 +1674,8 @@ Initial release #### [nimodinst] 0.1.0 - 2017-09-01 - Added -Initial release + - Initial release +--- ### niscope (NI-SCOPE) @@ -2126,7 +2134,8 @@ Initial release #### [niscope] 0.5.0 - 2017-11-27 - Added -Initial release + - Initial release +--- ### nise (NI-Switch Executive) @@ -2278,6 +2287,7 @@ Initial release #### [nise] 1.0.1 - 2018-10-17 - Added - Initial Release +--- ### niswitch (NI-SWITCH) @@ -2541,7 +2551,8 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut #### [niswitch] 0.2.0 - 2017-09-20 - Added -Initial release + - Initial release +--- ### nitclk (NI-TCLK) From 29230399611563b43b7e02de023d45703ace197f Mon Sep 17 00:00:00 2001 From: dummy Date: Mon, 7 Apr 2025 16:52:08 +0530 Subject: [PATCH 10/32] Spacing issue fixed --- CHANGELOG.md | 498 ++++++++++++++++++++++----------------------------- 1 file changed, 213 insertions(+), 285 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12e4dcfaa..321677003 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ --- ### nidcpower (NI-DCPOWER) -- [nidcpower (Unreleased)](#nidcpower-unreleased) +- [Unreleased](#nidcpower-unreleased) - [1.4.9](#nidcpower-149---2025-02-26) - [1.4.8](#nidcpower-148---2024-04-26) - [1.4.7](#nidcpower-147---2023-12-15) @@ -55,8 +55,8 @@ - Added - (Common) Support for Python 3.13 - API parity with NI-DCPower 2025 Q1. - Enum value added: - - `INHIBITED` added to enum `OutputStates`. + - Enum value added: + - `INHIBITED` added to enum `OutputStates`. - Changed - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - Fixed #2067: `nidcpower.OutputStates` values are incorrect. @@ -72,22 +72,19 @@ #### [nidcpower] 1.4.7 - 2023-12-15 - Added - API parity with NI-DCPower 2023 Q4. - - Properties added: - - `current_level_rising_slew_rate` - - `current_level_falling_slew_rate` - - `conduction_voltage_mode` - - `conduction_voltage_on_threshold` - - `conduction_voltage_off_threshold` - - `output_cutoff_voltage_measure_limit_high` - - `output_cutoff_voltage_measure_limit_low` - - Enum added: - - `ConductionVoltageMode` - - Enum values added: - - `E_LOAD` added to enum `InstrumentMode` - - `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` + - Properties added: + - `current_level_rising_slew_rate` + - `current_level_falling_slew_rate` + - `conduction_voltage_mode` + - `conduction_voltage_on_threshold` + - `conduction_voltage_off_threshold` + - `output_cutoff_voltage_measure_limit_high` + - `output_cutoff_voltage_measure_limit_low` + - Enum added: + - `ConductionVoltageMode` + - Enum values added: + - `E_LOAD` added to enum `InstrumentMode` + - `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` #### [nidcpower] 1.4.6 - 2023-09-11 @@ -107,34 +104,30 @@ - (Common) Support for Python 3.11 - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - API parity with NI-DCPower 2023 Q2. - - Properties added: - - `lcr_ac_dither_enabled` - - `lcr_ac_electrical_cable_length_delay` - - `lcr_dc_bias_transient_response` - - `lcr_source_aperture_time` - - `measure_complete_event_output_behavior` - - `measure_complete_event_toggle_initial_state` - - `sequence_engine_done_event_output_behavior` - - `sequence_engine_done_event_toggle_initial_state` - - `sequence_iteration_complete_event_output_behavior` - - `sequence_iteration_complete_event_toggle_initial_state` - - `source_complete_event_output_behavior` - - `source_complete_event_toggle_initial_state` - - Enums added: - - `CurrentLimitBehavior` - - `EventOutputBehavior` - - `EventToggleInitialState` - - `LCRDCBiasTransientResponse` - - Enum values added: - - `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` - - `NI_STANDARD_0_5M` added to enum `CableLength` - - Methods added: - - `configure_lcr_compensation` - - `get_lcr_compensation_data` + - Properties added: + - `lcr_ac_dither_enabled` + - `lcr_ac_electrical_cable_length_delay` + - `lcr_dc_bias_transient_response` + - `lcr_source_aperture_time` + - `measure_complete_event_output_behavior` + - `measure_complete_event_toggle_initial_state` + - `sequence_engine_done_event_output_behavior` + - `sequence_engine_done_event_toggle_initial_state` + - `sequence_iteration_complete_event_output_behavior` + - `sequence_iteration_complete_event_toggle_initial_state` + - `source_complete_event_output_behavior` + - `source_complete_event_toggle_initial_state` + - Enums added: + - `CurrentLimitBehavior` + - `EventOutputBehavior` + - `EventToggleInitialState` + - `LCRDCBiasTransientResponse` + - Enum values added: + - `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` + - `NI_STANDARD_0_5M` added to enum `CableLength` + - Methods added: + - `configure_lcr_compensation` + - `get_lcr_compensation_data` - Changed - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - Enums reordered: @@ -153,77 +146,73 @@ #### [nidcpower] 1.4.2 - 2022-08-03 - Added - API parity with NI-DCPower 2022 Q3. - - Properties added: - - `aperture_time_auto_mode` - - `autorange_maximum_delay_after_range_change` - - `cable_length` - - `instrument_mode` - - `isolation_state` - - `lcr_actual_load_reactance` - - `lcr_actual_load_resistance` - - `lcr_automatic_level_control` - - `lcr_current_amplitude` - - `lcr_current_range` - - `lcr_custom_measurement_time` - - `lcr_dc_bias_automatic_level_control` - - `lcr_dc_bias_current_level` - - `lcr_dc_bias_current_range` - - `lcr_dc_bias_source` - - `lcr_dc_bias_voltage_level` - - `lcr_dc_bias_voltage_range` - - `lcr_frequency` - - `lcr_impedance_auto_range` - - `lcr_impedance_range` - - `lcr_impedance_range_source` - - `lcr_load_capacitance` - - `lcr_load_compensation_enabled` - - `lcr_load_inductance` - - `lcr_load_resistance` - - `lcr_measured_load_reactance` - - `lcr_measured_load_resistance` - - `lcr_measurement_time` - - `lcr_open_compensation_enabled` - - `lcr_open_conductance` - - `lcr_open_short_load_compensation_data_source` - - `lcr_open_susceptance` - - `lcr_short_compensation_enabled` - - `lcr_short_custom_cable_compensation_enabled` - - `lcr_short_reactance` - - `lcr_short_resistance` - - `lcr_source_delay_mode` - - `lcr_stimulus_function` - - `lcr_voltage_amplitude` - - `lcr_voltage_range` - - Enums added: - - `ApertureTimeAutoMode` - - `CableLength` - - `InstrumentMode` - - `LCRCompensationType` - - `LCRDCBiasSource` - - `LCRImpedanceRangeSource` - - `LCRMeasurementTime` - - `LCROpenShortLoadCompensationDataSource` - - `LCRReferenceValueType` - - `LCRSourceDelayMode` - - `LCRStimulusFunction` - - Methods added: - - `configure_lcr_custom_cable_compensation` - - `fetch_multiple_lcr` - - `get_lcr_compensation_last_date_and_time` - - `get_lcr_custom_cable_compensation_data` - - `measure_multiple_lcr` - - `perform_lcr_load_compensation` - - `perform_lcr_open_compensation` - - `perform_lcr_open_custom_cable_compensation` - - `perform_lcr_short_compensation` - - `perform_lcr_short_custom_cable_compensation` - - Custom types added: - - `LCRLoadCompensationSpot` - - `LCRMeasurement` + - Properties added: + - `aperture_time_auto_mode` + - `autorange_maximum_delay_after_range_change` + - `cable_length` + - `instrument_mode` + - `isolation_state` + - `lcr_actual_load_reactance` + - `lcr_actual_load_resistance` + - `lcr_automatic_level_control` + - `lcr_current_amplitude` + - `lcr_current_range` + - `lcr_custom_measurement_time` + - `lcr_dc_bias_automatic_level_control` + - `lcr_dc_bias_current_level` + - `lcr_dc_bias_current_range` + - `lcr_dc_bias_source` + - `lcr_dc_bias_voltage_level` + - `lcr_dc_bias_voltage_range` + - `lcr_frequency` + - `lcr_impedance_auto_range` + - `lcr_impedance_range` + - `lcr_impedance_range_source` + - `lcr_load_capacitance` + - `lcr_load_compensation_enabled` + - `lcr_load_inductance` + - `lcr_load_resistance` + - `lcr_measured_load_reactance` + - `lcr_measured_load_resistance` + - `lcr_measurement_time` + - `lcr_open_compensation_enabled` + - `lcr_open_conductance` + - `lcr_open_short_load_compensation_data_source` + - `lcr_open_susceptance` + - `lcr_short_compensation_enabled` + - `lcr_short_custom_cable_compensation_enabled` + - `lcr_short_reactance` + - `lcr_short_resistance` + - `lcr_source_delay_mode` + - `lcr_stimulus_function` + - `lcr_voltage_amplitude` + - `lcr_voltage_range` + - Enums added: + - `ApertureTimeAutoMode` + - `CableLength` + - `InstrumentMode` + - `LCRCompensationType` + - `LCRDCBiasSource` + - `LCRImpedanceRangeSource` + - `LCRMeasurementTime` + - `LCROpenShortLoadCompensationDataSource` + - `LCRReferenceValueType` + - `LCRSourceDelayMode` + - `LCRStimulusFunction` + - Methods added: + - `configure_lcr_custom_cable_compensation` + - `fetch_multiple_lcr` + - `get_lcr_compensation_last_date_and_time` + - `get_lcr_custom_cable_compensation_data` + - `measure_multiple_lcr` + - `perform_lcr_load_compensation` + - `perform_lcr_open_compensation` + - `perform_lcr_open_custom_cable_compensation` + - `perform_lcr_short_compensation` + - `perform_lcr_short_custom_cable_compensation` + - Custom types added: + - `LCRLoadCompensationSpot` + - `LCRMeasurement` - `nidcpower_lcr_source_ac_voltage.py` example - Changed - Updated supported devices information in documentation for methods and properties @@ -232,10 +221,9 @@ #### [nidcpower] 1.4.1 - 2021-08-23 - Added - (Common) Support for Python 3.9 - - API parity with NI-DCPower 21.0.0. - - Properties added: - - `output_cutoff_delay` + - API parity with NI-DCPower 21.0.0. + - Properties added: + - `output_cutoff_delay` - Removed - (Common) Support for Python 3.5 @@ -244,22 +232,20 @@ - `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) - `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) - API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. - - Properties added: - - `output_cutoff_current_change_limit_high` - - `output_cutoff_current_change_limit_low` - - `output_cutoff_current_measure_limit_high` - - `output_cutoff_current_measure_limit_low` - - `output_cutoff_current_overrange_enabled` - - `output_cutoff_enabled` - - `output_cutoff_voltage_change_limit_high` - - `output_cutoff_voltage_change_limit_low` - - `output_cutoff_voltage_output_limit_high` - - `output_cutoff_voltage_output_limit_low` - - Methods added: - - `clear_latched_output_cutoff_state` - - `query_latched_output_cutoff_state` + - Properties added: + - `output_cutoff_current_change_limit_high` + - `output_cutoff_current_change_limit_low` + - `output_cutoff_current_measure_limit_high` + - `output_cutoff_current_measure_limit_low` + - `output_cutoff_current_overrange_enabled` + - `output_cutoff_enabled` + - `output_cutoff_voltage_change_limit_high` + - `output_cutoff_voltage_change_limit_low` + - `output_cutoff_voltage_output_limit_high` + - `output_cutoff_voltage_output_limit_low` + - Methods added: + - `clear_latched_output_cutoff_state` + - `query_latched_output_cutoff_state` - Support for independent operation of instrument channels. Creating an `nidcpower.Session` with independent channels allows you to use multiple instruments in the same session. With independent channels, you can configure multiple channels of the same instrument, or of @@ -515,7 +501,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### nidigital (NI-Digital Pattern Driver) -- [nidigital (Unreleased)](#nidigital-unreleased) +- [Unreleased](#nidigital-unreleased) - [1.4.9](#nidigital-149---2025-02-26) - [1.4.8](#nidigital-148---2024-04-26) - [1.4.6](#nidigital-146---2023-09-11) @@ -585,19 +571,16 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Added - (Common) Support for Python 3.9 - API parity with NI-Digital Pattern Driver 21.0.0. - - Properties added: - - `digital_edge_rio_trigger_edge` - - `digital_edge_rio_trigger_source` - - `exported_rio_event_output_terminal` - - `rio_event_terminal_name` - - `rio_trigger_terminal_name` - - `rio_trigger_type` - - Repeated Capabilities added: - - `rio_events` - - `rio_triggers` - + - Properties added: + - `digital_edge_rio_trigger_edge` + - `digital_edge_rio_trigger_source` + - `exported_rio_event_output_terminal` + - `rio_event_terminal_name` + - `rio_trigger_terminal_name` + - `rio_trigger_type` + - Repeated Capabilities added: + - `rio_events` + - `rio_triggers` - Removed - (Common) Support for Python 3.5 @@ -620,8 +603,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - #### [nidigital] 1.3.0 - 2020-05-21 - Added - 0.9.0 release: @@ -695,8 +676,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [nidigital] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -718,7 +697,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### nidmm (NI-DMM) -- [nidmm (Unreleased)](#nidmm-unreleased) +- [Unreleased](#nidmm-unreleased) - [1.4.9](#nidmm-149---2025-02-26) - [1.4.8](#nidmm-148---2024-04-26) - [1.4.6](#nidmm-146---2023-09-11) @@ -753,7 +732,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Changed - Removed - #### [nidmm] 1.4.9 - 2025-02-26 - Added - (Common) Support for Python 3.13 @@ -773,7 +751,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed - (Common) Support for Python 3.7 - #### [nidmm] 1.4.5 - 2023-06-12 - Added - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. @@ -809,8 +786,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - #### [nidmm] 1.3.0 - 2020-05-21 - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -843,8 +818,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [nidmm] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -1040,7 +1013,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### nifgen (NI-FGEN) -- [nifgen (Unreleased)](#nifgen-unreleased) +- [Unreleased](#nifgen-unreleased) - [1.4.9](#nifgen-149---2025-02-26) - [1.4.8](#nifgen-148---2024-04-26) - [1.4.6](#nifgen-146---2023-09-11) @@ -1096,7 +1069,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple Enum added: - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) - #### [nifgen] 1.4.6 - 2023-09-11 - Changed - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. @@ -1104,7 +1076,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed - (Common) Support for Python 3.7 - #### [nifgen] 1.4.5 - 2023-06-12 - Added - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. @@ -1156,7 +1127,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - #### [nifgen] 1.3.0 - 2020-05-21 - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -1198,8 +1168,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [nifgen] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -1422,7 +1390,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### nimodinst (NI-ModInst) -- [nimodinst (Unreleased)](#nimodinst-unreleased) +- [Unreleased](#nimodinst-unreleased) - [1.4.9](#nimodinst-149---2025-02-26) - [1.4.8](#nimodinst-148---2024-04-26) - [1.4.6](#nimodinst-146---2023-09-11) @@ -1475,7 +1443,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed - (Common) Support for Python 3.7 - #### [nimodinst] 1.4.5 - 2023-06-12 - Removed - (Common) `easy_install` support @@ -1508,8 +1475,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - #### [nimodinst] 1.3.0 - 2020-05-21 - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -1542,8 +1507,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [nimodinst] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -1679,7 +1642,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### niscope (NI-SCOPE) -- [niscope (Unreleased)](#niscope-unreleased) +- [Unreleased](#niscope-unreleased) - [1.4.9](#niscope-149---2025-02-26) - [1.4.8](#niscope-148---2024-04-26) - [1.4.6](#niscope-146---2023-09-11) @@ -1747,7 +1710,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. - #### [niscope] 1.4.3 - 2022-12-16 - Added - (Common) Support for Python 3.10 @@ -1820,8 +1782,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - #### [niscope] 1.3.0 - 2020-05-21 - Added - API parity with NI-SCOPE 20.0 by adding the following properties: @@ -1833,12 +1793,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `Session.ready_for_advance_event_terminal_name` - `Session.ready_for_ref_event_terminal_name` - `Session.ready_for_start_event_terminal_name` - - - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - #### [niscope] 1.2.1 - 2020-04-21 - Added - (Common) Support for chained repeated capabilities. This allows things like @@ -1866,8 +1823,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [niscope] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -1896,8 +1851,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) New internal process for generating metadata - Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` - - #### [niscope] 1.1.0 - 2018-10-25 - Added - import_attribute_configuration_file function @@ -1905,7 +1858,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - import_attribute_configuration_buffer function - import_attribute_configuration_buffer function - - Changed - (Common) Updated generated metadata - (Common) Updated "Driver Version Tested Against" @@ -1936,7 +1888,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` - #### [niscope] 0.9.0 - 2018-05-22 - Added - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) @@ -1964,38 +1915,38 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `query_instrument_status` - `cache` - `specific_driver_prefix` - - Properties removed - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - Methods removed - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - Properties removed + - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - Methods removed + - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) #### [niscope] 0.8.0 - 2018-04-27 - Changed @@ -2004,41 +1955,41 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - Takes additional parameters that modify fetch behavior - Add resulting record as part of the waveform info - Channel name and record number added to waveform info - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + - Takes additional parameters that modify fetch behavior + - Add resulting record as part of the waveform info + - Channel name and record number added to waveform info + - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - Enum values and attribute names that start with an underscore + digit have been renamed - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` - `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` - `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` - `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` - `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` - `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` - `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` - `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` - `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` - `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` - `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` - `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` - `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` - `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` - `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` - `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` - `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` - `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` - `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` - `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` + - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` + - `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` + - `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` + - `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` + - `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` + - `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` + - `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` + - `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` + - `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` + - `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` + - `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` + - `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` + - `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` + - `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - Removed - Following properties are now removed (use parameters to fetch calls): - `fetch_relative_to` - `fetch_offset` - `fetch_record_number` - `fetch_num_records` + - `fetch_relative_to` + - `fetch_offset` + - `fetch_record_number` + - `fetch_num_records` - Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - `actual_meas_wfm_size()` @@ -2056,17 +2007,17 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `meas_last_acq_histogram_size` - `meas_voltage_histogram_size` - `meas_voltage_histogram_low_volts` - - - `meas_voltage_histogram_high_volts` - - - `meas_time_histogram_size` - - - `meas_time_histogram_low_volts` - - - `meas_time_histogram_high_volts` - - - `meas_time_histogram_low_time` - - - `meas_time_histogram_high_time` - - - `meas_polynomial_interpolation_order` - - - `meas_interpolation_sampling_factor` - - - `meas_filter_cutoff_freq` - - - `meas_filter_center_freq` - - - `meas_filter_ripple` + - `meas_voltage_histogram_high_volts` + - `meas_time_histogram_size` + - `meas_time_histogram_low_volts` + - `meas_time_histogram_high_volts` + - `meas_time_histogram_low_time` + - `meas_time_histogram_high_time` + - `meas_polynomial_interpolation_order` + - `meas_interpolation_sampling_factor` + - `meas_filter_cutoff_freq` + - `meas_filter_center_freq` + - `meas_filter_ripple` - `meas_filter_transient_waveform_percent` - `meas_filter_type` - `meas_filter_order` @@ -2081,7 +2032,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `meas_percentage_method` - `fetch_meas_num_samples` - #### [niscope] 0.7.0 - 2018-02-20 - Added - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: @@ -2114,7 +2064,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` - #### [niscope] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). @@ -2131,7 +2080,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `ClearWaveformProcessing` - See #667 for rationale - `FetchArrayMeasurement` - See #667 for rationale - #### [niscope] 0.5.0 - 2017-11-27 - Added - Initial release @@ -2139,7 +2087,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### nise (NI-Switch Executive) -- [nise (Unreleased)](#nise-unreleased) +- [Unreleased](#nise-unreleased) - [1.4.9](#nise-149---2025-02-26) - [1.4.8](#nise-148---2024-04-26) - [1.4.6](#nise-146---2023-09-11) @@ -2183,7 +2131,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed - (Common) Support for Python 3.7 - #### [nise] 1.4.5 - 2023-06-12 - Removed - (Common) `easy_install` support @@ -2229,7 +2176,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ``` python session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` #### [nise] 1.2.0 - 2020-03-06 @@ -2250,8 +2196,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [nise] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -2259,8 +2203,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Changed - Version updated to 1.1.4 to match other released nimi-python modules - - #### [nise] 1.1.3 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: @@ -2291,7 +2233,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple ### niswitch (NI-SWITCH) -- [niswitch (Unreleased)](#niswitch-unreleased) +- [Unreleased](#niswitch-unreleased) - [1.4.9](#niswitch-149---2025-02-26) - [1.4.8](#niswitch-148---2024-04-26) - [1.4.6](#niswitch-146---2023-09-11) @@ -2349,7 +2291,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [niswitch] 1.4.5 - 2023-06-12 - Added - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - - Removed - (Common) `easy_install` support @@ -2365,7 +2306,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - MeasurementLink support - Changed - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page - - Removed - (Common) Support for Python 3.6 @@ -2556,7 +2496,7 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut ### nitclk (NI-TCLK) -- [nitclk (Unreleased)](#nitclk-unreleased) +- [Unreleased](#nitclk-unreleased) - [1.4.9](#nitclk-149---2025-02-26) - [1.4.8](#nitclk-148---2024-04-26) - [1.4.6](#nitclk-146---2023-09-11) @@ -2598,7 +2538,6 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Removed - (Common) Support for Python 3.7 - #### [nitclk] 1.4.5 - 2023-06-12 - Removed - (Common) `easy_install` support @@ -2627,8 +2566,6 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Removed - nitclk_configure.py as it did not do anything. - - #### [nitclk] 1.3.2 - 2020-09-18 - Changed - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. @@ -2639,7 +2576,6 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - #### [nitclk] 1.3.0 - 2020-05-21 - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) @@ -2651,13 +2587,10 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut ``` python session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - Changed - Version updated to 1.2.1 to match other released nimi-python modules - - #### [nitclk] 1.2.0 - 2020-03-06 - Added - (Common) Zip file per driver for all examples and any helper files @@ -2674,15 +2607,11 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Ability to pass an integer as a session / session reference - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) - - #### [nitclk] 1.1.5 - 2019-11-22 - Changed - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - #### [nitclk] 1.1.4 - 2019-11-19 - Added - (Common) Support for Python 3.8 @@ -2693,7 +2622,6 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Initial support - The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). From 3f76f9767dd866c6671c9cc125f46afdc53383a3 Mon Sep 17 00:00:00 2001 From: dummy Date: Tue, 8 Apr 2025 06:44:12 +0530 Subject: [PATCH 11/32] Updated Contributing.md file --- CONTRIBUTING.md | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 979d0b6a2..0afc577b2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -155,8 +155,22 @@ Release Process * Change [Unreleased] in TOC to the version of the release * Commit to branch 1. Update release versions - * `python3 tools/build_release.py --update --release` + * `python3 tools/build_release.py --update-for-release` * For each module, this will drop the .devN from our versions in config_addon.py and update the LATEST_RELEASE versions to match. + * In case you need to release any specific module/modules, include `drivers` parameters. + For Example: + ```bash + python3 tools/build_release.py --drivers nidcpower --update-for-release + ``` + * In case you need upgrade major,minor,patch version of release, include any of below parameters + --increment-major-version - To increment the major version of package. + --increment-minor-version - To increment the minor version of package. + --increment-patch-version - To increment the package version of package. + For Example: + ```bash + python3 tools/build_release.py --drivers nidcpower --update-for-release --increment-minor-version + ``` + * Commit to branch 1. Clean and build to update generated files with new version * `python3 tools/build_release.py --build` @@ -168,6 +182,11 @@ Release Process 1. Wait until the pull request has been approved 1. Upload the releases to PyPI * `python3 tools/build_release.py --upload` + * In case you need to upload any specific module/modules, include `drivers` parameters. + For Example: + ```bash + python3 tools/build_release.py --drivers nidcpower --upload + ``` * You will need to type in your PyPI credentials 1. Merge the pull request to origin/master 1. Create a release on GitHub using the portion from the changelog for this release for the description @@ -175,9 +194,15 @@ Release Process * This should trigger the [check_latest_release](.github/workflows/check_latest_release.yml) workflow. Check the [results](https://github.com/ni/nimi-python/actions/workflows/check_latest_release.yml) before continuing. 1. Post-Release Steps 1. Create and checkout another branch for post-release changes - 1. Update the module versions - * `python3 tools/build_release.py --update` + 1. Update the module versions using any of below commands based on the change. You can also include drivers list if the changes are specific to some drivers. + * `python3 tools/build_release.py --increment-patch-version` * This will update the version to X.X.(N+1).dev0 + * `python3 tools/build_release.py --increment-minor-version` + * This will update the version to X.(N+1).X.dev0 + * `python3 tools/build_release.py --increment-major-version` + * This will update the version to (N+1).X.X.dev0 + * `python3 tools/build_release.py --increment-build-number` + * This will update the version to X.X.X.dev(N+1) * Commit to branch 1. Clean and build to update generated files with new version * `python3 tools/build_release.py --build` From 2bb0ee56ef547309be9788bb5f9e5ed2198bbc9e Mon Sep 17 00:00:00 2001 From: dummy Date: Tue, 8 Apr 2025 06:51:55 +0530 Subject: [PATCH 12/32] Updated alignment --- CONTRIBUTING.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0afc577b2..4d9648501 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -158,15 +158,15 @@ Release Process * `python3 tools/build_release.py --update-for-release` * For each module, this will drop the .devN from our versions in config_addon.py and update the LATEST_RELEASE versions to match. * In case you need to release any specific module/modules, include `drivers` parameters. - For Example: + For example: ```bash python3 tools/build_release.py --drivers nidcpower --update-for-release ``` * In case you need upgrade major,minor,patch version of release, include any of below parameters - --increment-major-version - To increment the major version of package. - --increment-minor-version - To increment the minor version of package. - --increment-patch-version - To increment the package version of package. - For Example: + * --increment-major-version - To increment the major version of package. + * --increment-minor-version - To increment the minor version of package. + * --increment-patch-version - To increment the package version of package. + For example: ```bash python3 tools/build_release.py --drivers nidcpower --update-for-release --increment-minor-version ``` @@ -183,7 +183,7 @@ Release Process 1. Upload the releases to PyPI * `python3 tools/build_release.py --upload` * In case you need to upload any specific module/modules, include `drivers` parameters. - For Example: + For example: ```bash python3 tools/build_release.py --drivers nidcpower --upload ``` From ac938b67a27c97df423682860bc6cfce79e47256 Mon Sep 17 00:00:00 2001 From: dummy Date: Tue, 8 Apr 2025 06:57:04 +0530 Subject: [PATCH 13/32] Alignment fixed --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4d9648501..4abf64ea8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,12 +157,12 @@ Release Process 1. Update release versions * `python3 tools/build_release.py --update-for-release` * For each module, this will drop the .devN from our versions in config_addon.py and update the LATEST_RELEASE versions to match. - * In case you need to release any specific module/modules, include `drivers` parameters. + * If you need to release any specific module(s), include the `drivers` parameter. For example: ```bash python3 tools/build_release.py --drivers nidcpower --update-for-release ``` - * In case you need upgrade major,minor,patch version of release, include any of below parameters + * If you need to upgrade the major, minor, or patch version of a release, include any of the following parameters: * --increment-major-version - To increment the major version of package. * --increment-minor-version - To increment the minor version of package. * --increment-patch-version - To increment the package version of package. @@ -182,7 +182,7 @@ Release Process 1. Wait until the pull request has been approved 1. Upload the releases to PyPI * `python3 tools/build_release.py --upload` - * In case you need to upload any specific module/modules, include `drivers` parameters. + * If you need to upload any specific module(s), include the `drivers` parameter. For example: ```bash python3 tools/build_release.py --drivers nidcpower --upload From 743a22ff55c06e5db3cf1e4f4ac352dbce58c46e Mon Sep 17 00:00:00 2001 From: dummy Date: Tue, 8 Apr 2025 13:22:54 +0530 Subject: [PATCH 14/32] Updated help in UpdateReleaseInfo.py --- tools/updateReleaseInfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/updateReleaseInfo.py b/tools/updateReleaseInfo.py index 936673417..58a979324 100644 --- a/tools/updateReleaseInfo.py +++ b/tools/updateReleaseInfo.py @@ -32,7 +32,7 @@ def main(): file_group = parser.add_argument_group("Input and Output files") file_group.add_argument("--src-folder", action="store", required=True, help="Source folder") file_group.add_argument("--release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. Error if not there") - file_group.add_argument("--update-type", action="store", default=None, choices=["major", "minor", "patch", "build"], help="Specify the type of update: major, minor, patch or build. Default:patch") + file_group.add_argument("--update-type", action="store", default=None, choices=["major", "minor", "patch", "build"], help="Specify the type of update: major, minor, patch or build. ") verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") From d0391707ddea792dfab077e30ec990fcef714147 Mon Sep 17 00:00:00 2001 From: dummy Date: Tue, 8 Apr 2025 15:34:55 +0530 Subject: [PATCH 15/32] Accept only one input --- tools/build_release.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/build_release.py b/tools/build_release.py index cc842bfd3..f2e467e75 100644 --- a/tools/build_release.py +++ b/tools/build_release.py @@ -55,9 +55,10 @@ def main(): args.increment_minor_version, args.increment_patch_version, args.increment_build_number, + args.update_for_release, ] if sum(version_flags) > 1: - raise ValueError("Only one of --increment-major-version, --increment-minor-version, --increment-patch-version or --increment-build-number can be provided.") + raise ValueError("Only one of --increment-major-version, --increment-minor-version, --increment-patch-version, --increment-build-number or --update-for-release can be provided.") if args.verbose > 1: From 190f27bbf5f3afb65d0ee005a7c2792b87af314f Mon Sep 17 00:00:00 2001 From: dummy Date: Tue, 8 Apr 2025 17:02:06 +0530 Subject: [PATCH 16/32] Updated changelog and contributing.md --- CHANGELOG.md | 6 +++++- CONTRIBUTING.md | 44 +++++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 321677003..bc7d7a725 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2626,7 +2626,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). `Function.TWO_WIRE_RES` - - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - -#### [nidmm] 0.7.0 - 2018-02-20 -- Changed - - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - - `configure_multi_point()` - - `configure_trigger()` - - `fetch()` - - `fetch_multi_point()` - - `fetch_waveform()` - - `read()` - - `read_multi_point()` - - `read_waveform()` - - The following functions return a `datetime.datetime()` object representing the date and time - - `get_cal_date_and_time()` - - Metadata updated to NI-DMM 17.5 -- Removed - - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - - `DCBias` - `DC_BIAS` - - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` - -#### [nidmm] 0.6.0 - 2017-12-20 -- Added - - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. -- Changed - - Property powerline_freq no longer uses enum PowerlineFrequency. - - Property current_source no longer uses enum CurrentSource. - - Property input_resistance no longer uses enum InputResistance. - - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple - - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple - - Removed `actual_number_of_points` from `read_multi_point()` returned tuple - - Removed `actual_number_of_points` from `read_waveform()` returned tuple - -#### [nidmm] 0.5.0 - 2017-11-27 -- Added - - `get_ext_cal_recommended_interval` -- Removed - - (Common) enum definitions that are not referenced by a function and/or an attributes - -#### [nidmm] 0.4.0 - 2017-11-07 -- Changed - - (Common) Simplified examples by removing try/except - - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines - - Removed incorrect leading underscore from some enum values: - - `Function.AC_VOLTS_DC_COUPLED` - - `Function.WAVEFORM_CURRENT` - - `MeasurementCompleteDest.LBR_TRIG_0` - - `OperationMode.IVIDMM_MODE` - - `SampleTrigger.EXTERNAL` - - `SampleTrigger.TTL_3` - - `TriggerSource.TTL_0` - - `TriggerSource.TTL_3` - - `TriggerSource.TTL_7` - - `TriggerSource.PXI_STAR` - -#### [nidmm] 0.3.0 - 2017-10-13 -- Added - - (Common) Support for ViInt64 (64-bit integers) -- Changed - - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ``` python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - - Added default values to some parameters. -- Removed - - Removed methods that aren’t useful in the Python bindings. - -#### [nidmm] 0.2.0 - 2017-09-20 -- Added - - (Common) Suport for channel-based properties -- Changed - - (Common) Warnings no longer raise an exception - - (Common) Warnings are now added to warnings.warn() - - Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) - -#### [nidmm] 0.1.0 - 2017-09-01 -- Added - - Initial release - ---- - -### nifgen (NI-FGEN) - -- [Unreleased](#nifgen-unreleased) -- [1.4.9](#nifgen-149---2025-02-26) -- [1.4.8](#nifgen-148---2024-04-26) -- [1.4.6](#nifgen-146---2023-09-11) -- [1.4.5](#nifgen-145---2023-06-12) -- [1.4.4](#nifgen-144---2023-04-14) -- [1.4.3](#nifgen-143---2022-12-16) -- [1.4.2](#nifgen-142---2022-08-03) -- [1.4.1](#nifgen-141---2021-08-23) -- [1.3.3](#nifgen-133---2021-02-26) -- [1.3.2](#nifgen-132---2020-09-18) -- [1.3.1](#nifgen-131---2020-06-08) -- [1.3.0](#nifgen-130---2020-05-21) -- [1.2.1](#nifgen-121---2020-04-21) -- [1.2.0](#nifgen-120---2020-03-06) -- [1.1.5](#nifgen-115---2019-11-22) -- [1.1.4](#nifgen-114---2019-11-19) -- [1.1.3](#nifgen-113---2019-10-21) -- [1.1.2](#nifgen-112---2019-06-06) -- [1.1.0](#nifgen-110---2018-10-25) -- [1.0.1](#nifgen-101---2018-10-17) -- [1.0.0](#nifgen-100---2018-06-08) -- [0.9.0](#nifgen-090---2018-05-22) -- [0.8.0](#nifgen-080---2018-04-27) -- [0.7.0](#nifgen-070---2018-02-20) -- [0.6.0](#nifgen-060---2017-12-20) -- [0.5.0](#nifgen-050---2017-11-27) -- [0.4.0](#nifgen-040---2017-11-07) - -#### [nifgen] Unreleased -- Added -- Changed -- Removed - -#### [nifgen] 1.4.9 - 2025-02-26 -- Added - - (Common) Support for Python 3.13 -- Changed - - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - (Common) Support for Python 3.8 - -#### [nifgen] 1.4.8 - 2024-04-26 -- Added - - (Common) Support for Python 3.12 - - Properties added: - - `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - - Enum added: - - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) - -#### [nifgen] 1.4.6 - 2023-09-11 -- Changed - - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - (Common) Support for Python 3.7 - -#### [nifgen] 1.4.5 - 2023-06-12 -- Added - - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -- Removed - - (Common) `easy_install` support - -#### [nifgen] 1.4.4 - 2023-04-14 -- Added - - (Common) Support for Python 3.11 -- Changed - - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [nifgen] 1.4.3 - 2022-12-16 -- Added - - (Common) Support for Python 3.10 - - MeasurementLink support -- Removed - - (Common) Support for Python 3.6 - -#### [nifgen] 1.4.2 - 2022-08-03 -- Added - - `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) -- Changed - - Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities - - `channels` - - `markers` - - `data_markers` - - `script_triggers` - - Corrected multiple mistakes in repeated capability info of attribute metadata - alters API behavior (repeated capability access of attributes) and documentation - -#### [nifgen] 1.4.1 - 2021-08-23 -- Added - - (Common) Support for Python 3.9 -- Removed - - (Common) Support for Python 3.5 - -#### [nifgen] 1.3.3 - 2021-02-26 -- Added - - nifgen_trigger.py example to demonstrate pulling a trigger from another device. - -#### [nifgen] 1.3.2 - 2020-09-18 -- Changed - - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [nifgen] 1.3.1 - 2020-06-08 -- Changed - - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -#### [nifgen] 1.3.0 - 2020-05-21 -- Changed - - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [nifgen] 1.2.1 - 2020-04-21 -- Added - - (Common) Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [nifgen] 1.2.0 - 2020-03-06 -- Added - - (Common) Zip file per driver for all examples and any helper files - - (Common) Link to zip file on examples documentation - - (Common) Support for Python 3.8 - - `nifgen.Session.import_attribute_configuration_file()` - - `nifgen.Session.import_attribute_configuration_buffer()` - - `nifgen.Session.export_attribute_configuration_file()` - - `nifgen.Session.export_attribute_configuration_buffer()` - - `nifgen.Session.get_channel_name()` -- Changed - - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - - `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` - - See documentation on how to call this function - - Calling the previous way will log a DeprecationWarning to the warning subsystem - - [#1300](https://github.com/ni/nimi-python/issues/1300) -- Removed - - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [nifgen] 1.1.5 - 2019-11-22 -- Changed - - (Common) Fix #1140: Linux support was accidentally broken. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -#### [nifgen] 1.1.4 - 2019-11-19 -- Added - - (Common) Support for Python 3.8 - - (Common) `ViUInt8` is now a valid type in APIs - -#### [nifgen] 1.1.3 - 2019-10-21 -- Changed - - (Common) The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha - - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. -- Removed - - `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) - -#### [nifgen] 1.1.2 - 2019-06-06 -- Changed - - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - (Common) New internal process for generating metadata - - Enum values for `HardwareState` were incorrect - fix to match niFgen.h - -#### [nifgen] 1.1.0 - 2018-10-25 -- Changed - - (Common) Updated generated metadata - - (Common) Updated "Driver Version Tested Against" - - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [nifgen] 1.0.1 - 2018-10-17 -- Added - - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [nifgen] 1.0.0 - 2018-06-08 -- Changed - - `num_channels` attribute renamed to `channel_count` - now consistent with other drivers - - `send_software_edge_trigger()` no longer takes any parameters. - - To send a start software trigger, call it on the session directly: - ``` python - session.send_software_edge_trigger() - ``` - - To send a script software trigger, call it on the script triggers container: - ``` python - session.script_triggers[1].send_software_edge_trigger() - ``` -- Removed - - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - - `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` - - `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` - - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` - - Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) - -#### [nifgen] 0.9.0 - 2018-05-22 -- Added - - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - - Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. - - `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` - - `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` - - Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) - - `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` - - `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` -- Removed - - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` - - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - - `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - - `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - - `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - - `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - - `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - - `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - - `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - - `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) - - `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) - - `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) - - `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) - - `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) - - `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) - - `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) - - `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) - - `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) - - `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) - - `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) - - `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) - - `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) - - `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) - - `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) - - `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) - - `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) - - `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) - -#### [nifgen] 0.8.0 - 2018-04-27 -- Changed - - (Common) All exceptions raised by the Python bindings inherit from `.Error` - - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver - - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - - `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) - - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) -- Removed - - `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python - - Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) - -#### [nifgen] 0.7.0 - 2018-02-20 -- Changed - - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - `channel` repeated capability - `markers` repeated capability - `script_triggers` repeated capability - - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - - `adjust_sample_clock_relative_delay()` - - `wait_until_done()` - - The following functions return a `datetime.datetime()` object representing the date and time - - `get_ext_cal_last_date_and_time()` - - `get_self_cal_last_date_and_time()` - -#### [nifgen] 0.6.0 - 2017-12-20 -- Added - - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) - - Support for calling `write_waveform` with a waveform handle (int) or a name (str). - - Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) -- Changed - - Renamed `create_waveform_f64` -> `create_waveform` -- Removed - - `create_waveform_i16` - - `write_binary16_waveform`: Use `write_waveform` - - `write_named_waveform_i16`: Use `write_waveform` - - `write_named_waveform_f64`: Use `write_waveform` - -#### [nifgen] 0.5.0 - 2017-11-27 -- Removed - - (Common) enum definitions that are not referenced by a function and/or an attributes - - `adjust_sample_clock_relative_delay` - -#### [nifgen] 0.4.0 - 2017-11-07 -- Added - - Initial release ---- - -### nimodinst (NI-ModInst) - -- [Unreleased](#nimodinst-unreleased) -- [1.4.9](#nimodinst-149---2025-02-26) -- [1.4.8](#nimodinst-148---2024-04-26) -- [1.4.6](#nimodinst-146---2023-09-11) -- [1.4.5](#nimodinst-145---2023-06-12) -- [1.4.4](#nimodinst-144---2023-04-14) -- [1.4.3](#nimodinst-143---2022-12-16) -- [1.4.1](#nimodinst-141---2021-08-23) -- [1.3.2](#nimodinst-132---2020-09-18) -- [1.3.1](#nimodinst-131---2020-06-08) -- [1.3.0](#nimodinst-130---2020-05-21) -- [1.2.1](#nimodinst-121---2020-04-21) -- [1.2.0](#nimodinst-120---2020-03-06) -- [1.1.5](#nimodinst-115---2019-11-22) -- [1.1.4](#nimodinst-114---2019-11-19) -- [1.1.3](#nimodinst-113---2019-10-21) -- [1.1.2](#nimodinst-112---2019-06-06) -- [1.1.0](#nimodinst-110---2018-10-25) -- [1.0.1](#nimodinst-101---2018-10-17) -- [1.0.0](#nimodinst-100---2018-06-08) -- [0.9.0](#nimodinst-090---2018-05-22) -- [0.8.0](#nimodinst-080---2018-04-27) -- [0.7.0](#nimodinst-070---2018-02-20) -- [0.6.0](#nimodinst-060---2017-12-20) -- [0.5.0](#nimodinst-050---2017-11-27) -- [0.4.0](#nimodinst-040---2017-11-07) -- [0.3.0](#nimodinst-030---2017-10-13) -- [0.2.0](#nimodinst-020---2017-09-20) - -#### [nimodinst] Unreleased -- Added -- Changed -- Removed - -#### [nimodinst] 1.4.9 - 2025-02-26 -- Added - - (Common) Support for Python 3.13 -- Changed - - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - (Common) Support for Python 3.8 - -#### [nimodinst] 1.4.8 - 2024-04-26 -- Added - - (Common) Support for Python 3.12 - -#### [nimodinst] 1.4.6 - 2023-09-11 -- Changed - - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - (Common) Support for Python 3.7 - -#### [nimodinst] 1.4.5 - 2023-06-12 -- Removed - - (Common) `easy_install` support - -#### [nimodinst] 1.4.4 - 2023-04-14 -- Added - - (Common) Support for Python 3.11 -- Changed - - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [nimodinst] 1.4.3 - 2022-12-16 -- Added - - (Common) Support for Python 3.10 -- Removed - - (Common) Support for Python 3.6 - -#### [nimodinst] 1.4.1 - 2021-08-23 -- Added - - (Common) Support for Python 3.9 -- Removed - - (Common) Support for Python 3.5 - -#### [nimodinst] 1.3.2 - 2020-09-18 -- Changed - - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [nimodinst] 1.3.1 - 2020-06-08 -- Changed - - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -#### [nimodinst] 1.3.0 - 2020-05-21 -- Changed - - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [nimodinst] 1.2.1 - 2020-04-21 -- Added - - (Common) Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [nimodinst] 1.2.0 - 2020-03-06 -- Added - - (Common) Zip file per driver for all examples and any helper files - - (Common) Link to zip file on examples documentation - - (Common) Support for Python 3.8 -- Changed - - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) -- Removed - - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [nimodinst] 1.1.5 - 2019-11-22 -- Changed - - (Common) Fix #1140: Linux support was accidentally broken. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -#### [nimodinst] 1.1.4 - 2019-11-19 -- Added - - (Common) Support for Python 3.8 - - (Common) `ViUInt8` is now a valid type in APIs - -#### [nimodinst] 1.1.3 - 2019-10-21 -- Changed - - (Common) The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha - - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -#### [nimodinst] 1.1.2 - 2019-06-06 -- Changed - - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - (Common) New internal process for generating metadata - -#### [nimodinst] 1.1.0 - 2018-10-25 -- Changed - - (Common) Updated generated metadata - - (Common) Updated "Driver Version Tested Against" - - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [nimodinst] 1.0.1 - 2018-10-17 -- Added - - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [nimodinst] 1.0.0 - 2018-06-08 -- Changed - - Double close will now allow NI-ModInst to return error -- Removed - - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - -#### [nimodinst] 0.9.0 - 2018-05-22 -- Added - - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - - Indexing on `nimodinst.Session` is no longer allowed - `session[0].device_name` becomes `session.devices[0].device_name` - This is to be consistent with other drivers - -- Removed - - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` - -#### [nimodinst] 0.8.0 - 2018-04-27 -- Changed - - (Common) All exceptions raised by the Python bindings inherit from `.Error` - - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver - - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -#### [nimodinst] 0.7.0 - 2018-02-20 -- Changed - - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - -#### [nimodinst] 0.6.0 - 2017-12-20 -- Added - - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - -#### [nimodinst] 0.5.0 - 2017-11-27 -- Removed - - (Common) enum definitions that are not referenced by a function and/or an attributes - -#### [nimodinst] 0.4.0 - 2017-11-07 -- Changed - - Simplified examples by removing try/except - - **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - -#### [nimodinst] 0.3.0 - 2017-10-13 -- Added - - (Common) Support for ViInt64 (64-bit integers) -- Changed - - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ``` python +* [Unreleased](#unreleased) +* [1.4.9](#149---2025-02-26) +* [1.4.8](#148---2024-04-26) +* [1.4.7](#147---2023-12-15) +* [1.4.6](#146---2023-09-11) +* [1.4.5](#145---2023-06-12) +* [1.4.4](#144---2023-04-14) +* [1.4.3](#143---2022-12-16) +* [1.4.2](#142---2022-08-03) +* [1.4.1](#141---2021-08-23) +* [1.4.0](#140---2021-07-09) +* [1.3.3](#133---2021-02-26) +* [1.3.2](#132---2020-09-18) +* [1.3.1](#131---2020-06-08) +* [1.3.0](#130---2020-05-21) +* [1.2.1](#121---2020-04-21) +* [1.2.0](#120---2020-03-06) +* [1.1.5](#115---2019-11-22) +* [1.1.4](#114---2019-11-19) +* [1.1.3](#113---2019-10-21) +* [1.1.2](#112---2019-06-06) +* [1.1.0](#110---2018-10-25) +* [1.0.1](#101---2018-10-17) +* [1.0.0](#100---2018-06-08) +* [0.9.0](#090---2018-05-22) +* [0.8.0](#080---2018-04-27) +* [0.7.0](#070---2018-02-20) +* [0.6.0](#060---2017-12-20) +* [0.5.0](#050---2017-11-27) +* [0.4.0](#040---2017-11-07) +* [0.3.0](#030---2017-10-13) +* [0.2.0](#020---2017-09-20) +* [0.1.0](#010---2017-09-01) + +All notable changes to this project will be documented in this file. + +* [Unreleased](#unreleased) +## Unreleased +* ### ALL + * #### Added + * #### Changed + * #### Removed +* ### `nidcpower` (NI-DCPower) + * #### Added + * #### Changed + * #### Removed +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * #### Changed + * #### Removed +* ### `nidmm` (NI-DMM) + * #### Added + * #### Changed + * #### Removed +* ### `nifgen` (NI-FGEN) + * #### Added + * #### Changed + * #### Removed +* ### `nimodinst` (NI-ModInst) + * #### Added + * #### Changed + * #### Removed +* ### `niscope` (NI-SCOPE) + * #### Added + * #### Changed + * #### Removed +* ### `niswitch` (NI-SWITCH) + * #### Added + * #### Changed + * #### Removed +* ### `nise` (NI Switch Executive) + * #### Added + * #### Changed + * #### Removed +* ### `nitclk` (NI-TClk) + * #### Added + * #### Changed + * #### Removed + + +## 1.4.9 - 2025-02-26 +* ### ALL + * #### Added + * Support for Python 3.13 + * #### Changed + * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + * #### Removed + * Support for Python 3.8 +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 2025 Q1. + * Enum value added: + * `INHIBITED` added to enum `OutputStates`. + * #### Changed + * Fixed #2067: `nidcpower.OutputStates` values are incorrect. +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * Methods Added: + * `enable_match_fail_combination` + +## 1.4.8 - 2024-04-26 +* ### ALL + * #### Added + * Support for Python 3.12 +* ### `nidcpower` (NI-DCPower) + * #### Changed + * Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. +* ### `nifgen` (NI-FGEN) + * #### Added + * Properties added: + * `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + * Enum added: + * `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + +## 1.4.7 - 2023-12-15 +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 2023 Q4. + * Properties added: + * `current_level_rising_slew_rate` + * `current_level_falling_slew_rate` + * `conduction_voltage_mode` + * `conduction_voltage_on_threshold` + * `conduction_voltage_off_threshold` + * `output_cutoff_voltage_measure_limit_high` + * `output_cutoff_voltage_measure_limit_low` + * Enum added: + * `ConductionVoltageMode` + * Enum values added: + * `E_LOAD` added to enum `InstrumentMode` + * `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` + +## 1.4.6 - 2023-09-11 +* ### ALL + * #### Changed + * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. + * #### Removed + * Support for Python 3.7 + +## 1.4.5 - 2023-06-12 +* ### ALL + * #### Removed + * `easy_install` support +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +* ### `nidmm` (NI-DMM) + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +* ### `nifgen` (NI-FGEN) + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +* ### `niscope` (NI-SCOPE) + * #### Added + * `get_channel_names()` + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + * #### Changed + * Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. +* ### `niswitch` (NI-SWITCH) + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + +## 1.4.4 - 2023-04-14 +* ### ALL + * #### Added + * Support for Python 3.11 + * #### Changed + * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. +* ### `nidcpower` (NI-DCPower) + * #### Added + * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + * API parity with NI-DCPower 2023 Q2. + * Properties added: + * `lcr_ac_dither_enabled` + * `lcr_ac_electrical_cable_length_delay` + * `lcr_dc_bias_transient_response` + * `lcr_source_aperture_time` + * `measure_complete_event_output_behavior` + * `measure_complete_event_toggle_initial_state` + * `sequence_engine_done_event_output_behavior` + * `sequence_engine_done_event_toggle_initial_state` + * `sequence_iteration_complete_event_output_behavior` + * `sequence_iteration_complete_event_toggle_initial_state` + * `source_complete_event_output_behavior` + * `source_complete_event_toggle_initial_state` + * Enums added: + * `CurrentLimitBehavior` + * `EventOutputBehavior` + * `EventToggleInitialState` + * `LCRDCBiasTransientResponse` + * Enum values added: + * `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` + * `NI_STANDARD_0_5M` added to enum `CableLength` + * Methods added: + * `configure_lcr_compensation` + * `get_lcr_compensation_data` + * #### Changed + * Enums reordered: + * `AutoZero` + * `CableLength` +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Changed + * Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). +* ### `niscope` (NI-SCOPE) + * #### Changed + * Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. + * Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + +## 1.4.3 - 2022-12-16 +* ### ALL + * #### Added + * Support for Python 3.10 + * #### Removed + * Support for Python 3.6 +* ### `nidcpower` (NI-DCPower) + * #### Added + * MeasurementLink support + * #### Changed + * Binary compatibility change for type `LCRLoadCompensationSpot` on Linux. Client code using method `nidcpower.Session.perform_lcr_load_compensation` on Linux now requires NI-DCPower 2023 Q1 driver runtime or newer. +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * MeasurementLink support +* ### `nidmm` (NI-DMM) + * #### Added + * MeasurementLink support +* ### `nifgen` (NI-FGEN) + * #### Added + * MeasurementLink support +* ### `niscope` (NI-SCOPE) + * #### Added + * MeasurementLink support +* ### `niswitch` (NI-SWITCH) + * #### Added + * MeasurementLink support + * #### Changed + * Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page + +## 1.4.2 - 2022-08-03 +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 2022 Q3. + * Properties added: + * `aperture_time_auto_mode` + * `autorange_maximum_delay_after_range_change` + * `cable_length` + * `instrument_mode` + * `isolation_state` + * `lcr_actual_load_reactance` + * `lcr_actual_load_resistance` + * `lcr_automatic_level_control` + * `lcr_current_amplitude` + * `lcr_current_range` + * `lcr_custom_measurement_time` + * `lcr_dc_bias_automatic_level_control` + * `lcr_dc_bias_current_level` + * `lcr_dc_bias_current_range` + * `lcr_dc_bias_source` + * `lcr_dc_bias_voltage_level` + * `lcr_dc_bias_voltage_range` + * `lcr_frequency` + * `lcr_impedance_auto_range` + * `lcr_impedance_range` + * `lcr_impedance_range_source` + * `lcr_load_capacitance` + * `lcr_load_compensation_enabled` + * `lcr_load_inductance` + * `lcr_load_resistance` + * `lcr_measured_load_reactance` + * `lcr_measured_load_resistance` + * `lcr_measurement_time` + * `lcr_open_compensation_enabled` + * `lcr_open_conductance` + * `lcr_open_short_load_compensation_data_source` + * `lcr_open_susceptance` + * `lcr_short_compensation_enabled` + * `lcr_short_custom_cable_compensation_enabled` + * `lcr_short_reactance` + * `lcr_short_resistance` + * `lcr_source_delay_mode` + * `lcr_stimulus_function` + * `lcr_voltage_amplitude` + * `lcr_voltage_range` + * Enums added: + * `ApertureTimeAutoMode` + * `CableLength` + * `InstrumentMode` + * `LCRCompensationType` + * `LCRDCBiasSource` + * `LCRImpedanceRangeSource` + * `LCRMeasurementTime` + * `LCROpenShortLoadCompensationDataSource` + * `LCRReferenceValueType` + * `LCRSourceDelayMode` + * `LCRStimulusFunction` + * Methods added: + * `configure_lcr_custom_cable_compensation` + * `fetch_multiple_lcr` + * `get_lcr_compensation_last_date_and_time` + * `get_lcr_custom_cable_compensation_data` + * `measure_multiple_lcr` + * `perform_lcr_load_compensation` + * `perform_lcr_open_compensation` + * `perform_lcr_open_custom_cable_compensation` + * `perform_lcr_short_compensation` + * `perform_lcr_short_custom_cable_compensation` + * Custom types added: + * `LCRLoadCompensationSpot` + * `LCRMeasurement` + * `nidcpower_lcr_source_ac_voltage.py` example + * #### Changed + * Updated supported devices information in documentation for methods and properties + * Added `channel` field to the `Measurement` namedtuple instances returned by `fetch_multiple` and `measure_multiple` +* ### `nifgen` (NI-FGEN) + * #### Added + * `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) + * #### Changed + * Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities + * `channels` + * `markers` + * `data_markers` + * `script_triggers` + * Corrected multiple mistakes in repeated capability info of attribute metadata + * alters API behavior (repeated capability access of attributes) and documentation + + +## 1.4.1 - 2021-08-23 +* ### ALL + * #### Added + * Support for Python 3.9 + * #### Removed + * Support for Python 3.5 +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 21.0.0. + * Properties added: + * `output_cutoff_delay` +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * API parity with NI-Digital Pattern Driver 21.0.0. + * Properties added: + * `digital_edge_rio_trigger_edge` + * `digital_edge_rio_trigger_source` + * `exported_rio_event_output_terminal` + * `rio_event_terminal_name` + * `rio_trigger_terminal_name` + * `rio_trigger_type` + * Repeated Capabilities added: + * `rio_events` + * `rio_triggers` + + +## 1.4.0 - 2021-07-09 +* ### `nidcpower` (NI-DCPower) + * #### Added + * `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) + * `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) + * API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. + * Properties added: + * `output_cutoff_current_change_limit_high` + * `output_cutoff_current_change_limit_low` + * `output_cutoff_current_measure_limit_high` + * `output_cutoff_current_measure_limit_low` + * `output_cutoff_current_overrange_enabled` + * `output_cutoff_enabled` + * `output_cutoff_voltage_change_limit_high` + * `output_cutoff_voltage_change_limit_low` + * `output_cutoff_voltage_output_limit_high` + * `output_cutoff_voltage_output_limit_low` + * Methods added: + * `clear_latched_output_cutoff_state` + * `query_latched_output_cutoff_state` + * Support for independent operation of instrument channels. Creating an `nidcpower.Session` + with independent channels allows you to use multiple instruments in the same session. With + independent channels, you can configure multiple channels of the same instrument, or of + multiple instruments, independently of one another within the same session. Requires NI-DCPower + driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, + pass `independent_channels=False` to `nidcpower.Session` constructor. + + +## 1.3.3 - 2021-02-26 +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: + * `merged_channels` + * `digital_edge_shutdown_trigger_input_terminal` + * `shutdown_trigger_type` +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * 1.0.0 release: + * API reference documentation and API usage examples + * API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: + * `frequency_counter_measurement_mode` + * `frequency_counter_hysteresis_enabled` +* ### `nifgen` (NI-FGEN) + * #### Added + * nifgen_trigger.py example to demonstrate pulling a trigger from another device. +* ### `nitclk` (NI-TClk) + * #### Added + * nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. + * #### Removed + * nitclk_configure.py as it did not do anything. + + +## 1.3.2 - 2020-09-18 +* ### ALL + * #### Changed + * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: + * `autorange` + * `autorange_aperture_time_mode` + * `autorange_behavior` + * `autorange_minimum_aperture_time` + * `autorange_minimum_aperture_time_units` + * `autorange_minimum_current_range` + * `autorange_minimum_voltage_range` + * `autorange_threshold_mode` +* ### `niscope` (NI-SCOPE) + * #### Added + * New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) + * `get_ext_cal_last_date_and_time` + * `get_ext_cal_last_temp` + * `get_self_cal_last_date_and_time` + * `get_self_cal_last_temp` + * Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) + * `add_waveform_processing` + * `clear_waveform_measurement_stats` + * `clear_waveform_processing` + * `fetch_array_measurement` + * `fetch_measurement_stats` + * Measurement library properties. + * `meas_array_gain` + * `meas_array_offset` + * `meas_chan_high_ref_level` + * `meas_chan_low_ref_level` + * `meas_chan_mid_ref_level` + * `meas_filter_center_freq` + * `meas_filter_cutoff_freq` + * `meas_filter_order` + * `meas_filter_ripple` + * `meas_filter_taps` + * `meas_filter_transient_waveform_percent` + * `meas_filter_type` + * `meas_filter_width` + * `meas_fir_filter_window` + * `meas_high_ref` + * `meas_low_ref` + * `meas_mid_ref` + * `meas_hysteresis_percent` + * `meas_interpolation_sampling_factor` + * `meas_last_acq_histogram_size` + * `meas_other_channel` + * `meas_percentage_method` + * `meas_polynomial_interpolation_order` + * `meas_ref_level_units` + * `meas_time_histogram_high_time` + * `meas_time_histogram_high_volts` + * `meas_time_histogram_low_time` + * `meas_time_hisogram_low_volts` + * `meas_time_histogram_size` + * `meas_voltage_histogram_high_volts` + * `meas_voltage_histogram_low_volts` + * `meas_voltage_histogram_size` + * #### Changed + * Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods + * Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero + + +## 1.3.1 - 2020-06-08 +* ### ALL + * #### Changed + * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + +## 1.3.0 - 2020-05-21 +* ### ALL + * #### Changed + * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. +* ### `nidcpower` (NI-DCPower) + * #### Added + * API parity with NI-DCPower 20.0 by adding the following properties: + * `Session.serial_number` + * `Session.actual_power_allocation` + * `Session.requested_power_allocation` + * `Session.power_allocation_mode` +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * 0.9.0 release: + * Public API is considered complete, stable, and tested + * Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 + * API reference documentation and example code are not complete + * #### Changed + * Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) + * Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) + * Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) +* ### `niscope` (NI-SCOPE) + * #### Added + * API parity with NI-SCOPE 20.0 by adding the following properties: + * `Session.end_of_acquisition_event_terminal_name` + * `Session.end_of_record_event_terminal_name` + * `Session.advance_trigger_terminal_name` + * `Session.ref_trigger_terminal_name` + * `Session.start_trigger_terminal_name` + * `Session.ready_for_advance_event_terminal_name` + * `Session.ready_for_ref_event_terminal_name` + * `Session.ready_for_start_event_terminal_name` + + +## 1.2.1 - 2020-04-21 +* ### ALL + * #### Added + * Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) + * Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) + * `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) + * `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) + * #### Changed + * Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) + * `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) + * `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) + * Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): + * Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. + * Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. + * Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. + * Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) + * Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) + * Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) + * In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) + * #### Removed + * `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) + * `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) + * `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) + * `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) + * `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) + * `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) + * `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) +* ### `nitclk` (NI-TClk) + * #### Changed + * Version updated to 1.2.1 to match other released nimi-python modules + + +## 1.2.0 - 2020-03-06 +* ### ALL + * #### Added + * Zip file per driver for all examples and any helper files + * Link to zip file on examples documentation + * Support for Python 3.8 + * #### Changed + * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + * #### Removed + * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) +* ### `nidcpower` (NI-DCPower) + * #### Added + * `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) + * Instead of a list of attribute IDs, you pass in a list of property names as strings + * Includes example to see how to use it + * Additional methods and properties that were made public (rather than private) + * `create_advanced_sequence_step()` + * `delete_advanced_sequence()` + * `active_advanced_sequence` + * `active_advanced_sequence_step` +* ### `nifgen` (NI-FGEN) + * #### Added + * `nifgen.Session.import_attribute_configuration_file()` + * `nifgen.Session.import_attribute_configuration_buffer()` + * `nifgen.Session.export_attribute_configuration_file()` + * `nifgen.Session.export_attribute_configuration_buffer()` + * `nifgen.Session.get_channel_name()` + * #### Changed + * `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` + * See documentation on how to call this function + * Calling the previous way will log a DeprecationWarning to the warning subsystem + * [#1300](https://github.com/ni/nimi-python/issues/1300) +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) + * #### Changed + * `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types + * sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) + * `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) + * Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) + * #### Removed + * Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) + * Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) + * Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` + was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) +* ### `nitclk` (NI-TClk) + * #### Changed + * Method parameters and properties that are time based now take or return a `datetime.timedelta` object + * #### Removed + * Ability to pass an integer as a session / session reference + * `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) + + +## 1.1.5 - 2019-11-22 +* ### ALL + * #### Changed + * Fix #1140: Linux support was accidentally broken. + * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + +## 1.1.4 - 2019-11-19 +* ### ALL + * #### Added + * Support for Python 3.8 + * `ViUInt8` is now a valid type in APIs +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } + * `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } + * `pins` is now a valid repeated capability + * #### Changed + * Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) + * Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) + * Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` + * `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` +* ### `nise` (NI Switch Executive) + * #### Changed + * Version updated to 1.1.4 to match other released nimi-python modules + + +## 1.1.3 - 2019-10-21 +* ### ALL + * #### Changed + * The development status in `setup.py` will be based on the module version: + * version >= 1.0 + * .devN or .aN - Alpha + * .bN, .cN or .rcN - Beta + * \ or .postN - Stable + * version < 1.0 and version >= 0.5 - Beta + * version < 0.5 - Alpha + * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. +* ### `nidcpower` (NI-DCPower) + * #### Changed + * Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) +* ### `nifgen` (NI-FGEN) + * #### Removed + * `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) +* ### `niscope` (NI-SCOPE) + * #### Added + * `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum + * `enabled_channels`, `product_code` properties + * `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums + * `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums + * `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums +* ### `nise` (NI Switch Executive) + * #### Changed + * Update to 1.0 - now ready for production use +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * Initial support + * Very basic at this point and subject to change + * Looking for any testing and/or feedback + * `get_channel_name_from_string()` + * #### Changed + * New enums: + + | Enum name | Where used | + |----------------------------|----------------------------------------------------------------------------------| + | `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | + | `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | + | `PPMUOutputFunction` | `ppmu_output_function` | + | `SelectedFunction` | `selected_function` | + | `TDREndpointTermination` | `tdr_endpoint_termination` | + | `Signal` | `export_signal(signal)` | + * **[Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. + + * #### Removed + * Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, + `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, + `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` + * Need to determine how to generate this function - `fetch_capture_waveform_u32()` +* ### `nitclk` (NI-TClk) + * #### Added + * Initial support + + +## 1.1.2 - 2019-06-06 +* ### ALL + * #### Changed + * Switched to slightly different metadata format - Actual `True`/`False` instead of strings + * New internal process for generating metadata +* ### `nifgen` (NI-FGEN) + * #### Changed + * Enum values for `HardwareState` were incorrect - fix to match niFgen.h +* ### `niscope` (NI-SCOPE) + * #### Changed + * Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` + + +## 1.1.0 - 2018-10-25 +* ### ALL + * #### Changed + * Updated generated metadata + * Updated "Driver Version Tested Against" + * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) +* ### `nidmm` (NI-DMM) + * #### Added + * import_attribute_configuration_file function + * export_attribute_configuration_file function + * import_attribute_configuration_buffer function + * import_attribute_configuration_buffer function +* ### `nidcpower` (NI-DCPower) + * #### Added + * import_attribute_configuration_file function + * export_attribute_configuration_file function + * import_attribute_configuration_buffer function + * import_attribute_configuration_buffer function +* ### `niscope` (NI-SCOPE) + * #### Added + * import_attribute_configuration_file function + * export_attribute_configuration_file function + * import_attribute_configuration_buffer function + * import_attribute_configuration_buffer function + + +## 1.0.1 - 2018-10-17 +* ### ALL + * #### Added + * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) + * #### Changed + * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) +* ### `niscope` (NI-SCOPE) + * #### Changed + * Format of output of wavefrom_info.__str__() +* ### `nise` (NI Switch Executive) + * #### Added + * Initial Release + + +## 1.0.0 - 2018-06-08 +* ### ALL + * #### Removed + * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) +* ### `nidmm` (NI-DMM) + * #### Changed + * Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` + * #### Removed + * `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) + * `latency` - [#875](https://github.com/ni/nimi-python/issues/875) + * `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) + * `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + * `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + * `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) +* ### `nimodinst` (NI-ModInst) + * #### Changed + * Double close will now allow NI-ModInst to return error +* ### `niswitch` (NI-SWITCH) + * #### Removed + * `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + * `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) + * `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) + * `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + * `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + * `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) + * `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) + * `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) + * `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) +* ### `nidcpower` (NI-DCPower) + * #### Removed + * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + * `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` + * `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` + * `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` + * `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` + * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` + * Remove polarity attributes for triggers that are PXI backplane only (only support rising edge) [#860](https://github.com/ni/nimi-python/issues/860) + * `digital_edge_measure_trigger_edge` + * `digital_edge_pulse_trigger_edge` + * `digital_edge_sequence_advance_trigger_edge` + * `digital_edge_source_trigger_edge` + * `digital_edge_start_trigger_edge` +* ### `nifgen` (NI-FGEN) + * #### Changed + * `num_channels` attribute renamed to `channel_count` - now consistent with other drivers + * `send_software_edge_trigger()` no longer takes any parameters. + * To send a start software trigger, call it on the session directly: + ``` python + session.send_software_edge_trigger() + ``` + * To send a script software trigger, call it on the script triggers container: + ``` python + session.script_triggers[1].send_software_edge_trigger() + ``` + * #### Removed + * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + * `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` + * `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` + * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` + * Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) +* ### `niscope` (NI-SCOPE) + * #### Added + * `niscope_fetch_forever.py` example + * #### Removed + * Removed default value for `level` parameter on `configure_trigger_edge()` + * parameter list is now + ``` python + configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + ``` + * Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` + * parameter list is now + ``` python + configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + ``` + +## 0.9.0 - 2018-05-22 +* ### ALL + * #### Added + * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + * Fix thread-safety issues by using IVI session lock where aplicable + * #### Changed + * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + * #### Removed + * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + * `engine_major_version` + * `engine_minor_version` + * `engine_revision` + * `primary_error` + * `secondary_error` + * `error_elaboration` + * `io_session_type` + * `io_session` / `visa_rm_session` + * `group_capabilities` + * `interchange_check` + * `range_check` + * `record_coercions` + * `specific_driver_class_spec_major_version` + * `specific_driver_class_spec_minor_version` + * `query_instrument_status` + * `cache` + * `specific_driver_prefix` +* ### `nidcpower` (NI-DCPower) + * #### Removed + * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + * `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) + * `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) + * Default value for trigger parameter on `send_software_edge_trigger()` [#832](https://github.com/ni/nimi-python/issues/832) +* ### `nifgen` (NI-FGEN) + * #### Changed + * Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. + * `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` + * `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` + * Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) + * `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` + * `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` + * #### Removed + * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + * `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + * `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + * `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + * `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + * `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) + * `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) + * `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) + * `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) + * `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) + * `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) + * `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) + * `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) + * `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) + * `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) + * `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) + * `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) + * `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) + * `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) + * `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) + * `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) + * `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) + * `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) +* ### `niscope` (NI-SCOPE) + * #### Removed + * Properties removed + * `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + * `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + * `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + * `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + * `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + * `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + * `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + * `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + * `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + * `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + * `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + * `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + * `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + * `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + * `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + * Methods removed + * `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) +* ### `nimodinst` (NI-ModInst) + * #### Changed + * Indexing on `nimodinst.Session` is no longer allowed + * `session[0].device_name` becomes `session.devices[0].device_name` + * This is to be consistent with other drivers + +## 0.8.0 - 2018-04-27 +* ### ALL + * #### Changed + * All exceptions raised by the Python bindings inherit from `.Error` + * Exception type formerly known as `.Error` is now known as `.DriverError` + * This encapsulates any error that is returned by the underlying driver + * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) +* ### `nidmm` (NI-DMM) + * #### Changed + * Enum values that start with an underscore + digit have been renamed + * `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` + * `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + * `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + * `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + * `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + * `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + * `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) +* ### `nidcpower` (NI-DCPower) + * #### Changed + * `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) + * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) + * `Session.set_sequence()` values parameter no longer has a default value and must be passed in. Parameter order has changed as a result of this - issue [#797](https://github.com/ni/nimi-python/issues/797) + * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) + * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + * #### Removed + * Advanced Sequence functions - until [#504](https://github.com/ni/nimi-python/issues/504) can be fixed in a proper way + * `create_advanced_sequence()` + * `create_advanced_sequence_step()` + * `delete_advanced_sequence()` +* ### `nifgen` (NI-FGEN) + * #### Changed + * `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) + * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + * #### Removed + * `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python + * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) +* ### `niscope` (NI-SCOPE) + * #### Changed + * `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated + * Takes additional parameters that modify fetch behavior + * Add resulting record as part of the waveform info + * Channel name and record number added to waveform info + * See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), + and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. + * Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` + * Enum values and attribute names that start with an underscore + digit have been renamed + * `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` + * `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` + * `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` + * `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` + * `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` + * `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` + * `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` + * `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` + * `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` + * `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` + * `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` + * `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` + * `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` + * `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` + * `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` + * `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` + * `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` + * `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` + * `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` + * `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` + * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) + * #### Removed + * Following properties are now removed (use parameters to fetch calls): + * `fetch_relative_to` + * `fetch_offset` + * `fetch_record_number` + * `fetch_num_records` + * Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` + * Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) + * `actual_meas_wfm_size()` + * `add_waveform_processing()` + * `clear_waveform_processing()` + * `fetch_array_measurement()` + * `clear_waveform_measurement_stats()` + * `fetch_measurement()` + * `fetch_measurement_stats()` + * `read_measurement()` + * `configure_ref_levels()` + * `meas_ref_level_units` + * `meas_other_channel` + * `meas_hysteresis_percent` + * `meas_last_acq_histogram_size` + * `meas_voltage_histogram_size` + * `meas_voltage_histogram_low_volts` + * `meas_voltage_histogram_high_volts` + * `meas_time_histogram_size` + * `meas_time_histogram_low_volts` + * `meas_time_histogram_high_volts` + * `meas_time_histogram_low_time` + * `meas_time_histogram_high_time` + * `meas_polynomial_interpolation_order` + * `meas_interpolation_sampling_factor` + * `meas_filter_cutoff_freq` + * `meas_filter_center_freq` + * `meas_filter_ripple` + * `meas_filter_transient_waveform_percent` + * `meas_filter_type` + * `meas_filter_order` + * `meas_filter_taps` + * `meas_chan_low_ref_level` + * `meas_chan_mid_ref_level` + * `meas_chan_high_ref_level` + * `meas_filter_width` + * `meas_fir_filter_window` + * `meas_array_gain` + * `meas_array_offset` + * `meas_percentage_method` + * `fetch_meas_num_samples` + +## 0.7.0 - 2018-02-20 +* ### ALL + * #### Changed + * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + * Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion +* ### `nidmm` (NI-DMM) + * #### Changed + * `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + * The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: + * `configure_multi_point()` + * `configure_trigger()` + * `fetch()` + * `fetch_multi_point()` + * `fetch_waveform()` + * `read()` + * `read_multi_point()` + * `read_waveform()` + * The following functions return a `datetime.datetime()` object representing the date and time + * `get_cal_date_and_time()` + * Metadata updated to NI-DMM 17.5 + * #### Removed + * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + * `DCBias` - `DC_BIAS` + * `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` +* ### `niswitch` (NI-SWITCH) + * #### Changed + * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + * `configure_scan_trigger()` + * `wait_for_debounce()` + * `wait_for_scan_complete()` +* ### `nidcpower` (NI-DCPower) + * #### Added + * `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + * #### Changed + * Metadata updated to NI-DCPower 17.6.1 + * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + * `fetch_multiple()` + * `wait_for_event()` + * The following functions return a `datetime.datetime()` object representing the date and time + * `get_ext_cal_last_date_and_time()` + * `get_self_cal_last_date_and_time()` + * #### Removed + * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + * `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` + * `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` + * `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` + * `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` +* ### `nifgen` (NI-FGEN) + * #### Changed + * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + * `channel` repeated capability + * `markers` repeated capability + * `script_triggers` repeated capability + * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + * `adjust_sample_clock_relative_delay()` + * `wait_until_done()` + * The following functions return a `datetime.datetime()` object representing the date and time + * `get_ext_cal_last_date_and_time()` + * `get_self_cal_last_date_and_time()` +* ### `niscope` (NI-SCOPE) + * #### Added + * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + * `channel` repeated capability + * #### Changed + * `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + * `configure_trigger_digital()` + * `configure_trigger_edge()` + * `configure_trigger_hysteresis()` + * `configure_trigger_software()` + * `configure_trigger_video()` + * `configure_trigger_window()` + * `fetch()` + * `fetch_measurement_stats()` + * `read()` + * #### Removed + * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + * `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` + * `BoolEnableDisableChan` - `CHANNEL_ENABLED` + * `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` + * `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` + * `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + +## 0.6.0 - 2017-12-20 +* ### ALL + * #### Added + * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +* ### `nidmm` (NI-DMM) + * #### Added + * `fetch_waveform_into` for high-performance fetch using numpy.array of float64. + * #### Changed + * Property powerline_freq no longer uses enum PowerlineFrequency. + * Property current_source no longer uses enum CurrentSource. + * Property input_resistance no longer uses enum InputResistance. + * Removed `actual_number_of_points` from `fetch_waveform()` returned tuple + * Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple + * Removed `actual_number_of_points` from `read_multi_point()` returned tuple + * Removed `actual_number_of_points` from `read_waveform()` returned tuple +* ### `niswitch` (NI-SWITCH) + * #### Removed + * Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). +* ### `nidcpower` (NI-DCPower) + * #### Changed + * Property power_line_frequency no longer uses enum PowerLineFrequency. + * Removed `actual_count` from `fetch_multiple()` returned tuple +* ### `nifgen` (NI-FGEN) + * #### Added + * Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) + * Support for calling `write_waveform` with a waveform handle (int) or a name (str). + * Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) + * #### Changed + * Renamed `create_waveform_f64` -> `create_waveform` + * #### Removed + * `create_waveform_i16` + * `write_binary16_waveform`: Use `write_waveform` + * `write_named_waveform_i16`: Use `write_waveform` + * `write_named_waveform_f64`: Use `write_waveform` +* ### `niscope` (NI-SCOPE) + * #### Added + * `fetch_into` for high-performance fetch using numpy.array. Supported element types: + * `numpy.float64` + * `numpy.int8` + * `numpy.int16` + * `numpy.int32` + * #### Changed + * Added default values for timeout on all fetch and read functions. + * Property input_impedance no longer uses enum InputImpedance. + * #### Removed + * `AddWaveformProcessing` - See #667 for rationale + * `ClearWaveformProcessing` - See #667 for rationale + * `FetchArrayMeasurement` - See #667 for rationale + +## 0.5.0 - 2017-11-27 +* ### ALL + * #### Removed + * enum definitions that are not referenced by a function and/or an attributes +* ### `nidmm` (NI-DMM) + * #### Added + * `get_ext_cal_recommended_interval` +* ### `nidcpower` (NI-DCPower) + * #### Added + * `get_ext_cal_last_date_and_time` + * `get_ext_cal_last_temp` + * `get_ext_cal_recommended_interval` + * `measure_multiple` +* ### `nifgen` (NI-FGEN) + * #### Removed + * `adjust_sample_clock_relative_delay` +* ### `niscope` (NI-SCOPE) + * #### Added + * Initial release + * #### Removed + * Removed Peer to Peer attributes + +## 0.4.0 - 2017-11-07 +* ### ALL + * #### Changed + * Simplified examples by removing try/except + * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines +* ### `nidmm` (NI-DMM) + * #### Changed + * Removed incorrect leading underscore from some enum values: + * `Function.AC_VOLTS_DC_COUPLED` + * `Function.WAVEFORM_CURRENT` + * `MeasurementCompleteDest.LBR_TRIG_0` + * `OperationMode.IVIDMM_MODE` + * `SampleTrigger.EXTERNAL` + * `SampleTrigger.TTL_3` + * `TriggerSource.TTL_0` + * `TriggerSource.TTL_3` + * `TriggerSource.TTL_7` + * `TriggerSource.PXI_STAR` +* ### `niswitch` (NI-SWITCH) + * #### Removed + * Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. +* ### `nidcpower` (NI-DCPower) + * #### Added + * New example `nidcpower_advanced_sequence.py` + * #### Changed + * Fixed method signature for: + * `wait_for_event` + * `create_sequence` + * `create_advanced_sequence` + * #### Removed + * Support for `measure_multiple` until issue #444 is addressed. +* ### `nifgen` (NI-FGEN) + * #### Added + * Initial release + +## 0.3.0 - 2017-10-13 +* ### ALL + * #### Added + * Support for ViInt64 (64-bit integers) + * #### Changed + * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ```python # Sets sequence on channels 0 through 3 session['0-3'].set_sequence(values, source_delays) ``` - - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - -#### [nimodinst] 0.2.0 - 2017-09-20 -- Added - - (Common) Suport for channel-based properties -- Changed - - (Common) Warnings no longer raise an exception - - Warnings are now added to warnings.warn() - - Device index is now on session not attribute. The correct way is now - ``` python - i = 0 - with nimodinst.Session('nidmm') as session: - name = session[i].device_name - ``` - -#### [nimodinst] 0.1.0 - 2017-09-01 -- Added - - Initial release ---- - -### niscope (NI-SCOPE) - -- [Unreleased](#niscope-unreleased) -- [1.4.9](#niscope-149---2025-02-26) -- [1.4.8](#niscope-148---2024-04-26) -- [1.4.6](#niscope-146---2023-09-11) -- [1.4.5](#niscope-145---2023-06-12) -- [1.4.4](#niscope-144---2023-04-14) -- [1.4.3](#niscope-143---2022-12-16) -- [1.4.1](#niscope-141---2021-08-23) -- [1.3.2](#niscope-132---2020-09-18) -- [1.3.1](#niscope-131---2020-06-08) -- [1.3.0](#niscope-130---2020-05-21) -- [1.2.1](#niscope-121---2020-04-21) -- [1.2.0](#niscope-120---2020-03-06) -- [1.1.5](#niscope-115---2019-11-22) -- [1.1.4](#niscope-114---2019-11-19) -- [1.1.3](#niscope-113---2019-10-21) -- [1.1.2](#niscope-112---2019-06-06) -- [1.1.0](#niscope-110---2018-10-25) -- [1.0.1](#niscope-101---2018-10-17) -- [1.0.0](#niscope-100---2018-06-08) -- [0.9.0](#niscope-090---2018-05-22) -- [0.8.0](#niscope-080---2018-04-27) -- [0.7.0](#niscope-070---2018-02-20) -- [0.6.0](#niscope-060---2017-12-20) -- [0.5.0](#niscope-050---2017-11-27) - -#### [niscope] Unreleased -- Added -- Changed -- Removed - -#### [niscope] 1.4.9 - 2025-02-26 -- Added - - (Common) Support for Python 3.13 -- Changed - - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - (Common) Support for Python 3.8 - -#### [niscope] 1.4.8 - 2024-04-26 -- Added - - (Common) Support for Python 3.12 - -#### [niscope] 1.4.6 - 2023-09-11 -- Changed - - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - (Common) Support for Python 3.7 - - -#### [niscope] 1.4.5 - 2023-06-12 -- Added - - `get_channel_names()` - - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -- Changed - - Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. -- Removed - - (Common) `easy_install` support - -#### [niscope] 1.4.4 - 2023-04-14 -- Added - - (Common) Support for Python 3.11 -- Changed - - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. - -#### [niscope] 1.4.3 - 2022-12-16 -- Added - - (Common) Support for Python 3.10 - - MeasurementLink support -- Removed - - (Common) Support for Python 3.6 - -#### [niscope] 1.4.1 - 2021-08-23 -- Added - - (Common) Support for Python 3.9 -- Removed - - (Common) Support for Python 3.5 - -#### [niscope] 1.3.2 - 2020-09-18 -- Added - - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - - `get_ext_cal_last_date_and_time` - - `get_ext_cal_last_temp` - - `get_self_cal_last_date_and_time` - - `get_self_cal_last_temp` - - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - - `add_waveform_processing` - - `clear_waveform_measurement_stats` - - `clear_waveform_processing` - - `fetch_array_measurement` - - `fetch_measurement_stats` - - Measurement library properties. - - `meas_array_gain` - - `meas_array_offset` - - `meas_chan_high_ref_level` - - `meas_chan_low_ref_level` - - `meas_chan_mid_ref_level` - - `meas_filter_center_freq` - - `meas_filter_cutoff_freq` - - `meas_filter_order` - - `meas_filter_ripple` - - `meas_filter_taps` - - `meas_filter_transient_waveform_percent` - - `meas_filter_type` - - `meas_filter_width` - - `meas_fir_filter_window` - - `meas_high_ref` - - `meas_low_ref` - - `meas_mid_ref` - - `meas_hysteresis_percent` - - `meas_interpolation_sampling_factor` - - `meas_last_acq_histogram_size` - - `meas_other_channel` - - `meas_percentage_method` - - `meas_polynomial_interpolation_order` - - `meas_ref_level_units` - - `meas_time_histogram_high_time` - - `meas_time_histogram_high_volts` - - `meas_time_histogram_low_time` - - `meas_time_hisogram_low_volts` - - `meas_time_histogram_size` - - `meas_voltage_histogram_high_volts` - - `meas_voltage_histogram_low_volts` - - `meas_voltage_histogram_size` -- Changed - - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - - Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods - - Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero - - - -#### [niscope] 1.3.1 - 2020-06-08 -- Changed - - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -#### [niscope] 1.3.0 - 2020-05-21 -- Added - - API parity with NI-SCOPE 20.0 by adding the following properties: - - `Session.end_of_acquisition_event_terminal_name` - - `Session.end_of_record_event_terminal_name` - - `Session.advance_trigger_terminal_name` - - `Session.ref_trigger_terminal_name` - - `Session.start_trigger_terminal_name` - - `Session.ready_for_advance_event_terminal_name` - - `Session.ready_for_ref_event_terminal_name` - - `Session.ready_for_start_event_terminal_name` -- Changed - - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -#### [niscope] 1.2.1 - 2020-04-21 -- Added - - (Common) Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste +* ### `nidmm` (NI-DMM) + * #### Changed + * Added default values to some parameters. + * #### Removed + * Removed methods that aren’t useful in the Python bindings. +* ### `niswitch` (NI-SWITCH) + * #### Changed + * Added default values to some parameters. + * #### Removed + * Removed methods that aren’t useful in the Python bindings. +* ### `nidcpower` (NI-DCPower) + * #### Added + * Initial release + +## 0.2.0 - 2017-09-20 +* ### ALL + * #### Added + * Suport for channel-based properties + * #### Changed + * Warnings no longer raise an exception + * Warnings are now added to warnings.warn() +* ### `nidmm` (NI-DMM) + * #### Changed + * Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) +* ### `nimodinst` (NI-ModInst) + * #### Changed + * Device index is now on session not attribute. The correct way is now + ```python + i = 0 + with nimodinst.Session('nidmm') as session: + name = session[i].device_name ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [niscope] 1.2.0 - 2020-03-06 -- Added - - (Common) Zip file per driver for all examples and any helper files - - (Common) Link to zip file on examples documentation - - (Common) Support for Python 3.8 -- Changed - - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) -- Removed - - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [niscope] 1.1.5 - 2019-11-22 -- Changed - - (Common) Fix #1140: Linux support was accidentally broken. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -#### [niscope] 1.1.4 - 2019-11-19 -- Added - - (Common) Support for Python 3.8 - - (Common) `ViUInt8` is now a valid type in APIs - -#### [niscope] 1.1.3 - 2019-10-21 -- Added - - `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum - - `enabled_channels`, `product_code` properties - - `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums - - `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums - - `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums -- Changed - - (Common) The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha - - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -#### [niscope] 1.1.2 - 2019-06-06 -- Changed - - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - (Common) New internal process for generating metadata - - Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` - -#### [niscope] 1.1.0 - 2018-10-25 -- Added - - import_attribute_configuration_file function - - export_attribute_configuration_file function - - import_attribute_configuration_buffer function - - import_attribute_configuration_buffer function - -- Changed - - (Common) Updated generated metadata - - (Common) Updated "Driver Version Tested Against" - - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [niscope] 1.0.1 - 2018-10-17 -- Added - - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - - Format of output of wavefrom_info.__str__() - -#### [niscope] 1.0.0 - 2018-06-08 -- Added - - `niscope_fetch_forever.py` example -- Removed - - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - - Removed default value for `level` parameter on `configure_trigger_edge()` - parameter list is now - - ``` python - - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - - ``` - - Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` - parameter list is now - - ``` python - - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - - ``` - -#### [niscope] 0.9.0 - 2018-05-22 -- Added - - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) -- Removed - - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` - - Properties removed - - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - Methods removed - - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - -#### [niscope] 0.8.0 - 2018-04-27 -- Changed - - (Common) All exceptions raised by the Python bindings inherit from `.Error` - - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver - - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - - Takes additional parameters that modify fetch behavior - - Add resulting record as part of the waveform info - - Channel name and record number added to waveform info - - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - - Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - - Enum values and attribute names that start with an underscore + digit have been renamed - - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` - - `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` - - `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` - - `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` - - `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` - - `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` - - `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` - - `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` - - `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` - - `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` - - `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` - - `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` - - `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` - - `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` - - `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` - - `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` - - `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` - - `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` - - `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` - - `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` - - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) -- Removed - - Following properties are now removed (use parameters to fetch calls): - - `fetch_relative_to` - - `fetch_offset` - - `fetch_record_number` - - `fetch_num_records` - - Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - - Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - - `actual_meas_wfm_size()` - - `add_waveform_processing()` - - `clear_waveform_processing()` - - `fetch_array_measurement()` - - `clear_waveform_measurement_stats()` - - `fetch_measurement()` - - `fetch_measurement_stats()` - - `read_measurement()` - - `configure_ref_levels()` - - `meas_ref_level_units` - - `meas_other_channel` - - `meas_hysteresis_percent` - - `meas_last_acq_histogram_size` - - `meas_voltage_histogram_size` - - `meas_voltage_histogram_low_volts` - - `meas_voltage_histogram_high_volts` - - `meas_time_histogram_size` - - `meas_time_histogram_low_volts` - - `meas_time_histogram_high_volts` - - `meas_time_histogram_low_time` - - `meas_time_histogram_high_time` - - `meas_polynomial_interpolation_order` - - `meas_interpolation_sampling_factor` - - `meas_filter_cutoff_freq` - - `meas_filter_center_freq` - - `meas_filter_ripple` - - `meas_filter_transient_waveform_percent` - - `meas_filter_type` - - `meas_filter_order` - - `meas_filter_taps` - - `meas_chan_low_ref_level` - - `meas_chan_mid_ref_level` - - `meas_chan_high_ref_level` - - `meas_filter_width` - - `meas_fir_filter_window` - - `meas_array_gain` - - `meas_array_offset` - - `meas_percentage_method` - - `fetch_meas_num_samples` - -#### [niscope] 0.7.0 - 2018-02-20 -- Added - - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - `channel` repeated capability -- Changed - - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - `configure_trigger_digital()` - `configure_trigger_edge()` - `configure_trigger_hysteresis()` - `configure_trigger_software()` - `configure_trigger_video()` - `configure_trigger_window()` - `fetch()` - `fetch_measurement_stats()` - `read()` -- Removed - - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` - `BoolEnableDisableChan` - `CHANNEL_ENABLED` - `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` - `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` - `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` - -#### [niscope] 0.6.0 - 2017-12-20 -- Added - - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - `fetch_into` for high-performance fetch using numpy.array. Supported element types: - - `numpy.float64` - - `numpy.int8` - - `numpy.int16` - - `numpy.int32` -- Changed - - Added default values for timeout on all fetch and read functions. - - Property input_impedance no longer uses enum InputImpedance. -- Removed - - `AddWaveformProcessing` - See #667 for rationale - - `ClearWaveformProcessing` - See #667 for rationale - - `FetchArrayMeasurement` - See #667 for rationale - -#### [niscope] 0.5.0 - 2017-11-27 -- Added - - Initial release ---- - -### nise (NI-Switch Executive) - -- [Unreleased](#nise-unreleased) -- [1.4.9](#nise-149---2025-02-26) -- [1.4.8](#nise-148---2024-04-26) -- [1.4.6](#nise-146---2023-09-11) -- [1.4.5](#nise-145---2023-06-12) -- [1.4.4](#nise-144---2023-04-14) -- [1.4.3](#nise-143---2022-12-16) -- [1.4.1](#nise-141---2021-08-23) -- [1.3.2](#nise-132---2020-09-18) -- [1.3.1](#nise-131---2020-06-08) -- [1.3.0](#nise-130---2020-05-21) -- [1.2.1](#nise-121---2020-04-21) -- [1.2.0](#nise-120---2020-03-06) -- [1.1.5](#nise-115---2019-11-22) -- [1.1.4](#nise-114---2019-11-19) -- [1.1.3](#nise-113---2019-10-21) -- [1.1.2](#nise-112---2019-06-06) -- [1.1.0](#nise-110---2018-10-25) -- [1.0.1](#nise-101---2018-10-17) - -#### [nise] Unreleased -- Added -- Changed -- Removed - -#### [nise] 1.4.9 - 2025-02-26 -- Added - - (Common) Support for Python 3.13 -- Changed - - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - (Common) Support for Python 3.8 - -#### [nise] 1.4.8 - 2024-04-26 -- Added - - (Common) Support for Python 3.12 - -#### [nise] 1.4.6 - 2023-09-11 -- Changed - - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - (Common) Support for Python 3.7 - -#### [nise] 1.4.5 - 2023-06-12 -- Removed - - (Common) `easy_install` support - -#### [nise] 1.4.4 - 2023-04-14 -- Added - - (Common) Support for Python 3.11 -- Changed - - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [nise] 1.4.3 - 2022-12-16 -- Added - - (Common) Support for Python 3.10 -- Removed - - (Common) Support for Python 3.6 - -#### [nise] 1.4.1 - 2021-08-23 -- Added - - (Common) Support for Python 3.9 -- Removed - - (Common) Support for Python 3.5 - -#### [nise] 1.3.2 - 2020-09-18 -- Changed - - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [nise] 1.3.1 - 2020-06-08 -- Changed - - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - - -#### [nise] 1.3.0 - 2020-05-21 -- Changed - - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [nise] 1.2.1 - 2020-04-21 -- Added - - (Common) Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [nise] 1.2.0 - 2020-03-06 -- Added - - (Common) Zip file per driver for all examples and any helper files - - (Common) Link to zip file on examples documentation - - (Common) Support for Python 3.8 -- Changed - - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) -- Removed - - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [nise] 1.1.5 - 2019-11-22 -- Changed - - (Common) Fix #1140: Linux support was accidentally broken. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -#### [nise] 1.1.4 - 2019-11-19 -- Added - - (Common) Support for Python 3.8 - - (Common) `ViUInt8` is now a valid type in APIs -- Changed - - Version updated to 1.1.4 to match other released nimi-python modules - -#### [nise] 1.1.3 - 2019-10-21 -- Changed - - (Common) The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha - - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - - Update to 1.0 - now ready for production use - -#### [nise] 1.1.2 - 2019-06-06 -- Changed - - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - (Common) New internal process for generating metadata - -#### [nise] 1.1.0 - 2018-10-25 -- Changed - - (Common) Updated generated metadata - - (Common) Updated "Driver Version Tested Against" - - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [nise] 1.0.1 - 2018-10-17 -- Added - - Initial Release ---- - -### niswitch (NI-SWITCH) - -- [Unreleased](#niswitch-unreleased) -- [1.4.9](#niswitch-149---2025-02-26) -- [1.4.8](#niswitch-148---2024-04-26) -- [1.4.6](#niswitch-146---2023-09-11) -- [1.4.5](#niswitch-145---2023-06-12) -- [1.4.4](#niswitch-144---2023-04-14) -- [1.4.3](#niswitch-143---2022-12-16) -- [1.4.1](#niswitch-141---2021-08-23) -- [1.3.3](#niswitch-133---2021-02-26) -- [1.3.2](#niswitch-132---2020-09-18) -- [1.3.1](#niswitch-131---2020-06-08) -- [1.3.0](#niswitch-130---2020-05-21) -- [1.2.1](#niswitch-121---2020-04-21) -- [1.2.0](#niswitch-120---2020-03-06) -- [1.1.5](#niswitch-115---2019-11-22) -- [1.1.4](#niswitch-114---2019-11-19) -- [1.1.3](#niswitch-113---2019-10-21) -- [1.1.2](#niswitch-112---2019-06-06) -- [1.1.0](#niswitch-110---2018-10-25) -- [1.0.1](#niswitch-101---2018-10-17) -- [1.0.0](#niswitch-100---2018-06-08) -- [0.9.0](#niswitch-090---2018-05-22) -- [0.8.0](#niswitch-080---2018-04-27) -- [0.7.0](#niswitch-070---2018-02-20) -- [0.6.0](#niswitch-060---2017-12-20) -- [0.5.0](#niswitch-050---2017-11-27) -- [0.4.0](#niswitch-040---2017-11-07) -- [0.3.0](#niswitch-030---2017-10-13) -- [0.2.0](#niswitch-020---2017-09-20) - -#### [niswitch] Unreleased -- Added -- Changed -- Removed - -#### [niswitch] 1.4.9 - 2025-02-26 -- Added - - (Common) Support for Python 3.13 -- Changed - - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - (Common) Support for Python 3.8 - -#### [niswitch] 1.4.8 - 2024-04-26 -- Added - - (Common) Support for Python 3.12 - -#### [niswitch] 1.4.6 - 2023-09-11 -- Changed - - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - (Common) Support for Python 3.7 - - -#### [niswitch] 1.4.5 - 2023-06-12 -- Added - - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -- Removed - - (Common) `easy_install` support - -#### [niswitch] 1.4.4 - 2023-04-14 -- Added - - (Common) Support for Python 3.11 -- Changed - - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [niswitch] 1.4.3 - 2022-12-16 -- Added - - (Common) Support for Python 3.10 - - MeasurementLink support -- Changed - - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page -- Removed - - (Common) Support for Python 3.6 - -#### [niswitch] 1.4.1 - 2021-08-23 -- Added - - (Common) Support for Python 3.9 -- Removed - - (Common) Support for Python 3.5 - -#### [niswitch] 1.3.2 - 2020-09-18 -- Changed - - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [niswitch] 1.3.1 - 2020-06-08 -- Changed - - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -#### [niswitch] 1.3.0 - 2020-05-21 -- Changed - - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [niswitch] 1.2.1 - 2020-04-21 -- Added - - (Common) Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` - -#### [niswitch] 1.2.0 - 2020-03-06 -- Added - - (Common) Zip file per driver for all examples and any helper files - - (Common) Link to zip file on examples documentation - - (Common) Support for Python 3.8 -- Changed - - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) -- Removed - - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - -#### [niswitch] 1.1.5 - 2019-11-22 -- Changed - - (Common) Fix #1140: Linux support was accidentally broken. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -#### [niswitch] 1.1.4 - 2019-11-19 -- Added - - (Common) Support for Python 3.8 - - (Common) `ViUInt8` is now a valid type in APIs - -#### [niswitch] 1.1.3 - 2019-10-21 -- Changed - - (Common) The development status in `setup.py` will be based on the module version: - - version >= 1.0 - - .devN or .aN - Alpha - - .bN, .cN or .rcN - Beta - - \ or .postN - Stable - - version < 1.0 and version >= 0.5 - Beta - - version < 0.5 - Alpha - - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - -#### [niswitch] 1.1.2 - 2019-06-06 -- Changed - - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings - - (Common) New internal process for generating metadata - -#### [niswitch] 1.1.0 - 2018-10-25 -- Changed - - (Common) Updated generated metadata - - (Common) Updated "Driver Version Tested Against" - - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) - -#### [niswitch] 1.0.1 - 2018-10-17 -- Added - - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) -- Changed - - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) - -#### [niswitch] 1.0.0 - 2018-06-08 -- Removed - - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - - `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - - `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) - - `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) - - `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - - `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - - `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) - - `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) - - `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) - - `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) - -#### [niswitch] 0.9.0 - 2018-05-22 -- Added - - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - - (Common) Fix thread-safety issues by using IVI session lock where aplicable -- Changed - - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) -- Removed - - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - - `engine_major_version` - - `engine_minor_version` - - `engine_revision` - - `primary_error` - - `secondary_error` - - `error_elaboration` - - `io_session_type` - - `io_session` / `visa_rm_session` - - `group_capabilities` - - `interchange_check` - - `range_check` - - `record_coercions` - - `specific_driver_class_spec_major_version` - - `specific_driver_class_spec_minor_version` - - `query_instrument_status` - - `cache` - - `specific_driver_prefix` - -#### [niswitch] 0.8.0 - 2018-04-27 -- Changed - - (Common) All exceptions raised by the Python bindings inherit from `.Error` - - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` - - This encapsulates any error that is returned by the underlying driver - - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - -#### [niswitch] 0.7.0 - 2018-02-20 -- Changed - - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - - Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - - `configure_scan_trigger()` - - `wait_for_debounce()` - - `wait_for_scan_complete()` - -#### [niswitch] 0.6.0 - 2017-12-20 -- Added - - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -- Removed - - Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). - -#### [niswitch] 0.5.0 - 2017-11-27 -- Removed - - (Common) enum definitions that are not referenced by a function and/or an attributes - -#### [niswitch] 0.4.0 - 2017-11-07 -- Changed -(Common) Simplified examples by removing try/except -(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines -- Removed -Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. - -#### [niswitch] 0.3.0 - 2017-10-13 -- Added - - (Common) Support for ViInt64 (64-bit integers) -- Changed - - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ``` python - # Sets sequence on channels 0 through 3 - session['0-3'].set_sequence(values, source_delays) - ``` - - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste - - Added default values to some parameters. -- Removed - - Removed methods that aren’t useful in the Python bindings. - -#### [niswitch] 0.2.0 - 2017-09-20 -- Added - - Initial release ---- - -### nitclk (NI-TCLK) - -- [Unreleased](#nitclk-unreleased) -- [1.4.9](#nitclk-149---2025-02-26) -- [1.4.8](#nitclk-148---2024-04-26) -- [1.4.6](#nitclk-146---2023-09-11) -- [1.4.5](#nitclk-145---2023-06-12) -- [1.4.4](#nitclk-144---2023-04-14) -- [1.4.3](#nitclk-143---2022-12-16) -- [1.4.1](#nitclk-141---2021-08-23) -- [1.3.3](#nitclk-133---2021-02-26) -- [1.3.2](#nitclk-132---2020-09-18) -- [1.3.1](#nitclk-131---2020-06-08) -- [1.3.0](#nitclk-130---2020-05-21) -- [1.2.1](#nitclk-121---2020-04-21) -- [1.2.0](#nitclk-120---2020-03-06) -- [1.1.5](#nitclk-115---2019-11-22) -- [1.1.4](#nitclk-114---2019-11-19) -- [1.1.3](#nitclk-113---2019-10-21) - -#### [nitclk] Unreleased -- Added -- Changed -- Removed - -#### [nitclk] 1.4.9 - 2025-02-26 -- Added - - (Common) Support for Python 3.13 -- Changed - - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) -- Removed - - (Common) Support for Python 3.8 - -#### [nitclk] 1.4.8 - 2024-04-26 -- Added - - (Common) Support for Python 3.12 - -#### [nitclk] 1.4.6 - 2023-09-11 -- Changed - - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. -- Removed - - (Common) Support for Python 3.7 - -#### [nitclk] 1.4.5 - 2023-06-12 -- Removed - - (Common) `easy_install` support - -#### [nitclk] 1.4.4 - 2023-04-14 -- Added - - (Common) Support for Python 3.11 -- Changed - - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - -#### [nitclk] 1.4.3 - 2022-12-16 -- Added - - (Common) Support for Python 3.10 -- Removed - - (Common) Support for Python 3.6 - -#### [nitclk] 1.4.1 - 2021-08-23 -- Added - - (Common) Support for Python 3.9 -- Removed - - (Common) Support for Python 3.5 - -#### [nitclk] 1.3.3 - 2021-02-26 -- Added - - nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. -- Removed - - nitclk_configure.py as it did not do anything. - -#### [nitclk] 1.3.2 - 2020-09-18 -- Changed - - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. - -#### [nitclk] 1.3.1 - 2020-06-08 -- Changed - - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - -#### [nitclk] 1.3.0 - 2020-05-21 -- Changed - - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. - -#### [nitclk] 1.2.1 - 2020-04-21 -- Added - - (Common) Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` -- Changed - - Version updated to 1.2.1 to match other released nimi-python modules - -#### [nitclk] 1.2.0 - 2020-03-06 -- Added - - (Common) Zip file per driver for all examples and any helper files - - (Common) Link to zip file on examples documentation - - (Common) Support for Python 3.8 -- Changed - - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - - Method parameters and properties that are time based now take or return a `datetime.timedelta` object -- Removed - - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) - - Ability to pass an integer as a session / session reference - - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) - -#### [nitclk] 1.1.5 - 2019-11-22 -- Changed - - (Common) Fix #1140: Linux support was accidentally broken. - - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - -#### [nitclk] 1.1.4 - 2019-11-19 -- Added - - (Common) Support for Python 3.8 - - (Common) `ViUInt8` is now a valid type in APIs - -#### [nitclk] 1.1.3 - 2019-10-21 -- Added - - Initial support - +* ### `niswitch` (NI-SWITCH) + * #### Added + * Initial release + +## 0.1.0 - 2017-09-01 +* ### `nidmm` (NI-DMM) + * #### Added + * Initial release +* ### `nimodinst` (NI-ModInst) + * #### Added + * Initial release The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). \ No newline at end of file +* [Unreleased](#unreleased) +## Unreleased +* ### ALL + * #### Added + * #### Changed + * #### Removed +* ### `nidcpower` (NI-DCPower) + * #### Added + * #### Changed + * #### Removed +* ### `nidigital` (NI-Digital Pattern Driver) + * #### Added + * #### Changed + * #### Removed +* ### `nidmm` (NI-DMM) + * #### Added + * #### Changed + * #### Removed +* ### `nifgen` (NI-FGEN) + * #### Added + * #### Changed + * #### Removed +* ### `nimodinst` (NI-ModInst) + * #### Added + * #### Changed + * #### Removed +* ### `niscope` (NI-SCOPE) + * #### Added + * #### Changed + * #### Removed +* ### `niswitch` (NI-SWITCH) + * #### Added + * #### Changed + * #### Removed +* ### `nise` (NI Switch Executive) + * #### Added + * #### Changed + * #### Removed +* ### `nitclk` (NI-TClk) + * #### Added + * #### Changed + * #### Removed +--> diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c53a1d4c..494e4debe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,7 +124,7 @@ begin contributing to to the project. 1. Make your change. 1. Verify all tests, including the new ones, pass. 1. Update CHANGELOG.md for customer-visible changes. - * If the change applies to all generated driver bindings, put the change into all drivers. + * If the change applies to all generated driver bindings, put the change into the **ALL** section * If it only applies to a single driver binding, put the change in the section associated with that driver * DO NOT MENTION: Internal-only changes like refactors or test improvements. 1. Commit modifications to generated files. @@ -166,8 +166,7 @@ Release Process ``` * Commit to branch 1. Update [CHANGELOG.md](./CHANGELOG.md) - * Delete empty (i.e. No changes) sub-sections under "Unreleased" section for each drivers. - * Remove the Unreleased section from the TOC if there are no changes for those drivers. + * Delete empty (i.e. No changes) sub-sections under "Unreleased" section * Change the "Unreleased" header to the version of the release * Change [Unreleased] in TOC to the version of the release * Commit to branch @@ -210,7 +209,7 @@ Release Process * Ensure that all changes made as part of build command are specific to intended drivers. * Commit to branch 1. Update changelog - * Copy Unreleased section from the bottom of the changelog. Modify the driver name in the example and TOC. Paste the modified section at the top of each driver's changelog and add a corresponding link to it in the driver's TOC. + * Copy Unreleased section from bottom of changelog to the top and add a link to it in the TOC * Commit to branch 1. Create a pull request containing post-release changes and get it merged From 47922c9e64d8638cb78951a88afb27627c7a06a0 Mon Sep 17 00:00:00 2001 From: dummy Date: Wed, 9 Apr 2025 14:33:15 +0530 Subject: [PATCH 20/32] Changelogchanges for releasing indivitual drivers. --- CHANGELOG.md | 4021 +++++++++++++++++++++++++++++++---------------- CONTRIBUTING.md | 7 +- 2 files changed, 2630 insertions(+), 1398 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cebcb3e7..bc7d7a725 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1406 +1,2637 @@ # Changelog + +## Drivers +- [nidcpower (NI-DCPower)](#nidcpower-ni-dcpower) +- [nidigital (NI-Digital Pattern Driver)](#nidigital-ni-digital-pattern-driver) +- [nidmm (NI-DMM)](#nidmm-ni-dmm) +- [nifgen (NI-FGEN)](#nifgen-ni-fgen) +- [nimodinst (NI-ModInst)](#nimodinst-ni-modinst) +- [niscope (NI-SCOPE)](#niscope-ni-scope) +- [nise (NI-Switch Executive)](#nise-ni-switch-executive) +- [niswitch (NI-SWITCH)](#niswitch-ni-switch) +- [nitclk (NI-TCLK)](#nitclk-ni-tclk) -* [Unreleased](#unreleased) -* [1.4.9](#149---2025-02-26) -* [1.4.8](#148---2024-04-26) -* [1.4.7](#147---2023-12-15) -* [1.4.6](#146---2023-09-11) -* [1.4.5](#145---2023-06-12) -* [1.4.4](#144---2023-04-14) -* [1.4.3](#143---2022-12-16) -* [1.4.2](#142---2022-08-03) -* [1.4.1](#141---2021-08-23) -* [1.4.0](#140---2021-07-09) -* [1.3.3](#133---2021-02-26) -* [1.3.2](#132---2020-09-18) -* [1.3.1](#131---2020-06-08) -* [1.3.0](#130---2020-05-21) -* [1.2.1](#121---2020-04-21) -* [1.2.0](#120---2020-03-06) -* [1.1.5](#115---2019-11-22) -* [1.1.4](#114---2019-11-19) -* [1.1.3](#113---2019-10-21) -* [1.1.2](#112---2019-06-06) -* [1.1.0](#110---2018-10-25) -* [1.0.1](#101---2018-10-17) -* [1.0.0](#100---2018-06-08) -* [0.9.0](#090---2018-05-22) -* [0.8.0](#080---2018-04-27) -* [0.7.0](#070---2018-02-20) -* [0.6.0](#060---2017-12-20) -* [0.5.0](#050---2017-11-27) -* [0.4.0](#040---2017-11-07) -* [0.3.0](#030---2017-10-13) -* [0.2.0](#020---2017-09-20) -* [0.1.0](#010---2017-09-01) - -All notable changes to this project will be documented in this file. - -* [Unreleased](#unreleased) -## Unreleased -* ### ALL - * #### Added - * #### Changed - * #### Removed -* ### `nidcpower` (NI-DCPower) - * #### Added - * #### Changed - * #### Removed -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * #### Changed - * #### Removed -* ### `nidmm` (NI-DMM) - * #### Added - * #### Changed - * #### Removed -* ### `nifgen` (NI-FGEN) - * #### Added - * #### Changed - * #### Removed -* ### `nimodinst` (NI-ModInst) - * #### Added - * #### Changed - * #### Removed -* ### `niscope` (NI-SCOPE) - * #### Added - * #### Changed - * #### Removed -* ### `niswitch` (NI-SWITCH) - * #### Added - * #### Changed - * #### Removed -* ### `nise` (NI Switch Executive) - * #### Added - * #### Changed - * #### Removed -* ### `nitclk` (NI-TClk) - * #### Added - * #### Changed - * #### Removed - - -## 1.4.9 - 2025-02-26 -* ### ALL - * #### Added - * Support for Python 3.13 - * #### Changed - * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) - * #### Removed - * Support for Python 3.8 -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 2025 Q1. - * Enum value added: - * `INHIBITED` added to enum `OutputStates`. - * #### Changed - * Fixed #2067: `nidcpower.OutputStates` values are incorrect. -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * Methods Added: - * `enable_match_fail_combination` - -## 1.4.8 - 2024-04-26 -* ### ALL - * #### Added - * Support for Python 3.12 -* ### `nidcpower` (NI-DCPower) - * #### Changed - * Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. -* ### `nifgen` (NI-FGEN) - * #### Added - * Properties added: - * `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - * Enum added: - * `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) - -## 1.4.7 - 2023-12-15 -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 2023 Q4. - * Properties added: - * `current_level_rising_slew_rate` - * `current_level_falling_slew_rate` - * `conduction_voltage_mode` - * `conduction_voltage_on_threshold` - * `conduction_voltage_off_threshold` - * `output_cutoff_voltage_measure_limit_high` - * `output_cutoff_voltage_measure_limit_low` - * Enum added: - * `ConductionVoltageMode` - * Enum values added: - * `E_LOAD` added to enum `InstrumentMode` - * `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` - -## 1.4.6 - 2023-09-11 -* ### ALL - * #### Changed - * Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. - * Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. - * #### Removed - * Support for Python 3.7 - -## 1.4.5 - 2023-06-12 -* ### ALL - * #### Removed - * `easy_install` support -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -* ### `nidmm` (NI-DMM) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -* ### `nifgen` (NI-FGEN) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. -* ### `niscope` (NI-SCOPE) - * #### Added - * `get_channel_names()` - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * #### Changed - * Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. -* ### `niswitch` (NI-SWITCH) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - -## 1.4.4 - 2023-04-14 -* ### ALL - * #### Added - * Support for Python 3.11 - * #### Changed - * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. -* ### `nidcpower` (NI-DCPower) - * #### Added - * Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. - * API parity with NI-DCPower 2023 Q2. - * Properties added: - * `lcr_ac_dither_enabled` - * `lcr_ac_electrical_cable_length_delay` - * `lcr_dc_bias_transient_response` - * `lcr_source_aperture_time` - * `measure_complete_event_output_behavior` - * `measure_complete_event_toggle_initial_state` - * `sequence_engine_done_event_output_behavior` - * `sequence_engine_done_event_toggle_initial_state` - * `sequence_iteration_complete_event_output_behavior` - * `sequence_iteration_complete_event_toggle_initial_state` - * `source_complete_event_output_behavior` - * `source_complete_event_toggle_initial_state` - * Enums added: - * `CurrentLimitBehavior` - * `EventOutputBehavior` - * `EventToggleInitialState` - * `LCRDCBiasTransientResponse` - * Enum values added: - * `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` - * `NI_STANDARD_0_5M` added to enum `CableLength` - * Methods added: - * `configure_lcr_compensation` - * `get_lcr_compensation_data` - * #### Changed - * Enums reordered: - * `AutoZero` - * `CableLength` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Changed - * Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). -* ### `niscope` (NI-SCOPE) - * #### Changed - * Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - * Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. - -## 1.4.3 - 2022-12-16 -* ### ALL - * #### Added - * Support for Python 3.10 - * #### Removed - * Support for Python 3.6 -* ### `nidcpower` (NI-DCPower) - * #### Added - * MeasurementLink support - * #### Changed - * Binary compatibility change for type `LCRLoadCompensationSpot` on Linux. Client code using method `nidcpower.Session.perform_lcr_load_compensation` on Linux now requires NI-DCPower 2023 Q1 driver runtime or newer. -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * MeasurementLink support -* ### `nidmm` (NI-DMM) - * #### Added - * MeasurementLink support -* ### `nifgen` (NI-FGEN) - * #### Added - * MeasurementLink support -* ### `niscope` (NI-SCOPE) - * #### Added - * MeasurementLink support -* ### `niswitch` (NI-SWITCH) - * #### Added - * MeasurementLink support - * #### Changed - * Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page - -## 1.4.2 - 2022-08-03 -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 2022 Q3. - * Properties added: - * `aperture_time_auto_mode` - * `autorange_maximum_delay_after_range_change` - * `cable_length` - * `instrument_mode` - * `isolation_state` - * `lcr_actual_load_reactance` - * `lcr_actual_load_resistance` - * `lcr_automatic_level_control` - * `lcr_current_amplitude` - * `lcr_current_range` - * `lcr_custom_measurement_time` - * `lcr_dc_bias_automatic_level_control` - * `lcr_dc_bias_current_level` - * `lcr_dc_bias_current_range` - * `lcr_dc_bias_source` - * `lcr_dc_bias_voltage_level` - * `lcr_dc_bias_voltage_range` - * `lcr_frequency` - * `lcr_impedance_auto_range` - * `lcr_impedance_range` - * `lcr_impedance_range_source` - * `lcr_load_capacitance` - * `lcr_load_compensation_enabled` - * `lcr_load_inductance` - * `lcr_load_resistance` - * `lcr_measured_load_reactance` - * `lcr_measured_load_resistance` - * `lcr_measurement_time` - * `lcr_open_compensation_enabled` - * `lcr_open_conductance` - * `lcr_open_short_load_compensation_data_source` - * `lcr_open_susceptance` - * `lcr_short_compensation_enabled` - * `lcr_short_custom_cable_compensation_enabled` - * `lcr_short_reactance` - * `lcr_short_resistance` - * `lcr_source_delay_mode` - * `lcr_stimulus_function` - * `lcr_voltage_amplitude` - * `lcr_voltage_range` - * Enums added: - * `ApertureTimeAutoMode` - * `CableLength` - * `InstrumentMode` - * `LCRCompensationType` - * `LCRDCBiasSource` - * `LCRImpedanceRangeSource` - * `LCRMeasurementTime` - * `LCROpenShortLoadCompensationDataSource` - * `LCRReferenceValueType` - * `LCRSourceDelayMode` - * `LCRStimulusFunction` - * Methods added: - * `configure_lcr_custom_cable_compensation` - * `fetch_multiple_lcr` - * `get_lcr_compensation_last_date_and_time` - * `get_lcr_custom_cable_compensation_data` - * `measure_multiple_lcr` - * `perform_lcr_load_compensation` - * `perform_lcr_open_compensation` - * `perform_lcr_open_custom_cable_compensation` - * `perform_lcr_short_compensation` - * `perform_lcr_short_custom_cable_compensation` - * Custom types added: - * `LCRLoadCompensationSpot` - * `LCRMeasurement` - * `nidcpower_lcr_source_ac_voltage.py` example - * #### Changed - * Updated supported devices information in documentation for methods and properties - * Added `channel` field to the `Measurement` namedtuple instances returned by `fetch_multiple` and `measure_multiple` -* ### `nifgen` (NI-FGEN) - * #### Added - * `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) - * #### Changed - * Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities - * `channels` - * `markers` - * `data_markers` - * `script_triggers` - * Corrected multiple mistakes in repeated capability info of attribute metadata - * alters API behavior (repeated capability access of attributes) and documentation - - -## 1.4.1 - 2021-08-23 -* ### ALL - * #### Added - * Support for Python 3.9 - * #### Removed - * Support for Python 3.5 -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 21.0.0. - * Properties added: - * `output_cutoff_delay` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * API parity with NI-Digital Pattern Driver 21.0.0. - * Properties added: - * `digital_edge_rio_trigger_edge` - * `digital_edge_rio_trigger_source` - * `exported_rio_event_output_terminal` - * `rio_event_terminal_name` - * `rio_trigger_terminal_name` - * `rio_trigger_type` - * Repeated Capabilities added: - * `rio_events` - * `rio_triggers` - - -## 1.4.0 - 2021-07-09 -* ### `nidcpower` (NI-DCPower) - * #### Added - * `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) - * `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) - * API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. - * Properties added: - * `output_cutoff_current_change_limit_high` - * `output_cutoff_current_change_limit_low` - * `output_cutoff_current_measure_limit_high` - * `output_cutoff_current_measure_limit_low` - * `output_cutoff_current_overrange_enabled` - * `output_cutoff_enabled` - * `output_cutoff_voltage_change_limit_high` - * `output_cutoff_voltage_change_limit_low` - * `output_cutoff_voltage_output_limit_high` - * `output_cutoff_voltage_output_limit_low` - * Methods added: - * `clear_latched_output_cutoff_state` - * `query_latched_output_cutoff_state` - * Support for independent operation of instrument channels. Creating an `nidcpower.Session` - with independent channels allows you to use multiple instruments in the same session. With - independent channels, you can configure multiple channels of the same instrument, or of - multiple instruments, independently of one another within the same session. Requires NI-DCPower - driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, - pass `independent_channels=False` to `nidcpower.Session` constructor. - - -## 1.3.3 - 2021-02-26 -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: - * `merged_channels` - * `digital_edge_shutdown_trigger_input_terminal` - * `shutdown_trigger_type` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * 1.0.0 release: - * API reference documentation and API usage examples - * API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: - * `frequency_counter_measurement_mode` - * `frequency_counter_hysteresis_enabled` -* ### `nifgen` (NI-FGEN) - * #### Added - * nifgen_trigger.py example to demonstrate pulling a trigger from another device. -* ### `nitclk` (NI-TClk) - * #### Added - * nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. - * #### Removed - * nitclk_configure.py as it did not do anything. - - -## 1.3.2 - 2020-09-18 -* ### ALL - * #### Changed - * Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: - * `autorange` - * `autorange_aperture_time_mode` - * `autorange_behavior` - * `autorange_minimum_aperture_time` - * `autorange_minimum_aperture_time_units` - * `autorange_minimum_current_range` - * `autorange_minimum_voltage_range` - * `autorange_threshold_mode` -* ### `niscope` (NI-SCOPE) - * #### Added - * New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) - * `get_ext_cal_last_date_and_time` - * `get_ext_cal_last_temp` - * `get_self_cal_last_date_and_time` - * `get_self_cal_last_temp` - * Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) - * `add_waveform_processing` - * `clear_waveform_measurement_stats` - * `clear_waveform_processing` - * `fetch_array_measurement` - * `fetch_measurement_stats` - * Measurement library properties. - * `meas_array_gain` - * `meas_array_offset` - * `meas_chan_high_ref_level` - * `meas_chan_low_ref_level` - * `meas_chan_mid_ref_level` - * `meas_filter_center_freq` - * `meas_filter_cutoff_freq` - * `meas_filter_order` - * `meas_filter_ripple` - * `meas_filter_taps` - * `meas_filter_transient_waveform_percent` - * `meas_filter_type` - * `meas_filter_width` - * `meas_fir_filter_window` - * `meas_high_ref` - * `meas_low_ref` - * `meas_mid_ref` - * `meas_hysteresis_percent` - * `meas_interpolation_sampling_factor` - * `meas_last_acq_histogram_size` - * `meas_other_channel` - * `meas_percentage_method` - * `meas_polynomial_interpolation_order` - * `meas_ref_level_units` - * `meas_time_histogram_high_time` - * `meas_time_histogram_high_volts` - * `meas_time_histogram_low_time` - * `meas_time_hisogram_low_volts` - * `meas_time_histogram_size` - * `meas_voltage_histogram_high_volts` - * `meas_voltage_histogram_low_volts` - * `meas_voltage_histogram_size` - * #### Changed - * Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods - * Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero - - -## 1.3.1 - 2020-06-08 -* ### ALL - * #### Changed - * Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - * Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 - - -## 1.3.0 - 2020-05-21 -* ### ALL - * #### Changed - * Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. -* ### `nidcpower` (NI-DCPower) - * #### Added - * API parity with NI-DCPower 20.0 by adding the following properties: - * `Session.serial_number` - * `Session.actual_power_allocation` - * `Session.requested_power_allocation` - * `Session.power_allocation_mode` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * 0.9.0 release: - * Public API is considered complete, stable, and tested - * Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 - * API reference documentation and example code are not complete - * #### Changed - * Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) - * Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) - * Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) -* ### `niscope` (NI-SCOPE) - * #### Added - * API parity with NI-SCOPE 20.0 by adding the following properties: - * `Session.end_of_acquisition_event_terminal_name` - * `Session.end_of_record_event_terminal_name` - * `Session.advance_trigger_terminal_name` - * `Session.ref_trigger_terminal_name` - * `Session.start_trigger_terminal_name` - * `Session.ready_for_advance_event_terminal_name` - * `Session.ready_for_ref_event_terminal_name` - * `Session.ready_for_start_event_terminal_name` - - -## 1.2.1 - 2020-04-21 -* ### ALL - * #### Added - * Support for chained repeated capabilities. This allows things like - ``` python - session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 - ``` - - The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) - * Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) - * `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - * `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) - * #### Changed - * Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) - * `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) - * `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) - * Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): - * Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. - * Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. - * Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. - * Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) - * Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) - * Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) - * In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) - * #### Removed - * `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) - * `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) - * `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) - * `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) - * `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) - * `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) - * `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) -* ### `nitclk` (NI-TClk) - * #### Changed - * Version updated to 1.2.1 to match other released nimi-python modules - - -## 1.2.0 - 2020-03-06 -* ### ALL - * #### Added - * Zip file per driver for all examples and any helper files - * Link to zip file on examples documentation - * Support for Python 3.8 - * #### Changed - * `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - * `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) - * #### Removed - * Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) - * Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) - * PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) -* ### `nidcpower` (NI-DCPower) - * #### Added - * `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) - * Instead of a list of attribute IDs, you pass in a list of property names as strings - * Includes example to see how to use it - * Additional methods and properties that were made public (rather than private) - * `create_advanced_sequence_step()` - * `delete_advanced_sequence()` - * `active_advanced_sequence` - * `active_advanced_sequence_step` -* ### `nifgen` (NI-FGEN) - * #### Added - * `nifgen.Session.import_attribute_configuration_file()` - * `nifgen.Session.import_attribute_configuration_buffer()` - * `nifgen.Session.export_attribute_configuration_file()` - * `nifgen.Session.export_attribute_configuration_buffer()` - * `nifgen.Session.get_channel_name()` - * #### Changed - * `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` - * See documentation on how to call this function - * Calling the previous way will log a DeprecationWarning to the warning subsystem - * [#1300](https://github.com/ni/nimi-python/issues/1300) -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) - * #### Changed - * `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types - * sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) - * `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) - * Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) - * #### Removed - * Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) - * Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) - * Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` - was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) -* ### `nitclk` (NI-TClk) - * #### Changed - * Method parameters and properties that are time based now take or return a `datetime.timedelta` object - * #### Removed - * Ability to pass an integer as a session / session reference - * `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) - - -## 1.1.5 - 2019-11-22 -* ### ALL - * #### Changed - * Fix #1140: Linux support was accidentally broken. - * Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. - - -## 1.1.4 - 2019-11-19 -* ### ALL - * #### Added - * Support for Python 3.8 - * `ViUInt8` is now a valid type in APIs -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } - * `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } - * `pins` is now a valid repeated capability - * #### Changed - * Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) - * Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) - * Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` - * `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` -* ### `nise` (NI Switch Executive) - * #### Changed - * Version updated to 1.1.4 to match other released nimi-python modules - - -## 1.1.3 - 2019-10-21 -* ### ALL - * #### Changed - * The development status in `setup.py` will be based on the module version: - * version >= 1.0 - * .devN or .aN - Alpha - * .bN, .cN or .rcN - Beta - * \ or .postN - Stable - * version < 1.0 and version >= 0.5 - Beta - * version < 0.5 - Alpha - * Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. -* ### `nidcpower` (NI-DCPower) - * #### Changed - * Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) -* ### `nifgen` (NI-FGEN) - * #### Removed - * `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) -* ### `niscope` (NI-SCOPE) - * #### Added - * `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum - * `enabled_channels`, `product_code` properties - * `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums - * `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums - * `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums -* ### `nise` (NI Switch Executive) - * #### Changed - * Update to 1.0 - now ready for production use -* ### `nidigital` (NI-Digital Pattern Driver) - * #### Added - * Initial support - * Very basic at this point and subject to change - * Looking for any testing and/or feedback - * `get_channel_name_from_string()` - * #### Changed - * New enums: - - | Enum name | Where used | - |----------------------------|----------------------------------------------------------------------------------| - | `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | - | `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | - | `PPMUOutputFunction` | `ppmu_output_function` | - | `SelectedFunction` | `selected_function` | - | `TDREndpointTermination` | `tdr_endpoint_termination` | - | `Signal` | `export_signal(signal)` | - * **[Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. - - * #### Removed - * Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, - `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, - `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` - * Need to determine how to generate this function - `fetch_capture_waveform_u32()` -* ### `nitclk` (NI-TClk) - * #### Added - * Initial support - - -## 1.1.2 - 2019-06-06 -* ### ALL - * #### Changed - * Switched to slightly different metadata format - Actual `True`/`False` instead of strings - * New internal process for generating metadata -* ### `nifgen` (NI-FGEN) - * #### Changed - * Enum values for `HardwareState` were incorrect - fix to match niFgen.h -* ### `niscope` (NI-SCOPE) - * #### Changed - * Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` - - -## 1.1.0 - 2018-10-25 -* ### ALL - * #### Changed - * Updated generated metadata - * Updated "Driver Version Tested Against" - * Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) -* ### `nidmm` (NI-DMM) - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function -* ### `nidcpower` (NI-DCPower) - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function -* ### `niscope` (NI-SCOPE) - * #### Added - * import_attribute_configuration_file function - * export_attribute_configuration_file function - * import_attribute_configuration_buffer function - * import_attribute_configuration_buffer function - - -## 1.0.1 - 2018-10-17 -* ### ALL - * #### Added - * Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) - * \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) - * #### Changed - * No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code - * Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) -* ### `niscope` (NI-SCOPE) - * #### Changed - * Format of output of wavefrom_info.__str__() -* ### `nise` (NI Switch Executive) - * #### Added - * Initial Release - - -## 1.0.0 - 2018-06-08 -* ### ALL - * #### Removed - * Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) -* ### `nidmm` (NI-DMM) - * #### Changed - * Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` - * #### Removed - * `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) - * `latency` - [#875](https://github.com/ni/nimi-python/issues/875) - * `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) - * `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - * `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) - * `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) -* ### `nimodinst` (NI-ModInst) - * #### Changed - * Double close will now allow NI-ModInst to return error -* ### `niswitch` (NI-SWITCH) - * #### Removed - * `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) - * `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) - * `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) - * `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - * `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) - * `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) - * `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) -* ### `nidcpower` (NI-DCPower) - * #### Removed - * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - * `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` - * `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` - * `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` - * `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` - * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` - * Remove polarity attributes for triggers that are PXI backplane only (only support rising edge) [#860](https://github.com/ni/nimi-python/issues/860) - * `digital_edge_measure_trigger_edge` - * `digital_edge_pulse_trigger_edge` - * `digital_edge_sequence_advance_trigger_edge` - * `digital_edge_source_trigger_edge` - * `digital_edge_start_trigger_edge` -* ### `nifgen` (NI-FGEN) - * #### Changed - * `num_channels` attribute renamed to `channel_count` - now consistent with other drivers - * `send_software_edge_trigger()` no longer takes any parameters. - * To send a start software trigger, call it on the session directly: - ``` python - session.send_software_edge_trigger() - ``` - * To send a script software trigger, call it on the script triggers container: - ``` python - session.script_triggers[1].send_software_edge_trigger() - ``` - * #### Removed - * Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) - * `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` - * `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` - * `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` - * Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) -* ### `niscope` (NI-SCOPE) - * #### Added - * `niscope_fetch_forever.py` example - * #### Removed - * Removed default value for `level` parameter on `configure_trigger_edge()` - * parameter list is now - ``` python - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` - * Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` - * parameter list is now - ``` python - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - ``` - -## 0.9.0 - 2018-05-22 -* ### ALL - * #### Added - * Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) - * `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) - * Fix thread-safety issues by using IVI session lock where aplicable - * #### Changed - * `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - * Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - * #### Removed - * IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) - * `engine_major_version` - * `engine_minor_version` - * `engine_revision` - * `primary_error` - * `secondary_error` - * `error_elaboration` - * `io_session_type` - * `io_session` / `visa_rm_session` - * `group_capabilities` - * `interchange_check` - * `range_check` - * `record_coercions` - * `specific_driver_class_spec_major_version` - * `specific_driver_class_spec_minor_version` - * `query_instrument_status` - * `cache` - * `specific_driver_prefix` -* ### `nidcpower` (NI-DCPower) - * #### Removed - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - * `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) - * `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) - * Default value for trigger parameter on `send_software_edge_trigger()` [#832](https://github.com/ni/nimi-python/issues/832) -* ### `nifgen` (NI-FGEN) - * #### Changed - * Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. - * `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` - * `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` - * Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) - * `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` - * `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` - * #### Removed - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) - * `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - * `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) - * `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) - * `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) - * `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) - * `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) - * `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) - * `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) - * `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) - * `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) - * `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) - * `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) - * `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) - * `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) - * `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) - * `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) - * `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) - * `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) - * `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) - * `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) - * `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) - * `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) -* ### `niscope` (NI-SCOPE) - * #### Removed - * Properties removed - * `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - * `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - * `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - * `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - * `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - * `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - * `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - * `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - * `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - * `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - * `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - * `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - * `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - * `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - * `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - * Methods removed - * `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - * `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) -* ### `nimodinst` (NI-ModInst) - * #### Changed - * Indexing on `nimodinst.Session` is no longer allowed - * `session[0].device_name` becomes `session.devices[0].device_name` - * This is to be consistent with other drivers - -## 0.8.0 - 2018-04-27 -* ### ALL - * #### Changed - * All exceptions raised by the Python bindings inherit from `.Error` - * Exception type formerly known as `.Error` is now known as `.DriverError` - * This encapsulates any error that is returned by the underlying driver - * All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) -* ### `nidmm` (NI-DMM) - * #### Changed - * Enum values that start with an underscore + digit have been renamed - * `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` - * `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` - * `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` - * `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` - * `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` - * `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` - * `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) -* ### `nidcpower` (NI-DCPower) - * #### Changed - * `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) - * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - * `Session.set_sequence()` values parameter no longer has a default value and must be passed in. Parameter order has changed as a result of this - issue [#797](https://github.com/ni/nimi-python/issues/797) - * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - * #### Removed - * Advanced Sequence functions - until [#504](https://github.com/ni/nimi-python/issues/504) can be fixed in a proper way - * `create_advanced_sequence()` - * `create_advanced_sequence_step()` - * `delete_advanced_sequence()` -* ### `nifgen` (NI-FGEN) - * #### Changed - * `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) - * `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) - * #### Removed - * `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python - * Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) -* ### `niscope` (NI-SCOPE) - * #### Changed - * `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - * Takes additional parameters that modify fetch behavior - * Add resulting record as part of the waveform info - * Channel name and record number added to waveform info - * See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - * Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - * Enum values and attribute names that start with an underscore + digit have been renamed - * `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` - * `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` - * `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` - * `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` - * `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` - * `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` - * `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` - * `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` - * `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` - * `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` - * `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` - * `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` - * `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` - * `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` - * `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` - * `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` - * `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) - * #### Removed - * Following properties are now removed (use parameters to fetch calls): - * `fetch_relative_to` - * `fetch_offset` - * `fetch_record_number` - * `fetch_num_records` - * Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` - * Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) - * `actual_meas_wfm_size()` - * `add_waveform_processing()` - * `clear_waveform_processing()` - * `fetch_array_measurement()` - * `clear_waveform_measurement_stats()` - * `fetch_measurement()` - * `fetch_measurement_stats()` - * `read_measurement()` - * `configure_ref_levels()` - * `meas_ref_level_units` - * `meas_other_channel` - * `meas_hysteresis_percent` - * `meas_last_acq_histogram_size` - * `meas_voltage_histogram_size` - * `meas_voltage_histogram_low_volts` - * `meas_voltage_histogram_high_volts` - * `meas_time_histogram_size` - * `meas_time_histogram_low_volts` - * `meas_time_histogram_high_volts` - * `meas_time_histogram_low_time` - * `meas_time_histogram_high_time` - * `meas_polynomial_interpolation_order` - * `meas_interpolation_sampling_factor` - * `meas_filter_cutoff_freq` - * `meas_filter_center_freq` - * `meas_filter_ripple` - * `meas_filter_transient_waveform_percent` - * `meas_filter_type` - * `meas_filter_order` - * `meas_filter_taps` - * `meas_chan_low_ref_level` - * `meas_chan_mid_ref_level` - * `meas_chan_high_ref_level` - * `meas_filter_width` - * `meas_fir_filter_window` - * `meas_array_gain` - * `meas_array_offset` - * `meas_percentage_method` - * `fetch_meas_num_samples` - -## 0.7.0 - 2018-02-20 -* ### ALL - * #### Changed - * Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) - * Key/Value pairs approporiate for desired behavior - ``` python - session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) - ``` - * Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - * All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion -* ### `nidmm` (NI-DMM) - * #### Changed - * `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - * The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: - * `configure_multi_point()` - * `configure_trigger()` - * `fetch()` - * `fetch_multi_point()` - * `fetch_waveform()` - * `read()` - * `read_multi_point()` - * `read_waveform()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_cal_date_and_time()` - * Metadata updated to NI-DMM 17.5 - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `DCBias` - `DC_BIAS` - * `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` -* ### `niswitch` (NI-SWITCH) - * #### Changed - * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - * `configure_scan_trigger()` - * `wait_for_debounce()` - * `wait_for_scan_complete()` -* ### `nidcpower` (NI-DCPower) - * #### Added - * `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion - * #### Changed - * Metadata updated to NI-DCPower 17.6.1 - * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - * `fetch_multiple()` - * `wait_for_event()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_ext_cal_last_date_and_time()` - * `get_self_cal_last_date_and_time()` - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` - * `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` - * `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` - * `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` -* ### `nifgen` (NI-FGEN) - * #### Changed - * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - * `channel` repeated capability - * `markers` repeated capability - * `script_triggers` repeated capability - * The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - * `adjust_sample_clock_relative_delay()` - * `wait_until_done()` - * The following functions return a `datetime.datetime()` object representing the date and time - * `get_ext_cal_last_date_and_time()` - * `get_self_cal_last_date_and_time()` -* ### `niscope` (NI-SCOPE) - * #### Added - * Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - * `channel` repeated capability - * #### Changed - * `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) - * The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: - * `configure_trigger_digital()` - * `configure_trigger_edge()` - * `configure_trigger_hysteresis()` - * `configure_trigger_software()` - * `configure_trigger_video()` - * `configure_trigger_window()` - * `fetch()` - * `fetch_measurement_stats()` - * `read()` - * #### Removed - * Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - * `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` - * `BoolEnableDisableChan` - `CHANNEL_ENABLED` - * `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` - * `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` - * `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` - -## 0.6.0 - 2017-12-20 -* ### ALL - * #### Added - * `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). -* ### `nidmm` (NI-DMM) - * #### Added - * `fetch_waveform_into` for high-performance fetch using numpy.array of float64. - * #### Changed - * Property powerline_freq no longer uses enum PowerlineFrequency. - * Property current_source no longer uses enum CurrentSource. - * Property input_resistance no longer uses enum InputResistance. - * Removed `actual_number_of_points` from `fetch_waveform()` returned tuple - * Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple - * Removed `actual_number_of_points` from `read_multi_point()` returned tuple - * Removed `actual_number_of_points` from `read_waveform()` returned tuple -* ### `niswitch` (NI-SWITCH) - * #### Removed - * Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). -* ### `nidcpower` (NI-DCPower) - * #### Changed - * Property power_line_frequency no longer uses enum PowerLineFrequency. - * Removed `actual_count` from `fetch_multiple()` returned tuple -* ### `nifgen` (NI-FGEN) - * #### Added - * Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) - * Support for calling `write_waveform` with a waveform handle (int) or a name (str). - * Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) - * #### Changed - * Renamed `create_waveform_f64` -> `create_waveform` - * #### Removed - * `create_waveform_i16` - * `write_binary16_waveform`: Use `write_waveform` - * `write_named_waveform_i16`: Use `write_waveform` - * `write_named_waveform_f64`: Use `write_waveform` -* ### `niscope` (NI-SCOPE) - * #### Added - * `fetch_into` for high-performance fetch using numpy.array. Supported element types: - * `numpy.float64` - * `numpy.int8` - * `numpy.int16` - * `numpy.int32` - * #### Changed - * Added default values for timeout on all fetch and read functions. - * Property input_impedance no longer uses enum InputImpedance. - * #### Removed - * `AddWaveformProcessing` - See #667 for rationale - * `ClearWaveformProcessing` - See #667 for rationale - * `FetchArrayMeasurement` - See #667 for rationale - -## 0.5.0 - 2017-11-27 -* ### ALL - * #### Removed - * enum definitions that are not referenced by a function and/or an attributes -* ### `nidmm` (NI-DMM) - * #### Added - * `get_ext_cal_recommended_interval` -* ### `nidcpower` (NI-DCPower) - * #### Added - * `get_ext_cal_last_date_and_time` - * `get_ext_cal_last_temp` - * `get_ext_cal_recommended_interval` - * `measure_multiple` -* ### `nifgen` (NI-FGEN) - * #### Removed - * `adjust_sample_clock_relative_delay` -* ### `niscope` (NI-SCOPE) - * #### Added - * Initial release - * #### Removed - * Removed Peer to Peer attributes - -## 0.4.0 - 2017-11-07 -* ### ALL - * #### Changed - * Simplified examples by removing try/except - * **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines -* ### `nidmm` (NI-DMM) - * #### Changed - * Removed incorrect leading underscore from some enum values: - * `Function.AC_VOLTS_DC_COUPLED` - * `Function.WAVEFORM_CURRENT` - * `MeasurementCompleteDest.LBR_TRIG_0` - * `OperationMode.IVIDMM_MODE` - * `SampleTrigger.EXTERNAL` - * `SampleTrigger.TTL_3` - * `TriggerSource.TTL_0` - * `TriggerSource.TTL_3` - * `TriggerSource.TTL_7` - * `TriggerSource.PXI_STAR` -* ### `niswitch` (NI-SWITCH) - * #### Removed - * Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. -* ### `nidcpower` (NI-DCPower) - * #### Added - * New example `nidcpower_advanced_sequence.py` - * #### Changed - * Fixed method signature for: - * `wait_for_event` - * `create_sequence` - * `create_advanced_sequence` - * #### Removed - * Support for `measure_multiple` until issue #444 is addressed. -* ### `nifgen` (NI-FGEN) - * #### Added - * Initial release - -## 0.3.0 - 2017-10-13 -* ### ALL - * #### Added - * Support for ViInt64 (64-bit integers) - * #### Changed - * Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: - ```python +--- + +### nidcpower (NI-DCPOWER) +- [Unreleased](#nidcpower-unreleased) +- [1.4.9](#nidcpower-149---2025-02-26) +- [1.4.8](#nidcpower-148---2024-04-26) +- [1.4.7](#nidcpower-147---2023-12-15) +- [1.4.6](#nidcpower-146---2023-09-11) +- [1.4.5](#nidcpower-145---2023-06-12) +- [1.4.4](#nidcpower-144---2023-04-14) +- [1.4.3](#nidcpower-143---2022-12-16) +- [1.4.2](#nidcpower-142---2022-08-03) +- [1.4.1](#nidcpower-141---2021-08-23) +- [1.4.0](#nidcpower-140---2021-07-09) +- [1.3.3](#nidcpower-133---2021-02-26) +- [1.3.2](#nidcpower-132---2020-09-18) +- [1.3.1](#nidcpower-131---2020-06-08) +- [1.3.0](#nidcpower-130---2020-05-21) +- [1.2.1](#nidcpower-121---2020-04-21) +- [1.2.0](#nidcpower-120---2020-03-06) +- [1.1.5](#nidcpower-115---2019-11-22) +- [1.1.4](#nidcpower-114---2019-11-19) +- [1.1.3](#nidcpower-113---2019-10-21) +- [1.1.2](#nidcpower-112---2019-06-06) +- [1.1.0](#nidcpower-110---2018-10-25) +- [1.0.1](#nidcpower-101---2018-10-17) +- [1.0.0](#nidcpower-100---2018-06-08) +- [0.9.0](#nidcpower-090---2018-05-22) +- [0.8.0](#nidcpower-080---2018-04-27) +- [0.7.0](#nidcpower-070---2018-02-20) +- [0.6.0](#nidcpower-060---2017-12-20) +- [0.5.0](#nidcpower-050---2017-11-27) +- [0.4.0](#nidcpower-040---2017-11-07) +- [0.3.0](#nidcpower-030---2017-10-13) + +#### [nidcpower] Unreleased +- Added +- Changed +- Removed + +#### [nidcpower] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 + - API parity with NI-DCPower 2025 Q1. + - Enum value added: + - `INHIBITED` added to enum `OutputStates`. +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) + - Fixed #2067: `nidcpower.OutputStates` values are incorrect. +- Removed + - (Common) Support for Python 3.8 + +#### [nidcpower] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 +- Changed + - Fix [#1664](https://github.com/ni/nimi-python/issues/1970): nidcpower_advanced_sequence.py has several issues preventing it from working out of the box on real hardware. + +#### [nidcpower] 1.4.7 - 2023-12-15 +- Added + - API parity with NI-DCPower 2023 Q4. + - Properties added: + - `current_level_rising_slew_rate` + - `current_level_falling_slew_rate` + - `conduction_voltage_mode` + - `conduction_voltage_on_threshold` + - `conduction_voltage_off_threshold` + - `output_cutoff_voltage_measure_limit_high` + - `output_cutoff_voltage_measure_limit_low` + - Enum added: + - `ConductionVoltageMode` + - Enum values added: + - `E_LOAD` added to enum `InstrumentMode` + - `CURRENT_SATURATED`, `VOLTAGE_MEASURE_HIGH` and `VOLTAGE_MEASURE_LOW` added to enum `OutputCutoffReason` + + +#### [nidcpower] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + + +#### [nidcpower] 1.4.5 - 2023-06-12 +- Removed + - (Common) `easy_install` support + +#### [nidcpower] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. + - API parity with NI-DCPower 2023 Q2. + - Properties added: + - `lcr_ac_dither_enabled` + - `lcr_ac_electrical_cable_length_delay` + - `lcr_dc_bias_transient_response` + - `lcr_source_aperture_time` + - `measure_complete_event_output_behavior` + - `measure_complete_event_toggle_initial_state` + - `sequence_engine_done_event_output_behavior` + - `sequence_engine_done_event_toggle_initial_state` + - `sequence_iteration_complete_event_output_behavior` + - `sequence_iteration_complete_event_toggle_initial_state` + - `source_complete_event_output_behavior` + - `source_complete_event_toggle_initial_state` + - Enums added: + - `CurrentLimitBehavior` + - `EventOutputBehavior` + - `EventToggleInitialState` + - `LCRDCBiasTransientResponse` + - Enum values added: + - `AS_CONFIGURED` added to enum `LCROpenShortLoadCompensationDataSource` + - `NI_STANDARD_0_5M` added to enum `CableLength` + - Methods added: + - `configure_lcr_compensation` + - `get_lcr_compensation_data` +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Enums reordered: + - `AutoZero` + - `CableLength` + +#### [nidcpower] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Changed + - Binary compatibility change for type `LCRLoadCompensationSpot` on Linux. Client code using method `nidcpower.Session.perform_lcr_load_compensation` on Linux now requires NI-DCPower 2023 Q1 driver runtime or newer. +- Removed + - (Common) Support for Python 3.6 + +#### [nidcpower] 1.4.2 - 2022-08-03 +- Added + - API parity with NI-DCPower 2022 Q3. + - Properties added: + - `aperture_time_auto_mode` + - `autorange_maximum_delay_after_range_change` + - `cable_length` + - `instrument_mode` + - `isolation_state` + - `lcr_actual_load_reactance` + - `lcr_actual_load_resistance` + - `lcr_automatic_level_control` + - `lcr_current_amplitude` + - `lcr_current_range` + - `lcr_custom_measurement_time` + - `lcr_dc_bias_automatic_level_control` + - `lcr_dc_bias_current_level` + - `lcr_dc_bias_current_range` + - `lcr_dc_bias_source` + - `lcr_dc_bias_voltage_level` + - `lcr_dc_bias_voltage_range` + - `lcr_frequency` + - `lcr_impedance_auto_range` + - `lcr_impedance_range` + - `lcr_impedance_range_source` + - `lcr_load_capacitance` + - `lcr_load_compensation_enabled` + - `lcr_load_inductance` + - `lcr_load_resistance` + - `lcr_measured_load_reactance` + - `lcr_measured_load_resistance` + - `lcr_measurement_time` + - `lcr_open_compensation_enabled` + - `lcr_open_conductance` + - `lcr_open_short_load_compensation_data_source` + - `lcr_open_susceptance` + - `lcr_short_compensation_enabled` + - `lcr_short_custom_cable_compensation_enabled` + - `lcr_short_reactance` + - `lcr_short_resistance` + - `lcr_source_delay_mode` + - `lcr_stimulus_function` + - `lcr_voltage_amplitude` + - `lcr_voltage_range` + - Enums added: + - `ApertureTimeAutoMode` + - `CableLength` + - `InstrumentMode` + - `LCRCompensationType` + - `LCRDCBiasSource` + - `LCRImpedanceRangeSource` + - `LCRMeasurementTime` + - `LCROpenShortLoadCompensationDataSource` + - `LCRReferenceValueType` + - `LCRSourceDelayMode` + - `LCRStimulusFunction` + - Methods added: + - `configure_lcr_custom_cable_compensation` + - `fetch_multiple_lcr` + - `get_lcr_compensation_last_date_and_time` + - `get_lcr_custom_cable_compensation_data` + - `measure_multiple_lcr` + - `perform_lcr_load_compensation` + - `perform_lcr_open_compensation` + - `perform_lcr_open_custom_cable_compensation` + - `perform_lcr_short_compensation` + - `perform_lcr_short_custom_cable_compensation` + - Custom types added: + - `LCRLoadCompensationSpot` + - `LCRMeasurement` + - `nidcpower_lcr_source_ac_voltage.py` example +- Changed + - Updated supported devices information in documentation for methods and properties + - Added `channel` field to the `Measurement` namedtuple instances returned by `fetch_multiple` and `measure_multiple` + +#### [nidcpower] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 + - API parity with NI-DCPower 21.0.0. + - Properties added: + - `output_cutoff_delay` +- Removed + - (Common) Support for Python 3.5 + +#### [nidcpower] 1.4.0 - 2021-07-09 +- Added + - `get_channel_names` - [#1588](https://github.com/ni/nimi-python/issues/1588) + - `create_advanced_sequence_commit_step` - [#1636](https://github.com/ni/nimi-python/issues/1636) + - API parity with NI-DCPower 20.7.0 by adding Output Cutoff functionality. + - Properties added: + - `output_cutoff_current_change_limit_high` + - `output_cutoff_current_change_limit_low` + - `output_cutoff_current_measure_limit_high` + - `output_cutoff_current_measure_limit_low` + - `output_cutoff_current_overrange_enabled` + - `output_cutoff_enabled` + - `output_cutoff_voltage_change_limit_high` + - `output_cutoff_voltage_change_limit_low` + - `output_cutoff_voltage_output_limit_high` + - `output_cutoff_voltage_output_limit_low` + - Methods added: + - `clear_latched_output_cutoff_state` + - `query_latched_output_cutoff_state` + - Support for independent operation of instrument channels. Creating an `nidcpower.Session` +with independent channels allows you to use multiple instruments in the same session. With +independent channels, you can configure multiple channels of the same instrument, or of +multiple instruments, independently of one another within the same session. Requires NI-DCPower +driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, +pass `independent_channels=False` to `nidcpower.Session` constructor. + + + +#### [nidcpower] 1.3.3 - 2021-02-26 +- Added + - API parity with NI-DCPower 20.6.0 by adding Merged Channels and Shutdown Triggers support. The following properties are added: + - `merged_channels` + - `digital_edge_shutdown_trigger_input_terminal` + - `shutdown_trigger_type` + +#### [nidcpower] 1.3.2 - 2020-09-18 +- Added + - API parity with NI-DCPower 20.5.0 by adding measurement autoranging threshold range support, for which the following properties are added: + - `autorange` + - `autorange_aperture_time_mode` + - `autorange_behavior` + - `autorange_minimum_aperture_time` + - `autorange_minimum_aperture_time_units` + - `autorange_minimum_current_range` + - `autorange_minimum_voltage_range` + - `autorange_threshold_mode` +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nidcpower] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + + +#### [nidcpower] 1.3.0 - 2020-05-21 +- Added + - API parity with NI-DCPower 20.0 by adding the following properties: + `Session.serial_number` + `Session.actual_power_allocation` + `Session.requested_power_allocation` + `Session.power_allocation_mode` +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nidcpower] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nidcpower] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 + - `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) + Instead of a list of attribute IDs, you pass in a list of property names as strings + Includes example to see how to use it + Additional methods and properties that were made public (rather than private) + - `create_advanced_sequence_step()` + - `delete_advanced_sequence()` + - `active_advanced_sequence` + - `active_advanced_sequence_step` +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nidcpower] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + + + +#### [nidcpower] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nidcpower] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - Fix type of `sequence_step_delta_time_enabled ` property - [#1015](https://github.com/ni/nimi-python/issues/1015) + +#### [nidcpower] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + +#### [nidcpower] 1.1.0 - 2018-10-25 +- Added + - import_attribute_configuration_file function + - export_attribute_configuration_file function + - import_attribute_configuration_buffer function + - import_attribute_configuration_buffer function +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nidcpower] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nidcpower] 1.0.0 - 2018-06-08 +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + - `configure_digital_edge_measure_trigger()` - use `session.digital_edge_measure_trigger_edge` & `session.digital_edge_measure_trigger_input_terminal` + - `configure_digital_edge_pulse_trigger()` - use `session.digital_edge_pulse_trigger_edge` & `session.digital_edge_pulse_trigger_input_terminal` + - `configure_digital_edge_sequence_advance_trigger()` - use `session.digital_edge_sequence_advance_trigger_edge` & `session.digital_edge_sequence_advance_trigger_input_terminal` + - `configure_digital_edge_source_trigger()` - use `session.digital_edge_source_trigger_edge` & `session.digital_edge_source_trigger_input_terminal` + - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_edge` & `session.digital_edge_start_trigger_input_terminal` + - Remove polarity attributes for triggers that are PXI backplane only (only support rising edge) [#860](https://github.com/ni/nimi-python/issues/860) + - `digital_edge_measure_trigger_edge` + - `digital_edge_pulse_trigger_edge` + - `digital_edge_sequence_advance_trigger_edge` + - `digital_edge_source_trigger_edge` + - `digital_edge_start_trigger_edge` + +#### [nidcpower] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - `active_advanced_sequence` [#832](https://github.com/ni/nimi-python/issues/832) + - `active_advanced_sequence_step` [#832](https://github.com/ni/nimi-python/issues/832) + - Default value for trigger parameter on `send_software_edge_trigger()` [#832](https://github.com/ni/nimi-python/issues/832) + +#### [nidcpower] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - `Session.fetch_multiple()` and `Session.measure_multiple()` now return list of named tuples instead of multiple arrays. See [fetch_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.fetch_multiple) and [measure_multiple](http://nimi-python.readthedocs.io/en/master/nidcpower/functions.html#nidcpower.Session.measure_multiple) + - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) + - `Session.set_sequence()` values parameter no longer has a default value and must be passed in. Parameter order has changed as a result of this - issue [#797](https://github.com/ni/nimi-python/issues/797) + - Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) +- Removed + - Advanced Sequence functions - until [#504](https://github.com/ni/nimi-python/issues/504) can be fixed in a proper way + - `create_advanced_sequence()` + - `create_advanced_sequence_step()` + - `delete_advanced_sequence()` + +#### [nidcpower] 0.7.0 - 2018-02-20 +- Added + - `channel` repeated capability - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - Metadata updated to NI-DCPower 17.6.1 + - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + `fetch_multiple()` + `wait_for_event()` + - The following functions return a `datetime.datetime()` object representing the date and time + `get_ext_cal_last_date_and_time()` + `get_self_cal_last_date_and_time()` +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` + `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` + `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` + `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` + +#### [nidcpower] 0.6.0 - 2017-12-20 +- Added + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +- Changed +Property power_line_frequency no longer uses enum PowerLineFrequency. +Removed `actual_count` from `fetch_multiple()` returned tuple + +#### [nidcpower] 0.5.0 - 2017-11-27 +- Added + - `get_ext_cal_last_date_and_time` + - `get_ext_cal_last_temp` + - `get_ext_cal_recommended_interval` + - `measure_multiple` +- Removed + - (Common) enum definitions that are not referenced by a function and/or an attributes + +#### [nidcpower] 0.4.0 - 2017-11-07 +- Added + - New example `nidcpower_advanced_sequence.py` +- Changed + - (Common) Simplified examples by removing try/except + - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - Fixed method signature for: + - `wait_for_event` + - `create_sequence` + - `create_advanced_sequence` +- Removed + - Support for `measure_multiple` until issue #444 is addressed. + +#### [nidcpower] 0.3.0 - 2017-10-13 +- Added + - Initial release + +--- + +### nidigital (NI-Digital Pattern Driver) + +- [Unreleased](#nidigital-unreleased) +- [1.4.9](#nidigital-149---2025-02-26) +- [1.4.8](#nidigital-148---2024-04-26) +- [1.4.6](#nidigital-146---2023-09-11) +- [1.4.5](#nidigital-145---2023-06-12) +- [1.4.4](#nidigital-144---2023-04-14) +- [1.4.3](#nidigital-143---2022-12-16) +- [1.4.1](#nidigital-141---2021-08-23) +- [1.3.3](#nidigital-133---2021-02-26) +- [1.3.2](#nidigital-132---2020-09-18) +- [1.3.1](#nidigital-131---2020-06-08) +- [1.3.0](#nidigital-130---2020-05-21) +- [1.2.1](#nidigital-121---2020-04-21) +- [1.2.0](#nidigital-120---2020-03-06) +- [1.1.5](#nidigital-115---2019-11-22) +- [1.1.4](#nidigital-114---2019-11-19) +- [1.1.3](#nidigital-113---2019-10-21) + +#### [nidigital] Unreleased +- Added +- Changed +- Removed + +#### [nidigital] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 + - Methods Added: + - `enable_match_fail_combination` + +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nidigital] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [nidigital] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + + +#### [nidigital] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - (Common) `easy_install` support + +#### [nidigital] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Update `GRPC_SERVICE_INTERFACE_NAME` to use the correct gRPC package name (`nidigitalpattern_grpc`). + +#### [nidigital] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Removed + - (Common) Support for Python 3.6 + +#### [nidigital] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 + - API parity with NI-Digital Pattern Driver 21.0.0. + - Properties added: + - `digital_edge_rio_trigger_edge` + - `digital_edge_rio_trigger_source` + - `exported_rio_event_output_terminal` + - `rio_event_terminal_name` + - `rio_trigger_terminal_name` + - `rio_trigger_type` + - Repeated Capabilities added: + - `rio_events` + - `rio_triggers` + +- Removed + - (Common) Support for Python 3.5 + +#### [nidigital] 1.3.3 - 2021-02-26 +- Added + - 1.0.0 release: + - API reference documentation and API usage examples + - API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: + - `frequency_counter_measurement_mode` + - `frequency_counter_hysteresis_enabled` + +#### [nidigital] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nidigital] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nidigital] 1.3.0 - 2020-05-21 +- Added + - 0.9.0 release: + - Public API is considered complete, stable, and tested + - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 + - API reference documentation and example code are not complete +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + - Changed initial_state parameters in `apply_levels_and_timing` to basic sequence types - [#1391](https://github.com/ni/nimi-python/issues/1391) + - Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) + - Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) + +#### [nidigital] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + - `get_pattern_pin_names` - [#1292](https://github.com/ni/nimi-python/issues/1292) + - Support for `instruments` repeated capability in the following properties - `instrument_firmware_revision`, `serial_number`, and `timing_absolute_delay` - [#1228](https://github.com/ni/nimi-python/issues/1228) + - `load_specifications_levels_and_timing` that allows loading of multiple specs, levels, and/or timing files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) + - `get_channel_names` - [#1386](https://github.com/ni/nimi-python/issues/1386) +- Changed + - Change the type of applicable method parameters and properties to enums - [#1066](https://github.com/ni/nimi-python/issues/1066) + - `get_site_pass_fail` returns dictionary where each key is a site number and value is a bool indicating pass/fail - [#1297](https://github.com/ni/nimi-python/issues/1297) + - `burst_pattern` returns dictionary where each key is a site number and value is a bool indicating pass/fail, if `wait_until_done` is specified as `True` - [#1296](https://github.com/ni/nimi-python/issues/1296) + - Update enum types to match the API in other ADEs - [#1330](https://github.com/ni/nimi-python/issues/1330): + - Update the names of many enum types. See [#1330](https://github.com/ni/nimi-python/issues/1330) for the full list. + - Added `WriteStaticPinState` enum type and changed the parameter type of `write_static` method to the newly added enum. + - Added `SoftwareTrigger` enum type and changed the parameter type of `send_software_edge_trigger` method to the newly added enum. + - Update `fetch_history_ram_cycle_information`, `get_history_ram_sample_count`, and `is_site_enabled` to use `sites` repeated capability - [#1337](https://github.com/ni/nimi-python/issues/1337) + - Rename parameter `time_set` to `time_set_name` in applicable time set methods - [#1396](https://github.com/ni/nimi-python/issues/1396) + - Modified `unload_specifications` to allow unloading of one or more specs files in a single call - [#1392](https://github.com/ni/nimi-python/issues/1392) + - In `load_pin_map`, changed parameter name `pin_map_file_path` to `file_path` - [#1393](https://github.com/ni/nimi-python/issues/1393) +- Removed + - `get_pattern_pin_list`, `get_pattern_pin_indexes` and `get_pin_name` - [#1292](https://github.com/ni/nimi-python/issues/1292) + - `get_site_results_site_numbers` method and `SiteResultType` enum - [#1298](https://github.com/ni/nimi-python/issues/1298) + - `reset_attribute` - [#1364](https://github.com/ni/nimi-python/issues/1364) + - `clear_error` - [#1366](https://github.com/ni/nimi-python/issues/1366) + - `clock_generator_initiate` - [#1370](https://github.com/ni/nimi-python/issues/1370) + - `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) + - `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) + +#### [nidigital] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 + - `conditional_jump_triggers` and `pattern_opcode_events` repeated capabilities - [#1191](https://github.com/ni/nimi-python/issues/1191), [#1192](https://github.com/ni/nimi-python/issues/1192) +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `write_source_waveform_site_unique()` now supports `numpy.array` and `list` as site waveform types + - sites are now a repeated capability instead of a parameter: `session.sites[1,2].fetch_capture_waveform(...)` - [#1111](https://github.com/ni/nimi-python/issues/1111) + - `fetch_history_ram_cycle_information` method now supports fetching multiple History RAM samples in a single API call - [#1071](https://github.com/ni/nimi-python/issues/1071) + - Update methods that require `pin_list` to be passed in, such that `pin_list` can be passed in via `pins` repeated capability - [#1294](https://github.com/ni/nimi-python/issues/1294) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - Removed redundant (redundant because corresponding properties can be used instead) API methods - [#1065](https://github.com/ni/nimi-python/issues/1065) + - Removed programmatic pin map creation API - [#1124](https://github.com/ni/nimi-python/issues/1124) + - Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` + was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) + +#### [nidigital] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nidigital] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + - `fetch_capture_waveform()` - returns dictionary { site: data, site: data, ... } + - `write_source_waveform_site_unique()` - takes waveform_name and dictionary { site: data, site: data, ... } + - `pins` is now a valid repeated capability +- Changed + - Fix get/set properties - [#1062](https://github.com/ni/nimi-python/issues/1062) + - Removed array-size parameter from apply_tdr_offsets() and write_source_waveform_broadcast_u32() methods - [#1070](https://github.com/ni/nimi-python/issues/1070) + - Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` + - `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` + +#### [nidigital] 1.1.3 - 2019-10-21 +- Added + - Initial support + +--- + +### nidmm (NI-DMM) + +- [Unreleased](#nidmm-unreleased) +- [1.4.9](#nidmm-149---2025-02-26) +- [1.4.8](#nidmm-148---2024-04-26) +- [1.4.6](#nidmm-146---2023-09-11) +- [1.4.5](#nidmm-145---2023-06-12) +- [1.4.4](#nidmm-144---2023-04-14) +- [1.4.3](#nidmm-143---2022-12-16) +- [1.4.1](#nidmm-141---2021-08-23) +- [1.3.2](#nidmm-132---2020-09-18) +- [1.3.1](#nidmm-131---2020-06-08) +- [1.3.0](#nidmm-130---2020-05-21) +- [1.2.1](#nidmm-121---2020-04-21) +- [1.2.0](#nidmm-120---2020-03-06) +- [1.1.5](#nidmm-115---2019-11-22) +- [1.1.4](#nidmm-114---2019-11-19) +- [1.1.3](#nidmm-113---2019-10-21) +- [1.1.2](#nidmm-112---2019-06-06) +- [1.1.0](#nidmm-110---2018-10-25) +- [1.0.1](#nidmm-101---2018-10-17) +- [1.0.0](#nidmm-100---2018-06-08) +- [0.9.0](#nidmm-090---2018-05-22) +- [0.8.0](#nidmm-080---2018-04-27) +- [0.7.0](#nidmm-070---2018-02-20) +- [0.6.0](#nidmm-060---2017-12-20) +- [0.5.0](#nidmm-050---2017-11-27) +- [0.4.0](#nidmm-040---2017-11-07) +- [0.3.0](#nidmm-030---2017-10-13) +- [0.2.0](#nidmm-020---2017-09-20) +- [0.1.0](#nidmm-010---2017-09-01) + +#### [nidmm] Unreleased +- Added +- Changed +- Removed + +#### [nidmm] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nidmm] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [nidmm] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + +#### [nidmm] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - (Common) `easy_install` support + +#### [nidmm] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nidmm] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Removed + - (Common) Support for Python 3.6 + +#### [nidmm] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [nidmm] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nidmm] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nidmm] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nidmm] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nidmm] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nidmm] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nidmm] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nidmm] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [nidmm] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + +#### [nidmm] 1.1.0 - 2018-10-25 +- Added + - import_attribute_configuration_file function + - export_attribute_configuration_file function + - import_attribute_configuration_buffer function + - import_attribute_configuration_buffer function +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nidmm] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nidmm] 1.0.0 - 2018-06-08 +- Changed + - Fixed name `freq_voltage_autorange` became `freq_voltage_auto_range` +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - `configure_ac_bandwidth()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `configure_open_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `configure_power_line_frequency()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `configure_short_cable_comp_values()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `get_aperture_time_info()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `get_auto_range_value()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `get_measurement_period()` - [#875](https://github.com/ni/nimi-python/issues/875) + - `latency` - [#875](https://github.com/ni/nimi-python/issues/875) + - `shunt_value` - [#875](https://github.com/ni/nimi-python/issues/875) + - `meas_dest_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + - `sample_trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + - `trigger_slope` - [#875](https://github.com/ni/nimi-python/issues/875) + +#### [nidmm] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nidmm] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - Enum values that start with an underscore + digit have been renamed + - `Function._2_WIRE_RES` --> `Function.TWO_WIRE_RES` + - `Function._4_WIRE_RES` --> `Function.FOUR_WIRE_RES` + - `ThermistorType._44004` --> `ThermistorType.THERMISTOR_44004` + - `ThermistorType._44006` --> `ThermistorType.THERMISTOR_44006` + - `ThermistorType._44007` --> `ThermistorType.THERMISTOR_44007` + - `TransducerType._2_WIRE_RTD` --> `TransducerType.TWO_WIRE_RTD` + - `TransducerType._4_WIRE_RTD` --> `TransducerType.FOUR_WIRE_RTD` + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) + +#### [nidmm] 0.7.0 - 2018-02-20 +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - `nidmm.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + - The following functions timeout or delay parameter now is required to be a `datetime.timedelta()` object: + - `configure_multi_point()` + - `configure_trigger()` + - `fetch()` + - `fetch_multi_point()` + - `fetch_waveform()` + - `read()` + - `read_multi_point()` + - `read_waveform()` + - The following functions return a `datetime.datetime()` object representing the date and time + - `get_cal_date_and_time()` + - Metadata updated to NI-DMM 17.5 +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + - `DCBias` - `DC_BIAS` + - `OffsetCompensatedOhms` - `OFFSET_COMP_OHMS` + +#### [nidmm] 0.6.0 - 2017-12-20 +- Added + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. +- Changed + - Property powerline_freq no longer uses enum PowerlineFrequency. + - Property current_source no longer uses enum CurrentSource. + - Property input_resistance no longer uses enum InputResistance. + - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple + - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_waveform()` returned tuple + +#### [nidmm] 0.5.0 - 2017-11-27 +- Added + - `get_ext_cal_recommended_interval` +- Removed + - (Common) enum definitions that are not referenced by a function and/or an attributes + +#### [nidmm] 0.4.0 - 2017-11-07 +- Changed + - (Common) Simplified examples by removing try/except + - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - Removed incorrect leading underscore from some enum values: + - `Function.AC_VOLTS_DC_COUPLED` + - `Function.WAVEFORM_CURRENT` + - `MeasurementCompleteDest.LBR_TRIG_0` + - `OperationMode.IVIDMM_MODE` + - `SampleTrigger.EXTERNAL` + - `SampleTrigger.TTL_3` + - `TriggerSource.TTL_0` + - `TriggerSource.TTL_3` + - `TriggerSource.TTL_7` + - `TriggerSource.PXI_STAR` + +#### [nidmm] 0.3.0 - 2017-10-13 +- Added + - (Common) Support for ViInt64 (64-bit integers) +- Changed + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Added default values to some parameters. +- Removed + - Removed methods that aren’t useful in the Python bindings. + +#### [nidmm] 0.2.0 - 2017-09-20 +- Added + - (Common) Suport for channel-based properties +- Changed + - (Common) Warnings no longer raise an exception + - (Common) Warnings are now added to warnings.warn() + - Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) + +#### [nidmm] 0.1.0 - 2017-09-01 +- Added + - Initial release + +--- + +### nifgen (NI-FGEN) + +- [Unreleased](#nifgen-unreleased) +- [1.4.9](#nifgen-149---2025-02-26) +- [1.4.8](#nifgen-148---2024-04-26) +- [1.4.6](#nifgen-146---2023-09-11) +- [1.4.5](#nifgen-145---2023-06-12) +- [1.4.4](#nifgen-144---2023-04-14) +- [1.4.3](#nifgen-143---2022-12-16) +- [1.4.2](#nifgen-142---2022-08-03) +- [1.4.1](#nifgen-141---2021-08-23) +- [1.3.3](#nifgen-133---2021-02-26) +- [1.3.2](#nifgen-132---2020-09-18) +- [1.3.1](#nifgen-131---2020-06-08) +- [1.3.0](#nifgen-130---2020-05-21) +- [1.2.1](#nifgen-121---2020-04-21) +- [1.2.0](#nifgen-120---2020-03-06) +- [1.1.5](#nifgen-115---2019-11-22) +- [1.1.4](#nifgen-114---2019-11-19) +- [1.1.3](#nifgen-113---2019-10-21) +- [1.1.2](#nifgen-112---2019-06-06) +- [1.1.0](#nifgen-110---2018-10-25) +- [1.0.1](#nifgen-101---2018-10-17) +- [1.0.0](#nifgen-100---2018-06-08) +- [0.9.0](#nifgen-090---2018-05-22) +- [0.8.0](#nifgen-080---2018-04-27) +- [0.7.0](#nifgen-070---2018-02-20) +- [0.6.0](#nifgen-060---2017-12-20) +- [0.5.0](#nifgen-050---2017-11-27) +- [0.4.0](#nifgen-040---2017-11-07) + +#### [nifgen] Unreleased +- Added +- Changed +- Removed + +#### [nifgen] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nifgen] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + - Properties added: + - `started_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `done_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `marker_event_pulse_width` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `started_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + - `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) + + Enum added: + - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) + +#### [nifgen] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + +#### [nifgen] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - (Common) `easy_install` support + +#### [nifgen] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nifgen] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Removed + - (Common) Support for Python 3.6 + +#### [nifgen] 1.4.2 - 2022-08-03 +- Added + - `data_markers` repeated capability support - [#1668](https://github.com/ni/nimi-python/issues/1668) +- Changed + - Addressed [#1627](https://github.com/ni/nimi-python/issues/1627) for attributes supporting the following repeated capabilities + - `channels` + - `markers` + - `data_markers` + - `script_triggers` + - Corrected multiple mistakes in repeated capability info of attribute metadata + alters API behavior (repeated capability access of attributes) and documentation + +#### [nifgen] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [nifgen] 1.3.3 - 2021-02-26 +- Added + - nifgen_trigger.py example to demonstrate pulling a trigger from another device. + +#### [nifgen] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nifgen] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nifgen] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nifgen] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nifgen] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 + - `nifgen.Session.import_attribute_configuration_file()` + - `nifgen.Session.import_attribute_configuration_buffer()` + - `nifgen.Session.export_attribute_configuration_file()` + - `nifgen.Session.export_attribute_configuration_buffer()` + - `nifgen.Session.get_channel_name()` +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - `nifgen.Session.send_software_edge_trigger()` now takes two parameters - `trigger` and `trigger_id` + - See documentation on how to call this function + - Calling the previous way will log a DeprecationWarning to the warning subsystem + - [#1300](https://github.com/ni/nimi-python/issues/1300) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nifgen] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nifgen] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nifgen] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. +- Removed + - `configure_custom_fir_filter_coefficients()` - [#996](https://github.com/ni/nimi-python/issues/996) - Should have been removed as part of - [#891](https://github.com/ni/nimi-python/issues/891) + +#### [nifgen] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + - Enum values for `HardwareState` were incorrect - fix to match niFgen.h + +#### [nifgen] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nifgen] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nifgen] 1.0.0 - 2018-06-08 +- Changed + - `num_channels` attribute renamed to `channel_count` - now consistent with other drivers + - `send_software_edge_trigger()` no longer takes any parameters. + - To send a start software trigger, call it on the session directly: + ``` python + session.send_software_edge_trigger() + ``` + - To send a script software trigger, call it on the script triggers container: + ``` python + session.script_triggers[1].send_software_edge_trigger() + ``` +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Remove trigger configuration methods, use attributes instead [#860](https://github.com/ni/nimi-python/issues/860) + - `configure_digital_edge_script_trigger()` - use `session.digital_edge_script_trigger_source` & `session.digital_edge_script_trigger_edge` + - `configure_digital_level_script_trigger()` - use `session.digital_level_script_trigger_source` & `session.digital_level_script_trigger_active_level` + - `configure_digital_edge_start_trigger()` - use `session.digital_edge_start_trigger_source` & `session.digital_edge_start_trigger_edge` + - Removed `get_fir_filter_coefficients()` - [#535](https://github.com/ni/nimi-python/issues/535), [#596](https://github.com/ni/nimi-python/issues/596) + +#### [nifgen] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - Some functions missed setting repeated capabilities, leaving these as parameters instead of using the repeated capabilites object. + - `session.configure_digital_edge_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_edge_script_trigger(source, ...)` + - `session.configure_digital_level_script_trigger('ScriptTrigger0', source, ...)` becomes `session.script_triggers[0].configure_digital_level_script_trigger(source, ...)` + - Combined named and un-named waveform methods into one [#862](https://github.com/ni/nimi-python/issues/862) + - `set_waveform_next_write_position()` and `set_named_waveform_next_write_position()` becomes `set_next_write_position()` + - `clear_arb_waveform()` and `delete_named_waveform()` becomes `delete_waveform()` +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - `osp_fir_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_gaussian_bt` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_flat_passband` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_data_processing_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_compensate_for_filter_group_delay` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_cic_filter_interpolation` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_cic_filter_gain` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_cic_filter_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_phase_q` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_phase_i` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_frequency` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_carrier_enabled` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_offset_q` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_offset_i` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_gain_q` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_pre_filter_gain_i` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_overflow_status` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_overflow_error_reporting` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_mode` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_frequency_shift` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_type` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_root_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + - `osp_fir_filter_raised_cosine_alpha` - [#864](https://github.com/ni/nimi-python/issues/864) + - `ready_for_start_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_level_active_level` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_output_behavior` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_pulse_polarity` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_pulse_width` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_pulse_width_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_toggle_initial_state` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `ready_for_start_event_live_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_latched_status` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_delay` - [#859](https://github.com/ni/nimi-python/issues/859) + - `marker_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `started_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `done_event_delay_units` - [#859](https://github.com/ni/nimi-python/issues/859) + - `direct_dma_enabled` - [#858](https://github.com/ni/nimi-python/issues/858) + - `direct_dma_windowaddress` - [#858](https://github.com/ni/nimi-python/issues/858) + - `direct_dma_window_size` [#858](https://github.com/ni/nimi-python/issues/858) + - `gain_dac_value` - [#88](https://github.com/ni/nimi-python/issues/858) + - `offset_dac_vaue` - [#858](https://github.com/ni/nimi-python/issues/858) + - `id_query_respone` - [#858](https://github.com/ni/nimi-python/issues/858) + - `oscillator_freq_ac_value` - [#858](https://github.com/ni/nimi-python/issues/858) + - `oscillator_phase_dac_vale` - [#858](https://github.com/ni/nimi-python/issues/858) + - `post_amplifier_attenuatio` - [#858](https://github.com/ni/nimi-python/issues/858) + - `pre_amplifier_attenuation` - [#858](https://github.com/ni/nimi-python/issues/858) + - `p2p_endpoint_fullness_strt_trigger_level` - [#858](https://github.com/ni/nimi-python/issues/858) + - `pci_dma_optimizations_enabled` - [#858](ttps://github.com/ni/nimi-python/issues/858) + - `sample_clock_absolute_delay`- [#858](https://github.com/ni/nimi-python/issues/858) + - `synchronization` - [#858](ttps://github.com/ni/nimi-python/issues/858) + - `sync_duty_cycl_high` - [#858](https://github.com/ni/nimi-python/issues/858) + - `sync_out_output_terinal` - [#858](https://github.com/ni/nimi-python/issues/858) + - `trigger_source` - [#858](https://github.com/ni/nimi-python/issues/858) + - `video_wavefor_type` - [#858](https://github.com/ni/nimi-python/issues/858) + +#### [nifgen] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - `Session.export_signal()` signal_identifier now has a default of "". This moves it to the end of the parameter list [#801](https://github.com/ni/nimi-python/issues/801) + - `Session.get_ext_cal_recommended_interval()` now returns a `datetime.timedelta` for the interval [#794](https://github.com/ni/nimi-python/issues/794) +- Removed + - `Session.cal_adc_input` attribute and `Session.enums.CalADCInput` enum - External Cal not supported in Python + - Session constructor channel parameter can now use any channel format that repeated capabilities can use [#807](https://github.com/ni/nimi-python/issues/807) + +#### [nifgen] 0.7.0 - 2018-02-20 +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + `channel` repeated capability + `markers` repeated capability + `script_triggers` repeated capability + - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: + - `adjust_sample_clock_relative_delay()` + - `wait_until_done()` + - The following functions return a `datetime.datetime()` object representing the date and time + - `get_ext_cal_last_date_and_time()` + - `get_self_cal_last_date_and_time()` + +#### [nifgen] 0.6.0 - 2017-12-20 +- Added + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) + - Support for calling `write_waveform` with a waveform handle (int) or a name (str). + - Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) +- Changed + - Renamed `create_waveform_f64` -> `create_waveform` +- Removed + - `create_waveform_i16` + - `write_binary16_waveform`: Use `write_waveform` + - `write_named_waveform_i16`: Use `write_waveform` + - `write_named_waveform_f64`: Use `write_waveform` + +#### [nifgen] 0.5.0 - 2017-11-27 +- Removed + - (Common) enum definitions that are not referenced by a function and/or an attributes + - `adjust_sample_clock_relative_delay` + +#### [nifgen] 0.4.0 - 2017-11-07 +- Added + - Initial release +--- + +### nimodinst (NI-ModInst) + +- [Unreleased](#nimodinst-unreleased) +- [1.4.9](#nimodinst-149---2025-02-26) +- [1.4.8](#nimodinst-148---2024-04-26) +- [1.4.6](#nimodinst-146---2023-09-11) +- [1.4.5](#nimodinst-145---2023-06-12) +- [1.4.4](#nimodinst-144---2023-04-14) +- [1.4.3](#nimodinst-143---2022-12-16) +- [1.4.1](#nimodinst-141---2021-08-23) +- [1.3.2](#nimodinst-132---2020-09-18) +- [1.3.1](#nimodinst-131---2020-06-08) +- [1.3.0](#nimodinst-130---2020-05-21) +- [1.2.1](#nimodinst-121---2020-04-21) +- [1.2.0](#nimodinst-120---2020-03-06) +- [1.1.5](#nimodinst-115---2019-11-22) +- [1.1.4](#nimodinst-114---2019-11-19) +- [1.1.3](#nimodinst-113---2019-10-21) +- [1.1.2](#nimodinst-112---2019-06-06) +- [1.1.0](#nimodinst-110---2018-10-25) +- [1.0.1](#nimodinst-101---2018-10-17) +- [1.0.0](#nimodinst-100---2018-06-08) +- [0.9.0](#nimodinst-090---2018-05-22) +- [0.8.0](#nimodinst-080---2018-04-27) +- [0.7.0](#nimodinst-070---2018-02-20) +- [0.6.0](#nimodinst-060---2017-12-20) +- [0.5.0](#nimodinst-050---2017-11-27) +- [0.4.0](#nimodinst-040---2017-11-07) +- [0.3.0](#nimodinst-030---2017-10-13) +- [0.2.0](#nimodinst-020---2017-09-20) + +#### [nimodinst] Unreleased +- Added +- Changed +- Removed + +#### [nimodinst] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nimodinst] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [nimodinst] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + +#### [nimodinst] 1.4.5 - 2023-06-12 +- Removed + - (Common) `easy_install` support + +#### [nimodinst] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nimodinst] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 +- Removed + - (Common) Support for Python 3.6 + +#### [nimodinst] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [nimodinst] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nimodinst] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nimodinst] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nimodinst] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nimodinst] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nimodinst] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nimodinst] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nimodinst] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [nimodinst] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + +#### [nimodinst] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nimodinst] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [nimodinst] 1.0.0 - 2018-06-08 +- Changed + - Double close will now allow NI-ModInst to return error +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + +#### [nimodinst] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) + - Indexing on `nimodinst.Session` is no longer allowed + `session[0].device_name` becomes `session.devices[0].device_name` + This is to be consistent with other drivers + +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [nimodinst] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [nimodinst] 0.7.0 - 2018-02-20 +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + +#### [nimodinst] 0.6.0 - 2017-12-20 +- Added + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + +#### [nimodinst] 0.5.0 - 2017-11-27 +- Removed + - (Common) enum definitions that are not referenced by a function and/or an attributes + +#### [nimodinst] 0.4.0 - 2017-11-07 +- Changed + - Simplified examples by removing try/except + - **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + +#### [nimodinst] 0.3.0 - 2017-10-13 +- Added + - (Common) Support for ViInt64 (64-bit integers) +- Changed + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python # Sets sequence on channels 0 through 3 session['0-3'].set_sequence(values, source_delays) ``` - * Enum value documentation lists the fully qualified name - this is to allow easy copy/paste -* ### `nidmm` (NI-DMM) - * #### Changed - * Added default values to some parameters. - * #### Removed - * Removed methods that aren’t useful in the Python bindings. -* ### `niswitch` (NI-SWITCH) - * #### Changed - * Added default values to some parameters. - * #### Removed - * Removed methods that aren’t useful in the Python bindings. -* ### `nidcpower` (NI-DCPower) - * #### Added - * Initial release - -## 0.2.0 - 2017-09-20 -* ### ALL - * #### Added - * Suport for channel-based properties - * #### Changed - * Warnings no longer raise an exception - * Warnings are now added to warnings.warn() -* ### `nidmm` (NI-DMM) - * #### Changed - * Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) -* ### `nimodinst` (NI-ModInst) - * #### Changed - * Device index is now on session not attribute. The correct way is now - ```python - i = 0 - with nimodinst.Session('nidmm') as session: - name = session[i].device_name + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + +#### [nimodinst] 0.2.0 - 2017-09-20 +- Added + - (Common) Suport for channel-based properties +- Changed + - (Common) Warnings no longer raise an exception + - Warnings are now added to warnings.warn() + - Device index is now on session not attribute. The correct way is now + ``` python + i = 0 + with nimodinst.Session('nidmm') as session: + name = session[i].device_name + ``` + +#### [nimodinst] 0.1.0 - 2017-09-01 +- Added + - Initial release +--- + +### niscope (NI-SCOPE) + +- [Unreleased](#niscope-unreleased) +- [1.4.9](#niscope-149---2025-02-26) +- [1.4.8](#niscope-148---2024-04-26) +- [1.4.6](#niscope-146---2023-09-11) +- [1.4.5](#niscope-145---2023-06-12) +- [1.4.4](#niscope-144---2023-04-14) +- [1.4.3](#niscope-143---2022-12-16) +- [1.4.1](#niscope-141---2021-08-23) +- [1.3.2](#niscope-132---2020-09-18) +- [1.3.1](#niscope-131---2020-06-08) +- [1.3.0](#niscope-130---2020-05-21) +- [1.2.1](#niscope-121---2020-04-21) +- [1.2.0](#niscope-120---2020-03-06) +- [1.1.5](#niscope-115---2019-11-22) +- [1.1.4](#niscope-114---2019-11-19) +- [1.1.3](#niscope-113---2019-10-21) +- [1.1.2](#niscope-112---2019-06-06) +- [1.1.0](#niscope-110---2018-10-25) +- [1.0.1](#niscope-101---2018-10-17) +- [1.0.0](#niscope-100---2018-06-08) +- [0.9.0](#niscope-090---2018-05-22) +- [0.8.0](#niscope-080---2018-04-27) +- [0.7.0](#niscope-070---2018-02-20) +- [0.6.0](#niscope-060---2017-12-20) +- [0.5.0](#niscope-050---2017-11-27) + +#### [niscope] Unreleased +- Added +- Changed +- Removed + +#### [niscope] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [niscope] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [niscope] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + + +#### [niscope] 1.4.5 - 2023-06-12 +- Added + - `get_channel_names()` + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Changed + - Fix [#1770](https://github.com/ni/nimi-python/issues/1770): fetch(), read(), and friends return wrong data when called with channel ranges on multi-instrument session. +- Removed + - (Common) `easy_install` support + +#### [niscope] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. + Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + +#### [niscope] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Removed + - (Common) Support for Python 3.6 + +#### [niscope] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [niscope] 1.3.2 - 2020-09-18 +- Added + - New methods for getting calibration information. - [#1463](https://github.com/ni/nimi-python/issues/1463) + - `get_ext_cal_last_date_and_time` + - `get_ext_cal_last_temp` + - `get_self_cal_last_date_and_time` + - `get_self_cal_last_temp` + - Measurement library methods. - [#806](https://github.com/ni/nimi-python/issues/806) + - `add_waveform_processing` + - `clear_waveform_measurement_stats` + - `clear_waveform_processing` + - `fetch_array_measurement` + - `fetch_measurement_stats` + - Measurement library properties. + - `meas_array_gain` + - `meas_array_offset` + - `meas_chan_high_ref_level` + - `meas_chan_low_ref_level` + - `meas_chan_mid_ref_level` + - `meas_filter_center_freq` + - `meas_filter_cutoff_freq` + - `meas_filter_order` + - `meas_filter_ripple` + - `meas_filter_taps` + - `meas_filter_transient_waveform_percent` + - `meas_filter_type` + - `meas_filter_width` + - `meas_fir_filter_window` + - `meas_high_ref` + - `meas_low_ref` + - `meas_mid_ref` + - `meas_hysteresis_percent` + - `meas_interpolation_sampling_factor` + - `meas_last_acq_histogram_size` + - `meas_other_channel` + - `meas_percentage_method` + - `meas_polynomial_interpolation_order` + - `meas_ref_level_units` + - `meas_time_histogram_high_time` + - `meas_time_histogram_high_volts` + - `meas_time_histogram_low_time` + - `meas_time_hisogram_low_volts` + - `meas_time_histogram_size` + - `meas_voltage_histogram_high_volts` + - `meas_voltage_histogram_low_volts` + - `meas_voltage_histogram_size` +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + - Fix [#1509](https://github.com/ni/nimi-python/issues/1509): `channel` and `record` fields are swapped in `waveform_info` struct returned from niscope fetch methods + - Fix [#1510](https://github.com/ni/nimi-python/issues/1510): `record` value in `waveform_info` struct returned from niscope fetch methods is wrong if `record_number` is non-zero + + + +#### [niscope] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [niscope] 1.3.0 - 2020-05-21 +- Added + - API parity with NI-SCOPE 20.0 by adding the following properties: + - `Session.end_of_acquisition_event_terminal_name` + - `Session.end_of_record_event_terminal_name` + - `Session.advance_trigger_terminal_name` + - `Session.ref_trigger_terminal_name` + - `Session.start_trigger_terminal_name` + - `Session.ready_for_advance_event_terminal_name` + - `Session.ready_for_ref_event_terminal_name` + - `Session.ready_for_start_event_terminal_name` +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. +#### [niscope] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 ``` -* ### `niswitch` (NI-SWITCH) - * #### Added - * Initial release - -## 0.1.0 - 2017-09-01 -* ### `nidmm` (NI-DMM) - * #### Added - * Initial release -* ### `nimodinst` (NI-ModInst) - * #### Added - * Initial release + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [niscope] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [niscope] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [niscope] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [niscope] 1.1.3 - 2019-10-21 +- Added + - `cable_sense_signal_enable`, `cable_sense_voltage`, `cable_sense_mode` properties and associated enum + - `enabled_channels`, `product_code` properties + - `glitch_condition`, `glitch_polarity`, `glitch_width` properties and associated enums + - `runt_high_threshold`, `runt_low_threshold`, `runt_polarity`, `runt_condition`, `runt_time_high_limit`, `runt_time_low_limit` properties and associated enums + - `width_condition`, `width_high_threshold`, `width_low_threshold`, `width_polarity` properties and associated enums +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [niscope] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + - Fixed enum values for `TIME_HISTOGRAM_MEAN_PLUS_STDEV`, `TIME_HISTOGRAM_MEAN_PLUS_2_STDEV`, `HF_REJECT` and `LF_REJECT` + +#### [niscope] 1.1.0 - 2018-10-25 +- Added + - import_attribute_configuration_file function + - export_attribute_configuration_file function + - import_attribute_configuration_buffer function + - import_attribute_configuration_buffer function + +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [niscope] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + - Format of output of wavefrom_info.__str__() + +#### [niscope] 1.0.0 - 2018-06-08 +- Added + - `niscope_fetch_forever.py` example +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - Removed default value for `level` parameter on `configure_trigger_edge()` + parameter list is now + - ``` python + - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + - ``` + - Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` + parameter list is now + - ``` python + - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + - ``` + +#### [niscope] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + - Properties removed + - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - Methods removed + - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + +#### [niscope] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated + - Takes additional parameters that modify fetch behavior + - Add resulting record as part of the waveform info + - Channel name and record number added to waveform info + - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), + - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. + - Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` + - Enum values and attribute names that start with an underscore + digit have been renamed + - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` + - `Session._5v_out_output_terminal` --> `Session.five_v_out_output_terminal` + - `ExportableSignals._5V_OUT` --> `ExportableSignals.FIVE_V_OUT` + - `FlexFIRAntialiasFilterType._48_TAP_STANDARD` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_STANDARD` + - `FlexFIRAntialiasFilterType._48_TAP_HANNING` --> `FlexFIRAntialiasFilterType.FOURTYEIGHT_TAP_HANNING` + - `FlexFIRAntialiasFilterType._16_TAP_HANNING` --> `FlexFIRAntialiasFilterType.SIXTEEN_TAP_HANNING` + - `FlexFIRAntialiasFilterType._8_TAP_HANNING` --> `FlexFIRAntialiasFilterType.EIGHT_TAP_HANNING` + - `VideoSignalFormat._480I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_59_94_FIELDS_PER_SECOND` + - `VideoSignalFormat._480I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_480I_60_FIELDS_PER_SECOND` + - `VideoSignalFormat._480P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_59_94_FRAMES_PER_SECOND` + - `VideoSignalFormat._480P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_480P_60_FRAMES_PER_SECOND` + - `VideoSignalFormat._576I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_576I_50_FIELDS_PER_SECOND` + - `VideoSignalFormat._576P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_576P_50_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_50_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_50_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_59_94_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_59_94_FRAMES_PER_SECOND` + - `VideoSignalFormat._720P_60_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_720P_60_FRAMES_PER_SECOND` + - `VideoSignalFormat._1080I_50_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_50_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080I_59_94_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_59_94_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080I_60_FIELDS_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080I_60_FIELDS_PER_SECOND` + - `VideoSignalFormat._1080P_24_FRAMES_PER_SECOND` --> `VideoSignalFormat.VIDEO_1080P_24_FRAMES_PER_SECOND` + - `Session.cal_self_calibration()` renamed to `Session.self_cal()` to match other drivers - issue [#615](https://github.com/ni/nimi-python/issues/615) +- Removed + - Following properties are now removed (use parameters to fetch calls): + - `fetch_relative_to` + - `fetch_offset` + - `fetch_record_number` + - `fetch_num_records` + - Removed `number_of_coefficients` parameter from `get_equalization_filter_coefficients()` + - Removed Measurement Library waveform methods and properties - issue [#809](https://github.com/ni/nimi-python/issues/809) + - `actual_meas_wfm_size()` + - `add_waveform_processing()` + - `clear_waveform_processing()` + - `fetch_array_measurement()` + - `clear_waveform_measurement_stats()` + - `fetch_measurement()` + - `fetch_measurement_stats()` + - `read_measurement()` + - `configure_ref_levels()` + - `meas_ref_level_units` + - `meas_other_channel` + - `meas_hysteresis_percent` + - `meas_last_acq_histogram_size` + - `meas_voltage_histogram_size` + - `meas_voltage_histogram_low_volts` + - `meas_voltage_histogram_high_volts` + - `meas_time_histogram_size` + - `meas_time_histogram_low_volts` + - `meas_time_histogram_high_volts` + - `meas_time_histogram_low_time` + - `meas_time_histogram_high_time` + - `meas_polynomial_interpolation_order` + - `meas_interpolation_sampling_factor` + - `meas_filter_cutoff_freq` + - `meas_filter_center_freq` + - `meas_filter_ripple` + - `meas_filter_transient_waveform_percent` + - `meas_filter_type` + - `meas_filter_order` + - `meas_filter_taps` + - `meas_chan_low_ref_level` + - `meas_chan_mid_ref_level` + - `meas_chan_high_ref_level` + - `meas_filter_width` + - `meas_fir_filter_window` + - `meas_array_gain` + - `meas_array_offset` + - `meas_percentage_method` + - `fetch_meas_num_samples` + +#### [niscope] 0.7.0 - 2018-02-20 +- Added + - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: + `channel` repeated capability +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - `niscope.Session()` no longer takes id_query parameter (Fix [#670](https://github.com/ni/nimi-python/issues/670)) + - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + `configure_trigger_digital()` + `configure_trigger_edge()` + `configure_trigger_hysteresis()` + `configure_trigger_software()` + `configure_trigger_video()` + `configure_trigger_window()` + `fetch()` + `fetch_measurement_stats()` + `read()` +- Removed + - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) + `BoolEnableDisable` - `P2P_ENABLED`, `P2P_ADVANCED_ATTRIBUTES_ENABLED`, `P2P_ONBOARD_MEMORY_ENABLED` + `BoolEnableDisableChan` - `CHANNEL_ENABLED` + `BoolEnableDisableIQ` - `FETCH_INTERLEAVED_IQ_DATA` + `BoolEnableDisableRealtime` - `HORZ_ENFORCE_REALTIME` + `BoolEnableDisableTIS` - `ENABLE_TIME_INTERLEAVED_SAMPLING` + +#### [niscope] 0.6.0 - 2017-12-20 +- Added + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). + - `fetch_into` for high-performance fetch using numpy.array. Supported element types: + - `numpy.float64` + - `numpy.int8` + - `numpy.int16` + - `numpy.int32` +- Changed + - Added default values for timeout on all fetch and read functions. + - Property input_impedance no longer uses enum InputImpedance. +- Removed + - `AddWaveformProcessing` - See #667 for rationale + - `ClearWaveformProcessing` - See #667 for rationale + - `FetchArrayMeasurement` - See #667 for rationale + +#### [niscope] 0.5.0 - 2017-11-27 +- Added + - Initial release +--- + +### nise (NI-Switch Executive) + +- [Unreleased](#nise-unreleased) +- [1.4.9](#nise-149---2025-02-26) +- [1.4.8](#nise-148---2024-04-26) +- [1.4.6](#nise-146---2023-09-11) +- [1.4.5](#nise-145---2023-06-12) +- [1.4.4](#nise-144---2023-04-14) +- [1.4.3](#nise-143---2022-12-16) +- [1.4.1](#nise-141---2021-08-23) +- [1.3.2](#nise-132---2020-09-18) +- [1.3.1](#nise-131---2020-06-08) +- [1.3.0](#nise-130---2020-05-21) +- [1.2.1](#nise-121---2020-04-21) +- [1.2.0](#nise-120---2020-03-06) +- [1.1.5](#nise-115---2019-11-22) +- [1.1.4](#nise-114---2019-11-19) +- [1.1.3](#nise-113---2019-10-21) +- [1.1.2](#nise-112---2019-06-06) +- [1.1.0](#nise-110---2018-10-25) +- [1.0.1](#nise-101---2018-10-17) + +#### [nise] Unreleased +- Added +- Changed +- Removed + +#### [nise] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nise] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [nise] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + +#### [nise] 1.4.5 - 2023-06-12 +- Removed + - (Common) `easy_install` support + +#### [nise] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nise] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 +- Removed + - (Common) Support for Python 3.6 + +#### [nise] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [nise] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nise] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + + + +#### [nise] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nise] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [nise] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [nise] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nise] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs +- Changed + - Version updated to 1.1.4 to match other released nimi-python modules + +#### [nise] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - Update to 1.0 - now ready for production use + +#### [nise] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + +#### [nise] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [nise] 1.0.1 - 2018-10-17 +- Added + - Initial Release +--- + +### niswitch (NI-SWITCH) + +- [Unreleased](#niswitch-unreleased) +- [1.4.9](#niswitch-149---2025-02-26) +- [1.4.8](#niswitch-148---2024-04-26) +- [1.4.6](#niswitch-146---2023-09-11) +- [1.4.5](#niswitch-145---2023-06-12) +- [1.4.4](#niswitch-144---2023-04-14) +- [1.4.3](#niswitch-143---2022-12-16) +- [1.4.1](#niswitch-141---2021-08-23) +- [1.3.3](#niswitch-133---2021-02-26) +- [1.3.2](#niswitch-132---2020-09-18) +- [1.3.1](#niswitch-131---2020-06-08) +- [1.3.0](#niswitch-130---2020-05-21) +- [1.2.1](#niswitch-121---2020-04-21) +- [1.2.0](#niswitch-120---2020-03-06) +- [1.1.5](#niswitch-115---2019-11-22) +- [1.1.4](#niswitch-114---2019-11-19) +- [1.1.3](#niswitch-113---2019-10-21) +- [1.1.2](#niswitch-112---2019-06-06) +- [1.1.0](#niswitch-110---2018-10-25) +- [1.0.1](#niswitch-101---2018-10-17) +- [1.0.0](#niswitch-100---2018-06-08) +- [0.9.0](#niswitch-090---2018-05-22) +- [0.8.0](#niswitch-080---2018-04-27) +- [0.7.0](#niswitch-070---2018-02-20) +- [0.6.0](#niswitch-060---2017-12-20) +- [0.5.0](#niswitch-050---2017-11-27) +- [0.4.0](#niswitch-040---2017-11-07) +- [0.3.0](#niswitch-030---2017-10-13) +- [0.2.0](#niswitch-020---2017-09-20) + +#### [niswitch] Unreleased +- Added +- Changed +- Removed + +#### [niswitch] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [niswitch] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [niswitch] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + + +#### [niswitch] 1.4.5 - 2023-06-12 +- Added + - Pass Python interpreter information if the driver runtime version supports it. This is used by NI in order to better understand client usage. +- Removed + - (Common) `easy_install` support + +#### [niswitch] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [niswitch] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 + - MeasurementLink support +- Changed + - Fix [#1652](https://github.com/ni/nimi-python/issues/1652): Topology constants haven't been updated on help page +- Removed + - (Common) Support for Python 3.6 + +#### [niswitch] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [niswitch] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [niswitch] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [niswitch] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [niswitch] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` + +#### [niswitch] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + +#### [niswitch] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [niswitch] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [niswitch] 1.1.3 - 2019-10-21 +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + +#### [niswitch] 1.1.2 - 2019-06-06 +- Changed + - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings + - (Common) New internal process for generating metadata + +#### [niswitch] 1.1.0 - 2018-10-25 +- Changed + - (Common) Updated generated metadata + - (Common) Updated "Driver Version Tested Against" + - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) + +#### [niswitch] 1.0.1 - 2018-10-17 +- Added + - (Common) Support for Python 3.7 - [#895](https://github.com/ni/nimi-python/issues/895) + - (Common) \_\_version\_\_ for all drivers - [#928](https://github.com/ni/nimi-python/issues/928) +- Changed + - (Common) No longer globally set warnings filter for `DriverWarning` - if you want all warnings from the driver, you will need to set `warnings.filterwarnings("always", category=.DriverWarning)` in your code + - (Common) Fix \_\_repr\_\_ for niscope.WaveformInfo - [#920](https://github.com/ni/nimi-python/issues/920) + +#### [niswitch] 1.0.0 - 2018-06-08 +- Removed + - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) + - `cabled_module_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `cabled_module_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `master_slave_scan_advanced_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `master_slave_trigger_bus` - [#881](https://github.com/ni/nimi-python/issues/881) + - `parsed_scan_list` - [#881](https://github.com/ni/nimi-python/issues/881) + - `trigger_mode` - [#881](https://github.com/ni/nimi-python/issues/881) + - `scan_advanced_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + - `trigger_input_polarity` - [#881](https://github.com/ni/nimi-python/issues/881) + - `configure_scan_list()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `configure_scan_trigger()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `route_trigger_input()` - [#881](https://github.com/ni/nimi-python/issues/881) + - `set_continuous_scan()` - [#881](https://github.com/ni/nimi-python/issues/881) + +#### [niswitch] 0.9.0 - 2018-05-22 +- Added + - (Common) Add `session.lock()` and `session.unlock()` to all drivers except `nimodinst` - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) `session.lock()` returns a context manager for managing locks - [#846](https://github.com/ni/nimi-python/issues/846) + - (Common) Fix thread-safety issues by using IVI session lock where aplicable +- Changed + - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) + - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) +- Removed + - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) + - `engine_major_version` + - `engine_minor_version` + - `engine_revision` + - `primary_error` + - `secondary_error` + - `error_elaboration` + - `io_session_type` + - `io_session` / `visa_rm_session` + - `group_capabilities` + - `interchange_check` + - `range_check` + - `record_coercions` + - `specific_driver_class_spec_major_version` + - `specific_driver_class_spec_minor_version` + - `query_instrument_status` + - `cache` + - `specific_driver_prefix` + +#### [niswitch] 0.8.0 - 2018-04-27 +- Changed + - (Common) All exceptions raised by the Python bindings inherit from `.Error` + - (Common) Exception type formerly known as `.Error` is now known as `.DriverError` + - This encapsulates any error that is returned by the underlying driver + - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) + +#### [niswitch] 0.7.0 - 2018-02-20 +- Changed + - (Common) Option string can now be a python dictionary instead of a string. (Fix [#661](https://github.com/ni/nimi-python/issues/661)) + - Key/Value pairs approporiate for desired behavior + ``` python + session = nidmm.Session('Dev1', False, {'simulate': True, 'driver_setup': {'Model': '4071', 'BoardType': 'PXI'}}) + ``` + - (Common) Repeated capabilities are handled differently. See [#737](https://github.com/ni/nimi-python/issues/737) for discussion + - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion + - The following functions timeout, delay or holdoff parameters now is required to be a `datetime.timedelta()` object: + - `configure_scan_trigger()` + - `wait_for_debounce()` + - `wait_for_scan_complete()` + +#### [niswitch] 0.6.0 - 2017-12-20 +- Added + - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). +- Removed + - Removed `init_with_topology`. Clients should use `niswitch.Session` constructor. See [#660](https://github.com/ni/nimi-python/issues/660). + +#### [niswitch] 0.5.0 - 2017-11-27 +- Removed + - (Common) enum definitions that are not referenced by a function and/or an attributes + +#### [niswitch] 0.4.0 - 2017-11-07 +- Changed +(Common) Simplified examples by removing try/except +(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines +- Removed +Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. + +#### [niswitch] 0.3.0 - 2017-10-13 +- Added + - (Common) Support for ViInt64 (64-bit integers) +- Changed + - (Common) Modified how methods with repeated capabilities are invoked. There's no longer (for example) a `channel_name` input. Instead: + ``` python + # Sets sequence on channels 0 through 3 + session['0-3'].set_sequence(values, source_delays) + ``` + - (Common) Enum value documentation lists the fully qualified name - this is to allow easy copy/paste + - Added default values to some parameters. +- Removed + - Removed methods that aren’t useful in the Python bindings. + +#### [niswitch] 0.2.0 - 2017-09-20 +- Added + - Initial release +--- + +### nitclk (NI-TCLK) + +- [Unreleased](#nitclk-unreleased) +- [1.4.9](#nitclk-149---2025-02-26) +- [1.4.8](#nitclk-148---2024-04-26) +- [1.4.6](#nitclk-146---2023-09-11) +- [1.4.5](#nitclk-145---2023-06-12) +- [1.4.4](#nitclk-144---2023-04-14) +- [1.4.3](#nitclk-143---2022-12-16) +- [1.4.1](#nitclk-141---2021-08-23) +- [1.3.3](#nitclk-133---2021-02-26) +- [1.3.2](#nitclk-132---2020-09-18) +- [1.3.1](#nitclk-131---2020-06-08) +- [1.3.0](#nitclk-130---2020-05-21) +- [1.2.1](#nitclk-121---2020-04-21) +- [1.2.0](#nitclk-120---2020-03-06) +- [1.1.5](#nitclk-115---2019-11-22) +- [1.1.4](#nitclk-114---2019-11-19) +- [1.1.3](#nitclk-113---2019-10-21) + +#### [nitclk] Unreleased +- Added +- Changed +- Removed + +#### [nitclk] 1.4.9 - 2025-02-26 +- Added + - (Common) Support for Python 3.13 +- Changed + - (Common) Fix [#2069](https://github.com/ni/nimi-python/issues/2069) +- Removed + - (Common) Support for Python 3.8 + +#### [nitclk] 1.4.8 - 2024-04-26 +- Added + - (Common) Support for Python 3.12 + +#### [nitclk] 1.4.6 - 2023-09-11 +- Changed + - (Common) Fix [#1970](https://github.com/ni/nimi-python/issues/1970): Incorrect error when driver runtime not installed. + - (Common) Fix [#1998](https://github.com/ni/nimi-python/issues/1998): nimi-python APIs inefficiently allocate Python arrays. +- Removed + - (Common) Support for Python 3.7 + +#### [nitclk] 1.4.5 - 2023-06-12 +- Removed + - (Common) `easy_install` support + +#### [nitclk] 1.4.4 - 2023-04-14 +- Added + - (Common) Support for Python 3.11 +- Changed + - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. + +#### [nitclk] 1.4.3 - 2022-12-16 +- Added + - (Common) Support for Python 3.10 +- Removed + - (Common) Support for Python 3.6 + +#### [nitclk] 1.4.1 - 2021-08-23 +- Added + - (Common) Support for Python 3.9 +- Removed + - (Common) Support for Python 3.5 + +#### [nitclk] 1.3.3 - 2021-02-26 +- Added + - nitclk_niscope_synchronize_with_trigger.py to demonstrate homogenous triggering. +- Removed + - nitclk_configure.py as it did not do anything. + +#### [nitclk] 1.3.2 - 2020-09-18 +- Changed + - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. + +#### [nitclk] 1.3.1 - 2020-06-08 +- Changed + - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest + - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 + +#### [nitclk] 1.3.0 - 2020-05-21 +- Changed + - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. + +#### [nitclk] 1.2.1 - 2020-04-21 +- Added + - (Common) Support for chained repeated capabilities. This allows things like + ``` python + session.sites[0, 1].pins['PinA', 'PinB'].ppmu_voltage_level = 4 + ``` + The repeated capabilities will be expanded to `'site0/PinA,site0/PinB,site1/PinA,site1/PinB'` +- Changed + - Version updated to 1.2.1 to match other released nimi-python modules + +#### [nitclk] 1.2.0 - 2020-03-06 +- Added + - (Common) Zip file per driver for all examples and any helper files + - (Common) Link to zip file on examples documentation + - (Common) Support for Python 3.8 +- Changed + - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) + - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) + - Method parameters and properties that are time based now take or return a `datetime.timedelta` object +- Removed + - (Common) Python 2.7 support - [Python Software Foundation version status](https://devguide.python.org/#status-of-python-branches) + - (Common) Python 3.4 support - [Python Software Foundation PEP 429](https://www.python.org/dev/peps/pep-0429/) + - (Common) PyPy and PyPy3 support [#1271](https://github.com/ni/nimi-python/issues/1271) + - Ability to pass an integer as a session / session reference + - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) + +#### [nitclk] 1.1.5 - 2019-11-22 +- Changed + - (Common) Fix #1140: Linux support was accidentally broken. + - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. + +#### [nitclk] 1.1.4 - 2019-11-19 +- Added + - (Common) Support for Python 3.8 + - (Common) `ViUInt8` is now a valid type in APIs + +#### [nitclk] 1.1.3 - 2019-10-21 +- Added + - Initial support + The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Python Versioning](http://legacy.python.org/dev/peps/pep-0396/). +- [Unreleased](#nitclk-unreleased) + +#### [nitclk + +] Unreleased +- Added +- Changed +- Removed +--> \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 494e4debe..3c53a1d4c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,7 +124,7 @@ begin contributing to to the project. 1. Make your change. 1. Verify all tests, including the new ones, pass. 1. Update CHANGELOG.md for customer-visible changes. - * If the change applies to all generated driver bindings, put the change into the **ALL** section + * If the change applies to all generated driver bindings, put the change into all drivers. * If it only applies to a single driver binding, put the change in the section associated with that driver * DO NOT MENTION: Internal-only changes like refactors or test improvements. 1. Commit modifications to generated files. @@ -166,7 +166,8 @@ Release Process ``` * Commit to branch 1. Update [CHANGELOG.md](./CHANGELOG.md) - * Delete empty (i.e. No changes) sub-sections under "Unreleased" section + * Delete empty (i.e. No changes) sub-sections under "Unreleased" section for each drivers. + * Remove the Unreleased section from the TOC if there are no changes for those drivers. * Change the "Unreleased" header to the version of the release * Change [Unreleased] in TOC to the version of the release * Commit to branch @@ -209,7 +210,7 @@ Release Process * Ensure that all changes made as part of build command are specific to intended drivers. * Commit to branch 1. Update changelog - * Copy Unreleased section from bottom of changelog to the top and add a link to it in the TOC + * Copy Unreleased section from the bottom of the changelog. Modify the driver name in the example and TOC. Paste the modified section at the top of each driver's changelog and add a corresponding link to it in the driver's TOC. * Commit to branch 1. Create a pull request containing post-release changes and get it merged From 850c03c2a3b8530f7d5dd432da269262d9427077 Mon Sep 17 00:00:00 2001 From: dummy Date: Wed, 9 Apr 2025 14:49:09 +0530 Subject: [PATCH 21/32] Updated Contributing.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c53a1d4c..7a010113a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -166,7 +166,7 @@ Release Process ``` * Commit to branch 1. Update [CHANGELOG.md](./CHANGELOG.md) - * Delete empty (i.e. No changes) sub-sections under "Unreleased" section for each drivers. + * Delete empty (i.e. No changes) sub-sections under "Unreleased" section * Remove the Unreleased section from the TOC if there are no changes for those drivers. * Change the "Unreleased" header to the version of the release * Change [Unreleased] in TOC to the version of the release @@ -210,7 +210,7 @@ Release Process * Ensure that all changes made as part of build command are specific to intended drivers. * Commit to branch 1. Update changelog - * Copy Unreleased section from the bottom of the changelog. Modify the driver name in the example and TOC. Paste the modified section at the top of each driver's changelog and add a corresponding link to it in the driver's TOC. + * Copy Unreleased section from the bottom of the changelog. Modify the driver name in the example and TOC. Paste the modified section at the top of intended driver's changelog and add a corresponding link to it in the driver's TOC. * Commit to branch 1. Create a pull request containing post-release changes and get it merged From 672937e95cd97aeaca154c8f8d28cfb2981cbc5a Mon Sep 17 00:00:00 2001 From: dummy Date: Wed, 9 Apr 2025 23:20:04 +0530 Subject: [PATCH 22/32] Remvoing the changes in python scipts present in tools folder. --- tools/build_release.py | 48 +++++--------------------- tools/updateReleaseInfo.py | 71 +++++++++----------------------------- 2 files changed, 24 insertions(+), 95 deletions(-) diff --git a/tools/build_release.py b/tools/build_release.py index cf4923ab2..ba2c5d90a 100644 --- a/tools/build_release.py +++ b/tools/build_release.py @@ -9,6 +9,8 @@ pp = pprint.PrettyPrinter(indent=4, width=100) default_python_cmd = ['python'] +drivers_to_upload = ['nidcpower', 'nidigital', 'nidmm', 'niswitch', 'nimodinst', 'nifgen', 'niscope', 'nise', 'nitclk'] +drivers_to_update = ['nifake'] + drivers_to_upload class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter): @@ -21,8 +23,6 @@ class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescri def main(): - drivers_to_update = ['nidcpower', 'nidigital', 'nidmm', 'nifake', 'niswitch', 'nimodinst', 'nifgen', 'niscope', 'nise', 'nitclk'] - # Setup the required arguments for this script usage = """Release script Prereqs @@ -33,15 +33,11 @@ def main(): parser = argparse.ArgumentParser(description=usage, formatter_class=CustomFormatter) build_group = parser.add_argument_group("Build configuration") + build_group.add_argument("--release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. build, then update with .dev0") build_group.add_argument("--upload", action="store_true", default=False, help="Upload build distributions to PyPI") + build_group.add_argument("--update", action="store_true", default=False, help="Update version in config.py files") build_group.add_argument("--build", action="store_true", default=False, help="Clean and build") build_group.add_argument("--python-cmd", action="store", default=None, help=f"Command to use for invoking python. Default: {default_python_cmd}") - build_group.add_argument("--drivers", action="store", default=None, help="Comma-separated list of drivers to update. Default: All Drivers") - build_group.add_argument("--increment-major-version", action="store_true", default=False, help="Increment the major version") - build_group.add_argument("--increment-minor-version", action="store_true", default=False, help="Increment the minor version") - build_group.add_argument("--increment-patch-version", action="store_true", default=False, help="Increment the patch version") - build_group.add_argument("--increment-build-number", action="store_true", default=False, help="Increment the build number") - build_group.add_argument("--update-for-release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. build, then update with .dev0") verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") @@ -49,17 +45,6 @@ def main(): verbosity_group.add_argument("--log-file", action="store", default=None, help="Send logging to listed file instead of stdout") args = parser.parse_args() - # Validate that only one of the version-related flags is provided - version_flags = [ - args.increment_major_version, - args.increment_minor_version, - args.increment_patch_version, - args.increment_build_number, - args.update_for_release, - ] - if sum(version_flags) > 1: - raise ValueError("Only one of --increment-major-version, --increment-minor-version, --increment-patch-version, --increment-build-number or --update-for-release can be provided.") - if args.verbose > 1: configure_logging(logging.DEBUG, args.log_file) elif args.verbose == 1: @@ -79,30 +64,14 @@ def main(): passthrough_params.append('--preview') if args.log_file: passthrough_params.append('--log-file').append(args.log_file) - if args.update_for_release: + if args.release: passthrough_params.append('--release') - if args.increment_build_number: - passthrough_params.append('--update-type=build') - if args.increment_patch_version: - passthrough_params.append('--update-type=patch') - if args.increment_minor_version: - passthrough_params.append('--update-type=minor') - if args.increment_major_version: - passthrough_params.append('--update-type=major') - - if args.drivers: - provided_drivers = args.drivers.split(",") - invalid_drivers = [driver for driver in provided_drivers if driver not in drivers_to_update] - - if invalid_drivers: - raise ValueError(f"The following drivers are invalid: {', '.join(invalid_drivers)}. Valid drivers are: {','.join(drivers_to_update)}") - drivers_to_update = provided_drivers - - if any([args.increment_major_version, args.increment_minor_version, args.increment_patch_version, args.increment_build_number, args.update_for_release]): + + if args.update: logging.info('Updating versions') for d in drivers_to_update: - logging.info(pp.pformat(python_cmd + ['tools/updateReleaseInfo.py', '--src-folder', f'src/{d}',] + passthrough_params)) + logging.info(pp.pformat(python_cmd + ['tools/updateReleaseInfo.py', '--src-folder', f'src/{d}', ] + passthrough_params)) check_call(python_cmd + ['tools/updateReleaseInfo.py', '--src-folder', f'src/{d}', ] + passthrough_params) if args.build: @@ -117,7 +86,6 @@ def main(): if args.upload: logging.info('Uploading to PyPI') complete_twine_cmd = twine_cmd + ['upload'] - drivers_to_upload = [driver for driver in drivers_to_update if driver != 'nifake'] for d in drivers_to_upload: complete_twine_cmd += [f'generated/{d}/dist/*'] diff --git a/tools/updateReleaseInfo.py b/tools/updateReleaseInfo.py index 9ee72b86a..c5a4207f2 100644 --- a/tools/updateReleaseInfo.py +++ b/tools/updateReleaseInfo.py @@ -1,3 +1,5 @@ +# !python + import argparse from configure_logging import configure_logging import logging @@ -8,25 +10,8 @@ pp = pprint.PrettyPrinter(indent=4, width=100) -# Increment version based on bump type ('major', 'minor', 'patch'). -def bump_version(version, bump_type): - major, minor, patch = map(int, version.split('.')) - logging.info(f"Parsed version: major={major}, minor={minor}, patch={patch}") - - if bump_type == 'patch': - patch += 1 - elif bump_type == 'minor': - minor += 1 - patch = 0 - elif bump_type == 'major': - major += 1 - minor = 0 - patch = 0 - - return f"{major}.{minor}.{patch}" - - def main(): + # Setup the required arguments for this script usage = """ Update version in files. Example: X.Y.Z.devN to X.Y.Z """ @@ -34,7 +19,6 @@ def main(): file_group = parser.add_argument_group("Input and Output files") file_group.add_argument("--src-folder", action="store", required=True, help="Source folder") file_group.add_argument("--release", action="store_true", default=False, help="This is a release build, so only remove '.devN'. Error if not there") - file_group.add_argument("--update-type", action="store", default=None, choices=["major", "minor", "patch", "build"], help="Specify the type of update: major, minor, patch or build. ") verbosity_group = parser.add_argument_group("Verbosity, Logging & Debugging") verbosity_group.add_argument("-v", "--verbose", action="count", default=0, help="Verbose output") @@ -50,51 +34,27 @@ def main(): configure_logging(logging.WARNING, args.log_file) logging.info(pp.pformat(args)) + metadata_file = os.path.join(args.src_folder, "metadata", "config_addon.py") with open(metadata_file) as content_file: contents = content_file.read() module_dev_version_re = re.compile(r"'module_version': '(\d+\.\d+\.\d+)\.dev(\d+)'") m = module_dev_version_re.search(contents) - logging.debug(f"Dev version regex match: {m}") - if m: - base_version = m.group(1) - dev_number = int(m.group(2)) if args.release: - if args.update_type != 'build': - bumped_version = bump_version(base_version, args.update_type) - logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {bumped_version}") - contents = module_dev_version_re.sub(f"'module_version': '{bumped_version}'", contents) - new_version = bumped_version - else: - logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {base_version}") - contents = module_dev_version_re.sub(f"'module_version': '{base_version}'", contents) - new_version = base_version + logging.info('Dev version found, updating {0}.dev{1} to {0}'.format(m.group(1), int(m.group(2)))) + contents = module_dev_version_re.sub(f"'module_version': '{m.group(1)}'", contents) + new_version = m.group(1) else: - if args.update_type == 'build': - logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {base_version}.dev{dev_number + 1}") - contents = module_dev_version_re.sub(f"'module_version': '{base_version}.dev{dev_number + 1}'", contents) - new_version = f"{base_version}.dev{dev_number + 1}" - else: - bumped_version = bump_version(base_version, args.update_type) - logging.info(f"Dev version found, updating {base_version}.dev{dev_number} to {bumped_version}.dev0") - contents = module_dev_version_re.sub(f"'module_version': '{bumped_version}.dev0'", contents) - new_version = f"{bumped_version}.dev0" - else: - module_version_re = re.compile(r"'module_version': '(\d+\.\d+\.)(\d+)'") - m = module_version_re.search(contents) - logging.debug(f"Release version regex match: {m}") - if m: - if args.release: - logging.error("Error: Attempting to release an already released version for " + os.path.basename(args.src_folder) + ".") - return - if args.update_type == 'build': - args.update_type = 'patch' - new_version = bump_version(f"{m.group(1)}{m.group(2)}", args.update_type) - logging.info(f"Release version found, updating {m.group(1)}{m.group(2)} to {new_version}.dev0") - contents = module_version_re.sub(f"'module_version': '{new_version}.dev0'", contents) - new_version = f"{new_version}.dev0" + logging.info('Dev version found, updating {0}.dev{1} to {0}.dev{2}'.format(m.group(1), int(m.group(2)), int(m.group(2)) + 1)) + contents = module_dev_version_re.sub(f"'module_version': '{m.group(1)}.dev{int(m.group(2)) + 1}'", contents) + + module_version_re = re.compile(r"'module_version': '(\d+\.\d+\.)(\d+)'") + m = module_version_re.search(contents) + if m and not args.release: + logging.info('Release version found, updating {0}{1} to {0}{2}.dev0'.format(m.group(1), int(m.group(2)), int(m.group(2)) + 1)) + contents = module_version_re.sub(f"'module_version': '{m.group(1)}{int(m.group(2)) + 1}.dev0'", contents) if not args.preview: with open(metadata_file, 'w') as content_file: @@ -110,3 +70,4 @@ def main(): if __name__ == '__main__': main() + From 4d333308a4c154c673bb72156d941596af03982d Mon Sep 17 00:00:00 2001 From: Rahul R Date: Fri, 11 Apr 2025 11:27:21 +0530 Subject: [PATCH 23/32] Correct the naming format --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc7d7a725..eb7c9f24a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ --- -### nidcpower (NI-DCPOWER) +### nidcpower (NI-DCPower) - [Unreleased](#nidcpower-unreleased) - [1.4.9](#nidcpower-149---2025-02-26) - [1.4.8](#nidcpower-148---2024-04-26) From 52c36587cc3f2d5570b6ea57531df2c099cc2036 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Fri, 11 Apr 2025 11:31:35 +0530 Subject: [PATCH 24/32] Correcting Package names --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb7c9f24a..79bcabe84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,9 @@ - [nifgen (NI-FGEN)](#nifgen-ni-fgen) - [nimodinst (NI-ModInst)](#nimodinst-ni-modinst) - [niscope (NI-SCOPE)](#niscope-ni-scope) -- [nise (NI-Switch Executive)](#nise-ni-switch-executive) +- [nise (NI Switch Executive)](#nise-ni-switch-executive) - [niswitch (NI-SWITCH)](#niswitch-ni-switch) -- [nitclk (NI-TCLK)](#nitclk-ni-tclk) +- [nitclk (NI-TClk)](#nitclk-ni-tclk) --- @@ -2085,7 +2085,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Initial release --- -### nise (NI-Switch Executive) +### nise (NI Switch Executive) - [Unreleased](#nise-unreleased) - [1.4.9](#nise-149---2025-02-26) @@ -2494,7 +2494,7 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Initial release --- -### nitclk (NI-TCLK) +### nitclk (NI-TClk) - [Unreleased](#nitclk-unreleased) - [1.4.9](#nitclk-149---2025-02-26) From 3efdf210208f599e63d2bea3c98f8248419846b4 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Thu, 17 Apr 2025 13:26:35 +0530 Subject: [PATCH 25/32] Implementation of code review comments. --- CHANGELOG.md | 160 +++++++++++++++++++++++++++++---------------------- 1 file changed, 90 insertions(+), 70 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79bcabe84..3998238ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Drivers +## Packages - [nidcpower (NI-DCPower)](#nidcpower-ni-dcpower) - [nidigital (NI-Digital Pattern Driver)](#nidigital-ni-digital-pattern-driver) - [nidmm (NI-DMM)](#nidmm-ni-dmm) @@ -247,11 +247,11 @@ - `clear_latched_output_cutoff_state` - `query_latched_output_cutoff_state` - Support for independent operation of instrument channels. Creating an `nidcpower.Session` -with independent channels allows you to use multiple instruments in the same session. With -independent channels, you can configure multiple channels of the same instrument, or of -multiple instruments, independently of one another within the same session. Requires NI-DCPower -driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, -pass `independent_channels=False` to `nidcpower.Session` constructor. + with independent channels allows you to use multiple instruments in the same session. With + independent channels, you can configure multiple channels of the same instrument, or of + multiple instruments, independently of one another within the same session. Requires NI-DCPower + driver runtime 20.6.0 or later. In order to use with older runtime or to maintain old behavior, + pass `independent_channels=False` to `nidcpower.Session` constructor. @@ -310,13 +310,13 @@ pass `independent_channels=False` to `nidcpower.Session` constructor. - (Common) Link to zip file on examples documentation - (Common) Support for Python 3.8 - `create_advanced_sequence()` - [#504](https://github.com/ni/nimi-python/issues/504) - Instead of a list of attribute IDs, you pass in a list of property names as strings - Includes example to see how to use it - Additional methods and properties that were made public (rather than private) - - `create_advanced_sequence_step()` - - `delete_advanced_sequence()` - - `active_advanced_sequence` - - `active_advanced_sequence_step` + - Instead of a list of attribute IDs, you pass in a list of property names as strings + - Includes example to see how to use it + - Additional methods and properties that were made public (rather than private) + - `create_advanced_sequence_step()` + - `delete_advanced_sequence()` + - `active_advanced_sequence` + - `active_advanced_sequence_step` - Changed - (Common) `import_attribute_configuration_buffer()` now accepts `list` of numbers that are integers less than 255, `array.array('b')`, `bytes`, `bytearray` for configuration buffer - [#1013](https://github.com/ni/nimi-python/issues/1013) - (Common) `export_attribute_configuration_buffer()` now returns `bytes` as the buffer type - [#1013](https://github.com/ni/nimi-python/issues/1013) @@ -485,7 +485,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - New example `nidcpower_advanced_sequence.py` - Changed - (Common) Simplified examples by removing try/except - - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - (Common) **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - Fixed method signature for: - `wait_for_event` - `create_sequence` @@ -509,15 +509,15 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - [1.4.4](#nidigital-144---2023-04-14) - [1.4.3](#nidigital-143---2022-12-16) - [1.4.1](#nidigital-141---2021-08-23) -- [1.3.3](#nidigital-133---2021-02-26) -- [1.3.2](#nidigital-132---2020-09-18) -- [1.3.1](#nidigital-131---2020-06-08) -- [1.3.0](#nidigital-130---2020-05-21) -- [1.2.1](#nidigital-121---2020-04-21) -- [1.2.0](#nidigital-120---2020-03-06) -- [1.1.5](#nidigital-115---2019-11-22) -- [1.1.4](#nidigital-114---2019-11-19) -- [1.1.3](#nidigital-113---2019-10-21) +- [1.0.0](#nidigital-100---2021-02-26) +- [0.9.2](#nidigital-092---2020-09-18) +- [0.9.1](#nidigital-091---2020-06-08) +- [0.9.0](#nidigital-090---2020-05-21) +- [0.5.0](#nidigital-050---2020-04-21) +- [0.4.0](#nidigital-040---2020-03-06) +- [0.2.1](#nidigital-021---2019-11-22) +- [0.2.0](#nidigital-020---2019-11-19) +- [0.1.1](#nidigital-011---2019-10-21) #### [nidigital] Unreleased - Added @@ -585,30 +585,28 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed - (Common) Support for Python 3.5 -#### [nidigital] 1.3.3 - 2021-02-26 +#### [nidigital] 1.0.0 - 2021-02-26 - Added - - 1.0.0 release: - - API reference documentation and API usage examples + - API reference documentation and API usage examples - API parity with NI-Digital Pattern Driver 20.6.0 by adding support for configuration of frequency counter measurement mode. The following properties are added: - `frequency_counter_measurement_mode` - `frequency_counter_hysteresis_enabled` -#### [nidigital] 1.3.2 - 2020-09-18 +#### [nidigital] 0.9.2 - 2020-09-18 - Changed - (Common) Fix [#1491](https://github.com/ni/nimi-python/issues/1491): import_attribute_configuration_buffer() fails intermittently when `list` or `array.array` is passed in. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.5.0 for NI-DCPower, NI-SWITCH, and NI-DMM. no changes on other drivers. -#### [nidigital] 1.3.1 - 2020-06-08 +#### [nidigital] 0.9.1 - 2020-06-08 - Changed - (Common) Fix [#1473](https://github.com/ni/nimi-python/issues/1473): Unintentional dependency on pytest - (Common) Fix [#1474](https://github.com/ni/nimi-python/issues/1474): Requires hightime>=0.2.0 -#### [nidigital] 1.3.0 - 2020-05-21 +#### [nidigital] 0.9.0 - 2020-05-21 - Added - - 0.9.0 release: - - Public API is considered complete, stable, and tested - - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 - - API reference documentation and example code are not complete + - Public API is considered complete, stable, and tested + - Parity with public API for other ADEs supported in NI-Digital Pattern Driver 19.0.1 + - API reference documentation and example code are not complete - Changed - (Common) Change the type of applicable properties and method parameters from `datetime.timedelta` to `hightime.timedelta` and from `datetime.datetime` to `hightime.datetime`. - [#744](https://github.com/ni/nimi-python/issues/744), [#1368](https://github.com/ni/nimi-python/issues/1368), [#1382](https://github.com/ni/nimi-python/issues/1382), [#1397](https://github.com/ni/nimi-python/issues/1397) - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. The version is 20.0.0 for all modules except `nidigital`, for which it is 19.0.1. @@ -616,7 +614,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Changed HistoryRAMCycleInformation.__repr__ to include `__module__` - [#1426](https://github.com/ni/nimi-python/issues/1426) - Changed return type of `get_time_set_period` and `get_time_set_edge` to `datetime.timedelta` - [#1397](https://github.com/ni/nimi-python/issues/1397) -#### [nidigital] 1.2.1 - 2020-04-21 +#### [nidigital] 0.5.0 - 2020-04-21 - Added - (Common) Support for chained repeated capabilities. This allows things like ``` python @@ -649,7 +647,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `load_specifications`, `load_levels`, and `load_timing` - [#1392](https://github.com/ni/nimi-python/issues/1392) - `get_channel_name` and `get_channel_name_from_string` - [#1386](https://github.com/ni/nimi-python/issues/1386) -#### [nidigital] 1.2.0 - 2020-03-06 +#### [nidigital] 0.4.0 - 2020-03-06 - Added - (Common) Zip file per driver for all examples and any helper files - (Common) Link to zip file on examples documentation @@ -671,12 +669,12 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed `fetch_history_ram_cycle_pin_data` and `fetch_history_ram_scan_cycle_number`. They are not needed since `fetch_history_ram_cycle_information` was updated to return class instances that contains cycle pin data and scan cycle number - [#1071](https://github.com/ni/nimi-python/issues/1071) -#### [nidigital] 1.1.5 - 2019-11-22 +#### [nidigital] 0.2.1 - 2019-11-22 - Changed - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. -#### [nidigital] 1.1.4 - 2019-11-19 +#### [nidigital] 0.2.0 - 2019-11-19 - Added - (Common) Support for Python 3.8 - (Common) `ViUInt8` is now a valid type in APIs @@ -689,9 +687,36 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Renamed `write_source_waveform_broadcast_u32()` to `write_source_waveform_broadcast()` - `get_pin_results_pin_information()` - returns namedtuple `PinInfo(pin_indexes, site_numbers, channel_indexes)` -#### [nidigital] 1.1.3 - 2019-10-21 +#### [nidigital] 0.1.1 - 2019-10-21 - Added - Initial support + - Very basic at this point and subject to change + - Looking for any testing and/or feedback + - `get_channel_name_from_string()` +- Changed + - (Common) The development status in `setup.py` will be based on the module version: + - version >= 1.0 + - .devN or .aN - Alpha + - .bN, .cN or .rcN - Beta + - \ or .postN - Stable + - version < 1.0 and version >= 0.5 - Beta + - version < 0.5 - Alpha + - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. + - New enums: + | Enum name | Where used | + |----------------------------|----------------------------------------------------------------------------------| + | `DigitalEdge` | `digital_edge_conditional_jump_trigger_edge`, `digital_edge_start_trigger_edge` | + | `ApertureTimeUnits` | `ppmu_aperture_time_units`, `ppmu_configure_aperture_time(units)` | + | `PPMUOutputFunction` | `ppmu_output_function` | + | `SelectedFunction` | `selected_function` | + | `TDREndpointTermination` | `tdr_endpoint_termination` | + | `Signal` | `export_signal(signal)` | + - **[Source Breaker]** No longer return the "actual size" from functions that use 'ivi-dance-with-a-twist'. This only affects `nidigital`. +- Removed + - Should be private - `get_session_state()`, `get_desired_attribute_*()`, `ppmu_measure_cached()`, `read_static_cached()`, `configure_ref_clock()`, `disable()`, + `get_number_of_vectors()`, `get_pattern_file_path()`, `get_pin_type()`, `get_time_set_compare_edges()`, `get_time_set_drive_edges()`, + `is_pattern_file_modified_since_load()`, `load_levels_internal()`, `load_pattern_internal()`, `load_timing_internal()`, `uncommit()` + - Need to determine how to generate this function - `fetch_capture_waveform_u32()` --- @@ -951,15 +976,15 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidmm] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. + - `fetch_waveform_into` for high-performance fetch using numpy.array of float64. - Changed - - Property powerline_freq no longer uses enum PowerlineFrequency. - - Property current_source no longer uses enum CurrentSource. - - Property input_resistance no longer uses enum InputResistance. - - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple - - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple - - Removed `actual_number_of_points` from `read_multi_point()` returned tuple - - Removed `actual_number_of_points` from `read_waveform()` returned tuple + - Property powerline_freq no longer uses enum PowerlineFrequency. + - Property current_source no longer uses enum CurrentSource. + - Property input_resistance no longer uses enum InputResistance. + - Removed `actual_number_of_points` from `fetch_waveform()` returned tuple + - Removed `actual_number_of_points` from `fetch_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_multi_point()` returned tuple + - Removed `actual_number_of_points` from `read_waveform()` returned tuple #### [nidmm] 0.5.0 - 2017-11-27 - Added @@ -970,7 +995,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidmm] 0.4.0 - 2017-11-07 - Changed - (Common) Simplified examples by removing try/except - - (Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - (Common) **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - Removed incorrect leading underscore from some enum values: - `Function.AC_VOLTS_DC_COUPLED` - `Function.WAVEFORM_CURRENT` @@ -1002,7 +1027,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Suport for channel-based properties - Changed - (Common) Warnings no longer raise an exception - - (Common) Warnings are now added to warnings.warn() + - Warnings are now added to warnings.warn() - Added support for enums with types other than ViInt32 (Fixes [#330](https://github.com/ni/nimi-python/issues/330)) #### [nidmm] 0.1.0 - 2017-09-01 @@ -1066,7 +1091,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `done_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - `marker_event_pulse_width_units` - [#1873](https://github.com/ni/nimi-python/issues/1873) - Enum added: + - Enum added: - `EventPulseWidthUnits` - [#1873](https://github.com/ni/nimi-python/issues/1873) #### [nifgen] 1.4.6 - 2023-09-11 @@ -1105,7 +1130,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `data_markers` - `script_triggers` - Corrected multiple mistakes in repeated capability info of attribute metadata - alters API behavior (repeated capability access of attributes) and documentation + - alters API behavior (repeated capability access of attributes) and documentation #### [nifgen] 1.4.1 - 2021-08-23 - Added @@ -1354,9 +1379,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - Repeated capablilites - See [#737](https://github.com/ni/nimi-python/issues/737) for discussion: - `channel` repeated capability - `markers` repeated capability - `script_triggers` repeated capability + - `channel` repeated capability + - `markers` repeated capability + - `script_triggers` repeated capability - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - `adjust_sample_clock_relative_delay()` - `wait_until_done()` @@ -1367,9 +1392,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [nifgen] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - - Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) - - Support for calling `write_waveform` with a waveform handle (int) or a name (str). - - Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) + - Support for calling `write_waveform` using list (float) or numpy.array (int16 or float64) + - Support for calling `write_waveform` with a waveform handle (int) or a name (str). + - Support for calling `create_waveform` using list (float) or numpy.array (int16 or float64) - Changed - Renamed `create_waveform_f64` -> `create_waveform` - Removed @@ -1413,7 +1438,6 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - [0.9.0](#nimodinst-090---2018-05-22) - [0.8.0](#nimodinst-080---2018-04-27) - [0.7.0](#nimodinst-070---2018-02-20) -- [0.6.0](#nimodinst-060---2017-12-20) - [0.5.0](#nimodinst-050---2017-11-27) - [0.4.0](#nimodinst-040---2017-11-07) - [0.3.0](#nimodinst-030---2017-10-13) @@ -1557,8 +1581,8 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) `SelfTestError` now inherits from `.Error` rather than `Exception` - [#830](https://github.com/ni/nimi-python/issues/830) - (Common) Warning class name changed to `.DriverWarning` for all drivers - [#658](https://github.com/ni/nimi-python/issues/658) - Indexing on `nimodinst.Session` is no longer allowed - `session[0].device_name` becomes `session.devices[0].device_name` - This is to be consistent with other drivers + - `session[0].device_name` becomes `session.devices[0].device_name` + - This is to be consistent with other drivers - Removed - (Common) IVI properties as applicable - some were already removed from some drivers [#824](https://github.com/ni/nimi-python/issues/824) @@ -1598,18 +1622,14 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) All function parameters or attributes that represent time now use `datetime.timedelta()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion -#### [nimodinst] 0.6.0 - 2017-12-20 -- Added - - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - #### [nimodinst] 0.5.0 - 2017-11-27 - Removed - (Common) enum definitions that are not referenced by a function and/or an attributes #### [nimodinst] 0.4.0 - 2017-11-07 - Changed - - Simplified examples by removing try/except - - **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines + - (Common) Simplified examples by removing try/except + - (Common) **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines #### [nimodinst] 0.3.0 - 2017-10-13 - Added @@ -1630,9 +1650,9 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Warnings are now added to warnings.warn() - Device index is now on session not attribute. The correct way is now ``` python - i = 0 - with nimodinst.Session('nidmm') as session: - name = session[i].device_name + i = 0 + with nimodinst.Session('nidmm') as session: + name = session[i].device_name ``` #### [nimodinst] 0.1.0 - 2017-09-01 @@ -2470,8 +2490,8 @@ Removed `actual_count` from `fetch_multiple()` returned tuple #### [niswitch] 0.4.0 - 2017-11-07 - Changed -(Common) Simplified examples by removing try/except -(Common) **SOURCE BREAKER:** (Common) Changed names of enum value names to correspond to C #defines + - (Common) Simplified examples by removing try/except + - (Common) **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - Removed Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. From c8c01ac8ddc2ee3eb85dd44fc6d6b9fecec3c928 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Mon, 21 Apr 2025 10:06:49 +0530 Subject: [PATCH 26/32] Review comments incorporated. --- CHANGELOG.md | 114 ++++++++++++++++++++++++------------------------ CONTRIBUTING.md | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3998238ba..04b2ea954 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1728,7 +1728,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Changed - (Common) Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False. - Fix [#1941](https://github.com/ni/nimi-python/issues/1941): When calling niscope.Session.fetch_array_measurement in a MeasurementLink measurement plugin, meas_wfm_size cannot be set. - Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. + - Requires NI gRPC Device Server 2023 Q2 or later. Older versions do not support this parameter and return all available samples. #### [niscope] 1.4.3 - 2022-12-16 - Added @@ -1898,15 +1898,15 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Removed - (Common) Explicitly disallow using a repeated capability on Session. `session[0].vertical_range = 1.0` will no longer work. Instead use `session.channels[0].vertical_range = 1.0` - [#853](https://github.com/ni/nimi-python/issues/853) - Removed default value for `level` parameter on `configure_trigger_edge()` - parameter list is now - - ``` python - - configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - - ``` + - parameter list is now + ``` python + configure_trigger_edge(self, trigger_source, level, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + ``` - Removed default values for `level` and `hysteresis` parameters on `configure_trigger_hysteresis()` - parameter list is now - - ``` python - - configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) - - ``` + - parameter list is now + ``` python + configure_trigger_hysteresis(self, trigger_source, level, hysteresis, trigger_coupling, slope=enums.TriggerSlope.POSITIVE, holdoff=datetime.timedelta(seconds=0.0), delay=datetime.timedelta(seconds=0.0)) + ``` #### [niscope] 0.9.0 - 2018-05-22 - Added @@ -1935,38 +1935,38 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - `query_instrument_status` - `cache` - `specific_driver_prefix` - - Properties removed - - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) - - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) - - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) - - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) - - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) - - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) - - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) - - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) - - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) - - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) - - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) - - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) - - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) - - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) - - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) - - Methods removed - - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) - - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) + - Properties removed + - `stream_relative_to` [#825](https://github.com/ni/nimi-python/issues/825) + - `oscillator_phase_dac_value` [#825](https://github.com/ni/nimi-python/issues/825) + - `mux_mode_register` [#825](https://github.com/ni/nimi-python/issues/825) + - `ddc_center_frequency` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_data_processing_mode` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_i` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_frequency_translation_phase_q` [#823](https://github.com/ni/nimi-python/issues/823) + - `ddc_q_source` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_gain` [#823](https://github.com/ni/nimi-python/issues/823) + - `digital_offset` [#823](https://github.com/ni/nimi-python/issues/823) + - `dither_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `fetch_interleaved_iq_data` [#823](https://github.com/ni/nimi-python/issues/823) + - `fractional_resample_enabled` [#823](https://github.com/ni/nimi-python/issues/823) + - `overflow_error_reporting` [#823](https://github.com/ni/nimi-python/issues/823) + - `adjust_pretrigger_samples_5102` [#822](https://github.com/ni/nimi-python/issues/822) + - `five_v_out_output_terminal` [#822](https://github.com/ni/nimi-python/issues/822) + - `clock_sync_pulse_source` [#822](https://github.com/ni/nimi-python/issues/822) + - `device_number` [#822](https://github.com/ni/nimi-python/issues/822) + - `fetch_interleaved_data` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_from_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_pfi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_rtsi_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `trigger_to_star_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - `slave_trigger_delay` [#822](https://github.com/ni/nimi-python/issues/822) + - Methods removed + - `get_frequency_response()` [#823](https://github.com/ni/nimi-python/issues/823) + - `export_signal()` - [#828](https://github.com/ni/nimi-python/issues/828) #### [niscope] 0.8.0 - 2018-04-27 - Changed @@ -2122,10 +2122,10 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - [1.2.0](#nise-120---2020-03-06) - [1.1.5](#nise-115---2019-11-22) - [1.1.4](#nise-114---2019-11-19) -- [1.1.3](#nise-113---2019-10-21) -- [1.1.2](#nise-112---2019-06-06) -- [1.1.0](#nise-110---2018-10-25) -- [1.0.1](#nise-101---2018-10-17) +- [1.0.0](#nise-100---2019-10-21) +- [0.2.2](#nise-022---2019-06-06) +- [0.2.0](#nise-020---2018-10-25) +- [0.1.0](#nise-010---2018-10-17) #### [nise] Unreleased - Added @@ -2235,18 +2235,18 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Improved installation instructions by not putting a version to pin to. This is confusing in master (what read the docs shows by default) since that version doesn't exist yet. - Update to 1.0 - now ready for production use -#### [nise] 1.1.2 - 2019-06-06 +#### [nise] 0.2.2 - 2019-06-06 - Changed - (Common) Switched to slightly different metadata format - Actual `True`/`False` instead of strings - (Common) New internal process for generating metadata -#### [nise] 1.1.0 - 2018-10-25 +#### [nise] 0.2.0 - 2018-10-25 - Changed - (Common) Updated generated metadata - (Common) Updated "Driver Version Tested Against" - (Common) Update visatype definitions to work on Linux as well as Windows - [#911](https://github.com/ni/nimi-python/issues/911) -#### [nise] 1.0.1 - 2018-10-17 +#### [nise] 0.1.0 - 2018-10-17 - Added - Initial Release --- @@ -2493,7 +2493,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - (Common) Simplified examples by removing try/except - (Common) **SOURCE BREAKER:** Changed names of enum value names to correspond to C #defines - Removed -Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. + - Support for `is_debounced` and `is_scanning` functions. Instead use the attribute of the same name. #### [niswitch] 0.3.0 - 2017-10-13 - Added @@ -2529,10 +2529,10 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - [1.3.1](#nitclk-131---2020-06-08) - [1.3.0](#nitclk-130---2020-05-21) - [1.2.1](#nitclk-121---2020-04-21) -- [1.2.0](#nitclk-120---2020-03-06) -- [1.1.5](#nitclk-115---2019-11-22) -- [1.1.4](#nitclk-114---2019-11-19) -- [1.1.3](#nitclk-113---2019-10-21) +- [1.0.0](#nitclk-100---2020-03-06) +- [0.3.1](#nitclk-031---2019-11-22) +- [0.3.0](#nitclk-030---2019-11-19) +- [0.1.0](#nitclk-010---2019-10-21) #### [nitclk] Unreleased - Added @@ -2611,7 +2611,7 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Changed - Version updated to 1.2.1 to match other released nimi-python modules -#### [nitclk] 1.2.0 - 2020-03-06 +#### [nitclk] 1.0.0 - 2020-03-06 - Added - (Common) Zip file per driver for all examples and any helper files - (Common) Link to zip file on examples documentation @@ -2627,17 +2627,17 @@ Support for `is_debounced` and `is_scanning` functions. Instead use the attribut - Ability to pass an integer as a session / session reference - `nitclk.SessionReference.script_trigger_master_session` removed - repeated capabilities not supported on `nitclk` attributes - [#1221](https://github.com/ni/nimi-python/issues/1221) -#### [nitclk] 1.1.5 - 2019-11-22 +#### [nitclk] 0.3.1 - 2019-11-22 - Changed - (Common) Fix #1140: Linux support was accidentally broken. - (Common) Update "Driver Version Tested Against", in documentation, with latest versions installed on nimi-bot. -#### [nitclk] 1.1.4 - 2019-11-19 +#### [nitclk] 0.3.0 - 2019-11-19 - Added - (Common) Support for Python 3.8 - (Common) `ViUInt8` is now a valid type in APIs -#### [nitclk] 1.1.3 - 2019-10-21 +#### [nitclk] 0.1.0 - 2019-10-21 - Added - Initial support diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a010113a..6b52137ef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -210,7 +210,7 @@ Release Process * Ensure that all changes made as part of build command are specific to intended drivers. * Commit to branch 1. Update changelog - * Copy Unreleased section from the bottom of the changelog. Modify the driver name in the example and TOC. Paste the modified section at the top of intended driver's changelog and add a corresponding link to it in the driver's TOC. + * Copy Unreleased section from the bottom of the changelog. Modify the package name in the example and TOC. Paste the modified section at the top of intended package's changelog and add a corresponding link to it in the package's TOC. * Commit to branch 1. Create a pull request containing post-release changes and get it merged From e283394544f711341490239b591d830ff3364b3f Mon Sep 17 00:00:00 2001 From: Rahul R Date: Mon, 21 Apr 2025 10:22:43 +0530 Subject: [PATCH 27/32] Minor Fix for changelog --- CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04b2ea954..64e55a7eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1975,12 +1975,12 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - This encapsulates any error that is returned by the underlying driver - (Common) All timeout parameters can now also take a simple number in seconds. `timeout=datetime.timedelta(milliseconds=100)` and `timeout=0.1` are identical. [#796](https://github.com/ni/nimi-python/issues/796) - `Session.fetch()`, `Session.read()` and `Session.fetch_into()` updated - - Takes additional parameters that modify fetch behavior - - Add resulting record as part of the waveform info - - Channel name and record number added to waveform info - - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), - - [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), - - and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. + - Takes additional parameters that modify fetch behavior + - Add resulting record as part of the waveform info + - Channel name and record number added to waveform info + - See documentation for [fetch](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch), + [read](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.read), + and [fetch_into](http://nimi-python.readthedocs.io/en/master/niscope/functions.html#niscope.Session.fetch_into) for more details. - Rename `wfm` parameter to `waveform` in `fetch()` and `fetch_into()` - Enum values and attribute names that start with an underscore + digit have been renamed - `Session._5102_adjust_pretrigger_samples` --> `Session.adjust_pretrigger_samples_5102` @@ -2223,7 +2223,7 @@ Removed `actual_count` from `fetch_multiple()` returned tuple - Changed - Version updated to 1.1.4 to match other released nimi-python modules -#### [nise] 1.1.3 - 2019-10-21 +#### [nise] 1.0.0 - 2019-10-21 - Changed - (Common) The development status in `setup.py` will be based on the module version: - version >= 1.0 From 4d922834d11b8cdd212a2f1a236582341afa6543 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Mon, 21 Apr 2025 10:28:09 +0530 Subject: [PATCH 28/32] Review comments --- CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6b52137ef..6cf74aee4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,8 +124,7 @@ begin contributing to to the project. 1. Make your change. 1. Verify all tests, including the new ones, pass. 1. Update CHANGELOG.md for customer-visible changes. - * If the change applies to all generated driver bindings, put the change into all drivers. - * If it only applies to a single driver binding, put the change in the section associated with that driver + * Put the change into the Unreleased section for each package that it applies to. * DO NOT MENTION: Internal-only changes like refactors or test improvements. 1. Commit modifications to generated files. 1. On GitHub, send a New pull request to the main repository's master branch. GitHub From 69648f26b255561cf3b7d4b222b1c18ad574280b Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 22 Apr 2025 09:56:43 +0530 Subject: [PATCH 29/32] Code review comments incorporated. --- CHANGELOG.md | 20 ++++++++++---------- CONTRIBUTING.md | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64e55a7eb..b99ed41cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -452,24 +452,24 @@ - (Common) All functions that return calibration dates now return `datetime.datetime()`. See [#659](https://github.com/ni/nimi-python/issues/659) for discussion - Metadata updated to NI-DCPower 17.6.1 - The following functions timeout parameter now is required to be a `datetime.timedelta()` object: - `fetch_multiple()` - `wait_for_event()` + - `fetch_multiple()` + - `wait_for_event()` - The following functions return a `datetime.datetime()` object representing the date and time - `get_ext_cal_last_date_and_time()` - `get_self_cal_last_date_and_time()` + - `get_ext_cal_last_date_and_time()` + - `get_self_cal_last_date_and_time()` - Removed - Removed these enums and disconnected them from the associated attribute (Fix [#666](https://github.com/ni/nimi-python/issues/666)) - `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` - `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` - `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` - `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` + - `CurrentLimitAutorange` - `CURRENT_LIMIT_AUTORANGE` + - `CurrentLevelAutorange` - `CURRENT_LEVEL_AUTORANGE` + - `VoltageLevelAutorange` - `VOLTAGE_LEVEL_AUTORANGE` + - `VoltageLimitAutorange` - `VOLTAGE_LIMIT_AUTORANGE` #### [nidcpower] 0.6.0 - 2017-12-20 - Added - (Common) `abort`. See [#660](https://github.com/ni/nimi-python/issues/655). - Changed -Property power_line_frequency no longer uses enum PowerLineFrequency. -Removed `actual_count` from `fetch_multiple()` returned tuple + - Property power_line_frequency no longer uses enum PowerLineFrequency. + - Removed `actual_count` from `fetch_multiple()` returned tuple #### [nidcpower] 0.5.0 - 2017-11-27 - Added diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6cf74aee4..c80028455 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -167,6 +167,7 @@ Release Process 1. Update [CHANGELOG.md](./CHANGELOG.md) * Delete empty (i.e. No changes) sub-sections under "Unreleased" section * Remove the Unreleased section from the TOC if there are no changes for those drivers. + * If it's a common change for all the drivers, include the `(Common)` string before newly added changes in [CHANGELOG.md]. * Change the "Unreleased" header to the version of the release * Change [Unreleased] in TOC to the version of the release * Commit to branch From 2d3f46981d568bdf38d44f96219a61bf9a585c47 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 22 Apr 2025 10:26:59 +0530 Subject: [PATCH 30/32] Keeping only chanlog specific changes in contributing.md --- CONTRIBUTING.md | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c80028455..67be1f389 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -148,22 +148,6 @@ Release Process ``` 1. Ensure no commits are made on ni/nimi-python/master until the release is complete 1. Create and checkout a branch for release-related changes - 1. Perform Version Bump (If Needed) - * If you need to upgrade the major, minor, patch or dev versions, include any of the following parameters: - * --increment-major-version - To increment the major version of package. This will update the version to (N+1).X.X.dev0 - * --increment-minor-version - To increment the minor version of package. This will update the version to X.(N+1).X.dev0 - * --increment-patch-version - To increment the patch version of package. This will update the version to X.X.(N+1).dev0 - * --increment-build-number - To increment the development number of package. This will update the version to X.X.X.dev(N+1) - For example: - ```bash - python3 tools/build_release.py --increment-minor-version - ``` - * If you need to update the version for any specific driver(s), include the `drivers` parameter. By default, all drivers will be considered. - For example: - ```bash - python3 tools/build_release.py --drivers nidcpower --increment-minor-version - ``` - * Commit to branch 1. Update [CHANGELOG.md](./CHANGELOG.md) * Delete empty (i.e. No changes) sub-sections under "Unreleased" section * Remove the Unreleased section from the TOC if there are no changes for those drivers. @@ -172,13 +156,8 @@ Release Process * Change [Unreleased] in TOC to the version of the release * Commit to branch 1. Update release versions - * `python3 tools/build_release.py --update-for-release` + * `python3 tools/build_release.py --update --release` * For each module, this will drop the .devN from our versions in config_addon.py and update the LATEST_RELEASE versions to match. - * If you need to release any specific module(s), include the `drivers` parameter. - For example: - ```bash - python3 tools/build_release.py --drivers nidcpower --update-for-release - ``` * Commit to branch 1. Clean and build to update generated files with new version * `python3 tools/build_release.py --build` @@ -190,11 +169,6 @@ Release Process 1. Wait until the pull request has been approved 1. Upload the releases to PyPI * `python3 tools/build_release.py --upload` - * If you need to upload any specific module(s), include the `drivers` parameter. - For example: - ```bash - python3 tools/build_release.py --drivers nidcpower --upload - ``` * You will need to type in your PyPI credentials 1. Merge the pull request to origin/master 1. Create a release on GitHub using the portion from the changelog for this release for the description @@ -202,12 +176,12 @@ Release Process * This should trigger the [check_latest_release](.github/workflows/check_latest_release.yml) workflow. Check the [results](https://github.com/ni/nimi-python/actions/workflows/check_latest_release.yml) before continuing. 1. Post-Release Steps 1. Create and checkout another branch for post-release changes - 1. Update the module versions. - * Refer to the "Perform Version Bump" section under "Pre-Release Steps." + 1. Update the module versions + * `python3 tools/build_release.py --update` + * This will update the version to X.X.(N+1).dev0 * Commit to branch 1. Clean and build to update generated files with new version * `python3 tools/build_release.py --build` - * Ensure that all changes made as part of build command are specific to intended drivers. * Commit to branch 1. Update changelog * Copy Unreleased section from the bottom of the changelog. Modify the package name in the example and TOC. Paste the modified section at the top of intended package's changelog and add a corresponding link to it in the package's TOC. From 4d23099f7214f9291917945544060064cc7e3eef Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 22 Apr 2025 19:03:10 +0530 Subject: [PATCH 31/32] ChangeLog review comments implementation --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67be1f389..b8d2e6029 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -125,6 +125,7 @@ begin contributing to to the project. 1. Verify all tests, including the new ones, pass. 1. Update CHANGELOG.md for customer-visible changes. * Put the change into the Unreleased section for each package that it applies to. + * If it's a common change for all the packages, include the `(Common)` string before the newly added change in [CHANGELOG.md]. * DO NOT MENTION: Internal-only changes like refactors or test improvements. 1. Commit modifications to generated files. 1. On GitHub, send a New pull request to the main repository's master branch. GitHub @@ -149,9 +150,9 @@ Release Process 1. Ensure no commits are made on ni/nimi-python/master until the release is complete 1. Create and checkout a branch for release-related changes 1. Update [CHANGELOG.md](./CHANGELOG.md) - * Delete empty (i.e. No changes) sub-sections under "Unreleased" section - * Remove the Unreleased section from the TOC if there are no changes for those drivers. - * If it's a common change for all the drivers, include the `(Common)` string before newly added changes in [CHANGELOG.md]. + * For packages that are releasing: + * Delete empty (i.e. No changes) sub-sections under "Unreleased" section + * Remove the Unreleased section from the TOC if there are no changes for the package. * Change the "Unreleased" header to the version of the release * Change [Unreleased] in TOC to the version of the release * Commit to branch From 41839e2d4d376f313620b0edd1f34c396b036334 Mon Sep 17 00:00:00 2001 From: Jay Fitzgerald <34140133+ni-jfitzger@users.noreply.github.com> Date: Tue, 22 Apr 2025 08:36:17 -0500 Subject: [PATCH 32/32] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b8d2e6029..19ccfe5d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -153,8 +153,8 @@ Release Process * For packages that are releasing: * Delete empty (i.e. No changes) sub-sections under "Unreleased" section * Remove the Unreleased section from the TOC if there are no changes for the package. - * Change the "Unreleased" header to the version of the release - * Change [Unreleased] in TOC to the version of the release + * Change the "Unreleased" header to the version of the release + * Change [Unreleased] in TOC to the version of the release * Commit to branch 1. Update release versions * `python3 tools/build_release.py --update --release`