Releases: ni/nidaqmx-python
Releases · ni/nidaqmx-python
1.0.2
1.0.2
-
Merged Pull Requests
-
Resolved Issues
- 644: nidaqmx doesn't support Python 3.13+
- 641: No devices found
- Fall back to ASCII encoding if the system locale is not set.
-
Known Issues
1.0.1
1.0.1
-
Merged Pull Requests
-
Resolved Issues
- 540: Task.wait_for_valid_timestamp doesn't return the timestamp
- 606: CERTIFICATE_VERIFY_FAILED occurs when executing installdriver command on Windows system
- 615: Onboard device memory overflow
- 623: installdriver CLI doesn't prompt or indicate what versions are being downloaded/installed on a clean system
-
Known Issues
1.0.0
1.0.0
-
Merged Pull Requests
-
Resolved Issues
-
Major Changes
- Add support for strain calibration (offset nulling and shunt calibration)
- Add support for DAQmx calibration info properties
- Add support for WaitForValidTimestamp
- Fix naming issues:
- Rename
ShuntCalSelect.AAND_B
toA_AND_B
.
- Rename
- Automate Driver Install Experience within nidaqmx Module
- Update libtime to accept time before 1970
1.0.0-dev0
Pre-release version for further testing.
In lieu of full release notes, here are the commits since 0.9.0
* 8a96d34 (HEAD -> master, origin/master) update to 1.0.0-dev0 (#567)
* a6d9e71 Reorganize examples to folders (#565)
* 31a89b5 After the fact feedback from PR #558 (#564)
* 06da4f4 Build(deps): Bump idna from 3.6 to 3.7 (#563)
* e609ae6 Update hightime library (#560)
* 5a8c6a5 Automate Driver Install Experience within nidaqmx Module (#512)
* 230b235 Add tests to verify closing task in event callback does not crash or error (#558)
* 3fdfbee Accept either comma delimited or flattened channel string as valid (#553)
* b73c3ac mypy: Ignore redef in importlib_metadata hack and run mypy --platform win32 (#554)
* a60f369 Component tests for Global Chans, Task Done, and Watchdog (#548)
* 44f2486 Improve error reporting in some cases (#550)
* 33fb53f Build(deps-dev): Bump black from 24.2.0 to 24.3.0 (#547)
* ef87d63 fix physical channel/device collection slice/string behavior (#536)
* e902251 Add pathlib.PurePath type for file path (#542)
* d5b5636 Pick up trigger attributes changes from scrapigen (#545)
* d4d078b Refactor Task Internal Modules: Triggers (#546)
* 2e0e590 Refactor Task Internal Modules: Channels (#544)
* 4d6b783 Refactor Task Internal Modules: Collections (#541)
* 026eba1 Update cfg analog multi edge trig APIs (#535)
* 5fd2123 Refactor Task Internal Modules (ExportSignal, OutStream, Timing) (#539)
* 22301b5 Refactor task.py and internal module (in_stream.py) (#534)
* 91cea8e Allocate Buffer Size for Read/Write String Status Properties (#537)
* 0f65354 Fix parameter rosette_meas_types type in docstrings (#511)
* ca462ac Add Counter Stream Writer tests (#533)
* c0e4716 Add Tox Env for Internationalization Testing (#532)
* 2c18e56 Add Digital Stream Writer tests (#531)
* bac7f01 Add Functional Tests for Internationalization (#525)
* df7366e tests: Add new tests for Task.read (#530)
* 57b0001 handwritten: Fix mypy errors with recent _lib.py changes
* 5ca4030 handwritten: Fix Linux-specific mypy error
* 5646c78 GitHub: Run mypy on generated/nidaqmx
* 7b8c8ca handwritten: Fix mypy errors in task.py
* bbce385 handwritten: Fix mypy errors in stream_readers.py
* a5aee8a codegen: Fix mypy errors in in_stream.py
* 12e5ea1 codegen: Fix mypy errors for numpy.float64([...]), etc.
* 71ee5aa handwritten: Fix mypy errors in _time.py
* a0a4cd9 codegen, handwritten: Ignore mypy errors in "alternate constructors"
* c999a5f handwritten: Fix mypy errors for utils.py
* 5f3dd8f Update poetry.lock (#526)
* 4e41a70 Add Analog Stream Writer tests (#515)
* 981e45f Support Non-ASCII Characters for User-Provided String (#518)
* 9648bc6 Add python-decouple Dependency (#524)
* 6267cc0 Add functional test for wait_for_valid_timestamp (#510)
* 18cb6e2 Update libtime to accept time before 1970 (#504)
* 205dc3b Add tzlocal dependency in poetry.lock (#521)
* bb5ef01 Update AI Bridge Default Argument Values (#509)
* 22ae455 Change ai_voltage_field_daq_task to ai_voltage_task (#520)
* a2869af Update poetry.lock and reformat code with updated tools (#517)
* 7e8800c Add max_config files for Linux (#516)
* 14f953c tests: Fix mypy errors and run mypy during PR build (#505)
* 0905e65 replace fielddaq with cdaq in tests (#513)
* a7a3643 Add support for DAQmx calibration info properties (#473)
* 8cac1b8 Add support for WaitForValidTimestamp to nidaqmx-python (#479)
* ba42d15 Add Unit test for cfg_time_start_trig (#488)
* 6acaca7 handwritten: Add `CalHandle` and `TaskHandle` type aliases to `_lib` and delete conditionals for DAQmx version <8.9 (#503)
* ce040ba add subclass (#496)
* ac3f5e0 Be more precise with X series device fixtures (#501)
* 0e87936 Split stream reader component tests by subsystem (#499)
* 97e0c37 fix typing issue in Python 3.8 (#500)
* 3129f87 Add Counter Stream Reader tests (#497)
* 11b8f56 Add Digital Stream Reader tests (#494)
* 173f46b Fix raw-read Function Names Spacing Issue (#492)
* 3d67f7d Add Analog Stream Reader tests (#493)
* 457077b Add Digital and Counter create channel tests (#491)
* 7119a3f Add AI TEDS create channel tests (#490)
* 1305bc1 import MAX config when running system tests (#489)
* 53c8ef9 Add "When" attribute to start_trigger.py (#481)
* a6b070d Add AI create channel tests (#485)
* 8bc4799 Fix readthedocs documentation generation (#486)
* 908cebf CONTRIBUTING.md: Update physical device recommendation (#480)
* 5e77102 Add CfgTimeStartTrig to daqmx-python (#475)
* c5fddf5 Add Offset Nulling Calibration API support for nidaqmx-python (#468)
* 8f1b610 Add Shunt Cal API support for nidaqmx-python (#469)
* 275944c Build(deps): Bump jinja2 from 3.1.2 to 3.1.3 (#470)
* eca4e38 repo: Add security policy (#467)
* f5c7da3 Update to 0.9.1 (#466)
0.9.0
0.9.0
-
Merged Pull Requests
-
Major Changes
nidaqmx.errors.DaqNotFoundError
,nidaqmx.errors.DaqNotSupportedError
, and
nidaqmx.errors.DaqFunctionNotSupportedError
are now public exceptions.- Consistently return
nidaqmx.errors.DaqNotFoundError
on all platforms when the NI-DAQmx
driver is not installed. - Updated supported Python versions to 3.8, 3.9, 3.10, 3.11, and 3.12
0.8.0
0.8.0
-
Merged Pull Requests
- Full changelog: 0.7.0...0.8.0
- Query: Closed PRs with the label: interpreter_implementation
- Query: Closed PRs with the label: library_interpreter
- Query: Closed PRs with the label: grpc_interpreter
- Query: Closed PRs with the label: test_improvements
- Query: Closed PRs with the label: interpreter_fixes
- Query: Closed PRs with the label: interpreter_testcase_update
- Query: Closed PRs with the label: event_handling
-
Major Changes
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
- The initialization methods for
Task
,Scale
, and other classes now accept a keyword-onlygrpc_options
parameter. Pass aGrpcSessionsOptions
object to enable gRPC support. - The
System
class now has aremote()
method which accepts aGrpcSessionOptions
object. - NI gRPC Device Server version 2.2 or later is required. Older versions of NI gRPC Device Server are unsupported because they are missing bug fixes needed to support nidaqmx-python.
- The initialization methods for
- The following functions now emit
DeprecationWarning
when called:nidaqmx.errors
module:check_for_error
,is_string_buffer_too_small
, andis_array_buffer_too_small
arectypes
-specific helper functions, so they have been moved to an internal module.System
class:set_analog_power_up_states
does not supportPowerUpStates.TRISTATE
andget_analog_power_up_states
has design issues that make the previous implementation unworkable, so they have been deprecated in favor ofset_analog_power_up_states_with_output_type
andget_analog_power_up_states_with_output_type
.
- The internals of the
nidaqmx
package have been refactored to support gRPC:- Access to the DAQmx driver is now handled by the internal
BaseInterpreter
abstract base class. There are separate implementations of this abstract base class forctypes
vs. gRPC. - Internal initialization methods now accept an
interpreter
parameter. Methods that take aninterpreter
are not part of the public API. - Added a stub generator which will generate the gRPC stub files based on the proto files present in
src/codegen/protos
. The files will be generated intogenerator/nidaqmx/_stubs
. - The internal
nidaqmx._task_modules.read_functions
andnidaqmx._task_modules.write_functions
modules have been removed. If your application uses these modules, you must update it to use public APIs such astask.read()
/task.write()
,task.in_stream.read()
/task.out_stream.write()
, ornidaqmx.stream_readers
/nidaqmx.stream_writers
. - Updated the existing tests to run with and without gRPC support.
- Added multiple test cases to improve the overall test coverage.
- Access to the DAQmx driver is now handled by the internal
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
-
Known Issues
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
Device("Dev1")
refers to a local device andDevice("Dev1", grpc_options=...)
refers to a remote device, but they are considered equal. Likewise, two instances ofDevice("Dev1", grpc_options=...)
with different remote hosts are considered equal.
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
0.8.0-dev0
-
Merged Pull Requests
- Full changelog: 0.7.0...0.8.0
- Query: Closed PRs with the label: interpreter_implementation
- Query: Closed PRs with the label: library_interpreter
- Query: Closed PRs with the label: grpc_interpreter
- Query: Closed PRs with the label: test_improvements
- Query: Closed PRs with the label: interpreter_fixes
- Query: Closed PRs with the label: interpreter_testcase_update
- Query: Closed PRs with the label: event_handling
-
Major Changes
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
- The initialization methods for
Task
,Scale
, and other classes now accept a keyword-onlygrpc_options
parameter. Pass aGrpcSessionsOptions
object to enable gRPC support. - The
System
class now has aremote()
method which accepts aGrpcSessionOptions
object. - NI gRPC Device Server version 2.2 or later is required. Older versions of NI gRPC Device Server are unsupported because they are missing bug fixes needed to support nidaqmx-python.
- The initialization methods for
- The following functions now emit
DeprecationWarning
when called:nidaqmx.errors
module:check_for_error
,is_string_buffer_too_small
, andis_array_buffer_too_small
arectypes
-specific helper functions, so they have been moved to an internal module.System
class:set_analog_power_up_states
does not supportPowerUpStates.TRISTATE
andget_analog_power_up_states
has design issues that make the previous implementation unworkable, so they have been deprecated in favor ofset_analog_power_up_states_with_output_type
andget_analog_power_up_states_with_output_type
.
- The internals of the
nidaqmx
package have been refactored to support gRPC:- Access to the DAQmx driver is now handled by the internal
BaseInterpreter
abstract base class. There are separate implementations of this abstract base class forctypes
vs. gRPC. - Internal initialization methods now accept an
interpreter
parameter. Methods that take aninterpreter
are not part of the public API. - Added a stub generator which will generate the gRPC stub files based on the proto files present in
src/codegen/protos
. The files will be generated intogenerator/nidaqmx/_stubs
. - The internal
nidaqmx._task_modules.read_functions
andnidaqmx._task_modules.write_functions
modules have been removed. If your application uses these modules, you must update it to use public APIs such astask.read()
/task.write()
,task.in_stream.read()
/task.out_stream.write()
, ornidaqmx.stream_readers
/nidaqmx.stream_writers
. - Updated the existing tests to run with and without gRPC support.
- Added multiple test cases to improve the overall test coverage.
- Access to the DAQmx driver is now handled by the internal
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
-
Known Issues
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
Device("Dev1")
refers to a local device andDevice("Dev1", grpc_options=...)
refers to a remote device, but they are considered equal. Likewise, two instances ofDevice("Dev1", grpc_options=...)
with different remote hosts are considered equal.
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
0.7.0
-
Merged Pull Requests
-
Resolved Issues
-
Major Changes
- Added a generator that produces the
nidaqmx
module code. - Some properties were renamed in an effort to improve the consistency of the
nidaqmx
module and to support maintainability of the generator. The previous names are still usable, but will emit aDeprecationWarning
on usage. These deprecated properties may be removed in a future update. - Unused enums have been removed. This affects enums that are solely used by DAQmx features that are not supported in the
nidaqmx
module, such as external calibration, the DAQmx switch API, and internal APIs. - Refactored the repository folder structure as follows:
generated/nidaqmx/
- The output of the code generator and source for the buildnidaqmx
module. Do not directly modify any files in this folder.examples/
- Example programs demonstrating how to use thenidaqmx
module.src/codegen/
- The code generator.src/handwritten/
- Hand-maintained files that are copied as-is during code generation.tests
- Test code that exercises thenidaqmx
module to ensure it functions correctly and doesn't introduce regressions.
- Multiple various test improvements in support of the generator refactoring.
- Added a generator that produces the